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

Last change on this file since 26439 was 26439, checked in by tsantos, 4 years ago

NEW: NR tests for MLHO

File size: 2.6 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 = solve(md, 'Transient')
41element_on_iceshelf_agressive = md.results.TransientSolution[0].MaskOceanLevelset
42vel_agressive = md.results.TransientSolution[0].Vel
43
44md.groundingline.migration = 'SoftMigration'
45md = solve(md, 'Transient')
46element_on_iceshelf_soft = md.results.TransientSolution[0].MaskOceanLevelset
47vel_soft = md.results.TransientSolution[0].Vel
48
49md.mask.ocean_levelset = md.geometry.thickness + md.materials.rho_water / md.materials.rho_ice * md.geometry.bed
50md.groundingline.migration = 'SubelementMigration'
51md.groundingline.friction_interpolation = 'SubelementFriction1'
52md = solve(md, 'Transient')
53element_on_iceshelf_subelement = md.results.TransientSolution[0].MaskOceanLevelset
54vel_subelement = md.results.TransientSolution[0].Vel
55
56md.groundingline.friction_interpolation = 'SubelementFriction2'
57md = solve(md, 'Transient')
58element_on_iceshelf_subelement2 = md.results.TransientSolution[0].MaskOceanLevelset
59vel_subelement2 = md.results.TransientSolution[0].Vel
60
61#Fields and tolerances to track changes
62field_names = ['ElementOnIceShelfAggressive', 'VelAggressive', 'ElementOnIceShelfSoft', 'VelSoft', 'ElementOnIceShelfSubelement', 'VelSubelement', 'ElementOnIceShelfSubelement2', 'VelSubelement2']
63field_tolerances = [1e-13, 2e-13, 1e-13, 2e-13, 1e-13, 2e-13, 1e-13, 2e-13]
64field_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.