Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Namespaces | Functions | Variables
MathSys_Newton2D.hxx File Reference

Optimized 2D Newton-Raphson solvers with strict convergence criteria. More...

#include <MathSys_NewtonTypes.hxx>
#include <algorithm>
#include <array>
#include <cmath>

Namespaces

namespace  MathSys
 Shared types for specialized small-dimension Newton solvers.
 
namespace  MathSys::detail
 

Functions

bool MathSys::detail::IsOptionsValid (const NewtonOptions &theOptions)
 Check that NewtonOptions fields are positive and valid.
 
bool MathSys::detail::IsBoundsValid2D (const NewtonBoundsN< 2 > &theBounds)
 Check that NewtonBoundsN<2> has valid (min <= max) ranges.
 
double MathSys::detail::MaxDomainSize2D (const NewtonBoundsN< 2 > &theBounds)
 Return the largest domain extent across both dimensions (min 1.0).
 
void MathSys::detail::Clamp2D (std::array< double, 2 > &theX, const NewtonBoundsN< 2 > &theBounds, bool theUseSoftBounds, double theSoftExtRatio)
 Clamp solution array to bounds, optionally extending by soft-bounds ratio.
 
bool MathSys::detail::SolveSymmetric2x2SVD (double theJ11, double theJ12, double theJ22, double theF1, double theF2, double &theDU, double &theDV, double theTol=1.0e-15)
 Solve 2x2 symmetric system using eigenvalue decomposition (SVD fallback). More robust than Cramer's rule for ill-conditioned matrices.
 
template<typename Function >
NewtonResultN< 2 > MathSys::Solve2D (const Function &theFunc, const std::array< double, 2 > &theX0, const NewtonBoundsN< 2 > &theBounds, const NewtonOptions &theOptions=NewtonOptions())
 Solve a general 2x2 nonlinear system by Newton iteration. Function contract: bool operator()(double u, double v, double f[2], double j[2][2]) const;.
 
template<typename Function >
NewtonResultN< 2 > MathSys::Solve2DSymmetric (const Function &theFunc, const std::array< double, 2 > &theX0, const NewtonBoundsN< 2 > &theBounds, const NewtonOptions &theOptions=NewtonOptions())
 Solve a 2x2 system with symmetric Jacobian by robust Newton iteration. Function contract: bool ValueAndJacobian(double u, double v, double& f1, double& f2, double& j11, double& j12, double& j22) const; bool Value(double u, double v, double& f1, double& f2) const; // required if line search is enabled.
 

Variables

constexpr double MathSys::detail::THE_SINGULAR_DET_TOL = 1.0e-25
 
constexpr double MathSys::detail::THE_CRITICAL_GRAD_SQ = 1.0e-60
 
constexpr int MathSys::detail::THE_LINE_SEARCH_MAX = 8
 
constexpr double MathSys::detail::THE_ARMIJO_C1 = 1.0e-4
 

Detailed Description

Optimized 2D Newton-Raphson solvers with strict convergence criteria.

Specifically optimized for 2D problems like: