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>
85 .setDescription(
"Inductance");
90 .setDescription(
"Initial current through device");
97 .setDescription(
"Device temperature");
102 .setDescription(
"Linear Temperature Coefficient");
107 .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;
375 std::string tmpstr(
getName()+
"_branch");
445 double current = solVec[
li_Bra];
512 double v_pos = solVec[
li_Pos];
513 double v_neg = solVec[
li_Neg];
514 double vind = v_pos-v_neg;
633 varTypeVec.resize(1);
660 std::vector<Instance*>::iterator iter;
664 for (iter=first; iter!=last; ++iter)
666 (*iter)->processParams();
684 :
DeviceModel(MB, configuration.getModelParameters(), factory_block),
689 tnom(getDeviceOptions().tnom),
721 std::vector<Instance*>::iterator iter;
725 for (iter=first; iter!=last; ++iter)
742 std::vector<Instance*>::const_iterator iter;
750 os <<
"Number of Inductor instances: " << isize << std::endl;
751 os <<
" name=\t\tmodelName\tParameters" << std::endl;
752 for (i=0, iter=first; iter!=last; ++iter, ++i)
754 os <<
" " << i <<
": " << (*iter)->getName() <<
"\t";
756 os <<
"\t\tL = " << (*iter)->L;
757 os <<
"\tIC = " << (*iter)->IC;
782 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
803 double current = solVec[inst.
li_Bra];
808 inst.
f0 = inst.
L*current;
842 double current = 0.0;
845 double v_pos = solVec[inst.
li_Pos];
846 double v_neg = solVec[inst.
li_Neg];
847 double vind = v_pos-v_neg;
855 solVec[inst.
li_Bra] = current;
860 current = solVec[inst.
li_Bra];
865 fVec[inst.
li_Pos] += current;
866 fVec[inst.
li_Neg] += -current;
867 fVec[inst.
li_Bra] += coef;
892 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
900 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
913 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
931 .registerDevice(
"l", 1)
932 .registerModelType(
"l", 1);