45 #include <Xyce_config.h>
48 #include <N_UTL_Misc.h>
68 #include <N_ERH_ErrorMgr.h>
70 #include <N_LAS_Vector.h>
71 #include <N_LAS_Matrix.h>
82 .setDescription(
"Inductance")
83 .setAnalyticSensitivityAvailable(
true)
84 .setSensitivityFunctor(&
indSens);
89 .setDescription(
"Initial current through device");
96 .setDescription(
"Device temperature");
101 .setDescription(
"Linear Temperature Coefficient");
106 .setDescription(
"Quadratic Temperature Coefficient");
119 .setDescription(
"Inductance Multiplier");
123 .setDescription(
"Initial current through device");
128 .setDescription(
"Reference temperature");
133 .setDescription(
"First order temperature coeff.");
138 .setDescription(
"Second order temperature coeff.");
195 :
DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
201 temp(getDeviceOptions().temp.getImmutableValue<double>()),
205 tempCoeff1Given(false),
206 tempCoeff2Given(false),
211 ABraEquPosNodeOffset(-1),
212 ABraEquNegNodeOffset(-1),
213 ABraEquBraVarOffset(-1),
214 APosEquBraVarOffset(-1),
215 ANegEquBraVarOffset(-1)
220 fBraEquPosNodePtr(0),
221 fBraEquNegNodePtr(0),
255 UserError0(*
this) <<
"Could not find L parameter in instance.";
301 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
325 const std::vector<int> & extLIDVecRef)
342 #ifdef Xyce_DEBUG_DEVICE
345 Xyce::dout() << section_divider << std::endl;
347 Xyce::dout() <<
"::registerLIDs:\n";
348 Xyce::dout() <<
" name = " <<
getName() << std::endl;
350 Xyce::dout() <<
"\nlocal solution indices:\n";
351 Xyce::dout() <<
" li_Pos = "<<
li_Pos << std::endl;
352 Xyce::dout() <<
" li_Neg = "<<
li_Neg << std::endl;
353 Xyce::dout() <<
" li_Bra = "<<
li_Bra << std::endl;
355 Xyce::dout() << section_divider << std::endl;
442 double current = solVec[
li_Bra];
509 double v_pos = solVec[
li_Pos];
510 double v_neg = solVec[
li_Neg];
511 double vind = v_pos-v_neg;
630 varTypeVec.resize(1);
657 std::vector<Instance*>::iterator iter;
661 for (iter=first; iter!=last; ++iter)
663 (*iter)->processParams();
681 :
DeviceModel(MB, configuration.getModelParameters(), factory_block),
682 inductanceMultiplier(1.0),
686 tnom(getDeviceOptions().tnom),
718 std::vector<Instance*>::iterator iter;
722 for (iter=first; iter!=last; ++iter)
739 std::vector<Instance*>::const_iterator iter;
747 os <<
"Number of Inductor instances: " << isize << std::endl;
748 os <<
" name=\t\tmodelName\tParameters" << std::endl;
749 for (i=0, iter=first; iter!=last; ++iter, ++i)
751 os <<
" " << i <<
": " << (*iter)->getName() <<
"\t";
753 os <<
"\t\tL = " << (*iter)->L;
754 os <<
"\tIC = " << (*iter)->IC;
779 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
800 double current = solVec[inst.
li_Bra];
805 inst.
f0 = inst.
L*current;
833 bool Master::loadDAEVectors (
double * solVec,
double * fVec,
double *qVec,
double * bVec,
double * storeLeadF,
double * storeLeadQ)
839 double current = 0.0;
842 double v_pos = solVec[inst.
li_Pos];
843 double v_neg = solVec[inst.
li_Neg];
844 double vind = v_pos-v_neg;
852 solVec[inst.
li_Bra] = current;
857 current = solVec[inst.
li_Bra];
862 fVec[inst.
li_Pos] += current;
863 fVec[inst.
li_Neg] += -current;
864 fVec[inst.
li_Bra] += coef;
889 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
897 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
910 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
928 .registerDevice(
"l", 1)
929 .registerModelType(
"l", 1)
930 .registerModelType(
"ind", 1);
943 const std::string & name,
944 std::vector<double> & dfdp,
945 std::vector<double> & dqdp,
946 std::vector<double> & dbdp,
947 std::vector<int> & Findices,
948 std::vector<int> & Qindices,
949 std::vector<int> & Bindices
956 double current = solVec[in->
li_Bra];
962 double dqdpLoc = current;