47 #ifndef Xyce_LOA_CktLoader_H
48 #define Xyce_LOA_CktLoader_H
50 #include <N_LAS_fwd.h>
51 #include <N_PDS_fwd.h>
52 #include <N_UTL_fwd.h>
76 Linear::Vector * tmpSolVectorPtr,
77 Linear::Vector * tmpStaVectorPtr,
78 Linear::Vector * tmpStaDerivVectorPtr,
79 Linear::Vector * tmpStoVectorPtr,
80 Linear::Matrix * tmpdQdxMatrixPtr,
81 Linear::Matrix * tmpdFdxMatrixPtr);
86 Linear::Vector * nextSolVectorPtr,
87 Linear::Vector * currSolVectorPtr,
88 Linear::Vector * lastSolVectorPtr,
89 Linear::Vector * nextStaVectorPtr,
90 Linear::Vector * currStaVectorPtr,
91 Linear::Vector * lastStaVectorPtr,
92 Linear::Vector * StaDerivVectorPtr,
93 Linear::Vector * nextStoVectorPtr,
94 Linear::Vector * currStoVectorPtr,
95 Linear::Vector * lastStoVectorPtr,
96 Linear::Vector * stoLeadCurrQVectorPtr,
97 Linear::Vector * nextLeadFVectorPtr,
98 Linear::Vector * currLeadFVectorPtr,
99 Linear::Vector * lastLeadFVectorPtr,
100 Linear::Vector * nextLeadQVectorPtr,
101 Linear::Vector * nextJunctionVVectorPtr,
102 Linear::Vector * currJunctionVVectorPtr,
103 Linear::Vector * lastJunctionVVectorPtr,
104 Linear::Vector * QVectorPtr,
105 Linear::Vector * FVectorPtr,
106 Linear::Vector * BVectorPtr,
107 Linear::Vector * dFdxdVpVectorPtr,
108 Linear::Vector * dQdxdVpVectorPtr);
115 Linear::Vector * nextSolVectorPtr,
116 Linear::Vector * currSolVectorPtr,
117 Linear::Vector * lastSolVectorPtr,
118 Linear::Vector * nextStaVectorPtr,
119 Linear::Vector * currStaVectorPtr,
120 Linear::Vector * lastStaVectorPtr,
121 Linear::Vector * StateDerivVectorPtr,
122 Linear::Vector * nextStoVectorPtr,
123 Linear::Vector * currStoVectorPtr,
124 Linear::Vector * lastStoVectorPtr,
125 Linear::Vector * QVectorPtr,
126 Linear::Vector * FVectorPtr,
127 Linear::Vector * BVectorPtr,
128 Linear::Vector * dFdxdVpVectorPtr,
129 Linear::Vector * dQdxdVpVectorPtr)
const;
132 Linear::Vector * nextSolVectorPtr,
133 Linear::Vector * currSolVectorPtr,
134 Linear::Vector * lastSolVectorPtr,
135 Linear::Vector * nextStaVectorPtr,
136 Linear::Vector * currStaVectorPtr,
137 Linear::Vector * lastStaVectorPtr,
138 Linear::Vector * nextStoVectorPtr,
139 Linear::Vector * currStoVectorPtr,
140 Linear::Vector * lastStoVectorPtr);
143 Linear::Vector * bVecImagPtr);
151 void getNoiseSources(std::vector<Xyce::Analysis::NoiseData*> & noiseDataVec);
159 bool setParam(std::string & name,
double val,
bool overrideOriginal=
false);
162 virtual double getParamAndReduce(Parallel::Machine comm,
const std::string & name)
const;
180 bool loadCouplingRHS(
int iSubProblem,
int iCouple, Linear::Vector * dfdvPtr);
181 bool calcCouplingTerms (
int iSubProblem,
int iCouple,
const Linear::Vector * dxdvPtr);
183 bool getBreakPoints(std::vector< Util::BreakPoint > & breakPointTimes)
const;
202 virtual bool getInitialQnorm (std::vector<TimeIntg::TwoLevelError> & tleVec );
208 bool beginIntegrationFlag,
219 std::vector<double> & dfdpVec,
220 std::vector<double> & dqdpVec,
221 std::vector<double> & dbdpVec,
222 std::vector<int> & FindicesVec,
223 std::vector<int> & QindicesVec,
224 std::vector<int> & BindicesVec)
const;
bool setParam(std::string &name, double val, bool overrideOriginal=false)
Device::DeviceMgr & deviceManager_
Device manager.
void setupNoiseSources(std::vector< Xyce::Analysis::NoiseData * > &noiseDataVec)
virtual bool getInitialQnorm(std::vector< TimeIntg::TwoLevelError > &tleVec)
bool updateState(Linear::Vector *nextSolVectorPtr, Linear::Vector *currSolVectorPtr, Linear::Vector *lastSolVectorPtr, Linear::Vector *nextStaVectorPtr, Linear::Vector *currStaVectorPtr, Linear::Vector *lastStaVectorPtr, Linear::Vector *nextStoVectorPtr, Linear::Vector *currStoVectorPtr, Linear::Vector *lastStoVectorPtr)
virtual bool analyticSensitivitiesAvailable(std::string &name)
bool initializeProblem(Linear::Vector *nextSolVectorPtr, Linear::Vector *currSolVectorPtr, Linear::Vector *lastSolVectorPtr, Linear::Vector *nextStaVectorPtr, Linear::Vector *currStaVectorPtr, Linear::Vector *lastStaVectorPtr, Linear::Vector *StateDerivVectorPtr, Linear::Vector *nextStoVectorPtr, Linear::Vector *currStoVectorPtr, Linear::Vector *lastStoVectorPtr, Linear::Vector *QVectorPtr, Linear::Vector *FVectorPtr, Linear::Vector *BVectorPtr, Linear::Vector *dFdxdVpVectorPtr, Linear::Vector *dQdxdVpVectorPtr) const
bool getBMatrixEntriesforMOR(std::vector< int > &bMatEntriesVec, std::vector< int > &bMatPosEntriesVec)
Pure virtual class to augment a linear system.
bool calcCouplingTerms(int iSubProblem, int iCouple, const Linear::Vector *dxdvPtr)
bool loadCouplingRHS(int iSubProblem, int iCouple, Linear::Vector *dfdvPtr)
virtual void setVoltageLimiterStatus(bool voltageLimterStatus)
CktLoader(Device::DeviceMgr &device_manager)
void getNoiseSources(std::vector< Xyce::Analysis::NoiseData * > &noiseDataVec)
virtual 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
bool finishOutput() const
virtual bool getInnerLoopErrorSums(std::vector< TimeIntg::TwoLevelError > &tleVec) const
virtual double getParamAndReduce(Parallel::Machine comm, const std::string &name) const
bool allDevicesConverged(Parallel::Machine comm)
bool loadBVectorsforAC(Linear::Vector *bVecRealPtr, Linear::Vector *bVecImagPtr)
bool setInitialGuess(Linear::Vector *solVectorPtr)
void getNumInterfaceNodes(std::vector< int > &numINodes)
bool loadDAEMatrices(Linear::Vector *tmpSolVectorPtr, Linear::Vector *tmpStaVectorPtr, Linear::Vector *tmpStaDerivVectorPtr, Linear::Vector *tmpStoVectorPtr, Linear::Matrix *tmpdQdxMatrixPtr, Linear::Matrix *tmpdFdxMatrixPtr)
int enablePDEContinuation()
bool loadDAEVectors(Linear::Vector *nextSolVectorPtr, Linear::Vector *currSolVectorPtr, Linear::Vector *lastSolVectorPtr, Linear::Vector *nextStaVectorPtr, Linear::Vector *currStaVectorPtr, Linear::Vector *lastStaVectorPtr, Linear::Vector *StaDerivVectorPtr, Linear::Vector *nextStoVectorPtr, Linear::Vector *currStoVectorPtr, Linear::Vector *lastStoVectorPtr, Linear::Vector *stoLeadCurrQVectorPtr, Linear::Vector *nextLeadFVectorPtr, Linear::Vector *currLeadFVectorPtr, Linear::Vector *lastLeadFVectorPtr, Linear::Vector *nextLeadQVectorPtr, Linear::Vector *nextJunctionVVectorPtr, Linear::Vector *currJunctionVVectorPtr, Linear::Vector *lastJunctionVVectorPtr, Linear::Vector *QVectorPtr, Linear::Vector *FVectorPtr, Linear::Vector *BVectorPtr, Linear::Vector *dFdxdVpVectorPtr, Linear::Vector *dQdxdVpVectorPtr)
void stepSuccess(Xyce::Analysis::TwoLevelMode analysis)
bool loadDeviceErrorWeightMask(Linear::Vector *deviceMask) const
bool disablePDEContinuation()
void setExternalSolverState(bool external_initJctFlag)
bool startTimeStep(bool beginIntegrationFlag, double nextTimeStep, double nextTime, int currentOrder)
virtual bool getVoltageLimiterStatus()
bool innerDevicesConverged(Parallel::Machine comm)
bool outputPlotFiles() const
void stepFailure(Xyce::Analysis::TwoLevelMode analysis)
int getHomotopyBlockSize() const
double getMaxTimeStepSize()
bool getBreakPoints(std::vector< Util::BreakPoint > &breakPointTimes) const