Path: blob/devel/elmerice/IceSheet/Greenland/SSA_FRICTION_INIT/OPTIM_BETA.sif
5348 views
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! .sif file for the inverse method
! Optimize the friction coefficient to reduce mismatch with obs. surface velocities
! with constraints on the flux divergence and assume smoothness of the friction field
!
! Author: F. Gillet-Chaulet (IGE-Grenoble-FR)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! FOR DEFAULT USE/UPDATE PARAMETERS IN OPTIM_BETA.IN
include OPTIM_BETA.IN
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!#######################################################
!#######################################################
Header
Mesh DB "." "$MESH$"
End
!#######################################################
!#######################################################
Constants
sea level = Real $zsl
water density = Real $rhow
End
!#######################################################
!#######################################################
Simulation
Coordinate System = Cartesian 2D
Simulation Type = Steady State
Steady State Min Iterations = 1
Steady State Max Iterations = $niter
Post File = "RUN_$name$_.vtu"
OutPut File = "RUN_$name$_.result"
Output Intervals = $OutPutIntervals
Restart File = "RUN0_.result"
Restart Position = 0
Restart Time = 0.0
Restart Before Initial Conditions = Logical true
max output level = 3
End
!#######################################################
!#######################################################
Body 1
Equation = 1
Body Force = 1
Material = 1
Initial Condition = 1
End
!#######################################################
!#######################################################
Initial Condition 1
! Initial guess of log10(slip coef.)
alpha = Variable slc0
REAL procedure "ElmerIceUSF" "Log10A"
End
!#######################################################
!#######################################################
Body Force 1
Flow BodyForce 1 = Real 0.0
Flow BodyForce 2 = Real 0.0
Flow BodyForce 3 = Real $gravity
!# For Jdiv
Top Surface Accumulation = Equals smb
Bottom Surface Accumulation = Real 0.0
Observed dhdt = Equals dhdt_obs
!# Cost not computed if H<=Hmin
Cost_var Passive = Variable H
Real procedure "USFs" "PassiveCond_H"
Cost_Cost_DHDT Passive = Variable H
Real procedure "USFs" "PassiveCond_H"
Passive Element Min Nodes = Integer 3
!# at the end take slip coef.=10^alpha (for post-processing or restart)
slc = Variable alpha
REAL procedure "ElmerIceUSF" "TenPowerA"
End
!#######################################################
!#######################################################
Material 1
! Material properties
Viscosity Exponent = Real $1/n
Critical Shear Rate = Real 1.0e-16
SSA Mean Viscosity = Equals Mu
SSA Mean Density = Real $rhoi
SSA Friction Law = String "linear"
! The friction parameter is 10^the optimised variable to ensure > 0
SSA Friction Parameter = Variable alpha
REAL procedure "ElmerIceUSF" "TenPowerA"
SSA Friction Parameter Derivative = Variable alpha
REAL procedure "ElmerIceUSF" "TenPowerA_d"
End
!#######################################################
!#######################################################
Solver 1
Equation = "SSA"
Variable = -dofs 2 "SSAVelocity"
Procedure = "ElmerIceSolvers" "AdjointSSA_SSASolver"
!! NUMERICAL INFORMATION
!Linear System Solver = Direct
!Linear System Direct Method = mumps
!mumps percentage increase working space = integer 40
Linear System Solver = Iterative
Linear System Max Iterations = 500
Linear System Iterative Method = GCR
Linear System GCR Restart = 250
Linear System Preconditioning = ILU2
Linear System Abort Not Converged = False
Linear System Residual Output = 500
Linear System Convergence Tolerance = 1.0e-12
Nonlinear System Max Iterations = 30
Nonlinear System Convergence Tolerance = 1.0e-10
Nonlinear System Newton After Iterations = 20
Nonlinear System Newton After Tolerance = 1.0e-05
Nonlinear System Relaxation Factor = 1.00
Steady State Convergence Tolerance = Real 1.0e-12
!!!!!
Sub-Element GL parameterization = logical True
GL integration points number = Integer 20
!!!!!
!! Variables required for the inverse method
Exported Variable 1 = -global CostValue
Exported Variable 2 = -nooutput alpha
Exported Variable 3 = -nooutput DJDalpha
Exported Variable 4 = -nooutput "Velocityb"
Exported Variable 4 DOFs = 2
End
!#######################################################
!!! Compute Cost function
!! Here the cost is the discrete sum_1^Ndata 1/2 ||u-u^obs|| evaluated at the data location (which may not correspond to mesh nodes)
Solver 2
Equation = "Cost"
procedure = "ElmerIceSolvers" "Adjoint_CostDiscSolver"
Cost Variable Name = String "CostValue" ! Name of Cost Variable
Lambda = Real 1.0
! save the cost as a function of iterations (iterations,Cost,rms=sqrt(2*Cost/Ndata)
Cost Filename = File "Cost_$name$.dat"
Observed Variable Name = String "SSAVelocity"
Observed Variable dimension = Integer 2
! ASCII File with data: x,y,u,v
Observation File Name = File "$OBSERVATION_FILE$"
end
!#######################################################
!!! Compute Cost function Jdiv (mismatch between model and observed flux divergence)
!! Jdiv=int_ 0.5 * (dhdt_obs + div(uH)-MB)^2
Solver 3
Equation = "Cost_DHDT"
procedure = "ElmerIceSolvers" "AdjointSSA_CostFluxDivSolver"
Reset Cost Value = Logical False
Cost Variable Name = String "CostValue" ! Name of Cost Variable
Lambda= Real $LambdaDiv
Compute DJDZb = Logical False
Compute DJDZs = Logical False
! save the cost as a function of iterations (iterations,Cost,rms=sqrt(2*Cost/area))
Cost Filename = File "Cost_dHdt_$name$.dat"
end
!#######################################################
!!!! Adjoint Solution
Solver 4
Equation = "Adjoint"
Variable = -nooutput Adjoint
Variable Dofs = 2
procedure = "ElmerIceSolvers" "Adjoint_LinearSolver"
!Name of the flow solution solver
Direct Solver Equation Name = string "SSA"
! Linear System Solver = Direct
! Linear System Direct Method = mumps
! mumps percentage increase working space = integer 40
Linear System Solver = Iterative
Linear System Max Iterations = 500
Linear System Iterative Method = GCR
Linear System GCR Restart = 250
Linear System Preconditioning = ILU2
Linear System Abort Not Converged = False
Linear System Residual Output = 500
Linear System Convergence Tolerance = 1.0e-12
End
!#######################################################
!!!!! Compute Derivative of Cost function / Beta
Solver 5
Equation = "DJDBeta"
procedure = "ElmerIceSolvers" "AdjointSSA_GradientSolver"
Flow Solution Name = String "SSAVelocity"
Adjoint Solution Name = String "Adjoint"
! Derivative with respect to the Friction parameter
! here will be with respect to alpha (see Material)
Compute DJDBeta = Logical True
DJDBeta Name = String "DJDalpha"
Reset DJDBeta = Logical True
end
!#######################################################
!!!!! Compute Regularisation term
! Regularisation by default is: Lambda * int_{Pb dimension} 0.5 * (d(var)/dx)**2
! OUTPUT are : J and DJDvar
Solver 6
Equation = "CostReg"
procedure = "ElmerIceSolvers" "Adjoint_CostRegSolver"
Cost Filename=File "CostReg_$name$.dat"
Optimized Variable Name= String "alpha"
Gradient Variable Name= String "DJDalpha"
Cost Variable Name= String "CostValue"
Lambda= Real $LambdaReg
Reset Cost Value= Logical False !=> DJDapha already initialized in solver DJDBeta; switch off initialisation to 0 at the beginning of this solver
A priori Regularisation= Logical False
end
!#######################################################
!!!!! Optimization procedure :
Solver 7
Equation = "Optimize_m1qn3"
procedure = "ElmerIceSolvers" "Optimize_m1qn3Parallel"
Cost Variable Name = String "CostValue"
Optimized Variable Name = String "alpha"
Gradient Variable Name = String "DJDalpha"
gradient Norm File = File "GradientNormAdjoint_$name$.dat"
!!
Mesh Independent = Logical FALSE
! M1QN3 Parameters
M1QN3 dxmin = Real 1.0e-10
M1QN3 epsg = Real 1.e-6
M1QN3 niter = Integer $niter
M1QN3 nsim = Integer $niter
M1QN3 impres = Integer 5
M1QN3 DIS Mode = Logical true
M1QN3 df1 = Real 0.5
M1QN3 normtype = String "dfn"
M1QN3 OutputFile = File "M1QN3_$name$.out"
M1QN3 ndz = Integer 20
end
!#######################################################
Solver 8
Equation = "UpdateExport2"
Variable = -nooutput "dumy2"
Procedure = File "ElmerIceSolvers" "UpdateExport"
Optimize Bandwidth = logical false
! recompute the slip coef. = 10^alpha (for post-processing or restart)
Exported Variable 1 = slc
End
!#######################################################
!#######################################################
Equation 1
Active Solvers(8) = 1 2 3 4 5 6 7 8
End
!#######################################################
!#######################################################
Boundary Condition 1
Target Boundaries = 1
calving front = logical TRUE
End