source: issm/trunk/test/NightlyRun/test701.py@ 23189

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

merged trunk-jpl and trunk for revision 23187

File size: 2.8 KB
Line 
1#Test Name: FlowbandFSshelf
2import numpy as np
3from model import *
4from solve import *
5from setflowequation import *
6from bamgflowband import *
7from paterson import *
8
9x = np.arange(1,3001,100).T
10h = np.linspace(1000,300,np.size(x)).T
11b = -917./1023.*h
12
13md = bamgflowband(model(),x,b+h,b,'hmax',80.)
14
15#Geometry #interp1d returns a function to be called on md.mesh.x
16md.geometry.surface = np.interp(md.mesh.x,x,b+h)
17md.geometry.base = np.interp(md.mesh.x,x,b)
18md.geometry.thickness = md.geometry.surface-md.geometry.base
19
20#mask
21md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices,))
22md.mask.ice_levelset[np.where(md.mesh.vertexflags(2))] = 0.
23md.mask.groundedice_levelset = np.zeros((md.mesh.numberofvertices,)) - 0.5
24
25#materials
26md.initialization.temperature = (273.-20.)*np.ones((md.mesh.numberofvertices,))
27md.materials.rheology_B = paterson(md.initialization.temperature)
28md.materials.rheology_n = 3.*np.ones((md.mesh.numberofelements,))
29
30#friction
31md.friction.coefficient = np.zeros((md.mesh.numberofvertices,))
32md.friction.coefficient[np.where(md.mesh.vertexflags(1))] = 20.
33md.friction.p = np.ones((md.mesh.numberofelements,))
34md.friction.q = np.ones((md.mesh.numberofelements,))
35
36#Boundary conditions
37md.stressbalance.referential = np.nan*np.ones((md.mesh.numberofvertices,6))
38md.stressbalance.loadingforce = 0. * np.ones((md.mesh.numberofvertices,3))
39md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices,))
40md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices,))
41md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices,))
42md.stressbalance.spcvx[np.where(md.mesh.vertexflags(4))] = 0.
43md.stressbalance.spcvy[np.where(md.mesh.vertexflags(4))] = 0.
44
45#Misc
46md = setflowequation(md,'FS','all')
47md.stressbalance.abstol = np.nan
48#md.stressbalance.reltol = 10**-16
49md.stressbalance.FSreconditioning = 1.
50md.stressbalance.maxiter = 20
51md.flowequation.augmented_lagrangian_r = 10000.
52md.miscellaneous.name = 'test701'
53md.verbose = verbose('convergence',True)
54md.cluster = generic('np',2)
55md.groundingline.migration='None'
56
57#Go solve
58field_names = []
59field_tolerances = []
60field_values = []
61#md.initialization.pressure = md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.y)
62for i in ['MINI','MINIcondensed','TaylorHood','LATaylorHood','CrouzeixRaviart','LACrouzeixRaviart']:
63 print ' '
64 print '======Testing ' +i+ ' Full-Stokes Finite element====='
65 md.flowequation.fe_FS = i
66 md = solve(md,'Stressbalance')
67 field_names = field_names + [['Vx'+i],['Vy'+i],['Vel'+i],['Pressure'+i]]
68 field_tolerances = field_tolerances + [9e-5,9e-5,9e-5,1e-10]
69 field_values = field_values + [md.results.StressbalanceSolution.Vx,
70 md.results.StressbalanceSolution.Vy,
71 md.results.StressbalanceSolution.Vel,
72 md.results.StressbalanceSolution.Pressure]
Note: See TracBrowser for help on using the repository browser.