Changeset 20160


Ignore:
Timestamp:
02/15/16 14:17:44 (9 years ago)
Author:
Eric.Larour
Message:

CHG: new slr python class, mirroring the slr.m class.

Location:
issm/trunk-jpl/src/m/classes
Files:
2 edited

Legend:

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

    r19527 r20160  
    2525from initialization import initialization
    2626from rifts import rifts
     27from slr import slr
    2728from debug import debug
    2829from verbose import verbose
     
    8586                self.initialization   = initialization()
    8687                self.rifts            = rifts()
     88                self.slr              = slr()
    8789
    8890                self.debug            = debug()
     
    129131                        'initialization',\
    130132                        'rifts',\
     133                        'slr',\
    131134                        'debug',\
    132135                        'verbose',\
     
    169172                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
    170173                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
     174                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("slr","[%s,%s]" % ("1x1",obj.slr.__class__.__name__),"slr forcings"))
    171175                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof)"))
    172176                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
  • issm/trunk-jpl/src/m/classes/slr.py

    r20158 r20160  
    1717        def __init__(self): # {{{
    1818                self.deltathickness     = NaN
     19                self.sealevel                   = NaN
    1920                self.maxiter                    = 0
    2021                self.reltol                     = 0
    21                 self.bstol                      = 0
     22                self.abstol                     = 0
    2223                self.love_h             = 0 #provided by PREM model()
    2324                self.love_k             = 0 #ideam
     
    7677                return self
    7778                #}}}
    78                
    7979        def checkconsistency(self,md,solution,analyses):    # {{{
    8080
     
    8383                        return md
    8484
    85                 md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1])
     85                md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
     86                md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
    8687                md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1)
    8788                md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1)
     
    9394
    9495                #check that love numbers are provided at the same level of accuracy:
    95                 if (size(self.love_h,1) != size(self.love_k,1)),
     96                if (size(self.love_h,0) != size(self.love_k,0)):
    9697                        error('slr error message: love numbers should be provided at the same level of accuracy')
    9798               
    9899                return md
    99100        # }}}
    100         def defaultoutputs(self,md) # {{{
    101                 return ['SealevelriseS']
     101        def defaultoutputs(self,md): # {{{
     102                return ['Sealevel']
    102103        # }}}
    103         def marshall(self,md,fid) # {{{
     104        def marshall(self,md,fid): # {{{
    104105                WriteData(fid,'object',self,'class','sealevelrise','fieldname','deltathickness','format','DoubleMat','mattype',1)
     106                WriteData(fid,'data',self.sealevel,'mattype',1,'format','DoubleMat','enum',SealevelEnum(),'timeserieslength',md.mesh.numberofvertices+1)
    105107                WriteData(fid,'object',self,'class','sealevelrise','fieldname','reltol','format','Double')
    106108                WriteData(fid,'object',self,'class','sealevelrise','fieldname','abstol','format','Double')
     
    114116                WriteData(fid,'object',self,'class','sealevelrise','fieldname','degacc','format','Double')
    115117                WriteData(fid,'object',self,'class','sealevelrise','fieldname','transitions','format','MatArray')
    116                
     118       
    117119                #process requested outputs
    118120                outputs = self.requested_outputs
    119                 pos = find(ismember(outputs,'default'))
    120                 if (!isempty(pos))
    121                         outputs(pos) = []                         #remove 'default' from outputs
    122                         outputs      = [outputs defaultoutputs(self,md)] #add defaults
    123                 WriteData(fid,'data',outputs,'enum',SealevelriseRequestedOutputsEnum,'format','StringArray')
    124 
     121                indices = [i for i, x in enumerate(outputs) if x == 'default']
     122                if len(indices) > 0:
     123                        outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
     124                        outputs    =outputscopy
     125                WriteData(fid,'data',outputs,'enum',SealevelriseRequestedOutputsEnum(),'format','StringArray')
    125126        # }}}
Note: See TracChangeset for help on using the changeset viewer.