47 #ifndef Xyce_N_DEV_BJT_H
48 #define Xyce_N_DEV_BJT_H
69 static const char *
name() {
return "Bipolar Junction Transistor";}
119 void registerLIDs(
const std::vector<int> & intLIDVecRef,
120 const std::vector<int> & extLIDVecRef );
126 const std::vector< std::vector<int> > &
jacobianStamp()
const;
127 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
131 bool lambertWCurrent (
double &Id,
double &Gd,
double Vd,
double Vte,
double Isat);
143 #ifdef Xyce_DEBUG_EXCESS_PHASE
151 (
double & iEX,
double & gEX,
double & iC_local);
412 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
748 virtual bool updateState (
double * solVec,
double * staVec,
double * stoVec);
752 virtual bool loadDAEVectors (
double * solVec,
double * fVec,
double * qVec,
double * bVec,
double * storeLeadF,
double * storeLeadQ,
double * leadF,
double * leadQ,
double * junctionV);
755 virtual bool loadDAEMatrices (Linear::Matrix & dFdx, Linear::Matrix & dQdx);
double * q_SubstEquCollPNodePtr
double * q_dIfxEquIfxNodePtr
double * f_IfxEquEmitPNodePtr
int ABaseEquEmitPNodeOffset
static std::vector< std::vector< int > > jacMap2_RB_RC_RE_
int AIfxEquCollPNodeOffset
double * q_EmitPEquIfxNodePtr
double * q_BaseEquBasePNodePtr
const std::vector< std::vector< int > > & jacobianStamp() const
int AEmitPEquIfxNodeOffset
int AdIfxEquEmitPNodeOffset
double * q_BasePEquBaseNodePtr
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &it_MB, const FactoryBlock &factory_block)
double * f_BasePEquEmitPNodePtr
static std::vector< int > jacMap_RB_RE_
double * q_IfxEquBasePNodePtr
double leakBEEmissionCoeff
Pure virtual class to augment a linear system.
double * f_CollEquCollNodePtr
double * q_CollPEquEmitPNodePtr
int AEmitPEquEmitNodeOffset
virtual bool updateSecondaryState(double *staDeriv, double *stoVec)
Updates the devices secondary state information.
Master(const Configuration &configuration, const FactoryBlock &factory_block, const SolverState &ss1, const DeviceOptions &do1)
double * f_IfxEquCollPNodePtr
double baseCurrHalfResist
double * f_CollPEquCollPNodePtr
static std::vector< std::vector< int > > jacStamp_RB_RC_
Model & operator=(const Model &)
double * f_IfxEquBasePNodePtr
int ACollEquCollPNodeOffset
double * f_SubstEquSubstNodePtr
double * q_EmitPEquEmitPNodePtr
int ABaseEquCollPNodeOffset
double * f_CollEquCollPNodePtr
static std::vector< std::vector< int > > jacStamp_RB_RC_RE_
int ASubstEquSubstNodeOffset
int AEmitPEquBasePNodeOffset
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
int ABaseEquBasePNodeOffset
bool updateIntermediateVars()
double * f_EmitPEquEmitNodePtr
static std::vector< int > jacMap_RE_
static std::vector< int > jacMap_RB_RC_
std::vector< Instance * > InstanceVector
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
double * f_BaseEquBasePNodePtr
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
double * q_EmitPEquEmitNodePtr
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
double * q_CollPEquCollPNodePtr
static std::vector< std::vector< int > > jacStamp_RB_RE_
double * q_SubstEquSubstNodePtr
static std::vector< std::vector< int > > jacStamp_RE_
double * q_BaseEquEmitPNodePtr
double * f_IfxEquIfxNodePtr
int ACollPEquCollPNodeOffset
int ABasePEquCollPNodeOffset
int AdIfxEqudIfxNodeOffset
double * f_dIfxEquEmitPNodePtr
DeviceMaster instantiates a device as described by the device traits T.
void registerStoreLIDs(const std::vector< int > &stoLIDVecRef)
int ABaseEquBaseNodeOffset
double * f_EmitPEquBasePNodePtr
double * f_BaseEquEmitPNodePtr
double * q_CollPEquBaseNodePtr
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
static std::vector< int > jacMap_RC_
double * q_EmitPEquBasePNodePtr
static std::vector< std::vector< int > > jacMap2_RE_
int ACollPEquBasePNodeOffset
double * q_BaseEquBaseNodePtr
double * f_BasePEquBaseNodePtr
void setupNoiseSources(Xyce::Analysis::NoiseData &noiseData)
int AEmitPEquCollPNodeOffset
static std::vector< int > jacMap_
static std::vector< std::vector< int > > jacStamp_RB_
double * f_BaseEquCollPNodePtr
static std::vector< std::vector< int > > jacStamp_RC_RE_
double * f_EmitEquEmitPNodePtr
double * f_CollPEquBasePNodePtr
double * f_dIfxEquBasePNodePtr
int AEmitPEquEmitPNodeOffset
double * q_BasePEquCollPNodePtr
static std::vector< std::vector< int > > jacMap2_RB_RE_
int AdIfxEquBasePNodeOffset
static std::vector< std::vector< int > > jacMap2_RB_
double * q_BaseEquCollPNodePtr
void auxDAECalculations()
int ACollPEquSubstNodeOffset
static std::vector< int > jacMap_RB_
static bool modelRequired()
double * f_CollPEquEmitPNodePtr
double * f_dIfxEquCollPNodePtr
The Device class is an interface for device implementations.
bool processInstanceParams()
processInstanceParams
static const char * deviceTypeName()
void loadErrorWeightMask()
double leakBCEmissionCoeff
double * q_EmitEquEmitPNodePtr
virtual std::ostream & printOutInstances(std::ostream &os) const
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
double * q_CollPEquCollNodePtr
virtual bool loadDAEMatrices(Linear::Matrix &dFdx, Linear::Matrix &dQdx)
Populates the device's Jacobian object with these pointers.
double transTimeBiasCoeffF
double tleakBEEmissionCoeff
virtual bool updateState(double *solVec, double *staVec, double *stoVec)
Updates the devices state information.
static int numFillNodes()
double * f_dIfxEquIfxNodePtr
void oldDAEExcessPhaseCalculation1()
int AEmitEquEmitNodeOffset
double * q_dIfxEquBasePNodePtr
double * f_IfxEqudIfxNodePtr
bool updateTemperature(const double &temp=-999.0)
Class Configuration contains device configuration data.
double * q_CollEquCollPNodePtr
int ACollPEquCollNodeOffset
double * f_CollPEquCollNodePtr
void addInstance(Instance *instance)
static const char * name()
virtual bool loadDAEVectors(double *solVec, double *fVec, double *qVec, double *bVec, double *storeLeadF, double *storeLeadQ, double *leadF, double *leadQ, double *junctionV)
Populates the device's ExternData object with these pointers.
double * q_IfxEquCollPNodePtr
static std::vector< std::vector< int > > jacStamp_RC_
static bool isLinearDevice()
void getNoiseSources(Xyce::Analysis::NoiseData &noiseData)
double * f_EmitEquEmitNodePtr
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
int ACollPEquEmitPNodeOffset
double * q_EmitPEquCollPNodePtr
double * f_CollPEquSubstNodePtr
std::vector< Instance * > instanceContainer
static std::vector< std::vector< int > > jacMap2_
static int numOptionalNodes()
static std::vector< int > jacMap_RB_RC_RE_
double * q_BasePEquEmitPNodePtr
double * f_EmitPEquIfxNodePtr
bool lambertWCurrent(double &Id, double &Gd, double Vd, double Vte, double Isat)
void registerStateLIDs(const std::vector< int > &stateLIDVecRef)
int ACollEquCollNodeOffset
double * f_EmitPEquCollPNodePtr
int AIfxEqudIfxNodeOffset
double * f_EmitPEquEmitPNodePtr
double tleakBCEmissionCoeff
void oldDAEExcessPhaseCalculation2(double &iEX, double &gEX, double &iC_local)
double * q_IfxEquIfxNodePtr
int AdIfxEquIfxNodeOffset
double * q_dIfxEquCollPNodePtr
double * q_CollPEquBasePNodePtr
int AIfxEquEmitPNodeOffset
bool updatePrimaryState()
double * q_dIfxEqudIfxNodePtr
double * q_dIfxEquEmitPNodePtr
int ABasePEquBaseNodeOffset
static std::vector< int > jacMap_RC_RE_
int ACollPEquBaseNodeOffset
void updateIntermediateParams()
int AIfxEquBasePNodeOffset
double * q_EmitEquEmitNodePtr
double * f_BasePEquCollPNodePtr
int ACollPEquIfxNodeOffset
bool processParams()
processParams
ModelBlock represents a .MODEL line from the netlist.
The DeviceTraits template describes the configuration of a device.
bool updateSecondaryState()
Manages parameter binding for class C.
int ASubstEquCollPNodeOffset
InstanceBlock represent a device instance line from the netlist.
static std::vector< std::vector< int > > jacStamp_
double transTimeHighCurrF
int getNumNoiseSources() const
double * q_CollPEquIfxNodePtr
int ABasePEquBasePNodeOffset
int AEmitEquEmitPNodeOffset
double * q_IfxEquEmitPNodePtr
static std::vector< std::vector< int > > jacMap2_RB_RC_
double * f_CollPEquIfxNodePtr
double * f_BasePEquBasePNodePtr
double * f_CollPEquBaseNodePtr
double * q_CollPEquSubstNodePtr
double * q_CollEquCollNodePtr
double * f_dIfxEqudIfxNodePtr
static std::vector< std::vector< int > > jacMap2_RC_
static std::vector< std::vector< int > > jacMap2_RC_RE_
double * q_BasePEquBasePNodePtr
int ABasePEquEmitPNodeOffset
static void loadModelParameters(ParametricData< Model > &model_parameters)
Instance & operator=(const Instance &)
int AdIfxEquCollPNodeOffset
double * f_SubstEquCollPNodePtr
double * f_BaseEquBaseNodePtr
double * q_IfxEqudIfxNodePtr