Warning: Undefined array key 1 in /home/np29546/public_html/elmerice/wiki/inc/auth.php on line 78

Warning: Cannot modify header information - headers already sent by (output started at /home/np29546/public_html/elmerice/wiki/inc/auth.php:78) in /home/np29546/public_html/elmerice/wiki/inc/auth.php on line 431

Warning: Cannot modify header information - headers already sent by (output started at /home/np29546/public_html/elmerice/wiki/inc/auth.php:78) in /home/np29546/public_html/elmerice/wiki/inc/Action/Export.php on line 104

Warning: Cannot modify header information - headers already sent by (output started at /home/np29546/public_html/elmerice/wiki/inc/auth.php:78) in /home/np29546/public_html/elmerice/wiki/inc/Action/Export.php on line 104

Warning: Cannot modify header information - headers already sent by (output started at /home/np29546/public_html/elmerice/wiki/inc/auth.php:78) in /home/np29546/public_html/elmerice/wiki/inc/Action/Export.php on line 104
~~NOTOC~~ ===== Solving the age equation ===== ==== General Description ==== This page explains how to use the general AdvectionReactionSolver from the Elmer distribution to get Age/Depth relation: {{\partial A}/{\partial t}} + u . grad(A) =1 The AdvectionReactionSolver solves the general equation {{\partial A}/{\partial t}} + div (A u) + gamma A=sigma In the particular case of the age equation, one has gamma = -epsilon_m and sigma = 1. Obviously gamma = 0 for an incompressible flow. For a compressible flow (snow/firn rheology), the trace of the strain-rate tensor epsilon_m should be evaluated using the [[solvers:strainrate|ComputeStrainRate Solver]] or directly from the [[solvers:porous|Porous Solver]]. ==== SIF contents ==== The Solver section looks as Solver 8 Equation = "AdvReact" Exec Solver = "After Timestep" Procedure = File "AdvectionReaction" "AdvectionReactionSolver" ! this is the DG variable, which is not part of the output Variable = -nooutput "DGAge" ! this tells that the solver is run on DG mesh Discontinuous Galerkin = Logical True ! the solver can account for upper and lower limits of the variable ! imposed by formulation of an variational inequality (VI) ! next line switches the VI to be accounted for Limit Solution = Logical True Linear System Solver = Iterative Linear System Iterative Method = BiCGStab Linear System Max Iterations = 1000 Linear System Preconditioning = ILU1 Linear System Convergence Tolerance = 1.0e-06 ! Variational inequality makes it a non-linear problem Nonlinear System Max Iterations = 40 Nonlinear System Min Iterations = 2 Nonlinear System Convergence Tolerance = 1.0e-04 ! This is the variable that is used to interpolate ! the DG solution to the regular FEM mesh in order ! to get a correct output Exported Variable 1 = Age Exported Variable 1 DOFS = 1 End The source in case of the age/depth equation is 1 (da/dt + u da/dx + ... = 1) Body Force 1 ... DGAge Source = Real 1.0 ! result in years End Initial and boundary conditions are then being set for the DG variable and not the exported one! Initial Condition 1 ... DGAge = Real 0.0 End ! only Dirichlet BC can be set ! the solver automatically uses this ! condition only on inflow boundaries ! outflow boundaries are ignored Boundary Condition 2 Name = "surf" Target Boundaries = 2 Body ID = 2 ... ! fresh snow or ice DGAge = Real 0.0 End ! a suggestion for a trick at no-slip BC's to ! keep the age in bounds !---------------------------------------------- Boundary Condition 1 Name = "bedrock" Normal-Tangential Velocity = True ! normal outflow velocity set to a very small value ! in order to avoid infinitely large age values Velocity 1 = Real 1.0e-06 (a micro-meter per year) ! no-slip tangential !------------------- Velocity 2 = Real 0.0 Velocity 3 = Real 0.0 . . . End Just make sure that a free surface can have both, inflow and outflow. NB: If you have a model for re-freezing at the bedrock, you also should set a DGAge = Real 0.0 on this boundary. The Material section contains the reaction rate as well as the upper/lower limit for the DG variable Material 1 .. ! this has to be sometimes set in diagnostic ! runs to avoid infinite [actually O(1/machine precision)] ! ages at stagnation points in the flow field DGAge Upper Limit = Real 100000 ! well, no ice from the future ! anyway, if you have a well behaving velocity field ! you should not be in need of that constraint DGAge Lower Limit = Real 0 !this would be a reaction rate, ! is equal to -tr(Eij) (minus trace of the strain-rate) ! in the case of an incompressible material (ice), it is then 0 DGAge Gamma = Real 0.0 End ==== Example ==== An example using the ''AdvectionReaction'' solver to solve the age equation can be found in ''[ELMER_TRUNK]/elmerice/examples/Test_Dating''. For a steady 1D flow, the dating equation simplifies to dA/dx = 1/u and solutions are of the form A = ln(Kv) with u = v/v'.\\ Two tests can be also found in ''[ELMER_TRUNK]/elmerice/Tests/Dating'' and ''[ELMER_TRUNK]/elmerice/Tests/Density''.