Changeset 9854
- Timestamp:
- 09/20/11 13:30:26 (13 years ago)
- Location:
- issm/trunk/src/m/classes
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/classes/balancethickness.m
r9853 r9854 40 40 end % }}} 41 41 function checkconsistency(obj,md,solution,analyses) % {{{ 42 %Early return 43 if solution~=BalancethicknessSolutionEnum, return; end 44 42 45 if ~ismember(md.balancethickness.stabilization,[0 1 3]), 43 46 checkmessage('model not consistent: balancethickness.stabilization should be a scalar (0 or 1 or 3)'); 44 47 end 48 45 49 end % }}} 46 50 function disp(obj) % {{{ -
issm/trunk/src/m/classes/basalforcings.m
r9853 r9854 37 37 function checkconsistency(obj,md,solution,analyses) % {{{ 38 38 39 fields={' melting_rate','geothermalflux'};39 fields={'geothermalflux'}; 40 40 %checksize(md,'basalforcings',fields,[md.mesh.numberofvertices 1]); 41 if ismember(PrognosticAnalysisEnum,analyses), 42 fields={'melting_rate'}; 43 checkforcing(md,'basalforcings',fields); 44 end 45 if ismember(BalancethicknessAnalysisEnum,analyses), 46 fields={'melting_rate'}; 47 checksize(md,'basalforcings',fields,[md.mesh.numberofvertices 1]); 48 checknan(md, 'basalforcings',fields); 49 end 50 if ismember(ThermalAnalysisEnum,analyses), 51 fields={'geothermalflux'}; 52 checksize(md,'basalforcings',fields,[md.mesh.numberofvertices 1]); 53 checknan(md, 'basalforcings',fields); 54 end 41 55 end % }}} 42 56 function disp(obj) % {{{ -
issm/trunk/src/m/classes/diagnostic.m
r9853 r9854 103 103 end 104 104 105 if ismember(DiagnosticHorizAnalysisEnum,analyses), 106 %singular solution 107 if ~any((~isnan(md.diagnostic.spcvx)+~isnan(md.diagnostic.spcvy))==2), 108 checkmessage(['model ' md.miscellaneous.name ' is not well posed (singular). You need at least one node with fixed velocity!']) 109 end 110 %ROTATED SPC 111 %CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES 112 if any(sum(isnan(md.diagnostic.referential),2)~=0 & sum(isnan(md.diagnostic.referential),2)~=6), 113 checkmessage(['model ' md.miscellaneous.name ' has problem with rotated spc. Each line of diagnostic.referential should contain either only NaN values or no NaN values']); 114 end 115 %CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL 116 if any(sum(isnan(md.diagnostic.referential),2)==0), 117 pos=find(sum(isnan(md.diagnostic.referential),2)==0); 118 if any(dot(md.diagnostic.referential(pos,1:3),md.diagnostic.referential(pos,4:6))), 119 dot(md.diagnostic.referential(pos,1:3),md.diagnostic.referential(pos,4:6)) 120 checkmessage(['model ' md.miscellaneous.name ' has problem with rotated spc. Vectors in diagnostic.referential (colums 1 to 3 and 4 to 6) must be orthogonal']); 121 end 122 123 end 124 %CHECK THAT ROTATION IS IN THE (X,Y) PLANE FOR 2D MODELS 125 if md.mesh.dimension==2, 126 pos=find(sum(isnan(md.diagnostic.referential),2)==0 & md.flowequation.vertex_equation==2); 127 if any(md.diagnostic.referential(pos,3:5)~=0); 128 checkmessage(['model ' md.miscellaneous.name ' has problem with rotated spc. The rotation should be in the (x,y) plane for 2D diagnostic models (nodeonmacayeal)']); 129 end 130 end 131 132 end 133 105 134 end % }}} 106 135 function disp(obj) % {{{ -
issm/trunk/src/m/classes/flowequation.m
r9853 r9854 43 43 function checkconsistency(obj,md,solution,analyses) % {{{ 44 44 45 if ismember(DiagnosticHorizAnalysisEnum,analyses), 46 %Check the size of flowequation.element_equation 47 fields={'element_equation'}; 48 checksize(md,'flowequation',fields,[md.mesh.numberofelements 1]); 49 %Check the values of flowequation.element_equation 50 checkvalues(md,'flowequation',fields,[0:7]); 51 if (md.mesh.dimension==2), 52 checkvalues(md,'flowequation',fields,[1 2]); 53 end 54 if (md.flowequation.ismacayealpattyn==0 && md.flowequation.ishutter==0 && md.flowequation.isstokes==0), 55 checkmessage(['no elements type set for this model. at least one of ismacayealpattyn, ishutter and isstokes need to be =1']); 56 end 57 58 %VERTICESTYPE 59 %Check the size of verticess_type 60 fields={'vertex_equation'}; 61 checksize(md,'flowequation',fields,[md.mesh.numberofvertices 1]); 62 %Check the values of flowequation.vertex_equation 63 checkvalues(md,'flowequation',fields,[0:7]); 64 if (md.mesh.dimension==2), 65 checkvalues(md,'flowequation',fields,[1 2]); 66 end 67 if (md.flowequation.ismacayealpattyn==0 && md.flowequation.ishutter==0 && md.flowequation.isstokes==0), 68 checkmessage(['no elements type set for this model. at least one of ismacayealpattyn, ishutter and isstokes need to be =1']); 69 end 70 end 71 if ismember(DiagnosticHutterAnalysisEnum,analyses), 72 if any(md.flowequation.element_equation==1 & md.mask.elementonfloatingice), 73 disp(sprintf('\n !!! Warning: Hutter''s model is not consistent on ice shelves !!!\n')); 74 end 75 end 76 45 77 end % }}} 46 78 function disp(obj) % {{{ -
issm/trunk/src/m/classes/geometry.m
r9853 r9854 49 49 checkmessage(['equality thickness=surface-bed violated']); 50 50 end 51 52 if ismember(PrognosticAnalysisEnum,analyses), 53 fields={'thickness'}; 54 checkgreaterstrict(md,'geometry',fields,0); 55 end 51 56 end % }}} 52 57 function disp(obj) % {{{ -
issm/trunk/src/m/classes/hydrology.m
r9853 r9854 51 51 function checkconsistency(obj,md,solution,analyses) % {{{ 52 52 53 %Early return 54 if ~ismember(HydrologyAnalysisEnum,analyses), return; end 55 56 57 fields={'spcwatercolumn'}; 58 checkforcing(md,'hydrology',fields); 59 53 60 end % }}} 54 61 function disp(obj) % {{{ -
issm/trunk/src/m/classes/initialization.m
r9853 r9854 42 42 end % }}} 43 43 function checkconsistency(obj,md,solution,analyses) % {{{ 44 44 if ismember(DiagnosticHorizAnalysisEnum,analyses) 45 if ~isnan(md.initialization.vx) & ~isnan(md.initialization.vy), 46 fields={'vx','vy'}; 47 checknan(md, 'initialization',fields); 48 checksize(md,'initialization',fields,[md.mesh.numberofvertices 1]); 49 end 50 end 51 if ismember(PrognosticAnalysisEnum,analyses), 52 fields={'vx','vy'}; 53 checknan(md, 'initialization',fields); 54 checksize(md,'initialization',fields,[md.mesh.numberofvertices 1]); 55 end 56 if ismember(HydrologyAnalysisEnum,analyses), 57 fields={'watercolumn'}; 58 checksize(md,'initialization',fields,[md.mesh.numberofvertices 1]); 59 end 60 if ismember(BalancethicknessAnalysisEnum,analyses), 61 fields={'vx','vy'}; 62 checksize(md,'initialization',fields,[md.mesh.numberofvertices 1]); 63 checknan(md, 'initialization',fields); 64 %Triangle with zero velocity 65 if any(sum(abs(md.initialization.vx(md.elements)),2)==0 & sum(abs(md.initialization.vy(md.elements)),2)==0) 66 checkmessage('model not consistent: at least one triangle has all its vertices with a zero velocity'); 67 end 68 end 69 if ismember(ThermalAnalysisEnum,analyses), 70 fields={'vx','vy','vz','pressure'}; 71 checksize(md,'initialization',fields,[md.mesh.numberofvertices 1]); 72 checknan(md, 'initialization',fields); 73 end 45 74 end % }}} 46 75 function disp(obj) % {{{ -
issm/trunk/src/m/classes/mesh.m
r9853 r9854 146 146 checkgreaterstrict(md,'mesh',fields,0); 147 147 end 148 case ThermalSolutionEnum, 149 if md.mesh.dimension~=3, checkmessage('thermal solution only supported on 3d meshes'); end 148 150 end 149 151 end % }}} -
issm/trunk/src/m/classes/prognostic.m
r9853 r9854 47 47 end % }}} 48 48 function checkconsistency(obj,md,solution,analyses) % {{{ 49 50 %Early return, 51 if ~ismember(PrognosticAnalysisEnum,analyses), return; end 52 53 if ~ismember(md.prognostic.hydrostatic_adjustment,{'Absolute' 'Incremental'}), 54 checkmessage(['model not consistent: model ' md.miscellaneous.name ' prognostic.hydrostatic_adjustment field should be AbsoluteEnum or IncrementalEnum']); 55 end 56 57 fields={'spcthickness'}; 58 checkforcing(md,'prognostic',fields); 49 59 if ~ismember(obj.stabilization,[0 1 3]), 50 60 checkmessage('prognostic.stabilization should be a scalar (0 or 1 or 3)'); 51 61 end 52 62 53 if ~ismember(md.prognostic.hydrostatic_adjustment,{'Absolute' 'Incremental'}),54 checkmessage(['model not consistent: model ' md.miscellaneous.name ' prognostic.hydrostatic_adjustment field should be AbsoluteEnum or IncrementalEnum']);55 end56 63 end % }}} 57 64 function disp(obj) % {{{ -
issm/trunk/src/m/classes/surfaceforcings.m
r9853 r9854 37 37 function checkconsistency(obj,md,solution,analyses) % {{{ 38 38 39 if ismember(PrognosticAnalysisEnum,analyses), 40 fields={'mass_balance'}; 41 checkforcing(md,'surfaceforcings',fields); 42 end 43 if ismember(BalancethicknessAnalysisEnum,analyses), 44 fields={'mass_balance'}; 45 checksize(md,'surfaceforcings',fields,[md.mesh.numberofvertices 1]); 46 checknan(md, 'surfaceforcings',fields); 47 end 39 48 end % }}} 40 49 function disp(obj) % {{{ -
issm/trunk/src/m/classes/thermal.m
r9853 r9854 51 51 end % }}} 52 52 function checkconsistency(obj,md,solution,analyses) % {{{ 53 54 %Early return 55 if ~ismember(ThermalAnalysisEnum,analyses), return; end 56 53 57 if ~ismember(obj.stabilization,[0 1 2]), 54 58 checkmessage('thermal.stabilization should be a scalar (0 or 1 or 2)'); 55 59 end 60 61 fields={'spctemperature'}; 62 checkforcing(md,'thermal',fields); 56 63 57 64 end % }}} -
issm/trunk/src/m/classes/transient.m
r9853 r9854 45 45 end % }}} 46 46 function checkconsistency(obj,md,solution,analyses) % {{{ 47 48 %Early return 49 if solution~=TransientSolutionEnum, return; end 50 51 %check flags 47 52 if ~ismember(md.transient.isdiagnostic,[0 1]), 48 53 checkmessage('model not consistent: transient.isdiagnostic should be a scalar (1 or 0)'); … … 56 61 if ~ismember(md.transient.isgroundingline,[0 1]), 57 62 checkmessage('model not consistent: transient.isgroundingline should be a scalar (1 or 0)'); 63 end 64 65 %check that groundingline is not activated in serial model 66 if md.transient.isgroundingline & strcmp(md.cluster.name,'none'), 67 checkmessage(['model not consistent: ' md.private.solution ' is only implemented in parallel mode !']); 68 end 69 70 %Check that grounding line migration is in 2d 71 if md.transient.isgroundingline & md.mesh.dimension~=2 72 checkmessage(['model not consistent: for a ' md.private.solution ' computation, the grounding line module is only implemented in 2d !']); 58 73 end 59 74
Note:
See TracChangeset
for help on using the changeset viewer.