Changeset 9728
- Timestamp:
- 09/09/11 13:40:05 (14 years ago)
- Location:
- issm/trunk
- Files:
-
- 3 added
- 3 deleted
- 29 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r9725 r9728 155 155 MeshNumberoflayersEnum, 156 156 MeshNumberofvertices2dEnum, 157 MeshElementconnectivityEnum, 158 MeshLowerelementsEnum, 159 MeshUpperelementsEnum, 157 160 /*}}}*/ 158 161 /*Datasets {{{1*/ … … 470 473 YEnum, 471 474 ZEnum, 472 UpperelementsEnum,473 475 EdgesEnum, 474 476 Elements2dEnum, 475 477 XEnum, 476 ElementconnectivityEnum,477 LowerelementsEnum,478 478 OutputfilenameEnum, 479 479 WaterfractionEnum, -
issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
r9725 r9728 159 159 case MeshNumberoflayersEnum : return "MeshNumberoflayers"; 160 160 case MeshNumberofvertices2dEnum : return "MeshNumberofvertices2d"; 161 case MeshElementconnectivityEnum : return "MeshElementconnectivity"; 162 case MeshLowerelementsEnum : return "MeshLowerelements"; 163 case MeshUpperelementsEnum : return "MeshUpperelements"; 161 164 case ConstraintsEnum : return "Constraints"; 162 165 case ElementsEnum : return "Elements"; … … 413 416 case YEnum : return "Y"; 414 417 case ZEnum : return "Z"; 415 case UpperelementsEnum : return "Upperelements";416 418 case EdgesEnum : return "Edges"; 417 419 case Elements2dEnum : return "Elements2d"; 418 420 case XEnum : return "X"; 419 case ElementconnectivityEnum : return "Elementconnectivity";420 case LowerelementsEnum : return "Lowerelements";421 421 case OutputfilenameEnum : return "Outputfilename"; 422 422 case WaterfractionEnum : return "Waterfraction"; -
issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r9725 r9728 45 45 46 46 /*Fetch data needed: */ 47 iomodel->FetchData(4,ElementsEnum, ElementconnectivityEnum,MaterialsRheologyBEnum,MaterialsRheologyNEnum);48 if(dim==3) iomodel->FetchData(2, UpperelementsEnum,LowerelementsEnum);47 iomodel->FetchData(4,ElementsEnum,MeshElementconnectivityEnum,MaterialsRheologyBEnum,MaterialsRheologyNEnum); 48 if(dim==3) iomodel->FetchData(2,MeshUpperelementsEnum,MeshLowerelementsEnum); 49 49 if(control_analysis)iomodel->FetchData(3,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum); 50 50 … … 63 63 64 64 /*Free data: */ 65 iomodel->DeleteData(9,ElementsEnum, ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum,65 iomodel->DeleteData(9,ElementsEnum,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum, 66 66 MaterialsRheologyBEnum,MaterialsRheologyNEnum,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum); 67 67 -
issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
r9725 r9728 157 157 else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum; 158 158 else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum; 159 else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum; 160 else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum; 161 else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum; 159 162 else if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 160 163 else if (strcmp(name,"Elements")==0) return ElementsEnum; … … 411 414 else if (strcmp(name,"Y")==0) return YEnum; 412 415 else if (strcmp(name,"Z")==0) return ZEnum; 413 else if (strcmp(name,"Upperelements")==0) return UpperelementsEnum;414 416 else if (strcmp(name,"Edges")==0) return EdgesEnum; 415 417 else if (strcmp(name,"Elements2d")==0) return Elements2dEnum; 416 418 else if (strcmp(name,"X")==0) return XEnum; 417 else if (strcmp(name,"Elementconnectivity")==0) return ElementconnectivityEnum;418 else if (strcmp(name,"Lowerelements")==0) return LowerelementsEnum;419 419 else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum; 420 420 else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum; -
issm/trunk/src/c/objects/Elements/Penta.cpp
r9725 r9728 57 57 /*Checks in debugging mode*/ 58 58 /*{{{2*/ 59 _assert_(iomodel->Data( UpperelementsEnum));60 _assert_(iomodel->Data( LowerelementsEnum));59 _assert_(iomodel->Data(MeshUpperelementsEnum)); 60 _assert_(iomodel->Data(MeshLowerelementsEnum)); 61 61 /*}}}*/ 62 62 … … 66 66 67 67 /*Build neighbors list*/ 68 if (isnan(iomodel->Data( UpperelementsEnum)[index])) penta_elements_ids[1]=this->id; //upper penta is the same penta69 else penta_elements_ids[1]=(int)(iomodel->Data( UpperelementsEnum)[index]);70 if (isnan(iomodel->Data( LowerelementsEnum)[index])) penta_elements_ids[0]=this->id; //lower penta is the same penta71 else penta_elements_ids[0]=(int)(iomodel->Data( LowerelementsEnum)[index]);68 if (isnan(iomodel->Data(MeshUpperelementsEnum)[index])) penta_elements_ids[1]=this->id; //upper penta is the same penta 69 else penta_elements_ids[1]=(int)(iomodel->Data(MeshUpperelementsEnum)[index]); 70 if (isnan(iomodel->Data(MeshLowerelementsEnum)[index])) penta_elements_ids[0]=this->id; //lower penta is the same penta 71 else penta_elements_ids[0]=(int)(iomodel->Data(MeshLowerelementsEnum)[index]); 72 72 this->InitHookNeighbors(penta_elements_ids); 73 73 74 74 /*Build horizontalneighborsids list: */ 75 _assert_(iomodel->Data( ElementconnectivityEnum));76 for(i=0;i<3;i++) this->horizontalneighborsids[i]=(int)iomodel->Data( ElementconnectivityEnum)[3*index+i]-1;75 _assert_(iomodel->Data(MeshElementconnectivityEnum)); 76 for(i=0;i<3;i++) this->horizontalneighborsids[i]=(int)iomodel->Data(MeshElementconnectivityEnum)[3*index+i]-1; 77 77 78 78 //this->parameters: we still can't point to it, it may not even exist. Configure will handle this. -
issm/trunk/src/c/objects/Elements/Tria.cpp
r9725 r9728 52 52 53 53 /*Build horizontalneighborsids list: */ 54 _assert_(iomodel->Data( ElementconnectivityEnum));54 _assert_(iomodel->Data(MeshElementconnectivityEnum)); 55 55 //for (i=0;i<3;i++) this->horizontalneighborsids[i]=(int)iomodel->elementconnectivity[3*index+i]-1; 56 56 -
issm/trunk/src/m/classes/mesh.m
r9725 r9728 22 22 numberofvertices2d = modelfield('default',0,'marshall',true,'format','Integer'); 23 23 numberofelements2d = modelfield('default',0,'marshall',true,'format','Integer'); 24 nodeconnectivity = modelfield('default',NaN,'marshall',false); 25 elementconnectivity = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3); 26 uppernodes = modelfield('default',NaN,'marshall',false); 27 upperelements = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2); 28 lowerelements = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2); 29 lowernodes = modelfield('default',NaN,'marshall',false); 24 30 end 25 31 methods -
issm/trunk/src/m/classes/model/model.m
r9725 r9728 47 47 y = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1); 48 48 z = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1); 49 nodeconnectivity = modelfield('default',NaN,'marshall',false);50 elementconnectivity = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);51 49 edges = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3); 52 50 elements2d = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3); 53 51 x2d = modelfield('default',NaN,'marshall',false); 54 52 y2d = modelfield('default',NaN,'marshall',false); 55 56 uppernodes = modelfield('default',NaN,'marshall',false);57 upperelements = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);58 lowerelements = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);59 lowernodes = modelfield('default',NaN,'marshall',false);60 53 61 54 elementonbed = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',2); … … 318 311 if isfield(structmd,'numberofelements2d'), md.mesh.numberofelements2d=structmd.numberofelements2d; end 319 312 if isfield(structmd,'numberofnodes2d'), md.mesh.numberofvertices2d=structmd.numberofnodes2d; end 313 if isfield(structmd,'nodeconnectivity'), md.mesh.nodeconnectivityension=structmd.nodeconnectivity; end 314 if isfield(structmd,'elementconnectivity'), md.mesh.elementconnectivityension=structmd.elementconnectivity; end 315 if isfield(structmd,'uppernodes'), md.mesh.uppernodesension=structmd.uppernodes; end 316 if isfield(structmd,'lowernodes'), md.mesh.lowernodesension=structmd.lowernodes; end 317 if isfield(structmd,'upperelements'), md.mesh.upperelementsension=structmd.upperelements; end 318 if isfield(structmd,'lowerelements'), md.mesh.lowerelementsension=structmd.lowerelements; end 320 319 321 320 %Field changes -
issm/trunk/src/m/model/PropagateFlagsUntilDistance.m
r9719 r9728 20 20 %find elements that are at the border of flags: 21 21 flag_elements=find(flags); 22 conn=md. elementconnectivity(flag_elements,:);22 conn=md.mesh.elementconnectivity(flag_elements,:); 23 23 pos=find(conn);conn(pos)=~flags(conn(pos)); 24 24 sum_conn=sum(conn,2); … … 38 38 pos=find(new_flags); 39 39 40 connected_elements=md. elementconnectivity(pos,:);40 connected_elements=md.mesh.elementconnectivity(pos,:); 41 41 connected_elements=connected_elements(find(connected_elements)); 42 42 new_flags(connected_elements)=1; … … 56 56 %none of the border elements are within distance, this element is outside out area of interest. 57 57 %ensure this element never gets found again in the connectivity. 58 pos=find(md. elementconnectivity==new_elements(i));59 md. elementconnectivity(pos)=0;58 pos=find(md.mesh.elementconnectivity==new_elements(i)); 59 md.mesh.elementconnectivity(pos)=0; 60 60 %exclude this new element from the new_flags! 61 61 new_flags(new_elements(i))=0; -
issm/trunk/src/m/model/bamg.m
r9725 r9728 335 335 md.elementonsurface=ones(md.mesh.numberofelements,1); 336 336 md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1; 337 md. elementconnectivity=md.private.bamg.mesh.ElementConnectivity;338 md. elementconnectivity(find(isnan(md.elementconnectivity)))=0;337 md.mesh.elementconnectivity=md.private.bamg.mesh.ElementConnectivity; 338 md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0; 339 339 340 340 %Check for orphan -
issm/trunk/src/m/model/collapse.m
r9725 r9728 98 98 99 99 %Keep a trace of lower and upper nodes 100 md. lowernodes=NaN;101 md. uppernodes=NaN;100 md.mesh.lowernodes=NaN; 101 md.mesh.uppernodes=NaN; 102 102 103 103 %Remove old mesh -
issm/trunk/src/m/model/contourenvelope.m
r9725 r9728 35 35 %Now, build the connectivity tables for this mesh. 36 36 %Computing connectivity 37 if size(md. nodeconnectivity,1)~=md.mesh.numberofvertices,38 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);37 if size(md.mesh.nodeconnectivity,1)~=md.mesh.numberofvertices, 38 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 39 39 end 40 if size(md. elementconnectivity,1)~=md.mesh.numberofelements,41 md. elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);40 if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements, 41 md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 42 42 end 43 43 44 44 %get nodes inside profile 45 elementconnectivity=md.elementconnectivity;45 mesh.elementconnectivity=md.mesh.elementconnectivity; 46 46 if nargin==2, 47 47 if isfile, … … 51 51 %modify element connectivity 52 52 elemout=find(~elemin); 53 elementconnectivity(elemout,:)=0;54 elementconnectivity(find(ismember(elementconnectivity,elemout)))=0;53 mesh.elementconnectivity(elemout,:)=0; 54 mesh.elementconnectivity(find(ismember(mesh.elementconnectivity,elemout)))=0; 55 55 else 56 56 %get flag list of elements and nodes inside the contour … … 64 64 %modify element connectivity 65 65 elemout=find(~elemin); 66 elementconnectivity(elemout,:)=0;67 elementconnectivity(find(ismember(elementconnectivity,elemout)))=0;66 mesh.elementconnectivity(elemout,:)=0; 67 mesh.elementconnectivity(find(ismember(mesh.elementconnectivity,elemout)))=0; 68 68 end 69 69 end … … 71 71 %Find element on boundary 72 72 %First: find elements on the boundary of the domain 73 flag= elementconnectivity;73 flag=mesh.elementconnectivity; 74 74 if nargin==2, 75 75 flag(find(flag))=elemin(flag(find(flag))); … … 85 85 for i=1:num_segments, 86 86 el1=pos(i); 87 els2= elementconnectivity(el1,find(elementconnectivity(el1,:)));87 els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:))); 88 88 if length(els2)>1, 89 89 flag=intersect(md.elements(els2(1),:),md.elements(els2(2),:)); -
issm/trunk/src/m/model/extrude.m
r9725 r9728 87 87 88 88 %Keep a trace of lower and upper nodes 89 lowernodes=NaN*ones(number_nodes3d,1);90 uppernodes=NaN*ones(number_nodes3d,1);91 lowernodes(md.mesh.numberofvertices+1:end)=1:(numlayers-1)*md.mesh.numberofvertices;92 uppernodes(1:(numlayers-1)*md.mesh.numberofvertices)=md.mesh.numberofvertices+1:number_nodes3d;93 md. lowernodes=lowernodes;94 md. uppernodes=uppernodes;89 mesh.lowernodes=NaN*ones(number_nodes3d,1); 90 mesh.uppernodes=NaN*ones(number_nodes3d,1); 91 mesh.lowernodes(md.mesh.numberofvertices+1:end)=1:(numlayers-1)*md.mesh.numberofvertices; 92 mesh.uppernodes(1:(numlayers-1)*md.mesh.numberofvertices)=md.mesh.numberofvertices+1:number_nodes3d; 93 md.mesh.lowernodes=mesh.lowernodes; 94 md.mesh.uppernodes=mesh.uppernodes; 95 95 96 96 %same for lower and upper elements 97 lowerelements=NaN*ones(number_el3d,1);98 upperelements=NaN*ones(number_el3d,1);99 lowerelements(md.mesh.numberofelements+1:end)=1:(numlayers-2)*md.mesh.numberofelements;100 upperelements(1:(numlayers-2)*md.mesh.numberofelements)=md.mesh.numberofelements+1:(numlayers-1)*md.mesh.numberofelements;101 md. lowerelements=lowerelements;102 md. upperelements=upperelements;97 mesh.lowerelements=NaN*ones(number_el3d,1); 98 mesh.upperelements=NaN*ones(number_el3d,1); 99 mesh.lowerelements(md.mesh.numberofelements+1:end)=1:(numlayers-2)*md.mesh.numberofelements; 100 mesh.upperelements(1:(numlayers-2)*md.mesh.numberofelements)=md.mesh.numberofelements+1:(numlayers-1)*md.mesh.numberofelements; 101 md.mesh.lowerelements=mesh.lowerelements; 102 md.mesh.upperelements=mesh.upperelements; 103 103 104 104 %Save old mesh … … 184 184 185 185 %connectivity 186 md. elementconnectivity=repmat(md.elementconnectivity,numlayers-1,1);187 md. elementconnectivity(find(md.elementconnectivity==0))=NaN;186 md.mesh.elementconnectivity=repmat(md.mesh.elementconnectivity,numlayers-1,1); 187 md.mesh.elementconnectivity(find(md.mesh.elementconnectivity==0))=NaN; 188 188 for i=2:numlayers-1, 189 md. elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)...190 =md. elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d;191 end 192 md. elementconnectivity(find(isnan(md.elementconnectivity)))=0;189 md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)... 190 =md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d; 191 end 192 md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0; 193 193 194 194 %materials -
issm/trunk/src/m/model/mesh/findsegments.m
r9725 r9728 3 3 % 4 4 % Optional inputs: 5 % ' elementconnectivity'5 % 'mesh.elementconnectivity' 6 6 % 7 7 % Usage: … … 12 12 13 13 %Get connectivity 14 elementconnectivity=getfieldvalue(options,'elementconnectivity',md.elementconnectivity);14 mesh.elementconnectivity=getfieldvalue(options,'mesh.elementconnectivity',md.mesh.elementconnectivity); 15 15 16 16 %Now, build the connectivity tables for this mesh if not correclty done 17 if size(md. elementconnectivity,1)~=md.mesh.numberofelements,18 if exist(options,' elementconnectivity'),19 error(' '' elementconnectivity'' option does not have thge right size.');17 if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements, 18 if exist(options,'mesh.elementconnectivity'), 19 error(' ''mesh.elementconnectivity'' option does not have thge right size.'); 20 20 else 21 elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);21 mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 22 22 end 23 23 end 24 24 25 25 %Recreate the segments 26 elementonboundary=double( elementconnectivity(:,3)==0);26 elementonboundary=double(mesh.elementconnectivity(:,3)==0); 27 27 pos=find(elementonboundary); 28 28 num_segments=length(pos); … … 37 37 38 38 %get elements connected to el1 39 els2= elementconnectivity(el1,find(elementconnectivity(el1,:)));39 els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:))); 40 40 41 41 %el1 is connected to 2 other elements -
issm/trunk/src/m/model/mesh/meshnodensity.m
r9725 r9728 65 65 66 66 %Now, build the connectivity tables for this mesh. 67 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);68 md. elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);67 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 68 md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 69 69 70 70 %type of model -
issm/trunk/src/m/model/mesh/meshrefine.m
r9725 r9728 29 29 30 30 %Now, build the connectivity tables for this mesh. 31 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);32 md. elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);31 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 32 md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 33 33 34 34 %type of model -
issm/trunk/src/m/model/mesh/meshyams.m
r9725 r9728 95 95 %rifts, because the segments are used in YamsCall to freeze the rifts elements during refinement. 96 96 if md.rifts.numrifts, 97 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);98 md. elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);97 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 98 md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 99 99 md.mesh.segments=findsegments(md); 100 100 md=meshyamsrecreateriftsegments(md); … … 106 106 107 107 %Now, build the connectivity tables for this mesh. 108 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);109 md. elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);108 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 109 md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 110 110 111 111 %recreate segments -
issm/trunk/src/m/model/mesh/rifts/meshaddrifts.m
r9725 r9728 87 87 88 88 %Now, build the connectivity tables for this mesh. 89 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);90 md. elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);89 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 90 md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 91 91 92 92 %type of model -
issm/trunk/src/m/model/mesh/rifts/meshprocessrifts.m
r9725 r9728 26 26 %Call MEX file 27 27 [md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct]=TriMeshProcessRifts(md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers); 28 md.rifts 29 md.rifts.riftstruct 28 30 if ~isstruct(md.rifts.riftstruct), 29 31 error('TriMeshProcessRifts did not find any rift'); -
issm/trunk/src/m/model/mesh/setmesh.m
r9725 r9728 79 79 80 80 %Now, build the connectivity tables for this mesh. 81 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);82 md. elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);81 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 82 md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 83 83 84 84 %type of model -
issm/trunk/src/m/model/modelextract.m
r9714 r9728 123 123 md2.elements=elements_2; 124 124 125 % uppernodeslowernodes125 %mesh.uppernodes mesh.lowernodes 126 126 if md1.dim==3 127 md2. uppernodes=md1.uppernodes(pos_node);128 pos=find(~isnan(md2. uppernodes));129 md2. uppernodes(pos)=Pnode(md2.uppernodes(pos));130 131 md2. lowernodes=md1.lowernodes(pos_node);132 pos=find(~isnan(md2. lowernodes));133 md2. lowernodes(pos)=Pnode(md2.lowernodes(pos));134 135 md2. upperelements=md1.upperelements(pos_elem);136 pos=find(~isnan(md2. upperelements));137 md2. upperelements(pos)=Pelem(md2.upperelements(pos));138 139 md2. lowerelements=md1.lowerelements(pos_elem);140 pos=find(~isnan(md2. lowerelements));141 md2. lowerelements(pos)=Pelem(md2.lowerelements(pos));127 md2.mesh.uppernodes=md1.mesh.uppernodes(pos_node); 128 pos=find(~isnan(md2.mesh.uppernodes)); 129 md2.mesh.uppernodes(pos)=Pnode(md2.mesh.uppernodes(pos)); 130 131 md2.mesh.lowernodes=md1.mesh.lowernodes(pos_node); 132 pos=find(~isnan(md2.mesh.lowernodes)); 133 md2.mesh.lowernodes(pos)=Pnode(md2.mesh.lowernodes(pos)); 134 135 md2.mesh.upperelements=md1.mesh.upperelements(pos_elem); 136 pos=find(~isnan(md2.mesh.upperelements)); 137 md2.mesh.upperelements(pos)=Pelem(md2.mesh.upperelements(pos)); 138 139 md2.mesh.lowerelements=md1.mesh.lowerelements(pos_elem); 140 pos=find(~isnan(md2.mesh.lowerelements)); 141 md2.mesh.lowerelements(pos)=Pelem(md2.mesh.lowerelements(pos)); 142 142 end 143 143 … … 203 203 %recreate segments 204 204 if md1.dim==2 205 md2. nodeconnectivity=NodeConnectivity(md2.elements,md2.numberofnodes);206 md2. elementconnectivity=ElementConnectivity(md2.elements,md2.nodeconnectivity);205 md2.mesh.nodeconnectivity=NodeConnectivity(md2.elements,md2.numberofnodes); 206 md2.mesh.elementconnectivity=ElementConnectivity(md2.elements,md2.mesh.nodeconnectivity); 207 207 md2.segments=contourenvelope(md2); 208 208 md2.mesh.vertexonboundary=zeros(numberofnodes2,1); md2.nodeonboundary(md2.segments(:,1:2))=1; -
issm/trunk/src/m/model/modelsextract.m
r9725 r9728 42 42 %ok, we are sure element i is part of a new pool. 43 43 pool=zeros(numberofelements,1); 44 pool=PropagateFlagsFromConnectivity(md. elementconnectivity,pool,i,flags);44 pool=PropagateFlagsFromConnectivity(md.mesh.elementconnectivity,pool,i,flags); 45 45 flag_list{end+1,1}=pool; 46 46 -
issm/trunk/src/m/model/partition/AreaAverageOntoPartition.m
r9725 r9728 22 22 md.mesh.numberofelements=md.mesh.numberofelements2d; 23 23 md.vertex_weight=[]; 24 md. nodeconnectivity=[];24 md.mesh.nodeconnectivity=[]; 25 25 26 26 %run connectivity routine -
issm/trunk/src/m/model/partition/adjacency.m
r9725 r9728 19 19 20 20 %get node connectivity 21 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);21 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 22 22 23 connectivity=md. nodeconnectivity(:,1:end-1);23 connectivity=md.mesh.nodeconnectivity(:,1:end-1); 24 24 pos=find(connectivity); 25 25 connectivity(pos)=areas(connectivity(pos))/3; -
issm/trunk/src/m/model/partition/partitioner.m
r9725 r9728 40 40 md.mesh.numberofelements=md.mesh.numberofelements2d; 41 41 md.qmu.vertex_weight=[]; 42 md. nodeconnectivity=[];42 md.mesh.nodeconnectivity=[]; 43 43 end 44 44 -
issm/trunk/src/m/model/setmask2.m
r9725 r9728 28 28 29 29 %Now, build the connectivity tables for this mesh. 30 if size(md. nodeconnectivity,1)~=md.mesh.numberofvertices,31 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);30 if size(md.mesh.nodeconnectivity,1)~=md.mesh.numberofvertices, 31 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 32 32 end 33 if size(md. elementconnectivity,1)~=md.mesh.numberofelements,34 md. elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);33 if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements, 34 md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 35 35 end 36 36 … … 55 55 %figure out which elements on land are actually in the middle of the ocean! 56 56 pos1=find(elementonland); 57 connectedtoland=md. elementconnectivity(pos1,:);57 connectedtoland=md.mesh.elementconnectivity(pos1,:); 58 58 pos=find(connectedtoland); connectedtoland(pos)=1-elementonland(connectedtoland(pos)); 59 59 connectedtolandsum=sum(connectedtoland,2); … … 63 63 %figure out which elements on water are actually in the middle of the land! 64 64 pos1=find(~elementonland); 65 connectedtowater=md. elementconnectivity(pos1,:);65 connectedtowater=md.mesh.elementconnectivity(pos1,:); 66 66 pos=find(connectedtowater); connectedtowater(pos)=elementonland(connectedtowater(pos)); 67 67 connectedtowatersum=sum(connectedtowater,2); … … 106 106 107 107 %Get current connectivity 108 elementconnectivity=md.elementconnectivity;108 mesh.elementconnectivity=md.mesh.elementconnectivity; 109 109 110 110 %put 0 for elements on water 111 pos=find( elementconnectivity);112 elementconnectivity(pos)=elementconnectivity(pos).*(~elementonwater(elementconnectivity(pos)));111 pos=find(mesh.elementconnectivity); 112 mesh.elementconnectivity(pos)=mesh.elementconnectivity(pos).*(~elementonwater(mesh.elementconnectivity(pos))); 113 113 114 114 %put line of ones for elements on water 115 115 pos=find(elementonwater); 116 elementconnectivity(pos,:)=1;% line of ones for elements on water so they won't be considered116 mesh.elementconnectivity(pos,:)=1;% line of ones for elements on water so they won't be considered 117 117 118 118 %resort lines (zeros must be at the last column for findsegments) 119 elementconnectivity=sort(elementconnectivity,2,'descend');119 mesh.elementconnectivity=sort(mesh.elementconnectivity,2,'descend'); 120 120 121 121 %call findsegments to build segment using THIS conectivity 122 md.mesh.segments=findsegments(md,' elementconnectivity',elementconnectivity);122 md.mesh.segments=findsegments(md,'mesh.elementconnectivity',mesh.elementconnectivity); 123 123 124 124 %some final checks: 125 125 %check that no node thinks it's on an ice shelf or ice sheet, and lies actually in the middle of the water. 126 126 nodesgrounded=find(~vertexonwater); 127 lengthconnectivity=size(md. nodeconnectivity,2);128 groundedcounters=md. nodeconnectivity(nodesgrounded,lengthconnectivity);129 groundedconnectivity=md. nodeconnectivity(nodesgrounded,1:lengthconnectivity-1);127 lengthconnectivity=size(md.mesh.nodeconnectivity,2); 128 groundedcounters=md.mesh.nodeconnectivity(nodesgrounded,lengthconnectivity); 129 groundedconnectivity=md.mesh.nodeconnectivity(nodesgrounded,1:lengthconnectivity-1); 130 130 pos=find(groundedconnectivity); 131 131 groundedconnectivity(pos)=elementonwater(groundedconnectivity(pos)); -
issm/trunk/src/m/utils/Mesh/ProfileProjectOntoMesh.m
r4773 r9728 48 48 49 49 %now, for each node, figure out which element it belongs to. 50 node_in_element=NodeInElement(newx,newy,md.elements,md.x,md.y,md. nodeconnectivity);50 node_in_element=NodeInElement(newx,newy,md.elements,md.x,md.y,md.mesh.nodeconnectivity); 51 51 52 52 % eliminate nodes that don't fall in any element -
issm/trunk/src/m/utils/Mesh/squaremesh.m
r9725 r9728 72 72 73 73 %Now, build the connectivity tables for this mesh. 74 md. nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);75 md. elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);74 md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices); 75 md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity); 76 76 77 77 %plug other field -
issm/trunk/template
r9725 r9728 8 8 edges 9 9 10 uppernodes11 upperelements12 lowerelements13 lowernodes14 15 10 elements2d 16 11 x2d … … 21 16 nodeonbed 22 17 nodeonsurface 23 24 nodeconnectivity25 elementconnectivity26 18 }}} 27 19
Note:
See TracChangeset
for help on using the changeset viewer.