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