Skip to main content
`Ctrl`+`K`

# SNESNEWTONTRDC

Newton based nonlinear solver that uses trust-region dogleg method with Cauchy direction

## Options Database Keys

- -snes_trdc_tol tol - trust region tolerance

- -snes_trdc_eta1 eta1 - trust region parameter 0.0 <= eta1 <= eta2, rho >= eta1 breaks out of the inner iteration (default: eta1=0.001)

- -snes_trdc_eta2 eta2 - trust region parameter 0.0 <= eta1 <= eta2, rho <= eta2 shrinks the trust region (default: eta2=0.25)

- -snes_trdc_eta3 eta3 - trust region parameter eta3 > eta2, rho >= eta3 expands the trust region (default: eta3=0.75)

- -snes_trdc_t1 t1 - trust region parameter, shrinking factor of trust region (default: 0.25)

- -snes_trdc_t2 t2 - trust region parameter, expanding factor of trust region (default: 2.0)

- -snes_trdc_deltaM deltaM - trust region parameter, max size of trust region, \(deltaM*norm2(x)\) (default: 0.5)

- -snes_trdc_delta0 delta0 - trust region parameter, initial size of trust region, \(delta0*norm2(x)\) (default: 0.1)

- -snes_trdc_auto_scale_max auto_scale_max - used with auto_scale_multiphase, caps the maximum auto-scaling factor

- -snes_trdc_use_cauchy use_cauchy - True uses dogleg Cauchy (Steepest Descent direction) step & direction in the trust region algorithm

- -snes_trdc_auto_scale_multiphase auto_scale_multiphase - True turns on auto-scaling for multivariable block matrix for Cauchy and trust region

## Notes

`SNESNEWTONTRDC` only works for root-finding problems and does not support objective functions. The main difference with respect to `SNESNEWTONTR` is that `SNESNEWTONTRDC` scales the trust region by the norm of the current linearization point. Future version may extend the `SNESNEWTONTR` code and deprecate `SNESNEWTONTRDC`.

For details, see [PHVL21]

## References

[PHVL21]

Heeho D Park, Glenn E Hammond, Albert J Valocchi, and Tara LaForce. Linear and nonlinear solvers for simulating multiphase flow within large-scale engineered subsurface systems. Advances in Water Resources, 156:104029, 2021.

## See Also

SNES: Nonlinear Solvers, `SNESCreate()`, `SNES`, `SNESSetType()`, `SNESNEWTONLS`, `SNESNewtonTRSetTolerances()`, `SNESNewtonTRDCPreCheck()`, `SNESNewtonTRDCGetPreCheck()`, `SNESNewtonTRDCSetPostCheck()`, `SNESNewtonTRDCGetPostCheck()`, `SNESNewtonTRDCGetRhoFlag()`, `SNESNewtonTRDCSetPreCheck()`

## Level

advanced

## Location

src/snes/impls/ntrdc/ntrdc.c

Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages