46 #ifndef Xyce_N_DEV_DeviceMgr_h
47 #define Xyce_N_DEV_DeviceMgr_h
56 #include <N_UTL_fwd.h>
65 #include <N_IO_PkgOptionsMgr.h>
77 void setupIOName(
const std::string & name, std::string & outputName);
171 bool setParam(std::string & name,
double val);
175 bool findParam(
const std::string & name)
const;
176 bool getVsrcLIDs (std::string & srcName,
int & li_Pos,
int & li_Neg,
int & li_Bra);
204 bool setICs (N_LAS_Vector * tmpSolVectorPtr,
205 N_LAS_Vector * tmpCurrSolVectorPtr,
206 N_LAS_Vector * tmpLastSolVectorPtr,
207 N_LAS_Vector * tmpStaVectorPtr,
208 N_LAS_Vector * tmpCurrStaVectorPtr,
209 N_LAS_Vector * tmpLasStaVectorPtr,
210 N_LAS_Vector * tmpStaDerivVectorPtr,
211 N_LAS_Vector * tmpStoVectorPtr,
212 N_LAS_Vector * tmpCurrStoVectorPtr,
213 N_LAS_Vector * tmpLastStoVectorPtr,
214 N_LAS_Vector * tmpQVectorPtr,
215 N_LAS_Vector * tmpFVectorPtr,
216 N_LAS_Vector * tmpdFdxdVpVectorPtr,
217 N_LAS_Vector * tmpdQdxdVpVectorPtr);
223 bool getBreakPoints ( std::vector<Util::BreakPoint> & breakPointTimes );
229 bool getADCMap(std::map<std::string,std::map<std::string,double> >& ADCMap);
231 std::map<std::string,std::vector<std::pair<double,double> >* >
const & timeVoltageUpdateMap);
233 std::map<std::string,std::vector<std::pair<double,double> > > & timeVoltageUpdateMap);
235 bool setADCWidths(std::map<std::string,int>
const & ADCWidthMap);
238 bool getDeviceNames(
const std::string & model_type_name, std::vector<std::string> & deviceNames);
243 std::vector<int> & cW);
245 std::vector<std::string> & cN);
247 const std::vector<std::vector<double> > &cM );
249 const std::vector<double> &sV,
251 bool xygraSetK (
const std::string & deviceName,
252 const std::vector<std::vector<double> > &kM,
255 std::vector<double> & vN );
261 bool loadCouplingRHS (
int iPDEDevice,
int iElectrode, N_LAS_Vector * dfdvPtr);
262 bool calcCouplingTerms (
int iSubProblem,
int iElectrode,
const N_LAS_Vector * dxdvPtr);
269 N_LAS_Vector * tmpStaVectorPtr,
270 N_LAS_Vector * tmpStaDerivVectorPtr,
271 N_LAS_Vector * tmpStoVectorPtr,
272 N_LAS_Matrix * tmpdQdxMatrixPtr,
273 N_LAS_Matrix * tmpdFdxMatrixPtr);
276 N_LAS_Vector * tmpCurrSolVectorPtr,
277 N_LAS_Vector * tmpLastSolVectorPtr,
278 N_LAS_Vector * tmpNextStaVectorPtr,
279 N_LAS_Vector * tmpCurrStaVectorPtr,
280 N_LAS_Vector * tmpLastStaVectorPtr,
281 N_LAS_Vector * tmpStaDerivVectorPtr,
282 N_LAS_Vector * tmpNextStoVectorPtr,
283 N_LAS_Vector * tmpCurrStoVectorPtr,
284 N_LAS_Vector * tmpLastStoVectorPtr,
285 N_LAS_Vector * tmpStoLeadCurrQCompVectorPtr,
286 N_LAS_Vector * tmpQVectorPtr,
287 N_LAS_Vector * tmpFVectorPtr,
288 N_LAS_Vector * tmpdFdxdVpVectorPtr,
289 N_LAS_Vector * tmpdQdxdVpVectorPtr);
292 N_LAS_Vector * currSolVectorPtr,
293 N_LAS_Vector * lastSolVectorPtr,
294 N_LAS_Vector * nextStaVectorPtr,
295 N_LAS_Vector * currStaVectorPtr,
296 N_LAS_Vector * lastStaVectorPtr,
297 N_LAS_Vector * nextStoVectorPtr,
298 N_LAS_Vector * currStoVectorPtr,
299 N_LAS_Vector * lastStoVectorPtr
303 N_LAS_Vector * bVecImagPtr);
316 const double *
findGlobalPar(
const std::string & parName)
const;
317 double getGlobalPar(
const std::string & parName )
const;
471 bool setupExternalDevices();
491 (
const std::vector<std::string> & paramNames,
492 const std::vector<double> & paramVals);
511 bool dumpRestartData(
char * buf,
int bsize,
int & pos, N_PDS_Comm * comm,
bool pack );
514 bool restoreRestartData(
char * buf,
int bsize,
int & pos, N_PDS_Comm * comm,
bool pack );
519 EntityTypeIdDeviceMap::iterator it =
deviceMap_.find(model_type_id);
520 return it ==
deviceMap_.end() ? 0 : (*it).second;
532 void setUpPassThroughParamsMap_();
543 void updateExternalDevices_();
545 ExternDevice::Instance * addExtDeviceInstance_(
InstanceBlock & IB);
638 std::vector<ExternDevice::Instance *> extDevInstancePtrVec_;
639 std::vector<InstanceBlock *> extDevIBPtrVec_;
641 std::map<std::string, int> passThroughParamsMap_;
836 #endif // Xyce_N_DEV_DeviceMgr_h