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),
461 bool bsuccess =
true;
474 const std::vector<int> & extLIDVecRef)
479 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
481 Xyce::dout() << std::endl << section_divider << std::endl;
482 Xyce::dout() <<
" Instance::registerLIDs" << std::endl;
483 Xyce::dout() <<
" name = " <<
getName() << std::endl;
493 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) )
495 Xyce::dout() <<
" li_V = " <<
li_V << std::endl
496 <<
" li_U = " <<
li_U << std::endl;
500 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) )
502 Xyce::dout() << section_divider << std::endl;
575 bool bsuccess =
true;
582 double vVal = (*solVectorPtr)[
li_V];
583 double uVal = (*solVectorPtr)[
li_U];
702 bool bsuccess =
true;
719 bool bsuccess =
true;
741 bool bsuccess =
true;
785 bool bsuccess =
true;
811 bool bsuccess =
true;
834 bool bsuccess =
true;
866 :
DeviceModel(MB, configuration.getModelParameters(), factory_block),
935 std::vector<Instance*>::iterator iter;
939 for (iter=first; iter!=last; ++iter)
971 std::vector<Instance*>::iterator iter;
975 for (iter=first; iter!=last; ++iter)
977 (*iter)->processParams();
992 std::vector<Instance*>::const_iterator iter;
1000 os <<
"Number of Neuron instances: " << isize << std::endl;
1001 os <<
" name=\t\tmodelName\tParameters" << std::endl;
1002 for (i=0, iter=first; iter!=last; ++iter, ++i)
1004 os <<
" " << i <<
": " << (*iter)->getName() <<
"\t";
1029 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
1043 .registerDevice(
"neuron", 7)
1044 .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)