# TemperateIceSolver

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```