TemperateIceSolver

From Elmer Wiki
Jump to: navigation, search

Name of the source code file: TemperateIce.f90
Name(s) of contained subroutine(s): TemperateIceSolver
Name(s) of contained function(s): ---

Description of TemperateIceSolver:
This solver treats the heat transfer problem with respect to an upper limit of the temperature (usually with ice the pressure-melting point, T< T_pm). Optionally, such a limit (and furthermore also a lower limit, e.g., T > 0 K) is introduced by solving the consequent variational inequality problem using an algorithm that - in comparison to the free surface problem - can be interpreted as a contact problem solver. In case of temperature, it basically introduces additional heat sinks/sources in order to comply with the constraints.

Known bugs:

  • timestep was not initialized; caused excessive heating if transient simulations with more than one iteration at the steady state level were done. Fixed June 12

Keywords of TemperateIceSolver:

Solver 1
  Equation = String "Homologous Temperature Equation"
  Procedure =  File "TemperateIce" "TemperateIceSolver"
  ! Comment next line in parallel, as EliminateDirichlet does
  ! not work in parallel
  !------------------------------------------------------------
  Before Linsolve = "EliminateDirichlet" "EliminateDirichlet"
  Variable = String "Temp"
  Variable DOFs = 1
  Linear System Solver = "Iterative"
  Linear System Iterative Method = "BiCGStab"
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0E-07
  Linear System Abort Not Converged = True
  Linear System Preconditioning = "ILU0"
  Linear System Residual Output = 1
  Steady State Convergence Tolerance = 1.0E-04
  Nonlinear System Convergence Tolerance = 1.0E-05
  Nonlinear System Max Iterations = 50
  Nonlinear System Relaxation Factor = Real 9.999E-01
  ! uses the contact algorithm (aka Dirichlet algorithm)
  !-----------------------------------------------------
  Apply Dirichlet = Logical True
  Stabilize = True
  ! those two variables are needed in order to store
  ! the relative or homologous temperature as well
  ! as the residual
  !-------------------------------------------------
  Exported Variable 1 = String "Temp Homologous"
  Exported Variable 1 DOFs = 1
  Exported Variable 2 = String "Temp Residual"
  Exported Variable 2 DOFs = 1
End

Body Force 1
  ...
  Temp Volume Source = Real 1.0E00 ! The volumetric heat source
End

Material 1
   ...
   ! the heat capacity as a MATC function of temperature itself
   !-----------------------------------------------------------
   Temp Heat Capacity = Variable Temp
    Real MATC "capacity(tx)*1.0E06*(31556926.0)"
   ! the heat conductivity as a MATC function of temperature itself
   !--------------------------------------------------------------
   Temp Heat Conductivity = Variable Temp
    Real MATC "conductivity(tx)"
   ! Upper limit - pressure melting point
   !  as a MATC function of the pressure (what else?)
   !-------------------------------------------------
   Temp Upper Limit = Variable Pressure
         Real MATC "pressuremeltingpoint(tx)"
   ! lower limit (to be save) as 0 K
   !--------------------------------
    Temp Lower Limit = Real 0.0
End

Boundary Condition 1
   ...
  ! Temperature distribution as a MATC function of elevation
  !---------------------------------------------------------
  Temp = Variable Coordinate 3
       Real MATC "SurfTemp(tx)"
End

Boundary Condition 2
  ...
  !-------------------
  ! geothermal heatflux
  !--------------------
  Temp Flux BC = Logical True
  Temp Heat Flux = Real 56.05E-03
End