BISICLES AMR ice sheet model  0.9
Public Types | Public Member Functions | Public Attributes | List of all members
InverseVerticallyIntegratedVelocitySolver::Configuration Class Reference

Data read through ParmParse. More...

#include <InverseVerticallyIntegratedVelocitySolver.H>

Collaboration diagram for InverseVerticallyIntegratedVelocitySolver::Configuration:
Collaboration graph
[legend]

Public Types

enum  BoundMethod { none, projection, MAX_BOUND_METHOD }
 
enum  VelocityMisfitType { speed, velocity, log_speed, MAX_VELOCITY_MISFIT_TYPE }
 

Public Member Functions

 Configuration ()
 
 ~Configuration ()
 
void parse (const char *a_prefix="control")
 parse parameters from <prefix>.* section of ParmParse table More...
 

Public Attributes

int m_minLevelForOptimization
 Do not attempt to optimize unless the mesh has at least m_minLevel levels. More...
 
Real m_minTimeBetweenOptimizations
 
Real m_dtTypical
 estimate of typical timestep. Just here to turn times into integers for file names More...
 
BoundMethod m_boundMethod
 Method to enforce constraints: none, or projection. default projection. More...
 
VelocityMisfitType m_velMisfitType
 Type of velocity misfit : speed, velocity, or log_speed. Set with <prefix>.vel_misfit_type, default speed. More...
 
bool m_optimizeX0
 attempt to optimize w.r.t X0? More...
 
bool m_optimizeX1
 attempt to optimize w.r.t X1? More...
 
bool m_gradMuCoefShelfOnly
 evaluate unregluarized gradient of objective with respect to mucoef (or rather, X1) in the shelf only? More...
 
Real m_lowerX0
 Lower bound on $X_0 = \ln C - \ln C_0$. Set with with <prefix>.lowerX0. More...
 
Real m_upperX0
 Upper bound on $X_0 = \ln C - \ln C_0$. Set with with <prefix>.upperX0. More...
 
Real m_lowerX1
 Lower bound on $X_1 = \ln \phi - \ln \phi_0$. Set with with <prefix>.lowerX1. More...
 
Real m_upperX1
 Upper bound on $X_1 = \ln \phi - \ln \phi_0$. Set with with <prefix>.upperX1. More...
 
Real m_initialLowerMuCoef
 Lower bound on $\phi_0$. Set with <prefix>.initialLowerMuCoef. More...
 
Real m_initialUpperMuCoef
 Upper bound on $\phi_0$. Set with <prefix>.initialUpperMuCoef. More...
 
Real m_initialLowerC
 Lower bound on $C_0$. Set with <prefix>.initialLowerC. More...
 
Real m_initialUpperC
 Upper bound on $C_0$. Set with <prefix>.initialUpperC. More...
 
Real m_velMisfitCoefficient
 Coefficient of $\int _\Omega \alpha (u - u_0) d \Omega $ in $J$. Set with <prefix>.velMisfitCoefficient, default 1.0. More...
 
Real m_divuhMisfitCoefficient
 Coefficient of $\int _\Omega \beta (\nabla \cdot. (uh) - a^{\prime} ) d \Omega $ in $J$. Set with <prefix>.divuhMisfitCoefficient default 1.0. More...
 
Real m_divuhMisfitSmooth
 If $> 0$, smooth $(\nabla \cdot. (uh) - a^{\prime} )$. Set with <prefix>.divuhMisfitSmooth, default 0.0. More...
 
Real m_gradCsqRegularization
 Coefficient of $\int _\Omega (\nabla C )^2 d \Omega $ in $J$. Set with <prefix>.gradCsqRegularization. More...
 
Real m_gradMuCoefsqRegularization
 Coefficient of $\int _\Omega (\nabla \phi )^2 d \Omega $ in $J$. Set with <prefix>.gradMuCoefsqRegularization. More...
 
Real m_gradX0sqRegularization
 Coefficient of $\int _\Omega (\nabla X_0 )^2 d \Omega $ in $J$. Set with <prefix>.gradX0sqRegularization. More...
 
Real m_gradX1sqRegularization
 Coefficient of $\int _\Omega (\nabla X_1 )^2 d \Omega $ in $J$. Set with <prefix>.gradX1sqRegularization. More...
 
Real m_X0Regularization
 Coefficient of $\int _\Omega ( X_0 )^2 d \Omega $ in $J$. Set with <prefix>.X0Regularization. More...
 
Real m_X1Regularization
 Coefficient of $\int _\Omega ( X_1 )^2 d \Omega $ in $J$. Set with <prefix>.X1Regularization. More...
 
Real m_X0TimeRegularization
 Coefficient of $\int _\Omega ( X_0 )^2 / \Delta t d \Omega $ in $J$. Set with <prefix>.X0TimeRegularization. More...
 
Real m_X1TimeRegularization
 Coefficient of $\int _\Omega ( X_1 )^2 / \Delta t d \Omega $ in $J$. Set with <prefix>.X1TimeRegularization. More...
 
Real m_thicknessThreshold
 Limit domain of integration $\Omega$ to regions where ice thickness exceeds this value. Set with <prefix>.thicknessThreshold, default 100.0 m. More...
 
Real m_CGmaxIter
 Maximum number of 'outer' nonlinear conjugate gradient iterations. Set with <prefix>.CGmaxIter, default 16. More...
 
Real m_CGtol
 Tolerance for the 'outer' nonlinear conjugate gradient method. Set with <prefix>.CGtol, default 1.0e-3. More...
 
Real m_CGsecantParameter
 Size of the initial 'inner' secant step. Set with <prefix>.CGsecantParameter, default 1.0e-7. More...
 
Real m_CGsecantStepMaxGrow
 $a$ such that secant step $n+1$ has a maximum length $l_{n+1} \leq a l_{n}$. Set with <prefix>.CGsecantStepMaxGrow, default 2.0 More...
 
int m_CGsecantMaxIter
 Maximum number of 'outer' secant iterations. Set with <prefix>.CGsecantMaxIter, default 20. More...
 
Real m_CGsecantTol
 Tolerance for the 'inner' secant method. Set with <prefix>.CGsecantTol, default 1.0e-1. More...
 
Real m_CGhang
 Give up when succesive CG steps don't progress quickly enough . Set with <prefix>.CGhang, default 0.999. More...
 
Real m_CGrestartInterval
 Restart CG at a fixed interval. Set with <prefix>.CGrestartInterval, default 9999. More...
 
SurfaceDatam_velObs_c
 observed velocity data coefficient More...
 
SurfaceDatam_velObs_x
 observed x-velocity data More...
 
SurfaceDatam_velObs_y
 observed y-velocity data More...
 
bool m_writeInnerSteps
 write inner (secant) steps to plot files More...
 
std::string m_innerStepFileNameBase
 base of filename for 'inner' plots More...
 
std::string m_outerStepFileNameBase
 base of filename for 'outer' plots More...
 
SurfaceDatam_divuhObs_c
 observed flux divergence data coefficient More...
 
SurfaceDatam_divuhObs_a
 observed flux divergence data More...
 
SurfaceDatam_gradientFactor
 used to amplify (damp) the gradient non-uniformly More...
 
int m_outerCounter
 

Detailed Description

Data read through ParmParse.

Member Enumeration Documentation

◆ BoundMethod

Enumerator
none 
projection 
MAX_BOUND_METHOD 

◆ VelocityMisfitType

Enumerator
speed 
velocity 
log_speed 
MAX_VELOCITY_MISFIT_TYPE 

Constructor & Destructor Documentation

◆ Configuration()

InverseVerticallyIntegratedVelocitySolver::Configuration::Configuration ( )

◆ ~Configuration()

InverseVerticallyIntegratedVelocitySolver::Configuration::~Configuration ( )

References m_velObs_c, m_velObs_x, and m_velObs_y.

Member Function Documentation

◆ parse()

void InverseVerticallyIntegratedVelocitySolver::Configuration::parse ( const char *  a_prefix = "control")

parse parameters from <prefix>.* section of ParmParse table

Parameters
a_prefixprefix string in the ParmParse table

References InverseVerticallyIntegratedVelocitySolver::define(), and SurfaceFlux::parse().

Referenced by InverseVerticallyIntegratedVelocitySolver::define().

Member Data Documentation

◆ m_boundMethod

BoundMethod InverseVerticallyIntegratedVelocitySolver::Configuration::m_boundMethod

Method to enforce constraints: none, or projection. default projection.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_CGhang

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_CGhang

Give up when succesive CG steps don't progress quickly enough . Set with <prefix>.CGhang, default 0.999.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_CGmaxIter

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_CGmaxIter

Maximum number of 'outer' nonlinear conjugate gradient iterations. Set with <prefix>.CGmaxIter, default 16.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_CGrestartInterval

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_CGrestartInterval

Restart CG at a fixed interval. Set with <prefix>.CGrestartInterval, default 9999.

Referenced by InverseVerticallyIntegratedVelocitySolver::nDoF().

◆ m_CGsecantMaxIter

int InverseVerticallyIntegratedVelocitySolver::Configuration::m_CGsecantMaxIter

Maximum number of 'outer' secant iterations. Set with <prefix>.CGsecantMaxIter, default 20.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_CGsecantParameter

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_CGsecantParameter

Size of the initial 'inner' secant step. Set with <prefix>.CGsecantParameter, default 1.0e-7.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_CGsecantStepMaxGrow

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_CGsecantStepMaxGrow

$a$ such that secant step $n+1$ has a maximum length $l_{n+1} \leq a l_{n}$. Set with <prefix>.CGsecantStepMaxGrow, default 2.0

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_CGsecantTol

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_CGsecantTol

Tolerance for the 'inner' secant method. Set with <prefix>.CGsecantTol, default 1.0e-1.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_CGtol

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_CGtol

Tolerance for the 'outer' nonlinear conjugate gradient method. Set with <prefix>.CGtol, default 1.0e-3.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_divuhMisfitCoefficient

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_divuhMisfitCoefficient

Coefficient of $\int _\Omega \beta (\nabla \cdot. (uh) - a^{\prime} ) d \Omega $ in $J$. Set with <prefix>.divuhMisfitCoefficient default 1.0.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_divuhMisfitSmooth

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_divuhMisfitSmooth

If $> 0$, smooth $(\nabla \cdot. (uh) - a^{\prime} )$. Set with <prefix>.divuhMisfitSmooth, default 0.0.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_divuhObs_a

SurfaceData* InverseVerticallyIntegratedVelocitySolver::Configuration::m_divuhObs_a

observed flux divergence data

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_divuhObs_c

SurfaceData* InverseVerticallyIntegratedVelocitySolver::Configuration::m_divuhObs_c

observed flux divergence data coefficient

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_dtTypical

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_dtTypical

estimate of typical timestep. Just here to turn times into integers for file names

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_gradCsqRegularization

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_gradCsqRegularization

Coefficient of $\int _\Omega (\nabla C )^2 d \Omega $ in $J$. Set with <prefix>.gradCsqRegularization.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient(), and InverseVerticallyIntegratedVelocitySolver::nDoF().

◆ m_gradientFactor

SurfaceData* InverseVerticallyIntegratedVelocitySolver::Configuration::m_gradientFactor

used to amplify (damp) the gradient non-uniformly

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_gradMuCoefShelfOnly

bool InverseVerticallyIntegratedVelocitySolver::Configuration::m_gradMuCoefShelfOnly

evaluate unregluarized gradient of objective with respect to mucoef (or rather, X1) in the shelf only?

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_gradMuCoefsqRegularization

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_gradMuCoefsqRegularization

Coefficient of $\int _\Omega (\nabla \phi )^2 d \Omega $ in $J$. Set with <prefix>.gradMuCoefsqRegularization.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient(), and InverseVerticallyIntegratedVelocitySolver::nDoF().

◆ m_gradX0sqRegularization

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_gradX0sqRegularization

Coefficient of $\int _\Omega (\nabla X_0 )^2 d \Omega $ in $J$. Set with <prefix>.gradX0sqRegularization.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient(), and InverseVerticallyIntegratedVelocitySolver::nDoF().

◆ m_gradX1sqRegularization

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_gradX1sqRegularization

Coefficient of $\int _\Omega (\nabla X_1 )^2 d \Omega $ in $J$. Set with <prefix>.gradX1sqRegularization.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient(), and InverseVerticallyIntegratedVelocitySolver::nDoF().

◆ m_initialLowerC

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_initialLowerC

Lower bound on $C_0$. Set with <prefix>.initialLowerC.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_initialLowerMuCoef

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_initialLowerMuCoef

Lower bound on $\phi_0$. Set with <prefix>.initialLowerMuCoef.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_initialUpperC

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_initialUpperC

Upper bound on $C_0$. Set with <prefix>.initialUpperC.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_initialUpperMuCoef

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_initialUpperMuCoef

Upper bound on $\phi_0$. Set with <prefix>.initialUpperMuCoef.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_innerStepFileNameBase

std::string InverseVerticallyIntegratedVelocitySolver::Configuration::m_innerStepFileNameBase

base of filename for 'inner' plots

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_lowerX0

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_lowerX0

◆ m_lowerX1

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_lowerX1

◆ m_minLevelForOptimization

int InverseVerticallyIntegratedVelocitySolver::Configuration::m_minLevelForOptimization

Do not attempt to optimize unless the mesh has at least m_minLevel levels.

Do not atttempt optimizion until the mesh has been refined to some desired level. Instead, just fill $ C $ and $ \phi $ with the initial guess, and return the observed velocity as the solution. This really only makes sense if the we want to use the observed velocity in a refinemnt criterion. That approach was sucessful in the older AMRIceControl class (which did its own refinement), so this parameter exists to support that

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_minTimeBetweenOptimizations

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_minTimeBetweenOptimizations

time delay between optmizations. Allows time-dependent inverse problems without re-doing the optimization at every time step.

Referenced by InverseVerticallyIntegratedVelocitySolver::solve().

◆ m_optimizeX0

bool InverseVerticallyIntegratedVelocitySolver::Configuration::m_optimizeX0

◆ m_optimizeX1

bool InverseVerticallyIntegratedVelocitySolver::Configuration::m_optimizeX1

◆ m_outerCounter

int InverseVerticallyIntegratedVelocitySolver::Configuration::m_outerCounter

◆ m_outerStepFileNameBase

std::string InverseVerticallyIntegratedVelocitySolver::Configuration::m_outerStepFileNameBase

base of filename for 'outer' plots

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_thicknessThreshold

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_thicknessThreshold

Limit domain of integration $\Omega$ to regions where ice thickness exceeds this value. Set with <prefix>.thicknessThreshold, default 100.0 m.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_upperX0

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_upperX0

◆ m_upperX1

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_upperX1

◆ m_velMisfitCoefficient

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_velMisfitCoefficient

Coefficient of $\int _\Omega \alpha (u - u_0) d \Omega $ in $J$. Set with <prefix>.velMisfitCoefficient, default 1.0.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_velMisfitType

VelocityMisfitType InverseVerticallyIntegratedVelocitySolver::Configuration::m_velMisfitType

Type of velocity misfit : speed, velocity, or log_speed. Set with <prefix>.vel_misfit_type, default speed.

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_velObs_c

SurfaceData* InverseVerticallyIntegratedVelocitySolver::Configuration::m_velObs_c

observed velocity data coefficient

Referenced by InverseVerticallyIntegratedVelocitySolver::solve(), and ~Configuration().

◆ m_velObs_x

SurfaceData* InverseVerticallyIntegratedVelocitySolver::Configuration::m_velObs_x

observed x-velocity data

Referenced by InverseVerticallyIntegratedVelocitySolver::solve(), and ~Configuration().

◆ m_velObs_y

SurfaceData* InverseVerticallyIntegratedVelocitySolver::Configuration::m_velObs_y

observed y-velocity data

Referenced by InverseVerticallyIntegratedVelocitySolver::solve(), and ~Configuration().

◆ m_writeInnerSteps

bool InverseVerticallyIntegratedVelocitySolver::Configuration::m_writeInnerSteps

write inner (secant) steps to plot files

Referenced by InverseVerticallyIntegratedVelocitySolver::computeObjectiveAndGradient().

◆ m_X0Regularization

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_X0Regularization

Coefficient of $\int _\Omega ( X_0 )^2 d \Omega $ in $J$. Set with <prefix>.X0Regularization.

◆ m_X0TimeRegularization

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_X0TimeRegularization

Coefficient of $\int _\Omega ( X_0 )^2 / \Delta t d \Omega $ in $J$. Set with <prefix>.X0TimeRegularization.

◆ m_X1Regularization

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_X1Regularization

Coefficient of $\int _\Omega ( X_1 )^2 d \Omega $ in $J$. Set with <prefix>.X1Regularization.

◆ m_X1TimeRegularization

Real InverseVerticallyIntegratedVelocitySolver::Configuration::m_X1TimeRegularization

Coefficient of $\int _\Omega ( X_1 )^2 / \Delta t d \Omega $ in $J$. Set with <prefix>.X1TimeRegularization.


The documentation for this class was generated from the following files: