Changeset 9752
- Timestamp:
- 09/09/11 17:15:08 (14 years ago)
- Location:
- issm/trunk/src/m/classes
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/classes/inversion.m
r9749 r9752 93 93 %Check NaN 94 94 fields={'nsteps','maxiter_per_step'}; 95 checknan(md,' materials',fields);95 checknan(md,'inversion',fields); 96 96 97 %CONTROL TYPE 98 num_controls=numel(md.inversion.control_parameters); 99 num_costfunc=size(md.inversion.cost_functions,2); 100 if ~iscell(md.inversion.control_parameters) 101 checkmessage(['model not consistent: model ' md.miscellaneous.name ' inversion.control_parameters field should be a cell of strings']); 102 end 103 if ~ismember(md.inversion.control_parameters,{'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'Vx' 'Vy'}); 104 checkmessage(['model not consistent: model ' md.miscellaneous.name ' inversion.control_parameters field should be ''BalancethicknessThickeningRate'' ''FrictionCoefficient'' ''MaterialsRheologyBbar'' ''Vx'' ''Vy''']); 105 end 106 107 %LENGTH CONTROL FIELDS 108 fields={'maxiter_per_step','step_threshold'}; 109 checksize(md,'inversion',fields,[md.inversion.nsteps 1]); 110 fields={'cost_functions'}; 111 checksize(md,'inversion',fields,[md.inversion.nsteps num_costfunc]); 112 fields={'gradient_scaling'}; 113 checksize(md,'inversion',fields,[md.inversion.nsteps num_controls]); 114 fields={'min_parameters','max_parameters'}; 115 checksize(md,'inversion',fields,[md.mesh.numberofvertices num_controls]); 116 117 %RESPONSES 118 checkvalues(md,'inversion',{'cost_functions'},[101:105 201 501:503]); 119 120 %WEIGHTS 121 fields={'cost_functions_coefficients'}; 122 checksize(md,'inversion',fields,[md.mesh.numberofvertices num_costfunc]); 123 checkgreater(md,'inversion',fields,0); 124 125 %OBSERVED VELOCITIES 126 if md.private.solution==BalancethicknessSolutionEnum 127 fields={'thickness_obs'}; 128 checksize(md,'inversion',fields,[md.mesh.numberofvertices 1]); 129 checknan(md,'inversion',fields); 130 else 131 fields={'vx_obs','vy_obs'}; 132 checksize(md,'inversion',fields,[md.mesh.numberofvertices 1]); 133 checknan(md,'inversion',fields); 134 end 135 136 %DIRICHLET IF THICKNESS <= 0 137 if any(md.geometry.thickness<=0), 138 pos=find(md.geometry.thickness<=0); 139 if any(isnan(md.balancethickness.spcthickness(pos))), 140 checkmessage(['model not consistent: model ' md.miscellaneous.name ' has some nodes with 0 thickness']); 141 end 142 end 97 143 end % }}} 98 144 function disp(obj) % {{{ -
issm/trunk/src/m/classes/qmu.m
r9739 r9752 50 50 function checkconsistency(obj,md) % {{{ 51 51 52 %Early return 53 if ~md.qmu.isdakota, return; end 54 55 if md.qmu.params.evaluation_concurrency~=1, 56 checkmessage(['model not consistent: concurrency should be set to 1 when running dakota in library mode']); 57 end 58 if ~isempty(md.qmu.partition), 59 if numel(md.qmu.partition)~=md.mesh.numberofvertices, 60 checkmessage(['model not consistent: user supplied partition for qmu analysis should have size md.mesh.numberofvertices x 1 ']); 61 end 62 if find(md.qmu.partition)>=md.mesh.numberofvertices, 63 checkmessage(['model not consistent: user supplied partition should be indexed from 0 (c-convention)']); 64 end 65 if min(md.qmu.partition)~=0, 66 checkmessage(['model not consistent: partition vector not indexed from 0 on']); 67 end 68 if max(md.qmu.partition)>=md.mesh.numberofvertices, 69 checkmessage(['model not consistent: partition vector cannot have maximum index larger than number of nodes']); 70 end 71 if ~isempty(find(md.qmu.partition<0)), 72 checkmessage(['model not consistent: partition vector cannot have values less than 0']); 73 end 74 if ~isempty(find(md.qmu.partition>=md.qmu.numberofpartitions)), 75 checkmessage(['model not consistent: partition vector cannot have values more than md.qmu.numberofpartitions-1']); 76 end 77 if max(md.qmu.partition)>=md.qmu.numberofpartitions, 78 checkmessage(['model not consistent: for qmu analysis, partitioning vector cannot go over npart, number of partition areas']); 79 end 80 end 81 82 if ~strcmpi(md.cluster.name,'none'), 83 if md.settings.waitonlock==0, 84 checkmessage(['model is not correctly configured: waitonlock should be activated when running qmu in parallel mode!']); 85 end 86 end 52 87 end % }}} 53 88 function disp(obj) % {{{ -
issm/trunk/src/m/classes/steadystate.m
r9739 r9752 42 42 end % }}} 43 43 function checkconsistency(obj,md) % {{{ 44 if md.timestepping.time_step~=0, 45 checkmessage(['model not consistent: for a steadystate computation, timestepping.time_step must be zero.']); 46 end 44 47 48 if isnan(md.diagnostic.reltol), 49 checkmessage(['model not consistent: for a steadystate computation, diagnostic.reltol (relative convergence criterion) must be defined!']); 50 end 45 51 end % }}} 46 52 end -
issm/trunk/src/m/classes/timestepping.m
r9751 r9752 50 50 checkmessage(['model not consistent: model ' md.miscellaneous.name ' time_adapt field should be 0 or 1']); 51 51 end 52 if md.timestepping.time_step<=0, 53 checkmessage('model not consistent: field timestepping.time_step must be positive for a transient run') 54 end 55 if(md.timestepping.cfl_coefficient>1 | md.timestepping.cfl_coefficient<0), 56 checkmessage(['model not consistent: model ' md.miscellaneous.name ' cfl_coefficient field should between 0 and 1']); 57 end 58 if(md.timestepping.cfl_coefficient>1 | md.timestepping.cfl_coefficient<0), 59 checkmessage(['model not consistent: model ' md.miscellaneous.name ' cfl_coefficient field should between 0 and 1']); 60 end 52 61 end % }}} 53 62 end -
issm/trunk/src/m/classes/transient.m
r9739 r9752 53 53 end % }}} 54 54 function checkconsistency(obj,md) % {{{ 55 if ~ismember(md.transient.isdiagnostic,[0 1]), 56 checkmessage('model not consistent: transient.isdiagnostic should be a scalar (1 or 0)'); 57 end 58 if ~ismember(md.transient.isprognostic,[0 1]), 59 checkmessage('model not consistent: transient.isprognostic should be a scalar (1 or 0)'); 60 end 61 if ~ismember(md.transient.isthermal,[0 1]), 62 checkmessage('model not consistent: transient.isthermal should be a scalar (1 or 0)'); 63 end 64 if ~ismember(md.transient.isgroundingline,[0 1]), 65 checkmessage('model not consistent: transient.isgroundingline should be a scalar (1 or 0)'); 66 end 55 67 56 68 end % }}}
Note:
See TracChangeset
for help on using the changeset viewer.