Changeset 22057


Ignore:
Timestamp:
09/07/17 05:50:36 (8 years ago)
Author:
bdef
Message:

CHG:minor cleanup, indent fix and removing MatlabFuncs

File:
1 edited

Legend:

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

    r22053 r22057  
    6565from ElementConnectivity import ElementConnectivity
    6666from contourenvelope import contourenvelope
    67 import MatlabFuncs as m
    6867from DepthAverage import DepthAverage
    6968#}}}
     
    126125        def properties(self):    # {{{
    127126                # ordered list of properties since vars(self) is random
    128                 return ['mesh',\
    129                         'mask',\
    130                         'geometry',\
    131                         'constants',\
    132                         'smb',\
    133                         'basalforcings',\
    134                         'materials',\
    135                         'damage',\
    136                         'friction',\
    137                         'flowequation',\
    138                         'timestepping',\
    139                         'initialization',\
    140                         'rifts',\
    141                         'slr',\
    142                         'debug',\
    143                         'verbose',\
    144                         'settings',\
    145                         'toolkits',\
    146                         'cluster',\
    147                         'balancethickness',\
    148                         'stressbalance',\
    149                         'groundingline',\
    150                         'hydrology',\
    151                         'masstransport',\
    152                         'thermal',\
    153                         'steadystate',\
    154                         'transient',\
    155                         'levelset',\
    156                         'calving',\
    157                         'gia',\
    158                         'love',\
    159                         'autodiff',\
    160                         'inversion',\
    161                         'qmu',\
    162                         'amr',\
    163                         'outputdefinition',\
    164                         'results',\
    165                         'radaroverlay',\
    166                         'miscellaneous',\
     127                return ['mesh',
     128                        'mask',
     129                        'geometry',
     130                        'constants',
     131                        'smb',
     132                        'basalforcings',
     133                        'materials',
     134                        'damage',
     135                        'friction',
     136                        'flowequation',
     137                        'timestepping',
     138                        'initialization',
     139                        'rifts',
     140                        'slr',
     141                        'debug',
     142                        'verbose',
     143                        'settings',
     144                        'toolkits',
     145                        'cluster',
     146                        'balancethickness',
     147                        'stressbalance',
     148                        'groundingline',
     149                        'hydrology',
     150                        'masstransport',
     151                        'thermal',
     152                        'steadystate',
     153                        'transient',
     154                        'levelset',
     155                        'calving',
     156                                                'gia',
     157                                                'love',
     158                        'autodiff',
     159                        'inversion',
     160                        'qmu',
     161                        'amr',
     162                        'outputdefinition',
     163                        'results',
     164                        'radaroverlay',
     165                        'miscellaneous',
    167166                        'private']
    168167        # }}}
     
    198197                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("levelset","[%s,%s]" % ("1x1",obj.levelset.__class__.__name__),"parameters for moving boundaries (level-set method)"))
    199198                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving"))
    200                 string="%s\n%s" % (string,'%19s: %-22s -- %s' % ("love","[%s,%s]" % ("1x1",obj.love.__class__.__name__),"parameters for love solution"))
     199                string="%s\n%s" % (string,'%19s: %-22s -- %s' % ("love","[%s,%s]" % ("1x1",obj.love.__class__.__name__),"parameters for love solution"))
    201200                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters"))
    202201                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("inversion","[%s,%s]" % ("1x1",obj.inversion.__class__.__name__),"parameters for inverse methods"))
     
    293292                        field=getattr(md1,fieldi)
    294293                        fieldsize=np.shape(field)
    295                         if hasattr(field,'__dict__') and not m.ismember(fieldi,['results'])[0]:    #recursive call
     294                        if hasattr(field,'__dict__') and not fieldi in ['results']:    #recursive call
    296295                                object_fields=vars(field)
    297296                                for fieldj in object_fields:
     
    301300                                        if len(fieldsize):
    302301                                                #size = number of nodes * n
    303                                                 if   fieldsize[0]==numberofvertices1:
     302                                                if fieldsize[0]==numberofvertices1:
    304303                                                        setattr(getattr(md2,fieldi),fieldj,field[pos_node])
    305304                                                elif fieldsize[0]==numberofvertices1+1:
     
    311310                                if len(fieldsize):
    312311                                        #size = number of nodes * n
    313                                         if   fieldsize[0]==numberofvertices1:
     312                                        if fieldsize[0]==numberofvertices1:
    314313                                                setattr(md2,fieldi,field[pos_node])
    315314                                        elif fieldsize[0]==numberofvertices1+1:
     
    362361
    363362                #Edges
    364                 if m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
     363                if md.mesh.domaintype()=='2Dhorizontal':
    365364                        if np.ndim(md2.mesh.edges)>1 and np.size(md2.mesh.edges,axis=1)>1:    #do not use ~isnan because there are some np.nans...
    366365                                #renumber first two columns
    367366                                pos=np.nonzero(md2.mesh.edges[:,3]!=-1)[0]
    368                                 md2.mesh.edges[:  ,0]=Pnode[md2.mesh.edges[:,0]-1]
    369                                 md2.mesh.edges[:  ,1]=Pnode[md2.mesh.edges[:,1]-1]
    370                                 md2.mesh.edges[:  ,2]=Pelem[md2.mesh.edges[:,2]-1]
     367                                md2.mesh.edges[:,0]=Pnode[md2.mesh.edges[:,0]-1]
     368                                md2.mesh.edges[:,1]=Pnode[md2.mesh.edges[:,1]-1]
     369                                md2.mesh.edges[:,2]=Pelem[md2.mesh.edges[:,2]-1]
    371370                                md2.mesh.edges[pos,3]=Pelem[md2.mesh.edges[pos,3]-1]
    372371                                #remove edges when the 2 vertices are not in the domain.
     
    695694                #dealing with the friction law
    696695                #drag is limited to nodes that are on the bedrock.
    697                 if hasattr(md.friction,'coefficient'): md.friction.coefficient=project2d(md,md.friction.coefficient,1)
     696                if hasattr(md.friction,'coefficient'):
     697                        md.friction.coefficient=project2d(md,md.friction.coefficient,1)
    698698
    699699                #p and q (same deal, except for element that are on the bedrock: )
    700                 if hasattr(md.friction,'p'): md.friction.p=project2d(md,md.friction.p,1)
    701                 if hasattr(md.friction,'q'): md.friction.q=project2d(md,md.friction.q,1)
     700                if hasattr(md.friction,'p'):
     701                        md.friction.p=project2d(md,md.friction.p,1)
     702                if hasattr(md.friction,'q'):
     703                        md.friction.q=project2d(md,md.friction.q,1)
    702704               
    703                 if hasattr(md.friction,'coefficientcoulomb'): md.friction.coefficientcoulomb=project2d(md,md.friction.coefficientcoulomb,1)
    704                 if hasattr(md.friction,'C'): md.friction.C=project2d(md,md.friction.C,1)
    705                 if hasattr(md.friction,'As'): md.friction.As=project2d(md,md.friction.As,1)
     705                if hasattr(md.friction,'coefficientcoulomb'):
     706                        md.friction.coefficientcoulomb=project2d(md,md.friction.coefficientcoulomb,1)
     707                if hasattr(md.friction,'C'):
     708                        md.friction.C=project2d(md,md.friction.C,1)
     709                if hasattr(md.friction,'As'):
     710                        md.friction.As=project2d(md,md.friction.As,1)
    706711                if hasattr(md.friction,'effective_pressure') and not np.isnan(md.friction.effective_pressure).all():
    707                     md.friction.effective_pressure=project2d(md,md.friction.effective_pressure,1)
    708                 if hasattr(md.friction,'water_layer'): md.friction.water_layer=project2d(md,md.friction.water_layer,1)
    709                 if hasattr(md.friction,'m'): md.friction.m=project2d(md,md.friction.m,1)
     712                        md.friction.effective_pressure=project2d(md,md.friction.effective_pressure,1)
     713                if hasattr(md.friction,'water_layer'):
     714                        md.friction.water_layer=project2d(md,md.friction.water_layer,1)
     715                if hasattr(md.friction,'m'):
     716                        md.friction.m=project2d(md,md.friction.m,1)
    710717
    711718                #observations
    712                 if not np.isnan(md.inversion.vx_obs).all(): md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers)
    713                 if not np.isnan(md.inversion.vy_obs).all(): md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers)
    714                 if not np.isnan(md.inversion.vel_obs).all(): md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers)
    715                 if not np.isnan(md.inversion.cost_functions_coefficients).all(): md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers)
    716                 if isinstance(md.inversion.min_parameters,np.ndarray):
    717                     if md.inversion.min_parameters.size>1: md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers)
    718                 if isinstance(md.inversion.max_parameters,np.ndarray):
    719                     if md.inversion.max_parameters.size>1: md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers)
     719                if not np.isnan(md.inversion.vx_obs).all():
     720                        md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers)
     721                if not np.isnan(md.inversion.vy_obs).all():
     722                        md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers)
     723                if not np.isnan(md.inversion.vel_obs).all():
     724                        md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers)
     725                if not np.isnan(md.inversion.cost_functions_coefficients).all():
     726                        md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers)
     727                if isinstance(md.inversion.min_parameters,np.ndarray):
     728                        if md.inversion.min_parameters.size>1:
     729                                md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers)
     730                if isinstance(md.inversion.max_parameters,np.ndarray):
     731                        if md.inversion.max_parameters.size>1:
     732                                md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers)
    720733                if not np.isnan(md.smb.mass_balance).all():
    721734                        md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers)
    722735               
    723736                #results
    724                 if not np.isnan(md.initialization.vx).all(): md.initialization.vx=DepthAverage(md,md.initialization.vx)
    725                 if not np.isnan(md.initialization.vy).all(): md.initialization.vy=DepthAverage(md,md.initialization.vy)
    726                 if not np.isnan(md.initialization.vz).all(): md.initialization.vz=DepthAverage(md,md.initialization.vz)
    727                 if not np.isnan(md.initialization.vel).all(): md.initialization.vel=DepthAverage(md,md.initialization.vel)
    728                 if not np.isnan(md.initialization.temperature).all(): md.initialization.temperature=DepthAverage(md,md.initialization.temperature)
    729                 if not np.isnan(md.initialization.pressure).all(): md.initialization.pressure=project2d(md,md.initialization.pressure,1)
    730                 if not np.isnan(md.initialization.sediment_head).all(): md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1)
    731                 if not np.isnan(md.initialization.epl_head).all(): md.initialization.epl_head=project2d(md,md.initialization.epl_head,1)
    732                 if not np.isnan(md.initialization.epl_thickness).all(): md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1)
     737                if not np.isnan(md.initialization.vx).all():
     738                        md.initialization.vx=DepthAverage(md,md.initialization.vx)
     739                if not np.isnan(md.initialization.vy).all():
     740                        md.initialization.vy=DepthAverage(md,md.initialization.vy)
     741                if not np.isnan(md.initialization.vz).all():
     742                        md.initialization.vz=DepthAverage(md,md.initialization.vz)
     743                if not np.isnan(md.initialization.vel).all():
     744                        md.initialization.vel=DepthAverage(md,md.initialization.vel)
     745                if not np.isnan(md.initialization.temperature).all():
     746                        md.initialization.temperature=DepthAverage(md,md.initialization.temperature)
     747                if not np.isnan(md.initialization.pressure).all():
     748                        md.initialization.pressure=project2d(md,md.initialization.pressure,1)
     749                if not np.isnan(md.initialization.sediment_head).all():
     750                        md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1)
     751                if not np.isnan(md.initialization.epl_head).all():
     752                        md.initialization.epl_head=project2d(md,md.initialization.epl_head,1)
     753                if not np.isnan(md.initialization.epl_thickness).all():
     754                        md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1)
    733755
    734756                #giaivins
    735                 if not np.isnan(md.gia.mantle_viscosity).all(): md.gia.mantle_viscosity=project2d(md,md.gia.mantle_viscosity,1)
    736                 if not np.isnan(md.gia.lithosphere_thickness).all(): md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1)
     757                if not np.isnan(md.gia.mantle_viscosity).all():
     758                        md.gia.mantle_viscosity=project2d(md,md.gia.mantle_viscosity,1)
     759                if not np.isnan(md.gia.lithosphere_thickness).all():
     760                        md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1)
    737761
    738762                #elementstype
     
    760784                md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers)
    761785                md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers)
    762                 if not np.isnan(md.damage.spcdamage).all(): md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers-1)
    763786                md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers-1)
     787                if not np.isnan(md.damage.spcdamage).all():
     788                        md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers-1)
    764789
    765790                #materials
     
    787812                md.geometry.thickness=project2d(md,md.geometry.thickness,1)
    788813                md.geometry.base=project2d(md,md.geometry.base,1)
    789                 if isinstance(md.geometry.bed,np.ndarray):
    790                     md.geometry.bed=project2d(md,md.geometry.bed,1)
     814                if isinstance(md.geometry.bed,np.ndarray):
     815                        md.geometry.bed=project2d(md,md.geometry.bed,1)
    791816                md.mask.groundedice_levelset=project2d(md,md.mask.groundedice_levelset,1)
    792817                md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1)
     
    815840                mesh.numberofelements=md.mesh.numberofelements2d
    816841                mesh.elements=md.mesh.elements2d
    817                 if not np.isnan(md.mesh.vertexonboundary).all(): mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1)
    818                 if not np.isnan(md.mesh.elementconnectivity).all(): mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1)
     842                if not np.isnan(md.mesh.vertexonboundary).all():
     843                        mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1)
     844                if not np.isnan(md.mesh.elementconnectivity).all():
     845                        mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1)
    819846                if isinstance(md.mesh.lat,np.ndarray):
    820                         if md.mesh.lat.size==md.mesh.numberofvertices:  mesh.lat=project2d(md,md.mesh.lat,1)
     847                        if md.mesh.lat.size==md.mesh.numberofvertices: 
     848                                mesh.lat=project2d(md,md.mesh.lat,1)
    821849                if isinstance(md.mesh.long,np.ndarray):
    822                         if md.mesh.long.size==md.mesh.numberofvertices: mesh.long=project2d(md,md.mesh.long,1)
     850                        if md.mesh.long.size==md.mesh.numberofvertices:
     851                                md.mesh.long=project2d(md,md.mesh.long,1)
    823852                mesh.epsg=md.mesh.epsg
    824853                md.mesh=mesh
Note: See TracChangeset for help on using the changeset viewer.