Raw File
build_domainbuf.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This file is part of NS2DDV.                                                      %
%                                                                                   %
% Copyright(C) 2011-2018    C. Calgaro  (caterina.calgaro@math.univ-lille1.fr)      %
%                           E. Creusé   (emmanuel.creuse@math.univ-lille1.fr)       %
%                           T. Goudon   (thierry.goudon@inria.fr)                   %
%                           A. Mouton   (alexandre.mouton@math.univ-lille1.fr)      %
%                                                                                   %
% NS2DDV is free software: you can redistribute it and/or modify it under the terms %
% of the GNU General Public License as published by the Free Software Foundation,   %
% either version 3 of the License, or (at your option) any later version.           %
%                                                                                   %
% NS2DDV is distributed in the hope that it will be useful, but WITHOUT ANY         %
% WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A   %
% PARTICULAR PURPOSE. See the GNU General Public License for more details.          %
%                                                                                   %
% You should have received a copy of the GNU General Public License along with      %
% NS2DDV. If not, see <http://www.gnu.org/licenses/>.                               %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function[usrbuf] = build_domainbuf(answers)

	usrbuf = {};
	l = 1;

	usrbuf{l} = '';
	l = l+1;
	usrbuf{l} = '% Domain parameters';
	l = l+1;
	usrbuf{l} = '%%%%%%%%%%%%%%%%%%%';
	l = l+1;

	switch answers.GEOM
		case {'RECTANGLE'}
			switch answers.TESTCASE
				case {'RTIN'}
					xmin = -0.5;
					xmax = 0.5;
					ymin = -2.;
					ymax = 2.;
				case {'DROP'}
					xmin = 0.;
					xmax = 1.;
					ymin = 0.;
					ymax = 2.;
				case {'CAEN'}
					xmin = 0.;
					xmax = 1.;
					ymin = 0.;
					ymax = 1.;
				case {'EXAC'}
					xmin = 0.;
					xmax = 1.;
					ymin = 0.;
					ymax = 1.;
				case {'POIS'}
					xmin = 0.;
					xmax = 0.04;
					ymin = -0.005;
					ymax = 0.005;
				case {'EXACNEU'}
					xmin = 0.;
					xmax = 1.;
					ymin = 0.;
					ymax = 1.;
				case {'NONA'}
					xmin = -1.;
					xmax = 5.;
					ymin = 0.;
					ymax = 2.;
				case {'GTPSI'}
					xmin = 0.;
					xmax = 1.;
					ymin = 0.;
					ymax = 1.;
				otherwise
					error('Problem in build_domainbuf');
			end

			usrbuf{l} = sprintf('%% Parameters for a RECTANGLE domain (default = [%g,%g]x[%g,%g])', xmin, xmax, ymin, ymax);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XMIN = %g;', xmin);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XMAX = %g;', xmax);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.YMIN = %g;', ymin);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.YMAX = %g;', ymax);
			l = l+1;

		case {'DIHEDRON'}
			switch answers.TESTCASE
				case {'NONA'}
					xmin = -1.;
					xmax = 5.;
					ymin = 0.;
					ymax = 2.;
					xa1 = 0.;
					ya1 = 1.;
					xa2 = 3.;
				otherwise
					error('Problem in build_domainbuf');
			end

			usrbuf{l} = '% Parameters for a DIHEDRON domain';
			l = l+1;
			usrbuf{l} = sprintf('%% Bounding rectangle (default = [%g,%g]x[%g,%g])', xmin, xmax, ymin, ymax);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XMIN = %g;', xmin);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XMAX = %g;', xmax);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.YMIN = %g;', ymin);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.YMAX = %g;', ymax);
			l = l+1;
			usrbuf{l} = sprintf('%% Coordinates of the arete point (default = (%g,%g))', xa1, ya1);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XAXIS_ANGLE1 = %g;', xa1);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.YAXIS_ANGLE1 = %g;', ya1);
			l = l+1;
			usrbuf{l} = sprintf('%% x-coordinate of the corner point (default = %g)', xa2);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XAXIS_ANGLE2 = %g;', xa2);
			l = l+1;

		case {'CIRCLE'}
			switch answers.TESTCASE
				case {'EXAC'}
					xc = 0.;
					yc = 0.;
					r = 1.;
				otherwise
					error('Problem in build_domainbuf');
			end

			usrbuf{l} = sprintf('%% Parameters for a CIRCLE domain (default center = (%g,%g), default radius = %g)', xc, yc, r);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XCENTER = %g;', xc);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.YCENTER = %g;', yc);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.RADIUS = %g;', r);
			l = l+1;

		case {'STEP'}
			switch answers.TESTCASE
				case {'NONA'}
					xmin = -1.;
					xmax = 5.;
					ymin = 0.;
					ymax = 2.;
					xstart = -2.;
					xstep = 0.;
					ystep = 1.;
					steppos = 'LEFT';
					xp1 = 3.;
					yp1 = 1.;
					xp2 = 4.;
					yp2 = 1.;
					xp3 = 4.5;
					yp3 = 1.;
				case {'POIS'}
					xmin = 0.;
					xmax = 27.;
					ymin = 0.;
					ymax = 3.;
					xstep = 12.;
					ystep = 1.;
					steppos = 'LEFT';
				otherwise
					error('Problem in build_domainbuf');
			end

			usrbuf{l} = '% Parameters for a STEP domain';
			l = l+1;
			usrbuf{l} = sprintf('%% Bounding rectangle (default = [%g,%g]x[%g,%g])', xmin, xmax, ymin, ymax);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XMIN = %g;', xmin);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XMAX = %g;', xmax);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.YMIN = %g;', ymin);
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.YMAX = %g;', ymax);
			l = l+1;
			usrbuf{l} = sprintf('%% Position of the step in the domain (''LEFT'' or ''RIGHT'')');
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.STEP_POSITION = ''%s'';', steppos);
			l = l+1;
			usrbuf{l} = sprintf('%% x-coordinate of the step');
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.XSTEP = %g;', xstep);
			l = l+1;
			usrbuf{l} = sprintf('%% y-coordinate of the step');
			l = l+1;
			usrbuf{l} = sprintf('PARAMETERS.DOMAIN.YSTEP = %g;', ystep);
			l = l+1;

		case {'FROM_FILE'}
			error('Geometry ''FROM_FILE'' is not handled yet');

		otherwise
			error('Problem in build_domainbuf');
	end

end
back to top