Solver for the Thickness evolution equation

General Informations

  • Solver Fortran File: ThicknessSolver.f90
  • Solver Name: ThicknessSolver
  • Required Output Variable(s): H
  • Required Input Variable(s): H residual
  • Optional Output Variable(s): dhdt
  • Optional Input Variable(s): FlowSolution

General Description

Solve the Thickness evolution equation:
dh/dt + div(uH) = Ms + Mb

  • u is the mean horizontal velocity
  • Ms and Mb are the surface and bottom mass balance (>0 for accumulation)

This solver is based on the FreeSurfaceSolver and use a SUPG stabilsation scheme by default (residual free bubble stabilization can be use instead).

As for the Free surface solver Min and Max limiters can be used.

As for the Free surface solver only a Dirichlet boundary condition can be imposed.

This solver can be used on a mesh of the same dimension as the problem (e.g. solve on the bottom or top boundary of a 3D mesh to solve the 2D thickness field) or on a mesh of lower dimension (e.g. can be use in a 2D plane view mesh with the SSA Solver solver for example).

When working on a mesh of the same dimension as the problem it can be usefull to have an extruded mesh along the vertical direction and to use the StructuredProjectToPlane and StructuredMeshMapper solvers to compute the mean horizontal velocity (from the Stokes solution), export the value of H computed on one boundary in the whole mesh and update the mesh (see examples).

SIF contents

Solver section:

Solver 1
   Equation = "Thickness"
   Variable = -dofs 1 "H"

   Exported Variable 1 = -dofs 1 "H Residual"

!! To compute dh/dt
   Exported Variable 2 = -dofs 1 "dHdt"
   Compute dHdT = Logical True

  Procedure = "ElmerIceSolvers" "ThicknessSolver"
   Before Linsolve = "EliminateDirichlet" "EliminateDirichlet"

   Linear System Solver = Iterative
   Linear System Max Iterations = 1500
   Linear System Iterative Method = BiCGStab
   Linear System Preconditioning = ILU0
   Linear System Convergence Tolerance = Real 1.0e-12
   Linear System Abort Not Converged = False
   Linear System Residual Output = 1500

! equation is linear if no min/max
   Nonlinear System Max Iterations = 50
   Nonlinear System Convergence Tolerance  = 1.0e-6
   Nonlinear System Relaxation Factor = 1.00

! stabilisation method: [stabilized\bubbles]
  Stabilization Method = stabilized
!! to apply Min/Max limiters
  Apply Dirichlet = Logical True

!! to use horizontal ALE formulation
   ALE Formulation = Logical True

!! To get the mean horizontal velocity

!!  either give the name of the variable
     Flow Solution Name = String "SSAVelocity"
!!!!! or give the dimension of the problem using:
! Convection Dimension = Integer

Material Properties:

Material 1
!! Limiters
  Min H = Real ....
  Max H = Real ....


Body Forces:

Body Force 1
!! Mass balance
  Top Surface Accumulation = Real ....
  Bottom Surface Accumulation = Real ....
!! if the convection velocity is not directly given by a variable
!! Then give //Convection Dimension = Integer// in the solver section 
!! and the Mean velocity here:

  Convection Velocity 1 = Variable int Velocity 1, thickness
     REAL MATC "tx(0)/tx(1)"
  Convection Velocity 2 = Variable int Velocity 2, thickness
     REAL MATC "tx(0)/tx(1)"

Boundary Conditions:

Boundary Condition 1 
! Dirichlet condition only
  H = Real ...


For examples look in your elmer source distribution under [ELMER_TRUNK]/elmerice/Tests/ThicknessSolver or [ELMER_TRUNK]/elmerice/Tests/SSA_IceSheet or [ELMER_TRUNK]/elmerice/examples/Test_SSA.

solvers/thicknesssolver.txt · Last modified: 2014/01/31 11:37 by ltavard
CC Attribution-Share Alike 4.0 International Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0