49 #ifndef Xyce_N_TIA_WorkingIntegrationMethods_h
50 #define Xyce_N_TIA_WorkingIntegrationMethods_h
54 #include <N_UTL_Math.h>
60 #include <N_LAS_fwd.h>
62 #include <N_UTL_fwd.h>
64 #include <N_UTL_IndexPair.h>
66 #include <N_UTL_Stats.h>
88 TimeIntegrationMethod *
createTimeIntegrationMethod(
int type,
const TIAParams & tia_params, StepErrorControl & step_error_control, DataStore & data_store);
120 void updateDerivsBlock(
const std::list<IndexPair> & solGIDList,
const std::list<IndexPair> & staGIDList);
142 void applyJacobian(
const Linear::Vector& input, Linear::Vector& result);
147 Linear::Vector * solnVecPtr,
148 const std::vector<double> & fastTimes );
153 Linear::Vector * solnVecPtr,
154 const std::vector<double> & fastTimes,
161 Linear::Vector * solnVecPtr,
162 const bool doNotInterpolate,
163 const std::vector<double> & outputInterpolationTimes,
164 bool skipPrintLineOutput );
167 Parallel::Machine comm,
168 IO::InitialConditionsManager & initial_conditions_manager,
169 const NodeNameMap & node_name_map,
171 Linear::Vector * solnVecPtr,
172 const double saveTime,
173 const bool doNotInterpolate);
195 #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 setTwoLevelTimeInfo()
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)
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()
bool saveOutputSolution(Parallel::Machine comm, IO::InitialConditionsManager &initial_conditions_manager, const NodeNameMap &node_name_map, const TIAParams &tia_params, Linear::Vector *solnVecPtr, const double saveTime, const bool doNotInterpolate)
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 initialize(const TIAParams &tia_params)
Stats::Stat jacobianStat_
void updateLeadCurrentVec()
double computeErrorEstimate() const