Globalization Delegates#
Globalization is the art of convincing a solver to find the solution. Remember – physics typically cares very little about how you get to a solution, only that you get there. If you can guess or otherwise find the solution physically, without doing fancy math, go for it! These delegates are handy utility classes which are used by MPCs to effeciently leverage physics understanding in the mathematical solvers to nudge the solver in the direction of a reasonable solution, or to keep a solver from going off into a part of space which is totally unphysical. These can often make the difference between converging and not converging.
Much of the efficiency of ATS comes from these delegates, and more of them are always welcome contributions.
Coupled Water Globalization Delegate#
EWC Globalization Delegate#
Globalization for nonlinearity associated with phase change and latent heat.
The EWC delegate works to deal with strong nonlinearities associated with latent heat and phase change. Provided a change in primary variables pressure and temperature, it works by first multiplying those changes by the local Jacobian matrix, \(\frac{\partial \left\{ \Theta, E \right\} }{ \partial \left\{ p, T \right\} }\) to calculate changes in water content and energy, then calculating the new water content and energy and inverting the functions \(\Theta(p,T), E(p,T)\) to determine what pressure and temperature would have resulted in those values. This provides a corrected change in the primary variables.
Conceptually, this is a “more robust” choice in nonlinearities associated with phase change, where the derivatives go from small to large to small again, and small changes in pressure and temperature result in large changes in water content and energy.
This delegate manages these globalization strategies, which can be used both in modifying the correction supplied by a nonlinear iterate, and in modifying a predictor, the extrapolated projection (from previous timesteps) that provides the initial guess to the nonlinear solve.
mpc-delegate-ewc-spec
“verbose object”
[verbose-object-spec]
See `Verbose Object`_.“PK name”
[string]
Name of the owning PK – simply for logging and debugging.“domain name”
[string]
“domain” The mesh.“preconditioner type”
[string]
When to use EWC on the nonlinear iterate’s correction. One of:“none” Never do EWC
“ewc” Always do EWC
“smart ewc” Attempt EWC when it seems likely it will be useful and take the EWC correction if it is smaller than the standard correction.
“predictor type”
[string]
When to use EWC on the predictor. One of:“none” Never do EWC
“ewc” Always do EWC
“smart ewc” Attempt EWC when it seems likely it will be useful and take the EWC correction if it is smaller than the standard correction.
“freeze-thaw cusp width [K]”
[double]
Controls a width over which to assume we are close to the latent heat cliff, and begins applying the EWC algorithm in “ewc smarter”.“freeze-thaw cusp width (freezing) [K]”
[double]
Controls a width over which to assume we are close to the latent heat cliff as we get colder, and begins applying the EWC algorithm in “ewc smarter”.“freeze-thaw cusp width (thawing) [K]”
[double]
Controls a width over which to assume we are close to the latent heat cliff as we get warmer, and begins applying the EWC algorithm in “ewc smarter”.“pressure key”
[string]
DOMAIN-pressure“temperature key”
[string]
DOMAIN-temperature“water content key”
[string]
DOMAIN-water_content“energy key”
[string]
DOMAIN-energy“cell volume key”
[string]
DOMAIN-cell_volume
INCLUDES
[debugger-spec]
Uses a Debugger_