- Timestamp:
- 06/07/17 10:50:54 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-larour-NatGeoScience2016/test/NightlyRun/test2002.py
r21085 r21759 1 1 #Test Name: EarthSlr 2 from MatlabFuncs import *3 from PythonFuncs import *4 2 from model import * 5 from numpy import * 3 from socket import gethostname 4 import numpy as np 6 5 from parameterize import * 7 6 from solve import * … … 12 11 from love_numbers import * 13 12 14 #mesh earth: 15 md=model() 13 #mesh earth: 14 md=model() 16 15 md.mesh=gmshplanet('radius',6.371012*10**3,'resolution',700.) #500 km resolution mesh 17 16 18 17 #parameterize slr solution: 19 #slr loading: {{{20 md.slr.deltathickness= zeros((md.mesh.numberofelements,1))21 md.slr.sealevel= zeros((md.mesh.numberofvertices,1))18 #slr loading: 19 md.slr.deltathickness=np.zeros((md.mesh.numberofelements)) 20 md.slr.sealevel=np.zeros((md.mesh.numberofvertices)) 22 21 #antarctica 23 late=n umpy.sum(md.mesh.lat[md.mesh.elements-1],axis=1)/324 longe=n umpy.sum(md.mesh.long[md.mesh.elements-1],axis=1)/325 pos=n umpy.nonzero(late <-80)22 late=np.sum(md.mesh.lat[md.mesh.elements-1],axis=1)/3 23 longe=np.sum(md.mesh.long[md.mesh.elements-1],axis=1)/3 24 pos=np.where(late <-80) 26 25 md.slr.deltathickness[pos]=-100 27 26 #greenland 28 pos=n umpy.nonzero(logical_and_n(late > 70,late < 80,longe>-60,longe<-30))27 pos=np.where(np.logical_and.reduce((late > 70,late < 80,longe>-60,longe<-30))) 29 28 md.slr.deltathickness[pos]=-100 30 29 31 #elastic loading from love numbers: 30 #elastic loading from love numbers: 32 31 nlov=101 33 md.slr.love_h = love_numbers('h')[:nlov] ;34 md.slr.love_k = love_numbers('k')[:nlov] ;35 md.slr.love_l = love_numbers('l')[:nlov] ;32 md.slr.love_h = love_numbers('h')[:nlov] 33 md.slr.love_k = love_numbers('k')[:nlov] 34 md.slr.love_l = love_numbers('l')[:nlov] 36 35 37 #}}} 38 #mask: {{{ 39 md.mask=maskpsl() # use maskpsl class (instead of mask) to store the ocean function as a ocean_levelset 40 mask=gmtmask(md.mesh.lat,md.mesh.long) 36 #mask: 37 md.mask=maskpsl() # use maskpsl class (instead of mask) to store the ocean function as a ocean_levelset 38 mask=gmtmask(md.mesh.lat,md.mesh.long) 41 39 42 icemask=ones((md.mesh.numberofvertices,1)) 43 pos=nonzero(mask==0)[0]; icemask[pos]=-1 44 pos=nonzero(sum(mask[md.mesh.elements.astype(int)-1],axis=1)<3)[0] 40 icemask=np.ones((md.mesh.numberofvertices)) 41 pos=np.where(mask==0)[0] 42 icemask[pos]=-1 43 pos=np.where(np.sum(mask[md.mesh.elements.astype(int)-1],axis=1)<3)[0] 45 44 icemask[md.mesh.elements[pos,:].astype(int)-1]=-1 46 45 md.mask.ice_levelset=icemask 47 46 48 md.mask.ocean_levelset= zeros((md.mesh.numberofvertices,1))49 pos=n umpy.nonzero(md.mask.ice_levelset==1)47 md.mask.ocean_levelset=np.zeros((md.mesh.numberofvertices)) 48 pos=np.where(md.mask.ice_levelset==1) 50 49 md.mask.ocean_levelset[pos]=1 51 50 52 51 #make sure that the ice level set is all inclusive: 53 md.mask.land_levelset= zeros((md.mesh.numberofvertices,1))54 md.mask.groundedice_levelset=- ones((md.mesh.numberofvertices,1))52 md.mask.land_levelset=np.zeros((md.mesh.numberofvertices)) 53 md.mask.groundedice_levelset=-np.ones((md.mesh.numberofvertices)) 55 54 56 #make sure wherever there is an ice load, that the mask is set to ice: 57 pos=n onzero(md.slr.deltathickness)[0];55 #make sure wherever there is an ice load, that the mask is set to ice: 56 pos=np.nonzero(md.slr.deltathickness)[0] 58 57 icemask[md.mesh.elements[pos,:]-1]=-1 59 # }}} 58 60 59 61 60 #geometry 62 61 di=md.materials.rho_ice/md.materials.rho_water 63 md.geometry.thickness= ones((md.mesh.numberofvertices,1))64 md.geometry.surface=(1-di)* zeros((md.mesh.numberofvertices,1))62 md.geometry.thickness=np.ones((md.mesh.numberofvertices)) 63 md.geometry.surface=(1-di)*np.zeros((md.mesh.numberofvertices)) 65 64 md.geometry.base=md.geometry.surface-md.geometry.thickness 66 65 md.geometry.bed=md.geometry.base 67 66 68 67 #materials 69 md.initialization.temperature=273.25* ones((md.mesh.numberofvertices,1))68 md.initialization.temperature=273.25*np.ones((md.mesh.numberofvertices)) 70 69 md.materials.rheology_B=paterson(md.initialization.temperature) 71 md.materials.rheology_n=3* ones((md.mesh.numberofelements,1))70 md.materials.rheology_n=3*np.ones((md.mesh.numberofelements)) 72 71 73 72 #Miscellaneous … … 75 74 76 75 #Solution parameters 77 md.slr.reltol= NaN76 md.slr.reltol=np.nan 78 77 md.slr.abstol=1e-3 79 78 … … 82 81 md.slr.elastic=0 83 82 md=solve(md,'Sealevelrise') 84 Seustatic=md.results.SealevelriseSolution.Sealevel ;83 Seustatic=md.results.SealevelriseSolution.Sealevel 85 84 86 85 #eustatic + rigid run: … … 88 87 md.slr.elastic=0 89 88 md=solve(md,'Sealevelrise') 90 Srigid=md.results.SealevelriseSolution.Sealevel ;89 Srigid=md.results.SealevelriseSolution.Sealevel 91 90 92 91 #eustatic + rigid + elastic run: … … 94 93 md.slr.elastic=1 95 94 md=solve(md,'Sealevelrise') 96 Selastic=md.results.SealevelriseSolution.Sealevel ;95 Selastic=md.results.SealevelriseSolution.Sealevel 97 96 98 97 #eustatic + rigid + elastic + rotation run: 99 98 md.slr.rigid=1 100 99 md.slr.elastic=1 101 md.slr.rotation=1 ;102 md=solve(md,'Sealevelrise') ;103 Srotation=md.results.SealevelriseSolution.Sealevel ;100 md.slr.rotation=1 101 md=solve(md,'Sealevelrise') 102 Srotation=md.results.SealevelriseSolution.Sealevel 104 103 105 104 #Fields and tolerances to track changes
Note:
See TracChangeset
for help on using the changeset viewer.