0001 function displaysolutionparameters(md)
0002
0003
0004
0005
0006
0007
0008
0009
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
0043 control_string='';
0044 for i=1:length(md.control_type),
0045 parameter=md.control_type{i};
0046
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
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
0073 disp(sprintf(' ''%s''','mesh2grid'));
0074 mesh2grid_string='';
0075 for i=1:length(md.mesh2grid_parameters),
0076 parameter=md.mesh2grid_parameters{i};
0077
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
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
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
0114 md.parallel
0115
0116
0117 parameteroutput_string='';
0118 for i=1:length(md.parameteroutput),
0119 parameter=md.parameteroutput{i};
0120
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
0133 disp(sprintf('\n'));
0134 displayqmu(md);