Changeset 18115
- Timestamp:
- 06/06/14 11:07:37 (11 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/linearbasalforcings.py
r18111 r18115 13 13 """ 14 14 15 def __init__(self): # {{{ 16 self.floatingice_melting_rate = float('NaN') 17 self.deepwater_melting_rate = float('NaN') 18 self.deepwater_elevation = float('NaN') 19 self.upperwater_elevation = float('NaN') 20 self.geothermalflux = float('NaN') 15 def __init__(self,*args): # {{{ 21 16 22 #set defaults 23 self.setdefaultparameters() 17 if not len(args): 18 print 'empty init' 19 self.groundedice_melting_rate = float('NaN') 20 self.deepwater_melting_rate = 0. 21 self.deepwater_elevation = 0. 22 self.upperwater_elevation = 0. 23 self.geothermalflux = float('NaN') 24 25 #set defaults 26 self.setdefaultparameters() 27 elif len(args)==1 and args[0].__module__=='basalforcings': 28 print 'converting basalforings to linearbasalforcings' 29 inv=args[0] 30 self.groundedice_melting_rate = inv.groundedice_melting_rate 31 self.geothermalflux = inv.geothermalflux 32 self.deepwater_melting_rate = 0. 33 self.deepwater_elevation = 0. 34 self.upperwater_elevation = 0. 35 36 #set defaults 37 self.setdefaultparameters() 38 else: 39 raise Exception('constructor not supported') 24 40 25 41 #}}} … … 44 60 def setdefaultparameters(self): # {{{ 45 61 46 self.deepwater_melting_rate = 50 47 self.deepwater_elevation = -800 48 self.upperwater_elevation = - 80062 self.deepwater_melting_rate = 50.0 63 self.deepwater_elevation = -800.0 64 self.upperwater_elevation = -200.0 49 65 50 66 return self … … 54 70 if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.ismasstransport): 55 71 md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'forcing',1) 56 md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0 ,'numel',1);57 md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<', 'basalforcings.upperwater_elevation','numel',1);58 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0 ,'numel',1);72 md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0); 73 md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation); 74 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0); 59 75 60 76 if BalancethicknessAnalysisEnum() in analyses: 61 77 md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices]) 62 md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0 ,'numel',1);63 md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<', 'basalforcings.upperwater_elevation','numel',1);64 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0 ,'numel',1);78 md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0); 79 md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation); 80 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0); 65 81 66 82 if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.isthermal): 67 83 md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'forcing',1) 68 md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0 ,'numel',1);69 md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<', 'basalforcings.upperwater_elevation','numel',1);70 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0 ,'numel',1);84 md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0); 85 md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation); 86 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0); 71 87 md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'forcing',1,'>=',0) 72 88 … … 76 92 77 93 yts=365.0*24.0*3600.0 78 floatingice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))79 94 80 floatingice_melting_rate[numpy.nonzero(md.geometry.base<=md.basalforcings.deepwater_elevation))]=md.basalforcings.deepwater_melting_rate 81 pos=numpy.nonzero(md.geometry.base>md.basalforcings.deepwater_elevation and md.geometry.base<md.basalforcings.upperwater_elevation) 95 floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices,1)) 96 pos=numpy.nonzero(md.geometry.base<=md.basalforcings.deepwater_elevation) 97 floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate 98 pos=numpy.nonzero(numpy.logical_and(md.geometry.base>md.basalforcings.deepwater_elevation,md.geometry.base<md.basalforcings.upperwater_elevation)) 82 99 floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate*(md.geometry.base[pos]-md.basalforcings.upperwater_elevation)/(md.basalforcings.deepwater_elevation-md.basalforcings.upperwater_elevation) 83 100 … … 86 103 WriteData(fid,'data',floatingice_melting_rate,'enum',BasalforcingsFloatingiceMeltingRateEnum(),'format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 87 104 WriteData(fid,'object',self,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1) 88 WriteData(fid,'object',self,'fieldname','deepwater_melting_rate','enum',BasalforcingsDee lwaterMeltingRateEnum(),'format','Double','scale',1./yts)105 WriteData(fid,'object',self,'fieldname','deepwater_melting_rate','enum',BasalforcingsDeepwaterMeltingRateEnum(),'format','Double','scale',1./yts) 89 106 WriteData(fid,'object',self,'fieldname','deepwater_elevation','enum',BasalforcingsDeepwaterElevationEnum(),'format','Double') 90 107 WriteData(fid,'object',self,'fieldname','upperwater_elevation','enum',BasalforcingsUpperwaterElevationEnum(),'format','Double') -
issm/trunk-jpl/test/NightlyRun/test292.py
r18110 r18115 9 9 from solve import * 10 10 from generic import generic 11 from linearbasalforcings import linearbasalforcings 11 12 12 13 md=triangle(model(),'../Exp/Square.exp',150000)
Note:
See TracChangeset
for help on using the changeset viewer.