source: issm/trunk/test/NightlyRun/test2111.py@ 22758

Last change on this file since 22758 was 22758, checked in by Mathieu Morlighem, 7 years ago

merged trunk-jpl and trunk for revision 22757

File size: 2.7 KB
Line 
1#Test Name: Esa2Dsurface
2#AIS -- southern hemisphere example for north-south, east-west components of horiz motion
3
4import numpy as np
5from model import *
6from socket import gethostname
7from solve import *
8from roundmesh import *
9from love_numbers import *
10from paterson import *
11
12#mesh ais: {{{
13md = model()
14md = triangle(md,'../Exp/Ais.exp',200000); # max element size
15# }}}
16#define load: {{{
17md.esa.deltathickness = np.zeros((md.mesh.numberofelements,))
18disc_radius = 500 # km
19index = md.mesh.elements
20x_element = np.mean(md.mesh.x[index - 1], 1) - 1.0e6
21y_element = np.mean(md.mesh.y[index - 1], 1) - 1.0e6
22rad_dist = np.sqrt(x_element**2 + y_element**2) / 1000 # radial distance in km
23md.esa.deltathickness[np.where(rad_dist <= disc_radius)] = -1 # 1 m water withdrawl
24# }}}
25#love numbers: {{{
26nlov = 10000 # horizontal displacements do not work for low degree truncation, e.g., 101
27md.esa.love_h = np.array(love_numbers('h','CF'))
28md.esa.love_h = np.resize(md.esa.love_h, nlov + 1)
29md.esa.love_l = np.array(love_numbers('l','CF'))
30md.esa.love_l = np.resize(md.esa.love_l, nlov + 1)
31# }}}
32#mask: {{{
33#make sure wherever there is an ice load, that the mask is set to ice:
34md.mask.ice_levelset = np.ones((md.mesh.numberofvertices,))
35pos = np.where(md.esa.deltathickness)
36md.mask.ice_levelset[md.mesh.elements[pos,:]] = -1
37
38#is ice grounded?
39md.mask.groundedice_levelset = -np.ones((md.mesh.numberofvertices,))
40pos = np.where(md.mask.ice_levelset <= 0)
41md.mask.groundedice_levelset[pos] = 1
42# }}}
43#geometry: {{{
44di = md.materials.rho_ice / md.materials.rho_water
45md.geometry.thickness = np.ones((md.mesh.numberofvertices,))
46md.geometry.surface = (1 - di) * np.zeros((md.mesh.numberofvertices,))
47md.geometry.base = md.geometry.surface - md.geometry.thickness
48md.geometry.bed = md.geometry.base
49# }}}
50#materials: {{{
51md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices,))
52md.materials.rheology_B = paterson(md.initialization.temperature)
53md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements,))
54# }}}
55#additional parameters, miscellaneous: {{{
56md.miscellaneous.name='test2111';
57md.esa.degacc=0.01;
58md.esa.hemisphere = -1;
59# }}}
60
61#solve esa: {{{
62md.esa.requested_outputs = ['EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion']
63md.cluster = generic('name',gethostname(),'np',3)
64md.verbose = verbose('111111111')
65md = solve(md,'Esa')
66# }}}
67#Fields and tolerances to track changes: {{{
68field_names = ['EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion']
69field_tolerances = [1e-13,1e-13,1e-13,1e-13,1e-13]
70field_values = [
71 md.results.EsaSolution.EsaUmotion,
72 md.results.EsaSolution.EsaNmotion,
73 md.results.EsaSolution.EsaEmotion,
74 md.results.EsaSolution.EsaXmotion,
75 md.results.EsaSolution.EsaYmotion,
76 ]
77# }}}
78
Note: See TracBrowser for help on using the repository browser.