source: issm/trunk-jpl/src/py3/classes/geometry.py@ 23670

Last change on this file since 23670 was 23670, checked in by bdef, 7 years ago

CHG: python scripts after 2to3 and indentation fix

File size: 2.8 KB
Line 
1from project3d import project3d
2from fielddisplay import fielddisplay
3from checkfield import checkfield
4from WriteData import WriteData
5
6class geometry(object):
7 """
8 GEOMETRY class definition
9
10 Usage:
11 geometry=geometry();
12 """
13
14 def __init__(self): # {{{
15 self.surface = float('NaN')
16 self.thickness = float('NaN')
17 self.base = float('NaN')
18 self.bed = float('NaN')
19 self.hydrostatic_ratio = float('NaN')
20
21 #set defaults
22 self.setdefaultparameters()
23
24 #}}}
25 def __repr__(self): # {{{
26
27 string=" geometry parameters:"
28 string="%s\n%s"%(string,fielddisplay(self,'surface','ice upper surface elevation [m]'))
29 string="%s\n%s"%(string,fielddisplay(self,'thickness','ice thickness [m]'))
30 string="%s\n%s"%(string,fielddisplay(self,'base','ice base elevation [m]'))
31 string="%s\n%s"%(string,fielddisplay(self,'bed','bed elevation [m]'))
32 return string
33 #}}}
34 def extrude(self,md): # {{{
35 self.surface=project3d(md,'vector',self.surface,'type','node')
36 self.thickness=project3d(md,'vector',self.thickness,'type','node')
37 self.hydrostatic_ratio=project3d(md,'vector',self.hydrostatic_ratio,'type','node')
38 self.base=project3d(md,'vector',self.base,'type','node')
39 self.bed=project3d(md,'vector',self.bed,'type','node')
40 return self
41 #}}}
42 def setdefaultparameters(self): # {{{
43 return self
44 #}}}
45 def checkconsistency(self,md,solution,analyses): # {{{
46
47 if (solution=='TransientSolution' and md.transient.isgia) or (solution=='GiaSolution'):
48 md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'>=',0,'timeseries',1)
49 elif solution=='LoveSolution':
50 return
51 else:
52 md = checkfield(md,'fieldname','geometry.surface' ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
53 md = checkfield(md,'fieldname','geometry.base' ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
54 md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0,'timeseries',1)
55 if any(abs(self.thickness-self.surface+self.base)>10**-9):
56 md.checkmessage("equality thickness=surface-base violated")
57 if solution=='TransientSolution' and md.transient.isgroundingline:
58 md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
59
60 return md
61 # }}}
62 def marshall(self,prefix,md,fid): # {{{
63 WriteData(fid,prefix,'object',self,'fieldname','surface','format','DoubleMat','mattype',1)
64 WriteData(fid,prefix,'object',self,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
65 WriteData(fid,prefix,'object',self,'fieldname','base','format','DoubleMat','mattype',1)
66 WriteData(fid,prefix,'object',self,'fieldname','bed','format','DoubleMat','mattype',1)
67 WriteData(fid,prefix,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1)
68 # }}}
Note: See TracBrowser for help on using the repository browser.