Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/elmerice/Solvers/Documentation/CalvingGlacierAdvance3D.md
3206 views

Solver/User Function GlacierAdvance3D

General Information

  • Solver/User Function Fortran File: CalvingGlacieradvance3D.F90

  • Solver/User Function Name: Glacieradvance3D

  • Required Output Variable(s): FrontAdvance

  • Required Input Variable(s):

  • Normal Vector Variable Name = String "Front Normal Vector"

  • Flow Solution Variable Name = String "Flow Solution"

  • Optional Output Variable(s): None

  • Optional Input Variable(s):

  • Melt Variable Name = String "FrontMelt"

  • Solver Keywords:

  • Ignore Velocity = Logical False. Permits frontal melt only

  • Left Rail File Name = File ... location of left rail xy file

  • Left Rail Number Nodes = Integer 12. The number of rail nodes in the above file.

  • Right Rail File Name = File ... location of right rail xy file.

  • Right Rail Number Nodes = Integer 12. The number of rail nodes in the above file.

  • Rail Buffer = Real 0.1. The acceptable error that lateral nodes can deviate from the rails.

General Description

This solver predicts the terminus advance based of the velocity field, a set of fjord rails and a melt field. The details of how this fits into the calving algorithm can be found here.

Known Bugs and Limitations

Can cause minor artifical mass change. See calving algorithm document for more details.

SIF Contents

The required keywords in the SIF file for this solver/USF are:

Solver n Equation = "Front Advance" Procedure = File "ElmerIceSolvers" "GlacierAdvance3D" Exec Solver = "After Timestep" Save Exec When = String "After Timestep" Variable = -dofs 3 "FrontAdvance" Normal Vector Variable Name = String "Front Normal Vector" Flow Solution Variable Name = String "Flow Solution" Ignore Velocity = Logical False !Permits frontal melt only Left Rail Number Nodes = Integer 12 Right Rail Number Nodes = Integer 12 Rail Buffer = Real 0.1 End Solver n+1 ! modify the mesh using front advance variable Equation = "Longitudinal Mesh Update" ! usually, the solver is executed only after the thermo-mechanical ! problem has obtained a solution on the time-level Procedure = File "MeshSolve" "MeshSolver" Exec Solver = "After Timestep" Save Exec When = String "After Timestep" Solver Timing = Logical True Variable = Longitudinal Mesh Update Variable DOFs = 3 Linear System Solver = Iterative Linear System Iterative Method = BiCGStab Linear System Max Iterations = 500 Linear System Preconditioning = ILU1 Linear System Convergence Tolerance = 1.0e-12 Linear System Abort Not Converged = False Nonlinear System Max Iterations = 1 Nonlinear System Convergence Tolerance = 1.0e-06 First Time Non-Zero = Logical True End Boundary Condition 1 ! front Longitudinal Mesh Update 1 = Equals FrontAdvance 1 Longitudinal Mesh Update 2 = Equals FrontAdvance 2 Longitudinal Mesh Update 3 = Equals FrontAdvance 3 End Boundary Condition 2 ! sidewalls Longitudinal Mesh Update 1 = Equals FrontAdvance 1 Longitudinal Mesh Update 2 = Equals FrontAdvance 2 Longitudinal Mesh Update 3 = Equals FrontAdvance 3 End

To restrict the mesh update to only a small section of the domain add:

Body Force Longitudinal Mesh Update 1 = Real 0.0 Longitudinal Mesh Update 2 = Real 0.0 Longitudinal Mesh Update 3 = Real 0.0 Longitudinal Mesh Update 1 Condition = Variable Distance Real MATC "tx-1500" Longitudinal Mesh Update 2 Condition = Variable Distance Real MATC "tx-1500" Longitudinal Mesh Update 3 Condition = Variable Distance Real MATC "tx-1500" End

Examples

An example using the full calving algorithm can be found here [ELMER_TRUNK]/elmerice/Tests/Calving3D_lset

References

Iain Wheel PhD thesis - DOI: https://doi.org/10.17630/sta/611. Full calving algorithm detailed here.