Changeset 27536


Ignore:
Timestamp:
01/23/23 13:04:10 (2 years ago)
Author:
jdquinn
Message:

CHG: MATLAB -> Python; cleanup

File:
1 edited

Legend:

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

    r27521 r27536  
    11import numpy as np
    2 from project3d import project3d
    32from checkfield import checkfield
    43from fielddisplay import fielddisplay
     4from project3d import project3d
    55from WriteData import WriteData
    66
     
    4444
    4545    def __repr__(self):  # {{{
    46         string = '   GlaDS (hydrologyglads) solution parameters:'
    47         string = "%s\n\t%s" % (string, '--SHEET')
    48         string = "%s\n%s" % (string, fielddisplay(self, 'pressure_melt_coefficient', 'Pressure melt coefficient (c_t) [K Pa^ - 1]'))
    49         string = "%s\n%s" % (string, fielddisplay(self, 'sheet_conductivity', 'sheet conductivity (k) [m^(7 / 4) kg^(- 1 / 2)]'))
    50         string = "%s\n%s" % (string, fielddisplay(self, 'cavity_spacing', 'cavity spacing (l_r) [m]'))
    51         string = "%s\n%s" % (string, fielddisplay(self, 'bump_height', 'typical bump height (h_r) [m]'))
    52         string = "%s\n\t%s" % (string, '--CHANNELS')
    53         string = "%s\n%s" % (string, fielddisplay(self, 'ischannels', 'Do we allow for channels? 1: yes, 0: no'))
    54         string = "%s\n%s" % (string, fielddisplay(self, 'channel_conductivity', 'channel conductivity (k_c) [m^(3 / 2) kg^(- 1 / 2)]'))
    55         string = "%s\n\t%s" % (string, '--OTHER')
    56         string = "%s\n%s" % (string, fielddisplay(self, 'spcphi', 'Hydraulic potential Dirichlet constraints [Pa]'))
    57         string = "%s\n%s" % (string, fielddisplay(self, 'neumannflux', 'water flux applied along the model boundary (m^2 / s)'))
    58         string = "%s\n%s" % (string, fielddisplay(self, 'moulin_input', 'moulin input (Q_s) [m^3 / s]'))
    59         string = "%s\n%s" % (string, fielddisplay(self, 'englacial_void_ratio', 'englacial void ratio (e_v)'))
    60         string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    61         string = "%s\n%s" % (string, fielddisplay(self, 'melt_flag', 'User specified basal melt? 0: no (default), 1: use md.basalforcings.groundedice_melting_rate'))
     46        s = '   GlaDS (hydrologyglads) solution parameters:\n'
     47        s = '\t--SHEET\n'
     48        s += '{}\n'.format(fielddisplay(self, 'pressure_melt_coefficient', 'Pressure melt coefficient (c_t) [K Pa^ - 1]'))
     49        s += '{}\n'.format(fielddisplay(self, 'sheet_conductivity', 'sheet conductivity (k) [m^(7 / 4) kg^(- 1 / 2)]'))
     50        s += '{}\n'.format(fielddisplay(self, 'cavity_spacing', 'cavity spacing (l_r) [m]'))
     51        s += '{}\n'.format(fielddisplay(self, 'bump_height', 'typical bump height (h_r) [m]'))
     52        s = '\t--CHANNELS\n'
     53        s += '{}\n'.format(fielddisplay(self, 'ischannels', 'Do we allow for channels? 1: yes, 0: no'))
     54        s += '{}\n'.format(fielddisplay(self, 'channel_conductivity', 'channel conductivity (k_c) [m^(3 / 2) kg^(- 1 / 2)]'))
     55        s = '\t--OTHER\n'
     56        s += '{}\n'.format(fielddisplay(self, 'spcphi', 'Hydraulic potential Dirichlet constraints [Pa]'))
     57        s += '{}\n'.format(fielddisplay(self, 'neumannflux', 'water flux applied along the model boundary (m^2 / s)'))
     58        s += '{}\n'.format(fielddisplay(self, 'moulin_input', 'moulin input (Q_s) [m^3 / s]'))
     59        s += '{}\n'.format(fielddisplay(self, 'englacial_void_ratio', 'englacial void ratio (e_v)'))
     60        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
     61        s += '{}\n'.format(fielddisplay(self, 'melt_flag', 'User specified basal melt? 0: no (default), 1: use md.basalforcings.groundedice_melting_rate'))
    6262        return string
    6363    # }}}
     
    7272        self.bump_height = project3d(md, 'vector', self.bump_height, 'type', 'node', 'layer', 1)
    7373
    74         #Other
     74        # Other
    7575        self.spcphi = project3d(md, 'vector', self.spcphi, 'type', 'node', 'layer', 1)
    7676        self.moulin_input = project3d(md, 'vector', self.moulin_input, 'type', 'node', 'layer', 1)
     
    8080
    8181    def setdefaultparameters(self):  # {{{
    82 
    83         #Sheet parameters
     82        # Sheet parameters
    8483        self.pressure_melt_coefficient = 7.5e-8  #K / Pa (See table 1 in Erder et al. 2013)
    8584        self.cavity_spacing = 2.  #m
    8685
    87         #Channel parameters
     86        # Channel parameters
    8887        self.ischannels = False
    8988        self.channel_conductivity = 5.e-2  #Dow's default, Table uses 0.1
    9089        self.channel_sheet_width = 2.  #m
    9190
    92         #Other
     91        # Other
    9392        self.englacial_void_ratio = 1.e-5  #Dow's default, Table from Werder et al. uses 1e-3
    9493        self.requested_outputs = ['default']
     
    9998
    10099    def checkconsistency(self, md, solution, analyses):  # {{{
    101 
    102         #Early return
     100        # Early return
    103101        if 'HydrologyGladsAnalysis' not in analyses:
    104102            return md
    105103
    106         #Sheet
     104        # Sheet
    107105        md = checkfield(md, 'fieldname', 'hydrology.pressure_melt_coefficient', 'numel', [1], '>=', 0)
    108106        md = checkfield(md, 'fieldname', 'hydrology.sheet_conductivity', 'size', [md.mesh.numberofvertices], '>', 0, 'np.nan', 1, 'Inf', 1)
     
    110108        md = checkfield(md, 'fieldname', 'hydrology.bump_height', 'size', [md.mesh.numberofvertices], '>=', 0, 'np.nan', 1, 'Inf', 1)
    111109
    112         #Channels
     110        # Channels
    113111        md = checkfield(md, 'fieldname', 'hydrology.ischannels', 'numel', [1], 'values', [0, 1])
    114112        md = checkfield(md, 'fieldname', 'hydrology.channel_conductivity', 'size', [md.mesh.numberofvertices], '>', 0)
    115113        md = checkfield(md, 'fieldname', 'hydrology.channel_sheet_width', 'numel', [1], '>=', 0)
    116114
    117         #Other
     115        # Other
    118116        md = checkfield(md, 'fieldname', 'hydrology.spcphi', 'Inf', 1, 'timeseries', 1)
    119117        md = checkfield(md, 'fieldname', 'hydrology.englacial_void_ratio', 'numel', [1], '>=', 0)
     
    122120        md = checkfield(md, 'fieldname', 'hydrology.requested_outputs', 'stringrow', 1)
    123121        md = checkfield(md, 'fieldname', 'hydrology.melt_flag', 'numel', [1], 'values', [0, 1])
    124         if self.melt_flag:
     122        if self.melt_flag == 1 or self.melt_flag == 2:
    125123            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
    126124    # }}}
     
    128126    def marshall(self, prefix, md, fid):  # {{{
    129127        yts = md.constants.yts
    130         #Marshall model code first
     128        # Marshall model code first
    131129        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 5, 'format', 'Integer')
    132130
    133         #Sheet
     131        # Sheet
    134132        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'pressure_melt_coefficient', 'format', 'Double')
    135133        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'sheet_conductivity', 'format', 'DoubleMat', 'mattype', 1)
     
    137135        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'bump_height', 'format', 'DoubleMat', 'mattype', 1)
    138136
    139         #Channels
     137        # Channels
    140138        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'ischannels', 'format', 'Boolean')
    141139        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'channel_conductivity', 'format', 'DoubleMat', 'mattype', 1)
    142140        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'channel_sheet_width', 'format', 'Double')
    143141
    144         #Others
     142        # Others
    145143        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'spcphi', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
    146144        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'neumannflux', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
    147145        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'moulin_input', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
    148146        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'englacial_void_ratio', 'format', 'Double')
    149         WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'melt_flag', 'format', 'Boolean')
     147        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'melt_flag', 'format', 'Integer')
    150148
    151149        outputs = self.requested_outputs
     
    155153            outputs = outputscopy
    156154        WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray')
    157 
    158155    # }}}
Note: See TracChangeset for help on using the changeset viewer.