This is an old revision of the document!
The aim of these user functions is to apply the water hydrostatic pressure induced by the ocean at the base and at the front of floating ice mass.
The first user function (SeaPressure) is simply used to apply the hydrostatic water pressure for a given sea level (-rho_w. g . (Hsl - S - b.Ns.dt), where b is the normal basal melt/accretion rate (positive for melting). Basal melt is only accounted for where the viscous spring (see below) is also applied.
The second user function (SeaSpring) evaluate the viscous spring (rho_w.g.Ns.dt) induced by any shift of the free surface from the hydrostatic equilibrium. This term should vanish for a steady-state geometry but is required for a transient state.
In case of basal melting, the value of the basal melting is read from the Accumulation keyword of the bottom free surface. To work, on should define only one body force section for the ice domain and the bottom free surface.
The required keywords in the SIF file for these user functions are:
! Body force for ice AND bottom free surface Body Force 1 Flow BodyForce 1 = Real 0.0 Flow BodyForce 2 = Real 0.0 Flow BodyForce 3 = Real -9.746289e15 !MPa - a - m ... !! melting/accretion under ice/shelf !! positive for melting !! negative for accretion Zs Bottom Accumulation = Real 0.5e0 ! For the Buoyancy User function Buoyancy Use Basal Melt = Logical True Bottom Surface Name = String "Zs Bottom" End Material 1 ... Sea level = Real 0.0 End !! vertical front (air and sea contact) Boundary Condition 2 Name = "front" Target Boundaries = 2 Flow Force BC = Logical True External Pressure = Variable Coordinate 3 Real Procedure "./Buoyancy" "SeaPressure" Compute Sea Pressure = Logical True End !! Bottom BC (Sea contact) Boundary Condition 1 Name = "bottom" Target Boundaries = 5 Body Id = 3 Normal-Tangential Velocity = Logical True Flow Force BC = Logical True External Pressure = Variable Coordinate 3 Real Procedure "./Buoyancy" "SeaPressure" Slip Coefficient 1 = Variable Coordinate 3 Real Procedure "./Buoyancy" "SeaSpring" Compute Sea Pressure = Logical True Compute Sea Spring = Logical True End
An example of the usage of the user function SeaPressure can be found in the Tête Rousse application. An other example can be downloaded here. This example is simply a floating iceberg with basal melting equals to the surface accumulation. Obviously, if the solution is correct, this iceberg should stay at the same elevation, with a vertical ice velocity equals to the melt/accumulation.