49 #ifndef Xyce_N_NLS_NonLinearSolver_h
50 #define Xyce_N_NLS_NonLinearSolver_h
54 #include <Teuchos_RCP.hpp>
58 #include <N_UTL_fwd.h>
61 #include <N_LAS_fwd.h>
63 #include <N_PDS_fwd.h>
69 #include <N_UTL_Stats.h>
118 virtual bool setOptions(
const Util::OptionBlock& OB) = 0;
120 virtual bool setHBOptions(
const Util::OptionBlock& OB) = 0;
187 void debugOutput1(Linear::Matrix & jacobian, Linear::Vector & rhs);
188 void debugOutput3(Linear::Vector & dxVector, Linear::Vector & xVector);
196 virtual bool applyJacobian(
const Linear::Vector& input, Linear::Vector& result);
virtual ~NonLinearSolver()
virtual int getMaxNormFindex() const =0
virtual bool isFirstContinuationParam() const =0
void debugOutput3(Linear::Vector &dxVector, Linear::Vector &xVector)
virtual bool getLocaFlag()
void setMatrixFreeFlag(bool matrixFreeFlag)
virtual bool setTwoLevelLocaOptions(const Util::OptionBlock &OB)
virtual int getContinuationStep() const =0
virtual bool enableSensitivity()
virtual int solve(NonLinearSolver *nlsTmpPtr=NULL)=0
virtual bool setTranOptions(const Util::OptionBlock &OB)=0
virtual bool setTwoLevelOptions(const Util::OptionBlock &OB)
virtual int takeFirstSolveStep(NonLinearSolver *nlsTmpPtr=NULL)
bool getMatrixFreeFlag() const
virtual bool setNodeSetOptions(const Util::OptionBlock &OB)
Pure virtual class to augment a linear system.
int numFailedLinearSolves_
virtual bool setNLPOptions(const Util::OptionBlock &OB)=0
virtual int getNumLinearSolves()
unsigned int totalNumLinearIters_
Util::OptionBlock * linsolOptionBlockPtr_
virtual bool applyJacobian(const Linear::Vector &input, Linear::Vector &result)
virtual double getMaxNormF() const =0
std::string netlistFilename_
Linear::Matrix * dFdxTestMatrixPtr_
virtual void setReturnCodes(const ReturnCodes &retCodesTmp)
virtual bool setICOptions(const Util::OptionBlock &OB)
virtual double getTotalLinearSolveTime()
Linear::Vector ** tmpSolVectorPtrPtr_
virtual void resetCountersAndTimers_()
Linear::Vector * rhsVectorPtr_
virtual double getTotalResidualLoadTime()
virtual void resetAll(AnalysisMode mode)
TimeIntg::DataStore * dsPtr_
Linear::Vector * gradVectorPtr_
virtual int getDebugLevel() const =0
NonLinearSolver(const IO::CmdParse &cp)
virtual bool initializeAll()
Linear::Matrix * jacobianMatrixPtr_
IO::OutputMgr * outMgrPtr_
bool registerParamMgr(ParamMgr *ptr)
N_PDS_Manager * pdsMgrPtr_
const Analysis::AnalysisManager & getAnalysisManager() const
virtual bool isFirstSolveComplete() const =0
Linear::System * lasSysPtr_
void setDebugFlags(int output_step_number, double time)
Linear::Vector ** nextSolVectorPtrPtr_
virtual bool getScreenOutputFlag() const =0
void debugOutput1(Linear::Matrix &jacobian, Linear::Vector &rhs)
bool registerTwoLevelSolver(TwoLevelNewton *ptr)
Linear::Solver * lasSolverPtr_
virtual unsigned int getTotalNumLinearIters()
const Linear::PrecondFactory * lasPrecPtr_
bool registerInitialConditionsManager(IO::InitialConditionsManager *outPtr)
const IO::CmdParse & commandLine_
Linear::Vector * fdxVLVectorPtr_
Linear::Vector * jdxVLVectorPtr_
virtual TwoLevelNewtonMode getCouplingMode()
bool registerPrecondFactory(const Linear::PrecondFactory *ptr)
virtual int getNumJacobianLoads()
Analysis::AnalysisManager & getAnalysisManager()
virtual double getDebugMinTime() const =0
virtual int getDebugMinTimeStep() const =0
Analysis::AnalysisManager * analysisManager_
double totalResidualLoadTime_
Linear::Matrix * jacTestMatrixPtr_
void debugOutputJDX_VOLTLIM()
RCP< Linear::Problem > lasProblemRCPtr_
Loader::NonlinearEquationLoader * nonlinearEquationLoader_
virtual double getTotalJacobianLoadTime()
virtual bool registerTIADataStore(TimeIntg::DataStore *ptr)
virtual bool getMMFormat() const =0
Linear::Vector * solWtVectorPtr_
virtual int getDebugMaxTimeStep() const =0
virtual bool registerLinearSystem(Linear::System *ptr)
Linear::Vector * dxVoltlimVectorPtr_
virtual bool setLinsolOptions(const Util::OptionBlock &OB)
int numJacobianFactorizations_
Linear::Vector * NewtonVectorPtr_
IO::InitialConditionsManager * initialConditionsManager_
Linear::Vector * qdxVLVectorPtr_
virtual int takeOneSolveStep()
virtual bool registerParallelMgr(N_PDS_Manager *ptr)
Linear::Matrix * dQdxTestMatrixPtr_
virtual bool registerAnalysisManager(Analysis::AnalysisManager *tmp_anaIntPtr)
double totalLinearSolveTime_
virtual int getNumFailedLinearSolves()
virtual int getParameterNumber() const =0
virtual void setAnalysisMode(AnalysisMode mode)=0
ParamMgr * nonlinearParameterManager_
virtual int getNumJacobianFactorizations()
virtual bool setHBOptions(const Util::OptionBlock &OB)=0
Linear::Vector ** currSolVectorPtrPtr_
double totalJacobianLoadTime_
virtual double getDebugMaxTime() const =0
bool registerOutputMgr(IO::OutputMgr *outPtr)
bool registerRHSVector(Linear::Vector *ptr)
virtual bool setDCOPRestartOptions(const Util::OptionBlock &OB)
virtual bool setOptions(const Util::OptionBlock &OB)=0
virtual int getNumIterations() const =0
virtual bool registerNonlinearEquationLoader(Loader::NonlinearEquationLoader *ptr)
virtual int getNumResidualLoads()
virtual bool setTwoLevelTranOptions(const Util::OptionBlock &OB)
virtual bool setLocaOptions(const Util::OptionBlock &OB)