[18757] | 1 | from fielddisplay import fielddisplay
|
---|
[19048] | 2 | from project3d import project3d
|
---|
[18757] | 3 | from checkfield import checkfield
|
---|
| 4 | from WriteData import WriteData
|
---|
| 5 |
|
---|
| 6 | class calving(object):
|
---|
| 7 | """
|
---|
| 8 | CALVING class definition
|
---|
| 9 |
|
---|
| 10 | Usage:
|
---|
| 11 | calving=calving();
|
---|
| 12 | """
|
---|
| 13 |
|
---|
| 14 | def __init__(self): # {{{
|
---|
| 15 |
|
---|
[19024] | 16 | self.calvingrate = float('NaN')
|
---|
| 17 | self.meltingrate = float('NaN')
|
---|
| 18 |
|
---|
[18757] | 19 | #set defaults
|
---|
| 20 | self.setdefaultparameters()
|
---|
| 21 |
|
---|
| 22 | #}}}
|
---|
| 23 | def __repr__(self): # {{{
|
---|
| 24 | string=' Calving parameters:'
|
---|
| 25 | string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]'))
|
---|
[18816] | 26 | string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
|
---|
[18757] | 27 |
|
---|
| 28 | return string
|
---|
| 29 | #}}}
|
---|
[19048] | 30 | def extrude(self,md): # {{{
|
---|
| 31 | self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node')
|
---|
| 32 | self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
|
---|
| 33 | return self
|
---|
| 34 | #}}}
|
---|
[18757] | 35 | def setdefaultparameters(self): # {{{
|
---|
| 36 |
|
---|
| 37 | return self
|
---|
| 38 | #}}}
|
---|
| 39 | def checkconsistency(self,md,solution,analyses): # {{{
|
---|
| 40 |
|
---|
| 41 | #Early return
|
---|
[21341] | 42 | if (solution!='TransientSolution') or (not md.transient.ismovingfront):
|
---|
[18757] | 43 | return md
|
---|
| 44 |
|
---|
[20500] | 45 | md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
|
---|
| 46 | md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
|
---|
[18955] | 47 |
|
---|
[18757] | 48 | return md
|
---|
| 49 | # }}}
|
---|
[21341] | 50 | def marshall(self,prefix,md,fid): # {{{
|
---|
[18757] | 51 |
|
---|
[21341] | 52 | yts=md.constants.yts
|
---|
[18757] | 53 |
|
---|
[21341] | 54 | WriteData(fid,prefix,'name','md.calving.law','data',1,'format','Integer');
|
---|
| 55 | WriteData(fid,prefix,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
|
---|
| 56 | WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
|
---|
[18757] | 57 | # }}}
|
---|