source: issm/trunk-jpl/src/m/classes/mask.py@ 15434

Last change on this file since 15434 was 15434, checked in by Mathieu Morlighem, 12 years ago

BUG: fixed icefrontlevelset problem in python

File size: 2.8 KB
Line 
1from fielddisplay import fielddisplay
2from EnumDefinitions import *
3from checkfield import *
4from WriteData import *
5
6class mask(object):
7 """
8 MASK class definition
9
10 Usage:
11 mask=mask();
12 """
13
14 def __init__(self): # {{{
15 self.elementonfloatingice = float('NaN')
16 self.elementongroundedice = float('NaN')
17 self.elementonwater = float('NaN')
18 self.vertexonfloatingice = float('NaN')
19 self.vertexongroundedice = float('NaN')
20 self.vertexonwater = float('NaN')
21
22 #set defaults
23 self.setdefaultparameters()
24
25 #}}}
26 def __repr__(self): # {{{
27 string=" masks:"
28
29 string="%s\n%s"%(string,fielddisplay(self,"elementonfloatingice","element on floating ice flags list"))
30 string="%s\n%s"%(string,fielddisplay(self,"vertexonfloatingice","vertex on floating ice flags list"))
31 string="%s\n%s"%(string,fielddisplay(self,"elementongroundedice","element on grounded ice list"))
32 string="%s\n%s"%(string,fielddisplay(self,"vertexongroundedice","vertex on grounded ice flags list"))
33 string="%s\n%s"%(string,fielddisplay(self,"elementonwater","element on water flags list"))
34 string="%s\n%s"%(string,fielddisplay(self,"vertexonwater","vertex on water flags list"))
35 return string
36 #}}}
37 def setdefaultparameters(self): # {{{
38 return self
39 #}}}
40 def checkconsistency(self,md,solution,analyses): # {{{
41
42 md = checkfield(md,'mask.elementonfloatingice','size',[md.mesh.numberofelements],'values',[0,1])
43 md = checkfield(md,'mask.elementongroundedice','size',[md.mesh.numberofelements],'values',[0,1])
44 md = checkfield(md,'mask.elementonwater' ,'size',[md.mesh.numberofelements],'values',[0,1])
45 md = checkfield(md,'mask.vertexonfloatingice' ,'size',[md.mesh.numberofvertices],'values',[0,1])
46 md = checkfield(md,'mask.vertexongroundedice' ,'size',[md.mesh.numberofvertices],'values',[0,1])
47 md = checkfield(md,'mask.vertexonwater' ,'size',[md.mesh.numberofvertices],'values',[0,1])
48
49 return md
50 # }}}
51 def marshall(self,md,fid): # {{{
52 WriteData(fid,'object',self,'fieldname','elementonfloatingice','format','BooleanMat','mattype',2)
53 WriteData(fid,'object',self,'fieldname','elementongroundedice','format','BooleanMat','mattype',2)
54 WriteData(fid,'object',self,'fieldname','elementonwater','format','BooleanMat','mattype',2)
55 WriteData(fid,'object',self,'fieldname','vertexonfloatingice','format','DoubleMat','mattype',1)
56 WriteData(fid,'object',self,'fieldname','vertexongroundedice','format','DoubleMat','mattype',1)
57 WriteData(fid,'object',self,'fieldname','vertexonwater','format','DoubleMat','mattype',1)
58 icelevelset=numpy.ones(md.mesh.numberofvertices,float)
59 if numpy.any(numpy.logical_not(numpy.isnan(md.diagnostic.icefront))):
60 pos=md.diagnostic.icefront[:,:-2]
61 icelevelset[pos[:].astype(int)-1]=0;
62 WriteData(fid,'data',icelevelset,'format','DoubleMat','mattype',1,'enum',IcelevelsetEnum())
63 # }}}
Note: See TracBrowser for help on using the repository browser.