Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/elmerice/Tests/Buoyancy/buoyancy.sif
3206 views
check keywords warn

echo on


$yearinsec = 365.25*24*60*60
$rhoi = 900.0/(1.0e6*yearinsec^2)   
$rhow = 1000.0/(1.0e6*yearinsec^2) 

Header
  Mesh DB "." "mesh"
End

Constants
! For the Buoyancy User function
  Buoyancy Use Basal Melt = Logical True 
  Bottom Surface Name = String "Zs Bottom"
  Water Density = Real $rhow       
End

!---------------------------------------------------
!---------------- SIMULATION -----------------------
!---------------------------------------------------

Simulation
  Coordinate System  = Cartesian 2D
  Simulation Type = Transient

  Timestepping Method = "bdf"
  BDF Order = 1
  Timestep Intervals = 5
  Output Intervals = 1        
  Timestep Sizes = 1.0

  Steady State Max Iterations = 1 !20
  Steady State Min Iterations = 1

  Post File = "buoyancy.vtu"

  max output level = 4
End

!---------------------------------------------------
!---------------- BODIES ---------------------------
!---------------------------------------------------

!! the ice core (3d)
Body 1
  Name = "ice"
  Equation = 1
  Body Force = 1
  Material = 1
  Initial Condition = 1
End

Body 2
  Name= "top free surface"
  Equation = 2
  Material = 1
  Body Force = 2
  Initial Condition = 2
End

Body 3
  Name= "free surface sea/ice-shelf"
  Equation = 3
  Material = 1
  Body Force = 3
  Initial Condition = 3
End

!---------------------------------------------------
!---------------- INITIAL CONDITIONS ---------------
!---------------------------------------------------

!! for ice core
Initial Condition 1
  Pressure = Real 0.0e0
  Velocity 1 = Real 0.0e0
  Velocity 2 = Real 0.0e0
End

!! for top free surface
Initial Condition 2
  ZsTopIni = Equals Coordinate 2
  Zs Top = Equals Coordinate 2
End

!! For free surface sea/ice-shelf
Initial Condition 3
  ZsBottomIni = Equals Coordinate 2
  Zs Bottom = Equals Coordinate 2
End

!---------------------------------------------------
!---------------- BODY FORCES ----------------------
!---------------------------------------------------

Body Force 1
  Flow BodyForce 1 = Real 0.0
  Flow BodyForce 2 = Real -9.746289e15  !MPa - a - m

  Mesh Update 1 = Real 0.0
End

Body Force 2
!! accumulation flux in m/year
!! positive number
  Zs Top Accumulation Flux 1 = Real 0.0e0
  Zs Top Accumulation Flux 2 = Real 0.5e0
End

Body Force 3
!! melting/accretion under ice/shelf
!! positive for melting
!! negative for accretion
  Zs Bottom Accumulation = Real 0.5e0

End

!---------------------------------------------------
!---------------- MATERIALS ------------------------
!---------------------------------------------------

!! ice material properties in MPa - m - a system 
Material 1
  Density = Real $rhoi     
  Viscosity = Real 5.412374e-1
  Viscosity Model = String "power law"
  Viscosity Exponent = Real $1.0/3.0
  Critical Shear Rate = Real 1.0e-10

  Sea level = Real 0.0

  !! Surface condition
  Min Zs Top = REal -1.0e6
  Max Zs Top = Real 1.0e6

  !! Bed condition
  Min Zs Bottom = Real -1.0e6
  Max Zs Bottom = Real 1.0e6

  !! for computeDevStress
  Cauchy = Logical True

End

!---------------------------------------------------
!---------------- SOLVERS --------------------------
!---------------------------------------------------

Solver 1
  Equation = "Navier-Stokes"
  Linear System Solver = Direct
  Linear System Direct Method = Umfpack

  Nonlinear System Max Iterations = 50
  Nonlinear System Convergence Tolerance  = 1.0e-5
  Nonlinear System Newton After Iterations = 100
  Nonlinear System Newton After Tolerance = 1.0e-06
  Nonlinear System Relaxation Factor = 1.00

  Steady State Convergence Tolerance = Real 1.0e-4

  Stabilization Method = String Bubbles
  Flow Model = String "Stokes"

  Exported Variable 1 = Flow Solution Loads[Stress Vector:2 CEQ Residual:1] 
  Calculate Loads = Logical True
End

Solver 2
  Equation = "Free Surface Top"
  Variable = "Zs Top"

  Variable DOFs = 1
  Exported Variable 1 = "Zs Top Residual"
  Exported Variable 1 DOFs = 1
  Exported Variable 2 = "ZsTopIni"
  Exported Variable 2 DOFs = 1

  Procedure =  "FreeSurfaceSolver" "FreeSurfaceSolver"
  !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-5
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1

  Linear System Use Hypre = Logical False

  Nonlinear System Max Iterations = 100
  Nonlinear System Convergence Tolerance  = 1.0e-6
  Nonlinear System Relaxation Factor = 1.00

  Steady State Convergence Tolerance = 1.0e-03

  Stabilization Method = Stabilized
  Apply Dirichlet = Logical True

! How much the free surface is relaxed
!  Relaxation Factor = Real 1.0
End

Solver 3
  Equation = "Free Surface Sea/Shelf"
  Variable = "Zs Bottom"

  Variable DOFS =  1
  Exported Variable 1 = "Zs Bottom Residual"
  Exported Variable 1 DOFs = 1
  Exported Variable 2 = "ZsBottomIni"
  Exported Variable 2 DOFs = 1

  Procedure =  "FreeSurfaceSolver" "FreeSurfaceSolver"
  !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-9
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1

  Linear System Use Hypre = Logical False

  Nonlinear System Max Iterations = 100
  Nonlinear System Convergence Tolerance  = 1.0e-6
  Nonlinear System Relaxation Factor = 1.00

  Steady State Convergence Tolerance = 1.0e-03

  Stabilization Method = Stabilized
  Apply Dirichlet = Logical True

! How much the free surface is relaxed
!  Relaxation Factor = Real 1.0
End

Solver 4
  !Exec Solver = Never
  Equation = "Mesh Update"

  Linear System Solver = "Direct"
  Linear System Direct Method = Umfpack

  Steady State Convergence Tolerance = 1.0e-04
End

Solver 5 !la surface du haut ne doit pas bouger
  Exec Solver = After TimeStep
  Equation = SaveScalars
  Procedure = File "SaveData" "SaveScalars"
  Filename = "results.dat"
  File Append = Logical True

  Variable 1 = String "Time"

  Variable 2 = String "Zs Top"
  Operator 2 = String "int"

  Variable 3 = String "Zs Top"
  Operator 3 = String "max"

  Variable 4 = String "Zs Top"
  Operator 4 = String "min" 

  Operator 5 = String "cpu time"
End


!---------------------------------------------------
!---------------- EQUATIONS ------------------------
!---------------------------------------------------

Equation 1
  Active Solvers(3) = 1 4 5
End

Equation 2
  Active Solvers(1) = 2
  !! options pour le free surface (top)
  Flow Solution Name = String "Flow Solution"
  Convection = String Computed
End 

Equation 3
  Active Solvers(1) = 3
  !! options pour le free surface (bottom)
  Flow Solution Name = String "Flow Solution"
  Convection = String Computed
End

!---------------------------------------------------
!---------------- BOUNDARY CONDITIONS --------------
!---------------------------------------------------

!! BC  Bedrock + Shelf
Boundary Condition 1
  Name = "bottom"
  Target Boundaries = 1
  Body Id = 3

  Flow Force BC = Logical True
!
! Shelf conditions
!
  External Pressure = Variable Coordinate 2
   Real Procedure "ElmerIceUSF" "SeaPressure"
  
  Slip Coefficient 2 = Variable Coordinate 2
    Real Procedure "ElmerIceUSF" "SeaSpring"

  Mesh Update 1 = Real 0.0
  Mesh Update 2 = Variable Zs Bottom, ZsBottomIni
    Real MATC "tx(0)-tx(1)"

  Compute Sea Pressure = Logical True
  Compute Sea Spring = Logical True
End

!! BC Lateral Ice-Shelf (air or sea contact)
Boundary Condition 2
  Name = "front"
  Target Boundaries = 2

  Mesh Update 1 = Real 0.0
  Velocity 1 = Real 0.0
End

!! BC  Free surface Top
Boundary Condition 3
  Name = "top"
  Target Boundaries = 3
  Body Id = 2

  Mesh Update 1 = Real 0.0e0
  Mesh Update 2 = Variable Zs Top, ZsTopIni
    Real MATC "tx(0)-tx(1)"
End

!! Symmetry axis
Boundary Condition 4
  Name = "back"
  Target Boundaries = 4

  Velocity 1 = Real 0.0
  Mesh Update 1 = Real 0.0
End

Solver 2 :: Reference Norm = Real 9.9999999
Solver 2 :: Reference Norm Tolerance = Real 1E-06