Ignore:
Timestamp:
09/19/12 09:32:34 (12 years ago)
Author:
Mathieu Morlighem
Message:

merged trunk-jpl and trunk for revision 13393

Location:
issm/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk

  • issm/trunk/src

  • issm/trunk/src/m/classes/initialization.py

    r12329 r13395  
    11#module imports
     2import numpy
    23from fielddisplay import fielddisplay
     4from EnumDefinitions import *
     5from checkfield import *
     6from WriteData import *
    37
    4 class initialization:
     8class initialization(object):
     9        """
     10        INITIALIZATION class definition
     11
     12           Usage:
     13              initialization=initialization();
     14        """
     15
    516        #properties
    617        def __init__(self):
     
    2031
    2132                #}}}
    22         def __repr__(obj):
     33        def __repr__(self):
    2334                # {{{ Display
    2435                string='   initial field values:'
    2536
    26                 string="%s\n%s"%(string,fielddisplay(obj,'vx','x component of velocity'))
    27                 string="%s\n%s"%(string,fielddisplay(obj,'vy','y component of velocity'))
    28                 string="%s\n%s"%(string,fielddisplay(obj,'vz','z component of velocity'))
    29                 string="%s\n%s"%(string,fielddisplay(obj,'vel','velocity norm'))
    30                 string="%s\n%s"%(string,fielddisplay(obj,'pressure','pressure field'))
    31                 string="%s\n%s"%(string,fielddisplay(obj,'temperature','temperature in Kelvins'))
    32                 string="%s\n%s"%(string,fielddisplay(obj,'watercolumn','thickness of subglacial water'))
    33                 string="%s\n%s"%(string,fielddisplay(obj,'waterfraction','fraction of water in the ice'))
     37                string="%s\n%s"%(string,fielddisplay(self,'vx','x component of velocity'))
     38                string="%s\n%s"%(string,fielddisplay(self,'vy','y component of velocity'))
     39                string="%s\n%s"%(string,fielddisplay(self,'vz','z component of velocity'))
     40                string="%s\n%s"%(string,fielddisplay(self,'vel','velocity norm'))
     41                string="%s\n%s"%(string,fielddisplay(self,'pressure','pressure field'))
     42                string="%s\n%s"%(string,fielddisplay(self,'temperature','temperature in Kelvins'))
     43                string="%s\n%s"%(string,fielddisplay(self,'watercolumn','thickness of subglacial water'))
     44                string="%s\n%s"%(string,fielddisplay(self,'waterfraction','fraction of water in the ice'))
    3445
    3546                return string
    3647                #}}}
    3748               
    38         def setdefaultparameters(obj):
     49        def setdefaultparameters(self):
    3950                # {{{setdefaultparameters
    40                 return obj
     51                return self
    4152        #}}}
    4253
     54        def checkconsistency(self,md,solution,analyses):    # {{{
     55                if DiagnosticHorizAnalysisEnum() in analyses:
     56                        if not numpy.any(numpy.logical_or(numpy.isnan(md.initialization.vx),numpy.isnan(md.initialization.vy))):
     57                                md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices])
     58                                md = checkfield(md,'initialization.vy','NaN',1,'size',[md.mesh.numberofvertices])
     59                if PrognosticAnalysisEnum() in analyses:
     60                        md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices])
     61                        md = checkfield(md,'initialization.vy','NaN',1,'size',[md.mesh.numberofvertices])
     62                if HydrologyAnalysisEnum() in analyses:
     63                        md = checkfield(md,'initialization.watercolumn','NaN',1,'size',[md.mesh.numberofvertices])
     64                if BalancethicknessAnalysisEnum() in analyses:
     65                        md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices])
     66                        md = checkfield(md,'initialization.vy','NaN',1,'size',[md.mesh.numberofvertices])
     67                        #Triangle with zero velocity
     68                        if numpy.any(numpy.logical_and(numpy.sum(numpy.abs(md.initialization.vx[md.mesh.elements.astype(int)-1]),axis=1)==0,\
     69                                                       numpy.sum(numpy.abs(md.initialization.vy[md.mesh.elements.astype(int)-1]),axis=1)==0)):
     70                                md.checkmessage("at least one triangle has all its vertices with a zero velocity")
     71                if ThermalAnalysisEnum() in analyses:
     72                        md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices])
     73                        md = checkfield(md,'initialization.vy','NaN',1,'size',[md.mesh.numberofvertices])
     74                        md = checkfield(md,'initialization.vz','NaN',1,'size',[md.mesh.numberofvertices])
     75                        md = checkfield(md,'initialization.pressure','NaN',1,'size',[md.mesh.numberofvertices])
     76                if (EnthalpyAnalysisEnum() in analyses and md.thermal.isenthalpy) or solution==EnthalpySolutionEnum():
     77                        md = checkfield(md,'initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices])
     78
     79                return md
     80        # }}}
     81
     82        def marshall(self,fid):    # {{{
     83                WriteData(fid,'data',self.vx,'format','DoubleMat','mattype',1,'enum',VxEnum())
     84                WriteData(fid,'data',self.vy,'format','DoubleMat','mattype',1,'enum',VyEnum())
     85                WriteData(fid,'data',self.vz,'format','DoubleMat','mattype',1,'enum',VzEnum())
     86                WriteData(fid,'data',self.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum())
     87                WriteData(fid,'data',self.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum())
     88                WriteData(fid,'data',self.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum())
     89                WriteData(fid,'data',self.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum())
     90        # }}}
     91
Note: See TracChangeset for help on using the changeset viewer.