import numpy as np from SetIceSheetBC import SetIceSheetBC from frictionshakti import frictionshakti from verbose import verbose #Start defining model parameters here # Set up bed topography and ice geometry for a tilted 500m thick slab md.geometry.base = .02 * md.mesh.x md.geometry.bed = md.geometry.base md.geometry.surface = .02 * md.mesh.x + 500 md.geometry.thickness = md.geometry.surface - md.geometry.bed # Define ice sliding velocity (m / yr) md.initialization.vx = 1.0e-6 * md.constants.yts * np.ones(md.mesh.numberofvertices) md.initialization.vy = np.zeros(md.mesh.numberofvertices) md.initialization.pressure = np.zeros(md.mesh.numberofvertices) # Materials # Ice flow law parameter (note that the standard parameter A = B^(- 3)) md.materials.rheology_B = 5e-25**(-1 / 3) * np.ones(md.mesh.numberofvertices) md.initialization.temperature = 273. * np.ones(md.mesh.numberofvertices) md.materials.rheology_n = 3. * np.ones(md.mesh.numberofelements) #Calving md.calving.calvingrate = np.zeros(md.mesh.numberofvertices) #md.calving.spclevelset = NaN(md.mesh.numberofvertices, 1) # Friction law and coefficient md.friction = frictionshakti(md) md.friction.coefficient = 20. * np.ones(md.mesh.numberofvertices) #Numerical parameters #md.stressbalance.viscosity_overshoot = 0.0 md.masstransport.stabilization = 1. md.thermal.stabilization = 1. md.verbose = verbose(0) md.settings.waitonlock = 30 md.stressbalance.restol = 0.05 md.steadystate.reltol = 0.05 md.stressbalance.reltol = 0.05 md.stressbalance.abstol = np.nan md.timestepping.time_step = 1. md.timestepping.final_time = 3. #GIA: md.gia.lithosphere_thickness = 100. * np.ones(md.mesh.numberofvertices) # in km md.gia.mantle_viscosity = 1.0e21 * np.ones(md.mesh.numberofvertices) # in Pa.s md.materials.lithosphere_shear_modulus = 6.7e10 # in Pa md.materials.lithosphere_density = 3.32 # in g / cm^ - 3 md.materials.mantle_shear_modulus = 1.45e11 # in Pa md.materials.mantle_density = 3.34 # in g / cm^ - 3 #Boundary conditions: md = SetIceSheetBC(md) #Change name so that no test have the same name md.private.runtimename = True