46 #ifndef Xyce_N_DEV_Synapse2_h
47 #define Xyce_N_DEV_Synapse2_h
69 static const char *
name() {
return "Synapse";}
124 void registerLIDs(
const std::vector<int> & intLIDVecRef,
125 const std::vector<int> & extLIDVecRef );
138 const std::vector< std::vector<int> > &
jacobianStamp()
const;
139 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
270 virtual bool updateState (
double * solVec,
double * staVec,
double * stoVec);
280 template <
typename ScalarT>
281 static ScalarT
PostCurrentEqu(
const ScalarT Vpost,
const ScalarT r,
const ScalarT g,
const ScalarT Erev)
283 ScalarT result = g * r * (Vpost - Erev);
287 template <
typename ScalarT>
288 static ScalarT
rEquF(
const ScalarT V,
const ScalarT r,
const ScalarT alpha,
const ScalarT beta,
289 const ScalarT Tmax,
const ScalarT Vthres)
294 result = (alpha * Tmax * (1.0 - r) - beta * r);
static bool isLinearDevice()
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
int APostEquPostNodeOffset
bool processParams()
processParams
Pure virtual class to augment a linear system.
std::vector< Instance * > instanceContainer
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
void addInstance(Instance *instance)
double * f_PostEquPostNodePtr
double * f_PostEquRNodePtr
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
virtual bool updateState(double *solVec, double *staVec, double *stoVec)
Updates the devices state information.
static ScalarT PostCurrentEqu(const ScalarT Vpost, const ScalarT r, const ScalarT g, const ScalarT Erev)
static const char * name()
void registerStateLIDs(const std::vector< int > &staLIDVecRef)
Instance & operator=(const Instance &)
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &Riter, const FactoryBlock &factory_block)
DeviceMaster instantiates a device as described by the device traits T.
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
bool processInstanceParams()
processInstanceParams
std::vector< Instance * > InstanceVector
Master(const Configuration &configuration, const FactoryBlock &factory_block, const SolverState &ss1, const DeviceOptions &do1)
static ScalarT rEquF(const ScalarT V, const ScalarT r, const ScalarT alpha, const ScalarT beta, const ScalarT Tmax, const ScalarT Vthres)
The Device class is an interface for device implementations.
virtual bool updateSecondaryState(double *staDeriv, double *stoVec)
Updates the devices secondary state information.
virtual std::ostream & printOutInstances(std::ostream &os) const
Class Configuration contains device configuration data.
static std::vector< std::vector< int > > jacStamp
bool updateSecondaryState()
double * f_REquPostNodePtr
bool updatePrimaryState()
static void loadModelParameters(ParametricData< Model > &model_parameters)
bool updateIntermediateVars()
ModelBlock represents a .MODEL line from the netlist.
The DeviceTraits template describes the configuration of a device.
const std::vector< std::vector< int > > & jacobianStamp() const
Manages parameter binding for class C.
InstanceBlock represent a device instance line from the netlist.
static const char * deviceTypeName()
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
bool updateTemperature(const double &temp_tmp)
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
Model & operator=(const Model &)