260 External::ExtMessage ExtStepType;
323 void SetExternal(
const External::ExtMessage Ty);
326 void SendExternal(
void);
doublereal dTimeCPU[CPU_LAST_TYPE]
void AddCond(doublereal dCond)
virtual void TestMerge(doublereal &dResCurr, const doublereal &dResNew) const
NonlinearSolverTestRange(NonlinearSolverTest *pTest, integer iFirstIndex=-1, integer iLastIndex=-1)
TimeStepLimitExceeded(MBDYN_EXCEPT_ARGS_DECL)
doublereal dGetCondMax() const
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)
NoConvergence(MBDYN_EXCEPT_ARGS_DECL)
#define MBDYN_EXCEPT_ARGS_PASSTHRU
doublereal dScaleAlgebraic
virtual doublereal MakeTest(Solver *pS, const integer &Size, const VectorHandler &Vec, bool bResidual=false, doublereal dScaleAlgEqu=1., doublereal *pTestDiff=0)
virtual NonlinearSolverTest * pGetSolTest(void)
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
#define MBDYN_EXCEPT_ARGS_DECL
doublereal dGetCondAvg() 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
doublereal dGetCondMin() const
doublereal dGetTimeCPU(CPUTimeType eType) const
virtual ~NonlinearSolverTestRange(void)
virtual void TestMerge(doublereal &dResCurr, const doublereal &dResNew) const =0
bool bIsValid(const integer &iIndex) const
ConvergenceOnSolution(MBDYN_EXCEPT_ARGS_DECL)
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
ErrGeneric(MBDYN_EXCEPT_ARGS_DECL)
void AddTimeCPU(doublereal dTime, CPUTimeType eType)
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
MaxResidualExceeded(MBDYN_EXCEPT_ARGS_DECL)
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
ErrSimulationDiverged(MBDYN_EXCEPT_ARGS_DECL)
virtual const doublereal & dScaleCoef(const integer &iIndex) const
virtual doublereal TestPost(const doublereal &dRes) 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 Solve(const NonlinearProblem *pNLP, Solver *pS, const integer iMaxIter, const doublereal &Tol, integer &iIterCnt, doublereal &dErr, const doublereal &SolTol, doublereal &dSolErr)=0
virtual NonlinearSolverTest * pGetResTest(void)
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