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/actions.php on line 38
solvers:ssa [Elmer/Ice Wiki]

Warning: Undefined array key -1 in /home/np29546/public_html/elmerice/wiki/inc/html.php on line 1458

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
solvers:ssa [2013/11/25 12:20]
fgillet [General Informations]
solvers:ssa [2017/05/19 05:20] (current)
tzwinger [General Description]
Line 3: Line 3:
  
 ==== General Informations ==== ==== General Informations ====
-:!: **important changes have been made in SSABasalSolverThis doc applies from Rev. 6440**+:!: **Important changes have been made in ''SSABasalSolver''This doc applies from Rev. 6480.**
  
   * **Solver Fortran File:** ''SSASolver.f90''   * **Solver Fortran File:** ''SSASolver.f90''
Line 12: Line 12:
     * (3) ''SSAFlow''     * (3) ''SSAFlow''
   * **Required Input Variable(s):**    * **Required Input Variable(s):** 
-    * (1) ''Zb'', ''Zs'' +    * (1) ''Zb'', ''Zs'' and ''Effective Pressure'' when using the Coulomb type friction law 
-    * (2) ''Depth''+    * (2) ''Depth'' 
     * (3) ''Depth'', ''FreeSurfGrad1'', ''FreeSurfGrad2'' and ''SSABasalFlow''     * (3) ''Depth'', ''FreeSurfGrad1'', ''FreeSurfGrad2'' and ''SSABasalFlow''
   * **Optional Output Variable(s):** None     * **Optional Output Variable(s):** None  
Line 20: Line 20:
  
 ==== General Description ==== ==== General Description ====
-As the [[solvers:sia|SIA Solver]], the SSA solver is not classical in that sense that the equations are not solved on a grid of dimension lower than the problem dimension itself. The geometry (H, B and S) is here given by the mesh. 
-For a flow line problem, the mesh is a plane surface, and a volume for a 3D problem. Regarding this aspect, this solver is certainly not as efficient as a classical SSA solver. But, on the other hand, it works for unstructured grid and non-constant viscosity. The SSA velocities and pressure can be use, for example, as initial conditions for the Stokes Solver. Contrary to the NS solver, the gravity must be orientated along the z-axis.  
  
-The SSA solver uses the same input parameters as the NS solver (''Viscosity''''Density'', ''Viscosity Exponent'', ''Flow BodyForce'',...). Doesn't work with the build-in Glen's flow law (TODO). + 
 +=== Ice flow === 
 + 
 +The ''SSABasalSolver'' solve the classical SSA equation, it has been modified in Rev. 6440 to be executed either on a grid of dimension lower than the problem dimension itself (i.e. the top or bottom grid of a 2D or 3D mesh for a SSA 1D or 2D problem), or on a grid of the same dimension of the problem (i.e. 2D mesh for a 2D plane view SSA solution). \\ 
 + 
 +It will work on a 3D mesh only if the mesh as been extruded along the vertical direction and if the base line boundary conditions have been preserved (to impose neumann conditions). \\ 
 + 
 +The mandatory input variables are the bottom surface elevation and top surface elevation variables called ''Zb'' and ''Zs'', respectively. \\ 
 + 
 +For the Flow law the SSA solver use a "power-law" formulation and use the keywords ''Viscosity Exponent'', ''Critical Shear Rate'', and ''Mean Viscosity''It Doesn't work with the build-in Glen's flow law (TODO).\\ 
 +Newton linearisation of the viscosity can be used using the keywords ''Nonlinear System Newton After Tolerance'' and/or 
 +''Nonlinear System Newton After Iterations''. It is automatically reset to False at the beginning of a new iteration. 
 +  
 +The ''Mean Density'' and ''Mean Viscosity'', if not uniform along the vertical direction, can be computed using the ''GetMeanValueSolver'' routine or the ''StucturedProjectToPlan'' solver (preferred solution). 
 + 
 +Contrary to the NS solver, the gravity must be orientated along the z-axis and is taken from the value of 
 +''Flow BodyForce 2'' for a SSA-1D problem or ''Flow BodyForce 3'' for a SSA-2D problem. 
 + 
 +A Neumann condition on the lateral boundaries can be applied with the keyword ''Calving front = Logical True'' in the Bounadry condition section. The condition is : //0.5 * g * (rho_ice * h^2 - rho_water * h_im^2)// 
 +where\\ 
 +  * //g// is the absolute value of the gravity taken from ''Flow BodyForce i''\\ 
 +  * //rho_ice// is the ice ''Mean Density''\\ 
 +  *  //rho_water// is ''water density'' taken from the ''constants'' section (or default=1.03225e-18)\\ 
 +  * //h// is the front thickness computed as ''Zs-Zb''\\ 
 +  * //h_im// is the thickness below sea level computed as ''Sea Level - Zb'', where ''Sea Level'' is taken from the ''constants'' section (or default=0.0). \\ 
 +Note that in the absence of explicit boundary condition (no dirichlet condition or ''Calving front = Logical True'' not found) the natural boundary condition is force equilibrium (//rho_ice * h^2 = rho_water * h_im^2//). 
 + 
 +The SSA velocities and pressure can be used, for example, as initial conditions for the Stokes Solver.  
 + 
 + 
 +When the SSA solution is computed on a boundary of a mesh of dimension larger than the SSA problem (e.g. a 3D mesh for a SSA-2D problem), the SSA solution computed on the boundary can be 
 +  * exported on the whole mesh using  the ''StructuredProjectToPlane'' solver (preffered solution) or  the  ''SSASolver'' routine \\ 
 +  *  used as a Dirichlet condition for the SIA velocity (see the [[solvers:sia|SIA Solver]]). 
 + 
 +=== Basal friction === 
 + 
 +Since version 6480, there are three friction laws implemented in the SSA solver:  
 + 
 +  * a linear friction law 
 +  <m>  tau_b = beta . u  </m>\\ 
 +  * a Weertman type friction law 
 +  <m>  tau_b = beta.{u_b}^{m - 1} . u  </m>\\ 
 +  * a Coulomb type friction law  
 +<m>  tau_b = 1/{A_s}^{1/n} {[{ 1/ {(1 + alpha . chi^q)} }]}^{1/n} . {u_b}^{1/n-1}. u  </m>\\ 
 +where  
 +<m>  alpha = {(q - 1)^{q-1}}/{q^q}  </m> 
 +and 
 +<m>  chi = {u_b}/{C^n N^n A_s}  </m>\\  
 +  
 +The two latests are non-linear and a Newton linearisation can be used. The friction law is chosen using the keyword ''SSA Friction Law'', which takes the value ''Linear'', ''Weertman'' or ''Coulomb''. The other keywords are:\\ 
 +  * a linear friction law 
 +    * ''SSA Friction Parameter'' -> <m>beta</m>    
 +  * a Weertman type friction law 
 +    * ''SSA Friction Parameter'' -> <m>beta</m> 
 +    * ''SSA Friction Exponent'' -> <m>m</m> 
 +    * ''SSA Friction Linear Velocity'' -> <m>u_{t0}</m> 
 +  * a Coulomb type friction law      
 +    * ''SSA Friction Parameter'' -> <m>beta= {A_s}^{-m}</m> 
 +    * ''SSA Friction Exponent'' -> <m>m = 1/n</m> 
 +    * ''SSA Friction Linear Velocity'' -> <m>u_{t0}</m> 
 +    * ''SSA Friction Post-Peak'' -> <m>q >= 1</m> 
 +    * ''SSA Friction Maximum Value'' -> <m>C</m> ~ max bed slope 
 +    * ''Effective Pressure'' (variable) -> <m>N</m> 
 +    * '' SSA Min Effective Pressure'' -> <m>N_{min}</m>, such that <m>N >= N_{min}</m> 
 + 
 +When  <m>u_b = (u^2+v^2)^{1/2}< u_{t0}</m>, <m>u_b</m> in the previous equations is replaced by <m>u_{t0}</m>.
  
  
-The SSA solution requires to run first the [[solvers:depth|FlowDepth solver]]. After this, the sequence of the solvers is:\\ 
-  * (1) Run the ''GetMeanValueSolver'' routine to infer the vertically integrated value of the viscosity and the mean density.  
-  * (2) Compute the SSA solution on the bedrock boundary using the ''SSABasalSolver'' solver.  
-  * (3) Export vertically the solution previously computed on the bedrock  over the whole domain. This can be either done using the ''SSASolver'' routine (no vertical variation of the velocities) or the [[solvers:sia|SIA Solver]] using the ''SSABasalFlow'' solution as a Dirichlet boundary condition for the SIA velocity.    
  
  
 ==== SIF contents ==== ==== SIF contents ====
-The required keywords in the SIF file for this solver are:+**Solver section:** 
 +<code> 
 +Solver 1 
 +  Equation = "SSA" 
 +  Procedure = File "ElmerIceSolvers" "SSABasalSolver" 
 +  Variable = String "SSAVelocity" 
 +  Variable DOFs = 2   ! 1 in SSA 1-D or 2 in SSA-2D 
 + 
 +  Linear System Solver = Direct 
 +  Linear System Direct Method = umfpack 
 + 
 +  Nonlinear System Max Iterations = 100 
 +  Nonlinear System Convergence Tolerance  = 1.0e-08 
 +  Nonlinear System Newton After Iterations = 5 
 +  Nonlinear System Newton After Tolerance = 1.0e-05 
 + 
 +  Nonlinear System Relaxation Factor = 1.00 
 + 
 +  Steady State Convergence Tolerance = Real 1.0e-3 
 +End 
 +</code> 
 + 
 + 
 +**Material Properties:**  
 +<code> 
 +Material 1 
 + 
 +! Material properties 
 +  Viscosity Exponent = Real $1.0/n 
 +  Critical Shear Rate = Real 1.0e-10 
 + 
 +  SSA Mean Viscosity = Real $eta 
 +  SSA Mean Density = Real $rhoi 
 + 
 +! Needed for Linear, Weertman and Coulomb  
 +  ! Which law are we using (linear, weertman or coulomb) 
 +  SSA Friction Law = String "Coulomb" 
 +  ! beta parameter (beta = 1/As^m) 
 +  SSA Friction Parameter = Variable coordinate 1 , Coordinate 2 
 +     Real  MATC "1.0e-3*(1.0 + sin(2.0*pi* tx(0) / L)*sin(2.0*pi* tx(1) / L)) 
 + 
 +! Needed for Weertman and Coulomb 
 +  ! Exponent m  
 +  SSA Friction Exponent = Real $1.0/n 
 +   
 +  ! Min velocity for linearisation where ub=0 
 +  SSA Friction Linear Velocity = Real 0.0001 
 + 
 +! Needed for Coulomb only 
 +  ! post peak exponent in the Coulomb law (q, in Gagliardini et al., 2007) 
 +  SSA Friction Post-Peak = Real 1.0 
 +  ! Iken's bound  tau_b/N < C (see Gagliardini et al., 2007) 
 +  SSA Friction Maximum Value = Real 0.5 
 +End 
 +</code> 
 + 
 + 
 +**Body Forces:** 
 +<code> 
 +Body Force 1 
 +  Flow BodyForce 1 = Real 0.0 
 +  Flow BodyForce 2 = Real 0.0 
 +  Flow BodyForce 3 = Real $gravity 
 +End 
 +</code> 
 + 
 + 
 +**Constants:** 
 +<code> 
 +Constants 
 +! Used for Neumann condition 
 +  Water Density = Real .... 
 +  Sea Level = Real ... 
 +End 
 +</code> 
 + 
 + 
 +**Boundary Conditions:** 
 +<code> 
 +Boundary Condition 1  
 +! Dirichlet condition 
 +  SSAVelocity 1 = Real ... 
 +  SSAVelocity 2 = Real ... 
 +End 
 +Boundary Condition 1  
 +! Neumann Condition 
 +  Calving Front = Logical True 
 +End 
 +</code> 
 + 
 + 
 +**For the "GetMeanValueSolver" routine, the required keywords in the SIF file for this solver are:**
 <code> <code>
-Solver 2+Solver 1
   Equation = "SSA-IntValue"   Equation = "SSA-IntValue"
   Procedure = File "ElmerIceSolvers" "GetMeanValueSolver"   Procedure = File "ElmerIceSolvers" "GetMeanValueSolver"
Line 41: Line 191:
   Variable DOFs = 1   Variable DOFs = 1
  
-  Exported Variable 1 = String "Integrated Viscosity"+  Exported Variable 1 = String "Mean Viscosity"
   Exported Variable 1 DOFs = 1   Exported Variable 1 DOFs = 1
   Exported Variable 2 = String "Mean Density"   Exported Variable 2 = String "Mean Density"
Line 51: Line 201:
   Steady State Convergence Tolerance = Real 1.0e-3   Steady State Convergence Tolerance = Real 1.0e-3
 End End
-! 
-Solver 3 
-  Equation = "SSA-BasalVelo" 
-  Procedure = File "ElmerIceSolvers" "SSABasalSolver" 
-  Variable = String "SSABasalFlow" 
-  Variable DOFs = 2   ! 2 in 3D 
  
-  Linear System Solver = Direct +!!! Upper free surface 
-  Linear System Direct Method = umfpack +Boundary Condition 1
- +
-  Nonlinear System Max Iterations = 100 +
-  Nonlinear System Convergence Tolerance  = 1.0e-5 +
-  Nonlinear System Relaxation Factor = 1.00+
  
-  Steady State Convergence Tolerance = Real 1.0e-3+  Depth = Real 0.
 +  Mean Viscosity = Real 0.0 
 +  Mean Density = real 0.0
 End End
 +</code>
  
 +**For the "SSASolver" routine, the required keywords in the SIF file for this solver are:**
 +<code>
 Solver 4 Solver 4
   Equation = "SSA Velocity"   Equation = "SSA Velocity"
Line 81: Line 226:
  
   Steady State Convergence Tolerance = Real 1.0e-3   Steady State Convergence Tolerance = Real 1.0e-3
-End 
- 
-! SSA equation only solved on the bedrock boundary 
-Equation 2 
-  Active Solvers(1) = 3 
 End End
  
 !!! bedrock !!! bedrock
-Boundary Condition +Boundary Condition 1
-  Target Boundaries = 5 +
-  Body Id = Integer 2 +
- +
-  SSAFlow = Equals SSABasalFlow 1 +
-  SSAFlow 2 = Equals SSABasalFlow 2 +
-  SSAFlow 3 = Real 0.0e0+
      
-  SSA Slip Coefficient 1 = Variable Coordinate 1, Coordinate 2 +  SSAFlow 1 = Equals SSAVelocity 
-     Real MATC "1000.0e-6*(1.0+sin(2.0*pi*tx(0)/L)*sin(2.0*pi*tx(1)/L))" +  SSAFlow = Equals SSAVelocity 
-  SSA Slip Coefficient 2 Variable Coordinate 1, Coordinate 2 +  SSAFlow 3 = Real 0.0e0
-     Real MATC "1000.0e-6*(1.0+sin(2.0*pi*tx(0)/L)*sin(2.0*pi*tx(1)/L))"+
 End End
  
 !!! Upper free surface !!! Upper free surface
-Boundary Condition 6 +Boundary Condition 2 
-  Target Boundaries = 6+ 
   Depth = Real 0.0   Depth = Real 0.0
-  Integrated Viscosity = Real 0.0 +  
-  Mean Density = real 0.0 +  SSAFlow 4 = Real 0.0     ! p=0 at the surface
-  SSAFlow 4 = Real 0.0     ! p=0 at the bottom+
 End End
 </code> </code>
Line 131: Line 263:
  
 !!! bedrock !!! bedrock
-Boundary Condition 5 +Boundary Condition 1 
-  Target Boundaries = 5 +   
-  Body Id = Integer 2 + ... 
- +  SIAFlow 1 = Equals SSAVelocity 
-  SIAFlow 1 = Equals SSABasalFlow +  SIAFlow 2 = Equals SSAVelocity 2
-  SIAFlow 2 = Equals SSABasalFlow 2+
   SIAFlow 3 = Real 0.0e0   SIAFlow 3 = Real 0.0e0
   ...   ...
Line 142: Line 273:
  
 !!! Upper free surface !!! Upper free surface
-Boundary Condition 6 +Boundary Condition 2 
-  Target Boundaries = 6 +  
-  ...  + ...  
   SIAFlow 4 = Real 0.0     ! p=0 at the bottom   SIAFlow 4 = Real 0.0     ! p=0 at the bottom
 End End
 </code> </code>
  
-If the front is in contact with the ocean, this boundary condition reads: 
-<code> 
-$rhow = 1000.0/(1.0e6*yearinsec^2) 
  
-Constants 
-  Water Density = Real $rhow 
-End 
- 
-!!! BC Lateral Ice-Shelf (air or sea contact) 
-Boundary Condition 2 
-  Target Boundaries = 2 
-  Calving Front = Logical True 
-End 
-</code> 
 ==== Examples ==== ==== Examples ====
-Download {{:solvers:test_ssa.tar.gz|here}} an example using the //SSASolver// and the //SIASolver// applied to experiment C160 of ISMIP-HOM benchamrks. This other example solves for a given MISMIP geometry the SIA + SSA solution for the grounded and floating parts+For examples look in your elmer source distribution under ''[ELMER_TRUNK]/elmerice/Tests/SSA'' and under ''[ELMER_TRUNK]/elmerice/examples/Test_SSA''.
solvers/ssa.1385382059.txt.gz · Last modified: 2013/11/25 12:20 by fgillet
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0