Changeset 17558
- Timestamp:
- 03/27/14 08:34:27 (11 years ago)
- Location:
- issm/trunk-jpl/src/m
- Files:
-
- 1 deleted
- 22 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/mesh2d.py
r17480 r17558 4 4 from checkfield import checkfield 5 5 import MatlabFuncs as m 6 from WriteData import WriteData 6 7 7 8 class mesh2d(object): … … 85 86 md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices]) 86 87 md = checkfield(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices]) 87 md = checkfield(md,'fieldname','mesh.z','NaN',1,'size',[md.mesh.numberofvertices])88 88 md = checkfield(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1)) 89 89 md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3]) -
issm/trunk-jpl/src/m/classes/mesh3dprisms.m
r17556 r17558 46 46 case 0 47 47 obj=setdefaultparameters(obj); 48 case 1 49 self=mesh3dprisms(); 50 object=varargin{1}; 51 fields=fieldnames(object); 52 for i=1:length(fields) 53 field=fields{i}; 54 if ismember(field,properties('mesh3dprisms')), 55 self.(field)=object.(field); 56 end 57 end 48 58 otherwise 49 59 error('constructor not supported'); -
issm/trunk-jpl/src/m/classes/mesh3dprisms.py
r17556 r17558 4 4 from checkfield import * 5 5 from MatlabFuncs import * 6 from WriteData import WriteData 6 7 7 8 class mesh3dprisms(object): -
issm/trunk-jpl/src/m/classes/model.m
r17523 r17558 110 110 md.surfaceforcings=SMB(); 111 111 md.surfaceforcings.mass_balance=mass_balance; 112 end 113 %2014 March 26th 114 if isa(md.mesh,'mesh'), 115 if(md.mesh.dimension==2), 116 md.mesh=mesh2d(md.mesh); 117 else 118 md.mesh=mesh3dprisms(md.mesh); 119 end 112 120 end 113 121 end% }}} … … 143 151 144 152 %Check that the model is really a 3d model 145 if ~ md.mesh.dimension==3,153 if ~strcmp(md.mesh.meshtype(),'3D'), 146 154 error('collapse error message: only 3d mesh can be collapsed') 147 155 end … … 179 187 if ~isnan(md.gia.lithosphere_thickness), md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1); end 180 188 181 %bedinfo and surface info182 md.mesh.elementonbed=ones(md.mesh.numberofelements2d,1);183 md.mesh.elementonsurface=ones(md.mesh.numberofelements2d,1);184 md.mesh.vertexonbed=ones(md.mesh.numberofvertices2d,1);185 md.mesh.vertexonsurface=ones(md.mesh.numberofvertices2d,1);186 187 189 %elementstype 188 190 if ~isnan(md.flowequation.element_equation) … … 237 239 238 240 %Initialize with the 2d mesh 241 md.mesh=mesh2d(); 239 242 md.mesh.x=md.mesh.x2d; 240 243 md.mesh.y=md.mesh.y2d; … … 258 261 md.mesh.numberoflayers=0; 259 262 260 %Update mesh type261 md.mesh.dimension=2;262 263 end % }}} 263 264 function md2 = extract(md,area) % {{{ … … 327 328 elements_2(:,2)=Pnode(elements_2(:,2)); 328 329 elements_2(:,3)=Pnode(elements_2(:,3)); 329 if md1.mesh.dimension==3,330 if isa(md1.mesh,'mesh3dprisms'), 330 331 elements_2(:,4)=Pnode(elements_2(:,4)); 331 332 elements_2(:,5)=Pnode(elements_2(:,5)); … … 383 384 384 385 %mesh.uppervertex mesh.lowervertex 385 if md1.mesh.dimension==3386 if isa(md1.mesh,'mesh3dprisms'), 386 387 md2.mesh.uppervertex=md1.mesh.uppervertex(pos_node); 387 388 pos=find(~isnan(md2.mesh.uppervertex)); … … 402 403 403 404 %Initial 2d mesh 404 if md1.mesh.dimension==3405 if isa(md1.mesh,'mesh3dprisms'), 405 406 flag_elem_2d=flag_elem(1:md1.mesh.numberofelements2d); 406 407 pos_elem_2d=find(flag_elem_2d); … … 461 462 462 463 %recreate segments 463 if md1.mesh.dimension==2464 if isa(md1.mesh,'mesh2d'), 464 465 md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices); 465 466 md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity); … … 600 601 error('number of layers should be at least 2'); 601 602 end 602 if md.mesh.dimension==3,603 if strcmp(md.mesh.meshtype(),'3D') 603 604 error('Cannot extrude a 3d mesh (extrude cannot be called more than once)'); 604 605 end 605 606 606 607 %Initialize with the 2d mesh 608 mesh2d = md.mesh; 609 md.mesh=mesh3dprisms(); 610 md.mesh.x = mesh2d.x; 611 md.mesh.y = mesh2d.y; 612 md.mesh.elements = mesh2d.elements; 613 md.mesh.numberofelements = mesh2d.numberofelements; 614 md.mesh.numberofvertices = mesh2d.numberofvertices; 615 616 md.mesh.lat = mesh2d.lat; 617 md.mesh.long = mesh2d.long; 618 md.mesh.hemisphere = mesh2d.hemisphere; 619 620 md.mesh.vertexonboundary = mesh2d.vertexonboundary; 621 md.mesh.vertexconnectivity = mesh2d.vertexconnectivity; 622 md.mesh.elementconnectivity = mesh2d.elementconnectivity; 623 md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity; 624 625 md.mesh.extractedvertices = mesh2d.extractedvertices; 626 md.mesh.extractedelements = mesh2d.extractedelements; 627 607 628 x3d=[]; 608 629 y3d=[]; … … 649 670 md.mesh.numberofelements2d=md.mesh.numberofelements; 650 671 md.mesh.numberofvertices2d=md.mesh.numberofvertices; 651 652 %Update mesh type653 md.mesh.dimension=3;654 672 655 673 %Build global 3d mesh … … 906 924 if isfield(structmd,'segments'), md.mesh.segments=structmd.segments; end 907 925 if isfield(structmd,'segmentmarkers'), md.mesh.segmentmarkers=structmd.segmentmarkers; end 908 if isfield(structmd,'dim'), md.mesh.dimension=structmd.dim; end909 926 if isfield(structmd,'numlayers'), md.mesh.numberoflayers=structmd.numlayers; end 910 927 if isfield(structmd,'numberofelements'), md.mesh.numberofelements=structmd.numberofelements; end … … 940 957 if isfield(structmd,'part'); md.qmu.partition=structmd.part; end 941 958 942 %Field changes943 if (isfield(structmd,'type') & ischar(structmd.type)),944 if strcmpi(structmd.type,'2d'), md.mesh.dimension=2; end945 if strcmpi(structmd.type,'3d'), md.mesh.dimension=3; end946 end947 959 if isnumeric(md.verbose), 948 960 md.verbose=verbose; … … 1066 1078 1067 1079 %initialize subclasses 1068 md.mesh = mesh ();1080 md.mesh = mesh2d(); 1069 1081 md.mask = mask(); 1070 1082 md.constants = constants(); -
issm/trunk-jpl/src/m/classes/model.py
r17488 r17558 4 4 import sys 5 5 from mesh import mesh 6 from mesh3dprisms import mesh3dprisms 6 7 from mask import mask 7 8 from geometry import geometry … … 239 240 elements_2[:,1]=Pnode[elements_2[:,1]-1] 240 241 elements_2[:,2]=Pnode[elements_2[:,2]-1] 241 if md1.mesh. dimension==3:242 if md1.mesh.__class__.__name__=='mesh3dprisms': 242 243 elements_2[:,3]=Pnode[elements_2[:,3]-1] 243 244 elements_2[:,4]=Pnode[elements_2[:,4]-1] … … 291 292 292 293 #mesh.uppervertex mesh.lowervertex 293 if md1.mesh. dimension==3:294 if md1.mesh.__class__.__name__=='mesh3dprisms': 294 295 md2.mesh.uppervertex=md1.mesh.uppervertex[pos_node] 295 296 pos=numpy.nonzero(numpy.logical_not(md2.mesh.uppervertex==-1))[0] … … 309 310 310 311 #Initial 2d mesh 311 if md1.mesh. dimension==3:312 if md1.mesh.__class__.__name__=='mesh3dprisms': 312 313 flag_elem_2d=flag_elem[numpy.arange(0,md1.mesh.numberofelements2d)] 313 314 pos_elem_2d=numpy.nonzero(flag_elem_2d)[0] … … 362 363 363 364 #recreate segments 364 if md1.mesh. dimension==2:365 if md1.mesh.__class__.__name__=='mesh2d': 365 366 [md2.mesh.vertexconnectivity]=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices) 366 367 [md2.mesh.elementconnectivity]=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity) … … 498 499 if numlayers<2: 499 500 raise TypeError("number of layers should be at least 2") 500 if md.mesh. dimension==3:501 if md.mesh.__class__.__name__=='mesh3dprisms': 501 502 raise TypeError("Cannot extrude a 3d mesh (extrude cannot be called more than once)") 502 503 503 504 #Initialize with the 2d mesh 505 mesh2d = md.mesh 506 md.mesh=mesh3dprisms() 507 md.mesh.x = mesh2d.x 508 md.mesh.y = mesh2d.y 509 md.mesh.elements = mesh2d.elements 510 md.mesh.numberofelements = mesh2d.numberofelements 511 md.mesh.numberofvertices = mesh2d.numberofvertices 512 513 md.mesh.lat = mesh2d.lat 514 md.mesh.long = mesh2d.long 515 md.mesh.hemisphere = mesh2d.hemisphere 516 517 md.mesh.vertexonboundary = mesh2d.vertexonboundary 518 md.mesh.vertexconnectivity = mesh2d.vertexconnectivity 519 md.mesh.elementconnectivity = mesh2d.elementconnectivity 520 md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity 521 522 md.mesh.extractedvertices = mesh2d.extractedvertices 523 md.mesh.extractedelements = mesh2d.extractedelements 524 504 525 x3d=numpy.empty((0)) 505 526 y3d=numpy.empty((0)) … … 544 565 md.mesh.numberofelements2d=md.mesh.numberofelements 545 566 md.mesh.numberofvertices2d=md.mesh.numberofvertices 546 547 #Update mesh type548 md.mesh.dimension=3549 567 550 568 #Build global 3d mesh -
issm/trunk-jpl/src/m/classes/oldclasses/mesh.m
r17553 r17558 1 %MESH class definition2 %3 % Usage:4 % mesh=mesh();5 6 1 classdef mesh 7 2 properties (SetAccess=public) … … 46 41 extractedelements = NaN 47 42 end 48 methods (Static)49 function obj = loadobj(obj) % {{{50 % This function is directly called by matlab when a model object is51 % loaded. Update old properties here52 53 %2012 June 28th54 if numel(obj.edges)>1 & any(isnan(obj.edges(:)))55 disp('Update model edges from previous version');56 obj.edges(isnan(obj.edges))=-1;57 end58 59 end% }}}60 end61 methods62 function obj = mesh(varargin) % {{{63 switch nargin64 case 065 obj=setdefaultparameters(obj);66 otherwise67 error('constructor not supported');68 end69 end % }}}70 function obj = setdefaultparameters(obj) % {{{71 72 %the connectivity is the averaged number of nodes linked to a73 %given node through an edge. This connectivity is used to initially74 %allocate memory to the stiffness matrix. A value of 16 seems to75 %give a good memory/time ration. This value can be checked in76 %trunk/test/Miscellaneous/runme.m77 obj.average_vertex_connectivity=25;78 end % }}}79 function md = checkconsistency(obj,md,solution,analyses) % {{{80 81 md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);82 md = checkfield(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices 1]);83 md = checkfield(md,'fieldname','mesh.z','NaN',1,'size',[md.mesh.numberofvertices 1]);84 md = checkfield(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',1:md.mesh.numberofvertices);85 if(md.mesh.dimension==2),86 md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);87 else88 md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 6]);89 end90 if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));91 md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');92 end93 md = checkfield(md,'fieldname','mesh.dimension','values',[2 3]);94 md = checkfield(md,'fieldname','mesh.numberoflayers','>=',0);95 md = checkfield(md,'fieldname','mesh.numberofelements','>',0);96 md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);97 %no checks for numberofedges lat long and hemisphere98 md = checkfield(md,'fieldname','mesh.elementonbed','size',[md.mesh.numberofelements 1],'values',[0 1]);99 md = checkfield(md,'fieldname','mesh.elementonsurface','size',[md.mesh.numberofelements 1],'values',[0 1]);100 md = checkfield(md,'fieldname','mesh.vertexonbed','size',[md.mesh.numberofvertices 1],'values',[0 1]);101 md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices 1],'values',[0 1]);102 if (md.mesh.dimension==3),103 md = checkfield(md,'fieldname','mesh.z','>=',md.geometry.bed-10^-10,'message','''mesh.z'' lower than bedrock');104 md = checkfield(md,'fieldname','mesh.z','<=',md.geometry.surface+10^-10,'message','''mesh.z'' higher than surface elevation');105 end106 if (md.mesh.dimension==2),107 md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');108 else109 md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message','''mesh.average_vertex_connectivity'' should be at least 24 in 3d');110 end111 112 %Solution specific checks113 switch(solution),114 case MasstransportSolutionEnum(),115 if md.masstransport.stabilization==3,116 md = checkfield(md,'fieldname','mesh.dimension','values',2,'message','Discontinuous Galerkin only supported for 2d meshes');117 end118 case BalancethicknessSolutionEnum(),119 if md.balancethickness.stabilization==3,120 md = checkfield(md,'fieldname','mesh.dimension','values',2,'message','Discontinuous Galerkin only supported for 2d meshes');121 end122 case TransientSolutionEnum(),123 if md.transient.ismasstransport & md.masstransport.stabilization==3,124 md = checkfield(md,'fieldname','mesh.dimension','values',2,'message','Discontinuous Galerkin only supported for 2d meshes');125 end126 case ThermalSolutionEnum(),127 md = checkfield(md,'fieldname','mesh.dimension','values',3,'message','thermal solution only supported on 3d meshes');128 end129 end % }}}130 function disp(obj) % {{{131 disp(sprintf(' Mesh:'));132 133 if obj.dimension==3,134 disp(sprintf('\n Elements and vertices of the original 2d mesh:'));135 fielddisplay(obj,'numberofelements2d','number of elements');136 fielddisplay(obj,'numberofvertices2d','number of vertices');137 fielddisplay(obj,'elements2d','vertex indices of the mesh elements');138 fielddisplay(obj,'x2d','vertices x coordinate [m]');139 fielddisplay(obj,'y2d','vertices y coordinate [m]');140 141 disp(sprintf('\n Elements and vertices of the extruded 3d mesh:'));142 else143 disp(sprintf('\n Elements and vertices:'));144 end145 fielddisplay(obj,'numberofelements','number of elements');146 fielddisplay(obj,'numberofvertices','number of vertices');147 fielddisplay(obj,'elements','vertex indices of the mesh elements');148 fielddisplay(obj,'x','vertices x coordinate [m]');149 fielddisplay(obj,'y','vertices y coordinate [m]');150 fielddisplay(obj,'z','vertices z coordinate [m]');151 fielddisplay(obj,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');152 fielddisplay(obj,'numberofedges','number of edges of the 2d mesh');153 154 disp(sprintf('\n Properties:'));155 fielddisplay(obj,'dimension','mesh dimension');156 fielddisplay(obj,'numberoflayers','number of extrusion layers');157 fielddisplay(obj,'vertexonbed','lower vertices flags list');158 fielddisplay(obj,'elementonbed','lower elements flags list');159 fielddisplay(obj,'vertexonsurface','upper vertices flags list');160 fielddisplay(obj,'elementonsurface','upper elements flags list');161 fielddisplay(obj,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');162 fielddisplay(obj,'upperelements','upper element list (NaN for element on the upper layer)');163 fielddisplay(obj,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');164 fielddisplay(obj,'lowerelements','lower element list (NaN for element on the lower layer');165 fielddisplay(obj,'vertexonboundary','vertices on the boundary of the domain flag list');166 167 fielddisplay(obj,'segments','edges on domain boundary (vertex1 vertex2 element)');168 fielddisplay(obj,'segmentmarkers','number associated to each segment');169 fielddisplay(obj,'vertexconnectivity','list of vertices connected to vertex_i');170 fielddisplay(obj,'elementconnectivity','list of vertices connected to element_i');171 fielddisplay(obj,'average_vertex_connectivity','average number of vertices connected to one vertex');172 173 disp(sprintf('\n Extracted model:'));174 fielddisplay(obj,'extractedvertices','vertices extracted from the model');175 fielddisplay(obj,'extractedelements','elements extracted from the model');176 177 disp(sprintf('\n Projection:'));178 fielddisplay(obj,'lat','vertices latitude [degrees]');179 fielddisplay(obj,'long','vertices longitude [degrees]');180 fielddisplay(obj,'hemisphere','Indicate hemisphere ''n'' or ''s'' ');181 end % }}}182 function marshall(obj,md,fid) % {{{183 WriteData(fid,'enum',MeshTypeEnum(),'data',StringToEnum(['Mesh' meshtype(obj)]),'format','Integer');184 WriteData(fid,'object',obj,'fieldname','x','format','DoubleMat','mattype',1);185 WriteData(fid,'object',obj,'fieldname','y','format','DoubleMat','mattype',1);186 WriteData(fid,'object',obj,'fieldname','z','format','DoubleMat','mattype',1);187 WriteData(fid,'object',obj,'fieldname','elements','format','DoubleMat','mattype',2);188 WriteData(fid,'object',obj,'fieldname','numberoflayers','format','Integer');189 WriteData(fid,'object',obj,'fieldname','numberofelements','format','Integer');190 WriteData(fid,'object',obj,'fieldname','numberofvertices','format','Integer');191 WriteData(fid,'object',obj,'fieldname','elementonbed','format','BooleanMat','mattype',2);192 WriteData(fid,'object',obj,'fieldname','elementonsurface','format','BooleanMat','mattype',2);193 WriteData(fid,'object',obj,'fieldname','vertexonbed','format','BooleanMat','mattype',1);194 WriteData(fid,'object',obj,'fieldname','vertexonsurface','format','BooleanMat','mattype',1);195 WriteData(fid,'object',obj,'fieldname','lowerelements','format','DoubleMat','mattype',2);196 WriteData(fid,'object',obj,'fieldname','upperelements','format','DoubleMat','mattype',2);197 WriteData(fid,'object',obj,'fieldname','average_vertex_connectivity','format','Integer');198 WriteData(fid,'object',obj,'fieldname','elements2d','format','DoubleMat','mattype',3);199 WriteData(fid,'object',obj,'fieldname','numberofvertices2d','format','Integer');200 WriteData(fid,'object',obj,'fieldname','numberofelements2d','format','Integer');201 end % }}}202 function type = meshtype(obj) % {{{203 if obj.dimension==2,204 type = '2Dhorizontal';205 else206 type = '3D';207 end208 end % }}}209 end210 43 end -
issm/trunk-jpl/src/m/mesh/argusmesh.m
r9734 r17558 77 77 78 78 %Finally, use model constructor to build a complete model: 79 md.mesh=mesh2d(); 79 80 md.mesh.elements=elements; 80 81 md.mesh.x=x; 81 82 md.mesh.y=y; 82 md.z=z;83 83 md.mesh.numberofvertices=size(md.mesh.x,1); 84 84 md.mesh.numberofelements=size(md.mesh.elements,1); 85 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1);86 md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);87 md.mesh.elementonbed=ones(md.mesh.numberofelements,1);88 md.mesh.elementonsurface=ones(md.mesh.numberofelements,1);89 md.mesh.dimension=2;90 85 md=addnote(md,notes); 91 86 -
issm/trunk-jpl/src/m/mesh/bamg.m
r16967 r17558 333 333 334 334 if getfieldvalue(options,'vertical',0), 335 md.mesh=mesh2dvertical ;335 md.mesh=mesh2dvertical(); 336 336 md.mesh.x=bamgmesh_out.Vertices(:,1); 337 337 md.mesh.y=bamgmesh_out.Vertices(:,2); … … 350 350 md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1; 351 351 else 352 % plug results onto model352 md.mesh=mesh2d(); 353 353 md.mesh.x=bamgmesh_out.Vertices(:,1); 354 354 md.mesh.y=bamgmesh_out.Vertices(:,2); … … 359 359 360 360 %Fill in rest of fields: 361 md.mesh.dimension=2;362 361 md.mesh.numberofelements=size(md.mesh.elements,1); 363 362 md.mesh.numberofvertices=length(md.mesh.x); 364 363 md.mesh.numberofedges=size(md.mesh.edges,1); 365 md.mesh.z=zeros(md.mesh.numberofvertices,1);366 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1);367 md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);368 md.mesh.elementonbed=ones(md.mesh.numberofelements,1);369 md.mesh.elementonsurface=ones(md.mesh.numberofelements,1);370 364 md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1; 371 365 end 366 367 %Bamg private fields 372 368 md.private.bamg=struct(); 373 369 md.private.bamg.mesh=bamgmesh(bamgmesh_out); … … 375 371 md.mesh.elementconnectivity=md.private.bamg.mesh.ElementConnectivity; 376 372 md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0; 377 378 373 379 374 %Check for orphan -
issm/trunk-jpl/src/m/mesh/bamg.py
r17480 r17558 1 1 import os.path 2 2 import numpy 3 from mesh2d import mesh2d 3 4 from collections import OrderedDict 4 5 from pairoptions import pairoptions … … 320 321 md.private.bamg['mesh']=bamgmesh(bamgmesh_out) 321 322 md.private.bamg['geometry']=bamggeom(bamggeom_out) 323 md.mesh = mesh2d() 322 324 md.mesh.x=bamgmesh_out['Vertices'][:,0].copy() 323 325 md.mesh.y=bamgmesh_out['Vertices'][:,1].copy() … … 328 330 329 331 #Fill in rest of fields: 330 md.mesh.dimension=2331 332 md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0) 332 333 md.mesh.numberofvertices=numpy.size(md.mesh.x) 333 334 md.mesh.numberofedges=numpy.size(md.mesh.edges,axis=0) 334 md.mesh.z=numpy.zeros(md.mesh.numberofvertices)335 md.mesh.vertexonbed=numpy.ones(md.mesh.numberofvertices,bool)336 md.mesh.vertexonsurface=numpy.ones(md.mesh.numberofvertices,bool)337 md.mesh.elementonbed=numpy.ones(md.mesh.numberofelements,bool)338 md.mesh.elementonsurface=numpy.ones(md.mesh.numberofelements,bool)339 335 md.mesh.vertexonboundary=numpy.zeros(md.mesh.numberofvertices,bool) 340 336 md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True -
issm/trunk-jpl/src/m/mesh/meshconvert.m
r16281 r17558 36 36 37 37 %Fill in rest of fields: 38 md.mesh.dimension = 2;39 38 md.mesh.numberofelements = size(md.mesh.elements,1); 40 39 md.mesh.numberofvertices = length(md.mesh.x); 41 40 md.mesh.numberofedges = size(md.mesh.edges,1); 42 md.mesh.z = zeros(md.mesh.numberofvertices,1);43 md.mesh.vertexonbed = ones(md.mesh.numberofvertices,1);44 md.mesh.vertexonsurface = ones(md.mesh.numberofvertices,1);45 md.mesh.elementonbed = ones(md.mesh.numberofelements,1);46 md.mesh.elementonsurface = ones(md.mesh.numberofelements,1);47 41 md.mesh.vertexonboundary = zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2)) = 1; -
issm/trunk-jpl/src/m/mesh/meshconvert.py
r17497 r17558 2 2 from collections import OrderedDict 3 3 from BamgConvertMesh import BamgConvertMesh 4 from mesh2d import mesh2d 4 5 from bamgmesh import bamgmesh 5 6 from bamggeom import bamggeom … … 33 34 md.private.bamg['mesh'] = bamgmesh(bamgmesh_out) 34 35 md.private.bamg['geometry'] = bamggeom(bamggeom_out) 36 md.mesh = mesh2d() 35 37 md.mesh.x = bamgmesh_out['Vertices'][:,0].copy() 36 38 md.mesh.y = bamgmesh_out['Vertices'][:,1].copy() … … 41 43 42 44 #Fill in rest of fields: 43 md.mesh.dimension = 244 45 md.mesh.numberofelements = numpy.size(md.mesh.elements,axis=0) 45 46 md.mesh.numberofvertices = numpy.size(md.mesh.x) 46 47 md.mesh.numberofedges = numpy.size(md.mesh.edges,axis=0) 47 md.mesh.z = numpy.zeros(md.mesh.numberofvertices)48 md.mesh.vertexonbed = numpy.ones(md.mesh.numberofvertices,bool)49 md.mask.vertexonwater = numpy.zeros(md.mesh.numberofvertices,bool)50 md.mesh.vertexonsurface = numpy.ones(md.mesh.numberofvertices,bool)51 md.mesh.elementonbed = numpy.ones(md.mesh.numberofelements,bool)52 md.mesh.elementonsurface = numpy.ones(md.mesh.numberofelements,bool)53 48 md.mesh.vertexonboundary = numpy.zeros(md.mesh.numberofvertices,bool) 54 49 md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True -
issm/trunk-jpl/src/m/mesh/rifts/meshaddrifts.m
r13730 r17558 80 80 %finish up "a la" mesh.h 81 81 md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1; 82 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1);83 md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);84 md.mesh.elementonbed=ones(md.mesh.numberofelements,1);85 md.mesh.elementonsurface=ones(md.mesh.numberofelements,1);86 82 87 83 %Now, build the connectivity tables for this mesh. 88 84 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 89 85 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 90 91 %type of model92 md.mesh.dimension=2; -
issm/trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.m
r13806 r17558 82 82 md.mesh.numberofelements=length(md.mesh.elements); 83 83 md.mesh.numberofvertices=length(md.mesh.x); 84 md.mesh.z=zeros(md.mesh.numberofvertices,1);85 84 md.mesh.vertexonboundary=zeros(length(md.mesh.x),1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1; 86 md.flowequation.element_equation=3*ones(md.mesh.numberofelements,1);87 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1);88 md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);89 md.mesh.elementonbed=ones(md.mesh.numberofelements,1);90 md.mesh.elementonsurface=ones(md.mesh.numberofelements,1);91 85 end 92 86 -
issm/trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py
r17480 r17558 80 80 md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0) 81 81 md.mesh.numberofvertices=numpy.size(md.mesh.x) 82 md.mesh.z=numpy.zeros(md.mesh.numberofvertices)83 82 md.mesh.vertexonboundary=numpy.zeros(numpy.size(md.mesh.x),bool) 84 83 md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True 85 84 md.rifts.numrifts=length(md.rifts.riftstruct) 86 md.flowequation.element_equation=3*numpy.ones(md.mesh.numberofelements,int)87 md.mesh.vertexonbed=numpy.ones(md.mesh.numberofvertices,bool)88 md.mesh.vertexonsurface=numpy.ones(md.mesh.numberofvertices,bool)89 md.mesh.elementonbed=numpy.ones(md.mesh.numberofelements,bool)90 md.mesh.elementonsurface=numpy.ones(md.mesh.numberofelements,bool)91 85 92 86 return md -
issm/trunk-jpl/src/m/mesh/rifts/meshprocessrifts.m
r10992 r17558 34 34 md.mesh.numberofelements=length(md.mesh.elements); 35 35 md.mesh.numberofvertices=length(md.mesh.x); 36 md.mesh.z=zeros(md.mesh.numberofvertices,1);37 36 md.mesh.vertexonboundary=zeros(length(md.mesh.x),1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1; 38 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1);39 md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);40 md.mesh.elementonbed=ones(md.mesh.numberofelements,1);41 md.mesh.elementonsurface=ones(md.mesh.numberofelements,1);42 37 43 38 %get coordinates of rift tips -
issm/trunk-jpl/src/m/mesh/rifts/meshprocessrifts.py
r17497 r17558 35 35 md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0) 36 36 md.mesh.numberofvertices=numpy.size(md.mesh.x) 37 md.mesh.z=numpy.zeros(md.mesh.numberofvertices)38 37 md.mesh.vertexonboundary=numpy.zeros(numpy.size(md.mesh.x),bool) 39 38 md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True 40 md.mesh.vertexonbed=numpy.ones(md.mesh.numberofvertices,bool)41 md.mesh.vertexonsurface=numpy.ones(md.mesh.numberofvertices,bool)42 md.mesh.elementonbed=numpy.ones(md.mesh.numberofelements,bool)43 md.mesh.elementonsurface=numpy.ones(md.mesh.numberofelements,bool)44 39 45 40 #get coordinates of rift tips -
issm/trunk-jpl/src/m/mesh/squaremesh.m
r14092 r17558 55 55 56 56 %plug coordinates and nodes 57 md.mesh=mesh2d(); 57 58 md.mesh.x=x; 58 59 md.mesh.y=y; 59 md.mesh.z=zeros(nods,1);60 60 md.mesh.numberofvertices=nods; 61 61 md.mesh.vertexonboundary=zeros(nods,1);md.mesh.vertexonboundary(segments(:,1:2))=1; 62 md.mesh.vertexonbed=ones(nods,1);63 md.mesh.vertexonsurface=ones(nods,1);64 62 65 63 %plug elements … … 67 65 md.mesh.segments=segments; 68 66 md.mesh.numberofelements=nel; 69 md.mesh.elementonbed=ones(nel,1);70 md.mesh.elementonsurface=ones(nel,1);71 67 72 68 %Now, build the connectivity tables for this mesh. 73 69 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 74 70 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 75 76 %plug other field77 md.mesh.dimension=2; -
issm/trunk-jpl/src/m/mesh/squaremesh.py
r17497 r17558 57 57 58 58 #plug coordinates and nodes 59 md.mesh=mesh2d() 59 60 md.mesh.x=x 60 61 md.mesh.y=y 61 md.mesh.z=numpy.zeros((nods))62 62 md.mesh.numberofvertices=nods 63 63 md.mesh.vertexonboundary=numpy.zeros((nods),bool) 64 64 md.mesh.vertexonboundary[segments[:,0:2]-1]=True 65 md.mesh.vertexonbed=numpy.ones((nods),bool)66 md.mesh.vertexonsurface=numpy.ones((nods),bool)67 65 68 66 #plug elements … … 70 68 md.mesh.segments=segments 71 69 md.mesh.numberofelements=nel 72 md.mesh.elementonbed=numpy.ones((nel),bool)73 md.mesh.elementonsurface=numpy.ones((nel),bool)74 70 75 71 #Now, build the connectivity tables for this mesh. … … 77 73 [md.mesh.elementconnectivity]=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity) 78 74 79 #plug other field80 md.mesh.dimension=281 82 75 return md 83 -
issm/trunk-jpl/src/m/mesh/triangle.m
r17121 r17558 59 59 60 60 %plug into md 61 md.mesh=mesh2d(); 61 62 md.mesh.x=x; 62 63 md.mesh.y=y; … … 68 69 md.mesh.numberofelements=size(md.mesh.elements,1); 69 70 md.mesh.numberofvertices=length(md.mesh.x); 70 md.mesh.z=zeros(md.mesh.numberofvertices,1);71 71 md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1; 72 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1);73 md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);74 md.mesh.elementonbed=ones(md.mesh.numberofelements,1);75 md.mesh.elementonsurface=ones(md.mesh.numberofelements,1);76 72 77 73 %Now, build the connectivity tables for this mesh. 78 74 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 79 75 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 80 81 %type of model82 md.mesh.dimension=2; -
issm/trunk-jpl/src/m/mesh/triangle.py
r17480 r17558 1 1 import numpy 2 from mesh2d import mesh2d 2 3 from TriMesh import TriMesh 3 4 from NodeConnectivity import NodeConnectivity … … 43 44 44 45 #Mesh using TriMesh 46 md.mesh=mesh2d() 45 47 [md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMesh(domainname,riftname,area) 46 48 md.mesh.elements=md.mesh.elements.astype(int) … … 51 53 md.mesh.numberofelements = numpy.size(md.mesh.elements,axis=0) 52 54 md.mesh.numberofvertices = numpy.size(md.mesh.x) 53 md.mesh.z = numpy.zeros(md.mesh.numberofvertices)54 55 md.mesh.vertexonboundary = numpy.zeros(md.mesh.numberofvertices,bool) 55 56 md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True 56 md.mesh.vertexonbed = numpy.ones(md.mesh.numberofvertices,bool)57 md.mesh.vertexonsurface = numpy.ones(md.mesh.numberofvertices,bool)58 md.mesh.elementonbed = numpy.ones(md.mesh.numberofelements,bool)59 md.mesh.elementonsurface = numpy.ones(md.mesh.numberofelements,bool)60 57 61 58 #Now, build the connectivity tables for this mesh. … … 63 60 [md.mesh.elementconnectivity] = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity) 64 61 65 #type of model66 md.mesh.dimension = 2.67 68 62 return md 69 -
issm/trunk-jpl/src/m/mesh/triangle2dvertical.m
r17121 r17558 46 46 47 47 %plug into md 48 md.mesh=mesh2dvertical ;48 md.mesh=mesh2dvertical(); 49 49 md.mesh.x=x; 50 50 md.mesh.z=z; -
issm/trunk-jpl/src/m/parameterization/contourenvelope.m
r15987 r17558 42 42 %get nodes inside profile 43 43 mesh.elementconnectivity=md.mesh.elementconnectivity; 44 if md.mesh.dimension==2;44 if strcmp(md.mesh.meshtype(),'2Dhorizontal'), 45 45 mesh.elements=md.mesh.elements; 46 46 mesh.x=md.mesh.x; -
issm/trunk-jpl/src/m/parameterization/contourenvelope.py
r17497 r17558 46 46 #get nodes inside profile 47 47 mesh.elementconnectivity=copy.deepcopy(md.mesh.elementconnectivity) 48 if m d.mesh.dimension==2:48 if m.strcmp(md.mesh.meshtype(),'2Dhorizontal'): 49 49 mesh.elements=copy.deepcopy(md.mesh.elements) 50 50 mesh.x=copy.deepcopy(md.mesh.x)
Note:
See TracChangeset
for help on using the changeset viewer.