1 | import numpy as np
|
---|
2 | from arch import *
|
---|
3 | from SetIceSheetBC import SetIceSheetBC
|
---|
4 |
|
---|
5 | #Ok, start defining model parameters here
|
---|
6 |
|
---|
7 | print(" creating thickness")
|
---|
8 | data = np.array(archread('../Data/ISMIPE.arch', 'data'))
|
---|
9 | md.geometry.surface = np.zeros((md.mesh.numberofvertices))
|
---|
10 | md.geometry.base = np.zeros((md.mesh.numberofvertices))
|
---|
11 | for i in range(0, md.mesh.numberofvertices):
|
---|
12 | y = md.mesh.y[i]
|
---|
13 | point1 = int(np.floor(y / 100.))
|
---|
14 | point2 = int(np.minimum(point1 + 1, 50))
|
---|
15 | coeff = int((y - (point1) * 100.) / 100.)
|
---|
16 | md.geometry.base[i] = (1. - coeff) * data[point1, 1] + coeff * data[point2, 1]
|
---|
17 | md.geometry.surface[i] = (1. - coeff) * data[point1, 2] + coeff * data[point2, 2]
|
---|
18 |
|
---|
19 | md.geometry.thickness = md.geometry.surface - md.geometry.base
|
---|
20 | md.geometry.thickness[np.nonzero(np.logical_not(md.geometry.thickness))] = 0.01
|
---|
21 | md.geometry.base = md.geometry.surface - md.geometry.thickness
|
---|
22 |
|
---|
23 | print(" creating drag")
|
---|
24 | md.friction.coefficient = np.zeros((md.mesh.numberofvertices))
|
---|
25 | md.friction.p = np.ones((md.mesh.numberofelements))
|
---|
26 | md.friction.q = np.ones((md.mesh.numberofelements))
|
---|
27 |
|
---|
28 | print(" creating flow law parameter")
|
---|
29 | md.materials.rheology_B = 6.8067 * 10**7 * np.ones((md.mesh.numberofvertices))
|
---|
30 | md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
|
---|
31 |
|
---|
32 | print(" boundary conditions for stressbalance model:")
|
---|
33 | #Create node on boundary first (because we can not use mesh)
|
---|
34 | md = SetIceSheetBC(md)
|
---|