Changeset 27536
- Timestamp:
- 01/23/23 13:04:10 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/hydrologyglads.py
r27521 r27536 1 1 import numpy as np 2 from project3d import project3d3 2 from checkfield import checkfield 4 3 from fielddisplay import fielddisplay 4 from project3d import project3d 5 5 from WriteData import WriteData 6 6 … … 44 44 45 45 def __repr__(self): # {{{ 46 s tring = ' GlaDS (hydrologyglads) solution parameters:'47 s tring = "%s\n\t%s" % (string, '--SHEET')48 s tring = "%s\n%s" % (string,fielddisplay(self, 'pressure_melt_coefficient', 'Pressure melt coefficient (c_t) [K Pa^ - 1]'))49 s tring = "%s\n%s" % (string,fielddisplay(self, 'sheet_conductivity', 'sheet conductivity (k) [m^(7 / 4) kg^(- 1 / 2)]'))50 s tring = "%s\n%s" % (string,fielddisplay(self, 'cavity_spacing', 'cavity spacing (l_r) [m]'))51 s tring = "%s\n%s" % (string,fielddisplay(self, 'bump_height', 'typical bump height (h_r) [m]'))52 s tring = "%s\n\t%s" % (string, '--CHANNELS')53 s tring = "%s\n%s" % (string,fielddisplay(self, 'ischannels', 'Do we allow for channels? 1: yes, 0: no'))54 s tring = "%s\n%s" % (string,fielddisplay(self, 'channel_conductivity', 'channel conductivity (k_c) [m^(3 / 2) kg^(- 1 / 2)]'))55 s tring = "%s\n\t%s" % (string, '--OTHER')56 s tring = "%s\n%s" % (string,fielddisplay(self, 'spcphi', 'Hydraulic potential Dirichlet constraints [Pa]'))57 s tring = "%s\n%s" % (string,fielddisplay(self, 'neumannflux', 'water flux applied along the model boundary (m^2 / s)'))58 s tring = "%s\n%s" % (string,fielddisplay(self, 'moulin_input', 'moulin input (Q_s) [m^3 / s]'))59 s tring = "%s\n%s" % (string,fielddisplay(self, 'englacial_void_ratio', 'englacial void ratio (e_v)'))60 s tring = "%s\n%s" % (string,fielddisplay(self, 'requested_outputs', 'additional outputs requested'))61 s tring = "%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')) 62 62 return string 63 63 # }}} … … 72 72 self.bump_height = project3d(md, 'vector', self.bump_height, 'type', 'node', 'layer', 1) 73 73 74 # Other74 # Other 75 75 self.spcphi = project3d(md, 'vector', self.spcphi, 'type', 'node', 'layer', 1) 76 76 self.moulin_input = project3d(md, 'vector', self.moulin_input, 'type', 'node', 'layer', 1) … … 80 80 81 81 def setdefaultparameters(self): # {{{ 82 83 #Sheet parameters 82 # Sheet parameters 84 83 self.pressure_melt_coefficient = 7.5e-8 #K / Pa (See table 1 in Erder et al. 2013) 85 84 self.cavity_spacing = 2. #m 86 85 87 # Channel parameters86 # Channel parameters 88 87 self.ischannels = False 89 88 self.channel_conductivity = 5.e-2 #Dow's default, Table uses 0.1 90 89 self.channel_sheet_width = 2. #m 91 90 92 # Other91 # Other 93 92 self.englacial_void_ratio = 1.e-5 #Dow's default, Table from Werder et al. uses 1e-3 94 93 self.requested_outputs = ['default'] … … 99 98 100 99 def checkconsistency(self, md, solution, analyses): # {{{ 101 102 #Early return 100 # Early return 103 101 if 'HydrologyGladsAnalysis' not in analyses: 104 102 return md 105 103 106 # Sheet104 # Sheet 107 105 md = checkfield(md, 'fieldname', 'hydrology.pressure_melt_coefficient', 'numel', [1], '>=', 0) 108 106 md = checkfield(md, 'fieldname', 'hydrology.sheet_conductivity', 'size', [md.mesh.numberofvertices], '>', 0, 'np.nan', 1, 'Inf', 1) … … 110 108 md = checkfield(md, 'fieldname', 'hydrology.bump_height', 'size', [md.mesh.numberofvertices], '>=', 0, 'np.nan', 1, 'Inf', 1) 111 109 112 # Channels110 # Channels 113 111 md = checkfield(md, 'fieldname', 'hydrology.ischannels', 'numel', [1], 'values', [0, 1]) 114 112 md = checkfield(md, 'fieldname', 'hydrology.channel_conductivity', 'size', [md.mesh.numberofvertices], '>', 0) 115 113 md = checkfield(md, 'fieldname', 'hydrology.channel_sheet_width', 'numel', [1], '>=', 0) 116 114 117 # Other115 # Other 118 116 md = checkfield(md, 'fieldname', 'hydrology.spcphi', 'Inf', 1, 'timeseries', 1) 119 117 md = checkfield(md, 'fieldname', 'hydrology.englacial_void_ratio', 'numel', [1], '>=', 0) … … 122 120 md = checkfield(md, 'fieldname', 'hydrology.requested_outputs', 'stringrow', 1) 123 121 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: 125 123 md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1) 126 124 # }}} … … 128 126 def marshall(self, prefix, md, fid): # {{{ 129 127 yts = md.constants.yts 130 # Marshall model code first128 # Marshall model code first 131 129 WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 5, 'format', 'Integer') 132 130 133 # Sheet131 # Sheet 134 132 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'pressure_melt_coefficient', 'format', 'Double') 135 133 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'sheet_conductivity', 'format', 'DoubleMat', 'mattype', 1) … … 137 135 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'bump_height', 'format', 'DoubleMat', 'mattype', 1) 138 136 139 # Channels137 # Channels 140 138 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'ischannels', 'format', 'Boolean') 141 139 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'channel_conductivity', 'format', 'DoubleMat', 'mattype', 1) 142 140 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'channel_sheet_width', 'format', 'Double') 143 141 144 # Others142 # Others 145 143 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'spcphi', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 146 144 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'neumannflux', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts) 147 145 WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'moulin_input', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts) 148 146 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') 150 148 151 149 outputs = self.requested_outputs … … 155 153 outputs = outputscopy 156 154 WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray') 157 158 155 # }}}
Note:
See TracChangeset
for help on using the changeset viewer.