source: issm/trunk/src/m/classes/calving.py@ 20500

Last change on this file since 20500 was 20500, checked in by Mathieu Morlighem, 9 years ago

merged trunk-jpl and trunk for revision 20497

File size: 1.8 KB
Line 
1from fielddisplay import fielddisplay
2from project3d import project3d
3from EnumDefinitions import *
4from StringToEnum import StringToEnum
5from checkfield import checkfield
6from WriteData import WriteData
7
8class calving(object):
9 """
10 CALVING class definition
11
12 Usage:
13 calving=calving();
14 """
15
16 def __init__(self): # {{{
17
18 self.calvingrate = float('NaN')
19 self.meltingrate = float('NaN')
20
21 #set defaults
22 self.setdefaultparameters()
23
24 #}}}
25 def __repr__(self): # {{{
26 string=' Calving parameters:'
27 string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]'))
28 string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
29
30 return string
31 #}}}
32 def extrude(self,md): # {{{
33 self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node')
34 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
35 return self
36 #}}}
37 def setdefaultparameters(self): # {{{
38
39 return self
40 #}}}
41 def checkconsistency(self,md,solution,analyses): # {{{
42
43 #Early return
44 if (solution!=TransientSolutionEnum()) or (not md.transient.ismovingfront):
45 return md
46
47 md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
48 md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
49
50 return md
51 # }}}
52 def marshall(self,md,fid): # {{{
53
54 yts=365.*24.*3600.
55
56 WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer');
57 WriteData(fid,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
58 WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
59 # }}}
Note: See TracBrowser for help on using the repository browser.