Changeset 18115


Ignore:
Timestamp:
06/06/14 11:07:37 (11 years ago)
Author:
Mathieu Morlighem
Message:

BUG: test 292.py now running

Location:
issm/trunk-jpl
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/linearbasalforcings.py

    r18111 r18115  
    1313        """
    1414
    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): # {{{
    2116
    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')
    2440
    2541                #}}}
     
    4460        def setdefaultparameters(self): # {{{
    4561
    46                 self.deepwater_melting_rate   = 50
    47                 self.deepwater_elevation      = -800
    48                 self.upperwater_elevation     = -800
     62                self.deepwater_melting_rate   = 50.0
     63                self.deepwater_elevation      = -800.0
     64                self.upperwater_elevation     = -200.0
    4965
    5066                return self
     
    5470                if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
    5571                        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);
    5975
    6076                if BalancethicknessAnalysisEnum() in analyses:
    6177                        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);
    6581
    6682                if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.isthermal):
    6783                        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);
    7187                        md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'forcing',1,'>=',0)
    7288
     
    7692
    7793                yts=365.0*24.0*3600.0
    78                 floatingice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
    7994
    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))
    8299                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)
    83100
     
    86103                WriteData(fid,'data',floatingice_melting_rate,'enum',BasalforcingsFloatingiceMeltingRateEnum(),'format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
    87104                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',BasalforcingsDeelwaterMeltingRateEnum(),'format','Double','scale',1./yts)
     105                WriteData(fid,'object',self,'fieldname','deepwater_melting_rate','enum',BasalforcingsDeepwaterMeltingRateEnum(),'format','Double','scale',1./yts)
    89106                WriteData(fid,'object',self,'fieldname','deepwater_elevation','enum',BasalforcingsDeepwaterElevationEnum(),'format','Double')
    90107                WriteData(fid,'object',self,'fieldname','upperwater_elevation','enum',BasalforcingsUpperwaterElevationEnum(),'format','Double')
  • issm/trunk-jpl/test/NightlyRun/test292.py

    r18110 r18115  
    99from solve import *
    1010from generic import generic
     11from linearbasalforcings import linearbasalforcings
    1112
    1213md=triangle(model(),'../Exp/Square.exp',150000)
Note: See TracChangeset for help on using the changeset viewer.