Xyce
6.1
|
The Device class is an interface for device implementations. More...
#include <N_DEV_Device.h>
Public Member Functions | |
Device () | |
virtual | ~Device () |
virtual bool | isLinearDevice () const =0 |
Returns true if the device is linear. More... | |
virtual bool | isPDEDevice () const =0 |
Returns true is the device is a PDE device. More... | |
virtual const std::string & | getName () const =0 |
Returns the name given to the device. More... | |
virtual const std::string & | getDefaultModelName () const =0 |
Returns the name of the default model that would to used for this device. More... | |
virtual DeviceEntity * | findEntity (const std::string &entity_name)=0 |
Returns the device entity with the specified name. More... | |
virtual const DeviceEntity * | findEntity (const std::string &entity_name) const =0 |
Returns the device entity with the specified name. More... | |
virtual DeviceModel * | addModel (const ModelBlock &model_block, const FactoryBlock &factory_block)=0 |
Creates a device model and adds it to the device's list of models. More... | |
virtual DeviceInstance * | addInstance (const InstanceBlock &instance_block, const FactoryBlock &factory_block)=0 |
Creates a device instance and adds to the device model's instance list. More... | |
virtual bool | updateSources () |
Updates the devices source information. More... | |
virtual bool | updateState (double *solVec, double *staVec, double *stoVec) |
Updates the devices state information. More... | |
virtual bool | updateSecondaryState (double *staDerivVec, double *stoVec) |
Updates the devices secondary state information. More... | |
virtual bool | loadDAEVectors (double *solVec, double *fVec, double *qVec, double *storeLeadF, double *storeLeadQ) |
Populates the device's ExternData object with these pointers. More... | |
virtual bool | loadDAEMatrices (N_LAS_Matrix &dFdx, N_LAS_Matrix &dQdx) |
Populates the device's Jacobian object with these pointers. More... | |
virtual void | forEachModel (DeviceModelOp &op) const =0 |
Executes op on each DeviceModel pointer of the device. More... | |
virtual void | forEachInstance (DeviceInstanceOp &op) const =0 |
Executes op on each DeviceInstance pointer of the device. More... | |
Private Member Functions | |
Device (const Device &) | |
No copying. More... | |
Device & | operator= (const Device &) |
No assignment. More... | |
The Device class is an interface for device implementations.
In general, DeviceMaster is the only class that actually inherits from Device. Most devices either use the DeviceMaster class, but some derive from DeviceMaster in what is known as a Master class.
The interfaces are unfortunately used for but derived implementation as well as usage. This should be changed at some point, but this is the currently basic design of most interface classes.
Definition at line 93 of file N_DEV_Device.h.
|
inline |
Definition at line 96 of file N_DEV_Device.h.
|
inlinevirtual |
Definition at line 99 of file N_DEV_Device.h.
|
private |
No copying.
|
pure virtual |
Creates a device instance and adds to the device model's instance list.
instance_block | const reference to the model block describing the instance to create |
factory_block | const reference to the factory data needed to create the instance |
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
pure virtual |
Creates a device model and adds it to the device's list of models.
model_block | const reference to the model block describing the model to create |
factory_block | const reference to the factory data needed to create the model |
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
pure virtual |
Returns the device entity with the specified name.
entity_name | const reference to the name of the entity |
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
pure virtual |
Returns the device entity with the specified name.
entity_name | const reference name of the entity |
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
pure virtual |
Executes op on each DeviceInstance pointer of the device.
To use this function, create a class which derives from DeviceInstanceOp. Then implement the operator()(DeviceInstance *). Sample classes are defined in N_DEV_Algorithm.C.
op | reference to operator functor |
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
pure virtual |
Executes op on each DeviceModel pointer of the device.
To use this function, create a class which derives from DeviceModelOp. Then implement the operator()(DeviceModel/// ). Sample classes are defined in N_DEV_Algorithm.C.
op | reference to operator functor |
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
pure virtual |
Returns the name of the default model that would to used for this device.
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
pure virtual |
Returns the name given to the device.
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
pure virtual |
Returns true if the device is linear.
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
pure virtual |
Returns true is the device is a PDE device.
Implemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
|
inlinevirtual |
Populates the device's Jacobian object with these pointers.
THIS FUNCTION MUST BE CALLED AFTER CALLING loadDAEVectors.
dFdx | pointer to the analysis dFdx matrix |
dQdx | pointer to the analysis dQdx matrix |
Reimplemented in Xyce::Device::MOSFET_B3SOI::Master, Xyce::Device::MOSFET_B4::Master, Xyce::Device::MOSFET_B3::Master, Xyce::Device::VDMOS::Master, Xyce::Device::MOSFET1::Master, Xyce::Device::BJT::Master, Xyce::Device::MOSFET2::Master, Xyce::Device::MOSFET3::Master, Xyce::Device::MOSFET6::Master, Xyce::Device::LTRA::Master, Xyce::Device::JFET::Master, Xyce::Device::MESFET::Master, Xyce::Device::Resistor::Master, Xyce::Device::Diode::Master, Xyce::Device::MutIndNonLin::Master, Xyce::Device::MutIndLin::Master, Xyce::Device::Capacitor::Master, Xyce::Device::DeviceMaster< T >, Xyce::Device::DeviceMaster< Traits >, Xyce::Device::Vsrc::Master, Xyce::Device::Resistor3::Master, Xyce::Device::Bsrc::Master, Xyce::Device::Inductor::Master, Xyce::Device::SW::Master, Xyce::Device::ThermalResistor::Master, Xyce::Device::Synapse4::Master, Xyce::Device::ROM::Master, Xyce::Device::ISRC::Master, Xyce::Device::DAC::Master, Xyce::Device::ADC::Master, Xyce::Device::Vcvs::Master, and Xyce::Device::VCCS::Master.
Definition at line 265 of file N_DEV_Device.h.
|
inlinevirtual |
Populates the device's ExternData object with these pointers.
THIS FUNCTION MUST BE CALLED PRIOR TO CALLING loadDAEMatrices.
solVec | pointer to the analysis solution vector for this device |
fVec | pointer to the analysis f vector for this device |
qVec | pointer to the analysis q vector for this device |
storeLeadF | pointer to the analysis lead store f vector for this device |
storeLeadQ | poitner to the analysis load store q vector for this device |
Reimplemented in Xyce::Device::MOSFET_B3SOI::Master, Xyce::Device::MOSFET_B4::Master, Xyce::Device::MOSFET_B3::Master, Xyce::Device::VDMOS::Master, Xyce::Device::MOSFET1::Master, Xyce::Device::BJT::Master, Xyce::Device::MOSFET2::Master, Xyce::Device::MOSFET3::Master, Xyce::Device::MOSFET6::Master, Xyce::Device::LTRA::Master, Xyce::Device::JFET::Master, Xyce::Device::MESFET::Master, Xyce::Device::Resistor::Master, Xyce::Device::Diode::Master, Xyce::Device::MutIndLin::Master, Xyce::Device::MutIndNonLin::Master, Xyce::Device::Capacitor::Master, Xyce::Device::DeviceMaster< T >, Xyce::Device::DeviceMaster< Traits >, Xyce::Device::Vsrc::Master, Xyce::Device::Resistor3::Master, Xyce::Device::Bsrc::Master, Xyce::Device::Inductor::Master, Xyce::Device::SW::Master, Xyce::Device::ThermalResistor::Master, Xyce::Device::Synapse4::Master, Xyce::Device::ROM::Master, Xyce::Device::ISRC::Master, Xyce::Device::DAC::Master, Xyce::Device::ADC::Master, Xyce::Device::Vcvs::Master, and Xyce::Device::VCCS::Master.
Definition at line 248 of file N_DEV_Device.h.
|
inlinevirtual |
Updates the devices secondary state information.
This function is called by the analysis subsystem when it is time to update the device secondary state information.
Reimplemented in Xyce::Device::VDMOS::Master, Xyce::Device::BJT::Master, Xyce::Device::LTRA::Master, Xyce::Device::MutIndNonLin::Master, Xyce::Device::DeviceMaster< T >, Xyce::Device::DeviceMaster< Traits >, Xyce::Device::Bsrc::Master, Xyce::Device::Inductor::Master, Xyce::Device::SW::Master, Xyce::Device::Synapse4::Master, Xyce::Device::DAC::Master, Xyce::Device::Synapse::Master, Xyce::Device::Synapse2::Master, and Xyce::Device::ADC::Master.
Definition at line 228 of file N_DEV_Device.h.
|
inlinevirtual |
Updates the devices source information.
This function is called by the analysis subsystem when it is time to update the device source information.
Reimplemented in Xyce::Device::DeviceMaster< T >, and Xyce::Device::DeviceMaster< Traits >.
Definition at line 200 of file N_DEV_Device.h.
|
inlinevirtual |
Updates the devices state information.
This function is called by the analysis subsystem when it is time to update the device state information.
Reimplemented in Xyce::Device::MOSFET_B3SOI::Master, Xyce::Device::MOSFET_B4::Master, Xyce::Device::MOSFET_B3::Master, Xyce::Device::VDMOS::Master, Xyce::Device::MOSFET1::Master, Xyce::Device::BJT::Master, Xyce::Device::MOSFET2::Master, Xyce::Device::MOSFET3::Master, Xyce::Device::MOSFET6::Master, Xyce::Device::LTRA::Master, Xyce::Device::JFET::Master, Xyce::Device::MESFET::Master, Xyce::Device::Neuron::Master, Xyce::Device::Neuron9::Master, Xyce::Device::Resistor::Master, Xyce::Device::Diode::Master, Xyce::Device::MutIndLin::Master, Xyce::Device::MutIndNonLin::Master, Xyce::Device::Capacitor::Master, Xyce::Device::DeviceMaster< T >, Xyce::Device::DeviceMaster< Traits >, Xyce::Device::Vsrc::Master, Xyce::Device::Resistor3::Master, Xyce::Device::Bsrc::Master, Xyce::Device::Inductor::Master, Xyce::Device::SW::Master, Xyce::Device::ThermalResistor::Master, Xyce::Device::Synapse4::Master, Xyce::Device::ROM::Master, Xyce::Device::ISRC::Master, Xyce::Device::DAC::Master, Xyce::Device::Synapse::Master, Xyce::Device::Synapse2::Master, Xyce::Device::ADC::Master, Xyce::Device::Vcvs::Master, and Xyce::Device::VCCS::Master.
Definition at line 214 of file N_DEV_Device.h.