Changeset 9860 for issm/trunk/src/m/classes/mesh.m
- Timestamp:
- 09/20/11 16:12:30 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/classes/mesh.m
r9854 r9860 80 80 function checkconsistency(obj,md,solution,analyses) % {{{ 81 81 82 fields={'x','y','z','elements','elementonbed','elementonsurface','vertexonbed','vertexonsurface','elementconnectivity'}; 83 checknan(md,'mesh',fields); 84 85 fields={'elements','elementonbed','elementonsurface','vertexonbed','vertexonsurface','elementconnectivity'}; 86 checkgreater(md,'mesh',fields,0); 87 88 fields={'dimension','elements','numberofelements','numberofvertices'}; 89 checkgreaterstrict(md,'mesh',fields,0); 90 91 fields={'vertexonbed','vertexonsurface','x','y','z'}; 92 checksize(md,'mesh',fields,[md.mesh.numberofvertices 1]); 93 94 fields={'elementonbed','elementonsurface'}; 95 checksize(md,'mesh',fields,[md.mesh.numberofelements 1]); 96 97 fields={'elements'}; 82 checkfield(md,'mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]); 83 checkfield(md,'mesh.y','NaN',1,'size',[md.mesh.numberofvertices 1]); 84 checkfield(md,'mesh.z','NaN',1,'size',[md.mesh.numberofvertices 1]); 85 checkfield(md,'mesh.elements','NaN',1,'>',0,'values',1:md.mesh.numberofvertices); 98 86 if(md.mesh.dimension==2), 99 check size(md,'mesh',fields,[md.mesh.numberofelements 3]);87 checkfield(md,'mesh.elements','size',[md.mesh.numberofelements 3]); 100 88 else 101 check size(md,'mesh',fields,[md.mesh.numberofelements 6]);89 checkfield(md,'mesh.elements','size',[md.mesh.numberofelements 6]); 102 90 end 103 91 if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:))))); 104 checkmessage('orphan nodes have been found. Check the mesh ');92 checkmessage('orphan nodes have been found. Check the mesh outline'); 105 93 end 106 107 94 checkfield(md,'mesh.dimension','values',[2 3]); 95 checkfield(md,'mesh.numberoflayers','>=',0); 96 checkfield(md,'mesh.numberofelements','>',0); 97 checkfield(md,'mesh.numberofvertices','>',0); 98 %no checks for numberofedges lat long and hemisphere 99 checkfield(md,'mesh.elementonbed','size',[md.mesh.numberofelements 1],'values',[0 1]); 100 checkfield(md,'mesh.elementonsurface','size',[md.mesh.numberofelements 1],'values',[0 1]); 101 checkfield(md,'mesh.vertexonbed','size',[md.mesh.numberofvertices 1],'values',[0 1]); 102 checkfield(md,'mesh.vertexonsurface','size',[md.mesh.numberofvertices 1],'values',[0 1]); 108 103 if (md.mesh.dimension==2), 109 if md.mesh.average_vertex_connectivity<9, 110 checkmessage('model not consistent: connectivity should be at least 9 for 2d models'); 111 end 112 end 113 if md.mesh.dimension==3, 114 if md.mesh.average_vertex_connectivity<24, 115 checkmessage('model not consistent: connectivity should be at least 24 for 3d models'); 116 end 104 checkfield(md,'mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d'); 105 else 106 checkfield(md,'mesh.average_vertex_connectivity','>=',24,'message','''mesh.average_vertex_connectivity'' should be at least 24 in 3d'); 117 107 end 118 108 … … 121 111 case PrognosticSolutionEnum, 122 112 if md.prognostic.stabilization==3, 123 if md.mesh.dimension~=2, checkmessage('Discontinuous Galerkin only supported for 2d meshes'); end 124 fields={'edges'}; 125 checksize(md,'mesh',fields,[NaN 4]); 126 fields={'edges(:,1:3)'}; 127 checknan(md,'mesh',fields); 128 checkgreaterstrict(md,'mesh',fields,0); 113 checkfield(md,'mesh.dimension','values',2,'message','Discontinuous Galerkin only supported for 2d meshes'); 114 checkfield(md,'mesh.edges','size',[NaN 4]); 115 checkfield(md,'mesh.edges(:,1:3)','>',0); 129 116 end 130 117 case BalancethicknessSolutionEnum, 131 118 if md.balancethickness.stabilization==3, 132 if md.mesh.dimension~=2, checkmessage('Discontinuous Galerkin only supported for 2d meshes'); end 133 fields={'edges'}; 134 checksize(md,'mesh',fields,[NaN 4]); 135 fields={'edges(:,1:3)'}; 136 checknan(md,'mesh',fields); 137 checkgreaterstrict(md,'mesh',fields,0); 119 checkfield(md,'mesh.dimension','values',2,'message','Discontinuous Galerkin only supported for 2d meshes'); 120 checkfield(md,'mesh.edges','size',[NaN 4]); 121 checkfield(md,'mesh.edges(:,1:3)','>',0); 138 122 end 139 123 case TransientSolutionEnum, 140 124 if md.transient.isprognostic & md.prognostic.stabilization==3, 141 if md.mesh.dimension~=2, checkmessage('Discontinuous Galerkin only supported for 2d meshes'); end 142 fields={'edges'}; 143 checksize(md,'mesh',fields,[NaN 4]); 144 fields={'edges(:,1:3)'}; 145 checknan(md,'mesh',fields); 146 checkgreaterstrict(md,'mesh',fields,0); 125 checkfield(md,'mesh.dimension','values',2,'message','Discontinuous Galerkin only supported for 2d meshes'); 126 checkfield(md,'mesh.edges','size',[NaN 4]); 127 checkfield(md,'mesh.edges(:,1:3)','>',0); 147 128 end 148 129 case ThermalSolutionEnum, 149 if md.mesh.dimension~=3, checkmessage('thermal solution only supported on 3d meshes'); end130 checkfield(md,'mesh.dimension','values',3,'message','thermal solution only supported on 3d meshes'); 150 131 end 151 132 end % }}}
Note:
See TracChangeset
for help on using the changeset viewer.