46 #include <Xyce_config.h>
57 #include <N_ERH_ErrorMgr.h>
61 #include <N_LAS_Vector.h>
62 #include <N_LAS_Matrix.h>
63 #include <N_UTL_FeatureTest.h>
76 .setDescription(
"Membrane capacitance");
82 .setDescription(
"Instantaneous threshold voltage");
88 .setDescription(
"Resting membrane potential");
94 .setDescription(
"Peak voltage");
100 .setDescription(
"instanceing parameter");
106 .setDescription(
"instanceing parameter");
112 .setDescription(
"instanceing parameter");
118 .setDescription(
"instanceing parameter");
124 .setDescription(
"instanceing parameter");
130 .setDescription(
"scaling for u variable");
136 .setDescription(
"recovery rate");
145 .setDescription(
"Membrane capacitance");
151 .setDescription(
"Instantaneous threshold voltage");
157 .setDescription(
"Resting membrane potential");
163 .setDescription(
"Peak voltage");
169 .setDescription(
"Neuron7::Modeling parameter");
175 .setDescription(
"Neuron7::Modeling parameter");
181 .setDescription(
"Neuron7::Modeling parameter");
187 .setDescription(
"Neuron7::Modeling parameter");
193 .setDescription(
"Neuron7::Modeling parameter");
199 .setDescription(
"scaling for u variable");
205 .setDescription(
"recovery rate");
228 :
DeviceInstance(IB, configuration.getInstanceParameters(), factory_block),
251 fallRateGiven(false),
451 bool bsuccess =
true;
464 const std::vector<int> & extLIDVecRef)
469 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
471 Xyce::dout() << std::endl << section_divider << std::endl;
472 Xyce::dout() <<
" Instance::registerLIDs" << std::endl;
473 Xyce::dout() <<
" name = " <<
getName() << std::endl;
483 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) )
485 Xyce::dout() <<
" li_V = " <<
li_V << std::endl
486 <<
" li_U = " <<
li_U << std::endl;
490 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) )
492 Xyce::dout() << section_divider << std::endl;
565 bool bsuccess =
true;
572 double vVal = (*solVectorPtr)[
li_V];
573 double uVal = (*solVectorPtr)[
li_U];
692 bool bsuccess =
true;
709 bool bsuccess =
true;
731 bool bsuccess =
true;
775 bool bsuccess =
true;
801 bool bsuccess =
true;
824 bool bsuccess =
true;
856 :
DeviceModel(MB, configuration.getModelParameters(), factory_block),
925 std::vector<Instance*>::iterator iter;
929 for (iter=first; iter!=last; ++iter)
961 std::vector<Instance*>::iterator iter;
965 for (iter=first; iter!=last; ++iter)
967 (*iter)->processParams();
982 std::vector<Instance*>::const_iterator iter;
990 os <<
"Number of Neuron instances: " << isize << std::endl;
991 os <<
" name=\t\tmodelName\tParameters" << std::endl;
992 for (i=0, iter=first; iter!=last; ++iter, ++i)
994 os <<
" " << i <<
": " << (*iter)->getName() <<
"\t";
1019 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
1033 .registerDevice(
"neuron", 7)
1034 .registerModelType(
"neuron", 7);
const InstanceName & getName() const
bool updateIntermediateVars()
bool updateDependentParameters()
const SolverState & solverState_
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
Descriptor & addPar(const char *parName, T default_value, T U::*varPtr)
Adds the parameter description to the parameter map.
Linear::Vector * nextSolVectorPtr
bool updateSecondaryState()
Linear::Vector * daeQVectorPtr
Pure virtual class to augment a linear system.
void addInternalNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
static void loadModelParameters(ParametricData< Model > &model_parameters)
bool processInstanceParams()
processInstanceParams
RetScalarT Vt(Arg1ScalarT U, Arg2ScalarT Ud)
virtual void registerJacLIDs(const JacobianStamp &jacLIDVec)
static std::vector< std::vector< int > > jacStamp
bool updateTemperature(const double &temp_tmp)
virtual std::ostream & printOutInstances(std::ostream &os) const
std::vector< Param > params
Parameters from the line.
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
void setParams(const std::vector< Param > ¶ms)
const std::string & getName() const
void registerStateLIDs(const std::vector< int > &staLIDVecRef)
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
const DeviceOptions & deviceOptions_
const std::vector< std::vector< int > > & jacobianStamp() const
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
std::vector< Instance * > instanceContainer
static Config< T > & addConfiguration()
Adds the device to the Xyce device configuration.
bool processParams()
processParams
Linear::Matrix * dFdxMatrixPtr
The Device class is an interface for device implementations.
Class Configuration contains device configuration data.
void varTypes(std::vector< char > &varTypeVec)
const SolverState & getSolverState() const
Linear::Vector * daeFVectorPtr
bool updatePrimaryState()
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
const ExternData & extData
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &Miter, const FactoryBlock &factory_block)
ModelBlock represents a .MODEL line from the netlist.
Manages parameter binding for class C.
InstanceBlock represent a device instance line from the netlist.
std::vector< Param > params
Linear::Matrix * dQdxMatrixPtr
void setModParams(const std::vector< Param > ¶ms)