46 #ifndef Xyce_N_DEV_MutIndLin_h
47 #define Xyce_N_DEV_MutIndLin_h
55 #include <N_UTL_fwd.h>
99 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
132 namespace MutIndLin {
139 static const char *
name() {
return "Linear Mutual Inductor";}
180 void registerLIDs(
const std::vector<int> & intLIDVecRef,
181 const std::vector<int> & extLIDVecRef );
189 const std::vector< std::vector<int> > &
jacobianStamp()
const;
190 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
200 void varTypes( std::vector<char> & varTypeVec );
258 std::vector< std::vector< double > >
LO;
262 std::vector< double >
LOI;
353 virtual bool updateState (
double * solVec,
double * staVec,
double * stoVec);
357 virtual bool loadDAEVectors (
double * solVec,
double * fVec,
double * qVec,
double * bVec,
double * storeLeadF,
double * storeLeadQ,
double * leadF,
double * leadQ,
double * junctionV);
358 virtual bool loadDAEMatrices (Linear::Matrix & dFdx, Linear::Matrix & dQdx);
std::vector< std::vector< int > > li_couplingVarDerivs
std::vector< double * > f_inductorCurrentPtrs
std::vector< std::vector< double > > mutualCouplingCoef
std::vector< Instance * > InstanceVector
static const char * primaryParameter()
Pure virtual class to augment a linear system.
const std::vector< std::string > & getDepSolnVars()
std::vector< std::vector< int > > jacStamp
std::vector< int > ABraEquDepVarOffsets
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
std::vector< std::vector< double > > couplingCoefficientVarDerivs
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
const std::vector< std::vector< int > > & jacobianStamp() const
std::vector< std::string > inductorsNode1
std::vector< std::string > inductorNames
bool updateTemperature(const double &temp_tmp)
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &Iiter, const FactoryBlock &factory_block)
void addInstance(Instance *instance)
DeviceMaster instantiates a device as described by the device traits T.
virtual bool loadDAEMatrices(Linear::Matrix &dFdx, Linear::Matrix &dQdx)
Populates the device's Jacobian object with these pointers.
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
std::vector< std::vector< double > > couplingCoefficientVarDerivsDDT
double * q_BraEquPosNodePtr
bool processInstanceParams()
processInstanceParams
void varTypes(std::vector< char > &varTypeVec)
static const char * name()
std::vector< double * > f_BraEquDepVarPtrs
std::vector< std::string > couplingInductor
bool updateIntermediateVars()
bool updatePrimaryState()
std::vector< std::pair< int, int > > depVarPairs
std::vector< double > LOI
std::vector< double > inductorCurrents
static void loadModelParameters(ParametricData< Model > &model_parameters)
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
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.
bool processParams()
processParams
The Device class is an interface for device implementations.
static const char * deviceTypeName()
std::vector< double * > q_BraEquDepVarPtrs
double * f_BraEquPosNodePtr
std::vector< double > inductanceVals
Class Configuration contains device configuration data.
virtual std::ostream & printOutInstances(std::ostream &os) const
static bool isLinearDevice()
std::vector< double > dIdt
double * f_BraEquBraVarPtr
std::vector< int > inductorCurrentOffsets
std::vector< double > inductorInductances
Instance & operator=(const Instance &)
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
double * f_PosEquBraVarPtr
std::vector< double * > q_inductorCurrentPtrs
double * q_PosEquBraVarPtr
std::vector< int > li_coupling
std::vector< double > couplingCoefficient
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
std::vector< std::pair< int, int > > indexPairs
double * q_BraEquBraVarPtr
double * q_NegEquBraVarPtr
ModelBlock represents a .MODEL line from the netlist.
std::vector< Util::Expression * > expPtrs
The DeviceTraits template describes the configuration of a device.
Manages parameter binding for class C.
InstanceBlock represent a device instance line from the netlist.
double * f_BraEquNegNodePtr
std::vector< Instance * > instanceContainer
void updateInductanceMatrix()
Model & operator=(const Model &)
std::vector< std::vector< double > > LO
std::vector< std::vector< double > > mutualCouplingCoefDerivs
void registerStateLIDs(const std::vector< int > &staLIDVecRef)
void loadErrorWeightMask()
double * q_BraEquNegNodePtr
std::vector< int > numCoupDepVars
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
std::vector< InductorInstanceData * > instanceData
std::vector< std::string > inductorsNode2
virtual bool updateState(double *solVec, double *staVec, double *stoVec)
Updates the devices state information.
void auxDAECalculations()
Master(const Configuration &configuration, const FactoryBlock &factory_block, const SolverState &ss1, const DeviceOptions &do1)
double * f_NegEquBraVarPtr