source: issm/trunk/test/NightlyRun/test350.py@ 24313

Last change on this file since 24313 was 24313, checked in by Mathieu Morlighem, 5 years ago

merged trunk-jpl and trunk for revision 24310

File size: 4.0 KB
Line 
1#Test Name: SquareSheetHydrologyShakti
2from operator import itemgetter
3import numpy as np
4from model import *
5from socket import gethostname
6from triangle import *
7from setmask import *
8from parameterize import *
9from setflowequation import *
10from solve import *
11from frictionshakti import *
12from hydrologyshakti import *
13from transient import *
14
15md = triangle(model(), '../Exp/Square.exp', 50000.)
16md.mesh.x = md.mesh.x / 1000
17md.mesh.y = md.mesh.y / 1000
18md = setmask(md, '', '')
19md = parameterize(md, '../Par/SquareSheetConstrained.py')
20md.transient = transient().deactivateall()
21md.transient.ishydrology = 1
22md = setflowequation(md, 'SSA', 'all')
23md.cluster = generic('name', gethostname(), 'np', 2)
24
25#Use hydroogy coupled friciton law
26md.friction = frictionshakti(md)
27
28#Change hydrology class to Shakti' model
29md.hydrology = hydrologyshakti()
30
31#Change geometry
32md.geometry.base = -.02 * md.mesh.x + 20.
33md.geometry.thickness = 300. * np.ones((md.mesh.numberofvertices, ))
34md.geometry.bed = md.geometry.base
35md.geometry.surface = md.geometry.bed + md.geometry.thickness
36
37#define the initial water head as being such that the water pressure is 50% of the ice overburden pressure
38md.hydrology.head = 0.5 * md.materials.rho_ice / md.materials.rho_freshwater * md.geometry.thickness + md.geometry.base
39md.hydrology.gap_height = 0.01 * np.ones((md.mesh.numberofelements, ))
40md.hydrology.bump_spacing = 2 * np.ones((md.mesh.numberofelements, ))
41md.hydrology.bump_height = 0.05 * np.ones((md.mesh.numberofelements, ))
42md.hydrology.englacial_input = 0.5 * np.ones((md.mesh.numberofvertices, ))
43md.hydrology.reynolds = 1000. * np.ones((md.mesh.numberofelements, ))
44md.hydrology.spchead = float('NaN') * np.ones((md.mesh.numberofvertices, ))
45pos = np.intersect1d(np.array(np.where(md.mesh.vertexonboundary)), np.array(np.where(md.mesh.x == 1000)))
46md.hydrology.spchead[pos] = md.geometry.base[pos]
47
48#Define velocity
49md.initialization.vx = 1e-6 * md.constants.yts * np.ones((md.mesh.numberofvertices, ))
50md.initialization.vy = np.zeros((md.mesh.numberofvertices, ))
51
52md.timestepping.time_step = 3. * 3600. / md.constants.yts
53md.timestepping.final_time = .5 / 365.
54md.materials.rheology_B = (5e-25)**(-1. / 3.) * np.ones((md.mesh.numberofvertices, ))
55
56#Add one moulin and Neumann BC, varying in time
57a = np.sqrt((md.mesh.x - 500.)**2 + (md.mesh.y - 500.)**2)
58pos = min(enumerate(a), key=itemgetter(1))[0]
59time = np.arange(0, md.timestepping.final_time + 1, md.timestepping.time_step)
60md.hydrology.moulin_input = np.zeros((md.mesh.numberofvertices + 1, np.size(time)))
61md.hydrology.moulin_input[-1, :] = time
62md.hydrology.moulin_input[pos, :] = 5. * (1. - np.sin(2. * np.pi / (1. / 365.) * time))
63md.hydrology.neumannflux = np.zeros((md.mesh.numberofelements + 1, np.size(time)))
64md.hydrology.neumannflux[-1, :] = time
65segx = md.mesh.x[md.mesh.segments[:, 0] - 1]
66segy = md.mesh.y[md.mesh.segments[:, 0] - 1]
67posA = np.intersect1d(np.intersect1d(np.array(np.where(segx < 1.)), np.array(np.where(segy > 400.))), np.array(np.where(segy < 600.)))
68pos = (md.mesh.segments[posA] - 1)[:, 2]
69md.hydrology.neumannflux[pos, :] = np.tile(0.05 * (1. - np.sin(2. * np.pi / (1. / 365.) * time)), (len(pos), 1))
70
71md = solve(md, 'Transient')
72
73#Fields and tolerances to track changes
74field_names = ['HydrologyHead1', 'HydrologyGapHeight1',
75 'HydrologyHead2', 'HydrologyGapHeight2',
76 'HydrologyHead3', 'HydrologyGapHeight3',
77 'HydrologyHead4', 'HydrologyGapHeight4']
78field_tolerances = [1e-13, 1e-13,
79 1e-13, 1e-13,
80 1e-13, 1e-13,
81 1e-13, 1e-12]
82field_values = [md.results.TransientSolution[0].HydrologyHead,
83 md.results.TransientSolution[0].HydrologyGapHeight,
84 md.results.TransientSolution[1].HydrologyHead,
85 md.results.TransientSolution[1].HydrologyGapHeight,
86 md.results.TransientSolution[2].HydrologyHead,
87 md.results.TransientSolution[2].HydrologyGapHeight,
88 md.results.TransientSolution[3].HydrologyHead,
89 md.results.TransientSolution[3].HydrologyGapHeight]
Note: See TracBrowser for help on using the repository browser.