# 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