46 #ifndef Xyce_LOA_HBLoader_H
47 #define Xyce_LOA_HBLoader_H
51 #include <Teuchos_RCP.hpp>
54 #include <N_LAS_fwd.h>
56 #include <N_UTL_DFTInterfaceDecl.hpp>
61 class N_MPDE_Discretization;
77 const Teuchos::RCP<const N_MPDE_Discretization> discPtr,
79 Linear::Builder & builder);
87 Linear::Vector * dSdt,
88 Linear::Vector * Store,
89 Linear::Matrix * dQdx,
90 Linear::Matrix * dFdx );
95 Linear::Vector * dSdt,
96 Linear::Vector * Store,
97 Linear::Matrix * dQdx,
98 Linear::Matrix * dFdx );
103 Linear::Vector * dSdt,
104 Linear::Vector * Store,
105 const Linear::Vector & V,
106 Linear::Vector * dQdxV,
107 Linear::Vector * dFdxV );
114 Linear::Vector * currX,
115 Linear::Vector * lastX,
117 Linear::Vector * currS,
118 Linear::Vector * lastS,
119 Linear::Vector * dSdt,
120 Linear::Vector * Store,
121 Linear::Vector * currStore,
122 Linear::Vector * lastStore,
123 Linear::Vector * storeLeadCurrQ,
124 Linear::Vector * nextLeadFVectorPtr,
125 Linear::Vector * currLeadFVectorPtr,
126 Linear::Vector * lastLeadFVectorPtr,
127 Linear::Vector * nextLeadQVectorPtr,
128 Linear::Vector * nextJunctionVVectorPtr,
129 Linear::Vector * currJunctionVVectorPtr,
130 Linear::Vector * lastJunctionVVectorPtr,
134 Linear::Vector * dFdxdVp,
135 Linear::Vector * dQdxdVp );
137 bool updateState( Linear::Vector * nextSolVectorPtr,
138 Linear::Vector * currSolVectorPtr,
139 Linear::Vector * lastSolVectorPtr,
140 Linear::Vector * nextStaVectorPtr,
141 Linear::Vector * currStaVectorPtr,
142 Linear::Vector * lastStaVectorPtr,
143 Linear::Vector * nextStoVectorPtr,
144 Linear::Vector * currStoVectorPtr,
145 Linear::Vector * lastStoVectorPtr
150 Linear::Vector * currSolVectorPtr,
151 Linear::Vector * lastSolVectorPtr,
152 Linear::Vector * nextStaVectorPtr,
153 Linear::Vector * currStaVectorPtr,
154 Linear::Vector * lastStaVectorPtr,
155 Linear::Vector * StateDerivVectorPtr,
156 Linear::Vector * nextStoVectorPtr,
157 Linear::Vector * currStoVectorPtr,
158 Linear::Vector * lastStoVectorPtr,
159 Linear::Vector * QVectorPtr,
160 Linear::Vector * FVectorPtr,
161 Linear::Vector * BVectorPtr,
162 Linear::Vector * dFdxdVpVectorPtr,
163 Linear::Vector * dQdxdVpVectorPtr)
const
186 void setHBFreqs(
const std::vector<double> & freqs);
194 void permutedFFT(
const Linear::BlockVector & xt, Linear::BlockVector * xf);
196 void permutedIFT(
const Linear::BlockVector & xf, Linear::BlockVector * xt);
210 std::vector<double> & dfdpVec,
211 std::vector<double> & dqdpVec,
212 std::vector<double> & dbdpVec,
213 std::vector<int> & FindicesVec,
214 std::vector<int> & QindicesVec,
215 std::vector<int> & BindicesVec)
const
218 virtual bool setParam (std::string & name,
double val,
bool overrideOriginal=
false) {
return false; }
289 #endif // Xyce_LOA_HBLoader_H
HBLoader(const Teuchos::RCP< const N_MPDE_Discretization > discPtr, Device::DeviceMgr &device_manager, Linear::Builder &builder)
Teuchos::RCP< Linear::Vector > appLastStaVecPtr_
virtual bool analyticSensitivitiesAvailable(std::string &name)
Teuchos::RCP< Linear::Vector > appCurrStoVecPtr_
Teuchos::RCP< Linear::BlockMatrix > bmdFdxPtr_
Linear::Builder & builder_
std::vector< double > periodicTimes_
virtual 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
Pure virtual class to augment a linear system.
void registerDFTInterface(const Teuchos::RCP< N_UTL_DFTInterfaceDecl< std::vector< double > > > &dftInterface)
void setFastTimes(const std::vector< double > ×)
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)
Device::DeviceMgr & deviceManager_
bool loadDAEMatrices(Linear::Vector *X, Linear::Vector *S, Linear::Vector *dSdt, Linear::Vector *Store, Linear::Matrix *dQdx, Linear::Matrix *dFdx)
Teuchos::RCP< Loader > appLoaderPtr_
Actually a CktLoader.
Teuchos::RCP< const N_MPDE_Discretization > fastTimeDiscPtr_
Teuchos::RCP< Linear::Matrix > appdQdxPtr_
Teuchos::RCP< Linear::Vector > appStoLeadCurrQVecPtr_
std::vector< Teuchos::RCP< Linear::Matrix > > vecAppdFdxPtr_
virtual double getParamAndReduce(const std::string &name) const
void permutedFFT(const Linear::BlockVector &xt, Linear::BlockVector *xf)
Teuchos::RCP< Linear::Vector > appCurrStaVecPtr_
Teuchos::RCP< Linear::HBBuilder > hbBuilderPtr_
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
void setMatrixFreeFlag(bool matrixFreeFlag)
Teuchos::RCP< Linear::Vector > appCurrLeadFVecPtr_
Teuchos::RCP< Linear::BlockVector > bXtPtr_
Teuchos::RCP< Linear::BlockVector > bLeadCurrentVecFreqPtr_
Teuchos::RCP< Linear::BlockVector > & getLeadCurrentVecFreqPtr()
Teuchos::RCP< Linear::BlockVector > bStoreVecFreqPtr_
Teuchos::RCP< Linear::BlockVector > bVtPtr_
Teuchos::RCP< Linear::Vector > appNextJunctionVVecPtr_
Teuchos::RCP< Linear::BlockVector > bStoreLeadCurrQVecFreqPtr_
Teuchos::RCP< Linear::BlockMatrix > bmdQdxPtr_
void setHBFreqs(const std::vector< double > &freqs)
void registerHBBuilder(Teuchos::RCP< Linear::HBBuilder > hbBuilderPtr)
Teuchos::RCP< N_UTL_DFTInterfaceDecl< std::vector< double > > > dftInterface_
std::vector< Teuchos::RCP< Linear::Matrix > > & getStoredQdx()
std::vector< Teuchos::RCP< Linear::Matrix > > & getStoredFdx()
Teuchos::RCP< Linear::Vector > appLeadQVecPtr_
Teuchos::RCP< Linear::BlockVector > & getStoreVecFreqPtr()
Teuchos::RCP< Linear::Vector > appLastLeadFVecPtr_
bool loadTimeDepDAEMatrices(Linear::Vector *X, Linear::Vector *S, Linear::Vector *dSdt, Linear::Vector *Store, Linear::Matrix *dQdx, Linear::Matrix *dFdx)
Teuchos::RCP< Linear::Matrix > appdFdxPtr_
bool applyDAEMatrices(Linear::Vector *X, Linear::Vector *S, Linear::Vector *dSdt, Linear::Vector *Store, const Linear::Vector &V, Linear::Vector *dQdxV, Linear::Vector *dFdxV)
std::vector< double > times_
Teuchos::RCP< Linear::Vector > appLastStoVecPtr_
Teuchos::RCP< Linear::BlockVector > bLeadCurrentQVecFreqPtr_
Teuchos::RCP< Linear::Vector > appNextLeadFVecPtr_
virtual bool setParam(std::string &name, double val, bool overrideOriginal=false)
Teuchos::RCP< Linear::Vector > appLastJunctionVVecPtr_
virtual bool getParamAndReduce(const std::string &name, double &val) const
std::vector< double > freqs_
Teuchos::RCP< Linear::Vector > appVecPtr_
void permutedIFT(const Linear::BlockVector &xf, Linear::BlockVector *xt)
bool matrixFreeFlag() const
bool loadDAEVectors(Linear::Vector *X, Linear::Vector *currX, Linear::Vector *lastX, Linear::Vector *S, Linear::Vector *currS, Linear::Vector *lastS, Linear::Vector *dSdt, Linear::Vector *Store, Linear::Vector *currStore, Linear::Vector *lastStore, Linear::Vector *storeLeadCurrQ, Linear::Vector *nextLeadFVectorPtr, Linear::Vector *currLeadFVectorPtr, Linear::Vector *lastLeadFVectorPtr, Linear::Vector *nextLeadQVectorPtr, Linear::Vector *nextJunctionVVectorPtr, Linear::Vector *currJunctionVVectorPtr, Linear::Vector *lastJunctionVVectorPtr, Linear::Vector *Q, Linear::Vector *F, Linear::Vector *B, Linear::Vector *dFdxdVp, Linear::Vector *dQdxdVp)
Teuchos::RCP< Linear::Vector > appCurrJunctionVVecPtr_
std::vector< Teuchos::RCP< Linear::Matrix > > vecAppdQdxPtr_
Teuchos::RCP< Linear::Vector > appNextStoVecPtr_
void registerAppLoader(Teuchos::RCP< Loader > appLoaderPtr)
Teuchos::RCP< Linear::Vector > appNextStaVecPtr_
bool loadDeviceErrorWeightMask(Linear::Vector *deviceMask) const