Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/elmerice/examples/Test_Glen_2D/test_glenMATC.sif
3206 views
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!                                       !!
!!  Compare MATC Glen / Glen law         !!
!!                                       !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

check keywords warn
echo on
$L = 20.0e3
$Slope = -tan(0.5 * pi / 180.0)

!! Glen's flow law
!-----------------
$ function glen(Th) {\
   EF = 2.5;\
   AF = getArrheniusFactor(Th);\
   _glen = (2.0*EF*AF)^(-1.0/3.0);\
}

$ function Temp(d) {\
	_Temp = -25.0 + 20.0*d / 1500.0;\
}

!! Arrhenius factor needed by glen
!! (in SI units)
!---------------------------------
$ function getArrheniusFactor(T){ \
    Th=T;\
    A1=1.258e13;\
    A2=6.046e28;\
    if (Th<-60) Th=-60.0;\
    if (Th<-10) {_getArrheniusFactor= A1 * exp( -60.0E03/(8.314 * (273.15 + Th)));}\
    else {\
       if (Th>0) _getArrheniusFactor=A2 * exp( -139.0E03/(8.314 *  (273.15)));\
            else _getArrheniusFactor=A2 * exp( -139.0E03/(8.314 *  (273.15 + Th)));}\
}


Header
  Mesh DB "." "mesh_B"
End

Constants
! No constant needed
End

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Simulation
  Coordinate System  = Cartesian 2D 
  Simulation Type = Steady State

  Steady State Min Iterations = 1
  Steady State Max Iterations = 1

  Output File = "test_glen_matc.result"
  Post File = "test_glen_matc.ep"
  max output level = 100
End

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Body 1
  Equation = 1
  Body Force = 1
  Material = 1
  Initial Condition = 1
End

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Initial Condition 1
  Pressure = Real 0.0 
  Velocity 1 = Real 0.0 
  Velocity 2 = Real 0.0 
End

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

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Material 1
  Density = Real 9.1376e-19  ! MPa - a - m 

  Viscosity Model = String "power law"
  Viscosity Exponent = $1.0/3.0

  Viscosity = Variable "Depth"
       Real MATC "glen(Temp(tx))"

  Critical Shear Rate = $1.0E-03/31556926.0
End
 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Solver 1
  Exec Solver = Before all    

  Equation = Depth
  Variable = Depth
  Variable DOFs = 1

  Procedure =  "ElmerIceSolvers" "FlowdepthSolver"

  Linear System Solver = direct
  Linear System Direct Method = umfpack

  Gradient = Real -1.0E00
  Calc Free Surface = Logical False
End

Solver 2
  Equation = "Navier-Stokes"
  
  Stabilization Method = String Bubbles
  Flow model = Stokes 

  Linear System Solver = Direct         
  Linear System Direct Method = umfpack

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

  Steady State Convergence Tolerance = Real 1.0e-3
End

 
Solver 3
  Exec Solver =  After TimeStep  ! For transient simulation
  Procedure = File "SaveData" "SaveScalars"
  Filename =  "test_glen_matc.dat"
  File Append = Logical True     ! For transient simulation

  Variable 1 = String "Flow Solution"
  Operator 1 = String "Volume"
  
  Variable 2 = String "Velocity 1"
  Operator 2 = String "Max Abs"

  Variable 3 = String "cpu time"
End

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Equation 1
  Active Solvers(3) = 1 2 3
End

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Bedrock
Boundary Condition 1
  Target Boundaries = 1
  Velocity 1 = Real 0.0e0
  Velocity 2 = Real 0.0e0
End

! Periodic Right
Boundary Condition 2
  Target Boundaries = 2
  Periodic BC = 4 
  Periodic BC Translate(2) = Real $ (L) (L*Slope)  
  Periodic BC Velocity 1  = Logical True
  Periodic BC Velocity 2  = Logical True
  Periodic BC Pressure  = Logical True
  
  Flux integrate = Logical True
End

! Upper Surface
Boundary Condition 3
  Target Boundaries = 3
  
  Depth = Real 0.0
  Save Line = Logical True
  Flux integrate = Logical True
End

! Periodic Left
Boundary Condition 4
  Target Boundaries = 4
  Flux integrate = Logical True
End