User Function USF_Contact

General Informations

  • USF Fortran File: USF_Contact.f90
  • USF Name: SlidCoef_Contact
  • Required Input Variable(s): GroundedMask, Fw, Flow Solution Loads, Normal Vector
  • Optional Input Variable(s): Distance

General Description

The aim of this user function is to test the contact during the non-linear iteration of the Stokes solver. This is done trough the application of the basal sliding. If the Grounding line is retreating, nodes can move from grounded to floating and the variable GroundedMask is updated accordingly. The contact is tested once after the solution of the non-linear iterations has slightly converged and then is keep fix until the complete convergence of the non-linear iterations.

This user functions used the variables GroundedMask computed by GroundedSolver, Fw computed by GetHydrostaticLoads, the residual of the Stokes solver in Flow Solution Loads and the Normal Vector from the ComputeNormal Solver. In case the keyword Non Detachment Inland Distance has a positive value, the variable Distance computed by the Distance Solver of the Elmer distribution is also needed.

SIF contents

The required keywords in the SIF file for these user functions are:

!! BC  Bedrock + Shelf
Boundary Condition 1
  Name = "bottom"
  Target Boundaries = 1
  Body Id = 3
  Grounding Line Moves = Logical True ! Default is true, 
                                      !useful to test influence of not moving the GL
  Non Detachment Inland Distance = 10000.0 ! distance from the GL where nodes 
                                           ! are fixed to the bed for the Free Surface evolution
                                           ! Default is -1000.0 (no nodes fixed) 
                                           ! If > 0.0, needs the Distance Solver
  Slip Coefficient 3 = Variable Coordinate 1
    Real Procedure "ElmerIceUSF" "SlidCoef_Contact"
  Slip Coefficient 2 = Variable Coordinate 1
    Real Procedure "ElmerIceUSF" "SlidCoef_Contact"

  Sliding Law = String "Weertman"  ! Alternative is "Coulomb"
  Weertman Friction Coefficient = Real $C
  Weertman Exponent = Real $(1.0/n)
  Weertman Linear Velocity = Real 1.0
  ! Options are 'Last Grounded' (default), 'First Floating' or 'Discontinuous' 
  Grounding Line Definition = String "Discontinuous"
  Test Contact Tolerance = real 1.0e-3

Depending on the chosen sliding law, the corresponding parameters must be given. See the documentation of the corresponding user functions Weertman and Coulomb.


2D examples can be found in [ELMER_TRUNK]/elmerice/Tests/Contact and [ELMER_TRUNK]/elmerice/Tests/GL_MISMIP.

userfunctions/contact.txt · Last modified: 2014/11/13 12:06 by gag
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