Changeset 27354 for issm/trunk-jpl/src/m/classes/stochasticforcing.py
- Timestamp:
- 11/04/22 04:51:01 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/stochasticforcing.py
r27251 r27354 36 36 s += '{}\n'.format(fielddisplay(self, 'randomflag', 'whether to apply real randomness (true) or pseudo-randomness with fixed seed (false)')) 37 37 s += 'Available fields:\n' 38 s += ' BasalforcingsDeepwaterMeltingRatearma\n' 38 39 s += ' BasalforcingsSpatialDeepwaterMeltingRate\n' 39 40 s += ' DefaultCalving\n' 40 41 s += ' FloatingMeltRate\n' 41 42 s += ' FrictionWaterPressure\n' 43 s += ' FrictionCoulombWaterPressure\n' 44 s += ' FrictionSchoofWaterPressure\n' 42 45 s += ' FrontalForcingsRignotarma (thermal forcing)\n' 46 s += ' FrontalForcingsSubglacialDischargearma\n' 43 47 s += ' SMBarma\n' 44 48 s += ' SMBforcing\n' … … 122 126 indSMBarma = -1 # About to check for index of SMBarma 123 127 indTFarma = -1 # About to check for index of FrontalForcingsRignotarma 128 indSdarma = -1 # About to check for index of FrontalForcingsSubglacialDischargearma 124 129 indBDWarma = -1 # About to check for index of BasalforcingsDeepwaterMeltingRatearma 125 130 if ('SMBarma' in self.fields): … … 133 138 if(md.frontalforcings.arma_timestep<self.stochastictimestep): 134 139 raise TypeError('FrontalForcingsRignotarma cannot have a timestep shorter than stochastictimestep') 140 if ('FrontalForcingsSubglacialDischargearma' in self.fields): 141 indSdarma = self.fields.index('FrontalForcingsSubglacialDischargearma') # Index of Sdarma, now check for consistency with other timesteps 142 dimensions[indSdarma] = md.frontalforcings.num_basins 143 if(md.frontalforcings.sd_arma_timestep<self.stochastictimestep): 144 raise TypeError('FrontalForcingsSubglacialDischargearma cannot have a timestep shorter than stochastictimestep') 135 145 if ('BasalforcingsDeepwaterMeltingRatearma' in self.fields): 136 146 indBDWarma = self.fields.index('BasalforcingsDeepwaterMeltingRatearma') # Index of BDWarma, now check for consistency with other timesteps … … 152 162 if((md.frontalforcings.arma_timestep != md.basalforcings.arma_timestep) and np.any(covsum != 0)): 153 163 raise IOError('FrontalForcingsRignotarma and BasalforcingsDeepwaterMeltingRatearma have different arma_timestep and non-zero covariance') 164 if (indSMBarma != -1 and indSdarma != -1): # Both ARMA models are used: check ARMA time step consistency 165 covsum = self.covariance[np.sum(dimensions[0:indSMBarma]).astype(int):np.sum(dimensions[0:indSMBarma + 1]).astype(int), np.sum(dimensions[0:indSdarma]).astype(int):np.sum(dimensions[0:indSdarma + 1]).astype(int)] 166 if((md.smb.arma_timestep != md.frontalforcings.sd_arma_timestep) and np.any(covsum != 0)): 167 raise IOError('SMBarma and FrontalForcingsSubglacialDischargearma have different arma_timestep and non-zero covariance') 168 if (indSdarma != -1 and indBDWarma != -1): # Both ARMA models are used: check ARMA time step consistency 169 covsum = self.covariance[np.sum(dimensions[0:indSdarma]).astype(int):np.sum(dimensions[0:indSdarma + 1]).astype(int), np.sum(dimensions[0:indBDWarma]).astype(int):np.sum(dimensions[0:indBDWarma + 1]).astype(int)] 170 if((md.frontalforcings.sd_arma_timestep != md.basalforcings.arma_timestep) and np.any(covsum != 0)): 171 raise IOError('FrontalForcingsSubglacialDischargearma and BasalforcingsDeepwaterMeltingRatearma have different arma_timestep and non-zero covariance') 172 if (indSdarma != -1 and indTFarma != -1): # Both ARMA models are used: check ARMA time step consistency 173 covsum = self.covariance[np.sum(dimensions[0:indSdarma]).astype(int):np.sum(dimensions[0:indSdarma + 1]).astype(int), np.sum(dimensions[0:indTFarma]).astype(int):np.sum(dimensions[0:indTFarma + 1]).astype(int)] 174 if((md.frontalforcings.sd_arma_timestep != md.frontalforcings.arma_timestep) and np.any(covsum != 0)): 175 raise IOError('FrontalForcingsSubglacialDischargearma and FrontalForcingsRignotarma have different arma_timestep and non-zero covariance') 176 154 177 155 178 md = checkfield(md, 'fieldname', 'stochasticforcing.isstochasticforcing', 'values', [0, 1]) … … 187 210 dimensions[ind] = md.smb.num_basins 188 211 if (field == 'FrontalForcingsRignotarma'): 212 dimensions[ind] = md.frontalforcings.num_basins 213 if (field == 'FrontalForcingsSubglacialDischargearma'): 189 214 dimensions[ind] = md.frontalforcings.num_basins 190 215 if (field == 'BasalforcingsDeepwaterMeltingRatearma'): … … 237 262 'FrictionSchoofWaterPressure': 'frictionschoof', 238 263 'FrontalForcingsRignotarma': 'frontalforcingsrignotarma', 264 'FrontalForcingsSubglacialDischargearma': 'frontalforcingsrignotarma', 239 265 'SMBarma': 'SMBarma', 240 266 'SMBforcing': 'SMBforcing'}
Note:
See TracChangeset
for help on using the changeset viewer.