49 #ifndef Xyce_N_TIA_WorkingIntegrationMethods_h
50 #define Xyce_N_TIA_WorkingIntegrationMethods_h
54 #include <N_UTL_Math.h>
61 #include <N_LAS_fwd.h>
63 #include <N_UTL_IndexPair.h>
65 #include <N_UTL_Stats.h>
87 TimeIntegrationMethod *
createTimeIntegrationMethod(
int type,
const TIAParams & tia_params, StepErrorControl & step_error_control, DataStore & data_store);
119 void updateDerivsBlock(
const std::list<IndexPair> & solGIDList,
const std::list<IndexPair> & staGIDList);
141 void applyJacobian(
const Linear::Vector& input, Linear::Vector& result);
146 Linear::Vector * solnVecPtr,
147 const std::vector<double> & fastTimes );
152 Linear::Vector * solnVecPtr,
153 const std::vector<double> & fastTimes,
160 Linear::Vector * solnVecPtr,
161 const bool doNotInterpolate,
162 const std::vector<double> & outputInterpolationTimes,
163 bool skipPrintLineOutput );
168 Linear::Vector * solnVecPtr,
169 const double saveTime,
170 const bool doNotInterpolate);
192 #endif // Xyce_N_TIA_WorkingIntegrationMethods_h
Stats::Stat residualStat_
int getNumberOfSteps() const
Stats::Stat predictorStat_
Stats::Stat updateCoefStat_
Stats::Stat rejectStepStat_
Pure virtual class to augment a linear system.
void updateDerivsBlock(const std::list< IndexPair > &solGIDList, const std::list< IndexPair > &staGIDList)
TimeIntegrationMethod * timeIntegrationMethod_
Pointer to the integration method.
bool isTimeIntegrationMethodCreated()
Stats::Stat completeStepStat_
double partialTimeDeriv() const
Stats::Stat updateLeadStat_
const char * getTimeIntegrationName(int type)
void obtainCorrectorDeriv()
TimeIntegrationMethod * createTimeIntegrationMethod(int type, const TIAParams &tia_params, StepErrorControl &step_error_control, DataStore &data_store)
bool saveOutputSolution(Analysis::OutputMgrAdapter &outputManagerAdapter, const TIAParams &tia_params, Linear::Vector *solnVecPtr, const double saveTime, const bool doNotInterpolate)
void registerFactory(int type, const char *name, Factory factory)
void completeStep(const TIAParams &tia_params)
void getTwoLevelError(TwoLevelError &tle) const
void getInitialQnorm(TwoLevelError &tle) const
bool printMPDEOutputSolution(Analysis::OutputMgrAdapter &outputManagerAdapter, const double time, Linear::Vector *solnVecPtr, const std::vector< double > &fastTimes)
void rejectStep(const TIAParams &tia_params)
Stats::Stat timeIntegratorStat_
void loadFinalSensitivityDerivatives()
virtual ~WorkingIntegrationMethod()
WorkingIntegrationMethod(Stats::Stat parent_stat)
TimeIntegrationMethod *(* Factory)(const TIAParams &tia_params, StepErrorControl &step_error_control, DataStore &data_store)
void obtainSensitivityResiduals()
void createTimeIntegMethod(int type, const TIAParams &tia_params, StepErrorControl &step_error_control, DataStore &data_store)
void registerTimeIntegrationMethod()
void obtainPredictorDeriv()
void rejectStepForHabanero()
void registerTimeIntegrationMethods()
Stats::Stat initializeStat_
void applyJacobian(const Linear::Vector &input, Linear::Vector &result)
bool printWaMPDEOutputSolution(Analysis::OutputMgrAdapter &outputManagerAdapter, const double time, Linear::Vector *solnVecPtr, const std::vector< double > &fastTimes, const int phiGID)
bool printOutputSolution(Analysis::OutputMgrAdapter &outputManagerAdapter, const TIAParams &tia_params, const double time, Linear::Vector *solnVecPtr, const bool doNotInterpolate, const std::vector< double > &outputInterpolationTimes, bool skipPrintLineOutput)
void setTwoLevelTimeInfo(const TimeIntInfo &tiInfo)
void initialize(const TIAParams &tia_params)
Stats::Stat jacobianStat_
void updateLeadCurrentVec()
double computeErrorEstimate() const