Path: blob/devel/elmerice/Tests/FSSA_perlin2d/Stokes_prognostic_nonlWeert.sif
3206 views
!---LUA BEGIN ! year_s=365.25*24*3600 ! pa_to_mpa=1.0E-6 ! rho=910*year_s^(-2.0)*pa_to_mpa ! gravity=9.8*year_s^(2.0) ! time_step=20 ! theta=1.0 ! m=3.0 ! mw=3.0 ! ub=6.0 ! hmin=11.0 ! assert(loadfile('./perlin.lua'))() !---LUA END $name="Stokes_prognostic_ELA300_SMB" ! normal, transposed, full (applies if not given) $fssaflag="full" !echo on Header CHECK KEYWORDS Warn Mesh DB "." "mesh2D" Include Path "" Results Directory "" End Simulation Max Output Level = 4 Coordinate System = "Cartesian 2D" Coordinate Mapping(3) = 1 2 3 Simulation Type = "Transient" Steady State Max Iterations = 1 Timestepping Method = "BDF" BDF Order = 1 Timestep Sizes = #time_step Timestep Intervals = #400/time_step Output Intervals = 1 !Output File = $name$"_"$fssaflag$"_"#time_step#"_mw"#mw".result" Post File = $name$"_"$fssaflag$"_theta"#theta#"_dt"#time_step#"_mw"#mw#".vtu" Initialize Dirichlet Conditions = Logical False End Constants Stefan Boltzmann = 5.67e-08 End Body 1 Name = "Glacier" Body Force = 1 Equation = 1 Material = 1 Initial Condition = 1 End Body 2 Name = "Surface" Body Force = 2 Equation = 2 Material = 2 Initial Condition = 2 End Equation 1 Name = "Equation1" Convection = "computed" Flow Solution Name = String "Flow Solution" Active Solvers(4) = 1 2 4 5 End Equation 2 Name = "Equation2" Convection = "computed" !!! CHANGE TO THIS ONE TO GET REASONABLE RESULTS !Convection = "none" Active Solvers(1) = 3 Flow Solution Name = String "Flow Solution" End Initial Condition 1 Velocity 1 = 0.0 Velocity 2 = 0.0 Pressure = 0.0 Zs = Variable Coordinate 1 Real include "surf.dat" End RefZs = Variable Coordinate 1 Real include "surf.dat" End Mesh Velocity = Real 0.0 !Mesh Velocity 2 = Real 0.0 Height = Variable Coordinate 2 Real Lua "tx[0] * 10.0" Depth = Variable Coordinate 2 Real Lua "10.0 - (tx[0] * 10.0)" End Initial Condition 2 Zs = Variable Coordinate 1 Real include "surf.dat" End RefZs = Variable Coordinate 1 Real include "surf.dat" End End Solver 1 Equation = "HeightDepth" Exec Solver = "Before Timestep" Procedure = "StructuredProjectToPlane" "StructuredProjectToPlane" Active Coordinate = Integer 2 Operator 1 = depth Operator 2 = height End Solver 2 ! Exec Solver = "Never" # uncommenting would switch this off !Element = "p:2" Equation = "Stokes-Vec" Procedure = "IncompressibleNSVec" "IncompressibleNSSolver" Div-Curl Discretization = Logical False Optimize Bandwidth = Logical True Stokes Flow = Logical True Stabilization Method = "Stabilized" !Stabilization Method = String "P1/P2" Linear System Abort Not Converged = Logical False ! Iterative approach: !--------------------- Linear System Solver = Iterative Linear System Iterative Method = "GCR" Linear System GCR Restart = 200 ! Linear System Convergence Tolerance = 1.0E-08 ! Solving for residual allows us to use sloppier tolerances ! This seems to faster strategy. Linear System Residual Mode = True Linear System Convergence Tolerance = 1.0E-08 Linear System Max Iterations = 500 Linear System Abort Not Converged = False Linear System Preconditioning = "ILU1" Linear System Residual Output = 10 ! Direct approach (as alternative to above): !------------------------------------------- !Linear System Solver = Direct !Linear System Direct Method = $directmethod ! Parallel: MUMPS, Serial: UMFPACK !Non-linear iteration settings: !------------------------------ Nonlinear System Max Iterations = 100 Nonlinear System Convergence Tolerance = 1.0e-5 Nonlinear System Newton After Iterations = 10 Nonlinear System Newton After Tolerance = 1.0e-3 Nonlinear System Consistent Norm = True Nonlinear System Relaxation Factor = #2.0/3.0 !Nonlinear System Reset Newton = Logical True ! Convergence on timelevel (not required here) !--------------------------------------------- Steady State Convergence Tolerance = Real 1.0e-3 !Relative Integration Order = -1 !Number of Integration Points = Integer 25 ! 21, 28, 44, 64, ... ! 1st iteration viscosity is constant Constant-Viscosity Start = Logical True ! Some timing info Boundary Assembly Timing = Logical True Bulk Assembly Timing = Logical True Solver Timing = Logical True Linear System Timing = Logical True Exported Variable 1 = -dofs 1 "Mesh Velocity" Exported Variable 2 = -dofs 1 "Mesh Update" !Nonlinear System Relaxation Factor = 0.75 End Solver 3 Exec Solver = always Equation = "Free Surface" Variable = String "Zs" Variable DOFs = 1 ! needed for evaluating the contact pressure Exported Variable 1 = -dofs 1 "Zs Residual" ! needed for storing the initial shape (needed for updates) Exported Variable 2 = -dofs 1 "RefZs" Procedure = "FreeSurfaceSolver" "FreeSurfaceSolver" ! This would take the contrained points out of solution ! Use in serial run, only ! Before Linsolve = "EliminateDirichlet" "EliminateDirichlet" Linear System Solver = Iterative Linear System Max Iterations = 1500 Linear System Iterative Method = BiCGStab Linear System Preconditioning = ILU0 Linear System Convergence Tolerance = Real 1.0e-7 Linear System Abort Not Converged = False Linear System Residual Output = 1 Nonlinear System Max Iterations = 100 Nonlinear System Convergence Tolerance = 1.0e-6 Nonlinear System Relaxation Factor = 0.60 Steady State Convergence Tolerance = 1.0e-03 Stabilization Method = Bubbles ! Apply contact problem Apply Dirichlet = Logical True ! How much the free surface is relaxed ! Relaxation Factor = Real 0.90 End Solver 4 Exec Solver = "before timestep" Equation = "MapCoordinate" Procedure = "StructuredMeshMapper" "StructuredMeshMapper" Variable = -nooutput dummyvar Active Coordinate = Integer 2 ! the mesh-update is y-direction ! For time being this is currently externally allocated Mesh Velocity Variable = String "Mesh Velocity" ! The 1st value is special as the mesh velocity could be unrelistically high Mesh Velocity First Zero = Logical True ! Top Surface Variable = String "Zs" Dot Product Tolerance = Real 0.01 End Solver 5 Equation = String "StressSolver" Procedure = File "ElmerIceSolvers" "ComputeDevStress" ! this is just a dummy, hence no output is needed !----------------------------------------------------------------------- Variable = -nooutput "Sij" Variable DOFs = 1 ! the name of the variable containing the flow solution (U,V,W,Pressure) !----------------------------------------------------------------------- Flow Solver Name = String "Flow Solution" ! no default value anymore for "Stress Variable Name" Stress Variable Name = String "cauchystress" !----------------------------------------------------------------------- Exported Variable 1 = "cauchystress" ! [Sxx, Syy, Szz, Sxy] in 2D ! [Sxx, Syy, Szz, Sxy, Syz, Szx] in 3D Exported Variable 1 DOFs = 4 ! 4 in 2D, 6 in 3D Linear System Solver = "Iterative" Linear System Iterative Method = "BiCGStab" Linear System Max Iterations = 300 Linear System Convergence Tolerance = 1.0E-09 Linear System Abort Not Converged = True Linear System Preconditioning = "ILU0" Linear System Residual Output = 1 End Material 1 Name = "ice" Density = Real #rho !---------------- ! vicosity stuff (linear) !---------------- Viscosity = Real $1.0E13*(31556926.0)^(-1.0)*1.0E-06 ! Critical Shear Rate = Real 1.0e-10 !-------------------- ! vicosity stuff Glen !-------------------- Viscosity Model = String "Glen" ! Viscosity has to be set to a dummy value ! to avoid warning output from Elmer Viscosity = Real 1.0 Glen Exponent = Real 3.0 Critical Shear Rate = Real 1.0e-10 ! the temperature to switch between the ! two regimes in the flow law Limit Temperature = Real -10.0 ! In case there is no temperature variable (which applies here) !Relative Temperature = Real -3.0 Set Arrhenius Factor = Logical True Arrhenius Factor = Real 100.0 Cauchy = Logical True End Material 2 Min Zs = Variable RefZs Real Lua "tx[0] - 0.000001" Max Zs = Variable RefZs Real Lua "tx[0] + 600.0" End Body Force 1 Name = "BodyForce1" Flow BodyForce 1 = Real 0.0 Flow BodyForce 2 = Real #-gravity !gravity in MPa - a - m ! This would set passive soluton (ommiting assembly) for non-glaciated parts Flow Solution Passive = Variable depth, height Real Lua "((tx[0] + tx[1]) < 10.0)" End Body Force 2 Name = "Climate" Zs Accumulation Flux 1 = Real 0.0e0 Zs Accumulation Flux 2 = Variable Coordinate 1 Real Lua "accum(tx[0])" End Boundary Condition 1 Name = "bedrock" Target Boundaries = 4 Compute Normals = Logical True Bottom Surface = Variable Coordinate 1 Real include "bedrock.dat" End Normal-Tangential Velocity = True Velocity 1 = Real 0.0e0 Flow Force BC = logical True ! matching linear sliding velocity for given stress: Weertman Friction Coefficient = Variable Coordinate 1, cauchystress 4, Height, Depth Real Lua "slidingcoeff(tx[0],tx[1],tx[2],tx[3])" ! fixed target velocity ub: !Weertman Friction Coefficient = Variable Coordinate 1 ! Real Lua "slidingcoeffv(tx[0])" Weertman Exponent = Real #mw Weertman Linear Velcoity = Real 0.0001 End Boundary Condition 2 Name = "sides" Target Boundaries(2) = 1 3 Velocity 1 = Real 0.0e0 End Boundary Condition 3 Name = "surface" Top Surface = Equals "Zs" Target Boundaries = 2 Body ID = 2 !!! THIS IS ESSENTIAL: the body the free surface solver is being run on FSSA Theta = Real #theta FSSA Flag = String $fssaflag End Solver 2 :: Reference Norm = Real 3.6129786 Solver 2 :: Reference Norm Tolerance = Real 1E-06