46 #ifndef Xyce_N_DEV_DeviceInstance_h
47 #define Xyce_N_DEV_DeviceInstance_h
56 #include <N_LAS_fwd.h>
60 #include <N_UTL_Diagnostic.h>
61 #include <N_UTL_IndexPair.h>
62 #include <N_UTL_NodeSymbols.h>
96 virtual std::ostream &
printName(std::ostream &os)
const;
103 virtual void registerGIDs(
const IndexPairVector & intGIDListRef,
const IndexPairVector &extGIDListRef)
154 const std::vector<int> & counts,
186 virtual bool testDAEMatrices(
const std::vector<const std::string *> &nameVec);
195 virtual bool setIC ();
280 virtual bool loadDFDV(
int iElectrode, Linear::Vector * dfdvPtr);
281 virtual bool calcConductance (
int iElectrode,
const Linear::Vector * dxdvPtr);
284 virtual void loadNodeSymbols(Util::SymbolTable &symbol_table)
const = 0;
297 virtual void varTypes( std::vector<char> & varTypeVec ) {}
558 Util::addSymbol(symbol_table, Util::SOLUTION_SYMBOL, index,
spiceInternalName(instance_name, lead_name));
561 inline void addInternalNode(Util::SymbolTable &symbol_table,
int index,
const std::string &lead_name) {
562 Util::addSymbol(symbol_table, Util::SOLUTION_SYMBOL, index, lead_name);
565 inline void addStoreNode(Util::SymbolTable &symbol_table,
int index,
const InstanceName &instance_name,
const std::string &lead_name) {
566 Util::addSymbol(symbol_table, Util::STORE_SYMBOL, index,
spiceStoreName(instance_name, lead_name));
569 inline void addStoreNode(Util::SymbolTable &symbol_table,
int index,
const std::string &lead_name) {
570 Util::addSymbol(symbol_table, Util::STORE_SYMBOL, index, lead_name);
573 inline void addStateNode(Util::SymbolTable &symbol_table,
int index,
const InstanceName &instance_name,
const std::string &lead_name) {
574 Util::addSymbol(symbol_table, Util::STATE_SYMBOL, index,
spiceInternalName(instance_name, lead_name));
578 Util::addSymbol(symbol_table, Util::BRANCH_SYMBOL, index,
spiceStoreName(instance_name, lead_name));
581 inline void addBranchDataNode(Util::SymbolTable &symbol_table,
int index,
const std::string &lead_name) {
582 Util::addSymbol(symbol_table, Util::BRANCH_SYMBOL, index, lead_name);
const InstanceName & getName() const
virtual bool loadDAEBVector()
virtual void registerGIDData(const std::vector< int > &counts, const IdVector &GIDs, const JacobianStamp &jacGIDs)
virtual void enableLeadCurrentCalc()
virtual const IndexPairVector & getIndexPairList()
virtual void setupNoiseSources(Xyce::Analysis::NoiseData &noiseDataVec)
virtual void loadNodeSymbols(Util::SymbolTable &symbol_table) const =0
Populates and returns the store name map.
virtual void registerStoreLIDs(const LocalIdVector &stoLIDVecRef)
virtual void loadErrorWeightMask()
IndexPairVector intGIDList
virtual bool processParams()
void addStateNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
virtual void registerStateGIDs(const IndexPairVector &staGIDListRef)
std::vector< int > devConMap
std::vector< double > & vals
const std::vector< IdVector > & getDevJacLIDs() const
virtual DeviceState * getInternalState()
int getNumStateVars() const
Pure virtual class to augment a linear system.
Devices and models are each named.
virtual void getNoiseSources(Xyce::Analysis::NoiseData &noiseDataVec)
virtual void registerGIDs(const IndexPairVector &intGIDListRef, const IndexPairVector &extGIDListRef)
void addInternalNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
void outputJacMaps(const std::vector< int > &jacMap, const JacobianStamp &jacMap2)
virtual bool loadDAEFVector()=0
bool configuredForLeadCurrent
void setNumStoreVars(int num_store_vars)
virtual bool loadDAEQVector()=0
void addBranchDataNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
IndexPairVector extGIDList
virtual bool enablePDEContinuation(int &max_PDE_continuation_steps)
virtual bool processInstanceParams()
virtual void registerDepSolnGIDs(const std::vector< IdVector > &varList)
virtual bool loadDAEdFdx()=0
void jacStampMap_fixOrder(const JacobianStamp &stamp_parent, JacobianStamp &map2_parent, JacobianStamp &stamp, JacobianStamp &map2)
virtual void registerDepStateLIDs(const std::vector< IdVector > &depStaLIDVecRef)
virtual void registerJacLIDs(const JacobianStamp &jacLIDVec)
virtual bool getInstanceBreakPoints(std::vector< Util::BreakPoint > &breakPointTimes)
void setOrigFlag(bool origFlag_local)
virtual bool setInternalState(const DeviceState &state)
const IdVector & getStaLIDVec() const
IndexPairVector staGIDList
int getNumIntVars() const
virtual bool testDAEMatrices(const std::vector< const std::string * > &nameVec)
const MatrixLoadData & getMatrixLoadData() const
virtual bool loadDFDV(int iElectrode, Linear::Vector *dfdvPtr)
virtual const std::vector< int > & getDevConMap()
virtual const std::vector< std::string > & getDepStoreVars()
virtual void registerStateLIDs(const LocalIdVector &staLIDVecRef)
virtual void registerDepStateGIDs(const std::vector< IdVector > &varList)
std::vector< int > IdVector
virtual void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)
int getNumStoreVars() const
NumericalJacobian * numJacPtr
IndexPairVector indexPairList
virtual ~DeviceInstance()
virtual bool calcConductance(int iElectrode, const Linear::Vector *dxdvPtr)
const IdVector & getDevLIDs() const
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
virtual void registerBranchDataLIDs(const LocalIdVector &branchDataLIDVecRef)
virtual void registerDepSolnLIDs(const std::vector< IdVector > &depSolnLIDVecRef)
virtual const std::vector< std::string > & getDepLeadCurrentVars()
virtual void registerDepLeadCurrentGIDs(const std::vector< IdVector > &varList)
std::vector< std::vector< int > > JacobianStamp
int numBranchDataVarsIfAllocated
virtual bool updateTemperature(const double &temp_tmp)
Class ParametricData manages the configuration information and the parameter binding map...
bool trivialStampLoader(Linear::Matrix *matPtr)
void setMergeRowColChecked(bool mergeRowColChecked_local)
virtual bool disablePDEContinuation()
virtual bool isLinearDevice() const
virtual bool updateSource()
virtual void registerStoreGIDs(const IndexPairVector &stoGIDListRef)
virtual bool setInitialGuess()
DeviceInstance & operator=(const DeviceInstance &)
virtual bool loadDAEdQdx()=0
virtual double getMaxTimeStepSize()
virtual bool updatePrimaryState()=0
void addStoreNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
virtual void registerDepStoreLIDs(const std::vector< IdVector > &depStoLIDVecRef)
virtual void setupPointers()
virtual bool plotfileFlag()
virtual void varTypes(std::vector< char > &varTypeVec)
void outputJacStamp(const JacobianStamp &jac)
virtual int getNumNoiseSources() const
virtual void setPDEContinuationBeta(double beta)
std::vector< int > expVarGIDs
MatrixLoadData & getMatrixLoadData()
virtual const std::vector< std::string > & getDepStateVars()
IdVector devLIDs
devLIDs is a combined LID vector, containing int, ext, and expVar ID's.
void jacStampMap(const JacobianStamp &stamp_parent, IdVector &map_parent, JacobianStamp &map2_parent, JacobianStamp &stamp, IdVector &map, JacobianStamp &map2, int from, int to, int original_size)
virtual bool updateSecondaryState()
virtual void registerDepStoreGIDs(const std::vector< IdVector > &varList)
virtual void setPDEContinuationAlpha(double alpha)
std::string spiceStoreName(const InstanceName &instance_name, const std::string &lead)
virtual const JacobianStamp & jacobianStamp() const
virtual bool loadTrivialDAE_FMatrixStamp()
void setNumBranchDataVars(int num_branch_data_vars)
const ExternData & getExternData() const
std::string spiceInternalName(const InstanceName &instance_name, const std::string &lead)
int getNumExtVars() const
bool zeroMatrixDiagonal(Linear::Matrix *matPtr)
virtual std::ostream & printName(std::ostream &os) const
virtual const IdVector & getDepSolnGIDVec()
virtual void acceptStep()
const ExternData & extData
InstanceBlock represent a device instance line from the netlist.
std::vector< int > & cols
virtual bool isConverged()
virtual bool updateIntermediateVars()=0
virtual bool outputPlotFiles(bool force_final_output)
int getNumBranchDataVars() const
virtual const std::vector< std::string > & getDepSolnVars()
bool getMergeRowColChecked() const
int numLeadCurrentStoreVars