Changeset 20279
- Timestamp:
- 03/01/16 20:15:44 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/m/classes/maskpsl.py ¶
r20225 r20279 1 from MatlabFuncs import * 1 import numpy 2 import MatlabFuncs as m 2 3 from model import * 3 4 from EnumDefinitions import * 4 from numpy import *5 5 from fielddisplay import fielddisplay 6 6 from checkfield import checkfield … … 13 13 # maskpsl=maskpsl(); 14 14 def __init__(self,*args): # {{{ 15 self.groundedice_levelset = NaN16 self.ice_levelset = NaN17 self.ocean_levelset = NaN18 self.land_levelset = NaN15 self.groundedice_levelset = float('NaN') 16 self.ice_levelset = float('NaN') 17 self.ocean_levelset = float('NaN') 18 self.land_levelset = float('NaN') 19 19 20 20 if not len(args): … … 57 57 if max(md.mask.ice_levelset)<0: 58 58 print('no ice front provided') 59 60 icefront=sum(md.mask.ice_levelset[md.mesh.elements.astype(int)-1]==0,axis=1) 61 if (amax(icefront)==3 & strcmp(md.mesh.elementtype(),'Tria')) or (amax(icefront==6) & strcmp(md.mesh.elementtype(),'Penta')): 59 60 elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False); 61 icefront=numpy.sum(md.mask.ice_levelset[elements]==0,axis=1) 62 if (max(icefront)==3 & m.strcmp(md.mesh.elementtype(),'Tria')) or (max(icefront==6) & m.strcmp(md.mesh.elementtype(),'Penta')): 62 63 raise RuntimeError('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it') 63 64 … … 78 79 return self 79 80 # }}} 80 81 81 def marshall(self,md,fid): # {{{ 82 82 WriteData(fid,'object',self,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1) … … 87 87 # get mask of vertices of elements with ice 88 88 isice=md.mask.ice_levelset<=0. 89 vlist = zeros(md.mesh.numberofvertices,1) 90 pos=find(sum(isice(md.mesh.elements),2)>0) 91 vlist[md.mesh.elements[pos,:]]=1 89 vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int) 90 91 elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False); 92 pos=numpy.nonzero(numpy.sum(isice[elements],axis=1))[0] 93 vlist[elements[pos,:]-1]=1 92 94 WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1) 93 95
Note:
See TracChangeset
for help on using the changeset viewer.