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

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

CHG: removing elements and vertices on water, which is now included in icelevelset

File size: 2.5 KB
RevLine 
[12038]1from fielddisplay import fielddisplay
[12949]2from EnumDefinitions import *
3from checkfield import *
4from WriteData import *
[12038]5
[12958]6class mask(object):
7 """
8 MASK class definition
9
10 Usage:
11 mask=mask();
12 """
13
[14640]14 def __init__(self): # {{{
[12038]15 self.elementonfloatingice = float('NaN')
16 self.elementongroundedice = float('NaN')
17 self.vertexonfloatingice = float('NaN')
18 self.vertexongroundedice = float('NaN')
[15595]19 self.icelevelset = float('NaN')
[12123]20
21 #set defaults
22 self.setdefaultparameters()
23
[12038]24 #}}}
[14640]25 def __repr__(self): # {{{
[14141]26 string=" masks:"
[12038]27
[12958]28 string="%s\n%s"%(string,fielddisplay(self,"elementonfloatingice","element on floating ice flags list"))
29 string="%s\n%s"%(string,fielddisplay(self,"vertexonfloatingice","vertex on floating ice flags list"))
[13984]30 string="%s\n%s"%(string,fielddisplay(self,"elementongroundedice","element on grounded ice list"))
[12958]31 string="%s\n%s"%(string,fielddisplay(self,"vertexongroundedice","vertex on grounded ice flags list"))
[15595]32 string="%s\n%s"%(string,fielddisplay(self,"icelevelset","presence of ice if > 0, icefront position if = 0, no ice if < 0"))
[12038]33 return string
34 #}}}
[14640]35 def setdefaultparameters(self): # {{{
[12958]36 return self
[12123]37 #}}}
[12949]38 def checkconsistency(self,md,solution,analyses): # {{{
39
40 md = checkfield(md,'mask.elementonfloatingice','size',[md.mesh.numberofelements],'values',[0,1])
41 md = checkfield(md,'mask.elementongroundedice','size',[md.mesh.numberofelements],'values',[0,1])
42 md = checkfield(md,'mask.vertexonfloatingice' ,'size',[md.mesh.numberofvertices],'values',[0,1])
43 md = checkfield(md,'mask.vertexongroundedice' ,'size',[md.mesh.numberofvertices],'values',[0,1])
[15595]44 md = checkfield(md,'mask.icelevelset' ,'size',[md.mesh.numberofvertices])
[15604]45 isice=numpy.array(md.mask.icelevelset>0,int)
[15600]46 totallyicefree=(numpy.sum(isice[md.mesh.elements-1],axis=1)==0).astype(int)
47 if any(totallyicefree):
48 raise TypeError("elements with no ice not implemented yet, each element should have at least one vertex with md.mask.icelevelset > 0")
[12949]49
50 return md
51 # }}}
[15131]52 def marshall(self,md,fid): # {{{
[12949]53 WriteData(fid,'object',self,'fieldname','elementonfloatingice','format','BooleanMat','mattype',2)
54 WriteData(fid,'object',self,'fieldname','elementongroundedice','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)
[15595]57 WriteData(fid,'object',self,'fieldname','icelevelset','format','DoubleMat','mattype',1)
[12949]58 # }}}
Note: See TracBrowser for help on using the repository browser.