46 #ifndef Xyce_N_DEV_DeviceMgr_h
47 #define Xyce_N_DEV_DeviceMgr_h
56 #include <N_PDS_fwd.h>
57 #include <N_UTL_fwd.h>
66 #include <N_UTL_Listener.h>
84 class DeviceMgr :
public Util::Listener<Analysis::StepEvent>
172 std::vector<double> & dfdpVec,
173 std::vector<double> & dqdpVec,
174 std::vector<double> & dbdpVec,
175 std::vector<int> & FindicesVec,
176 std::vector<int> & QindicesVec,
177 std::vector<int> & BindicesVec);
180 bool setParam(std::string & name,
double val);
185 bool findParam(
const std::string & name)
const;
214 bool setICs (N_LAS_Vector * tmpSolVectorPtr,
215 N_LAS_Vector * tmpCurrSolVectorPtr,
216 N_LAS_Vector * tmpLastSolVectorPtr,
217 N_LAS_Vector * tmpStaVectorPtr,
218 N_LAS_Vector * tmpCurrStaVectorPtr,
219 N_LAS_Vector * tmpLasStaVectorPtr,
220 N_LAS_Vector * tmpStaDerivVectorPtr,
221 N_LAS_Vector * tmpStoVectorPtr,
222 N_LAS_Vector * tmpCurrStoVectorPtr,
223 N_LAS_Vector * tmpLastStoVectorPtr,
224 N_LAS_Vector * tmpQVectorPtr,
225 N_LAS_Vector * tmpFVectorPtr,
226 N_LAS_Vector * tmpBVectorPtr,
227 N_LAS_Vector * tmpdFdxdVpVectorPtr,
228 N_LAS_Vector * tmpdQdxdVpVectorPtr);
231 bool getBreakPoints ( std::vector<Util::BreakPoint> & breakPointTimes );
239 bool loadCouplingRHS (
int iPDEDevice,
int iElectrode, N_LAS_Vector * dfdvPtr);
240 bool calcCouplingTerms (
int iSubProblem,
int iElectrode,
const N_LAS_Vector * dxdvPtr);
247 N_LAS_Vector * tmpStaVectorPtr,
248 N_LAS_Vector * tmpStaDerivVectorPtr,
249 N_LAS_Vector * tmpStoVectorPtr,
250 N_LAS_Matrix * tmpdQdxMatrixPtr,
251 N_LAS_Matrix * tmpdFdxMatrixPtr);
254 N_LAS_Vector * tmpCurrSolVectorPtr,
255 N_LAS_Vector * tmpLastSolVectorPtr,
256 N_LAS_Vector * tmpNextStaVectorPtr,
257 N_LAS_Vector * tmpCurrStaVectorPtr,
258 N_LAS_Vector * tmpLastStaVectorPtr,
259 N_LAS_Vector * tmpStaDerivVectorPtr,
260 N_LAS_Vector * tmpNextStoVectorPtr,
261 N_LAS_Vector * tmpCurrStoVectorPtr,
262 N_LAS_Vector * tmpLastStoVectorPtr,
263 N_LAS_Vector * tmpStoLeadCurrQCompVectorPtr,
264 N_LAS_Vector * tmpQVectorPtr,
265 N_LAS_Vector * tmpFVectorPtr,
266 N_LAS_Vector * tmpBVectorPtr,
267 N_LAS_Vector * tmpdFdxdVpVectorPtr,
268 N_LAS_Vector * tmpdQdxdVpVectorPtr);
271 N_LAS_Vector * currSolVectorPtr,
272 N_LAS_Vector * lastSolVectorPtr,
273 N_LAS_Vector * nextStaVectorPtr,
274 N_LAS_Vector * currStaVectorPtr,
275 N_LAS_Vector * lastStaVectorPtr,
276 N_LAS_Vector * nextStoVectorPtr,
277 N_LAS_Vector * currStoVectorPtr,
278 N_LAS_Vector * lastStoVectorPtr
282 N_LAS_Vector * bVecImagPtr);
295 const double *
findGlobalPar(
const std::string & parName)
const;
296 double getGlobalPar(
const std::string & parName )
const;
346 void homotopyStepSuccess(
const std::vector<std::string> & paramNames,
const std::vector<double> & paramVals);
364 bool dumpRestartData(
char * buf,
int bsize,
int & pos, N_PDS_Comm * comm,
bool pack );
367 bool restoreRestartData(
char * buf,
int bsize,
int & pos, N_PDS_Comm * comm,
bool pack );
379 EntityTypeIdDeviceMap::iterator it =
deviceMap_.find(model_type_id);
380 return it ==
deviceMap_.end() ? 0 : (*it).second;
607 #endif // Xyce_N_DEV_DeviceMgr_h