Changeset 12612
- Timestamp:
- 07/05/12 15:28:36 (13 years ago)
- Location:
- issm/trunk-jpl/src/m/model
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/model/contourenvelope.m
r9734 r12612 35 35 %Now, build the connectivity tables for this mesh. 36 36 %Computing connectivity 37 if size(md.mesh.vertexconnectivity,1)~=md.mesh.numberofvertices,37 if (size(md.mesh.vertexconnectivity,1)~=md.mesh.numberofvertices & size(md.mesh.vertexconnectivity,1)~=md.mesh.numberofvertices2d), 38 38 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 39 39 end 40 if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements,40 if (size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements & size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements2d), 41 41 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 42 42 end … … 44 44 %get nodes inside profile 45 45 mesh.elementconnectivity=md.mesh.elementconnectivity; 46 if md.mesh.dimension==2; 47 mesh.elements=md.mesh.elements; 48 mesh.x=md.mesh.x; 49 mesh.y=md.mesh.y; 50 mesh.numberofvertices=md.mesh.numberofvertices; 51 mesh.numberofelements=md.mesh.numberofelements; 52 else 53 mesh.elements=md.mesh.elements2d; 54 mesh.x=md.mesh.x2d; 55 mesh.y=md.mesh.y2d; 56 mesh.numberofvertices=md.mesh.numberofvertices2d; 57 mesh.numberofelements=md.mesh.numberofelements2d; 58 end 59 46 60 if nargin==2, 61 47 62 if isfile, 48 63 %get flag list of elements and nodes inside the contour 49 nodein=ContourToMesh(m d.mesh.elements,md.mesh.x,md.mesh.y,file,'node',1);50 elemin=(sum(nodein(m d.mesh.elements),2)==size(md.mesh.elements,2));64 nodein=ContourToMesh(mesh.elements,mesh.x,mesh.y,file,'node',1); 65 elemin=(sum(nodein(mesh.elements),2)==size(mesh.elements,2)); 51 66 %modify element connectivity 52 67 elemout=find(~elemin); … … 55 70 else 56 71 %get flag list of elements and nodes inside the contour 57 nodein=zeros(m d.mesh.numberofvertices,1);58 elemin=zeros(m d.mesh.numberofelements,1);72 nodein=zeros(mesh.numberofvertices,1); 73 elemin=zeros(mesh.numberofelements,1); 59 74 60 75 pos=find(flags); 61 76 elemin(pos)=1; 62 nodein(m d.mesh.elements(pos,:))=1;77 nodein(mesh.elements(pos,:))=1; 63 78 64 79 %modify element connectivity … … 87 102 els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:))); 88 103 if length(els2)>1, 89 flag=intersect(m d.mesh.elements(els2(1),:),md.mesh.elements(els2(2),:));90 nods1=m d.mesh.elements(el1,:);104 flag=intersect(mesh.elements(els2(1),:),mesh.elements(els2(2),:)); 105 nods1=mesh.elements(el1,:); 91 106 nods1(find(nods1==flag))=[]; 92 107 segments(count,:)=[nods1 el1]; 93 108 94 ord1=find(nods1(1)==m d.mesh.elements(el1,:));95 ord2=find(nods1(2)==m d.mesh.elements(el1,:));109 ord1=find(nods1(1)==mesh.elements(el1,:)); 110 ord2=find(nods1(2)==mesh.elements(el1,:)); 96 111 97 112 %swap segment nodes if necessary … … 104 119 count=count+1; 105 120 else 106 nods1=m d.mesh.elements(el1,:);107 flag=setdiff(nods1,m d.mesh.elements(els2,:));121 nods1=mesh.elements(el1,:); 122 flag=setdiff(nods1,mesh.elements(els2,:)); 108 123 for j=1:3, 109 124 nods=nods1; nods(j)=[]; 110 125 if any(ismember(flag,nods)), 111 126 segments(count,:)=[nods el1]; 112 ord1=find(nods(1)==m d.mesh.elements(el1,:));113 ord2=find(nods(2)==m d.mesh.elements(el1,:));127 ord1=find(nods(1)==mesh.elements(el1,:)); 128 ord2=find(nods(2)==mesh.elements(el1,:)); 114 129 if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ), 115 130 temp=segments(count,1); -
issm/trunk-jpl/src/m/model/modelextract.m
r12576 r12612 210 210 md2.mesh.segments=contourenvelope(md2); 211 211 md2.mesh.vertexonboundary=zeros(numberofvertices2,1); md2.mesh.vertexonboundary(md2.mesh.segments(:,1:2))=1; 212 else 213 %First do the connectivity for the contourenvelope in 2d 214 md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements2d,md2.mesh.numberofvertices2d); 215 md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements2d,md2.mesh.vertexconnectivity); 216 md2.mesh.segments=contourenvelope(md2); 217 md2.mesh.vertexonboundary=zeros(numberofvertices2/md2.mesh.numberoflayers,1); md2.mesh.vertexonboundary(md2.mesh.segments(:,1:2))=1; 218 md2.mesh.vertexonboundary=repmat(md2.mesh.vertexonboundary,md2.mesh.numberoflayers,1); 219 %Then do it for 3d as usual 220 md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices); 221 md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity); 212 222 end 213 223
Note:
See TracChangeset
for help on using the changeset viewer.