45 #include <Xyce_config.h>
53 #include <N_LAS_Matrix.h>
176 .setDescription(
"Resistance")
177 .setAnalyticSensitivityAvailable(
true)
178 .setSensitivityFunctor(&
resSens);
181 .setDescription(
"Length");
184 .setDescription(
"Width");
188 .setDescription(
"Device temperature");
193 .setDescription(
"Linear Temperature Coefficient");
197 .setDescription(
"Quadratic Temperature Coefficient");
203 .setDescription(
"Device Temperature -- For compatibility only. Parameter is NOT used");
234 .setDescription(
"Linear Temperature Coefficient");
237 .setDescription(
"Quadratic Temperature Coefficient");
240 .setDescription(
"Sheet Resistance");
243 .setDescription(
"Resistance Multiplier");
246 .setDescription(
"Default Instance Width");
249 .setDescription(
"Narrowing due to side etching");
252 .setDescription(
"Parameter Measurement Temperature");
280 :
DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
285 temp(factory_block.deviceOptions_.temp.getImmutableValue<double>()),
289 tempCoeff1Given(false),
290 tempCoeff2Given(false),
297 APosEquPosNodeOffset(-1),
298 APosEquNegNodeOffset(-1),
299 ANegEquPosNodeOffset(-1),
300 ANegEquNegNodeOffset(-1)
303 f_PosEquPosNodePtr(0),
304 f_PosEquNegNodePtr(0),
305 f_NegEquPosNodePtr(0),
306 f_NegEquNegNodePtr(0)
354 UserWarning0(*
this) <<
"Resistance is set to 0, setting to the default, " <<
R <<
" ohms";
421 const std::vector<int> & intLIDVecRef,
422 const std::vector<int> & extLIDVecRef)
439 <<
"li_Pos_ = " <<
li_Pos << std::endl
440 <<
"li_Neg_ = " <<
li_Neg << std::endl
624 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
667 double v_pos = solVec[
li_Pos];
668 double v_neg = solVec[
li_Neg];
669 i0 = (v_pos-v_neg)*
G;
850 bool bsuccess =
true;
851 double difference, factor;
853 if (temp_tmp != -999.0)
859 G = 1.0/(
R * factor);
909 (*it)->processParams();
936 :
DeviceModel(model_block, configuration.getModelParameters(), factory_block),
940 resistanceMultiplier(1.0),
943 tnom(getDeviceOptions().tnom)
1009 os <<
"Number of Resistor Instances: " <<
instanceContainer.size() << std::endl;
1010 os <<
" name model name Parameters" << std::endl;
1015 os <<
" " << i <<
": " << (*it)->getName() <<
"\t";
1017 os <<
"\t\tR(Tnom) = " << (*it)->R;
1018 os <<
"\tG(T) = " << (*it)->G;
1044 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
1081 double v_pos = solVec[ri.
li_Pos];
1082 double v_neg = solVec[ri.
li_Neg];
1085 ri.
i0 = (v_pos-v_neg)*ri.
G;
1120 bool Master::loadDAEVectors (
double * solVec,
double * fVec,
double *qVec,
double * bVec,
double * storeLeadF,
double * storeLeadQ)
1167 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
1224 .registerDevice(
"r", 1)
1225 .registerModelType(
"r", 1)
1226 .registerModelType(
"res", 1);
1239 const std::string & name,
1240 std::vector<double> & dfdp,
1241 std::vector<double> & dqdp,
1242 std::vector<double> & dbdp,
1243 std::vector<int> & Findices,
1244 std::vector<int> & Qindices,
1245 std::vector<int> & Bindices
1252 double v_pos = solVec[in->
li_Pos];
1253 double v_neg = solVec[in->
li_Neg];
1255 double dfdpLoc = -(v_pos-v_neg)*in->
G*in->
G;
1262 Findices[0] = in->
li_Pos;
1263 Findices[1] = in->
li_Neg;