Source code for issm.damagefrominversion

import numpy as  np

[docs]def damagefrominversion(md): ''' compute ice shelf damage from inversion results This routine computes damage based on the analytical formalism of Borstad et al. (2013, The Cryosphere). The model must contain inversion results for ice rigidity. Ice rigidity B is assumed to be parameterized by the ice temperature in md.materials.rheology_B. Usage: damage=damagefrominversion(md) Example: damage=damagefrominversion(md) ''' # check inputs if not hasattr(md.results,'strainrate'): raise StandardError('md.results.strainrate is not present. Calculate using md=mechanicalproperties(md,vx,vy)') if not '2d' in md.mesh.__doc__: raise StandardError('only 2d (planview) model supported currently') if any(md.flowequation.element_equation!=2): raise StandardError('Warning: the model has some non-SSA elements. These will be treated like SSA elements') if np.ndim(md.results.StressbalanceSolution.MaterialsRheologyBbar)==2: Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1,) else: Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar if np.ndim(md.materials.rheology_B)==2: BT=md.materials.rheology_B.reshape(-1,) else: BT=md.materials.rheology_B damage=np.zeros_like(Bi) # Damage where Bi softer than B(T) pos=np.nonzero(Bi<BT)[0] damage[pos]=1.-Bi[pos]/BT[pos] pos=np.nonzero(damage<0) damage[pos]=0 return damage