89 silent_cout(
"NonlinearSolverTest::MakeTest("
90 << MBDynComm.Get_rank() <<
") "
91 "iNumLocDofs=" << iNumLocDofs << std::endl);
102 for (
int iCnt = 0; iCnt < iNumLocDofs; iCnt++) {
103 TestOne(dTest, Vec, pLocDofs[iCnt]);
119 for (
int iCnt = 0; iCnt < iNumLocDofs; iCnt++) {
120 TestOne(dTest, Vec, pLocDofs[iCnt]);
135 for (
int iCntp1 = 1; iCntp1 <= Size; iCntp1++) {
139 TestOne(dTest, Vec, iCntp1, dCoef);
142 TestOne(*pTestDiff, Vec, iCntp1, dCoef);
157 if (!std::isfinite(dRes)) {
228 if (!std::isfinite(dRes)) {
257 if (dResNew > dResCurr) {
286 return pScale->operator()(iIndex);
297 doublereal d = Vec(iIndex) * (*pScale)(iIndex) * dCoef;
354 : m_iFirstIndex(iFirstIndex), m_iLastIndex(iLastIndex), m_pTest(pTest)
408 if (iFirstIndex <= 0) {
409 silent_cerr(
"NonlinearSolverTestRange: invalid iFirstIndex=" << iFirstIndex << std::endl);
413 if (iLastIndex <= iFirstIndex) {
414 silent_cerr(
"NonlinearSolverTestRange: invalid iLastIndex=" << iLastIndex <<
" (iFirstIndex=" << iFirstIndex <<
")" << std::endl);
425 :bHonorJacRequest(bHonorJacRequest),
426 eScaleFlags(eScaleFlags),
427 dScaleAlgebraic(dScaleAlgebraic)
439 bParallel(MPI::Is_initialized()),
445 dMinCond(std::numeric_limits<
doublereal>::max()),
448 , ExtStepType(External::ERROR)
509 NonlinearSolver::SetExternal(
const External::ExtMessage Ty)
515 NonlinearSolver::SendExternal(
void)
517 switch (ExtStepType) {
519 External::SendNull();
522 case (External::REGULAR):
523 External::SendRegular();
526 case (External::CLOSE):
527 External::SendClose();
530 case (External::ERROR):
532 External::SendError();
doublereal dTimeCPU[CPU_LAST_TYPE]
bool IsConverged(void) const
integer * GetDofsList(DofType who) const
virtual SolutionManager * pGetSolutionManager(void) const
virtual void TestMerge(doublereal &dResCurr, const doublereal &dResNew) const
NonlinearSolverTestRange(NonlinearSolverTest *pTest, integer iFirstIndex=-1, integer iLastIndex=-1)
void ComplExchIntRes(doublereal &d, const NonlinearSolverTest *t)
enum NonlinearSolverOptions::ScaleFlags eScaleFlags
virtual void SetScale(const VectorHandler *pScl)
virtual void TestOne(doublereal &dRes, const VectorHandler &Vec, const integer &iIndex, doublereal dCoef) const
virtual ~NonlinearSolverTest(void)
virtual doublereal TestScale(const NonlinearSolverTest *pTest, doublereal &dAlgebraicEquations) const =0
#define MBDYN_EXCEPT_ARGS
#define DEBUGCOUTFNAME(fname)
doublereal dScaleAlgebraic
virtual doublereal MakeTest(Solver *pS, const integer &Size, const VectorHandler &Vec, bool bResidual=false, doublereal dScaleAlgEqu=1., doublereal *pTestDiff=0)
virtual bool MakeSolTest(Solver *pS, const VectorHandler &Vec, const doublereal &dTol, doublereal &dTest)
virtual bool MakeResTest(Solver *pS, const NonlinearProblem *pNLP, const VectorHandler &Vec, const doublereal &dTol, doublereal &dTest, doublereal &dTestDiff)
NonlinearSolverTest * m_pTest
virtual void TestOne(doublereal &dRes, const VectorHandler &Vec, const integer &iIndex, doublereal dCoef) const
virtual doublereal MakeTest(Solver *pS, integer Size, const VectorHandler &Vec, bool bResidual=false, doublereal *pTestDiff=0)
virtual void TestOne(doublereal &dRes, const VectorHandler &Vec, const integer &iIndex, doublereal dCoef) const
virtual void TestMerge(doublereal &dResCurr, const doublereal &dResNew) const
void StartExchIntSol(void)
virtual integer iGetSize(void) const =0
GradientExpression< UnaryExpr< FuncFabs, Expr > > fabs(const GradientExpression< Expr > &u)
virtual ~NonlinearSolverTestRange(void)
virtual void TestMerge(doublereal &dResCurr, const doublereal &dResNew) const =0
bool bIsValid(const integer &iIndex) const
virtual integer TotalAssembledJacobian(void)
virtual ~NonlinearSolver(void)
void SetRange(integer iFirstIndex, integer iLastIndex)
virtual const doublereal & dScaleCoef(const integer &iIndex) const
virtual void TestMerge(doublereal &dResCurr, const doublereal &dResNew) const
virtual const doublereal & dScaleCoef(const integer &iIndex) const
NonlinearSolverTest * pSolTest
virtual void SetTest(NonlinearSolverTest *pr, NonlinearSolverTest *ps)
virtual doublereal TestPost(const doublereal &dRes) const
virtual void TestOne(doublereal &dRes, const VectorHandler &Vec, const integer &iIndex, doublereal dCoef) const
NonlinearSolver(const NonlinearSolverOptions &options)
virtual ~NonlinearSolverTestScale(void)
#define ASSERT(expression)
virtual const doublereal & dScaleCoef(const integer &iIndex) const
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
NonlinearSolverOptions(bool bHonorJacRequest=false, enum ScaleFlags eScaleFlags=SCALE_ALGEBRAIC_EQUATIONS_NO, doublereal dScaleAlgebraic=1.)
virtual void TestOne(doublereal &dRes, const VectorHandler &Vec, const integer &iIndex, doublereal dCoef) const
virtual const doublereal & dScaleCoef(const integer &iIndex) const
void StartExchIntRes(void)
integer HowManyDofs(DofType who) const
virtual doublereal TestPost(const doublereal &dRes) const
void ComplExchIntSol(doublereal &d, const NonlinearSolverTest *t)
virtual DataManager * pGetDataManager(void) const
virtual void TestOne(doublereal &dRes, const VectorHandler &Vec, const integer &iIndex, doublereal dCoef) const =0
NonlinearSolverTestScale(const VectorHandler *pScl=0)
virtual void TestMerge(doublereal &dResCurr, const doublereal &dResNew) const
virtual void TestMerge(doublereal &dResCurr, const doublereal &dResNew) const
NonlinearSolverTest * pResTest
virtual const doublereal & dScaleCoef(const integer &iIndex) const
virtual void TestOne(doublereal &dRes, const VectorHandler &Vec, const integer &iIndex, doublereal dCoef) const
const VectorHandler * pScale
virtual doublereal TestPost(const doublereal &dRes) const
virtual void TestMerge(doublereal &dResCurr, const doublereal &dResNew) const