source: issm/trunk-jpl/test/NightlyRun/test448.py@ 26555

Last change on this file since 26555 was 26555, checked in by Cheng Gong, 3 years ago

ADD: shear boundary conditions for MLHO. To keep the tests as they were, all the shear boundary conditions are set to nan.

File size: 2.7 KB
Line 
1#Test Name: RoundSheetShelfGLMigrationMLHO2d
2import numpy as np
3from model import *
4from socket import gethostname
5from roundmesh import *
6from setmask import *
7from parameterize import *
8from setflowequation import *
9from solve import *
10
11
12radius = 1.e6
13shelfextent = 2.e5
14
15md = roundmesh(model(), radius, 50000.)
16#fix center node to 0, 0
17rad = np.sqrt(md.mesh.x**2 + md.mesh.y**2)
18pos = np.argmin(rad)
19md.mesh.x[pos] = 0.
20md.mesh.y[pos] = 0. #the closest node to the center is changed to be exactly at the center
21xelem = np.mean(md.mesh.x[md.mesh.elements - 1], axis=1)
22yelem = np.mean(md.mesh.y[md.mesh.elements - 1], axis=1)
23rad = np.sqrt(xelem**2 + yelem**2)
24flags = np.zeros(md.mesh.numberofelements)
25pos = np.nonzero(rad >= (radius - shelfextent))
26flags[pos] = 1
27md = setmask(md, flags, '')
28md = parameterize(md, '../Par/RoundSheetShelf.py')
29md = setflowequation(md, 'MLHO', 'all')
30md.cluster = generic('name', gethostname(), 'np', 3)
31
32md.transient.isthermal = False
33md.transient.ismasstransport = False
34md.transient.issmb = True
35md.transient.isstressbalance = True
36md.transient.isgroundingline = True
37
38#test different grounding line dynamics.
39md.groundingline.migration = 'AggressiveMigration'
40md = SetMLHOBC(md);
41md = solve(md, 'Transient')
42element_on_iceshelf_agressive = md.results.TransientSolution[0].MaskOceanLevelset
43vel_agressive = md.results.TransientSolution[0].Vel
44
45md.groundingline.migration = 'SoftMigration'
46md = solve(md, 'Transient')
47element_on_iceshelf_soft = md.results.TransientSolution[0].MaskOceanLevelset
48vel_soft = md.results.TransientSolution[0].Vel
49
50md.mask.ocean_levelset = md.geometry.thickness + md.materials.rho_water / md.materials.rho_ice * md.geometry.bed
51md.groundingline.migration = 'SubelementMigration'
52md.groundingline.friction_interpolation = 'SubelementFriction1'
53md = solve(md, 'Transient')
54element_on_iceshelf_subelement = md.results.TransientSolution[0].MaskOceanLevelset
55vel_subelement = md.results.TransientSolution[0].Vel
56
57md.groundingline.friction_interpolation = 'SubelementFriction2'
58md = solve(md, 'Transient')
59element_on_iceshelf_subelement2 = md.results.TransientSolution[0].MaskOceanLevelset
60vel_subelement2 = md.results.TransientSolution[0].Vel
61
62#Fields and tolerances to track changes
63field_names = ['ElementOnIceShelfAggressive', 'VelAggressive', 'ElementOnIceShelfSoft', 'VelSoft', 'ElementOnIceShelfSubelement', 'VelSubelement', 'ElementOnIceShelfSubelement2', 'VelSubelement2']
64field_tolerances = [1e-13, 2e-13, 1e-13, 2e-13, 1e-13, 2e-13, 1e-13, 2e-13]
65field_values = [element_on_iceshelf_agressive, vel_agressive, element_on_iceshelf_soft, vel_soft, element_on_iceshelf_subelement, vel_subelement, element_on_iceshelf_subelement2, vel_subelement2]
Note: See TracBrowser for help on using the repository browser.