Changeset 26178


Ignore:
Timestamp:
04/08/21 03:45:11 (4 years ago)
Author:
bdef
Message:

CHG: minor syntax

Location:
issm/trunk-jpl/src/m
Files:
10 edited

Legend:

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

    r26059 r26178  
    1 import numpy as np
    2 
    31from checkfield import checkfield
    42from fielddisplay import fielddisplay
     
    1412    """
    1513
    16     def __init__(self, *args): #{{{
    17         self.modelid                               = 0 # Index into the multi-model ensemble
    18         self.global_average_thermosteric_sea_level = [] # Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m) for each ensemble.
    19         self.sea_surface_height_above_geoid        = [] # Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m) for each ensemble.
    20         self.sea_water_pressure_at_sea_floor       = [] #Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!) for each ensemble.
     14    def __init__(self, *args):  #{{{
     15        self.modelid = 0 # Index into the multi-model ensemble
     16        self.global_average_thermosteric_sea_level = []  # Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m) for each ensemble.
     17        self.sea_surface_height_above_geoid = [] # Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m) for each ensemble.
     18        self.sea_water_pressure_at_sea_floor = [] #Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!) for each ensemble.
    2119
    2220        nargs = len(args)
     
    2826    #}}}
    2927
    30     def __repr__(self): # {{{
     28    def __repr__(self):  # {{{
    3129        s = '   dsl mme parameters:\n'
    3230        s += '{}\n'.format(fielddisplay(self, 'modelid', 'index into the multi-model ensemble, determines which field will be used.'))
     
    3735    #}}}
    3836
    39     def setdefaultparameters(self): #{{{
     37    def setdefaultparameters(self):  #{{{
    4038        return self
    4139    #}}}
    4240
    43     def checkconsistency(self, md, solution, analyses): # {{{
     41    def checkconsistency(self, md, solution, analyses):  # {{{
    4442        # Early return
    4543        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
     
    5048            md = checkfield(md, 'field', self.sea_surface_height_above_geoid[i], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
    5149            md = checkfield(md, 'field', self.sea_water_pressure_at_sea_floor[i], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
    52         md = checkfield(md, 'field', self.modelid, 'NaN', 1, 'Inf', 1, '>=', 1, '<=',len(self.global_average_thermosteric_sea_level))
     50        md = checkfield(md, 'field', self.modelid, 'NaN', 1, 'Inf', 1, '>=', 1, '<=', len(self.global_average_thermosteric_sea_level))
    5351
    5452        if self.solidearth.settings.compute_bp_grd:
     
    5856    #}}}
    5957
    60     def marshall(self, prefix, md, fid): #{{{
     58    def marshall(self, prefix, md, fid):  #{{{
    6159        WriteData(fid, prefix, 'name', 'md.dsl.model', 'data', 2, 'format', 'Integer')
    6260        WriteData(fid, prefix, 'object', self, 'fieldname', 'modelid', 'format', 'Double')
     
    6765    #}}}
    6866
    69     def extrude(self, md): #{{{
     67    def extrude(self, md):  #{{{
    7068        for i in range(len(self.global_average_thermosteric_sea_level)):
    7169            self.sea_surface_height_above_geoid[i] = project3d(md, 'vector', self.self.sea_surface_height_above_geoid[i], 'type', 'node', 'layer', 1)
  • issm/trunk-jpl/src/m/classes/lovenumbers.py

    r25688 r26178  
    1 import numpy as np
    2 
    31from checkfield import checkfield
    42from fielddisplay import fielddisplay
     
    86
    97
    10 class lovenumbers(object): #{{{
     8class lovenumbers(object):  #{{{
    119    """LOVENUMBERS class definition
    1210
    1311    Usage:
    14         lovenumbers = lovenumbers() #will setup love numbers deg 1001 by default
    15         lovenumbers = lovenumbers('maxdeg', 10001);  #supply numbers of degrees required (here, 10001)
     12        lovenumbers = lovenumbers()  #will setup love numbers deg 1001 by default
     13        lovenumbers = lovenumbers('maxdeg', 10001);   #supply numbers of degrees required (here, 10001)
    1614    """
    1715
    18     def __init__(self, *args): #{{{
     16    def __init__(self, *args):  #{{{
    1917        # Regular love numbers
    20         self.h = []  # Provided by PREM model
    21         self.k = []  # idem
    22         self.l = []  # idem
     18        self.h = []   # Provided by PREM model
     19        self.k = []   # idem
     20        self.l = []   # idem
    2321
    2422        # Tidal love numbers for computing rotational feedback
     
    2624        self.tk = []
    2725        self.tl = []
    28         self.tk2secular = 0 # deg 2 secular number
     26        self.tk2secular = 0  # deg 2 secular number
    2927
    3028        options = pairoptions(*args)
     
    3432    #}}}
    3533
    36     def setdefaultparameters(self, maxdeg, referenceframe): #{{{
     34    def setdefaultparameters(self, maxdeg, referenceframe):  #{{{
    3735        # Initialize love numbers
    3836        self.h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg)
     
    4846    #}}}
    4947
    50     def checkconsistency(self, md, solution, analyses): #{{{
    51         if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslr):
     48    def checkconsistency(self, md, solution, analyses):  #{{{
     49        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
    5250            return
    5351        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.h', 'NaN', 1, 'Inf', 1)
     
    6462    #}}}
    6563
    66     def defaultoutputs(self, md): #{{{
     64    def defaultoutputs(self, md):  #{{{
    6765        return[]
    6866    #}}}
    6967
    70     def __repr__(self): #{{{
     68    def __repr__(self):  #{{{
    7169        s = '   lovenumbers parameters:\n'
    7270        s += '{}\n'.format(fielddisplay(self, 'h', 'load Love number for radial displacement'))
     
    7977    #}}}
    8078
    81     def marshall(self, prefix, md, fid): #{{{
     79    def marshall(self, prefix, md, fid):  #{{{
    8280        WriteData(fid, prefix, 'object', self, 'fieldname', 'h', 'name', 'md.solidearth.lovenumbers.h', 'format', 'DoubleMat', 'mattype', 1)
    8381        WriteData(fid, prefix, 'object', self, 'fieldname', 'k', 'name', 'md.solidearth.lovenumbers.k', 'format', 'DoubleMat', 'mattype', 1)
     
    9088    #}}}
    9189
    92     def extrude(self, md): #{{{
     90    def extrude(self, md):  #{{{
    9391        return
    9492#}}}
  • issm/trunk-jpl/src/m/classes/nodalvalue.py

    r25688 r26178  
    11import numpy as np
    2 
    32from checkfield import checkfield
    43from fielddisplay import fielddisplay
     
    2019    """
    2120
    22     def __init__(self, *args): #{{{
    23         self.name               = ''
    24         self.definitionstring   = '' # string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
    25         self.model_string       = '' # string for field that is being retrieved
    26         self.node               = np.nan #for which node are we retrieving the value?
    27        
     21    def __init__(self, *args):  #{{{
     22        self.name = ''
     23        self.definitionstring = '' # string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
     24        self.model_string = '' # string for field that is being retrieved
     25        self.node = np.nan #for which node are we retrieving the value?
     26
    2827        #use provided options to change fields
    2928        options = pairoptions(*args)
    3029
    3130        # Get name
    32         self.name               = options.getfieldvalue('name', '')
    33         self.definitionstring   = options.getfieldvalue('definitionstring', '')
    34         self.model_string       = options.getfieldvalue('model_string', '')
    35         self.node               = options.getfieldvalue('node', '')
     31        self.name = options.getfieldvalue('name', '')
     32        self.definitionstring = options.getfieldvalue('definitionstring', '')
     33        self.model_string = options.getfieldvalue('model_string', '')
     34        self.node = options.getfieldvalue('node', '')
    3635    #}}}
    3736
    38     def __repr__(self): # {{{
     37    def __repr__(self):  # {{{
    3938        s = '   Nodalvalue:\n'
    4039        s += '{}\n'.format(fielddisplay(self, 'name', 'identifier for this nodalvalue response'))
     
    4544    #}}}
    4645
    47     def setdefaultparameters(self): # {{{
     46    def setdefaultparameters(self):  # {{{
    4847        return self
    4948    #}}}
    5049
    51     def checkconsistency(self, md, solution, analyses): # {{{
    52         if not isinstance(self.name, basestring):
     50    def checkconsistency(self, md, solution, analyses):  # {{{
     51        if not isinstance(self.name, str):
    5352            raise Exception('nodalvalue error message: \'name\' field should be a string!')
    5453        OutputdefinitionStringArray = []
     
    6059    #}}}
    6160
    62     def marshall(self, prefix, md, fid): #{{{
     61    def marshall(self, prefix, md, fid):  #{{{
    6362        WriteData(fid, prefix, 'data', self.name, 'name', 'md.nodalvalue.name', 'format', 'String')
    6463        WriteData(fid, prefix, 'data', self.definitionstring, 'name', 'md.nodalvalue.definitionenum', 'format', 'String')
  • issm/trunk-jpl/src/m/classes/rotational.py

    r25688 r26178  
    1 import numpy as np
    2 
    31from checkfield import checkfield
    42from fielddisplay import fielddisplay
     
    1311    """
    1412
    15     def __init__(self, *args): #{{{
    16         self.equatorialmoi      = 0
    17         self.polarmoi           = 0
    18         self.langularvelocity   = 0
     13    def __init__(self, *args):  #{{{
     14        self.equatorialmoi = 0
     15        self.polarmoi = 0
     16        self.langularvelocity = 0
    1917
    2018        nargin = len(args)
     
    2523    #}}}
    2624
    27     def __repr__(self): # {{{
     25    def __repr__(self):  # {{{
    2826        s = '   rotational parameters:\n'
    2927        s += '{}\n'.format(fielddisplay(self, 'equatorialmoi', 'mean equatorial moment of inertia [kg m^2]'))
     
    3331    #}}}
    3432
    35     def setdefaultparameters(self): # {{{
     33    def setdefaultparameters(self):  # {{{
    3634        # Moment of inertia
    37         self.equatorialmoi  = 8.0077e37 # [kg m^2]
    38         self.polarmoi       = 8.0345e37 # [kg m^2]
     35        self.equatorialmoi = 8.0077e37 # [kg m^2]
     36        self.polarmoi = 8.0345e37 # [kg m^2]
    3937
    4038        # Mean rotational velocity of earth
    41         self.angularvelocity = 7.2921e-5 # [s^-1]
     39        self.angularvelocity = 7.2921e-5  # [s^-1]
    4240        return self
    4341    #}}}
    4442
    45     def checkconsistency(self, md, solution, analyses): # {{{
    46         if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslr):
     43    def checkconsistency(self, md, solution, analyses):  # {{{
     44        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
    4745            return md
    4846        md = checkfield(md, 'fieldname', 'solidearth.rotational.equatorialmoi', 'NaN', 1, 'Inf', 1)
     
    5250    #}}}
    5351
    54     def defaultoutputs(self, md): #{{{
     52    def defaultoutputs(self, md):  #{{{
    5553        return []
    5654    #}}}
    5755
    58     def marshall(self, prefix, md, fid): #{{{
     56    def marshall(self, prefix, md, fid):  #{{{
    5957        WriteData(fid, prefix, 'object', self, 'fieldname', 'equatorialmoi', 'name', 'md.solidearth.rotational.equatorialmoi', 'format', 'Double')
    6058        WriteData(fid, prefix, 'object', self, 'fieldname', 'polarmoi', 'name', 'md.solidearth.rotational.polarmoi', 'format', 'Double')
     
    6260    #}}}
    6361
    64     def extrude(self, md): #{{{
     62    def extrude(self, md):  #{{{
    6563        return self
    6664    #}}}
  • issm/trunk-jpl/src/m/classes/solidearthsettings.py

    r26060 r26178  
    3939    #}}}
    4040
    41     def __repr__(self): # {{{
     41    def __repr__(self):  # {{{
    4242        s = '   solidearth settings:\n'
    4343        s += '{}\n'.format(fielddisplay(self, 'reltol', 'sea level rise relative convergence criterion, (default, NaN: not applied)'))
     
    5858    #}}}
    5959
    60     def setdefaultparameters(self): # {{{
     60    def setdefaultparameters(self):  # {{{
    6161        # Convergence criterion: absolute, relative, and residual
    62         self.reltol = 0.01 # 1 percent
    63         self.abstol = np.nan # default
     62        self.reltol = 0.01  # 1 percent
     63        self.abstol = np.nan  # default
    6464
    6565        # Maximum of non-linear iterations
     
    9494    #}}}
    9595
    96     def checkconsistency(self, md, solution, analyses): # {{{
    97         if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslr):
     96    def checkconsistency(self, md, solution, analyses):  # {{{
     97        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
    9898            return md
    9999        md = checkfield(md, 'fieldname', 'solidearth.settings.reltol', 'size', [1])
     
    126126    #}}}
    127127
    128     def marshall(self, prefix, md, fid): #{{{
     128    def marshall(self, prefix, md, fid):  #{{{
    129129        WriteData(fid, prefix, 'object', self, 'fieldname', 'reltol', 'name', 'md.solidearth.settings.reltol', 'format', 'Double')
    130130        WriteData(fid, prefix, 'object', self, 'fieldname', 'abstol', 'name', 'md.solidearth.settings.abstol', 'format', 'Double')
     
    145145    #}}}
    146146
    147     def extrude(self, md): #{{{
     147    def extrude(self, md):  #{{{
    148148        return self
    149149    #}}}
  • issm/trunk-jpl/src/m/classes/surfaceload.py

    r25688 r26178  
    1313    """
    1414
    15     def __init__(self, *args): #{{{
    16         self.icethicknesschange = []
    17         self.waterheightchange  = []
    18         self.other              = []
    19        
     15    def __init__(self, *args):  #{{{
     16        self.icethicknesschange = np.nan
     17        self.waterheightchange = np.nan
     18        self.other = np.nan
     19
    2020        nargin = len(args)
    2121
     
    2626    #}}}
    2727
    28     def __repr__(self): # {{{
     28    def __repr__(self):  #{{{
    2929        s = '   surfaceload:\n'
    3030        s += '{}\n'.format(fielddisplay(self, 'icethicknesschange', 'thickness change: ice height equivalent [mIce/yr]'))
     
    3434    #}}}
    3535
    36     def setdefaultparameters(self): # {{{
     36    def setdefaultparameters(self):  # {{{
    3737        return self
    3838    #}}}
    3939
    40     def checkconsistency(self, md, solution, analyses): # {{{
    41         if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslr):
     40    def checkconsistency(self, md, solution, analyses):  # {{{
     41        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
    4242            return md
    43         if len(self.icethicknesschange):
    44             md  = checkfield(md,'fieldname', 'solidearth.surfaceload.icethicknesschange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    45         if len(self.waterheightchange):
    46             md  = checkfield(md,'fieldname', 'solidearth.surfaceload.waterheightchange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    47         if len(self.other):
    48             md  = checkfield(md,'fieldname', 'solidearth.surfaceload.other', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     43        if type(self.icethicknesschange) == np.ndarray:
     44            md = checkfield(md, 'fieldname', 'solidearth.surfaceload.icethicknesschange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     45        if type(self.waterheightchange) == np.ndarray:
     46            md = checkfield(md, 'fieldname', 'solidearth.surfaceload.waterheightchange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     47        if type(self.other) == np.ndarray:
     48            md = checkfield(md, 'fieldname', 'solidearth.surfaceload.other', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    4949        return md
    5050    #}}}
    5151
    52     def marshall(self, prefix, md, fid): #{{{
    53         if len(self.icethicknesschange) == 0:
    54             self.icethicknesschange = np.zeros((md.mesh.numberofelements + 1, ))
    55         if len(self.waterheightchange) == 0:
    56             self.waterheightchange = np.zeros((md.mesh.numberofelements + 1, ))
    57         if len(self.other) == 0:
    58             self.other = np.zeros((md.mesh.numberofelements + 1, ))
     52    def marshall(self, prefix, md, fid):  #{{{
     53        if np.isnan(self.icethicknesschange).all():
     54            self.icethicknesschange = np.zeros((md.mesh.numberofelements + 1))
     55        if np.isnan(self.waterheightchange).all():
     56            self.waterheightchange = np.zeros((md.mesh.numberofelements + 1))
     57        if np.isnan(self.other).all():
     58            self.other = np.zeros((md.mesh.numberofelements + 1))
    5959        WriteData(fid, prefix, 'object', self, 'fieldname', 'icethicknesschange', 'name', 'md.solidearth.surfaceload.icethicknesschange', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', md.constants.yts)
    6060        WriteData(fid, prefix, 'object', self, 'fieldname', 'waterheightchange', 'name', 'md.solidearth.surfaceload.waterheightchange', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', md.constants.yts)
     
    6262    #}}}
    6363
    64     def extrude(self, md): #{{{
     64    def extrude(self, md):  #{{{
    6565        return self
    6666    #}}}
  • issm/trunk-jpl/src/m/consistency/checkfield.py

    r25499 r26178  
    1111
    1212    Used to check model consistency
    13        
    1413    Requires:
    15         'field' or 'fieldname' option. If 'fieldname' is provided, it will 
     14        'field' or 'fieldname' option. If 'fieldname' is provided, it will
    1615        retrieve it from the model md. (md.(fieldname))
    17         If 'field' is provided, it will assume the argument following 'field' 
     16        If 'field' is provided, it will assume the argument following 'field'
    1817        is a numeric array.
    1918
    2019    Available options:
    2120        - NaN: 1 if check that there is no NaN
    22         - size: [lines cols], NaN for non checked dimensions, or 'universal' 
     21        - size: [lines cols], NaN for non checked dimensions, or 'universal'
    2322        for any input type (nodal, element, time series, etc)
    2423        - > :  greater than provided value
     
    7271        fieldsize = options.getfieldvalue('size')
    7372        if type(fieldsize) == str:
    74             if m.strcmp(fieldsize, 'universal'):
    75 
     73            if fieldsize == 'universal':
    7674                #Check that vector size will not be confusing for ModelProcessorx
    7775                if (md.mesh.numberofvertices == md.mesh.numberofelements):
  • issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.py

    r26059 r26178  
    8181        analyses = ['DamageEvolutionAnalysis']
    8282    elif 'SamplingSolution':
    83                 analyses=['SamplingAnalysis']
     83        analyses = ['SamplingAnalysis']
    8484    else:
    8585        raise TypeError('solution type: {} not supported yet!'.format(solutiontype))
  • issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py

    r26063 r26178  
    6666            DimDict[len(NewDim)] = dimnames[i]
    6767
    68     typelist = [bool, str, str, int, float, complex,
     68    typelist = [bool, str, int, float, complex,
    6969                collections.OrderedDict,
    7070                np.int64, np.ndarray, np.float64]
  • issm/trunk-jpl/src/m/solve/loadresultsfromcluster.py

    r25817 r26178  
    11import os
    22import socket
    3 
    43from helpers import *
    54from loadresultsfromdisk import loadresultsfromdisk
     
    87
    98
    10 def remove(filename):
     9def remove(filename):  #{{{
    1110    try:
    1211        os.remove(filename)
    1312    except OSError:
    1413        print(('WARNING: ' + filename + ' does not exist'))
     14# }}}
    1515
    1616
    17 def loadresultsfromcluster(md, *args):
     17def loadresultsfromcluster(md, *args):  #{{{
    1818    """LOADRESULTSFROMCLUSTER - load results of solution sequence from cluster
    1919
     
    7575
    7676    return md
     77# }}}
Note: See TracChangeset for help on using the changeset viewer.