Hello everyone,
I am trying to do a transient run for Greenland with SIA (for a start with SMB=0 everywhere) just to see how the various approximations behave. I am basically using the ISSM Greenland tutorial. I did transient simulations for the same domain with SSA and HO and they work fine, but when I try to do the same with SIA I get enormous peaks (>1e8m/yr) in the surface velocity after a couple of decades and the simulation stops after a while with:
??? Error using ==> ./solutionsequences/solutionsequence_linear.cpp
solutionsequence_linear error message: solver residue too high!: norm(KU-F)/norm(F)=0.000165554
Since the inversion seems not to be supported for SIA, I need to provide proper parameters for the friction law I use. I tried runs with the default friction law (md.friction=friction()) and the Weertman friction law (md.friction=frictionweertman()). All combinations I tried, gave similar results concerning the velocity peaks. Here are some of the friction combinations I tried:
1) Just the parameters from the Greenland tutorial:
md.friction=friction()
md.friction.coefficient=30*npy.ones((md.mesh.numberofvertices,1))
pos=npy.where(md.mask.groundedice_levelset<0)
md.friction.coefficient=0 # no friction applied on floating ice
md.friction.p=npy.ones((md.mesh.numberofelements,1))
md.friction.q=npy.ones((md.mesh.numberofelements,1))
2)
md.friction=frictionweertman()
md.friction.C=1e-12*npy.ones((md.mesh.numberofvertices,1))
md.friction.m=1*npy.ones((md.mesh.numberofelements,1))
3) Parameter values I found in the Elmer/Ice online documentation.
md.friction=frictionweertman()
md.friction.C=2.412579e-2*npy.ones((md.mesh.numberofvertices,1))
md.friction.m=1.0/3.0*npy.ones((md.mesh.numberofelements,1))
For the ice rheology I just use the the values from the Greenland tutorial:
md.materials.rheology_n=3*npy.ones((md.mesh.numberofelements,1))
md.materials.rheology_B=paterson(md.initialization.temperature)
md.friction.q=npy.ones((md.mesh.numberofelements,1))
md.friction.p=npy.ones((md.mesh.numberofelements,1))
The whole domain is set to being grounded and ice is existing everywhere (minimum of 1m ice), only the edges are set to be the ice front:
pos0=npy.where(md.geometry.thickness<=0)
md.geometry.thickness=1
md.geometry.surface=md.geometry.thickness+md.geometry.base
md.mask.ice_levelset=0
But I also did a run where I did not set the ice front => same result. The velocity peaks appear to be at the edges of the domain or at least close to the edges.
In the end I would like to use a combination of SIA and SSA for Greenland, e.g. use SSA where surface velocity > threshold, else SIA. I hope that should be possible in theory?
Any ideas or recommendations are highly appreciated.
I am using the ISSM developer version at revision 20920 with the python interface.
Cheers
Andreas