49 #ifndef Xyce_N_TIA_TimeIntegrationMethods_h
50 #define Xyce_N_TIA_TimeIntegrationMethods_h
58 #include <N_LAS_fwd.h>
59 #include <N_PDS_fwd.h>
61 #include <N_UTL_fwd.h>
63 #include <N_UTL_IndexPair.h>
89 virtual const char *
getName()
const = 0;
102 const std::list<IndexPair> & solGIDList,
103 const std::list<IndexPair> & staGIDList) = 0;
109 virtual bool interpolateSolution(
double timepoint, Linear::Vector * tmpSolVectorPtr, std::vector<Linear::Vector*> & historyVec) = 0;
116 Linear::Vector * solnVecPtr,
117 const bool doNotInterpolate,
118 const std::vector<double> & outputInterpolationTimes,
119 bool skipPrintLineOutput) = 0;
125 Linear::Vector * solnVecPtr,
126 const std::vector<double> & fastTimes)
135 Linear::Vector * solnVecPtr,
136 const std::vector<double> & fastTimes,
144 Parallel::Machine comm,
145 IO::InitialConditionsManager & initial_conditions_manager,
146 const NodeNameMap & node_name_map,
148 Linear::Vector * solnVecPtr,
149 const double saveTime,
150 const bool doNotInterpolate) = 0;
202 virtual void applyJacobian(
const Linear::Vector& input, Linear::Vector& result)
238 #endif // Xyce_N_TIA_TimeIntegrationMethods_h
virtual void getInitialQnorm(TwoLevelError &tle) const =0
virtual void obtainPredictor()=0
virtual void obtainCorrectorDeriv()=0
virtual void updateDerivsBlock(const std::list< IndexPair > &solGIDList, const std::list< IndexPair > &staGIDList)=0
virtual double getLeadingCoeff() const =0
virtual 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)=0
virtual bool printMPDEOutputSolution(Analysis::OutputMgrAdapter &outputManagerAdapter, const double time, Linear::Vector *solnVecPtr, const std::vector< double > &fastTimes)
virtual void rejectStepForHabanero()
virtual const char * getName() const =0
virtual void updateLeadCurrentVec()
Pure virtual class to augment a linear system.
virtual bool interpolateSolution(double timepoint, Linear::Vector *tmpSolVectorPtr, std::vector< Linear::Vector * > &historyVec)=0
virtual void initialize(const TIAParams &tia_params)=0
virtual void getTwoLevelError(TwoLevelError &tle) const =0
virtual void updateHistory()
virtual void setTwoLevelTimeInfo()=0
virtual bool printWaMPDEOutputSolution(Analysis::OutputMgrAdapter &outputManagerAdapter, const double time, Linear::Vector *solnVecPtr, const std::vector< double > &fastTimes, const int phiGID)
virtual void completeStep(const TIAParams &tia_params)=0
virtual int getUsedOrder() const =0
virtual double partialTimeDeriv() const =0
virtual void applyJacobian(const Linear::Vector &input, Linear::Vector &result)
virtual void setLeadingCoeff(double &LC)=0
virtual void restoreHistory()
virtual void obtainJacobian()
virtual void obtainPredictorDeriv()=0
virtual void updateCoeffs()
virtual int getOrder() const =0
virtual 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)=0
virtual int getMaxOrder() const =0
Return max order of method (this should obey user option maxorder)
virtual void updateLeadCurrent()
virtual int getNscsco() const =0
virtual double computeExpoStepAdjust(double stepadjust)=0
virtual void obtainResidual()=0
virtual double computeErrorEstimate() const =0
virtual void loadFinalSensitivityDerivatives()=0
virtual int getNumberOfSteps() const =0
virtual void obtainSensitivityResiduals()=0
virtual ~TimeIntegrationMethod()
virtual void rejectStep(const TIAParams &tia_params)=0
virtual void updateStateDeriv()