MBDyn-1.7.3
|
#include <solver.h>
Classes | |
struct | EigenAnalysis |
class | EndOfSimulation |
class | ErrGeneric |
class | ErrMaxIterations |
class | SimulationDiverged |
Public Member Functions | |
Solver (MBDynParser &HP, const std::string &sInputFileName, const std::string &sOutputFileName, unsigned int nThreads, bool bParallel=false) | |
virtual | ~Solver (void) |
virtual bool | Prepare (void) |
virtual bool | Start (void) |
virtual bool | Advance (void) |
void | Run (void) |
std::ostream & | Restart (std::ostream &out, DataManager::eRestart type) const |
virtual DataManager * | pGetDataManager (void) const |
virtual SolutionManager * | pGetSolutionManager (void) const |
virtual const LinSol & | GetLinearSolver (void) const |
virtual NonlinearSolver * | pGetNonlinearSolver (void) const |
virtual StepIntegrator * | pGetStepIntegrator (void) const |
virtual doublereal | dGetFinalTime (void) const |
virtual doublereal | dGetInitialTimeStep (void) const |
virtual clock_t | GetCPUTime (void) const |
virtual void | PrintResidual (const VectorHandler &Res, integer iIterCnt) const |
virtual void | PrintSolution (const VectorHandler &Sol, integer iIterCnt) const |
virtual void | CheckTimeStepLimit (doublereal dErr, doublereal dErrDiff) const throw (NonlinearSolver::TimeStepLimitExceeded, NonlinearSolver::MaxResidualExceeded) |
![]() | |
SolverDiagnostics (unsigned OF=OUTPUT_DEFAULT, DriveCaller *pOM=0) | |
virtual | ~SolverDiagnostics (void) |
void | SetNoOutput (void) |
void | SetOutputMeter (DriveCaller *pOM) |
void | SetOutputDriveHandler (const DriveHandler *pDH) |
void | SetOutputFlags (unsigned OF) |
void | AddOutputFlags (unsigned OF) |
void | DelOutputFlags (unsigned OF) |
MatrixHandler::Norm_t | GetCondMatNorm (void) const |
bool | outputMeter (void) const |
bool | outputIters (void) const |
bool | outputRes (void) const |
bool | outputSol (void) const |
bool | outputJac (void) const |
bool | outputStep (void) const |
bool | outputBailout (void) const |
bool | outputCounter (void) const |
bool | outputMatrixConditionNumber (void) const |
bool | outputSolverConditionNumber (void) const |
bool | outputSolverConditionStat (void) const |
bool | outputCPUTime (void) const |
bool | outputMsg (void) const |
Protected Member Functions | |
void | Eig (bool bNewLine=false) |
void | Flip (void) |
void | ReadData (MBDynParser &HP) |
SolutionManager *const | AllocateSolman (integer iNLD, integer iLWS=0) |
SolutionManager *const | AllocateSchurSolman (integer iStates) |
NonlinearSolver *const | AllocateNonlinearSolver () |
void | SetupSolmans (integer iStates, bool bCanBeParallel=false) |
doublereal | dGetInitialMaxTimeStep () const |
![]() | |
NonlinearSolverOptions (bool bHonorJacRequest=false, enum ScaleFlags eScaleFlags=SCALE_ALGEBRAIC_EQUATIONS_NO, doublereal dScaleAlgebraic=1.) | |
|
protected |
Enumerator | |
---|---|
SOLVER_STATUS_UNINITIALIZED | |
SOLVER_STATUS_PREPARED | |
SOLVER_STATUS_STARTED |
|
protected |
Enumerator | |
---|---|
AFTER_UNKNOWN | |
AFTER_INPUT | |
AFTER_ASSEMBLY | |
AFTER_DERIVATIVES | |
AFTER_DUMMY_STEPS |
Definition at line 257 of file solver.h.
|
protected |
Enumerator | |
---|---|
INT_CRANKNICOLSON | |
INT_MODCRANKNICOLSON | |
INT_MS2 | |
INT_HOPE | |
INT_THIRDORDER | |
INT_IMPLICITEULER | |
INT_UNKNOWN |
Definition at line 267 of file solver.h.
|
protected |
Enumerator | |
---|---|
TS_SOFT_LIMIT | |
TS_HARD_LIMIT |
Solver::Solver | ( | MBDynParser & | HP, |
const std::string & | sInputFileName, | ||
const std::string & | sOutputFileName, | ||
unsigned int | nThreads, | ||
bool | bParallel = false |
||
) |
Definition at line 274 of file solver.cc.
References ASSERT, DEBUGCOUTFNAME, and InitTimeStepData().
|
virtual |
Definition at line 1647 of file solver.cc.
References DEBUGCOUTFNAME, DestroyTimeStepData(), iNumPreviousVectors, pDerivativeSteps, pDM, pDummySteps, pdWorkSpace, pFirstDummyStep, pFirstRegularStep, pNLS, pRegularSteps, pRTSolver, pSM, pTSC, pX, pXPrime, qX, qXPrime, SAFEDELETE, and SAFEDELETEARR.
|
virtual |
Reimplemented in InverseSolver.
Definition at line 1376 of file solver.cc.
References StepIntegrator::Advance(), Solver::EigenAnalysis::Analyses, Solver::EigenAnalysis::bAnalysis, DataManager::BeforePredict(), bOut, bOutputCounter, bSolConv, Solver::EigenAnalysis::currAnalysis, CurrStep, dCurrTimeStep, DEBUGCOUT, DEBUGCOUTFNAME, dFinalTime, TimeStepControl::dGetNewStepTime(), dMinTimeStep, dRefTimeStep, dSolTest, dTest, dTime, dTotErr, Eig(), EigAn, DataManager::EndOfSimulation(), eStatus, Flip(), DataManager::GetDofDescription(), StepIntegrator::GetIntegratorMaxIters(), DataManager::GetOutFile(), LinearSolver::ErrFactor::iCol, RTSolverBase::IsStopCommanded(), iStIter, iTotIter, RTSolverBase::Log(), lStep, MBDYN_EXCEPT_ARGS, mbdyn_stop_at_end_of_time_step(), StepIntegrator::NEWSTEP, DataManager::Output(), SolverDiagnostics::outputCounter(), outputCounterPostfix, outputCounterPrefix, SolverDiagnostics::outputMsg(), SolverDiagnostics::outputStep(), pDM, pNLS, pRegularSteps, pRTSolver, pTSC, pX, pXPrime, qX, qXPrime, StepIntegrator::REPEATSTEP, DataManager::SetTime(), SOLVER_STATUS_STARTED, sOutputFileName, RTSolverBase::StopCommanded(), NonlinearSolver::TotalAssembledJacobian(), RTSolverBase::Wait(), and MBDynErrBase::what().
Referenced by mb_sol_advance(), and Run().
|
protected |
Definition at line 5073 of file solver.cc.
References MatrixFreeSolver::BICGSTAB, bKeepJac, bTrueNewtonRaphson, dIterertiveEtaMax, dIterertiveTau, dIterTol, MatrixFreeSolver::GMRES, iIterationsBeforeAssembly, iIterativeMaxSteps, iPrecondSteps, NonlinearSolver::LINESEARCH, LineSearch, NonlinearSolver::MATRIXFREE, MFSolverType, NonlinearSolver::NEWTONRAPHSON, NonlinearSolverType, PcType, pNLS, and SAFENEWWITHCONSTRUCTOR.
Referenced by InverseSolver::Prepare(), and Prepare().
|
protected |
Definition at line 5036 of file solver.cc.
References CurrIntSolver, LinSol::GetSolver(), LinSol::GetSolverName(), iNumDofs, iNumIntDofs, iNumLocDofs, LinSol::LAPACK_SOLVER, MBDYN_EXCEPT_ARGS, LinSol::MESCHACH_SOLVER, LinSol::NAIVE_SOLVER, pIntDofs, pLocalSM, pLocDofs, SAFENEWWITHCONSTRUCTOR, LinSol::UMFPACK_SOLVER, and LinSol::Y12_SOLVER.
Referenced by SetupSolmans().
|
protected |
Definition at line 5001 of file solver.cc.
References CurrLinearSolver, LinSol::GetSolutionManager(), LinSol::GetSolver(), pRTSolver, and LinSol::UMFPACK_SOLVER.
Referenced by SetupSolmans().
|
virtual |
Definition at line 5205 of file solver.cc.
References ASSERT, and MBDYN_EXCEPT_ARGS.
Referenced by LineSearchSolver::LineSearch(), BiCGStab::Solve(), Gmres::Solve(), NewtonRaphsonSolver::Solve(), and LineSearchSolver::Solve().
|
inlinevirtual |
Definition at line 414 of file solver.h.
References dFinalTime.
|
protected |
Definition at line 4990 of file solver.cc.
References dDefaultMaxTimeStep, DriveOwner::dGet(), MaxTimeStep, and DriveOwner::pGetDriveCaller().
Referenced by InverseSolver::ReadData(), and ReadData().
|
inlinevirtual |
Definition at line 417 of file solver.h.
References dInitialTimeStep.
Referenced by DataManager::AfterConvergence(), and ModuleFMU::ModuleFMU().
Definition at line 4853 of file solver.cc.
References Solver::EigenAnalysis::Analyses, DataManager::AssJac(), buf, Solver::EigenAnalysis::currAnalysis, DEBUGCOUT, DEBUGCOUTFNAME, Solver::EigenAnalysis::dParam, dTime, Solver::EigenAnalysis::EIG_OUTPUT, Solver::EigenAnalysis::EIG_OUTPUT_FULL_MATRICES, Solver::EigenAnalysis::EIG_OUTPUT_SPARSE_MATRICES, Solver::EigenAnalysis::EIG_USE_ARPACK, Solver::EigenAnalysis::EIG_USE_JDQZ, Solver::EigenAnalysis::EIG_USE_LAPACK, Solver::EigenAnalysis::EIG_USE_MASK, EigAn, Solver::EigenAnalysis::iFNameFormat, Solver::EigenAnalysis::iFNameWidth, Solver::EigenAnalysis::iMatrixPrecision, iNumDofs, Solver::EigenAnalysis::iResultsPrecision, DataManager::OutputEigClose(), DataManager::OutputEigFullMatrices(), DataManager::OutputEigNaiveMatrices(), DataManager::OutputEigOpen(), DataManager::OutputEigParams(), DataManager::OutputEigSparseMatrices(), SolutionManager::pMatHdl(), MatrixHandler::Reset(), SAFEDELETE, SAFENEWWITHCONSTRUCTOR, and Solver::EigenAnalysis::uFlags.
Referenced by Advance(), Prepare(), and Start().
|
inlineprotected |
Definition at line 429 of file solver.h.
References iNumDofs, MyVectorHandler::PutCoef(), pX, pXPrime, qX, and qXPrime.
Referenced by Advance(), Prepare(), and Start().
|
virtual |
Definition at line 5188 of file solver.cc.
References DataManager::GetCPUTime().
Referenced by mbdyn_program().
|
inlinevirtual |
|
inlinevirtual |
Definition at line 395 of file solver.h.
References pDM.
Referenced by NonlinearSolver::MakeResTest(), NonlinearSolver::MakeSolTest(), NonlinearSolverTest::MakeTest(), mb_sol_setbufin(), and mb_sol_setbufout().
|
inlinevirtual |
Definition at line 404 of file solver.h.
References pNLS.
Referenced by ThirdOrderIntegrator::Advance(), DerivativeSolver::Advance(), Step1Integrator::Advance(), Step2Integrator::Advance(), and InverseDynamicsStepSolver::Advance().
|
inlinevirtual |
Definition at line 398 of file solver.h.
References pSM.
Referenced by InverseDynamicsStepSolver::Advance(), LineSearchSolver::Jacobian(), NonlinearSolverTest::MakeTest(), BiCGStab::Solve(), NewtonRaphsonSolver::Solve(), Gmres::Solve(), and LineSearchSolver::Solve().
|
inlinevirtual |
Definition at line 407 of file solver.h.
References ASSERT, and pCurrStepIntegrator.
Referenced by DataManager::AssConstrJac().
|
virtual |
Reimplemented in InverseSolver.
Definition at line 399 of file solver.cc.
References LinSol::AddSolverFlags(), StepIntegrator::Advance(), AFTER_ASSEMBLY, AFTER_DERIVATIVES, AFTER_DUMMY_STEPS, AFTER_INPUT, AllocateNonlinearSolver(), Solver::EigenAnalysis::Analyses, ASSERT, Solver::EigenAnalysis::bAnalysis, DataManager::BeforePredict(), bOut, bOutputCounter, bParallel, bScale, bSolConv, IncludeParser::Close(), SchurDataManager::CreatePartition(), Solver::EigenAnalysis::currAnalysis, CurrLinearSolver, dCurrTimeStep, dDerivativesCoef, dDummyStepsRatio, DEBUG_LEVEL, DEBUG_LEVEL_MATCH, DEBUGCOUT, DEBUGCOUTFNAME, DEBUGLCOUT, dInitialTime, dInitialTimeStep, dRefTimeStep, dSolTest, dTest, dTime, dTotErr, eAbortAfter, Eig(), EigAn, Solver::EigenAnalysis::EIGAN_WIDTH_COMPUTE, EMPTY, environ, eStatus, Flip(), DataManager::GetDofDescription(), SchurDataManager::GetDofsList(), StepIntegrator::GetIntegratorNumPreviousStates(), StepIntegrator::GetIntegratorNumUnknownStates(), DataManager::GetLogFile(), HighParser::GetMathParser(), DataManager::GetOutFile(), LinSol::GetSolverFlags(), LinSol::GetSolverName(), MathParser::GetSymbolTable(), SchurDataManager::HowManyDofs(), HP, LinearSolver::ErrFactor::iCol, iDummyStepsNumber, Solver::EigenAnalysis::iFNameWidth, DataManager::iGetNumDofs(), SchurDataManager::INTERNAL, iNumDofs, iNumIntDofs, iNumLocDofs, iNumPreviousVectors, iStIter, iTotIter, iUnkStates, DataManager::LinkToSolution(), SchurDataManager::LOCAL, grad::log(), lStep, MBDYN_EXCEPT_ARGS, mbdyn_signal_init(), mbdyn_stop_at_end_of_time_step(), NonlinearSolverTest::MINMAX, MYDEBUG_DERIVATIVES, MYDEBUG_FSTEPS, MYDEBUG_JAC, MYDEBUG_MEM, MYDEBUG_PRED, MYDEBUG_RESIDUAL, MYDEBUG_SOL, StepIntegrator::NEWSTEP, NonlinearSolverTest::NONE, NonlinearSolverTest::NORM, DataManager::Output(), SolverDiagnostics::OUTPUT_JAC, SolverDiagnostics::OUTPUT_RES, SolverDiagnostics::OUTPUT_SOL, SolverDiagnostics::outputCounter(), outputCounterPostfix, outputCounterPrefix, DataManager::OutputEigPrepare(), SolverDiagnostics::OutputFlags, SolverDiagnostics::outputMsg(), DataManager::OutputPrepare(), SolverDiagnostics::outputStep(), StepIntegrator::OutputTypes(), DriveCaller::pCopy(), pCurrStepIntegrator, pDerivativeSteps, pDM, pDofs, pDummySteps, pdWorkSpace, pFirstDummyStep, pFirstRegularStep, SchurDataManager::pGetDofsList(), DataManager::pGetDrvHdl(), pIntDofs, pLocDofs, pNLS, SolverDiagnostics::pOutputMeter, pRegularSteps, pRTSolver, pSDM, pTSC, pX, pXPrime, qX, qXPrime, ReadData(), MyVectorHandler::Reset(), VectorHandler::ResizeReset(), ResTest, SAFEDELETE, SAFENEW, SAFENEWARR, SAFENEWWITHCONSTRUCTOR, Scale, StepIntegrator::SetDataManager(), TimeStepControl::SetDriveHandler(), StepIntegrator::SetDriveHandler(), DriveCaller::SetDrvHdl(), SolverDiagnostics::SetOutputDriveHandler(), SolverDiagnostics::SetOutputFlags(), SolverDiagnostics::SetOutputMeter(), NonlinearSolverTestScale::SetScale(), DataManager::SetScale(), LinSol::SetSolver(), NonlinearSolver::SetTest(), DataManager::SetTime(), RTSolverBase::Setup(), SetupSolmans(), DataManager::SetValue(), sInputFileName, SolTest, LinSol::SOLVER_FLAGS_ALLOWS_MT_ASS, SOLVER_STATUS_PREPARED, SOLVER_STATUS_UNINITIALIZED, sOutputFileName, SchurDataManager::TOTAL, LinSol::UMFPACK_SOLVER, MBDynErrBase::what(), and LinSol::Y12_SOLVER.
Referenced by mb_sol_prepare(), and Run().
|
virtual |
Definition at line 5194 of file solver.cc.
References DataManager::PrintResidual().
Referenced by InverseDynamicsStepSolver::Advance(), LineSearchSolver::Residual(), BiCGStab::Solve(), Gmres::Solve(), NewtonRaphsonSolver::Solve(), and LineSearchSolver::Solve().
|
virtual |
Definition at line 5200 of file solver.cc.
References DataManager::PrintSolution().
Referenced by InverseDynamicsStepSolver::Advance(), BiCGStab::Solve(), NewtonRaphsonSolver::Solve(), Gmres::Solve(), and LineSearchSolver::Solve().
|
protected |
Definition at line 1853 of file solver.cc.
References LineSearchParameters::ABORT_AT_LAMBDA_MIN, SolverDiagnostics::AddOutputFlags(), AFTER_ASSEMBLY, AFTER_DERIVATIVES, AFTER_DUMMY_STEPS, AFTER_INPUT, LineSearchParameters::ALGORITHM_CUBIC, LineSearchParameters::ALGORITHM_FACTOR, Solver::EigenAnalysis::Analyses, Solver::EigenAnalysis::arpack, ASSERT, Solver::EigenAnalysis::bAnalysis, NonlinearSolverOptions::bHonorJacRequest, MatrixFreeSolver::BICGSTAB, bKeepJac, bParallel, bScale, bTrueNewtonRaphson, Solver::EigenAnalysis::currAnalysis, CurrIntSolver, CurrLinearSolver, LineSearchParameters::dAlpha, dDefaultDerivativesCoefficient, dDefaultDummyStepsTolerance, dDefaultTol, dDerivativesCoef, LineSearchParameters::dDivergenceCheck, dDummyStepsRatio, DEBUGCOUTFNAME, DEBUGLCOUT, MatrixFreeSolver::DEFAULT, NonlinearSolver::DEFAULT, SolverDiagnostics::DelOutputFlags(), dFinalTime, DriveOwner::dGet(), dGetInitialMaxTimeStep(), dInitialTime, dInitialTimeStep, dIterertiveEtaMax, dIterertiveTau, dIterTol, LineSearchParameters::DIVERGENCE_CHECK, LineSearchParameters::dLambdaFactMin, LineSearchParameters::dLambdaMin, Solver::EigenAnalysis::dLowerFreq, dMaxResidual, dMaxResidualDiff, LineSearchParameters::dMaxStep, LineSearchParameters::dMinStepScale, dMinTimeStep, Solver::EigenAnalysis::dParam, NonlinearSolverOptions::dScaleAlgebraic, Solver::EigenAnalysis::ARPACK::dTOL, LineSearchParameters::dTolMin, LineSearchParameters::dTolX, DummyType, Solver::EigenAnalysis::dUpperFreq, eAbortAfter, Solver::EigenAnalysis::EIG_BALANCE, Solver::EigenAnalysis::EIG_OUTPUT_EIGENVECTORS, Solver::EigenAnalysis::EIG_OUTPUT_FULL_MATRICES, Solver::EigenAnalysis::EIG_OUTPUT_GEOMETRY, Solver::EigenAnalysis::EIG_OUTPUT_MATRICES, Solver::EigenAnalysis::EIG_OUTPUT_SPARSE_MATRICES, Solver::EigenAnalysis::EIG_PERMUTE, Solver::EigenAnalysis::EIG_SCALE, Solver::EigenAnalysis::EIG_SOLVE, Solver::EigenAnalysis::EIG_USE_ARPACK, Solver::EigenAnalysis::EIG_USE_JDQZ, Solver::EigenAnalysis::EIG_USE_LAPACK, Solver::EigenAnalysis::EIG_USE_MASK, EigAn, Solver::EigenAnalysis::EIGAN_WIDTH_COMPUTE, END, Solver::EigenAnalysis::JDQZ::eps, NonlinearSolverOptions::eScaleFlags, eTimeStepLimit, Preconditioner::FULLJACOBIANMATRIX, HighParser::ErrValueOutOfRange< T >::Get(), get_nprocs(), HighParser::GetDescription(), MBDynParser::GetDriveCaller(), HighParser::GetInt(), IncludeParser::GetLineData(), HighParser::GetReal(), LinSol::GetSolverName(), HighParser::GetStringWithDelims(), HighParser::GetWord(), HighParser::GetYesNoOrBool(), MatrixFreeSolver::GMRES, iDefaultDummyStepsNumber, iDefaultIterationsBeforeAssembly, iDefaultMaxIterations, iDummyStepsNumber, Solver::EigenAnalysis::iFNameFormat, Solver::EigenAnalysis::iFNameWidth, iIterationsBeforeAssembly, iIterativeMaxSteps, Solver::EigenAnalysis::iMatrixPrecision, LineSearchParameters::iMaxIterations, iMaxIterations, Solver::EigenAnalysis::ARPACK::iNCV, Solver::EigenAnalysis::ARPACK::iNEV, INT_CRANKNICOLSON, INT_HOPE, INT_IMPLICITEULER, INT_MS2, INT_THIRDORDER, INT_UNKNOWN, iPrecondSteps, Solver::EigenAnalysis::iResultsPrecision, HighParser::IsArg(), HighParser::IsKeyWord(), Solver::EigenAnalysis::jdqz, Solver::EigenAnalysis::JDQZ::jmax, Solver::EigenAnalysis::JDQZ::jmin, Solver::EigenAnalysis::JDQZ::kmax, LASTKEYWORD, NonlinearSolver::LINESEARCH, LineSearch, NonlinearSolver::MATRIXFREE, MaxTimeStep, MBDYN_EXCEPT_ARGS, MFSolverType, NonlinearSolverTest::MINMAX, MYDEBUG_INPUT, NonlinearSolver::NEWTONRAPHSON, LineSearchParameters::NON_NEGATIVE_SLOPE_CONTINUE, NonlinearSolverTest::NONE, NonlinearSolverType, NonlinearSolverTest::NORM, OUTPUT, SolverDiagnostics::OUTPUT_BAILOUT, SolverDiagnostics::OUTPUT_COUNTER, SolverDiagnostics::OUTPUT_CPU_TIME, SolverDiagnostics::OUTPUT_DEFAULT, SolverDiagnostics::OUTPUT_ITERS, SolverDiagnostics::OUTPUT_JAC, SolverDiagnostics::OUTPUT_MAT_COND_NUM, SolverDiagnostics::OUTPUT_MAT_COND_NUM_1, SolverDiagnostics::OUTPUT_MAT_COND_NUM_INF, SolverDiagnostics::OUTPUT_MSG, SolverDiagnostics::OUTPUT_NONE, SolverDiagnostics::OUTPUT_RES, SolverDiagnostics::OUTPUT_SOL, SolverDiagnostics::OUTPUT_SOLVER_COND_NUM, SolverDiagnostics::OUTPUT_SOLVER_COND_STAT, DriveCaller::pCopy(), PcType, pDerivativeSteps, pDummySteps, pFirstDummyStep, pFirstRegularStep, DriveOwner::pGetDriveCaller(), pRegularSteps, pRhoAlgebraicDummy, pRhoAlgebraicRegular, pRhoDummy, pRhoRegular, LineSearchParameters::PRINT_CONVERGENCE_INFO, pRTSolver, pTSC, ReadLinSol(), ReadRTSolver(), ReadTimeStepData(), RegularType, LineSearchParameters::RELATIVE_LAMBDA_MIN, ResTest, SAFENEW, SAFENEWWITHCONSTRUCTOR, NonlinearSolverOptions::SCALE_ALGEBRAIC_EQUATIONS_NO, NonlinearSolverOptions::SCALE_ALGEBRAIC_EQUATIONS_YES, LineSearchParameters::SCALE_NEWTON_STEP, DriveOwner::Set(), LinSol::SetNumThreads(), SolverDiagnostics::SetOutputFlags(), SolverDiagnostics::SetOutputMeter(), SolTest, TS_HARD_LIMIT, TS_SOFT_LIMIT, LineSearchParameters::uFlags, Solver::EigenAnalysis::uFlags, LineSearchParameters::VERBOSE_MODE, MBDynErrBase::what(), and LineSearchParameters::ZERO_GRADIENT_CONTINUE.
Referenced by Prepare().