displaysolutionparameters

PURPOSE ^

DISPLAYSOLUTIONPARAMETERS - display solution parameters

SYNOPSIS ^

function displaysolutionparameters(md)

DESCRIPTION ^

DISPLAYSOLUTIONPARAMETERS - display solution parameters

   To avoid clobbering display.m with every field from model md, 
   we create this routine that displays the solution parameters
   from model md, only if requested.

   Usage:
      displaysolutionparameters(md)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function displaysolutionparameters(md)
0002 %DISPLAYSOLUTIONPARAMETERS - display solution parameters
0003 %
0004 %   To avoid clobbering display.m with every field from model md,
0005 %   we create this routine that displays the solution parameters
0006 %   from model md, only if requested.
0007 %
0008 %   Usage:
0009 %      displaysolutionparameters(md)
0010 
0011 disp(sprintf('   Solution parameters:'));
0012 disp(sprintf('      ''%s''','statics'));
0013 disp(sprintf('         %s','Newton convergence criteria'));
0014 disp(sprintf('            eps_rel: %g      (velocity relative convergence criterion)',md.eps_rel));
0015 disp(sprintf('            eps_abs: %g      (velocity absolute convergence criterion [m/yr], NaN -> no absolute criterion)',md.eps_abs));
0016 disp(sprintf('            viscosity_overshoot: %g      (over-shooting constant new=new+C*(new-old))',md.viscosity_overshoot));
0017 disp(sprintf('         penalty_offset: %g      (offset used by penalties: penalty = Kmax*10^offset)',md.penalty_offset));
0018 disp(sprintf('         penalty_melting: %g      (penalty used to keep T<Tpmp)',md.penalty_melting));
0019 disp(sprintf('         penalty_lock: %g      (counter used to lock penalties that zig zag)',md.penalty_lock));
0020 disp(sprintf('         lowmem: %i      (Set to 1 if you are running low on cluster memory)',md.lowmem));
0021 disp(sprintf('         sparsity: %g      (matrix sparsity. Set to .001 for < 1M dof, .0001 for 5M dof, and .00001 for > 10M dof',md.sparsity));
0022 disp(sprintf('         connectivity: %i      (element connectivity)',md.connectivity)); 
0023 disp(sprintf('         acceleration: %i      (accelerate MacAyeal''s formulation? yes -> 1, no -> 0 )',md.acceleration));
0024 disp(sprintf('         debug: %i      (output debug statements when possible yes-> 1, no -> 0. Default is 1',md.debug));
0025 disp(sprintf('         element_debug: %i      (output debug statements for elementswhen possible yes-> 1, no -> 0. Default is 0',md.element_debug));
0026 disp(sprintf('         element_debugid: %i      (if element_debug on, id of element for which to output messages',md.element_debugid));
0027 disp(sprintf('         debug: %i      (output debug statements when possible yes-> 1, no -> 0. Default is 1'));
0028 disp(sprintf('      ''%s''','transient'));
0029 disp(sprintf('         dt: %g ( time step in years)',md.dt/md.yts));
0030 disp(sprintf('         ndt: %g ( time span in years)',md.ndt/md.yts));
0031 disp(sprintf('         artificial_diffusivity: %i (yes->1, no->0)',md.artificial_diffusivity));
0032 disp(sprintf('         minh: %g (minimum thickness to avoid stiffness singularity)',md.minh));
0033 disp(sprintf('         timestepping: %i ( adptative time stepping implemented - default to 0)',md.timestepping));
0034 disp(sprintf('         deltaH: %g ( minimum thickness difference between two time steps)',md.deltaH));
0035 disp(sprintf('         DeltaH: %g ( maximum thickness difference between two time steps)',md.DeltaH));
0036 disp(sprintf('         deltaT: %g ( minimum temperature difference between two time steps)',md.deltaT));
0037 disp(sprintf('         DeltaT: %g ( maximum temperature difference between two time steps)',md.DeltaT));
0038 disp(sprintf('         timeacc: %g ( multiplier to time step when time stepping increases time step)',md.timeacc));
0039 disp(sprintf('         timedec: %g ( multiplier to time step when time stepping decresaes time step)',md.timedec));
0040 disp(sprintf('      ''%s''','control'));
0041 
0042 %control type
0043 control_string='';
0044 for i=1:length(md.control_type),
0045     parameter=md.control_type{i};
0046     %check this parameter is a field from model!
0047     if ~isfield(struct(md),parameter),
0048         error('displaysolutionparameters error message: one of the control type parameters does not exist!');
0049     end
0050     control_string=[control_string parameter ' and '];
0051 end
0052 control_string=control_string(1:length(control_string)-5);
0053 disp(sprintf('         control_type: %s %s',control_string,'(list of parameters where inverse control is carried out; ex: {''drag''}, or {''drag'',''B''})'));
0054 disp(sprintf('         fit: (%g)      ( 0 -> absolute, 1 -> relative, 2 -> logarithmic. default is absolute)',length(md.fit)));
0055 disp(sprintf('         meanvel: %g      (velocity scaling factor when evaluating relative or logarithmic misfit)',md.meanvel));
0056 disp(sprintf('         epsvel: %g      ( for relative fit, avoids misfit becoming infinity, for logarithmic fit, threshold for velocity)',md.epsvel));
0057 disp(sprintf('         nsteps: %i      (number of optimization searches)',md.nsteps));
0058 disp(sprintf('         optscal: (%i %i)      (scaling factor on gradient direction during optimization, for each optimization step)',size(md.optscal,1),size(md.optscal,2)));
0059 disp(sprintf('         mincontrolconstraint: %f      (minimum contraint for the controlled parameters, NaN -> no constraint)',md.mincontrolconstraint));
0060 disp(sprintf('         maxcontrolconstraint: %f      (maximum contraint for the controlled parameters, NaN -> no constraint)',md.maxcontrolconstraint));
0061 disp(sprintf('         maxiter: (%i)      (maximum iterations during each optimization step)',length(md.maxiter)));
0062 disp(sprintf('         tolx: %f      (minimum tolerance which will stop one optimization search)',md.tolx));
0063 disp(sprintf('         plot: %i      (visualization of the results of each iteration yes -> 1 no -> 0. Default is 1)\n',md.plot));
0064 
0065 
0066 %mesh
0067 disp(sprintf('      ''%s''','mesh'));
0068 disp(sprintf('         mesh_domainoutline: %s      (domain outlines)',md.mesh_domainoutline));
0069 disp(sprintf('         mesh_riftoutline: %s      (rift outlines)',md.mesh_riftoutline));
0070 disp(sprintf('         mesh_resolution: (%g)      (mesh resolutoin)\n',md.mesh_resolution));
0071 
0072 %mesh2grid type
0073 disp(sprintf('      ''%s''','mesh2grid'));
0074 mesh2grid_string='';
0075 for i=1:length(md.mesh2grid_parameters),
0076     parameter=md.mesh2grid_parameters{i};
0077     %check this parameter is a field from model!
0078     if ~isfield(struct(md),parameter),
0079         error('displaysolutionparameters error message: one of the mesh2grid type parameters does not exist!');
0080     end
0081     mesh2grid_string=[mesh2grid_string parameter ' and '];
0082 end
0083 mesh2grid_string=mesh2grid_string(1:length(mesh2grid_string)-5);
0084 disp(sprintf('         mesh2grid_parameters: %s %s',mesh2grid_string,'(list of parameters for which mesh 2 grid interpolation is carried out; ex: {''drag''}, or {''drag'',''B''})'));
0085 
0086 %mesh2grid interpolation
0087 mesh2grid_interpstring='';
0088 for i=1:length(md.mesh2grid_interpolation),
0089     interpolation=md.mesh2grid_interpolation{i};
0090     mesh2grid_interpstring=[mesh2grid_interpstring interpolation ' and '];
0091 end
0092 mesh2grid_interpstring=mesh2grid_interpstring(1:length(mesh2grid_interpstring)-5);
0093 disp(sprintf('         mesh2grid_interpolation: %s %s',mesh2grid_interpstring,'(list of interpolation (''node'' or ''element'') for each parameter ex: {''node''}, or {''node'',''element''})'));
0094 
0095 %mesh2grid filter
0096 mesh2grid_filterstring='';
0097 for i=1:length(md.mesh2grid_filter),
0098     filter=md.mesh2grid_filter{i};
0099     mesh2grid_filterstring=[mesh2grid_filterstring filter ' and '];
0100 end
0101 mesh2grid_filterstring=mesh2grid_filterstring(1:length(mesh2grid_filterstring)-5);
0102 disp(sprintf('         mesh2grid_filter: %s %s',mesh2grid_filterstring,'(list of filter (''average'' or ''nearest'') for each parameter ex: {''average''}, or {''average'',''nearest''})'));
0103 
0104 
0105 disp(sprintf('         mesh2grid_cornereast: %g ( corner east of square grid)',md.mesh2grid_cornereast));
0106 disp(sprintf('         mesh2grid_cornernorth: %g ( corner north of square grid)',md.mesh2grid_cornernorth));
0107 disp(sprintf('         mesh2grid_xposting: %g (x  posting of grid (in m))',md.mesh2grid_xposting));
0108 disp(sprintf('         mesh2grid_yposting: %g (y  posting of grid (in m))',md.mesh2grid_yposting));
0109 disp(sprintf('         mesh2grid_nlines: %g ( number of grid lines)',md.mesh2grid_nlines));
0110 disp(sprintf('         mesh2grid_ncolumns: %g ( number of grid columns)',md.mesh2grid_ncolumns));
0111 disp(sprintf('         mesh2grid_windowsize: %g ( size of filter )\n',md.mesh2grid_windowsize));
0112 
0113 %parallelisation
0114 md.parallel
0115 
0116 %parameteroutput type
0117 parameteroutput_string='';
0118 for i=1:length(md.parameteroutput),
0119     parameter=md.parameteroutput{i};
0120     %check this parameter is a field from model!
0121     if ~isfield(struct(md),parameter),
0122         error('displaysolutionparameters error message: one of the parameteroutput type parameters does not exist!');
0123     end
0124     parameteroutput_string=[parameteroutput_string parameter ' and '];
0125 end
0126 parameteroutput_string=parameteroutput_string(1:length(parameteroutput_string)-5);
0127 
0128 disp(sprintf('      ''%s''','output'));
0129 disp(sprintf('         parameteroutput: %s %s',parameteroutput_string,...
0130                        '(list of output parameters recovered in the solution sequences: ex: {''viscousheating''}, or {''viscousheating'',''deviatoricstress''})'));
0131 
0132 %qmu
0133 disp(sprintf('\n'));
0134 displayqmu(md);

Generated on Sun 29-Mar-2009 20:22:55 by m2html © 2003