49 #ifndef Xyce_LOA_NonlinearEquationLoader_H
50 #define Xyce_LOA_NonlinearEquationLoader_H
53 #include <N_LAS_fwd.h>
55 #include <N_PDS_fwd.h>
57 #include <N_UTL_fwd.h>
59 #include <N_UTL_Stats.h>
86 bool daeStateDerivFlag);
95 bool applyJacobian (
const Linear::Vector& input, Linear::Vector& result);
110 bool loadCouplingRHS (
int iSubProblem,
int iCouple, Linear::Vector * dfdvPtr);
111 bool calcCouplingTerms (
int iSubProblem,
int iCouple,
const Linear::Vector * dxdvPtr);
133 std::vector<double> & dfdpVec,
134 std::vector<double> & dqdpVec,
135 std::vector<double> & dbdpVec,
136 std::vector<int> & FindicesVec,
137 std::vector<int> & QindicesVec,
138 std::vector<int> & BindicesVec)
const;
140 bool setParam(std::string & name,
double val,
bool overrideOriginal=
false);
142 bool getParamAndReduce(Parallel::Machine comm,
const std::string & name,
double & val)
const;
149 void homotopyStepSuccess(
const std::vector<std::string> & paramNames,
const std::vector<double> & paramVals);
Util::Timer * jacobianTimerPtr_
TimeIntg::DataStore & ds_
bool loadCouplingRHS(int iSubProblem, int iCouple, Linear::Vector *dfdvPtr)
Pure virtual class to augment a linear system.
bool analyticSensitivitiesAvailable(std::string &name)
TimeIntg::WorkingIntegrationMethod & wim_
bool applyJacobian(const Linear::Vector &input, Linear::Vector &result)
virtual ~NonlinearEquationLoader()
bool getParamAndReduce(Parallel::Machine comm, const std::string &name, double &val) const
bool innerDevicesConverged(Parallel::Machine comm)
int getHomotopyBlockSize() const
bool allDevicesConverged(Parallel::Machine comm)
bool disablePDEContinuation()
bool setParam(std::string &name, double val, bool overrideOriginal=false)
const Loader & getLoader() const
Util::Timer * residualTimerPtr_
bool calcCouplingTerms(int iSubProblem, int iCouple, const Linear::Vector *dxdvPtr)
NonlinearEquationLoader(TimeIntg::DataStore &ds, Loader &loader, Device::DeviceMgr &device_manager, TimeIntg::WorkingIntegrationMethod &wim, bool daeStateDerivFlag)
bool loadFinalSensitivityDerivatives()
void getAnalyticSensitivities(std::string &name, std::vector< double > &dfdpVec, std::vector< double > &dqdpVec, std::vector< double > &dbdpVec, std::vector< int > &FindicesVec, std::vector< int > &QindicesVec, std::vector< int > &BindicesVec) const
void homotopyStepFailure()
bool loadSensitivityResiduals()
void homotopyStepSuccess(const std::vector< std::string > ¶mNames, const std::vector< double > ¶mVals)
void setVoltageLimiterStatus(bool voltageLimterStatus)
void getNumInterfaceNodes(std::vector< int > &numINodes)
int enablePDEContinuation()
bool getVoltageLimiterStatus()
bool isLinearSystem() const
Device::DeviceMgr & deviceManager_
Device manager.