Changeset 9736
- Timestamp:
- 09/09/11 15:47:56 (14 years ago)
- Location:
- issm/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/model/mesh/meshadaptation.m
r9734 r9736 92 92 disp(sprintf(' initial number of element: %i', md.mesh.numberofelements)) 93 93 md2=meshrefine(md,full(metric)); 94 disp(sprintf(' new number of elements: %i', md2. numberofelements))94 disp(sprintf(' new number of elements: %i', md2.mesh.numberofelements)) -
issm/trunk/src/m/model/mesh/rifts/meshaddrifts.m
r9734 r9736 35 35 36 36 %create domain of md2 model: 37 md2. segments=contourenvelope(md2,'Meshaddrifts.Contour.exp');38 domain_index=md2. segments(1,1:2);37 md2.mesh.segments=contourenvelope(md2,'Meshaddrifts.Contour.exp'); 38 domain_index=md2.mesh.segments(1,1:2); 39 39 while (domain_index(end)~=domain_index(1)), 40 pos=find(md2. segments(:,1)==domain_index(end));41 domain_index(end+1)=md2. segments(pos,2);40 pos=find(md2.mesh.segments(:,1)==domain_index(end)); 41 domain_index(end+1)=md2.mesh.segments(pos,2); 42 42 end 43 43 44 domain.x=md2. x(domain_index);45 domain.y=md2. y(domain_index);44 domain.x=md2.mesh.x(domain_index); 45 domain.y=md2.mesh.y(domain_index); 46 46 domain.name='Meshaddrifts.Domain.exp'; 47 47 domain.density=1; … … 57 57 %plug md2 mesh into md mesh: 58 58 [md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,md.mesh.numberofelements,md.mesh.numberofvertices,elconv,nodeconv,elconv2,nodeconv2]=meshplug(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,... 59 md2.mesh.elements,md2. x,md2.y,md2.z,md2.extractednodes,md2.extractedelements,domain_index);59 md2.mesh.elements,md2.mesh.x,md2.mesh.y,md2.mesh.z,md2.extractednodes,md2.extractedelements,domain_index); 60 60 61 61 %update md2 rifts using elconv and nodeconv, and plug them into md: -
issm/trunk/src/m/model/modelextract.m
r9733 r9736 39 39 spc_elem=find(~flag_elem); 40 40 spc_node=sort(unique(md1.mesh.elements(spc_elem,:))); 41 flag=ones(md1. numberofnodes,1);41 flag=ones(md1.mesh.numberofvertices,1); 42 42 flag(spc_node)=0; 43 43 pos=find(sum(flag(md1.mesh.elements),2)==0); … … 49 49 50 50 %keep track of some fields 51 numberof nodes1=md1.numberofnodes;52 numberofelements1=md1. numberofelements;53 numberof nodes2=length(pos_node);51 numberofvertices1=md1.mesh.numberofvertices; 52 numberofelements1=md1.mesh.numberofelements; 53 numberofvertices2=length(pos_node); 54 54 numberofelements2=length(pos_elem); 55 flag_node=zeros(numberof nodes1,1);55 flag_node=zeros(numberofvertices1,1); 56 56 flag_node(pos_node)=1; 57 57 … … 59 59 Pelem=zeros(numberofelements1,1); 60 60 Pelem(pos_elem)=[1:numberofelements2]'; 61 Pnode=zeros(numberof nodes1,1);62 Pnode(pos_node)=[1:numberof nodes2]';61 Pnode=zeros(numberofvertices1,1); 62 Pnode(pos_node)=[1:numberofvertices2]'; 63 63 64 64 %renumber the elements (some node won't exist anymore) … … 68 68 elements_2(:,2)=Pnode(elements_2(:,2)); 69 69 elements_2(:,3)=Pnode(elements_2(:,3)); 70 if md1. dim==3,70 if md1.mesh.dimension==3, 71 71 elements_2(:,4)=Pnode(elements_2(:,4)); 72 72 elements_2(:,5)=Pnode(elements_2(:,5)); … … 94 94 fieldsize=size(field); 95 95 %size = number of nodes * n 96 if fieldsize(1)==numberof nodes196 if fieldsize(1)==numberofvertices1 97 97 md2.(model_fields{i}).(object_fields{j})=field(pos_node,:); 98 elseif (fieldsize(1)==numberof nodes1+1)98 elseif (fieldsize(1)==numberofvertices1+1) 99 99 md2.(model_fields(i)).(object_fields{j})=[field(pos_node,:); field(end,:)]; 100 100 %size = number of elements * n … … 105 105 else 106 106 %size = number of nodes * n 107 if fieldsize(1)==numberof nodes1107 if fieldsize(1)==numberofvertices1 108 108 md2.(model_fields{i})=field(pos_node,:); 109 elseif (fieldsize(1)==numberof nodes1+1)109 elseif (fieldsize(1)==numberofvertices1+1) 110 110 md2.(model_fields(i))=[field(pos_node,:); field(end,:)]; 111 111 %size = number of elements * n … … 119 119 120 120 %Mesh 121 md2. numberofelements=numberofelements2;122 md2. numberofnodes=numberofnodes2;121 md2.mesh.numberofelements=numberofelements2; 122 md2.mesh.numberofvertices=numberofvertices2; 123 123 md2.mesh.elements=elements_2; 124 124 125 125 %mesh.uppervertex mesh.lowervertex 126 if md1. dim==3126 if md1.mesh.dimension==3 127 127 md2.mesh.uppervertex=md1.mesh.uppervertex(pos_node); 128 128 pos=find(~isnan(md2.mesh.uppervertex)); … … 143 143 144 144 %Initial 2d mesh 145 if md1. dim==3146 flag_elem_2d=flag_elem(1:md1. numberofelements2d);145 if md1.mesh.dimension==3 146 flag_elem_2d=flag_elem(1:md1.mesh.numberofelements2d); 147 147 pos_elem_2d=find(flag_elem_2d); 148 flag_node_2d=flag_node(1:md1. numberofnodes2d);148 flag_node_2d=flag_node(1:md1.mesh.numberofvertices2d); 149 149 pos_node_2d=find(flag_node_2d); 150 150 151 md2. numberofelements2d=length(pos_elem_2d);152 md2. numberofnodes2d=length(pos_node_2d);151 md2.mesh.numberofelements2d=length(pos_elem_2d); 152 md2.mesh.numberofvertices2d=length(pos_node_2d); 153 153 md2.mesh.elements2d=md1.mesh.elements2d(pos_elem_2d,:); 154 154 md2.mesh.elements2d(:,1)=Pnode(md2.mesh.elements2d(:,1)); … … 156 156 md2.mesh.elements2d(:,3)=Pnode(md2.mesh.elements2d(:,3)); 157 157 158 md2. x2d=md1.x(pos_node_2d);159 md2. y2d=md1.y(pos_node_2d);158 md2.mesh.x2d=md1.mesh.x(pos_node_2d); 159 md2.mesh.y2d=md1.mesh.y(pos_node_2d); 160 160 end 161 161 … … 202 202 203 203 %recreate segments 204 if md1. dim==2205 md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2. numberofnodes);204 if md1.mesh.dimension==2 205 md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices); 206 206 md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity); 207 md2. segments=contourenvelope(md2);208 md2.mesh.vertexonboundary=zeros(numberof nodes2,1); md2.nodeonboundary(md2.segments(:,1:2))=1;207 md2.mesh.segments=contourenvelope(md2); 208 md2.mesh.vertexonboundary=zeros(numberofvertices2,1); md2.mesh.vertexonboundary(md2.mesh.segments(:,1:2))=1; 209 209 end 210 210 … … 239 239 md2.diagnostic.icefront(:,2)=Pnode(md1.diagnostic.icefront(:,2)); 240 240 md2.diagnostic.icefront(:,end-1)=Pelem(md1.diagnostic.icefront(:,end-1)); 241 if md1. dim==3241 if md1.mesh.dimension==3 242 242 md2.diagnostic.icefront(:,3)=Pnode(md1.diagnostic.icefront(:,3)); 243 243 md2.diagnostic.icefront(:,4)=Pnode(md1.diagnostic.icefront(:,4)); … … 255 255 for j=1:length(solutionsubfields), 256 256 field=md1.results.(solutionfields(i)).(solutionsubfields(j)); 257 if length(field)==numberof nodes1,257 if length(field)==numberofvertices1, 258 258 md2.results.(solutionfields(i)).(solutionsubfields(j))=field(pos_node); 259 259 elseif length(field)==numberofelements1, -
issm/trunk/test/NightlyRun/test527.m
r9734 r9736 18 18 md.miscellaneous.dummy=metric; 19 19 md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000,'hmax',20000,'gradation',3,'geometricalmetric',1); 20 x3=md2. x;21 y3=md2. y;20 x3=md2.mesh.x; 21 y3=md2.mesh.y; 22 22 23 23 %refine existing mesh 2 24 24 md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000,'hmax',20000,'gradation',3,'geometricalmetric',1,'anisomax',1); 25 x4=md2. x;26 y4=md2. y;25 x4=md2.mesh.x; 26 y4=md2.mesh.y; 27 27 28 28 %refine existing mesh 3 … … 30 30 hVertices(find(md.mesh.vertexonboundary))=500; 31 31 md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000,'hmax',20000,'gradation',3,'geometricalmetric',1,'anisomax',1,'hVertices',hVertices); 32 x5=md2. x;33 y5=md2. y;32 x5=md2.mesh.x; 33 y5=md2.mesh.y; 34 34 35 35 %refine existing mesh 4 36 36 md2=bamg(md,'field',md.inversion.vy_obs,'hmin',1000,'hmax',20000,'gradation',3,'geometricalmetric',1,'Hessiantype',0,'err',1); 37 x6=md2. x;38 y6=md2. y;37 x6=md2.mesh.x; 38 y6=md2.mesh.y; 39 39 40 40 %refine existing mesh 5 41 41 md2=bamg(md,'field',[md.inversion.vy_obs md.geometry.thickness],'hmin',1000,'hmax',20000,'gradation',3,'geometricalmetric',1,'Hessiantype',1,'err',[10 100]); 42 x7=md2. x;43 y7=md2. y;42 x7=md2.mesh.x; 43 y7=md2.mesh.y; 44 44 45 45 %Fields and tolerances to track changes
Note:
See TracChangeset
for help on using the changeset viewer.