Important changes have been made in
SSABasalSolver
. This doc applies from Rev. 6480.
SSASolver.f90
SSABasalSolver
, (2) GetMeanValueSolver
and (3) SSASolver
SSAVelocity
Mean Viscosity
and Mean Density
SSAFlow
Zb
, Zs
and Effective Pressure
when using the Coulomb type friction lawDepth
Depth
, FreeSurfGrad1
, FreeSurfGrad2
and SSABasalFlow
The SSABasalSolver
solve the classical SSA equation, it has been modified in Rev. 6440 to be executed either on a grid of dimension lower than the problem dimension itself (i.e. the top or bottom grid of a 2D or 3D mesh for a SSA 1D or 2D problem), or on a grid of the same dimension of the problem (i.e. 2D mesh for a 2D plane view SSA solution).
It will work on a 3D mesh only if the mesh as been extruded along the vertical direction and if the base line boundary conditions have been preserved (to impose neumann conditions).
The mandatory input variables are the bottom surface elevation and top surface elevation variables called Zb
and Zs
, respectively.
For the Flow law the SSA solver use a “power-law” formulation and use the keywords Viscosity Exponent
, Critical Shear Rate
, and Mean Viscosity
. It Doesn't work with the build-in Glen's flow law (TODO).
Newton linearisation of the viscosity can be used using the keywords Nonlinear System Newton After Tolerance
and/or
Nonlinear System Newton After Iterations
. It is automatically reset to False at the beginning of a new iteration.
The Mean Density
and Mean Viscosity
, if not uniform along the vertical direction, can be computed using the GetMeanValueSolver
routine or the StucturedProjectToPlan
solver (preferred solution).
Contrary to the NS solver, the gravity must be orientated along the z-axis and is taken from the value of
Flow BodyForce 2
for a SSA-1D problem or Flow BodyForce 3
for a SSA-2D problem.
A Neumann condition on the lateral boundaries can be applied with the keyword Calving front = Logical True
in the Bounadry condition section. The condition is : 0.5 * g * (rho_ice * h^2 - rho_water * h_im^2)
where
Flow BodyForce i
Mean Density
water density
taken from the constants
section (or default=1.03225e-18)Zs-Zb
Sea Level - Zb
, where Sea Level
is taken from the constants
section (or default=0.0).
Note that in the absence of explicit boundary condition (no dirichlet condition or Calving front = Logical True
not found) the natural boundary condition is force equilibrium (rho_ice * h^2 = rho_water * h_im^2).
The SSA velocities and pressure can be used, for example, as initial conditions for the Stokes Solver.
When the SSA solution is computed on a boundary of a mesh of dimension larger than the SSA problem (e.g. a 3D mesh for a SSA-2D problem), the SSA solution computed on the boundary can be
StructuredProjectToPlane
solver (preffered solution) or the SSASolver
routine Since version 6480, there are three friction laws implemented in the SSA solver:
where
and
The two latests are non-linear and a Newton linearisation can be used. The friction law is chosen using the keyword SSA Friction Law
, which takes the value Linear
, Weertman
or Coulomb
. The other keywords are:
SSA Friction Parameter
→ SSA Friction Parameter
→ SSA Friction Exponent
→ SSA Friction Linear Velocity
→ SSA Friction Parameter
→ SSA Friction Exponent
→ SSA Friction Linear Velocity
→ SSA Friction Post-Peak
→ SSA Friction Maximum Value
→ Effective Pressure
(variable) → SSA Min Effective Pressure
→
When ,
in the previous equations is replaced by
.
Solver section:
Solver 1 Equation = "SSA" Procedure = File "ElmerIceSolvers" "SSABasalSolver" Variable = String "SSAVelocity" Variable DOFs = 2 ! 1 in SSA 1-D or 2 in SSA-2D Linear System Solver = Direct Linear System Direct Method = umfpack Nonlinear System Max Iterations = 100 Nonlinear System Convergence Tolerance = 1.0e-08 Nonlinear System Newton After Iterations = 5 Nonlinear System Newton After Tolerance = 1.0e-05 Nonlinear System Relaxation Factor = 1.00 Steady State Convergence Tolerance = Real 1.0e-3 End
Material Properties:
Material 1 ! Material properties Viscosity Exponent = Real $1.0/n Critical Shear Rate = Real 1.0e-10 SSA Mean Viscosity = Real $eta SSA Mean Density = Real $rhoi ! Needed for Linear, Weertman and Coulomb ! Which law are we using (linear, weertman or coulomb) SSA Friction Law = String "Coulomb" ! beta parameter (beta = 1/As^m) SSA Friction Parameter = Variable coordinate 1 , Coordinate 2 Real MATC "1.0e-3*(1.0 + sin(2.0*pi* tx(0) / L)*sin(2.0*pi* tx(1) / L)) ! Needed for Weertman and Coulomb ! Exponent m SSA Friction Exponent = Real $1.0/n ! Min velocity for linearisation where ub=0 SSA Friction Linear Velocity = Real 0.0001 ! Needed for Coulomb only ! post peak exponent in the Coulomb law (q, in Gagliardini et al., 2007) SSA Friction Post-Peak = Real 1.0 ! Iken's bound tau_b/N < C (see Gagliardini et al., 2007) SSA Friction Maximum Value = Real 0.5 End
Body Forces:
Body Force 1 Flow BodyForce 1 = Real 0.0 Flow BodyForce 2 = Real 0.0 Flow BodyForce 3 = Real $gravity End
Constants:
Constants ! Used for Neumann condition Water Density = Real .... Sea Level = Real ... End
Boundary Conditions:
Boundary Condition 1 ! Dirichlet condition SSAVelocity 1 = Real ... SSAVelocity 2 = Real ... End Boundary Condition 1 ! Neumann Condition Calving Front = Logical True End
For the “GetMeanValueSolver” routine, the required keywords in the SIF file for this solver are:
Solver 1 Equation = "SSA-IntValue" Procedure = File "ElmerIceSolvers" "GetMeanValueSolver" Variable = -nooutput String "Integrated variable" Variable DOFs = 1 Exported Variable 1 = String "Mean Viscosity" Exported Variable 1 DOFs = 1 Exported Variable 2 = String "Mean Density" Exported Variable 2 DOFs = 1 Linear System Solver = Direct Linear System Direct Method = umfpack Steady State Convergence Tolerance = Real 1.0e-3 End !!! Upper free surface Boundary Condition 1 Depth = Real 0.0 Mean Viscosity = Real 0.0 Mean Density = real 0.0 End
For the “SSASolver” routine, the required keywords in the SIF file for this solver are:
Solver 4 Equation = "SSA Velocity" Procedure = File "ElmerIceSolvers" "SSASolver" Variable = -nooutput String "varSSA" Variable DOFs = 1 Exported Variable 1 = String "SSAFlow" Exported Variable 1 DOFs = 4 ! 3 in 2D, 4 in 3D Linear System Solver = Direct Linear System Direct Method = umfpack Steady State Convergence Tolerance = Real 1.0e-3 End !!! bedrock Boundary Condition 1 SSAFlow 1 = Equals SSAVelocity 1 SSAFlow 2 = Equals SSAVelocity 2 SSAFlow 3 = Real 0.0e0 End !!! Upper free surface Boundary Condition 2 Depth = Real 0.0 SSAFlow 4 = Real 0.0 ! p=0 at the surface End
If one wants to solve the SSA + SIA, the sif will read:
Solver 4 Equation = "SIA Velocity" Procedure = File "SIASolver" "SIASolver" Variable = -nooutput String "varSIA" Variable DOFs = 1 Exported Variable 1 = String "SIAFlow" Exported Variable 1 DOFs = 4 ! 3 in 2D, 4 in 3D Linear System Solver = Direct Linear System Direct Method = umfpack Steady State Convergence Tolerance = Real 1.0e-3 End !!! bedrock Boundary Condition 1 ... SIAFlow 1 = Equals SSAVelocity 1 SIAFlow 2 = Equals SSAVelocity 2 SIAFlow 3 = Real 0.0e0 ... End !!! Upper free surface Boundary Condition 2 ... SIAFlow 4 = Real 0.0 ! p=0 at the bottom End
For examples look in your elmer source distribution under [ELMER_TRUNK]/elmerice/Tests/SSA
and under [ELMER_TRUNK]/elmerice/examples/Test_SSA
.