Xyce  6.1
N_DEV_ADMSvbic13.C
Go to the documentation of this file.
1 
2 //-----------------------------------------------------------------------------
3 // Copyright Notice
4 //
5 // Copyright 2002 Sandia Corporation. Under the terms
6 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
7 // Government retains certain rights in this software.
8 //
9 // Xyce(TM) Parallel Electrical Simulator
10 // Copyright (C) 2002-2015 Sandia Corporation
11 //
12 // This program is free software: you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation, either version 3 of the License, or
15 // (at your option) any later version.
16 //
17 // This program is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 // You should have received a copy of the GNU General Public License
23 // along with this program. If not, see <http://www.gnu.org/licenses/>.
24 //-----------------------------------------------------------------------------
25 
26 //-------------------------------------------------------------------------
27 // Filename : $RCSfile: N_DEV_ADMSvbic13.C,v $
28 //
29 // Purpose :
30 //
31 // Special Notes : Generated from verilog file vbic_1p3.va with ADMS
32 // interface for Xyce 6.4.0
33 // DO NOT EDIT THIS FILE DIRECTLY! It may be overwritten!
34 //
35 // Creator : admsXml-2.3.4
36 //
37 // Creation Date : Wed, 04 Nov 2015 13:24:19
38 //
39 // Revision Information:
40 // ---------------------
41 //
42 // Revision Number: $Revision: 1.5 $
43 //
44 // Revision Date : $Date: 2015/11/04 21:33:47 $
45 //
46 // Current Owner : $Author: tvrusso $
47 //-------------------------------------------------------------------------
48 
49 #include <Xyce_config.h>
50 #include <N_DEV_ADMSvbic13.h>
51 
52 
53 #include <N_DEV_Const.h>
54 #include <N_DEV_DeviceOptions.h>
55 #include <N_DEV_DeviceMaster.h>
56 #include <N_DEV_ExternData.h>
57 #include <N_DEV_MatrixLoadData.h>
58 #include <N_DEV_SolverState.h>
59 #include <N_DEV_Message.h>
60 
61 #include <N_LAS_Matrix.h>
62 #include <N_LAS_Vector.h>
63 
64 #include <N_UTL_FeatureTest.h>
65 #if defined(HAVE_UNORDERED_MAP)
66 #include <unordered_map>
67 using std::unordered_map;
68 #elif defined(HAVE_TR1_UNORDERED_MAP)
69 #include <tr1/unordered_map>
70 using std::tr1::unordered_map;
71 #else
72 #error neither unordered_map or tr1/unordered_map found
73 #endif
74 
75 namespace Xyce {
76 namespace Device {
77 namespace ADMSvbic13 {
78 std::vector< std::vector<int> > Instance::jacStamp;
79 std::vector<int> Instance::jacMap;
80 std::vector< std::vector<int> > Instance::jacMap2;
81 
82 
83 void
85 {
86  // Set up each parameter directly, using the up-cased variable name
87  // as the tag.
88 
89  // This kludge is to force us always to have an instance parameter
90  // that the device manager can set to the temperature, even if we have
91  // no "TEMP".
92  p.addPar("XYCEADMSINSTTEMP", 0.0, &ADMSvbic13::Instance::admsInstTemp)
93  .setExpressionAccess(NO_DOC)
94  .setUnit(U_DEGK)
95  .setCategory(CAT_TEMP)
96  .setDescription("Internal-use parameter for setting device instance temperature");
97  p.addPar("M", static_cast<double>(1.0), &ADMSvbic13::Instance::m)
98  .setUnit(U_UNKNOWN)
99  .setDescription("multiplicity factor")
100 #ifdef Xyce_ADMS_SENSITIVITIES
101  .setAnalyticSensitivityAvailable(true)
102  .setSensitivityFunctor(&instSens)
103 #endif // Xyce_ADMS_SENSITIVITIES
104  ;
105  p.addPar("TRISE", static_cast<double>(0.0), &ADMSvbic13::Instance::trise)
106  .setUnit(U_DEGC)
107  .setDescription("local temperature delta to ambient (before self-heating)")
108 #ifdef Xyce_ADMS_SENSITIVITIES
109  .setAnalyticSensitivityAvailable(true)
110  .setSensitivityFunctor(&instSens)
111 #endif // Xyce_ADMS_SENSITIVITIES
112  ;
113  p.addPar("DTA", static_cast<double>(0.0), &ADMSvbic13::Instance::trise)
114  .setUnit(U_DEGC)
115  .setDescription(" Alias for trise")
116 #ifdef Xyce_ADMS_SENSITIVITIES
117  .setAnalyticSensitivityAvailable(true)
118  .setSensitivityFunctor(&instSens)
119 #endif // Xyce_ADMS_SENSITIVITIES
120  ;
121  p.addPar("DTEMP", static_cast<double>(0.0), &ADMSvbic13::Instance::trise)
122  .setUnit(U_DEGC)
123  .setDescription(" Alias for trise")
124 #ifdef Xyce_ADMS_SENSITIVITIES
125  .setAnalyticSensitivityAvailable(true)
126  .setSensitivityFunctor(&instSens)
127 #endif // Xyce_ADMS_SENSITIVITIES
128  ;
129  p.addPar("SW_NOISE", static_cast<int>(1), &ADMSvbic13::Instance::sw_noise)
130  .setUnit(U_UNKNOWN)
131  .setDescription("switch for including noise: 0=no and 1=yes");
132  p.addPar("SW_ET", static_cast<int>(1), &ADMSvbic13::Instance::sw_et)
133  .setUnit(U_UNKNOWN)
134  .setDescription("switch for self-heating: 0=no and 1=yes");
135 
136 
137 }
138 
140 {
141  // Set up each parameter directly, using the up-cased variable name
142  // as the tag.
143 
144  // This kludge is to force us always to have a model parameter
145  // that the device manager can set to the temperature, even if we have
146  // no "TEMP".
147  p.addPar("XYCEADMSMODTEMP", 0.0, &ADMSvbic13::Model::admsModTemp)
148  .setExpressionAccess(NO_DOC)
149  .setUnit(U_DEGK)
150  .setCategory(CAT_TEMP)
151  .setDescription("Internal-use parameter for setting device model temperature");
152  p.addPar("NPN", static_cast<double>(0.0), &ADMSvbic13::Model::npn)
153  .setUnit(U_UNKNOWN)
154  .setDescription("npn transistor type")
155 #ifdef Xyce_ADMS_SENSITIVITIES
156  .setAnalyticSensitivityAvailable(true)
157  .setSensitivityFunctor(&modSens)
158 #endif // Xyce_ADMS_SENSITIVITIES
159  ;
160  p.addPar("PNP", static_cast<double>(0.0), &ADMSvbic13::Model::pnp)
161  .setUnit(U_UNKNOWN)
162  .setDescription("pnp transistor type")
163 #ifdef Xyce_ADMS_SENSITIVITIES
164  .setAnalyticSensitivityAvailable(true)
165  .setSensitivityFunctor(&modSens)
166 #endif // Xyce_ADMS_SENSITIVITIES
167  ;
168  p.addPar("TYPE", static_cast<int>((-1)), &ADMSvbic13::Model::type)
169  .setUnit(U_UNKNOWN)
170  .setDescription("transistor type: -1=npn and +1=pnp (overriden by npn or pnp)");
171  //Hidden parameter VBICtype
172  p.addPar("SCALE", static_cast<double>(1.0), &ADMSvbic13::Model::scale)
173  .setUnit(U_UNKNOWN)
174  .setDescription("scale factor for instance geometries")
175 #ifdef Xyce_ADMS_SENSITIVITIES
176  .setAnalyticSensitivityAvailable(true)
177  .setSensitivityFunctor(&modSens)
178 #endif // Xyce_ADMS_SENSITIVITIES
179  ;
180  p.addPar("SHRINK", static_cast<double>(0.0), &ADMSvbic13::Model::shrink)
181  .setUnit(U_UNKNOWN)
182  .setDescription("shrink percentage for instance geometries")
183 #ifdef Xyce_ADMS_SENSITIVITIES
184  .setAnalyticSensitivityAvailable(true)
185  .setSensitivityFunctor(&modSens)
186 #endif // Xyce_ADMS_SENSITIVITIES
187  ;
188  p.addPar("TMIN", static_cast<double>((-100.0)), &ADMSvbic13::Model::tmin)
189  .setUnit(U_DEGC)
190  .setDescription("minimum ambient temperature")
191 #ifdef Xyce_ADMS_SENSITIVITIES
192  .setAnalyticSensitivityAvailable(true)
193  .setSensitivityFunctor(&modSens)
194 #endif // Xyce_ADMS_SENSITIVITIES
195  ;
196  p.addPar("TMAX", static_cast<double>(500.0), &ADMSvbic13::Model::tmax)
197  .setUnit(U_DEGC)
198  .setDescription("maximum ambient temperature")
199 #ifdef Xyce_ADMS_SENSITIVITIES
200  .setAnalyticSensitivityAvailable(true)
201  .setSensitivityFunctor(&modSens)
202 #endif // Xyce_ADMS_SENSITIVITIES
203  ;
204  p.addPar("GMIN", static_cast<double>(1.0e-12), &ADMSvbic13::Model::gmin)
205  .setUnit(U_OHMM1)
206  .setDescription("minimum conductance")
207 #ifdef Xyce_ADMS_SENSITIVITIES
208  .setAnalyticSensitivityAvailable(true)
209  .setSensitivityFunctor(&modSens)
210 #endif // Xyce_ADMS_SENSITIVITIES
211  ;
212  p.addPar("PNJMAXI", static_cast<double>(1.0), &ADMSvbic13::Model::pnjmaxi)
213  .setUnit(U_AMP)
214  .setDescription("current at which to linearize diode currents")
215 #ifdef Xyce_ADMS_SENSITIVITIES
216  .setAnalyticSensitivityAvailable(true)
217  .setSensitivityFunctor(&modSens)
218 #endif // Xyce_ADMS_SENSITIVITIES
219  ;
220  p.addPar("MAXEXP", static_cast<double>(1.0e22), &ADMSvbic13::Model::maxexp)
221  .setUnit(U_UNKNOWN)
222  .setDescription("argument at which to linearize general exponentials")
223 #ifdef Xyce_ADMS_SENSITIVITIES
224  .setAnalyticSensitivityAvailable(true)
225  .setSensitivityFunctor(&modSens)
226 #endif // Xyce_ADMS_SENSITIVITIES
227  ;
228  p.addPar("TNOM", static_cast<double>(27.0), &ADMSvbic13::Model::tnom)
229  .setUnit(U_DEGC)
230  .setDescription("nominal (reference) temperature")
231 #ifdef Xyce_ADMS_SENSITIVITIES
232  .setAnalyticSensitivityAvailable(true)
233  .setSensitivityFunctor(&modSens)
234 #endif // Xyce_ADMS_SENSITIVITIES
235  ;
236  p.addPar("TMINCLIP", static_cast<double>((-100.0)), &ADMSvbic13::Model::tminclip)
237  .setUnit(U_DEGC)
238  .setDescription("clip minimum temperature")
239 #ifdef Xyce_ADMS_SENSITIVITIES
240  .setAnalyticSensitivityAvailable(true)
241  .setSensitivityFunctor(&modSens)
242 #endif // Xyce_ADMS_SENSITIVITIES
243  ;
244  p.addPar("TMAXCLIP", static_cast<double>(500.0), &ADMSvbic13::Model::tmaxclip)
245  .setUnit(U_DEGC)
246  .setDescription("clip maximum temperature")
247 #ifdef Xyce_ADMS_SENSITIVITIES
248  .setAnalyticSensitivityAvailable(true)
249  .setSensitivityFunctor(&modSens)
250 #endif // Xyce_ADMS_SENSITIVITIES
251  ;
252  p.addPar("RCX", static_cast<double>(0.0), &ADMSvbic13::Model::rcx)
253  .setUnit(U_OHM)
254  .setDescription("extrinsic collector resistance")
255 #ifdef Xyce_ADMS_SENSITIVITIES
256  .setAnalyticSensitivityAvailable(true)
257  .setSensitivityFunctor(&modSens)
258 #endif // Xyce_ADMS_SENSITIVITIES
259  ;
260  p.addPar("RCI", static_cast<double>(0.0), &ADMSvbic13::Model::rci)
261  .setUnit(U_OHM)
262  .setDescription("intrinsic collector resistance")
263 #ifdef Xyce_ADMS_SENSITIVITIES
264  .setAnalyticSensitivityAvailable(true)
265  .setSensitivityFunctor(&modSens)
266 #endif // Xyce_ADMS_SENSITIVITIES
267  ;
268  p.addPar("VO", static_cast<double>(0.0), &ADMSvbic13::Model::vo)
269  .setUnit(U_VOLT)
270  .setDescription("epi drift saturation voltage")
271 #ifdef Xyce_ADMS_SENSITIVITIES
272  .setAnalyticSensitivityAvailable(true)
273  .setSensitivityFunctor(&modSens)
274 #endif // Xyce_ADMS_SENSITIVITIES
275  ;
276  p.addPar("GAMM", static_cast<double>(0.0), &ADMSvbic13::Model::gamm)
277  .setUnit(U_UNKNOWN)
278  .setDescription("epi doping parameter")
279 #ifdef Xyce_ADMS_SENSITIVITIES
280  .setAnalyticSensitivityAvailable(true)
281  .setSensitivityFunctor(&modSens)
282 #endif // Xyce_ADMS_SENSITIVITIES
283  ;
284  p.addPar("HRCF", static_cast<double>(0.0), &ADMSvbic13::Model::hrcf)
285  .setUnit(U_UNKNOWN)
286  .setDescription("high current collector resistance factor")
287 #ifdef Xyce_ADMS_SENSITIVITIES
288  .setAnalyticSensitivityAvailable(true)
289  .setSensitivityFunctor(&modSens)
290 #endif // Xyce_ADMS_SENSITIVITIES
291  ;
292  p.addPar("RBX", static_cast<double>(0.0), &ADMSvbic13::Model::rbx)
293  .setUnit(U_OHM)
294  .setDescription("extrinsic base resistance")
295 #ifdef Xyce_ADMS_SENSITIVITIES
296  .setAnalyticSensitivityAvailable(true)
297  .setSensitivityFunctor(&modSens)
298 #endif // Xyce_ADMS_SENSITIVITIES
299  ;
300  p.addPar("RBI", static_cast<double>(0.0), &ADMSvbic13::Model::rbi)
301  .setUnit(U_OHM)
302  .setDescription("intrinsic base resistance")
303 #ifdef Xyce_ADMS_SENSITIVITIES
304  .setAnalyticSensitivityAvailable(true)
305  .setSensitivityFunctor(&modSens)
306 #endif // Xyce_ADMS_SENSITIVITIES
307  ;
308  p.addPar("RE", static_cast<double>(0.0), &ADMSvbic13::Model::re)
309  .setUnit(U_OHM)
310  .setDescription("extrinsic emitter resistance")
311 #ifdef Xyce_ADMS_SENSITIVITIES
312  .setAnalyticSensitivityAvailable(true)
313  .setSensitivityFunctor(&modSens)
314 #endif // Xyce_ADMS_SENSITIVITIES
315  ;
316  p.addPar("RS", static_cast<double>(0.0), &ADMSvbic13::Model::rs)
317  .setUnit(U_OHM)
318  .setDescription("extrinsic substrate resistance")
319 #ifdef Xyce_ADMS_SENSITIVITIES
320  .setAnalyticSensitivityAvailable(true)
321  .setSensitivityFunctor(&modSens)
322 #endif // Xyce_ADMS_SENSITIVITIES
323  ;
324  p.addPar("RBP", static_cast<double>(0.0), &ADMSvbic13::Model::rbp)
325  .setUnit(U_OHM)
326  .setDescription("parasitic transistor base resistance")
327 #ifdef Xyce_ADMS_SENSITIVITIES
328  .setAnalyticSensitivityAvailable(true)
329  .setSensitivityFunctor(&modSens)
330 #endif // Xyce_ADMS_SENSITIVITIES
331  ;
332  p.addPar("IS", static_cast<double>(1.0e-16), &ADMSvbic13::Model::is)
333  .setUnit(U_AMP)
334  .setDescription("transport saturation current")
335 #ifdef Xyce_ADMS_SENSITIVITIES
336  .setAnalyticSensitivityAvailable(true)
337  .setSensitivityFunctor(&modSens)
338 #endif // Xyce_ADMS_SENSITIVITIES
339  ;
340  p.addPar("ISRR", static_cast<double>(1.0), &ADMSvbic13::Model::isrr)
341  .setUnit(U_UNKNOWN)
342  .setDescription("ratio of is(reverse) to is(forward)")
343 #ifdef Xyce_ADMS_SENSITIVITIES
344  .setAnalyticSensitivityAvailable(true)
345  .setSensitivityFunctor(&modSens)
346 #endif // Xyce_ADMS_SENSITIVITIES
347  ;
348  p.addPar("NF", static_cast<double>(1.0), &ADMSvbic13::Model::nf)
349  .setUnit(U_UNKNOWN)
350  .setDescription("fwd emission coefficient (ideality factor)")
351 #ifdef Xyce_ADMS_SENSITIVITIES
352  .setAnalyticSensitivityAvailable(true)
353  .setSensitivityFunctor(&modSens)
354 #endif // Xyce_ADMS_SENSITIVITIES
355  ;
356  p.addPar("NR", static_cast<double>(1.0), &ADMSvbic13::Model::nr)
357  .setUnit(U_UNKNOWN)
358  .setDescription("rev emission coefficient (ideality factor)")
359 #ifdef Xyce_ADMS_SENSITIVITIES
360  .setAnalyticSensitivityAvailable(true)
361  .setSensitivityFunctor(&modSens)
362 #endif // Xyce_ADMS_SENSITIVITIES
363  ;
364  p.addPar("QBM", static_cast<int>(0), &ADMSvbic13::Model::qbm)
365  .setUnit(U_UNKNOWN)
366  .setDescription("base charge model selection switch: 0=GP and 1=SGP");
367  p.addPar("ISP", static_cast<double>(0.0), &ADMSvbic13::Model::isp)
368  .setUnit(U_AMP)
369  .setDescription("parasitic transport saturation current")
370 #ifdef Xyce_ADMS_SENSITIVITIES
371  .setAnalyticSensitivityAvailable(true)
372  .setSensitivityFunctor(&modSens)
373 #endif // Xyce_ADMS_SENSITIVITIES
374  ;
375  p.addPar("WSP", static_cast<double>(1.0), &ADMSvbic13::Model::wsp)
376  .setUnit(U_UNKNOWN)
377  .setDescription("partitioning of Iccp between Vbep and Vbci")
378 #ifdef Xyce_ADMS_SENSITIVITIES
379  .setAnalyticSensitivityAvailable(true)
380  .setSensitivityFunctor(&modSens)
381 #endif // Xyce_ADMS_SENSITIVITIES
382  ;
383  p.addPar("NFP", static_cast<double>(1.0), &ADMSvbic13::Model::nfp)
384  .setUnit(U_UNKNOWN)
385  .setDescription("parasitic emission coeff (ideality factor)")
386 #ifdef Xyce_ADMS_SENSITIVITIES
387  .setAnalyticSensitivityAvailable(true)
388  .setSensitivityFunctor(&modSens)
389 #endif // Xyce_ADMS_SENSITIVITIES
390  ;
391  p.addPar("FC", static_cast<double>(0.9), &ADMSvbic13::Model::fc)
392  .setUnit(U_UNKNOWN)
393  .setDescription("forward bias depletion capacitance limit")
394 #ifdef Xyce_ADMS_SENSITIVITIES
395  .setAnalyticSensitivityAvailable(true)
396  .setSensitivityFunctor(&modSens)
397 #endif // Xyce_ADMS_SENSITIVITIES
398  ;
399  p.addPar("CBEO", static_cast<double>(0.0), &ADMSvbic13::Model::cbeo)
400  .setUnit(U_FARAD)
401  .setDescription("extrinsic b-e overlap capacitance")
402 #ifdef Xyce_ADMS_SENSITIVITIES
403  .setAnalyticSensitivityAvailable(true)
404  .setSensitivityFunctor(&modSens)
405 #endif // Xyce_ADMS_SENSITIVITIES
406  ;
407  p.addPar("CJE", static_cast<double>(0.0), &ADMSvbic13::Model::cje)
408  .setUnit(U_FARAD)
409  .setDescription("zero-bias b-e depletion capacitance")
410 #ifdef Xyce_ADMS_SENSITIVITIES
411  .setAnalyticSensitivityAvailable(true)
412  .setSensitivityFunctor(&modSens)
413 #endif // Xyce_ADMS_SENSITIVITIES
414  ;
415  p.addPar("PE", static_cast<double>(0.75), &ADMSvbic13::Model::pe)
416  .setUnit(U_VOLT)
417  .setDescription("b-e built-in potential")
418 #ifdef Xyce_ADMS_SENSITIVITIES
419  .setAnalyticSensitivityAvailable(true)
420  .setSensitivityFunctor(&modSens)
421 #endif // Xyce_ADMS_SENSITIVITIES
422  ;
423  p.addPar("ME", static_cast<double>(0.33), &ADMSvbic13::Model::me)
424  .setUnit(U_UNKNOWN)
425  .setDescription("b-e grading coefficient")
426 #ifdef Xyce_ADMS_SENSITIVITIES
427  .setAnalyticSensitivityAvailable(true)
428  .setSensitivityFunctor(&modSens)
429 #endif // Xyce_ADMS_SENSITIVITIES
430  ;
431  p.addPar("AJE", static_cast<double>((-0.5)), &ADMSvbic13::Model::aje)
432  .setUnit(U_UNKNOWN)
433  .setDescription("b-e capacitance smoothing factor")
434 #ifdef Xyce_ADMS_SENSITIVITIES
435  .setAnalyticSensitivityAvailable(true)
436  .setSensitivityFunctor(&modSens)
437 #endif // Xyce_ADMS_SENSITIVITIES
438  ;
439  p.addPar("CBCO", static_cast<double>(0.0), &ADMSvbic13::Model::cbco)
440  .setUnit(U_FARAD)
441  .setDescription("extrinsic b-c overlap capacitance")
442 #ifdef Xyce_ADMS_SENSITIVITIES
443  .setAnalyticSensitivityAvailable(true)
444  .setSensitivityFunctor(&modSens)
445 #endif // Xyce_ADMS_SENSITIVITIES
446  ;
447  p.addPar("CJC", static_cast<double>(0.0), &ADMSvbic13::Model::cjc)
448  .setUnit(U_FARAD)
449  .setDescription("zero-bias b-c depletion capacitance")
450 #ifdef Xyce_ADMS_SENSITIVITIES
451  .setAnalyticSensitivityAvailable(true)
452  .setSensitivityFunctor(&modSens)
453 #endif // Xyce_ADMS_SENSITIVITIES
454  ;
455  p.addPar("PC", static_cast<double>(0.75), &ADMSvbic13::Model::pc)
456  .setUnit(U_VOLT)
457  .setDescription("b-c built-in potential")
458 #ifdef Xyce_ADMS_SENSITIVITIES
459  .setAnalyticSensitivityAvailable(true)
460  .setSensitivityFunctor(&modSens)
461 #endif // Xyce_ADMS_SENSITIVITIES
462  ;
463  p.addPar("MC", static_cast<double>(0.33), &ADMSvbic13::Model::mc)
464  .setUnit(U_UNKNOWN)
465  .setDescription("b-c grading coefficient")
466 #ifdef Xyce_ADMS_SENSITIVITIES
467  .setAnalyticSensitivityAvailable(true)
468  .setSensitivityFunctor(&modSens)
469 #endif // Xyce_ADMS_SENSITIVITIES
470  ;
471  p.addPar("AJC", static_cast<double>((-0.5)), &ADMSvbic13::Model::ajc)
472  .setUnit(U_UNKNOWN)
473  .setDescription("b-c capacitance smoothing factor")
474 #ifdef Xyce_ADMS_SENSITIVITIES
475  .setAnalyticSensitivityAvailable(true)
476  .setSensitivityFunctor(&modSens)
477 #endif // Xyce_ADMS_SENSITIVITIES
478  ;
479  p.addPar("VRT", static_cast<double>(0.0), &ADMSvbic13::Model::vrt)
480  .setUnit(U_VOLT)
481  .setDescription("reach-through voltage for Cbc limiting")
482 #ifdef Xyce_ADMS_SENSITIVITIES
483  .setAnalyticSensitivityAvailable(true)
484  .setSensitivityFunctor(&modSens)
485 #endif // Xyce_ADMS_SENSITIVITIES
486  ;
487  p.addPar("ART", static_cast<double>(0.1), &ADMSvbic13::Model::art)
488  .setUnit(U_UNKNOWN)
489  .setDescription("smoothing parameter for reach-through")
490 #ifdef Xyce_ADMS_SENSITIVITIES
491  .setAnalyticSensitivityAvailable(true)
492  .setSensitivityFunctor(&modSens)
493 #endif // Xyce_ADMS_SENSITIVITIES
494  ;
495  p.addPar("QCO", static_cast<double>(0.0), &ADMSvbic13::Model::qco)
496  .setUnit(U_COULOMB)
497  .setDescription("epi charge parameter")
498 #ifdef Xyce_ADMS_SENSITIVITIES
499  .setAnalyticSensitivityAvailable(true)
500  .setSensitivityFunctor(&modSens)
501 #endif // Xyce_ADMS_SENSITIVITIES
502  ;
503  p.addPar("CJEP", static_cast<double>(0.0), &ADMSvbic13::Model::cjep)
504  .setUnit(U_FARAD)
505  .setDescription("zero-bias extrinsic b-c depletion capacitance")
506 #ifdef Xyce_ADMS_SENSITIVITIES
507  .setAnalyticSensitivityAvailable(true)
508  .setSensitivityFunctor(&modSens)
509 #endif // Xyce_ADMS_SENSITIVITIES
510  ;
511  p.addPar("CJCP", static_cast<double>(0.0), &ADMSvbic13::Model::cjcp)
512  .setUnit(U_FARAD)
513  .setDescription("zero-bias extrinsic c-s depletion capacitance")
514 #ifdef Xyce_ADMS_SENSITIVITIES
515  .setAnalyticSensitivityAvailable(true)
516  .setSensitivityFunctor(&modSens)
517 #endif // Xyce_ADMS_SENSITIVITIES
518  ;
519  p.addPar("PS", static_cast<double>(0.75), &ADMSvbic13::Model::ps)
520  .setUnit(U_VOLT)
521  .setDescription("c-s built-in potential")
522 #ifdef Xyce_ADMS_SENSITIVITIES
523  .setAnalyticSensitivityAvailable(true)
524  .setSensitivityFunctor(&modSens)
525 #endif // Xyce_ADMS_SENSITIVITIES
526  ;
527  p.addPar("MS", static_cast<double>(0.33), &ADMSvbic13::Model::ms)
528  .setUnit(U_UNKNOWN)
529  .setDescription("c-s grading coefficient")
530 #ifdef Xyce_ADMS_SENSITIVITIES
531  .setAnalyticSensitivityAvailable(true)
532  .setSensitivityFunctor(&modSens)
533 #endif // Xyce_ADMS_SENSITIVITIES
534  ;
535  p.addPar("AJS", static_cast<double>((-0.5)), &ADMSvbic13::Model::ajs)
536  .setUnit(U_UNKNOWN)
537  .setDescription("c-s capacitance smoothing factor")
538 #ifdef Xyce_ADMS_SENSITIVITIES
539  .setAnalyticSensitivityAvailable(true)
540  .setSensitivityFunctor(&modSens)
541 #endif // Xyce_ADMS_SENSITIVITIES
542  ;
543  p.addPar("CCSO", static_cast<double>(0.0), &ADMSvbic13::Model::ccso)
544  .setUnit(U_FARAD)
545  .setDescription("extrinsic c-s overlap capacitance")
546 #ifdef Xyce_ADMS_SENSITIVITIES
547  .setAnalyticSensitivityAvailable(true)
548  .setSensitivityFunctor(&modSens)
549 #endif // Xyce_ADMS_SENSITIVITIES
550  ;
551  p.addPar("IBEI", static_cast<double>(1.0e-18), &ADMSvbic13::Model::ibei)
552  .setUnit(U_AMP)
553  .setDescription("ideal b-e saturation current")
554 #ifdef Xyce_ADMS_SENSITIVITIES
555  .setAnalyticSensitivityAvailable(true)
556  .setSensitivityFunctor(&modSens)
557 #endif // Xyce_ADMS_SENSITIVITIES
558  ;
559  p.addPar("WBE", static_cast<double>(1.0), &ADMSvbic13::Model::wbe)
560  .setUnit(U_UNKNOWN)
561  .setDescription("partitioning of Ibe/Ibex and Qbe/Qbex")
562 #ifdef Xyce_ADMS_SENSITIVITIES
563  .setAnalyticSensitivityAvailable(true)
564  .setSensitivityFunctor(&modSens)
565 #endif // Xyce_ADMS_SENSITIVITIES
566  ;
567  p.addPar("NEI", static_cast<double>(1.0), &ADMSvbic13::Model::nei)
568  .setUnit(U_UNKNOWN)
569  .setDescription("ideal b-e emission coefficient")
570 #ifdef Xyce_ADMS_SENSITIVITIES
571  .setAnalyticSensitivityAvailable(true)
572  .setSensitivityFunctor(&modSens)
573 #endif // Xyce_ADMS_SENSITIVITIES
574  ;
575  p.addPar("QNIBEIR", static_cast<double>(0.0), &ADMSvbic13::Model::qnibeir)
576  .setUnit(U_UNKNOWN)
577  .setDescription("ideal b-e quasi-neutral base recombination parameter")
578 #ifdef Xyce_ADMS_SENSITIVITIES
579  .setAnalyticSensitivityAvailable(true)
580  .setSensitivityFunctor(&modSens)
581 #endif // Xyce_ADMS_SENSITIVITIES
582  ;
583  p.addPar("IBEN", static_cast<double>(0.0), &ADMSvbic13::Model::iben)
584  .setUnit(U_AMP)
585  .setDescription("non-ideal b-e saturation current")
586 #ifdef Xyce_ADMS_SENSITIVITIES
587  .setAnalyticSensitivityAvailable(true)
588  .setSensitivityFunctor(&modSens)
589 #endif // Xyce_ADMS_SENSITIVITIES
590  ;
591  p.addPar("NEN", static_cast<double>(2.0), &ADMSvbic13::Model::nen)
592  .setUnit(U_UNKNOWN)
593  .setDescription("non-ideal b-e emission coefficient")
594 #ifdef Xyce_ADMS_SENSITIVITIES
595  .setAnalyticSensitivityAvailable(true)
596  .setSensitivityFunctor(&modSens)
597 #endif // Xyce_ADMS_SENSITIVITIES
598  ;
599  p.addPar("IBCI", static_cast<double>(1.0e-16), &ADMSvbic13::Model::ibci)
600  .setUnit(U_AMP)
601  .setDescription("ideal b-c saturation current")
602 #ifdef Xyce_ADMS_SENSITIVITIES
603  .setAnalyticSensitivityAvailable(true)
604  .setSensitivityFunctor(&modSens)
605 #endif // Xyce_ADMS_SENSITIVITIES
606  ;
607  p.addPar("NCI", static_cast<double>(1.0), &ADMSvbic13::Model::nci)
608  .setUnit(U_UNKNOWN)
609  .setDescription("ideal b-c emission coefficient")
610 #ifdef Xyce_ADMS_SENSITIVITIES
611  .setAnalyticSensitivityAvailable(true)
612  .setSensitivityFunctor(&modSens)
613 #endif // Xyce_ADMS_SENSITIVITIES
614  ;
615  p.addPar("IBCN", static_cast<double>(0.0), &ADMSvbic13::Model::ibcn)
616  .setUnit(U_AMP)
617  .setDescription("non-ideal b-c saturation current")
618 #ifdef Xyce_ADMS_SENSITIVITIES
619  .setAnalyticSensitivityAvailable(true)
620  .setSensitivityFunctor(&modSens)
621 #endif // Xyce_ADMS_SENSITIVITIES
622  ;
623  p.addPar("NCN", static_cast<double>(2.0), &ADMSvbic13::Model::ncn)
624  .setUnit(U_UNKNOWN)
625  .setDescription("non-ideal b-c emission coefficient")
626 #ifdef Xyce_ADMS_SENSITIVITIES
627  .setAnalyticSensitivityAvailable(true)
628  .setSensitivityFunctor(&modSens)
629 #endif // Xyce_ADMS_SENSITIVITIES
630  ;
631  p.addPar("IBEIP", static_cast<double>(0.0), &ADMSvbic13::Model::ibeip)
632  .setUnit(U_AMP)
633  .setDescription("ideal parasitic b-e saturation current")
634 #ifdef Xyce_ADMS_SENSITIVITIES
635  .setAnalyticSensitivityAvailable(true)
636  .setSensitivityFunctor(&modSens)
637 #endif // Xyce_ADMS_SENSITIVITIES
638  ;
639  p.addPar("IBENP", static_cast<double>(0.0), &ADMSvbic13::Model::ibenp)
640  .setUnit(U_AMP)
641  .setDescription("non-ideal parasitic b-e saturation current")
642 #ifdef Xyce_ADMS_SENSITIVITIES
643  .setAnalyticSensitivityAvailable(true)
644  .setSensitivityFunctor(&modSens)
645 #endif // Xyce_ADMS_SENSITIVITIES
646  ;
647  p.addPar("IBCIP", static_cast<double>(0.0), &ADMSvbic13::Model::ibcip)
648  .setUnit(U_AMP)
649  .setDescription("ideal parasitic b-c saturation current")
650 #ifdef Xyce_ADMS_SENSITIVITIES
651  .setAnalyticSensitivityAvailable(true)
652  .setSensitivityFunctor(&modSens)
653 #endif // Xyce_ADMS_SENSITIVITIES
654  ;
655  p.addPar("NCIP", static_cast<double>(1.0), &ADMSvbic13::Model::ncip)
656  .setUnit(U_UNKNOWN)
657  .setDescription("ideal parasitic b-c emission coefficient")
658 #ifdef Xyce_ADMS_SENSITIVITIES
659  .setAnalyticSensitivityAvailable(true)
660  .setSensitivityFunctor(&modSens)
661 #endif // Xyce_ADMS_SENSITIVITIES
662  ;
663  p.addPar("IBCNP", static_cast<double>(0.0), &ADMSvbic13::Model::ibcnp)
664  .setUnit(U_AMP)
665  .setDescription("non-ideal parasitic b-c saturation current")
666 #ifdef Xyce_ADMS_SENSITIVITIES
667  .setAnalyticSensitivityAvailable(true)
668  .setSensitivityFunctor(&modSens)
669 #endif // Xyce_ADMS_SENSITIVITIES
670  ;
671  p.addPar("NCNP", static_cast<double>(2.0), &ADMSvbic13::Model::ncnp)
672  .setUnit(U_UNKNOWN)
673  .setDescription("non-ideal parasitic b-c emission coefficient")
674 #ifdef Xyce_ADMS_SENSITIVITIES
675  .setAnalyticSensitivityAvailable(true)
676  .setSensitivityFunctor(&modSens)
677 #endif // Xyce_ADMS_SENSITIVITIES
678  ;
679  p.addPar("VEF", static_cast<double>(0.0), &ADMSvbic13::Model::vef)
680  .setUnit(U_VOLT)
681  .setDescription("forward Early voltage (zero=infinite)")
682 #ifdef Xyce_ADMS_SENSITIVITIES
683  .setAnalyticSensitivityAvailable(true)
684  .setSensitivityFunctor(&modSens)
685 #endif // Xyce_ADMS_SENSITIVITIES
686  ;
687  p.addPar("VER", static_cast<double>(0.0), &ADMSvbic13::Model::ver)
688  .setUnit(U_VOLT)
689  .setDescription("reverse Early voltage (zero=infinite)")
690 #ifdef Xyce_ADMS_SENSITIVITIES
691  .setAnalyticSensitivityAvailable(true)
692  .setSensitivityFunctor(&modSens)
693 #endif // Xyce_ADMS_SENSITIVITIES
694  ;
695  p.addPar("IKF", static_cast<double>(0.0), &ADMSvbic13::Model::ikf)
696  .setUnit(U_AMP)
697  .setDescription("forward knee current (zero=infinite)")
698 #ifdef Xyce_ADMS_SENSITIVITIES
699  .setAnalyticSensitivityAvailable(true)
700  .setSensitivityFunctor(&modSens)
701 #endif // Xyce_ADMS_SENSITIVITIES
702  ;
703  p.addPar("NKF", static_cast<double>(0.5), &ADMSvbic13::Model::nkf)
704  .setUnit(U_UNKNOWN)
705  .setDescription("high current beta roll-off parameter")
706 #ifdef Xyce_ADMS_SENSITIVITIES
707  .setAnalyticSensitivityAvailable(true)
708  .setSensitivityFunctor(&modSens)
709 #endif // Xyce_ADMS_SENSITIVITIES
710  ;
711  p.addPar("IKR", static_cast<double>(0.0), &ADMSvbic13::Model::ikr)
712  .setUnit(U_AMP)
713  .setDescription("reverse knee current (zero=infinite)")
714 #ifdef Xyce_ADMS_SENSITIVITIES
715  .setAnalyticSensitivityAvailable(true)
716  .setSensitivityFunctor(&modSens)
717 #endif // Xyce_ADMS_SENSITIVITIES
718  ;
719  p.addPar("IKP", static_cast<double>(0.0), &ADMSvbic13::Model::ikp)
720  .setUnit(U_AMP)
721  .setDescription("parasitic knee current (zero=infinite)")
722 #ifdef Xyce_ADMS_SENSITIVITIES
723  .setAnalyticSensitivityAvailable(true)
724  .setSensitivityFunctor(&modSens)
725 #endif // Xyce_ADMS_SENSITIVITIES
726  ;
727  p.addPar("TF", static_cast<double>(0.0), &ADMSvbic13::Model::tf)
728  .setUnit(U_SECOND)
729  .setDescription("forward transit time")
730 #ifdef Xyce_ADMS_SENSITIVITIES
731  .setAnalyticSensitivityAvailable(true)
732  .setSensitivityFunctor(&modSens)
733 #endif // Xyce_ADMS_SENSITIVITIES
734  ;
735  p.addPar("QTF", static_cast<double>(0.0), &ADMSvbic13::Model::qtf)
736  .setUnit(U_UNKNOWN)
737  .setDescription("variation of tf with base-width modulation")
738 #ifdef Xyce_ADMS_SENSITIVITIES
739  .setAnalyticSensitivityAvailable(true)
740  .setSensitivityFunctor(&modSens)
741 #endif // Xyce_ADMS_SENSITIVITIES
742  ;
743  p.addPar("XTF", static_cast<double>(0.0), &ADMSvbic13::Model::xtf)
744  .setUnit(U_UNKNOWN)
745  .setDescription("tf bias dependence coefficient")
746 #ifdef Xyce_ADMS_SENSITIVITIES
747  .setAnalyticSensitivityAvailable(true)
748  .setSensitivityFunctor(&modSens)
749 #endif // Xyce_ADMS_SENSITIVITIES
750  ;
751  p.addPar("VTF", static_cast<double>(0.0), &ADMSvbic13::Model::vtf)
752  .setUnit(U_VOLT)
753  .setDescription("tf coefficient of Vbci dependence")
754 #ifdef Xyce_ADMS_SENSITIVITIES
755  .setAnalyticSensitivityAvailable(true)
756  .setSensitivityFunctor(&modSens)
757 #endif // Xyce_ADMS_SENSITIVITIES
758  ;
759  p.addPar("ITF", static_cast<double>(0.0), &ADMSvbic13::Model::itf)
760  .setUnit(U_AMP)
761  .setDescription("tf coefficient of Ic dependence")
762 #ifdef Xyce_ADMS_SENSITIVITIES
763  .setAnalyticSensitivityAvailable(true)
764  .setSensitivityFunctor(&modSens)
765 #endif // Xyce_ADMS_SENSITIVITIES
766  ;
767  p.addPar("TR", static_cast<double>(0.0), &ADMSvbic13::Model::tr)
768  .setUnit(U_SECOND)
769  .setDescription("reverse transit time")
770 #ifdef Xyce_ADMS_SENSITIVITIES
771  .setAnalyticSensitivityAvailable(true)
772  .setSensitivityFunctor(&modSens)
773 #endif // Xyce_ADMS_SENSITIVITIES
774  ;
775  p.addPar("TD", static_cast<double>(0.0), &ADMSvbic13::Model::td)
776  .setUnit(U_SECOND)
777  .setDescription("forward excess-phase delay time")
778 #ifdef Xyce_ADMS_SENSITIVITIES
779  .setAnalyticSensitivityAvailable(true)
780  .setSensitivityFunctor(&modSens)
781 #endif // Xyce_ADMS_SENSITIVITIES
782  ;
783  p.addPar("AVC1", static_cast<double>(0.0), &ADMSvbic13::Model::avc1)
784  .setUnit(U_VOLTM1)
785  .setDescription("b-c weak avalanche parameter 1")
786 #ifdef Xyce_ADMS_SENSITIVITIES
787  .setAnalyticSensitivityAvailable(true)
788  .setSensitivityFunctor(&modSens)
789 #endif // Xyce_ADMS_SENSITIVITIES
790  ;
791  p.addPar("AVC2", static_cast<double>(0.0), &ADMSvbic13::Model::avc2)
792  .setUnit(U_UNKNOWN)
793  .setDescription("b-c weak avalanche parameter 2")
794 #ifdef Xyce_ADMS_SENSITIVITIES
795  .setAnalyticSensitivityAvailable(true)
796  .setSensitivityFunctor(&modSens)
797 #endif // Xyce_ADMS_SENSITIVITIES
798  ;
799  p.addPar("AVCX1", static_cast<double>(0.0), &ADMSvbic13::Model::avcx1)
800  .setUnit(U_VOLTM1)
801  .setDescription("bx-cx weak avalanche parameter 1")
802 #ifdef Xyce_ADMS_SENSITIVITIES
803  .setAnalyticSensitivityAvailable(true)
804  .setSensitivityFunctor(&modSens)
805 #endif // Xyce_ADMS_SENSITIVITIES
806  ;
807  p.addPar("AVCX2", static_cast<double>(0.0), &ADMSvbic13::Model::avcx2)
808  .setUnit(U_UNKNOWN)
809  .setDescription("bx-cx weak avalanche parameter 2")
810 #ifdef Xyce_ADMS_SENSITIVITIES
811  .setAnalyticSensitivityAvailable(true)
812  .setSensitivityFunctor(&modSens)
813 #endif // Xyce_ADMS_SENSITIVITIES
814  ;
815  p.addPar("MCX", static_cast<double>(0.33), &ADMSvbic13::Model::mcx)
816  .setUnit(U_UNKNOWN)
817  .setDescription("bx-cx grading coefficient for avalanche")
818 #ifdef Xyce_ADMS_SENSITIVITIES
819  .setAnalyticSensitivityAvailable(true)
820  .setSensitivityFunctor(&modSens)
821 #endif // Xyce_ADMS_SENSITIVITIES
822  ;
823  p.addPar("VBBE", static_cast<double>(0.0), &ADMSvbic13::Model::vbbe)
824  .setUnit(U_VOLT)
825  .setDescription("b-e breakdown voltage")
826 #ifdef Xyce_ADMS_SENSITIVITIES
827  .setAnalyticSensitivityAvailable(true)
828  .setSensitivityFunctor(&modSens)
829 #endif // Xyce_ADMS_SENSITIVITIES
830  ;
831  p.addPar("NBBE", static_cast<double>(1.0), &ADMSvbic13::Model::nbbe)
832  .setUnit(U_UNKNOWN)
833  .setDescription("b-e breakdown emission coefficient")
834 #ifdef Xyce_ADMS_SENSITIVITIES
835  .setAnalyticSensitivityAvailable(true)
836  .setSensitivityFunctor(&modSens)
837 #endif // Xyce_ADMS_SENSITIVITIES
838  ;
839  p.addPar("IBBE", static_cast<double>(1.0e-06), &ADMSvbic13::Model::ibbe)
840  .setUnit(U_AMP)
841  .setDescription("b-e breakdown current")
842 #ifdef Xyce_ADMS_SENSITIVITIES
843  .setAnalyticSensitivityAvailable(true)
844  .setSensitivityFunctor(&modSens)
845 #endif // Xyce_ADMS_SENSITIVITIES
846  ;
847  p.addPar("TVBBE1", static_cast<double>(0.0), &ADMSvbic13::Model::tvbbe1)
848  .setUnit(U_DEGCM1)
849  .setDescription("linear temperature coefficient of vbbe")
850 #ifdef Xyce_ADMS_SENSITIVITIES
851  .setAnalyticSensitivityAvailable(true)
852  .setSensitivityFunctor(&modSens)
853 #endif // Xyce_ADMS_SENSITIVITIES
854  ;
855  p.addPar("TVBBE2", static_cast<double>(0.0), &ADMSvbic13::Model::tvbbe2)
856  .setUnit(U_UNKNOWN)
857  .setDescription("quadratic temperature coefficient of vbbe")
858 #ifdef Xyce_ADMS_SENSITIVITIES
859  .setAnalyticSensitivityAvailable(true)
860  .setSensitivityFunctor(&modSens)
861 #endif // Xyce_ADMS_SENSITIVITIES
862  ;
863  p.addPar("TNBBE", static_cast<double>(0.0), &ADMSvbic13::Model::tnbbe)
864  .setUnit(U_DEGCM1)
865  .setDescription("temperature coefficient of nbbe")
866 #ifdef Xyce_ADMS_SENSITIVITIES
867  .setAnalyticSensitivityAvailable(true)
868  .setSensitivityFunctor(&modSens)
869 #endif // Xyce_ADMS_SENSITIVITIES
870  ;
871  p.addPar("VPTE", static_cast<double>(0.0), &ADMSvbic13::Model::vpte)
872  .setUnit(U_VOLT)
873  .setDescription("SiGe base current kink voltage")
874 #ifdef Xyce_ADMS_SENSITIVITIES
875  .setAnalyticSensitivityAvailable(true)
876  .setSensitivityFunctor(&modSens)
877 #endif // Xyce_ADMS_SENSITIVITIES
878  ;
879  p.addPar("IBK0", static_cast<double>(0.0), &ADMSvbic13::Model::ibk0)
880  .setUnit(U_AMP)
881  .setDescription("SiGe base current kink current reference")
882 #ifdef Xyce_ADMS_SENSITIVITIES
883  .setAnalyticSensitivityAvailable(true)
884  .setSensitivityFunctor(&modSens)
885 #endif // Xyce_ADMS_SENSITIVITIES
886  ;
887  p.addPar("ABK", static_cast<double>(1.0), &ADMSvbic13::Model::abk)
888  .setUnit(U_UNKNOWN)
889  .setDescription("SiGe base current kink exponent")
890 #ifdef Xyce_ADMS_SENSITIVITIES
891  .setAnalyticSensitivityAvailable(true)
892  .setSensitivityFunctor(&modSens)
893 #endif // Xyce_ADMS_SENSITIVITIES
894  ;
895  p.addPar("BBK", static_cast<double>(0.0), &ADMSvbic13::Model::bbk)
896  .setUnit(U_AMP)
897  .setDescription("SiGe base current kink current factor")
898 #ifdef Xyce_ADMS_SENSITIVITIES
899  .setAnalyticSensitivityAvailable(true)
900  .setSensitivityFunctor(&modSens)
901 #endif // Xyce_ADMS_SENSITIVITIES
902  ;
903  p.addPar("KFN", static_cast<double>(0.0), &ADMSvbic13::Model::kfn)
904  .setUnit(U_UNKNOWN)
905  .setDescription("b-e flicker noise constant")
906 #ifdef Xyce_ADMS_SENSITIVITIES
907  .setAnalyticSensitivityAvailable(true)
908  .setSensitivityFunctor(&modSens)
909 #endif // Xyce_ADMS_SENSITIVITIES
910  ;
911  p.addPar("AFN", static_cast<double>(1.0), &ADMSvbic13::Model::afn)
912  .setUnit(U_UNKNOWN)
913  .setDescription("b-e flicker noise current exponent")
914 #ifdef Xyce_ADMS_SENSITIVITIES
915  .setAnalyticSensitivityAvailable(true)
916  .setSensitivityFunctor(&modSens)
917 #endif // Xyce_ADMS_SENSITIVITIES
918  ;
919  p.addPar("BFN", static_cast<double>(1.0), &ADMSvbic13::Model::bfn)
920  .setUnit(U_UNKNOWN)
921  .setDescription("b-e flicker noise 1/f exponent")
922 #ifdef Xyce_ADMS_SENSITIVITIES
923  .setAnalyticSensitivityAvailable(true)
924  .setSensitivityFunctor(&modSens)
925 #endif // Xyce_ADMS_SENSITIVITIES
926  ;
927  p.addPar("RTH", static_cast<double>(0.0), &ADMSvbic13::Model::rth)
928  .setUnit(U_UNKNOWN)
929  .setDescription("thermal resistance")
930 #ifdef Xyce_ADMS_SENSITIVITIES
931  .setAnalyticSensitivityAvailable(true)
932  .setSensitivityFunctor(&modSens)
933 #endif // Xyce_ADMS_SENSITIVITIES
934  ;
935  p.addPar("CTH", static_cast<double>(0.0), &ADMSvbic13::Model::cth)
936  .setUnit(U_UNKNOWN)
937  .setDescription("thermal capacitance")
938 #ifdef Xyce_ADMS_SENSITIVITIES
939  .setAnalyticSensitivityAvailable(true)
940  .setSensitivityFunctor(&modSens)
941 #endif // Xyce_ADMS_SENSITIVITIES
942  ;
943  p.addPar("XRE", static_cast<double>(0.0), &ADMSvbic13::Model::xre)
944  .setUnit(U_UNKNOWN)
945  .setDescription("temperature exponent of re")
946 #ifdef Xyce_ADMS_SENSITIVITIES
947  .setAnalyticSensitivityAvailable(true)
948  .setSensitivityFunctor(&modSens)
949 #endif // Xyce_ADMS_SENSITIVITIES
950  ;
951  p.addPar("XRB", static_cast<double>(0.0), &ADMSvbic13::Model::xrb)
952  .setUnit(U_UNKNOWN)
953  .setDescription("temperature exponent of rbx and rbi")
954 #ifdef Xyce_ADMS_SENSITIVITIES
955  .setAnalyticSensitivityAvailable(true)
956  .setSensitivityFunctor(&modSens)
957 #endif // Xyce_ADMS_SENSITIVITIES
958  ;
959  p.addPar("XRBI", static_cast<double>(0.0), &ADMSvbic13::Model::xrbi)
960  .setUnit(U_UNKNOWN)
961  .setDescription("temperature exponent of rbi (overrides xrb)")
962 #ifdef Xyce_ADMS_SENSITIVITIES
963  .setAnalyticSensitivityAvailable(true)
964  .setSensitivityFunctor(&modSens)
965 #endif // Xyce_ADMS_SENSITIVITIES
966  ;
967  p.addPar("XRBX", static_cast<double>(0.0), &ADMSvbic13::Model::xrbx)
968  .setUnit(U_UNKNOWN)
969  .setDescription("temperature exponent of rbx (overrides xrb)")
970 #ifdef Xyce_ADMS_SENSITIVITIES
971  .setAnalyticSensitivityAvailable(true)
972  .setSensitivityFunctor(&modSens)
973 #endif // Xyce_ADMS_SENSITIVITIES
974  ;
975  p.addPar("XRC", static_cast<double>(0.0), &ADMSvbic13::Model::xrc)
976  .setUnit(U_UNKNOWN)
977  .setDescription("temperature exponent of rci and rcx and rbp")
978 #ifdef Xyce_ADMS_SENSITIVITIES
979  .setAnalyticSensitivityAvailable(true)
980  .setSensitivityFunctor(&modSens)
981 #endif // Xyce_ADMS_SENSITIVITIES
982  ;
983  p.addPar("XRCI", static_cast<double>(0.0), &ADMSvbic13::Model::xrci)
984  .setUnit(U_UNKNOWN)
985  .setDescription("temperature exponent of rci (overrides xrc)")
986 #ifdef Xyce_ADMS_SENSITIVITIES
987  .setAnalyticSensitivityAvailable(true)
988  .setSensitivityFunctor(&modSens)
989 #endif // Xyce_ADMS_SENSITIVITIES
990  ;
991  p.addPar("XRCX", static_cast<double>(0.0), &ADMSvbic13::Model::xrcx)
992  .setUnit(U_UNKNOWN)
993  .setDescription("temperature exponent of rcx (overrides xrc)")
994 #ifdef Xyce_ADMS_SENSITIVITIES
995  .setAnalyticSensitivityAvailable(true)
996  .setSensitivityFunctor(&modSens)
997 #endif // Xyce_ADMS_SENSITIVITIES
998  ;
999  p.addPar("XRBP", static_cast<double>(0.0), &ADMSvbic13::Model::xrbp)
1000  .setUnit(U_UNKNOWN)
1001  .setDescription("temperature exponent of rbp (overrides xrc)")
1002 #ifdef Xyce_ADMS_SENSITIVITIES
1003  .setAnalyticSensitivityAvailable(true)
1004  .setSensitivityFunctor(&modSens)
1005 #endif // Xyce_ADMS_SENSITIVITIES
1006  ;
1007  p.addPar("XRS", static_cast<double>(0.0), &ADMSvbic13::Model::xrs)
1008  .setUnit(U_UNKNOWN)
1009  .setDescription("temperature exponent of rs")
1010 #ifdef Xyce_ADMS_SENSITIVITIES
1011  .setAnalyticSensitivityAvailable(true)
1012  .setSensitivityFunctor(&modSens)
1013 #endif // Xyce_ADMS_SENSITIVITIES
1014  ;
1015  p.addPar("XVO", static_cast<double>(0.0), &ADMSvbic13::Model::xvo)
1016  .setUnit(U_UNKNOWN)
1017  .setDescription("temperature exponent of vo")
1018 #ifdef Xyce_ADMS_SENSITIVITIES
1019  .setAnalyticSensitivityAvailable(true)
1020  .setSensitivityFunctor(&modSens)
1021 #endif // Xyce_ADMS_SENSITIVITIES
1022  ;
1023  p.addPar("EA", static_cast<double>(1.12), &ADMSvbic13::Model::ea)
1024  .setUnit(U_VOLT)
1025  .setDescription("activation energy for is")
1026 #ifdef Xyce_ADMS_SENSITIVITIES
1027  .setAnalyticSensitivityAvailable(true)
1028  .setSensitivityFunctor(&modSens)
1029 #endif // Xyce_ADMS_SENSITIVITIES
1030  ;
1031  p.addPar("EAIE", static_cast<double>(1.12), &ADMSvbic13::Model::eaie)
1032  .setUnit(U_VOLT)
1033  .setDescription("activation energy for ibei")
1034 #ifdef Xyce_ADMS_SENSITIVITIES
1035  .setAnalyticSensitivityAvailable(true)
1036  .setSensitivityFunctor(&modSens)
1037 #endif // Xyce_ADMS_SENSITIVITIES
1038  ;
1039  p.addPar("EAIC", static_cast<double>(1.12), &ADMSvbic13::Model::eaic)
1040  .setUnit(U_VOLT)
1041  .setDescription("activation energy for ibci and ibeip")
1042 #ifdef Xyce_ADMS_SENSITIVITIES
1043  .setAnalyticSensitivityAvailable(true)
1044  .setSensitivityFunctor(&modSens)
1045 #endif // Xyce_ADMS_SENSITIVITIES
1046  ;
1047  p.addPar("EAIS", static_cast<double>(1.12), &ADMSvbic13::Model::eais)
1048  .setUnit(U_VOLT)
1049  .setDescription("activation energy for ibcip")
1050 #ifdef Xyce_ADMS_SENSITIVITIES
1051  .setAnalyticSensitivityAvailable(true)
1052  .setSensitivityFunctor(&modSens)
1053 #endif // Xyce_ADMS_SENSITIVITIES
1054  ;
1055  p.addPar("EANE", static_cast<double>(1.12), &ADMSvbic13::Model::eane)
1056  .setUnit(U_VOLT)
1057  .setDescription("activation energy for iben")
1058 #ifdef Xyce_ADMS_SENSITIVITIES
1059  .setAnalyticSensitivityAvailable(true)
1060  .setSensitivityFunctor(&modSens)
1061 #endif // Xyce_ADMS_SENSITIVITIES
1062  ;
1063  p.addPar("EANC", static_cast<double>(1.12), &ADMSvbic13::Model::eanc)
1064  .setUnit(U_VOLT)
1065  .setDescription("activation energy for ibcn and ibenp")
1066 #ifdef Xyce_ADMS_SENSITIVITIES
1067  .setAnalyticSensitivityAvailable(true)
1068  .setSensitivityFunctor(&modSens)
1069 #endif // Xyce_ADMS_SENSITIVITIES
1070  ;
1071  p.addPar("EANS", static_cast<double>(1.12), &ADMSvbic13::Model::eans)
1072  .setUnit(U_VOLT)
1073  .setDescription("activation energy for ibcnp")
1074 #ifdef Xyce_ADMS_SENSITIVITIES
1075  .setAnalyticSensitivityAvailable(true)
1076  .setSensitivityFunctor(&modSens)
1077 #endif // Xyce_ADMS_SENSITIVITIES
1078  ;
1079  p.addPar("EAP", static_cast<double>(1.12), &ADMSvbic13::Model::eap)
1080  .setUnit(U_VOLT)
1081  .setDescription("activation energy for isp")
1082 #ifdef Xyce_ADMS_SENSITIVITIES
1083  .setAnalyticSensitivityAvailable(true)
1084  .setSensitivityFunctor(&modSens)
1085 #endif // Xyce_ADMS_SENSITIVITIES
1086  ;
1087  p.addPar("DEAR", static_cast<double>(0.0), &ADMSvbic13::Model::dear)
1088  .setUnit(U_VOLT)
1089  .setDescription("delta activation energy for isrr")
1090 #ifdef Xyce_ADMS_SENSITIVITIES
1091  .setAnalyticSensitivityAvailable(true)
1092  .setSensitivityFunctor(&modSens)
1093 #endif // Xyce_ADMS_SENSITIVITIES
1094  ;
1095  p.addPar("XIS", static_cast<double>(3.0), &ADMSvbic13::Model::xis)
1096  .setUnit(U_UNKNOWN)
1097  .setDescription("temperature exponent of is")
1098 #ifdef Xyce_ADMS_SENSITIVITIES
1099  .setAnalyticSensitivityAvailable(true)
1100  .setSensitivityFunctor(&modSens)
1101 #endif // Xyce_ADMS_SENSITIVITIES
1102  ;
1103  p.addPar("XII", static_cast<double>(3.0), &ADMSvbic13::Model::xii)
1104  .setUnit(U_UNKNOWN)
1105  .setDescription("temperature exponent of ibei, ibci, ibeip, ibcip")
1106 #ifdef Xyce_ADMS_SENSITIVITIES
1107  .setAnalyticSensitivityAvailable(true)
1108  .setSensitivityFunctor(&modSens)
1109 #endif // Xyce_ADMS_SENSITIVITIES
1110  ;
1111  p.addPar("XIN", static_cast<double>(3.0), &ADMSvbic13::Model::xin)
1112  .setUnit(U_UNKNOWN)
1113  .setDescription("temperature exponent of iben, ibcn, ibenp, ibcnp")
1114 #ifdef Xyce_ADMS_SENSITIVITIES
1115  .setAnalyticSensitivityAvailable(true)
1116  .setSensitivityFunctor(&modSens)
1117 #endif // Xyce_ADMS_SENSITIVITIES
1118  ;
1119  p.addPar("XISR", static_cast<double>(0.0), &ADMSvbic13::Model::xisr)
1120  .setUnit(U_UNKNOWN)
1121  .setDescription("temperature exponent for isrr")
1122 #ifdef Xyce_ADMS_SENSITIVITIES
1123  .setAnalyticSensitivityAvailable(true)
1124  .setSensitivityFunctor(&modSens)
1125 #endif // Xyce_ADMS_SENSITIVITIES
1126  ;
1127  p.addPar("XIKF", static_cast<double>(0.0), &ADMSvbic13::Model::xikf)
1128  .setUnit(U_UNKNOWN)
1129  .setDescription("temperature exponent of ikf")
1130 #ifdef Xyce_ADMS_SENSITIVITIES
1131  .setAnalyticSensitivityAvailable(true)
1132  .setSensitivityFunctor(&modSens)
1133 #endif // Xyce_ADMS_SENSITIVITIES
1134  ;
1135  p.addPar("TAVC", static_cast<double>(0.0), &ADMSvbic13::Model::tavc)
1136  .setUnit(U_DEGCM1)
1137  .setDescription("temperature exponent of avc2")
1138 #ifdef Xyce_ADMS_SENSITIVITIES
1139  .setAnalyticSensitivityAvailable(true)
1140  .setSensitivityFunctor(&modSens)
1141 #endif // Xyce_ADMS_SENSITIVITIES
1142  ;
1143  p.addPar("TAVCX", static_cast<double>(0.0), &ADMSvbic13::Model::tavcx)
1144  .setUnit(U_DEGCM1)
1145  .setDescription("temperature exponent of avcx2")
1146 #ifdef Xyce_ADMS_SENSITIVITIES
1147  .setAnalyticSensitivityAvailable(true)
1148  .setSensitivityFunctor(&modSens)
1149 #endif // Xyce_ADMS_SENSITIVITIES
1150  ;
1151  p.addPar("TNF", static_cast<double>(0.0), &ADMSvbic13::Model::tnf)
1152  .setUnit(U_DEGCM1)
1153  .setDescription("temperature exponent of nf and nr")
1154 #ifdef Xyce_ADMS_SENSITIVITIES
1155  .setAnalyticSensitivityAvailable(true)
1156  .setSensitivityFunctor(&modSens)
1157 #endif // Xyce_ADMS_SENSITIVITIES
1158  ;
1159  p.addPar("TCVEF", static_cast<double>(0.0), &ADMSvbic13::Model::tcvef)
1160  .setUnit(U_DEGCM1)
1161  .setDescription("temperature exponent of vef")
1162 #ifdef Xyce_ADMS_SENSITIVITIES
1163  .setAnalyticSensitivityAvailable(true)
1164  .setSensitivityFunctor(&modSens)
1165 #endif // Xyce_ADMS_SENSITIVITIES
1166  ;
1167  p.addPar("TCVER", static_cast<double>(0.0), &ADMSvbic13::Model::tcver)
1168  .setUnit(U_DEGCM1)
1169  .setDescription("temperature exponent of ver")
1170 #ifdef Xyce_ADMS_SENSITIVITIES
1171  .setAnalyticSensitivityAvailable(true)
1172  .setSensitivityFunctor(&modSens)
1173 #endif // Xyce_ADMS_SENSITIVITIES
1174  ;
1175  p.addPar("TCRTH", static_cast<double>(0.0), &ADMSvbic13::Model::tcrth)
1176  .setUnit(U_DEGCM1)
1177  .setDescription("temperature exponent of rth")
1178 #ifdef Xyce_ADMS_SENSITIVITIES
1179  .setAnalyticSensitivityAvailable(true)
1180  .setSensitivityFunctor(&modSens)
1181 #endif // Xyce_ADMS_SENSITIVITIES
1182  ;
1183 
1184 }
1185 
1186 //-----------------------------------------------------------------------------
1187 // Function : Instance::processParams
1188 // Purpose :
1189 // Special Notes :
1190 // Scope : public
1191 // Creator : admsXml
1192 // Creation Date :
1193 //-----------------------------------------------------------------------------
1195 {
1196  // set any non-constant parameter defaults
1197 
1198  // copy any model variables that have associated instance variables, but
1199  // are only given in the model card:
1200 
1201 
1202 
1203  // Set any parameters that were not given and whose defaults depend on other
1204  // parameters:
1205 
1206 
1207  // Now we need to check that any parameters are within their ranges as
1208  // specified in the verilog:
1209 
1210  // Parameter m : ] 0.0, (+inf) [
1211  if ( (!((m >0.0))) )
1212  {
1213  UserError0(*this) << "ADMSvbic13: Parameter m value " << m << " out of range ] 0.0, (+inf) [";
1214  }
1215 
1216  // Parameter sw_noise : [ 0, 1 ]
1217  if ( (!((sw_noise >=0 && sw_noise <=1 ))) )
1218  {
1219  UserError0(*this) << "ADMSvbic13: Parameter sw_noise value " << sw_noise << " out of range [ 0, 1 ]";
1220  }
1221 
1222  // Parameter sw_et : [ 0, 1 ]
1223  if ( (!((sw_et >=0 && sw_et <=1 ))) )
1224  {
1225  UserError0(*this) << "ADMSvbic13: Parameter sw_et value " << sw_et << " out of range [ 0, 1 ]";
1226  }
1227 
1228 
1229  // this seems a little stupid, but verilog models that use $temperature
1230  // don't also use a defined parameter "Temp", and count on $temperature
1231  // to be the one the simulator wants:
1232 
1234 
1235  // and of course, this routine is where we should put the initial_instance
1236  // stuff
1237 
1238 
1239  return true;
1240 }
1241 
1242 //-----------------------------------------------------------------------------
1243 // Function : Instance::Instance
1244 // Purpose : "instance block" constructor
1245 // Special Notes :
1246 // Scope : public
1247 // Creator : admsXml
1248 // Creation Date :
1249 //-----------------------------------------------------------------------------
1250 
1252  const Configuration & configuration,
1253  const InstanceBlock & instance_block,
1254  Model & model,
1255  const FactoryBlock & factory_block)
1256  : DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
1257  model_(model),
1258  m(1.0),
1259  trise(0.0),
1260  sw_noise(1),
1261  sw_et(1),
1262  li_c(-1),
1263  li_b(-1),
1264  li_e(-1),
1265  li_dt(-1),
1266  li_cx(-1),
1267  li_ci(-1),
1268  li_bx(-1),
1269  li_bi(-1),
1270  li_ei(-1),
1271  li_bp(-1),
1272  li_xf1(-1),
1273  li_xf2(-1),
1274  f_bi_Equ_bx_Node_Ptr(0),
1275  f_bi_Equ_bp_Node_Ptr(0),
1276  f_ei_Equ_bx_Node_Ptr(0),
1277  f_ei_Equ_bp_Node_Ptr(0),
1278  f_bi_Equ_bi_Node_Ptr(0),
1279  f_bi_Equ_ci_Node_Ptr(0),
1280  f_ei_Equ_bi_Node_Ptr(0),
1281  f_ei_Equ_ci_Node_Ptr(0),
1282  f_bi_Equ_ei_Node_Ptr(0),
1283  f_ei_Equ_ei_Node_Ptr(0),
1284  f_bi_Equ_dt_Node_Ptr(0),
1285  f_ei_Equ_dt_Node_Ptr(0),
1286  f_bx_Equ_bi_Node_Ptr(0),
1287  f_bx_Equ_ei_Node_Ptr(0),
1288  f_bx_Equ_ci_Node_Ptr(0),
1289  f_bx_Equ_bx_Node_Ptr(0),
1290  f_bx_Equ_bp_Node_Ptr(0),
1291  f_bx_Equ_dt_Node_Ptr(0),
1292  f_ci_Equ_xf2_Node_Ptr(0),
1293  f_ei_Equ_xf2_Node_Ptr(0),
1294  f_ci_Equ_bi_Node_Ptr(0),
1295  f_ci_Equ_ei_Node_Ptr(0),
1296  f_ci_Equ_ci_Node_Ptr(0),
1297  f_ci_Equ_dt_Node_Ptr(0),
1298  f_bi_Equ_xf2_Node_Ptr(0),
1299  f_ci_Equ_bx_Node_Ptr(0),
1300  f_ci_Equ_bp_Node_Ptr(0),
1301  f_cx_Equ_bi_Node_Ptr(0),
1302  f_cx_Equ_ci_Node_Ptr(0),
1303  f_bx_Equ_cx_Node_Ptr(0),
1304  f_cx_Equ_bx_Node_Ptr(0),
1305  f_cx_Equ_cx_Node_Ptr(0),
1306  f_cx_Equ_dt_Node_Ptr(0),
1307  f_bx_Equ_c_Node_Ptr(0),
1308  f_cx_Equ_c_Node_Ptr(0),
1309  f_bp_Equ_bi_Node_Ptr(0),
1310  f_bp_Equ_ei_Node_Ptr(0),
1311  f_bp_Equ_ci_Node_Ptr(0),
1312  f_bp_Equ_bx_Node_Ptr(0),
1313  f_bp_Equ_bp_Node_Ptr(0),
1314  f_bp_Equ_dt_Node_Ptr(0),
1315  f_c_Equ_dt_Node_Ptr(0),
1316  f_c_Equ_c_Node_Ptr(0),
1317  f_c_Equ_cx_Node_Ptr(0),
1318  f_ci_Equ_cx_Node_Ptr(0),
1319  f_cx_Equ_ei_Node_Ptr(0),
1320  f_cx_Equ_bp_Node_Ptr(0),
1321  f_b_Equ_dt_Node_Ptr(0),
1322  f_b_Equ_b_Node_Ptr(0),
1323  f_b_Equ_bx_Node_Ptr(0),
1324  f_bx_Equ_b_Node_Ptr(0),
1325  f_e_Equ_dt_Node_Ptr(0),
1326  f_e_Equ_e_Node_Ptr(0),
1327  f_e_Equ_ei_Node_Ptr(0),
1328  f_ei_Equ_e_Node_Ptr(0),
1329  f_bp_Equ_cx_Node_Ptr(0),
1330  f_xf1_Equ_bi_Node_Ptr(0),
1331  f_xf1_Equ_ci_Node_Ptr(0),
1332  f_xf1_Equ_ei_Node_Ptr(0),
1333  f_xf1_Equ_dt_Node_Ptr(0),
1334  f_xf1_Equ_xf2_Node_Ptr(0),
1335  f_xf2_Equ_xf1_Node_Ptr(0),
1336  f_xf2_Equ_xf2_Node_Ptr(0),
1337  f_dt_Equ_dt_Node_Ptr(0),
1338  f_dt_Equ_bp_Node_Ptr(0),
1339  f_dt_Equ_cx_Node_Ptr(0),
1340  f_dt_Equ_e_Node_Ptr(0),
1341  f_dt_Equ_ei_Node_Ptr(0),
1342  f_dt_Equ_bx_Node_Ptr(0),
1343  f_dt_Equ_bi_Node_Ptr(0),
1344  f_dt_Equ_b_Node_Ptr(0),
1345  f_dt_Equ_ci_Node_Ptr(0),
1346  f_dt_Equ_c_Node_Ptr(0),
1347  f_dt_Equ_xf2_Node_Ptr(0),
1348  f_bi_Equ_cx_Node_Ptr(0),
1349  f_ei_Equ_cx_Node_Ptr(0),
1350  f_b_Equ_e_Node_Ptr(0),
1351  f_e_Equ_b_Node_Ptr(0),
1352  f_b_Equ_c_Node_Ptr(0),
1353  f_c_Equ_b_Node_Ptr(0),
1354  f_xf1_Equ_xf1_Node_Ptr(0),
1355  q_bi_Equ_bx_Node_Ptr(0),
1356  q_bi_Equ_bp_Node_Ptr(0),
1357  q_ei_Equ_bx_Node_Ptr(0),
1358  q_ei_Equ_bp_Node_Ptr(0),
1359  q_bi_Equ_bi_Node_Ptr(0),
1360  q_bi_Equ_ci_Node_Ptr(0),
1361  q_ei_Equ_bi_Node_Ptr(0),
1362  q_ei_Equ_ci_Node_Ptr(0),
1363  q_bi_Equ_ei_Node_Ptr(0),
1364  q_ei_Equ_ei_Node_Ptr(0),
1365  q_bi_Equ_dt_Node_Ptr(0),
1366  q_ei_Equ_dt_Node_Ptr(0),
1367  q_bx_Equ_bi_Node_Ptr(0),
1368  q_bx_Equ_ei_Node_Ptr(0),
1369  q_bx_Equ_ci_Node_Ptr(0),
1370  q_bx_Equ_bx_Node_Ptr(0),
1371  q_bx_Equ_bp_Node_Ptr(0),
1372  q_bx_Equ_dt_Node_Ptr(0),
1373  q_ci_Equ_xf2_Node_Ptr(0),
1374  q_ei_Equ_xf2_Node_Ptr(0),
1375  q_ci_Equ_bi_Node_Ptr(0),
1376  q_ci_Equ_ei_Node_Ptr(0),
1377  q_ci_Equ_ci_Node_Ptr(0),
1378  q_ci_Equ_dt_Node_Ptr(0),
1379  q_bi_Equ_xf2_Node_Ptr(0),
1380  q_ci_Equ_bx_Node_Ptr(0),
1381  q_ci_Equ_bp_Node_Ptr(0),
1382  q_cx_Equ_bi_Node_Ptr(0),
1383  q_cx_Equ_ci_Node_Ptr(0),
1384  q_bx_Equ_cx_Node_Ptr(0),
1385  q_cx_Equ_bx_Node_Ptr(0),
1386  q_cx_Equ_cx_Node_Ptr(0),
1387  q_cx_Equ_dt_Node_Ptr(0),
1388  q_bx_Equ_c_Node_Ptr(0),
1389  q_cx_Equ_c_Node_Ptr(0),
1390  q_bp_Equ_bi_Node_Ptr(0),
1391  q_bp_Equ_ei_Node_Ptr(0),
1392  q_bp_Equ_ci_Node_Ptr(0),
1393  q_bp_Equ_bx_Node_Ptr(0),
1394  q_bp_Equ_bp_Node_Ptr(0),
1395  q_bp_Equ_dt_Node_Ptr(0),
1396  q_c_Equ_dt_Node_Ptr(0),
1397  q_c_Equ_c_Node_Ptr(0),
1398  q_c_Equ_cx_Node_Ptr(0),
1399  q_ci_Equ_cx_Node_Ptr(0),
1400  q_cx_Equ_ei_Node_Ptr(0),
1401  q_cx_Equ_bp_Node_Ptr(0),
1402  q_b_Equ_dt_Node_Ptr(0),
1403  q_b_Equ_b_Node_Ptr(0),
1404  q_b_Equ_bx_Node_Ptr(0),
1405  q_bx_Equ_b_Node_Ptr(0),
1406  q_e_Equ_dt_Node_Ptr(0),
1407  q_e_Equ_e_Node_Ptr(0),
1408  q_e_Equ_ei_Node_Ptr(0),
1409  q_ei_Equ_e_Node_Ptr(0),
1410  q_bp_Equ_cx_Node_Ptr(0),
1411  q_xf1_Equ_bi_Node_Ptr(0),
1412  q_xf1_Equ_ci_Node_Ptr(0),
1413  q_xf1_Equ_ei_Node_Ptr(0),
1414  q_xf1_Equ_dt_Node_Ptr(0),
1415  q_xf1_Equ_xf2_Node_Ptr(0),
1416  q_xf2_Equ_xf1_Node_Ptr(0),
1417  q_xf2_Equ_xf2_Node_Ptr(0),
1418  q_dt_Equ_dt_Node_Ptr(0),
1419  q_dt_Equ_bp_Node_Ptr(0),
1420  q_dt_Equ_cx_Node_Ptr(0),
1421  q_dt_Equ_e_Node_Ptr(0),
1422  q_dt_Equ_ei_Node_Ptr(0),
1423  q_dt_Equ_bx_Node_Ptr(0),
1424  q_dt_Equ_bi_Node_Ptr(0),
1425  q_dt_Equ_b_Node_Ptr(0),
1426  q_dt_Equ_ci_Node_Ptr(0),
1427  q_dt_Equ_c_Node_Ptr(0),
1428  q_dt_Equ_xf2_Node_Ptr(0),
1429  q_bi_Equ_cx_Node_Ptr(0),
1430  q_ei_Equ_cx_Node_Ptr(0),
1431  q_b_Equ_e_Node_Ptr(0),
1432  q_e_Equ_b_Node_Ptr(0),
1433  q_b_Equ_c_Node_Ptr(0),
1434  q_c_Equ_b_Node_Ptr(0),
1435  q_xf1_Equ_xf1_Node_Ptr(0),
1436  admsTemperature(getDeviceOptions().temp.getImmutableValue<double>()),
1437  dtExternalNodeMode(false),
1438  cxExternalNodeMode(false),
1439  ciExternalNodeMode(false),
1440  bxExternalNodeMode(false),
1441  biExternalNodeMode(false),
1442  eiExternalNodeMode(false)
1443 
1444 {
1445  numIntVars = 9 + 0;
1446  numExtVars = 3;
1447 
1448 
1449  // Right now, we only have state for limited probes...
1450  numStateVars = 8;
1451 
1452  // Manually inserted code: detect extra nodes given on instance line,
1453  // set external node mode for those normally-internal nodes.
1454  devConMap.resize(numExtVars);
1455  for (int j=0; j< numExtVars; j++)
1456  devConMap[j] = 1;
1457 
1458  if (instance_block.numExtVars > numExtVars)
1459  {
1460  devConMap.resize(instance_block.numExtVars);
1461  if (instance_block.numExtVars >= numExtVars+1)
1462  {
1463  dtExternalNodeMode=true;
1464  --numIntVars;
1465  devConMap[numExtVars] = 2;
1466  }
1467  if (instance_block.numExtVars >= numExtVars+2)
1468  {
1469  cxExternalNodeMode=true;
1470  --numIntVars;
1471  devConMap[numExtVars+1] = 1;
1472  }
1473  if (instance_block.numExtVars >= numExtVars+3)
1474  {
1475  ciExternalNodeMode=true;
1476  --numIntVars;
1477  devConMap[numExtVars+2] = 1;
1478  }
1479  if (instance_block.numExtVars >= numExtVars+4)
1480  {
1481  bxExternalNodeMode=true;
1482  --numIntVars;
1483  devConMap[numExtVars+3] = 1;
1484  }
1485  if (instance_block.numExtVars >= numExtVars+5)
1486  {
1487  biExternalNodeMode=true;
1488  --numIntVars;
1489  devConMap[numExtVars+4] = 1;
1490  }
1491  if (instance_block.numExtVars >= numExtVars+6)
1492  {
1493  eiExternalNodeMode=true;
1494  --numIntVars;
1495  devConMap[numExtVars+5] = 1;
1496  }
1497  numExtVars=instance_block.numExtVars;
1498  }
1499  // End manually inserted code
1500 
1501  // Set up jacobian stamp:
1502 
1503  if (jacStamp.empty())
1504  {
1505  jacStamp.resize(12);
1506  jacStamp[admsNodeID_c].resize(4);
1511  jacStamp[admsNodeID_b].resize(5);
1517  jacStamp[admsNodeID_e].resize(4);
1522  jacStamp[admsNodeID_dt].resize(11);
1534  jacStamp[admsNodeID_cx].resize(8);
1543  jacStamp[admsNodeID_ci].resize(8);
1552  jacStamp[admsNodeID_bx].resize(9);
1562  jacStamp[admsNodeID_bi].resize(8);
1571  jacStamp[admsNodeID_ei].resize(9);
1581  jacStamp[admsNodeID_bp].resize(7);
1589  jacStamp[admsNodeID_xf1].resize(6);
1596  jacStamp[admsNodeID_xf2].resize(2);
1599 
1600 
1601  // This is really not strictly necessary when not mapping away nodes,
1602  // but makes life easier when we get to registerJacLIDs. This block
1603  // simply makes a map that leaves everything in place. Later, when we
1604  // start making nodes go away, we will need to modify this.
1605 
1606  int mapSize = jacStamp.size();
1607  jacMap.clear();
1608  jacMap2.clear();
1609  jacMap.resize(mapSize);
1610  jacMap2.resize(mapSize);
1611  for (int i=0;i<mapSize;++i)
1612  {
1613  int rowSize=jacStamp[i].size();
1614  jacMap[i]=i;
1615  jacMap2[i].resize(rowSize);
1616  for (int j=0;j<rowSize;++j)
1617  {
1618  jacMap2[i][j] = j;
1619  }
1620  }
1621 
1622  }
1623 
1624 
1625  setDefaultParams();
1626  setParams(instance_block.params);
1627 
1628  // Real bogosity here...
1629  if (!given("XYCEADMSINSTTEMP"))
1630  admsInstTemp=getDeviceOptions().temp.getImmutableValue<double>();
1631 
1632  //calculate any parameters specified as expressions
1634 
1635  // calculate dependent (i.e. computed params) and check for errors.
1636  processParams();
1637 }
1638 
1639 //-----------------------------------------------------------------------------
1640 // Function : Instance::~Instance
1641 // Purpose : destructor
1642 // Special Notes :
1643 // Scope : public
1644 // Creator : admsXml
1645 // Creation Date :
1646 //-----------------------------------------------------------------------------
1648 {
1649 }
1650 
1651 //-----------------------------------------------------------------------------
1652 // Function : Instance::registerLIDs
1653 // Purpose : function for registering, and setting up, local ID's.
1654 // Special Notes :
1655 // Scope : public
1656 // Creator : admsXml
1657 // Creation Date :
1658 //-----------------------------------------------------------------------------
1659 void Instance::registerLIDs( const LocalIdVector & intLIDVecRef,
1660  const LocalIdVector & extLIDVecRef)
1661 {
1662  AssertLIDs(intLIDVecRef.size() == numIntVars);
1663  AssertLIDs(extLIDVecRef.size() == numExtVars);
1664 
1665  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1666  {
1667  Xyce::dout() << std::endl << section_divider << std::endl
1668  << "In ADMSvbic13::Instance::register LIDs\n\n"
1669  << "name = " << getName() << std::endl
1670  << "number of internal variables: " << numIntVars << std::endl
1671  << "number of external variables: " << numExtVars << std::endl;
1672  }
1673 
1674  // copy over the global ID lists.
1675  intLIDVec = intLIDVecRef;
1676  extLIDVec = extLIDVecRef;
1677 
1678  // Now use these lists to obtain the indices into the linear algebra
1679  // entities. This assumes an order.
1680  int i=0;
1681  li_c = extLIDVecRef[i++];
1682  li_b = extLIDVecRef[i++];
1683  li_e = extLIDVecRef[i++];
1684 
1685 
1686  int j=i;
1687  i=0;
1688  if (dtExternalNodeMode)
1689  li_dt = extLIDVecRef[j++];
1690  else
1691  li_dt = intLIDVecRef[i++];
1692  if (cxExternalNodeMode)
1693  li_cx = extLIDVecRef[j++];
1694  else
1695  li_cx = intLIDVecRef[i++];
1696  if (ciExternalNodeMode)
1697  li_ci = extLIDVecRef[j++];
1698  else
1699  li_ci = intLIDVecRef[i++];
1700  if (bxExternalNodeMode)
1701  li_bx = extLIDVecRef[j++];
1702  else
1703  li_bx = intLIDVecRef[i++];
1704  if (biExternalNodeMode)
1705  li_bi = extLIDVecRef[j++];
1706  else
1707  li_bi = intLIDVecRef[i++];
1708  if (eiExternalNodeMode)
1709  li_ei = extLIDVecRef[j++];
1710  else
1711  li_ei = intLIDVecRef[i++];
1712  li_bp = intLIDVecRef[i++];
1713  li_xf1 = intLIDVecRef[i++];
1714  li_xf2 = intLIDVecRef[i++];
1715 
1716 
1717  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1718  {
1719  Xyce::dout() << "\nSolution and RHS variables:\n";
1720  Xyce::dout() << "\nli_c = " << li_c << std::endl;
1721  Xyce::dout() << "\nli_b = " << li_b << std::endl;
1722  Xyce::dout() << "\nli_e = " << li_e << std::endl;
1723  Xyce::dout() << "\nli_dt = " << li_dt << std::endl;
1724  Xyce::dout() << "\nli_cx = " << li_cx << std::endl;
1725  Xyce::dout() << "\nli_ci = " << li_ci << std::endl;
1726  Xyce::dout() << "\nli_bx = " << li_bx << std::endl;
1727  Xyce::dout() << "\nli_bi = " << li_bi << std::endl;
1728  Xyce::dout() << "\nli_ei = " << li_ei << std::endl;
1729  Xyce::dout() << "\nli_bp = " << li_bp << std::endl;
1730  Xyce::dout() << "\nli_xf1 = " << li_xf1 << std::endl;
1731  Xyce::dout() << "\nli_xf2 = " << li_xf2 << std::endl;
1732 
1733  Xyce::dout() << "\nEnd of ADMSvbic13::Instance::register LIDs\n";
1734  Xyce::dout() << section_divider << std::endl;
1735  }
1736 }
1737 
1738 //-----------------------------------------------------------------------------
1739 // Function : Instance::loadNodeSymbols
1740 // Purpose :
1741 // Special Notes :
1742 // Scope : public
1743 // Creator : admsXml
1744 // Creation Date :
1745 //-----------------------------------------------------------------------------
1746 void Instance::loadNodeSymbols(Util::SymbolTable &symbol_table) const
1747 {
1748  addInternalNode(symbol_table, li_dt, getName(), "dt");
1749  addInternalNode(symbol_table, li_cx, getName(), "cx");
1750  addInternalNode(symbol_table, li_ci, getName(), "ci");
1751  addInternalNode(symbol_table, li_bx, getName(), "bx");
1752  addInternalNode(symbol_table, li_bi, getName(), "bi");
1753  addInternalNode(symbol_table, li_ei, getName(), "ei");
1754  addInternalNode(symbol_table, li_bp, getName(), "bp");
1755  addInternalNode(symbol_table, li_xf1, getName(), "xf1");
1756  addInternalNode(symbol_table, li_xf2, getName(), "xf2");
1757 }
1758 
1759 //-----------------------------------------------------------------------------
1760 // Function : Instance::registerStateLIDs
1761 // Purpose :
1762 // Special Notes :
1763 // Scope : public
1764 // Creator : admsXml
1765 // Creation Date :
1766 //-----------------------------------------------------------------------------
1767 void Instance::registerStateLIDs( const LocalIdVector & staLIDVecRef)
1768 {
1769  AssertLIDs(staLIDVecRef.size() == numStateVars);
1770 
1771  int numSta = staLIDVecRef.size();
1772  if (numSta > 0)
1773  {
1774  int i=0;
1775  staLIDVec = staLIDVecRef;
1776 
1785  }
1786 }
1787 
1788 //-----------------------------------------------------------------------------
1789 // Function : Instance::jacobianStamp
1790 // Purpose :
1791 // Special Notes : In initial version, we won't support mapping away nodes
1792 // Scope : public
1793 // Creator : admsXml
1794 // Creation Date :
1795 //-----------------------------------------------------------------------------
1797 {
1798  return jacStamp;
1799 }
1800 
1801 //-----------------------------------------------------------------------------
1802 // Function : Instance::registerJacLIDs
1803 // Purpose : Create Offset variables used for referencing jacobian
1804 // elements
1805 // Special Notes :
1806 // Scope : public
1807 // Creator : admsXml
1808 // Creation Date :
1809 //-----------------------------------------------------------------------------
1811 {
1813  std::vector<int> & map=jacMap;
1814  std::vector< std::vector<int> > & map2=jacMap2;
1815 
1816 
1817  // do nothing, we won't use the jac lids anymore, we'll use pointers
1818 
1819 }
1820 
1821 //-----------------------------------------------------------------------------
1822 // Function : Instance::setupPointers
1823 // Purpose : Create pointer variables used for referencing jacobian
1824 // elements
1825 // Special Notes :
1826 // Scope : public
1827 // Creator : admsXml
1828 // Creation Date :
1829 //-----------------------------------------------------------------------------
1831 {
1832 
1833  Linear::Matrix * dFdxMatPtr = extData.dFdxMatrixPtr;
1834  Linear::Matrix * dQdxMatPtr = extData.dQdxMatrixPtr;
1835  f_c_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_dt);
1836  q_c_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_dt);
1837  f_c_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_c);
1838  q_c_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_c);
1839  f_c_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_cx);
1840  q_c_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_cx);
1841  f_c_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_b);
1842  q_c_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_b);
1843  f_b_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_dt);
1844  q_b_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_dt);
1845  f_b_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_b);
1846  q_b_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_b);
1847  f_b_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_bx);
1848  q_b_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_bx);
1849  f_b_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_e);
1850  q_b_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_e);
1851  f_b_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_c);
1852  q_b_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_c);
1853  f_e_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_dt);
1854  q_e_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_dt);
1855  f_e_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_e);
1856  q_e_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_e);
1857  f_e_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_ei);
1858  q_e_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_ei);
1859  f_e_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_b);
1860  q_e_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_b);
1861  f_dt_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_dt);
1862  q_dt_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_dt);
1863  f_dt_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_bp);
1864  q_dt_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_bp);
1865  f_dt_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_cx);
1866  q_dt_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_cx);
1867  f_dt_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_e);
1868  q_dt_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_e);
1869  f_dt_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_ei);
1870  q_dt_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_ei);
1871  f_dt_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_bx);
1872  q_dt_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_bx);
1873  f_dt_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_bi);
1874  q_dt_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_bi);
1875  f_dt_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_b);
1876  q_dt_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_b);
1877  f_dt_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_ci);
1878  q_dt_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_ci);
1879  f_dt_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_c);
1880  q_dt_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_c);
1881  f_dt_Equ_xf2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_xf2);
1882  q_dt_Equ_xf2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_xf2);
1883  f_cx_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_bi);
1884  q_cx_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_bi);
1885  f_cx_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_ci);
1886  q_cx_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_ci);
1887  f_cx_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_bx);
1888  q_cx_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_bx);
1889  f_cx_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_cx);
1890  q_cx_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_cx);
1891  f_cx_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_dt);
1892  q_cx_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_dt);
1893  f_cx_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_c);
1894  q_cx_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_c);
1895  f_cx_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_ei);
1896  q_cx_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_ei);
1897  f_cx_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_bp);
1898  q_cx_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_bp);
1899  f_ci_Equ_xf2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_xf2);
1900  q_ci_Equ_xf2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_xf2);
1901  f_ci_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_bi);
1902  q_ci_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_bi);
1903  f_ci_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_ei);
1904  q_ci_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_ei);
1905  f_ci_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_ci);
1906  q_ci_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_ci);
1907  f_ci_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_dt);
1908  q_ci_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_dt);
1909  f_ci_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_bx);
1910  q_ci_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_bx);
1911  f_ci_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_bp);
1912  q_ci_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_bp);
1913  f_ci_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_cx);
1914  q_ci_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_cx);
1915  f_bx_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_bi);
1916  q_bx_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_bi);
1917  f_bx_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_ei);
1918  q_bx_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_ei);
1919  f_bx_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_ci);
1920  q_bx_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_ci);
1921  f_bx_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_bx);
1922  q_bx_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_bx);
1923  f_bx_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_bp);
1924  q_bx_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_bp);
1925  f_bx_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_dt);
1926  q_bx_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_dt);
1927  f_bx_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_cx);
1928  q_bx_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_cx);
1929  f_bx_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_c);
1930  q_bx_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_c);
1931  f_bx_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_b);
1932  q_bx_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_b);
1933  f_bi_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_bx);
1934  q_bi_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_bx);
1935  f_bi_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_bp);
1936  q_bi_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_bp);
1937  f_bi_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_bi);
1938  q_bi_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_bi);
1939  f_bi_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_ci);
1940  q_bi_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_ci);
1941  f_bi_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_ei);
1942  q_bi_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_ei);
1943  f_bi_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_dt);
1944  q_bi_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_dt);
1945  f_bi_Equ_xf2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_xf2);
1946  q_bi_Equ_xf2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_xf2);
1947  f_bi_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_cx);
1948  q_bi_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_cx);
1949  f_ei_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_bx);
1950  q_ei_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_bx);
1951  f_ei_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_bp);
1952  q_ei_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_bp);
1953  f_ei_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_bi);
1954  q_ei_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_bi);
1955  f_ei_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_ci);
1956  q_ei_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_ci);
1957  f_ei_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_ei);
1958  q_ei_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_ei);
1959  f_ei_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_dt);
1960  q_ei_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_dt);
1961  f_ei_Equ_xf2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_xf2);
1962  q_ei_Equ_xf2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_xf2);
1963  f_ei_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_e);
1964  q_ei_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_e);
1965  f_ei_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_cx);
1966  q_ei_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_cx);
1967  f_bp_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_bi);
1968  q_bp_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_bi);
1969  f_bp_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_ei);
1970  q_bp_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_ei);
1971  f_bp_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_ci);
1972  q_bp_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_ci);
1973  f_bp_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_bx);
1974  q_bp_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_bx);
1975  f_bp_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_bp);
1976  q_bp_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_bp);
1977  f_bp_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_dt);
1978  q_bp_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_dt);
1979  f_bp_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_cx);
1980  q_bp_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_cx);
1981  f_xf1_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_xf1,li_bi);
1982  q_xf1_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_xf1,li_bi);
1983  f_xf1_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_xf1,li_ci);
1984  q_xf1_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_xf1,li_ci);
1985  f_xf1_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_xf1,li_ei);
1986  q_xf1_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_xf1,li_ei);
1987  f_xf1_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_xf1,li_dt);
1988  q_xf1_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_xf1,li_dt);
1989  f_xf1_Equ_xf2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_xf1,li_xf2);
1990  q_xf1_Equ_xf2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_xf1,li_xf2);
1991  f_xf1_Equ_xf1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_xf1,li_xf1);
1992  q_xf1_Equ_xf1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_xf1,li_xf1);
1993  f_xf2_Equ_xf1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_xf2,li_xf1);
1994  q_xf2_Equ_xf1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_xf2,li_xf1);
1995  f_xf2_Equ_xf2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_xf2,li_xf2);
1996  q_xf2_Equ_xf2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_xf2,li_xf2);
1997 
1998 
1999 }
2000 
2001 // RHS load functions
2002 
2003 //-----------------------------------------------------------------------------
2004 // Function : Instance::loadDAEFVector
2005 // Purpose : load F vector (static contributions) for one instance for
2006 // NEW DAE formulation
2007 // Special Notes :
2008 // Scope : public
2009 // Creator : admsXml
2010 // Creation Date :
2011 //-----------------------------------------------------------------------------
2013 {
2014 
2015  bool bsuccess=true;
2016 
2030  {
2031  double *dFdxdVp = extData.dFdxdVpVectorRawPtr;
2032  dFdxdVp[li_c] += Jdxp_static[admsNodeID_c];
2033  dFdxdVp[li_b] += Jdxp_static[admsNodeID_b];
2034  dFdxdVp[li_e] += Jdxp_static[admsNodeID_e];
2035  dFdxdVp[li_dt] += Jdxp_static[admsNodeID_dt];
2036  dFdxdVp[li_cx] += Jdxp_static[admsNodeID_cx];
2037  dFdxdVp[li_ci] += Jdxp_static[admsNodeID_ci];
2038  dFdxdVp[li_bx] += Jdxp_static[admsNodeID_bx];
2039  dFdxdVp[li_bi] += Jdxp_static[admsNodeID_bi];
2040  dFdxdVp[li_ei] += Jdxp_static[admsNodeID_ei];
2041  dFdxdVp[li_bp] += Jdxp_static[admsNodeID_bp];
2042  dFdxdVp[li_xf1] += Jdxp_static[admsNodeID_xf1];
2043  dFdxdVp[li_xf2] += Jdxp_static[admsNodeID_xf2];
2044 
2045  }
2046 
2047  return bsuccess;
2048 }
2049 
2050 //-----------------------------------------------------------------------------
2051 // Function : Instance::loadDAEQVector
2052 // Purpose : load Q vector (dynamic contributions) for one instance for
2053 // NEW DAE formulation
2054 // Special Notes :
2055 // Scope : public
2056 // Creator : admsXml
2057 // Creation Date :
2058 //-----------------------------------------------------------------------------
2060 {
2074  {
2075  double *dQdxdVp = extData.dQdxdVpVectorRawPtr;
2076  dQdxdVp[li_c] += Jdxp_dynamic[admsNodeID_c];
2077  dQdxdVp[li_b] += Jdxp_dynamic[admsNodeID_b];
2078  dQdxdVp[li_e] += Jdxp_dynamic[admsNodeID_e];
2079  dQdxdVp[li_dt] += Jdxp_dynamic[admsNodeID_dt];
2080  dQdxdVp[li_cx] += Jdxp_dynamic[admsNodeID_cx];
2081  dQdxdVp[li_ci] += Jdxp_dynamic[admsNodeID_ci];
2082  dQdxdVp[li_bx] += Jdxp_dynamic[admsNodeID_bx];
2083  dQdxdVp[li_bi] += Jdxp_dynamic[admsNodeID_bi];
2084  dQdxdVp[li_ei] += Jdxp_dynamic[admsNodeID_ei];
2085  dQdxdVp[li_bp] += Jdxp_dynamic[admsNodeID_bp];
2086  dQdxdVp[li_xf1] += Jdxp_dynamic[admsNodeID_xf1];
2087  dQdxdVp[li_xf2] += Jdxp_dynamic[admsNodeID_xf2];
2088  }
2089 
2090  return true;
2091 }
2092 
2093 
2094 //-----------------------------------------------------------------------------
2095 // Function : Instance::updatePrimaryState
2096 // Purpose :
2097 // Special Notes : In this initial implementation, does little more than
2098 // call updateIntermediateVars()
2099 // Scope : public
2100 // Creator : admsXml
2101 // Creation Date :
2102 //-----------------------------------------------------------------------------
2104 {
2105  bool bsuccess = true;
2106 
2107  bsuccess = updateIntermediateVars();
2108 
2109  // if old DAE were implemented, we'd save dynamic contributions as state
2110  // here.
2111 
2112  double * staVec = extData.nextStaVectorRawPtr;
2113  // Also need to save limited voltage drops
2114  // This formulation assumes that we have *always* written the
2115  // limited voltages back into the probeVars[] array.
2116 
2125 
2126  return bsuccess;
2127 }
2128 
2129 //-----------------------------------------------------------------------------
2130 // Function : Instance::updateSecondaryState
2131 // Purpose :
2132 // Special Notes : In this initial implementation, does nothing
2133 // Scope : public
2134 // Creator : admsXml
2135 // Creation Date :
2136 //-----------------------------------------------------------------------------
2138 {
2139  bool bsuccess = true;
2140 
2141  // were old DAE implemented, we'd pull dynamic contribution derivatives
2142  // out of state.
2143 
2144  return bsuccess;
2145 }
2146 
2147 //-----------------------------------------------------------------------------
2148 // Function : Instance::updateIntermediateVars
2149 // Purpose : update intermediate variables for one vbic13 instance
2150 // Special Notes :
2151 // Scope : public
2152 // Creator : admsXml
2153 // Creation Date :
2154 //-----------------------------------------------------------------------------
2156 {
2157 
2158  bool bsuccess=true;
2159  Linear::Vector * solVectorPtr = extData.nextSolVectorPtr;
2160 
2161  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2162  {
2163  Xyce::dout() << std::endl << subsection_divider << std::endl;
2164  Xyce::dout() << " In ADMSvbic13::Instance::updateIntermediateVars\n\n";
2165  Xyce::dout() << " name = " << getName() << std::endl;
2166  }
2167 
2168  // Local variables
2169  // temporary variables for limiting
2170  double Vbe_orig,Vbe_limited,Vbe_old;
2171  double Vbep_orig,Vbep_limited,Vbep_old;
2172  double Vbxcx_orig,Vbxcx_limited,Vbxcx_old;
2173  double Vbcx_orig,Vbcx_limited,Vbcx_old;
2174  double Vbci_orig,Vbci_limited,Vbci_old;
2175  double Vbex_orig,Vbex_limited,Vbex_old;
2176  double Vbei_orig,Vbei_limited,Vbei_old;
2177  double dt_et_orig,dt_et_limited,dt_et_old;
2178 
2179 
2180  // set the sizes of the Fad arrays:
2181 
2182  if (probeVars.size() != (18))
2183  {
2184  probeVars.resize(18);
2185  staticContributions.resize(12+0);
2186  dynamicContributions.resize(12+0);
2187  probeDiffs.resize(18,0.0);
2188  Jdxp_static.resize(12+0);
2189  Jdxp_dynamic.resize(12+0);
2190  }
2191 
2192  // initialize contributions to zero (automatically sets derivatives to zero)
2193  for (int i=0; i < 12+0 ; ++i)
2194  {
2195  staticContributions[i]=0;
2196  dynamicContributions[i]=0;
2197  Jdxp_static[i]=0;
2198  Jdxp_dynamic[i]=0;
2199  }
2200 
2201  for (int i=0; i < 18 ; ++i)
2202  {
2203  probeDiffs[i] = 0.0;
2204  }
2205  // extract solution variables and set as Fad independent variables.
2206 
2207  probeVars[admsProbeID_V_xf2_GND] = (*solVectorPtr)[li_xf2];
2209 
2210  probeVars[admsProbeID_V_xf1_GND] = (*solVectorPtr)[li_xf1];
2212 
2213  probeVars[admsProbeID_V_bp_cx] = (*solVectorPtr)[li_bp] - (*solVectorPtr)[li_cx];
2215 
2216  probeVars[admsProbeID_V_e_ei] = (*solVectorPtr)[li_e] - (*solVectorPtr)[li_ei];
2218 
2219  probeVars[admsProbeID_V_bx_bi] = (*solVectorPtr)[li_bx] - (*solVectorPtr)[li_bi];
2221 
2222  probeVars[admsProbeID_V_b_bx] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_bx];
2224 
2225  probeVars[admsProbeID_V_cx_ci] = (*solVectorPtr)[li_cx] - (*solVectorPtr)[li_ci];
2227 
2228  probeVars[admsProbeID_V_c_cx] = (*solVectorPtr)[li_c] - (*solVectorPtr)[li_cx];
2230 
2231  probeVars[admsProbeID_V_b_c] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_c];
2233 
2234  probeVars[admsProbeID_V_b_e] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_e];
2236 
2237  probeVars[admsProbeID_V_bx_bp] = (*solVectorPtr)[li_bx] - (*solVectorPtr)[li_bp];
2239 
2240  probeVars[admsProbeID_V_ci_ei] = (*solVectorPtr)[li_ci] - (*solVectorPtr)[li_ei];
2242 
2243  probeVars[admsProbeID_V_bx_cx] = (*solVectorPtr)[li_bx] - (*solVectorPtr)[li_cx];
2245 
2246  probeVars[admsProbeID_V_bi_cx] = (*solVectorPtr)[li_bi] - (*solVectorPtr)[li_cx];
2248 
2249  probeVars[admsProbeID_V_bi_ci] = (*solVectorPtr)[li_bi] - (*solVectorPtr)[li_ci];
2251 
2252  probeVars[admsProbeID_V_bx_ei] = (*solVectorPtr)[li_bx] - (*solVectorPtr)[li_ei];
2254 
2255  probeVars[admsProbeID_V_bi_ei] = (*solVectorPtr)[li_bi] - (*solVectorPtr)[li_ei];
2257 
2258  probeVars[admsProbeID_Temp_dt_GND] = (*solVectorPtr)[li_dt];
2260 
2261 
2262  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
2269 
2270  // Copy probes into limiting vars
2271  Vbe_orig = Vbe_limited = probeVars[admsProbeID_V_b_e].val();
2273  Vbep_orig = Vbep_limited = probeVars[admsProbeID_V_bx_bp].val();
2275  Vbxcx_orig = Vbxcx_limited = probeVars[admsProbeID_V_bx_cx].val();
2277  Vbcx_orig = Vbcx_limited = probeVars[admsProbeID_V_bi_cx].val();
2279  Vbci_orig = Vbci_limited = probeVars[admsProbeID_V_bi_ci].val();
2281  Vbex_orig = Vbex_limited = probeVars[admsProbeID_V_bx_ei].val();
2283  Vbei_orig = Vbei_limited = probeVars[admsProbeID_V_bi_ei].val();
2285  dt_et_orig = dt_et_limited = probeVars[admsProbeID_Temp_dt_GND].val();
2287 
2288  origFlag = true;
2289 
2290  if (getSolverState().newtonIter == 0)
2291  {
2292 
2293  if (!(getSolverState().dcopFlag)||(getSolverState().locaEnabledFlag && getSolverState().dcopFlag))
2294  {
2303  }
2304  else
2305  {
2306  Vbe_old = Vbe_limited;
2307  Vbep_old = Vbep_limited;
2308  Vbxcx_old = Vbxcx_limited;
2309  Vbcx_old = Vbcx_limited;
2310  Vbci_old = Vbci_limited;
2311  Vbex_old = Vbex_limited;
2312  Vbei_old = Vbei_limited;
2313  dt_et_old = dt_et_limited;
2314  }
2315  }
2316  else
2317  {
2326  }
2327 
2328  // -- code converted from analog/code block
2329  //Block-local variables for block analogBlock
2330  AdmsFadType is_t;
2331  AdmsFadType isrr_t;
2332  AdmsFadType ikf_t;
2333  AdmsFadType ibei_t;
2334  AdmsFadType ibci_t;
2335  AdmsFadType isp_t;
2336  AdmsFadType iben_t;
2337  AdmsFadType ibcn_t;
2338  //End of Block-local variables
2339  //Block-local variables for block analogBlock
2340  AdmsFadType ibeip_t;
2341  AdmsFadType ibenp_t;
2342  AdmsFadType ibcip_t;
2343  AdmsFadType ibcnp_t;
2344  //End of Block-local variables
2345  //Block-local variables for block analogBlock
2346  AdmsFadType rcx_t;
2347  AdmsFadType rci_t;
2348  AdmsFadType rbx_t;
2349  AdmsFadType rbi_t;
2350  AdmsFadType re_t;
2351  AdmsFadType rs_t;
2352  AdmsFadType rbp_t;
2353  AdmsFadType rth_t;
2354  //End of Block-local variables
2355  //Block-local variables for block analogBlock
2356  AdmsFadType pe_t;
2357  AdmsFadType pc_t;
2358  AdmsFadType ps_t;
2359  //End of Block-local variables
2360  //Block-local variables for block analogBlock
2361  AdmsFadType cje_t;
2362  AdmsFadType cjc_t;
2363  AdmsFadType cjep_t;
2364  AdmsFadType cjcp_t;
2365  //End of Block-local variables
2366  //Block-local variables for block analogBlock
2367  AdmsFadType nf_t;
2368  AdmsFadType nr_t;
2369  AdmsFadType avc2_t;
2370  AdmsFadType avcx2_t;
2371  AdmsFadType vbbe_t;
2372  AdmsFadType nbbe_t;
2373  AdmsFadType gamm_t;
2374  AdmsFadType vo_t;
2375  AdmsFadType ebbe_t;
2376  AdmsFadType vef_t;
2377  AdmsFadType ver_t;
2378  //End of Block-local variables
2379  //Block-local variables for block analogBlock
2380  AdmsFadType tdevC;
2381  AdmsFadType tdevK;
2382  double tiniK;
2383  AdmsFadType rT;
2384  AdmsFadType dT;
2385  //End of Block-local variables
2386  //Block-local variables for block analogBlock
2387  AdmsFadType Ivef;
2388  AdmsFadType Iver;
2389  AdmsFadType Iikf;
2390  double Iikr;
2391  double Iikp;
2392  AdmsFadType Ivo;
2393  double Ihrcf;
2394  double Ivtf;
2395  double Iitf;
2396  double sltf;
2397  //End of Block-local variables
2398  //Block-local variables for block analogBlock
2399  AdmsFadType Gcx;
2400  AdmsFadType Gci;
2401  AdmsFadType Gbx;
2402  AdmsFadType Gbi;
2403  AdmsFadType Ge;
2404  AdmsFadType Gbp;
2405  AdmsFadType Gs;
2406  AdmsFadType Gth;
2407  //End of Block-local variables
2408  //Block-local variables for block analogBlock
2409  double maxvIfi;
2410  double maxvIri;
2411  double maxvIp;
2412  double maxvIbbe;
2413  //End of Block-local variables
2414  //Block-local variables for block analogBlock
2415  double maxvIbei;
2416  double maxvIben;
2417  double maxvIbci;
2418  double maxvIbcn;
2419  double maxvIbeip;
2420  double maxvIbenp;
2421  double maxvIbcip;
2422  double maxvIbcnp;
2423  //End of Block-local variables
2424  //Block-local variables for block analogBlock
2425  AdmsFadType vtv;
2426  AdmsFadType Ifi;
2427  AdmsFadType Iri;
2428  AdmsFadType Itzf;
2429  AdmsFadType Itzr;
2430  AdmsFadType q1z;
2431  AdmsFadType q1;
2432  AdmsFadType q2;
2433  AdmsFadType qb;
2434  AdmsFadType Ifp;
2435  double Irp;
2436  double Iccp;
2437  AdmsFadType q2p;
2438  AdmsFadType qbp;
2439  //End of Block-local variables
2440  //Block-local variables for block analogBlock
2441  AdmsFadType Ibe;
2442  AdmsFadType Ibex;
2443  AdmsFadType Ibcj;
2444  AdmsFadType Ibc;
2445  AdmsFadType Ibep;
2446  double Ibcp;
2447  AdmsFadType Igc;
2448  AdmsFadType Igcx;
2449  AdmsFadType avalf;
2450  //End of Block-local variables
2451  //Block-local variables for block analogBlock
2452  AdmsFadType Ircx;
2453  AdmsFadType Irci;
2454  AdmsFadType Irbx;
2455  AdmsFadType Irbi;
2456  AdmsFadType Ire;
2457  AdmsFadType Irbp;
2458  double Irs;
2459  //End of Block-local variables
2460  //Block-local variables for block analogBlock
2461  AdmsFadType Kbci;
2462  AdmsFadType Kbcx;
2463  AdmsFadType rKp1;
2464  AdmsFadType Iohm;
2465  AdmsFadType derf;
2466  //End of Block-local variables
2467  //Block-local variables for block analogBlock
2468  AdmsFadType arg;
2469  AdmsFadType expi;
2470  AdmsFadType expn;
2471  AdmsFadType expx;
2472  AdmsFadType afac;
2473  //End of Block-local variables
2474  //Block-local variables for block analogBlock
2475  double VmaxExp;
2476  //End of Block-local variables
2477  //Block-local variables for block analogBlock
2478  AdmsFadType qdbe;
2479  AdmsFadType qdbex;
2480  AdmsFadType qdbc;
2481  AdmsFadType qdbep;
2482  double qdbcp;
2483  //End of Block-local variables
2484  //Block-local variables for block analogBlock
2485  AdmsFadType sgIf;
2486  AdmsFadType rIf;
2487  AdmsFadType mIf;
2488  AdmsFadType tff;
2489  //End of Block-local variables
2490  //Block-local variables for block analogBlock
2491  AdmsFadType Qbe;
2492  AdmsFadType Qbex;
2493  AdmsFadType Qbc;
2494  AdmsFadType Qbcx;
2495  AdmsFadType Qbep;
2496  double Qbcp;
2497  AdmsFadType Qbeo;
2498  AdmsFadType Qbco;
2499  //End of Block-local variables
2500  //Block-local variables for block analogBlock
2501  AdmsFadType Vxf1;
2502  AdmsFadType Vxf2;
2503  AdmsFadType Ixf1;
2504  AdmsFadType Ixf2;
2505  AdmsFadType Qxf1;
2506  AdmsFadType Qxf2;
2507  AdmsFadType Itxf;
2508  //End of Block-local variables
2509  //Block-local variables for block analogBlock
2510  AdmsFadType dt_et;
2511  AdmsFadType Ith;
2512  AdmsFadType power;
2513  AdmsFadType Irth;
2514  AdmsFadType Qcth;
2515  //End of Block-local variables
2516  //Block-local variables for block analogBlock
2517  AdmsFadType Vbei;
2518  AdmsFadType Vbci;
2519  AdmsFadType Vbex;
2520  AdmsFadType Vbep;
2521  double Vbcp;
2522  AdmsFadType Vbcx;
2523  AdmsFadType Vbxcx;
2524  AdmsFadType Bvbe;
2525  //End of Block-local variables
2526  //Block-local variables for block analogBlock
2527  AdmsFadType Vbe;
2528  AdmsFadType Vbc;
2529  AdmsFadType Vrcx;
2530  AdmsFadType Vrci;
2531  AdmsFadType Vrbx;
2532  AdmsFadType Vrbi;
2533  AdmsFadType Vre;
2534  AdmsFadType Vrbp;
2535  double Vrs;
2536  AdmsFadType Vcei;
2537  double Vcep;
2538  //End of Block-local variables
2539  //Block-local variables for block analogBlock
2540  double scaleFac;
2541  double shrinkL;
2542  double gminMod;
2543  double imaxMod;
2544  double mMod;
2545  //End of Block-local variables
2546  //Block-local variables for block analogBlock
2547  double ic;
2548  double ib;
2549  double ie;
2550  double isub;
2551  double powerT;
2552  double powerD;
2553  double Vce;
2554  //End of Block-local variables
2555  //Block-local variables for block analogBlock
2556  double Ircx_Vrcx;
2557  double Irci_Vrci;
2558  double Irbx_Vrbx;
2559  double Irbi_Vrbi;
2560  double Irbp_Vrbp;
2561  double Ire_Vre;
2562  double Irs_Vrs;
2563  //End of Block-local variables
2564  //Block-local variables for block analogBlock
2565  double tauTh;
2566  double gci_eff;
2567  AdmsFadType Iibk;
2568  AdmsFadType Ibk;
2569  AdmsFadType VcbFac;
2570  //End of Block-local variables
2571  //Block-local variables for block analogBlock
2572  double tVCrit;
2573  //End of Block-local variables
2574  //Begin block initializeModel
2575  {
2576  scaleFac = (model_.scale);
2577  shrinkL = (1.0-(0.01*(model_.shrink)));
2578  if ((model_.given("gmin")))
2579  {
2580  gminMod = (model_.gmin);
2581  }
2582  else
2583  {
2584  gminMod = getDeviceOptions().gmin;
2585  }
2586  mMod = m;
2587  if ((model_.given("pnjmaxi")))
2588  {
2589  imaxMod = (model_.pnjmaxi);
2590  }
2591  else
2592  {
2593  imaxMod = 1.0;
2594  }
2595  if ((model_.given("npn")))
2596  {
2597  (model_.VBICtype) = 1.0;
2598  }
2599  else
2600  {
2601  if ((model_.given("pnp")))
2602  {
2603  (model_.VBICtype) = (-1.0);
2604  }
2605  else
2606  {
2607  if ((model_.given("type")))
2608  {
2609  (model_.VBICtype) = (-(model_.type));
2610  }
2611  }
2612  }
2613  VmaxExp = log((model_.maxexp));
2614  Iikr = (((model_.ikr)>0.0)?(1.0/(model_.ikr)):0.0);
2615  Iikp = (((model_.ikp)>0.0)?(1.0/(model_.ikp)):0.0);
2616  Ihrcf = (((model_.hrcf)>0.0)?(1.0/(model_.hrcf)):0.0);
2617  Ivtf = (((model_.vtf)>0.0)?(1.0/(model_.vtf)):0.0);
2618  Iitf = (((model_.itf)>0.0)?(1.0/(model_.itf)):0.0);
2619  sltf = (((model_.itf)>0.0)?0.0:1.0);
2620  tiniK = (273.15+(model_.tnom));
2621  }
2622  // End block initializeModel
2623  //Begin block initializeInstance
2624  {
2625  tdevC = ((admsTemperature+trise)-273.15);
2626  if ((tdevC<(model_.tmin)))
2627  {
2628  std::cerr << "WARNING: ambient temperature is lower than allowed minimum" << std::endl;
2629  }
2630  if ((tdevC>(model_.tmax)))
2631  {
2632  std::cerr << "WARNING: ambient temperature is higher than allowed maximum" << std::endl;
2633  }
2634  if ((tdevC<((model_.tminclip)+1.0)))
2635  {
2636  tdevC = ((model_.tminclip)+exp(((tdevC-(model_.tminclip))-1.0)));
2637  }
2638  else
2639  {
2640  if ((tdevC>((model_.tmaxclip)-1.0)))
2641  {
2642  tdevC = ((model_.tmaxclip)-exp((((model_.tmaxclip)-tdevC)-1.0)));
2643  }
2644  else
2645  {
2646  tdevC = tdevC;
2647  }
2648  }
2649  tdevK = (tdevC+273.15);
2650  vtv = ((1.380662e-23*tdevK)/1.602189e-19);
2651  rT = (tdevK/tiniK);
2652  tVCrit = (adms_vt(admsTemperature)*log((adms_vt(admsTemperature)/(1.41421356237309504880*(model_.is)))));
2653  if (((model_.ibbe)>0.0))
2654  {
2655  maxvIbbe = (((model_.nbbe)*vtv.val())*log((exp(((-(model_.vbbe))/((model_.nbbe)*vtv.val())))+(imaxMod/(model_.ibbe)))));
2656  }
2657  else
2658  {
2659  maxvIbbe = 0.0;
2660  }
2661  is_t = (((model_.is)*pow(rT,((model_.xis)/(model_.nf))))*exp((((-(model_.ea))*(1.0-rT))/(vtv*(model_.nf)))));
2662  if ((is_t>0.0))
2663  {
2664  if ((((model_.ikf)>0.0)&&(imaxMod>(model_.ikf))))
2665  {
2666  maxvIfi = (((model_.nf)*vtv.val())*log((1.0+(pow(((0.5*imaxMod)*pow((4.0/(model_.ikf)),(model_.nkf))),(1.0/(1.0-(model_.nkf))))/is_t.val()))));
2667  }
2668  else
2669  {
2670  maxvIfi = (((model_.nf)*vtv.val())*log((1.0+(imaxMod/is_t.val()))));
2671  }
2672  }
2673  else
2674  {
2675  maxvIfi = 0.0;
2676  }
2677  isrr_t = (((model_.isrr)*pow(rT,((model_.xisr)/(model_.nr))))*exp((((-(model_.dear))*(1.0-rT))/(vtv*(model_.nr)))));
2678  if (((is_t>0.0)&&(isrr_t>0.0)))
2679  {
2680  if ((((model_.ikr)>0.0)&&(imaxMod>(model_.ikr))))
2681  {
2682  maxvIri = (((model_.nr)*vtv.val())*log((1.0+(pow(((0.5*imaxMod)*pow((4.0/(model_.ikr)),(model_.nkf))),(1.0/(1.0-(model_.nkf))))/(is_t.val()*isrr_t.val())))));
2683  }
2684  else
2685  {
2686  maxvIri = (((model_.nr)*vtv.val())*log((1.0+(imaxMod/(is_t.val()*isrr_t.val())))));
2687  }
2688  }
2689  else
2690  {
2691  maxvIri = 0.0;
2692  }
2693  isp_t = (((model_.isp)*pow(rT,((model_.xis)/(model_.nfp))))*exp((((-(model_.eap))*(1.0-rT))/(vtv*(model_.nfp)))));
2694  if ((isp_t>0.0))
2695  {
2696  if ((((model_.ikp)>0.0)&&(imaxMod>(model_.ikp))))
2697  {
2698  maxvIp = (((model_.nfp)*vtv.val())*log((1.0+(((imaxMod*imaxMod)*Iikp)/isp_t.val()))));
2699  }
2700  else
2701  {
2702  maxvIp = (((model_.nfp)*vtv.val())*log((1.0+(imaxMod/isp_t.val()))));
2703  }
2704  }
2705  else
2706  {
2707  maxvIp = 0.0;
2708  }
2709  ibei_t = (((model_.ibei)*pow(rT,((model_.xii)/(model_.nei))))*exp((((-(model_.eaie))*(1.0-rT))/(vtv*(model_.nei)))));
2710  if ((ibei_t>0.0))
2711  {
2712  maxvIbei = (((model_.nei)*vtv.val())*log((1.0+(imaxMod/ibei_t.val()))));
2713  }
2714  else
2715  {
2716  maxvIbei = 0.0;
2717  }
2718  iben_t = (((model_.iben)*pow(rT,((model_.xin)/(model_.nen))))*exp((((-(model_.eane))*(1.0-rT))/(vtv*(model_.nen)))));
2719  if ((iben_t>0.0))
2720  {
2721  maxvIben = (((model_.nen)*vtv.val())*log((1.0+(imaxMod/iben_t.val()))));
2722  }
2723  else
2724  {
2725  maxvIben = 0.0;
2726  }
2727  ibci_t = (((model_.ibci)*pow(rT,((model_.xii)/(model_.nci))))*exp((((-(model_.eaic))*(1.0-rT))/(vtv*(model_.nci)))));
2728  if ((ibci_t>0.0))
2729  {
2730  maxvIbci = (((model_.nci)*vtv.val())*log((1.0+(imaxMod/ibci_t.val()))));
2731  }
2732  else
2733  {
2734  maxvIbci = 0.0;
2735  }
2736  ibcn_t = (((model_.ibcn)*pow(rT,((model_.xin)/(model_.ncn))))*exp((((-(model_.eanc))*(1.0-rT))/(vtv*(model_.ncn)))));
2737  if ((ibcn_t>0.0))
2738  {
2739  maxvIbcn = (((model_.ncn)*vtv.val())*log((1.0+(imaxMod/ibcn_t.val()))));
2740  }
2741  else
2742  {
2743  maxvIbcn = 0.0;
2744  }
2745  ibeip_t = (((model_.ibeip)*pow(rT,((model_.xii)/(model_.nci))))*exp((((-(model_.eaic))*(1.0-rT))/(vtv*(model_.nci)))));
2746  if ((ibeip_t>0.0))
2747  {
2748  maxvIbeip = (((model_.nci)*vtv.val())*log((1.0+(imaxMod/ibeip_t.val()))));
2749  }
2750  else
2751  {
2752  maxvIbeip = 0.0;
2753  }
2754  ibenp_t = (((model_.ibenp)*pow(rT,((model_.xin)/(model_.ncn))))*exp((((-(model_.eanc))*(1.0-rT))/(vtv*(model_.ncn)))));
2755  if ((ibenp_t>0.0))
2756  {
2757  maxvIbenp = (((model_.ncn)*vtv.val())*log((1.0+(imaxMod/ibenp_t.val()))));
2758  }
2759  else
2760  {
2761  maxvIbenp = 0.0;
2762  }
2763  ibcip_t = (((model_.ibcip)*pow(rT,((model_.xii)/(model_.ncip))))*exp((((-(model_.eais))*(1.0-rT))/(vtv*(model_.ncip)))));
2764  if ((ibcip_t>0.0))
2765  {
2766  maxvIbcip = (((model_.ncip)*vtv.val())*log((1.0+(imaxMod/ibcip_t.val()))));
2767  }
2768  else
2769  {
2770  maxvIbcip = 0.0;
2771  }
2772  ibcnp_t = (((model_.ibcnp)*pow(rT,((model_.xin)/(model_.ncnp))))*exp((((-(model_.eans))*(1.0-rT))/(vtv*(model_.ncnp)))));
2773  if ((ibcnp_t>0.0))
2774  {
2775  maxvIbcnp = (((model_.ncnp)*vtv.val())*log((1.0+(imaxMod/ibcnp_t.val()))));
2776  }
2777  else
2778  {
2779  maxvIbcnp = 0.0;
2780  }
2781  }
2782  // End block initializeInstance
2783 
2784  // Manually inserted code for voltage drop initialization
2786  {
2787  Vbci_limited = Vbcx_limited = Vbxcx_limited = Vbep_limited = 0;
2788  Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
2789  dt_et_limited = 0;
2790  origFlag = false;
2791  }
2792 
2793  //Begin block evaluateStatic
2794  {
2795 
2796 
2797  //dt_et = ($limit(Temp(dt,GND),"limRTH"));
2799  {
2800  int icheck=0;
2801  dt_et_limited = AnalogFunctions::limRTH(dt_et_limited,dt_et_old);
2802  if (dt_et_limited != dt_et_orig)
2803  {
2804  icheck=1;
2805  }
2806  if (icheck == 1)
2807  origFlag = false;
2808  if (!origFlag)
2809  {
2810  probeDiffs[admsProbeID_Temp_dt_GND] = dt_et_limited - dt_et_orig;
2812  }
2813  }
2815 
2816  tdevC = (((admsTemperature+trise)+dt_et)-273.15);
2817  if ((tdevC<((model_.tminclip)+1.0)))
2818  {
2819  tdevC = ((model_.tminclip)+exp(((tdevC-(model_.tminclip))-1.0)));
2820  }
2821  else
2822  {
2823  if ((tdevC>((model_.tmaxclip)-1.0)))
2824  {
2825  tdevC = ((model_.tmaxclip)-exp((((model_.tmaxclip)-tdevC)-1.0)));
2826  }
2827  else
2828  {
2829  tdevC = tdevC;
2830  }
2831  }
2832  tdevK = (tdevC+273.15);
2833  vtv = ((1.380662e-23*tdevK)/1.602189e-19);
2834  rT = (tdevK/tiniK);
2835  dT = (tdevK-tiniK);
2836  ikf_t = ((model_.ikf)*pow(rT,(model_.xikf)));
2837  if ((model_.given("xrcx")))
2838  {
2839  rcx_t = ((model_.rcx)*pow(rT,(model_.xrcx)));
2840  }
2841  else
2842  {
2843  rcx_t = ((model_.rcx)*pow(rT,(model_.xrc)));
2844  }
2845  if ((model_.given("xrci")))
2846  {
2847  rci_t = ((model_.rci)*pow(rT,(model_.xrci)));
2848  }
2849  else
2850  {
2851  rci_t = ((model_.rci)*pow(rT,(model_.xrc)));
2852  }
2853  if ((model_.given("xrbx")))
2854  {
2855  rbx_t = ((model_.rbx)*pow(rT,(model_.xrbx)));
2856  }
2857  else
2858  {
2859  rbx_t = ((model_.rbx)*pow(rT,(model_.xrb)));
2860  }
2861  if ((model_.given("xrbi")))
2862  {
2863  rbi_t = ((model_.rbi)*pow(rT,(model_.xrbi)));
2864  }
2865  else
2866  {
2867  rbi_t = ((model_.rbi)*pow(rT,(model_.xrb)));
2868  }
2869  re_t = ((model_.re)*pow(rT,(model_.xre)));
2870  rs_t = ((model_.rs)*pow(rT,(model_.xrs)));
2871  if ((model_.given("xrbp")))
2872  {
2873  rbp_t = ((model_.rbp)*pow(rT,(model_.xrbp)));
2874  }
2875  else
2876  {
2877  rbp_t = ((model_.rbp)*pow(rT,(model_.xrc)));
2878  }
2879  rth_t = ((model_.rth)*(1.0+(dT*(model_.tcrth))));
2880  is_t = (((model_.is)*pow(rT,((model_.xis)/(model_.nf))))*exp((((-(model_.ea))*(1.0-rT))/(vtv*(model_.nf)))));
2881  isrr_t = (((model_.isrr)*pow(rT,((model_.xisr)/(model_.nr))))*exp((((-(model_.dear))*(1.0-rT))/(vtv*(model_.nr)))));
2882  isp_t = (((model_.isp)*pow(rT,((model_.xis)/(model_.nfp))))*exp((((-(model_.eap))*(1.0-rT))/(vtv*(model_.nfp)))));
2883  ibei_t = (((model_.ibei)*pow(rT,((model_.xii)/(model_.nei))))*exp((((-(model_.eaie))*(1.0-rT))/(vtv*(model_.nei)))));
2884  iben_t = (((model_.iben)*pow(rT,((model_.xin)/(model_.nen))))*exp((((-(model_.eane))*(1.0-rT))/(vtv*(model_.nen)))));
2885  ibci_t = (((model_.ibci)*pow(rT,((model_.xii)/(model_.nci))))*exp((((-(model_.eaic))*(1.0-rT))/(vtv*(model_.nci)))));
2886  ibcn_t = (((model_.ibcn)*pow(rT,((model_.xin)/(model_.ncn))))*exp((((-(model_.eanc))*(1.0-rT))/(vtv*(model_.ncn)))));
2887  ibeip_t = (((model_.ibeip)*pow(rT,((model_.xii)/(model_.nci))))*exp((((-(model_.eaic))*(1.0-rT))/(vtv*(model_.nci)))));
2888  ibenp_t = (((model_.ibenp)*pow(rT,((model_.xin)/(model_.ncn))))*exp((((-(model_.eanc))*(1.0-rT))/(vtv*(model_.ncn)))));
2889  ibcip_t = (((model_.ibcip)*pow(rT,((model_.xii)/(model_.ncip))))*exp((((-(model_.eais))*(1.0-rT))/(vtv*(model_.ncip)))));
2890  ibcnp_t = (((model_.ibcnp)*pow(rT,((model_.xin)/(model_.ncnp))))*exp((((-(model_.eans))*(1.0-rT))/(vtv*(model_.ncnp)))));
2891  nf_t = ((model_.nf)*(1.0+(dT*(model_.tnf))));
2892  nr_t = ((model_.nr)*(1.0+(dT*(model_.tnf))));
2893  avc2_t = ((model_.avc2)*(1.0+(dT*(model_.tavc))));
2894  avcx2_t = ((model_.avcx2)*(1.0+(dT*(model_.tavcx))));
2895  vbbe_t = ((model_.vbbe)*(1.0+(dT*((model_.tvbbe1)+(dT*(model_.tvbbe2))))));
2896  nbbe_t = ((model_.nbbe)*(1.0+(dT*(model_.tnbbe))));
2897  //Begin block pePsibiBlock
2898  {
2899  //Block-local variables for block pePsibiBlock
2900  AdmsFadType psiio;
2901  AdmsFadType psiin;
2902  //End of Block-local variables
2903  psiio = ((2.0*(vtv/rT))*log((exp((((0.5*(model_.pe))*rT)/vtv))-exp(((((-0.5)*(model_.pe))*rT)/vtv)))));
2904  psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-((model_.eaie)*(rT-1.0)));
2905  pe_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
2906  }
2907  // End block pePsibiBlock
2908  //Begin block pcPsibiBlock
2909  {
2910  //Block-local variables for block pcPsibiBlock
2911  AdmsFadType psiio;
2912  AdmsFadType psiin;
2913  //End of Block-local variables
2914  psiio = ((2.0*(vtv/rT))*log((exp((((0.5*(model_.pc))*rT)/vtv))-exp(((((-0.5)*(model_.pc))*rT)/vtv)))));
2915  psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-((model_.eaic)*(rT-1.0)));
2916  pc_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
2917  }
2918  // End block pcPsibiBlock
2919  //Begin block psPsibiBlock
2920  {
2921  //Block-local variables for block psPsibiBlock
2922  AdmsFadType psiio;
2923  AdmsFadType psiin;
2924  //End of Block-local variables
2925  psiio = ((2.0*(vtv/rT))*log((exp((((0.5*(model_.ps))*rT)/vtv))-exp(((((-0.5)*(model_.ps))*rT)/vtv)))));
2926  psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-((model_.eais)*(rT-1.0)));
2927  ps_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
2928  }
2929  // End block psPsibiBlock
2930  cje_t = ((model_.cje)*pow(((model_.pe)/pe_t),(model_.me)));
2931  cjc_t = ((model_.cjc)*pow(((model_.pc)/pc_t),(model_.mc)));
2932  cjep_t = ((model_.cjep)*pow(((model_.pc)/pc_t),(model_.mc)));
2933  cjcp_t = ((model_.cjcp)*pow(((model_.ps)/ps_t),(model_.ms)));
2934  gamm_t = (((model_.gamm)*pow(rT,(model_.xis)))*exp((((-(model_.ea))*(1.0-rT))/vtv)));
2935  vo_t = ((model_.vo)*pow(rT,(model_.xvo)));
2936  ebbe_t = exp(((-vbbe_t)/(nbbe_t*vtv)));
2937  vef_t = ((model_.vef)*(1.0+(dT*(model_.tcvef))));
2938  ver_t = ((model_.ver)*(1.0+(dT*(model_.tcver))));
2939  Gcx = adms_ternary_op<AdmsFadType>((rcx_t>1.0e-3),(1.0/rcx_t),1.0e3);
2940  Gci = adms_ternary_op<AdmsFadType>((rci_t>1.0e-3),(1.0/rci_t),1.0e3);
2941  Gbx = adms_ternary_op<AdmsFadType>((rbx_t>1.0e-3),(1.0/rbx_t),1.0e3);
2942  Gbi = adms_ternary_op<AdmsFadType>((rbi_t>1.0e-3),(1.0/rbi_t),1.0e3);
2943  Ge = adms_ternary_op<AdmsFadType>((re_t>1.0e-3),(1.0/re_t),1.0e3);
2944  Gbp = adms_ternary_op<AdmsFadType>((rbp_t>1.0e-3),(1.0/rbp_t),1.0e3);
2945  Gs = adms_ternary_op<AdmsFadType>((rs_t>1.0e-3),(1.0/rs_t),1.0e3);
2946  Gth = adms_ternary_op<AdmsFadType>((rth_t>1.0e-3),(1.0/rth_t),1.0e3);
2947  Ivef = adms_ternary_op<AdmsFadType>((vef_t>0.0),(1.0/vef_t),0.0);
2948  Iver = adms_ternary_op<AdmsFadType>((ver_t>0.0),(1.0/ver_t),0.0);
2949  Iikf = adms_ternary_op<AdmsFadType>((ikf_t>0.0),(1.0/ikf_t),0.0);
2950  Ivo = adms_ternary_op<AdmsFadType>((vo_t>0.0),(1.0/vo_t),0.0);
2951 
2952 
2953  //Vbei = ($limit(V(bi,ei),"typedpnjlim_new",$vt(),tVCrit,VBICtype));
2954  if (getDeviceOptions().voltageLimiterFlag)
2955  {
2956  int icheck=0;
2957  Vbei_limited = devSupport.pnjlim_new(Vbei_limited,Vbei_old,adms_vt_nom,tVCrit,&icheck);
2958  if (icheck == 1)
2959  origFlag = false;
2960  if (!origFlag)
2961  {
2962  probeDiffs[admsProbeID_V_bi_ei] = Vbei_limited - Vbei_orig;
2964  }
2965  }
2967 
2968 
2969 
2970  //Vbex = ($limit(V(bx,ei),"typedpnjlim_new",$vt(),tVCrit,VBICtype));
2971  if (getDeviceOptions().voltageLimiterFlag)
2972  {
2973  int icheck=0;
2974  Vbex_limited = devSupport.pnjlim_new(Vbex_limited,Vbex_old,adms_vt_nom,tVCrit,&icheck);
2975  if (icheck == 1)
2976  origFlag = false;
2977  if (!origFlag)
2978  {
2979  probeDiffs[admsProbeID_V_bx_ei] = Vbex_limited - Vbex_orig;
2981  }
2982  }
2984 
2985 
2986 
2987  //Vbci = ($limit(V(bi,ci),"typedpnjlim_new",$vt(),tVCrit,VBICtype));
2988  if (getDeviceOptions().voltageLimiterFlag)
2989  {
2990  int icheck=0;
2991  Vbci_limited = devSupport.pnjlim_new(Vbci_limited,Vbci_old,adms_vt_nom,tVCrit,&icheck);
2992  if (icheck == 1)
2993  origFlag = false;
2994  if (!origFlag)
2995  {
2996  probeDiffs[admsProbeID_V_bi_ci] = Vbci_limited - Vbci_orig;
2998  }
2999  }
3001 
3002 
3003 
3004  //Vbcx = ($limit(V(bi,cx),"typedpnjlim_new",$vt(),tVCrit,VBICtype));
3005  if (getDeviceOptions().voltageLimiterFlag)
3006  {
3007  int icheck=0;
3008  Vbcx_limited = devSupport.pnjlim_new(Vbcx_limited,Vbcx_old,adms_vt_nom,tVCrit,&icheck);
3009  if (icheck == 1)
3010  origFlag = false;
3011  if (!origFlag)
3012  {
3013  probeDiffs[admsProbeID_V_bi_cx] = Vbcx_limited - Vbcx_orig;
3015  }
3016  }
3018 
3019 
3020 
3021  //Vbxcx = ($limit(V(bx,cx),"typedpnjlim_new",$vt(),tVCrit,VBICtype));
3022  if (getDeviceOptions().voltageLimiterFlag)
3023  {
3024  int icheck=0;
3025  Vbxcx_limited = devSupport.pnjlim_new(Vbxcx_limited,Vbxcx_old,adms_vt_nom,tVCrit,&icheck);
3026  if (icheck == 1)
3027  origFlag = false;
3028  if (!origFlag)
3029  {
3030  probeDiffs[admsProbeID_V_bx_cx] = Vbxcx_limited - Vbxcx_orig;
3032  }
3033  }
3034  Vbxcx = probeVars[admsProbeID_V_bx_cx];
3035 
3037 
3038 
3039  //Vbep = ($limit(V(bx,bp),"typedpnjlim_new",$vt(),tVCrit,VBICtype));
3041  {
3042  int icheck=0;
3043  Vbep_limited = devSupport.pnjlim_new(Vbep_limited,Vbep_old,adms_vt_nom,tVCrit,&icheck);
3044  if (icheck == 1)
3045  origFlag = false;
3046  if (!origFlag)
3047  {
3048  probeDiffs[admsProbeID_V_bx_bp] = Vbep_limited - Vbep_orig;
3050  }
3051  }
3053 
3054 
3055 
3056  //Vbe = ($limit(V(b,e),"dummy",$vt(),tVCrit));
3057  if (getDeviceOptions().voltageLimiterFlag)
3058  {
3059  int icheck=0;
3060  // dummy limiting for initialization purposes
3061  if (icheck == 1)
3062  origFlag = false;
3063  if (!origFlag)
3064  {
3065  probeDiffs[admsProbeID_V_b_e] = Vbe_limited - Vbe_orig;
3067  }
3068  }
3070 
3071  Vbc = (probeVars[admsProbeID_V_b_c]);
3072  Vrcx = (probeVars[admsProbeID_V_c_cx]);
3074  Vrbx = (probeVars[admsProbeID_V_b_bx]);
3075  Vrbi = (probeVars[admsProbeID_V_bx_bi]);
3076  Vre = (probeVars[admsProbeID_V_e_ei]);
3077  Vrbp = (probeVars[admsProbeID_V_bp_cx]);
3078  Vxf1 = (probeVars[admsProbeID_V_xf1_GND]);
3079  Vxf2 = (probeVars[admsProbeID_V_xf2_GND]);
3080  //Begin block qdbeBlock
3081  {
3082  //Block-local variables for block qdbeBlock
3083  AdmsFadType dv0;
3084  AdmsFadType dvh;
3085  double pwq;
3086  AdmsFadType qlo;
3087  AdmsFadType qhi;
3088  AdmsFadType mv0;
3089  AdmsFadType vl0;
3090  AdmsFadType q0;
3091  AdmsFadType dv;
3092  AdmsFadType mv;
3093  AdmsFadType vl;
3094  //End of Block-local variables
3095  dv0 = ((-pe_t)*(model_.fc));
3096  if (((model_.aje)<=0.0))
3097  {
3098  dvh = (Vbei+dv0);
3099  if ((dvh>0.0))
3100  {
3101  pwq = pow((1.0-(model_.fc)),(-(model_.me)));
3102  qlo = ((pe_t*(1.0-(pwq*(1.0-(model_.fc)))))/(1.0-(model_.me)));
3103  qhi = ((dvh*(1.0+(((0.5*(model_.me))*dvh)/(pe_t*(1.0-(model_.fc))))))*pwq);
3104  }
3105  else
3106  {
3107  qlo = ((pe_t*(1.0-pow((1.0-(Vbei/pe_t)),(1.0-(model_.me)))))/(1.0-(model_.me)));
3108  qhi = 0.0;
3109  }
3110  qdbe = (qlo+qhi);
3111  }
3112  else
3113  {
3114  mv0 = sqrt(((dv0*dv0)+((4.0*(model_.aje))*(model_.aje))));
3115  vl0 = ((-0.5)*(dv0+mv0));
3116  q0 = (((-pe_t)*pow((1.0-(vl0/pe_t)),(1.0-(model_.me))))/(1.0-(model_.me)));
3117  dv = (Vbei+dv0);
3118  mv = sqrt(((dv*dv)+((4.0*(model_.aje))*(model_.aje))));
3119  vl = ((0.5*(dv-mv))-dv0);
3120  qlo = (((-pe_t)*pow((1.0-(vl/pe_t)),(1.0-(model_.me))))/(1.0-(model_.me)));
3121  qdbe = ((qlo+((pow((1.0-(model_.fc)),(-(model_.me)))*((Vbei-vl)+vl0))*(1.0+(((0.5*(model_.me))*((Vbei-vl)+vl0))/(pe_t*(1.0-(model_.fc)))))))-q0);
3122  }
3123  }
3124  // End block qdbeBlock
3125  //Begin block qdbcBlock
3126  {
3127  //Block-local variables for block qdbcBlock
3128  AdmsFadType dv0;
3129  AdmsFadType dvh;
3130  double pwq;
3131  AdmsFadType qlo;
3132  AdmsFadType qhi;
3133  AdmsFadType vn0;
3134  AdmsFadType vnl0;
3135  AdmsFadType vl0;
3136  AdmsFadType qlo0;
3137  AdmsFadType vn;
3138  AdmsFadType vnl;
3139  AdmsFadType vl;
3140  AdmsFadType sel;
3141  AdmsFadType crt;
3142  AdmsFadType cmx;
3143  AdmsFadType cl;
3144  AdmsFadType ql;
3145  AdmsFadType mv0;
3146  AdmsFadType q0;
3147  AdmsFadType dv;
3148  AdmsFadType mv;
3149  //End of Block-local variables
3150  dv0 = ((-pc_t)*(model_.fc));
3151  if (((model_.ajc)<=0.0))
3152  {
3153  dvh = (Vbci+dv0);
3154  if ((dvh>0.0))
3155  {
3156  pwq = pow((1.0-(model_.fc)),((-1.0)-(model_.mc)));
3157  qlo = ((pc_t*(1.0-((pwq*(1.0-(model_.fc)))*(1.0-(model_.fc)))))/(1.0-(model_.mc)));
3158  qhi = ((dvh*((1.0-(model_.fc))+(((0.5*(model_.mc))*dvh)/pc_t)))*pwq);
3159  }
3160  else
3161  {
3162  if ((((model_.vrt)>0.0)&&(Vbci<(-(model_.vrt)))))
3163  {
3164  qlo = ((pc_t*(1.0-(pow((1.0+((model_.vrt)/pc_t)),(1.0-(model_.mc)))*(1.0-(((1.0-(model_.mc))*(Vbci+(model_.vrt)))/(pc_t+(model_.vrt)))))))/(1.0-(model_.mc)));
3165  }
3166  else
3167  {
3168  qlo = ((pc_t*(1.0-pow((1.0-(Vbci/pc_t)),(1.0-(model_.mc)))))/(1.0-(model_.mc)));
3169  }
3170  qhi = 0.0;
3171  }
3172  qdbc = (qlo+qhi);
3173  }
3174  else
3175  {
3176  if ((((model_.vrt)>0.0)&&((model_.art)>0.0)))
3177  {
3178  vn0 = (((model_.vrt)+dv0)/((model_.vrt)-dv0));
3179  vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*(model_.ajc))*(model_.ajc))))+sqrt((((vn0+1.0)*(vn0+1))+((4*(model_.art))*(model_.art))))));
3180  vl0 = (0.5*(((vnl0*((model_.vrt)-dv0))-(model_.vrt))-dv0));
3181  qlo0 = ((pc_t*(1.0-pow((1.0-(vl0/pc_t)),(1.0-(model_.mc)))))/(1.0-(model_.mc)));
3182  vn = ((((2*Vbci)+(model_.vrt))+dv0)/((model_.vrt)-dv0));
3183  vnl = ((2.0*vn)/(sqrt((((vn-1.0)*(vn-1))+((4*(model_.ajc))*(model_.ajc))))+sqrt((((vn+1.0)*(vn+1))+((4*(model_.art))*(model_.art))))));
3184  vl = (0.5*(((vnl*((model_.vrt)-dv0))-(model_.vrt))-dv0));
3185  qlo = ((pc_t*(1.0-pow((1.0-(vl/pc_t)),(1.0-(model_.mc)))))/(1.0-(model_.mc)));
3186  sel = (0.5*(vnl+1.0));
3187  crt = pow((1.0+((model_.vrt)/pc_t)),(-(model_.mc)));
3188  cmx = pow((1.0+(dv0/pc_t)),(-(model_.mc)));
3189  cl = (((1.0-sel)*crt)+(sel*cmx));
3190  ql = (((Vbci-vl)+vl0)*cl);
3191  qdbc = ((ql+qlo)-qlo0);
3192  }
3193  else
3194  {
3195  mv0 = sqrt(((dv0*dv0)+((4*(model_.ajc))*(model_.ajc))));
3196  vl0 = ((-0.5)*(dv0+mv0));
3197  q0 = (((-pc_t)*pow((1.0-(vl0/pc_t)),(1.0-(model_.mc))))/(1.0-(model_.mc)));
3198  dv = (Vbci+dv0);
3199  mv = sqrt(((dv*dv)+((4*(model_.ajc))*(model_.ajc))));
3200  vl = ((0.5*(dv-mv))-dv0);
3201  qlo = (((-pc_t)*pow((1.0-(vl/pc_t)),(1.0-(model_.mc))))/(1.0-(model_.mc)));
3202  qdbc = ((qlo+(pow((1.0-(model_.fc)),(-(model_.mc)))*((Vbci-vl)+vl0)))-q0);
3203  }
3204  }
3205  }
3206  // End block qdbcBlock
3207  afac = (1.0/(nf_t*vtv));
3208  if ((Vbei<maxvIfi))
3209  {
3210  expi = exp((Vbei*afac));
3211  }
3212  else
3213  {
3214  expi = (exp((maxvIfi*afac))*(1.0+((Vbei-maxvIfi)*afac)));
3215  }
3216  Ifi = (is_t*(expi-1.0));
3217  afac = (1.0/(nr_t*vtv));
3218  if ((Vbci<maxvIri))
3219  {
3220  expi = exp((Vbci*afac));
3221  }
3222  else
3223  {
3224  expi = (exp((maxvIri*afac))*(1.0+((Vbci-maxvIri)*afac)));
3225  }
3226  Iri = ((is_t*isrr_t)*(expi-1.0));
3227  q1z = (((1.0+(qdbe*Iver))+(qdbc*Ivef))-1.0e-4);
3228  q1 = ((0.5*(sqrt(((q1z*q1z)+1.0e-8))+q1z))+1.0e-4);
3229  q2 = ((Ifi*Iikf)+(Iri*Iikr));
3230  if (((model_.qbm)<0.5))
3231  {
3232  arg = (pow(q1,(1.0/(model_.nkf)))+(4.0*q2));
3233  if ((arg>1.0e-8))
3234  {
3235  qb = (0.5*(q1+pow(arg,(model_.nkf))));
3236  }
3237  else
3238  {
3239  qb = (0.5*(q1+pow(1.0e-8,(model_.nkf))));
3240  }
3241  }
3242  else
3243  {
3244  arg = (1.0+(4.0*q2));
3245  if ((arg>1.0e-8))
3246  {
3247  qb = ((0.5*q1)*(1.0+pow(arg,(model_.nkf))));
3248  }
3249  else
3250  {
3251  qb = ((0.5*q1)*(1.0+pow(1.0e-8,(model_.nkf))));
3252  }
3253  }
3254  Itzr = (Iri/qb);
3255  Itzf = (Ifi/qb);
3256  Itxf = Vxf2;
3257  if (((model_.isp)>0.0))
3258  {
3259  afac = (1.0/((model_.nfp)*vtv));
3260  if ((Vbep<maxvIp))
3261  {
3262  expi = exp((Vbep*afac));
3263  }
3264  else
3265  {
3266  expi = (exp((maxvIp*afac))*(1.0+((Vbep-maxvIp)*afac)));
3267  }
3268  if ((Vbci<maxvIp))
3269  {
3270  expx = exp((Vbci*afac));
3271  }
3272  else
3273  {
3274  expx = (exp((maxvIp*afac))*(1.0+((Vbci-maxvIp)*afac)));
3275  }
3276  Ifp = (isp_t*((((model_.wsp)*expi)+((1.0-(model_.wsp))*expx))-1.0));
3277  q2p = (Ifp*Iikp);
3278  arg = (1.0+(4.0*q2p));
3279  if ((arg>1.0e-8))
3280  {
3281  qbp = (0.5*(1.0+sqrt(arg)));
3282  }
3283  else
3284  {
3285  qbp = (0.5*(1.0+sqrt(1.0e-8)));
3286  }
3287  }
3288  else
3289  {
3290  Ifp = 0.0;
3291  qbp = 1.0;
3292  }
3293  if (((model_.wbe)==1.0))
3294  {
3295  afac = (1.0/((model_.nei)*vtv));
3296  if ((Vbei<maxvIbei))
3297  {
3298  expi = exp((Vbei*afac));
3299  }
3300  else
3301  {
3302  expi = (exp((maxvIbei*afac))*(1.0+((Vbei-maxvIbei)*afac)));
3303  }
3304  afac = (1.0/((model_.nen)*vtv));
3305  if ((Vbei<maxvIben))
3306  {
3307  expn = exp((Vbei*afac));
3308  }
3309  else
3310  {
3311  expn = (exp((maxvIben*afac))*(1.0+((Vbei-maxvIben)*afac)));
3312  }
3313  if (((model_.qnibeir)>0.0))
3314  {
3315  Ibe = (((ibei_t*(1.0+((model_.qnibeir)*(q1-1.0))))*(expi-1.0))+(iben_t*(expn-1.0)));
3316  }
3317  else
3318  {
3319  Ibe = ((ibei_t*(expi-1.0))+(iben_t*(expn-1.0)));
3320  }
3321  if (((model_.vbbe)>0.0))
3322  {
3323  Bvbe = ((-vbbe_t)-Vbei);
3324  afac = (1.0/(nbbe_t*vtv));
3325  if ((Bvbe<maxvIbbe))
3326  {
3327  expx = exp((Bvbe*afac));
3328  }
3329  else
3330  {
3331  expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
3332  }
3333  Ibe = (Ibe-((model_.ibbe)*(expx-ebbe_t)));
3334  }
3335  Ibex = 0.0;
3336  }
3337  else
3338  {
3339  if (((model_.wbe)==0.0))
3340  {
3341  Ibe = 0.0;
3342  afac = (1.0/((model_.nei)*vtv));
3343  if ((Vbex<maxvIbei))
3344  {
3345  expi = exp((Vbex*afac));
3346  }
3347  else
3348  {
3349  expi = (exp((maxvIbei*afac))*(1.0+((Vbex-maxvIbei)*afac)));
3350  }
3351  afac = (1.0/((model_.nen)*vtv));
3352  if ((Vbex<maxvIben))
3353  {
3354  expn = exp((Vbex*afac));
3355  }
3356  else
3357  {
3358  expn = (exp((maxvIben*afac))*(1.0+((Vbex-maxvIben)*afac)));
3359  }
3360  Ibex = ((ibei_t*(expi-1.0))+(iben_t*(expn-1.0)));
3361  if (((model_.vbbe)>0.0))
3362  {
3363  Bvbe = ((-vbbe_t)-Vbei);
3364  afac = (1.0/(nbbe_t*vtv));
3365  if ((Bvbe<maxvIbbe))
3366  {
3367  expx = exp((Bvbe*afac));
3368  }
3369  else
3370  {
3371  expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
3372  }
3373  Ibex = (Ibex-((model_.ibbe)*(expx-ebbe_t)));
3374  }
3375  }
3376  else
3377  {
3378  afac = (1.0/((model_.nei)*vtv));
3379  if ((Vbei<maxvIbei))
3380  {
3381  expi = exp((Vbei*afac));
3382  }
3383  else
3384  {
3385  expi = (exp((maxvIbei*afac))*(1.0+((Vbei-maxvIbei)*afac)));
3386  }
3387  afac = (1.0/((model_.nen)*vtv));
3388  if ((Vbei<maxvIben))
3389  {
3390  expn = exp((Vbei*afac));
3391  }
3392  else
3393  {
3394  expn = (exp((maxvIben*afac))*(1.0+((Vbei-maxvIben)*afac)));
3395  }
3396  if (((model_.qnibeir)>0.0))
3397  {
3398  Ibe = ((model_.wbe)*(((ibei_t*(1.0+((model_.qnibeir)*(q1-1.0))))*(expi-1.0))+(iben_t*(expn-1.0))));
3399  }
3400  else
3401  {
3402  Ibe = ((model_.wbe)*((ibei_t*(expi-1.0))+(iben_t*(expn-1.0))));
3403  }
3404  if (((model_.vbbe)>0.0))
3405  {
3406  Bvbe = ((-vbbe_t)-Vbei);
3407  afac = (1.0/(nbbe_t*vtv));
3408  if ((Bvbe<maxvIbbe))
3409  {
3410  expx = exp((Bvbe*afac));
3411  }
3412  else
3413  {
3414  expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
3415  }
3416  Ibe = (Ibe-(((model_.wbe)*(model_.ibbe))*(expx-ebbe_t)));
3417  }
3418  afac = (1.0/((model_.nei)*vtv));
3419  if ((Vbex<maxvIbei))
3420  {
3421  expi = exp((Vbex*afac));
3422  }
3423  else
3424  {
3425  expi = (exp((maxvIbei*afac))*(1.0+((Vbex-maxvIbei)*afac)));
3426  }
3427  afac = (1.0/((model_.nen)*vtv));
3428  if ((Vbex<maxvIben))
3429  {
3430  expn = exp((Vbex*afac));
3431  }
3432  else
3433  {
3434  expn = (exp((maxvIben*afac))*(1.0+((Vbex-maxvIben)*afac)));
3435  }
3436  Ibex = ((1.0-(model_.wbe))*((ibei_t*(expi-1.0))+(iben_t*(expn-1.0))));
3437  if (((model_.vbbe)>0.0))
3438  {
3439  Bvbe = ((-vbbe_t)-Vbei);
3440  afac = (1.0/(nbbe_t*vtv));
3441  if ((Bvbe<maxvIbbe))
3442  {
3443  expx = exp((Bvbe*afac));
3444  }
3445  else
3446  {
3447  expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
3448  }
3449  Ibex = (Ibex-(((1.0-(model_.wbe))*(model_.ibbe))*(expx-ebbe_t)));
3450  }
3451  }
3452  }
3453  afac = (1.0/((model_.nci)*vtv));
3454  if ((Vbci<maxvIbci))
3455  {
3456  expi = exp((Vbci*afac));
3457  }
3458  else
3459  {
3460  expi = (exp((maxvIbci*afac))*(1.0+((Vbci-maxvIbci)*afac)));
3461  }
3462  afac = (1.0/((model_.ncn)*vtv));
3463  if ((Vbci<maxvIbcn))
3464  {
3465  expn = exp((Vbci*afac));
3466  }
3467  else
3468  {
3469  expn = (exp((maxvIbcn*afac))*(1.0+((Vbci-maxvIbcn)*afac)));
3470  }
3471  Ibcj = ((ibci_t*(expi-1.0))+(ibcn_t*(expn-1.0)));
3472  if ((((model_.ibeip)>0.0)||((model_.ibenp)>0.0)))
3473  {
3474  afac = (1.0/((model_.nci)*vtv));
3475  if ((Vbep<maxvIbeip))
3476  {
3477  expi = exp((Vbep*afac));
3478  }
3479  else
3480  {
3481  expi = (exp((maxvIbeip*afac))*(1.0+((Vbep-maxvIbeip)*afac)));
3482  }
3483  afac = (1.0/((model_.ncn)*vtv));
3484  if ((Vbep<maxvIbenp))
3485  {
3486  expn = exp((Vbep*afac));
3487  }
3488  else
3489  {
3490  expn = (exp((maxvIbenp*afac))*(1.0+((Vbep-maxvIbenp)*afac)));
3491  }
3492  Ibep = ((ibeip_t*(expi-1.0))+(ibenp_t*(expn-1.0)));
3493  }
3494  else
3495  {
3496  Ibep = 0.0;
3497  }
3498  arg = (Vbci/vtv);
3499  if ((arg<VmaxExp))
3500  {
3501  expi = exp(arg);
3502  }
3503  else
3504  {
3505  expi = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
3506  }
3507  arg = (Vbcx/vtv);
3508  if ((arg<VmaxExp))
3509  {
3510  expx = exp(arg);
3511  }
3512  else
3513  {
3514  expx = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
3515  }
3516  Kbci = sqrt((1.0+(gamm_t*expi)));
3517  Kbcx = sqrt((1.0+(gamm_t*expx)));
3518  Ircx = (Vrcx*Gcx);
3519  rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
3520  Iohm = ((Vrci+(vtv*((Kbci-Kbcx)-log(rKp1))))*Gci);
3521  derf = ((Ivo*Iohm)/(Gci*(1.0+(((0.5*Ivo)*Ihrcf)*sqrt(((Vrci*Vrci)+0.01))))));
3522  Irci = (Iohm/sqrt((1+(derf*derf))));
3523  Irbx = (Vrbx*Gbx);
3524  Irbi = ((Vrbi*qb)*Gbi);
3525  Ire = (Vre*Ge);
3526  Irbp = ((Vrbp*qbp)*Gbp);
3527  if (((model_.avc1)>0.0))
3528  {
3529  //Begin block igcBlock
3530  {
3531  //Block-local variables for block igcBlock
3532  AdmsFadType vminm;
3533  AdmsFadType vl;
3534  AdmsFadType mac1;
3535  AdmsFadType expi;
3536  double expl;
3537  //End of Block-local variables
3538  vminm = pow((0.02*(avc2_t+1.0)),(1.0/(1.01-(model_.mc))));
3539  vl = ((0.5*(sqrt(((((pc_t-Vbci)-vminm)*((pc_t-Vbci)-vminm))+0.01))+((pc_t-Vbci)-vminm)))+vminm);
3540  mac1 = ((-avc2_t)*pow(vl,((model_.mc)-1.0)));
3541  if ((mac1<VmaxExp))
3542  {
3543  expi = exp(mac1);
3544  }
3545  else
3546  {
3547  expl = exp(VmaxExp);
3548  expi = (expl*(1.0+(mac1-VmaxExp)));
3549  }
3550  avalf = (((model_.avc1)*vl)*expi);
3551  }
3552  // End block igcBlock
3553  Igc = (((Itxf-Itzr)-Ibcj)*avalf);
3554  }
3555  else
3556  {
3557  Igc = 0.0;
3558  }
3559  if (((model_.avcx1)>0.0))
3560  {
3561  //Begin block igcxBlock
3562  {
3563  //Block-local variables for block igcxBlock
3564  AdmsFadType vminm;
3565  AdmsFadType vl;
3566  AdmsFadType mac1;
3567  AdmsFadType expi;
3568  double expl;
3569  //End of Block-local variables
3570  vminm = pow((0.02*(avcx2_t+1.0)),(1.0/(1.01-(model_.mcx))));
3571  vl = ((0.5*(sqrt(((((-Vbxcx)-vminm)*((-Vbxcx)-vminm))+0.01))+((-Vbxcx)-vminm)))+vminm);
3572  mac1 = ((-avcx2_t)*pow(vl,((model_.mcx)-1.0)));
3573  if ((mac1<VmaxExp))
3574  {
3575  expi = exp(mac1);
3576  }
3577  else
3578  {
3579  expl = exp(VmaxExp);
3580  expi = (expl*(1.0+(mac1-VmaxExp)));
3581  }
3582  avalf = (((model_.avcx1)*vl)*expi);
3583  }
3584  // End block igcxBlock
3585  Igcx = ((-Ircx)*avalf);
3586  }
3587  else
3588  {
3589  Igcx = 0.0;
3590  }
3591  if ((((model_.bbk)>0.0)&&((model_.ibk0)>0.0)))
3592  {
3593  if (((model_.vpte)>0.0))
3594  {
3595  VcbFac = ((1.0-(Vbci/(model_.vpte)))-0.1);
3596  VcbFac = (0.1+(0.5*(VcbFac+sqrt(((VcbFac*VcbFac)+1.0e-4)))));
3597  Iibk = ((model_.ibk0)*VcbFac);
3598  }
3599  else
3600  {
3601  Iibk = (model_.ibk0);
3602  }
3603  Ibk = ((model_.bbk)*pow(((Itzf/Iibk)-1.0),(model_.abk)));
3604  }
3605  else
3606  {
3607  Ibk = 0.0;
3608  }
3609  Ibc = ((Ibcj-Igc)-Ibk);
3610  power = (((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itxf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp));
3611  Ith = ((-sw_et)*power);
3612  Irth = (dt_et*Gth);
3613  Ixf1 = (Vxf2-Itzf);
3614  Ixf2 = (Vxf2-Vxf1);
3615  Ibe = (Ibe+(gminMod*Vbei));
3616  Ibex = (Ibex+(gminMod*Vbex));
3617  Ibep = (Ibep+(gminMod*Vbep));
3618  Ibc = (Ibc+(gminMod*Vbci));
3619  Igcx = (Igcx+(gminMod*Vbxcx));
3620  Ibe = (((model_.VBICtype)*mMod)*Ibe);
3621  Ibex = (((model_.VBICtype)*mMod)*Ibex);
3622  Itzf = (((model_.VBICtype)*mMod)*Itzf);
3623  Itxf = (((model_.VBICtype)*mMod)*Itxf);
3624  Itzr = (((model_.VBICtype)*mMod)*Itzr);
3625  Ibc = (((model_.VBICtype)*mMod)*Ibc);
3626  Igcx = (((model_.VBICtype)*mMod)*Igcx);
3627  Ibep = (((model_.VBICtype)*mMod)*Ibep);
3628  Ircx = (mMod*Ircx);
3629  Irci = (((model_.VBICtype)*mMod)*Irci);
3630  Irbx = (mMod*Irbx);
3631  Irbi = (mMod*Irbi);
3632  Ire = (mMod*Ire);
3633  Irbp = (mMod*Irbp);
3634  Ith = (mMod*Ith);
3635  Irth = (mMod*Irth);
3636  }
3637  // End block evaluateStatic
3638  //Begin block evaluateDynamic
3639  {
3640  //Begin block qdbexBlock
3641  {
3642  //Block-local variables for block qdbexBlock
3643  AdmsFadType dv0;
3644  AdmsFadType dvh;
3645  double pwq;
3646  AdmsFadType qlo;
3647  AdmsFadType qhi;
3648  AdmsFadType mv0;
3649  AdmsFadType vl0;
3650  AdmsFadType q0;
3651  AdmsFadType dv;
3652  AdmsFadType mv;
3653  AdmsFadType vl;
3654  //End of Block-local variables
3655  dv0 = ((-pe_t)*(model_.fc));
3656  if (((model_.aje)<=0.0))
3657  {
3658  dvh = (Vbex+dv0);
3659  if ((dvh>0.0))
3660  {
3661  pwq = pow((1.0-(model_.fc)),(-(model_.me)));
3662  qlo = ((pe_t*(1.0-(pwq*(1.0-(model_.fc)))))/(1.0-(model_.me)));
3663  qhi = ((dvh*(1.0+(((0.5*(model_.me))*dvh)/(pe_t*(1.0-(model_.fc))))))*pwq);
3664  }
3665  else
3666  {
3667  qlo = ((pe_t*(1.0-pow((1.0-(Vbex/pe_t)),(1.0-(model_.me)))))/(1.0-(model_.me)));
3668  qhi = 0.0;
3669  }
3670  qdbex = (qlo+qhi);
3671  }
3672  else
3673  {
3674  mv0 = sqrt(((dv0*dv0)+((4.0*(model_.aje))*(model_.aje))));
3675  vl0 = ((-0.5)*(dv0+mv0));
3676  q0 = (((-pe_t)*pow((1.0-(vl0/pe_t)),(1.0-(model_.me))))/(1.0-(model_.me)));
3677  dv = (Vbex+dv0);
3678  mv = sqrt(((dv*dv)+((4.0*(model_.aje))*(model_.aje))));
3679  vl = ((0.5*(dv-mv))-dv0);
3680  qlo = (((-pe_t)*pow((1.0-(vl/pe_t)),(1.0-(model_.me))))/(1.0-(model_.me)));
3681  qdbex = ((qlo+((pow((1.0-(model_.fc)),(-(model_.me)))*((Vbex-vl)+vl0))*(1.0+(((0.5*(model_.me))*((Vbex-vl)+vl0))/(pe_t*(1.0-(model_.fc)))))))-q0);
3682  }
3683  }
3684  // End block qdbexBlock
3685  //Begin block qdbepBlock
3686  {
3687  //Block-local variables for block qdbepBlock
3688  AdmsFadType dv0;
3689  AdmsFadType dvh;
3690  double pwq;
3691  AdmsFadType qlo;
3692  AdmsFadType qhi;
3693  AdmsFadType vn0;
3694  AdmsFadType vnl0;
3695  AdmsFadType vl0;
3696  AdmsFadType qlo0;
3697  AdmsFadType vn;
3698  AdmsFadType vnl;
3699  AdmsFadType vl;
3700  AdmsFadType sel;
3701  AdmsFadType crt;
3702  AdmsFadType cmx;
3703  AdmsFadType cl;
3704  AdmsFadType ql;
3705  AdmsFadType mv0;
3706  AdmsFadType q0;
3707  AdmsFadType dv;
3708  AdmsFadType mv;
3709  //End of Block-local variables
3710  dv0 = ((-pc_t)*(model_.fc));
3711  if (((model_.ajc)<=0.0))
3712  {
3713  dvh = (Vbep+dv0);
3714  if ((dvh>0.0))
3715  {
3716  pwq = pow((1.0-(model_.fc)),((-1.0)-(model_.mc)));
3717  qlo = ((pc_t*(1.0-((pwq*(1.0-(model_.fc)))*(1.0-(model_.fc)))))/(1.0-(model_.mc)));
3718  qhi = ((dvh*((1.0-(model_.fc))+(((0.5*(model_.mc))*dvh)/pc_t)))*pwq);
3719  }
3720  else
3721  {
3722  if ((((model_.vrt)>0.0)&&(Vbep<(-(model_.vrt)))))
3723  {
3724  qlo = ((pc_t*(1.0-(pow((1.0+((model_.vrt)/pc_t)),(1.0-(model_.mc)))*(1.0-(((1.0-(model_.mc))*(Vbep+(model_.vrt)))/(pc_t+(model_.vrt)))))))/(1.0-(model_.mc)));
3725  }
3726  else
3727  {
3728  qlo = ((pc_t*(1.0-pow((1.0-(Vbep/pc_t)),(1.0-(model_.mc)))))/(1.0-(model_.mc)));
3729  }
3730  qhi = 0.0;
3731  }
3732  qdbep = (qlo+qhi);
3733  }
3734  else
3735  {
3736  if ((((model_.vrt)>0.0)&&((model_.art)>0.0)))
3737  {
3738  vn0 = (((model_.vrt)+dv0)/((model_.vrt)-dv0));
3739  vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*(model_.ajc))*(model_.ajc))))+sqrt((((vn0+1.0)*(vn0+1))+((4*(model_.art))*(model_.art))))));
3740  vl0 = (0.5*(((vnl0*((model_.vrt)-dv0))-(model_.vrt))-dv0));
3741  qlo0 = ((pc_t*(1.0-pow((1.0-(vl0/pc_t)),(1.0-(model_.mc)))))/(1.0-(model_.mc)));
3742  vn = ((((2*Vbep)+(model_.vrt))+dv0)/((model_.vrt)-dv0));
3743  vnl = ((2.0*vn)/(sqrt((((vn-1.0)*(vn-1))+((4*(model_.ajc))*(model_.ajc))))+sqrt((((vn+1.0)*(vn+1))+((4*(model_.art))*(model_.art))))));
3744  vl = (0.5*(((vnl*((model_.vrt)-dv0))-(model_.vrt))-dv0));
3745  qlo = ((pc_t*(1.0-pow((1.0-(vl/pc_t)),(1.0-(model_.mc)))))/(1.0-(model_.mc)));
3746  sel = (0.5*(vnl+1.0));
3747  crt = pow((1.0+((model_.vrt)/pc_t)),(-(model_.mc)));
3748  cmx = pow((1.0+(dv0/pc_t)),(-(model_.mc)));
3749  cl = (((1.0-sel)*crt)+(sel*cmx));
3750  ql = (((Vbep-vl)+vl0)*cl);
3751  qdbep = ((ql+qlo)-qlo0);
3752  }
3753  else
3754  {
3755  mv0 = sqrt(((dv0*dv0)+((4*(model_.ajc))*(model_.ajc))));
3756  vl0 = ((-0.5)*(dv0+mv0));
3757  q0 = (((-pc_t)*pow((1.0-(vl0/pc_t)),(1.0-(model_.mc))))/(1.0-(model_.mc)));
3758  dv = (Vbep+dv0);
3759  mv = sqrt(((dv*dv)+((4*(model_.ajc))*(model_.ajc))));
3760  vl = ((0.5*(dv-mv))-dv0);
3761  qlo = (((-pc_t)*pow((1.0-(vl/pc_t)),(1.0-(model_.mc))))/(1.0-(model_.mc)));
3762  qdbep = ((qlo+(pow((1.0-(model_.fc)),(-(model_.mc)))*((Vbep-vl)+vl0)))-q0);
3763  }
3764  }
3765  }
3766  // End block qdbepBlock
3767  sgIf = ((Ifi>0.0)?1.0:0.0);
3768  rIf = ((Ifi*sgIf)*Iitf);
3769  mIf = (rIf/(rIf+1.0));
3770  arg = ((Vbci*Ivtf)/1.44);
3771  if ((arg<VmaxExp))
3772  {
3773  expi = exp(arg);
3774  }
3775  else
3776  {
3777  expi = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
3778  }
3779  tff = (((model_.tf)*(1.0+((model_.qtf)*q1)))*(1.0+((((model_.xtf)*expi)*(sltf+(mIf*mIf)))*sgIf)));
3780  Qbe = (((cje_t*qdbe)*(model_.wbe))+((tff*Ifi)/qb));
3781  Qbex = ((cje_t*qdbex)*(1.0-(model_.wbe)));
3782  Qbc = (((cjc_t*qdbc)+((model_.tr)*Iri))+((model_.qco)*Kbci));
3783  Qbcx = ((model_.qco)*Kbcx);
3784  Qbep = ((cjep_t*qdbep)+((model_.tr)*Ifp));
3785  Qbeo = (Vbe*(model_.cbeo));
3786  Qbco = (Vbc*(model_.cbco));
3787  Qcth = (dt_et*(model_.cth));
3788  Qxf1 = ((model_.td)*Vxf1);
3789  Qxf2 = (((model_.td)*Vxf2)*0.3333333333333333);
3790  Qbe = (((model_.VBICtype)*mMod)*Qbe);
3791  Qbex = (((model_.VBICtype)*mMod)*Qbex);
3792  Qbc = (((model_.VBICtype)*mMod)*Qbc);
3793  Qbcx = (((model_.VBICtype)*mMod)*Qbcx);
3794  Qbep = (((model_.VBICtype)*mMod)*Qbep);
3795  Qbeo = (mMod*Qbeo);
3796  Qbco = (mMod*Qbco);
3797  Qcth = (mMod*Qcth);
3798  }
3799  // End block evaluateDynamic
3800  //Begin block loadStatic
3801  {
3802  // I(bi,ei) <+ (Ibe)
3803  {
3804  AdmsFadType contribTemp;
3805  contribTemp= Ibe;
3806  staticContributions[admsNodeID_bi] += contribTemp;
3807  staticContributions[admsNodeID_ei] -= contribTemp;
3808 
3811  }
3812  // I(bx,ei) <+ (Ibex)
3813  {
3814  AdmsFadType contribTemp;
3815  contribTemp= Ibex;
3816  staticContributions[admsNodeID_bx] += contribTemp;
3817  staticContributions[admsNodeID_ei] -= contribTemp;
3818 
3821  }
3822  // I(ci,ei) <+ (Itxf)
3825  // I(ei,ci) <+ (Itzr)
3826  {
3827  AdmsFadType contribTemp;
3828  contribTemp= Itzr;
3829  staticContributions[admsNodeID_ei] += contribTemp;
3830  staticContributions[admsNodeID_ci] -= contribTemp;
3831 
3834  }
3835  // I(bi,ci) <+ (Ibc)
3836  {
3837  AdmsFadType contribTemp;
3838  contribTemp= Ibc;
3839  staticContributions[admsNodeID_bi] += contribTemp;
3840  staticContributions[admsNodeID_ci] -= contribTemp;
3841 
3844  }
3845  // I(bx,cx) <+ (Igcx)
3846  {
3847  AdmsFadType contribTemp;
3848  contribTemp= Igcx;
3849  staticContributions[admsNodeID_bx] += contribTemp;
3850  staticContributions[admsNodeID_cx] -= contribTemp;
3851 
3854  }
3855  // I(bx,bp) <+ (Ibep)
3856  {
3857  AdmsFadType contribTemp;
3858  contribTemp= Ibep;
3859  staticContributions[admsNodeID_bx] += contribTemp;
3860  staticContributions[admsNodeID_bp] -= contribTemp;
3861 
3864  }
3865  // I(c,cx) <+ (Ircx)
3866  {
3867  AdmsFadType contribTemp;
3868  contribTemp= Ircx;
3869  staticContributions[admsNodeID_c] += contribTemp;
3870  staticContributions[admsNodeID_cx] -= contribTemp;
3871 
3874  }
3875  // I(cx,ci) <+ (Irci)
3876  {
3877  AdmsFadType contribTemp;
3878  contribTemp= Irci;
3879  staticContributions[admsNodeID_cx] += contribTemp;
3880  staticContributions[admsNodeID_ci] -= contribTemp;
3881 
3884  }
3885  // I(b,bx) <+ (Irbx)
3886  {
3887  AdmsFadType contribTemp;
3888  contribTemp= Irbx;
3889  staticContributions[admsNodeID_b] += contribTemp;
3890  staticContributions[admsNodeID_bx] -= contribTemp;
3891 
3894  }
3895  // I(bx,bi) <+ (Irbi)
3896  {
3897  AdmsFadType contribTemp;
3898  contribTemp= Irbi;
3899  staticContributions[admsNodeID_bx] += contribTemp;
3900  staticContributions[admsNodeID_bi] -= contribTemp;
3901 
3904  }
3905  // I(e,ei) <+ (Ire)
3906  {
3907  AdmsFadType contribTemp;
3908  contribTemp= Ire;
3909  staticContributions[admsNodeID_e] += contribTemp;
3910  staticContributions[admsNodeID_ei] -= contribTemp;
3911 
3914  }
3915  // I(bp,cx) <+ (Irbp)
3916  {
3917  AdmsFadType contribTemp;
3918  contribTemp= Irbp;
3919  staticContributions[admsNodeID_bp] += contribTemp;
3920  staticContributions[admsNodeID_cx] -= contribTemp;
3921 
3924  }
3925  // I(xf1,GND) <+ (Ixf1)
3926  {
3927  AdmsFadType contribTemp;
3928  contribTemp= Ixf1;
3929  staticContributions[admsNodeID_xf1] += contribTemp;
3930 
3932  }
3933  // I(xf2,GND) <+ (Ixf2)
3935  // Pwr(dt,GND) <+ (Irth)
3936  {
3937  AdmsFadType contribTemp;
3938  contribTemp= Irth;
3939  staticContributions[admsNodeID_dt] += contribTemp;
3940 
3942  }
3943  // Pwr(dt,GND) <+ (Ith)
3944  {
3945  AdmsFadType contribTemp;
3946  contribTemp= Ith;
3947  staticContributions[admsNodeID_dt] += contribTemp;
3948 
3950  }
3951  }
3952  // End block loadStatic
3953  //Begin block loadDynamic
3954  {
3955  // I(bi,ei) <+ (ddt(Qbe))
3956  {
3957  AdmsFadType contribTemp;
3958  contribTemp= (Qbe);
3959  dynamicContributions[admsNodeID_bi] += contribTemp;
3960  dynamicContributions[admsNodeID_ei] -= contribTemp;
3961 
3964  }
3965  // I(bx,ei) <+ (ddt(Qbex))
3966  {
3967  AdmsFadType contribTemp;
3968  contribTemp= (Qbex);
3969  dynamicContributions[admsNodeID_bx] += contribTemp;
3970  dynamicContributions[admsNodeID_ei] -= contribTemp;
3971 
3974  }
3975  // I(bi,ci) <+ (ddt(Qbc))
3976  {
3977  AdmsFadType contribTemp;
3978  contribTemp= (Qbc);
3979  dynamicContributions[admsNodeID_bi] += contribTemp;
3980  dynamicContributions[admsNodeID_ci] -= contribTemp;
3981 
3984  }
3985  // I(bi,cx) <+ (ddt(Qbcx))
3986  {
3987  AdmsFadType contribTemp;
3988  contribTemp= (Qbcx);
3989  dynamicContributions[admsNodeID_bi] += contribTemp;
3990  dynamicContributions[admsNodeID_cx] -= contribTemp;
3991 
3994  }
3995  // I(bx,bp) <+ (ddt(Qbep))
3996  {
3997  AdmsFadType contribTemp;
3998  contribTemp= (Qbep);
3999  dynamicContributions[admsNodeID_bx] += contribTemp;
4000  dynamicContributions[admsNodeID_bp] -= contribTemp;
4001 
4004  }
4005  // I(b,e) <+ (ddt(Qbeo))
4006  {
4007  AdmsFadType contribTemp;
4008  contribTemp= (Qbeo);
4009  dynamicContributions[admsNodeID_b] += contribTemp;
4010  dynamicContributions[admsNodeID_e] -= contribTemp;
4011 
4014  }
4015  // I(b,c) <+ (ddt(Qbco))
4018  // I(xf1,GND) <+ (ddt(Qxf1))
4020  // I(xf2,GND) <+ (ddt(Qxf2))
4022  // Pwr(dt,GND) <+ (ddt(Qcth))
4023  {
4024  AdmsFadType contribTemp;
4025  contribTemp= (Qcth);
4026  dynamicContributions[admsNodeID_dt] += contribTemp;
4027 
4029  }
4030  }
4031  // End block loadDynamic
4032 
4033 
4034  // -- endcode converted from analog/code block
4035  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4036  {
4037  Xyce::dout() << " probeVars[admsProbeID_V_xf2_GND] = "
4038  <<probeVars[admsProbeID_V_xf2_GND].val() << std::endl;
4039  Xyce::dout() << " probeVars[admsProbeID_V_xf1_GND] = "
4040  <<probeVars[admsProbeID_V_xf1_GND].val() << std::endl;
4041  Xyce::dout() << " probeVars[admsProbeID_V_bp_cx] = "
4042  <<probeVars[admsProbeID_V_bp_cx].val() << std::endl;
4043  Xyce::dout() << " probeVars[admsProbeID_V_e_ei] = "
4044  <<probeVars[admsProbeID_V_e_ei].val() << std::endl;
4045  Xyce::dout() << " probeVars[admsProbeID_V_bx_bi] = "
4046  <<probeVars[admsProbeID_V_bx_bi].val() << std::endl;
4047  Xyce::dout() << " probeVars[admsProbeID_V_b_bx] = "
4048  <<probeVars[admsProbeID_V_b_bx].val() << std::endl;
4049  Xyce::dout() << " probeVars[admsProbeID_V_cx_ci] = "
4050  <<probeVars[admsProbeID_V_cx_ci].val() << std::endl;
4051  Xyce::dout() << " probeVars[admsProbeID_V_c_cx] = "
4052  <<probeVars[admsProbeID_V_c_cx].val() << std::endl;
4053  Xyce::dout() << " probeVars[admsProbeID_V_b_c] = "
4054  <<probeVars[admsProbeID_V_b_c].val() << std::endl;
4055  Xyce::dout() << " probeVars[admsProbeID_V_b_e] = "
4056  <<probeVars[admsProbeID_V_b_e].val() << std::endl;
4057  Xyce::dout() << " probeVars[admsProbeID_V_bx_bp] = "
4058  <<probeVars[admsProbeID_V_bx_bp].val() << std::endl;
4059  Xyce::dout() << " probeVars[admsProbeID_V_ci_ei] = "
4060  <<probeVars[admsProbeID_V_ci_ei].val() << std::endl;
4061  Xyce::dout() << " probeVars[admsProbeID_V_bx_cx] = "
4062  <<probeVars[admsProbeID_V_bx_cx].val() << std::endl;
4063  Xyce::dout() << " probeVars[admsProbeID_V_bi_cx] = "
4064  <<probeVars[admsProbeID_V_bi_cx].val() << std::endl;
4065  Xyce::dout() << " probeVars[admsProbeID_V_bi_ci] = "
4066  <<probeVars[admsProbeID_V_bi_ci].val() << std::endl;
4067  Xyce::dout() << " probeVars[admsProbeID_V_bx_ei] = "
4068  <<probeVars[admsProbeID_V_bx_ei].val() << std::endl;
4069  Xyce::dout() << " probeVars[admsProbeID_V_bi_ei] = "
4070  <<probeVars[admsProbeID_V_bi_ei].val() << std::endl;
4071  Xyce::dout() << " probeVars[admsProbeID_Temp_dt_GND] = "
4072  <<probeVars[admsProbeID_Temp_dt_GND].val() << std::endl;
4073  Xyce::dout() << " staticContributions[admsNodeID_c] = "
4074  <<staticContributions[admsNodeID_c].val() << std::endl;
4075  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_xf2_GND) << std::endl;
4076  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_xf1_GND) << std::endl;
4077  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
4078  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) << std::endl;
4079  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
4080  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) << std::endl;
4081  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
4082  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) << std::endl;
4083  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c) << std::endl;
4084  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_e) << std::endl;
4085  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bp) << std::endl;
4086  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
4087  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_cx) << std::endl;
4088  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_cx) << std::endl;
4089  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) << std::endl;
4090  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_ei) << std::endl;
4091  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ei) << std::endl;
4092  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_Temp_dt_GND) << std::endl;
4093  Xyce::dout() << " dynamicContributions[admsNodeID_c] = "
4094  <<dynamicContributions[admsNodeID_c].val() << std::endl;
4095  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_xf2_GND) << std::endl;
4096  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_xf1_GND) << std::endl;
4097  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
4098  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) << std::endl;
4099  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
4100  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) << std::endl;
4101  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
4102  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) << std::endl;
4103  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c) << std::endl;
4104  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_e) << std::endl;
4105  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bp) << std::endl;
4106  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
4107  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_cx) << std::endl;
4108  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_cx) << std::endl;
4109  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) << std::endl;
4110  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_ei) << std::endl;
4111  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ei) << std::endl;
4112  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_Temp_dt_GND) << std::endl;
4113  Xyce::dout() << " Jdxp_static[admsNodeID_c] = "
4114  <<Jdxp_static[admsNodeID_c] << std::endl;
4115  Xyce::dout() << " Jdxp_dynamic[admsNodeID_c] = "
4116  <<Jdxp_dynamic[admsNodeID_c] << std::endl;
4117  Xyce::dout() << " staticContributions[admsNodeID_b] = "
4118  <<staticContributions[admsNodeID_b].val() << std::endl;
4119  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_xf2_GND) << std::endl;
4120  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_xf1_GND) << std::endl;
4121  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
4122  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) << std::endl;
4123  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
4124  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) << std::endl;
4125  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
4126  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) << std::endl;
4127  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c) << std::endl;
4128  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_e) << std::endl;
4129  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bp) << std::endl;
4130  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
4131  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_cx) << std::endl;
4132  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_cx) << std::endl;
4133  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) << std::endl;
4134  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_ei) << std::endl;
4135  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ei) << std::endl;
4136  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_Temp_dt_GND) << std::endl;
4137  Xyce::dout() << " dynamicContributions[admsNodeID_b] = "
4138  <<dynamicContributions[admsNodeID_b].val() << std::endl;
4139  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_xf2_GND) << std::endl;
4140  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_xf1_GND) << std::endl;
4141  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
4142  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) << std::endl;
4143  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
4144  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) << std::endl;
4145  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
4146  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) << std::endl;
4147  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) << std::endl;
4148  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e) << std::endl;
4149  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bp) << std::endl;
4150  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
4151  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_cx) << std::endl;
4152  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_cx) << std::endl;
4153  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) << std::endl;
4154  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_ei) << std::endl;
4155  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ei) << std::endl;
4156  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_Temp_dt_GND) << std::endl;
4157  Xyce::dout() << " Jdxp_static[admsNodeID_b] = "
4158  <<Jdxp_static[admsNodeID_b] << std::endl;
4159  Xyce::dout() << " Jdxp_dynamic[admsNodeID_b] = "
4160  <<Jdxp_dynamic[admsNodeID_b] << std::endl;
4161  Xyce::dout() << " staticContributions[admsNodeID_e] = "
4162  <<staticContributions[admsNodeID_e].val() << std::endl;
4163  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_xf2_GND) << std::endl;
4164  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_xf1_GND) << std::endl;
4165  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
4166  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) << std::endl;
4167  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
4168  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) << std::endl;
4169  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
4170  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) << std::endl;
4171  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_c) << std::endl;
4172  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_e) << std::endl;
4173  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bp) << std::endl;
4174  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
4175  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_cx) << std::endl;
4176  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_cx) << std::endl;
4177  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) << std::endl;
4178  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_ei) << std::endl;
4179  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ei) << std::endl;
4180  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_Temp_dt_GND) << std::endl;
4181  Xyce::dout() << " dynamicContributions[admsNodeID_e] = "
4182  <<dynamicContributions[admsNodeID_e].val() << std::endl;
4183  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_xf2_GND) << std::endl;
4184  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_xf1_GND) << std::endl;
4185  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
4186  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) << std::endl;
4187  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
4188  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) << std::endl;
4189  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
4190  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) << std::endl;
4191  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_c) << std::endl;
4192  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e) << std::endl;
4193  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bp) << std::endl;
4194  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
4195  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_cx) << std::endl;
4196  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_cx) << std::endl;
4197  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) << std::endl;
4198  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_ei) << std::endl;
4199  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ei) << std::endl;
4200  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_Temp_dt_GND) << std::endl;
4201  Xyce::dout() << " Jdxp_static[admsNodeID_e] = "
4202  <<Jdxp_static[admsNodeID_e] << std::endl;
4203  Xyce::dout() << " Jdxp_dynamic[admsNodeID_e] = "
4204  <<Jdxp_dynamic[admsNodeID_e] << std::endl;
4205  Xyce::dout() << " staticContributions[admsNodeID_dt] = "
4206  <<staticContributions[admsNodeID_dt].val() << std::endl;
4207  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_xf2_GND) << std::endl;
4208  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_xf1_GND) << std::endl;
4209  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) << std::endl;
4210  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei) << std::endl;
4211  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) << std::endl;
4212  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx) << std::endl;
4213  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) << std::endl;
4214  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx) << std::endl;
4215  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_c) << std::endl;
4216  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_e) << std::endl;
4217  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) << std::endl;
4218  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) << std::endl;
4219  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_cx) << std::endl;
4220  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_cx) << std::endl;
4221  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ci) << std::endl;
4222  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_ei) << std::endl;
4223  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ei) << std::endl;
4224  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_Temp_dt_GND) << std::endl;
4225  Xyce::dout() << " dynamicContributions[admsNodeID_dt] = "
4226  <<dynamicContributions[admsNodeID_dt].val() << std::endl;
4227  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_xf2_GND) << std::endl;
4228  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_xf1_GND) << std::endl;
4229  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) << std::endl;
4230  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei) << std::endl;
4231  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) << std::endl;
4232  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx) << std::endl;
4233  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) << std::endl;
4234  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx) << std::endl;
4235  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_c) << std::endl;
4236  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_e) << std::endl;
4237  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) << std::endl;
4238  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) << std::endl;
4239  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_cx) << std::endl;
4240  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_cx) << std::endl;
4241  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ci) << std::endl;
4242  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_ei) << std::endl;
4243  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ei) << std::endl;
4244  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_Temp_dt_GND) << std::endl;
4245  Xyce::dout() << " Jdxp_static[admsNodeID_dt] = "
4246  <<Jdxp_static[admsNodeID_dt] << std::endl;
4247  Xyce::dout() << " Jdxp_dynamic[admsNodeID_dt] = "
4248  <<Jdxp_dynamic[admsNodeID_dt] << std::endl;
4249  Xyce::dout() << " staticContributions[admsNodeID_cx] = "
4250  <<staticContributions[admsNodeID_cx].val() << std::endl;
4251  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_xf2_GND) << std::endl;
4252  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_xf1_GND) << std::endl;
4253  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) << std::endl;
4254  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_e_ei) << std::endl;
4255  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) << std::endl;
4256  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_bx) << std::endl;
4257  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
4258  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx) << std::endl;
4259  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) << std::endl;
4260  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_e) << std::endl;
4261  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp) << std::endl;
4262  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
4263  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_cx) << std::endl;
4264  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx) << std::endl;
4265  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) << std::endl;
4266  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_ei) << std::endl;
4267  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei) << std::endl;
4268  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_Temp_dt_GND) << std::endl;
4269  Xyce::dout() << " dynamicContributions[admsNodeID_cx] = "
4270  <<dynamicContributions[admsNodeID_cx].val() << std::endl;
4271  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_xf2_GND) << std::endl;
4272  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_xf1_GND) << std::endl;
4273  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) << std::endl;
4274  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_e_ei) << std::endl;
4275  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) << std::endl;
4276  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_bx) << std::endl;
4277  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
4278  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx) << std::endl;
4279  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) << std::endl;
4280  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_e) << std::endl;
4281  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp) << std::endl;
4282  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
4283  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_cx) << std::endl;
4284  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx) << std::endl;
4285  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) << std::endl;
4286  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_ei) << std::endl;
4287  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei) << std::endl;
4288  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_Temp_dt_GND) << std::endl;
4289  Xyce::dout() << " Jdxp_static[admsNodeID_cx] = "
4290  <<Jdxp_static[admsNodeID_cx] << std::endl;
4291  Xyce::dout() << " Jdxp_dynamic[admsNodeID_cx] = "
4292  <<Jdxp_dynamic[admsNodeID_cx] << std::endl;
4293  Xyce::dout() << " staticContributions[admsNodeID_ci] = "
4294  <<staticContributions[admsNodeID_ci].val() << std::endl;
4295  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_xf2_GND) << std::endl;
4296  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_xf1_GND) << std::endl;
4297  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) << std::endl;
4298  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_e_ei) << std::endl;
4299  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) << std::endl;
4300  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_bx) << std::endl;
4301  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
4302  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_c_cx) << std::endl;
4303  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) << std::endl;
4304  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_e) << std::endl;
4305  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp) << std::endl;
4306  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
4307  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_cx) << std::endl;
4308  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx) << std::endl;
4309  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) << std::endl;
4310  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) << std::endl;
4311  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei) << std::endl;
4312  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_Temp_dt_GND) << std::endl;
4313  Xyce::dout() << " dynamicContributions[admsNodeID_ci] = "
4314  <<dynamicContributions[admsNodeID_ci].val() << std::endl;
4315  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_xf2_GND) << std::endl;
4316  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_xf1_GND) << std::endl;
4317  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) << std::endl;
4318  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_e_ei) << std::endl;
4319  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) << std::endl;
4320  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_bx) << std::endl;
4321  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
4322  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_c_cx) << std::endl;
4323  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) << std::endl;
4324  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_e) << std::endl;
4325  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp) << std::endl;
4326  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
4327  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_cx) << std::endl;
4328  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx) << std::endl;
4329  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) << std::endl;
4330  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) << std::endl;
4331  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei) << std::endl;
4332  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_Temp_dt_GND) << std::endl;
4333  Xyce::dout() << " Jdxp_static[admsNodeID_ci] = "
4334  <<Jdxp_static[admsNodeID_ci] << std::endl;
4335  Xyce::dout() << " Jdxp_dynamic[admsNodeID_ci] = "
4336  <<Jdxp_dynamic[admsNodeID_ci] << std::endl;
4337  Xyce::dout() << " staticContributions[admsNodeID_bx] = "
4338  <<staticContributions[admsNodeID_bx].val() << std::endl;
4339  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_xf2_GND) << std::endl;
4340  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_xf1_GND) << std::endl;
4341  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) << std::endl;
4342  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_e_ei) << std::endl;
4343  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) << std::endl;
4344  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx) << std::endl;
4345  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) << std::endl;
4346  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx) << std::endl;
4347  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_c) << std::endl;
4348  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_e) << std::endl;
4349  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) << std::endl;
4350  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) << std::endl;
4351  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_cx) << std::endl;
4352  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_cx) << std::endl;
4353  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci) << std::endl;
4354  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei) << std::endl;
4355  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) << std::endl;
4356  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_Temp_dt_GND) << std::endl;
4357  Xyce::dout() << " dynamicContributions[admsNodeID_bx] = "
4358  <<dynamicContributions[admsNodeID_bx].val() << std::endl;
4359  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_xf2_GND) << std::endl;
4360  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_xf1_GND) << std::endl;
4361  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) << std::endl;
4362  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_e_ei) << std::endl;
4363  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) << std::endl;
4364  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx) << std::endl;
4365  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) << std::endl;
4366  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx) << std::endl;
4367  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_c) << std::endl;
4368  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_e) << std::endl;
4369  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) << std::endl;
4370  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) << std::endl;
4371  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_cx) << std::endl;
4372  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_cx) << std::endl;
4373  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci) << std::endl;
4374  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei) << std::endl;
4375  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) << std::endl;
4376  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_Temp_dt_GND) << std::endl;
4377  Xyce::dout() << " Jdxp_static[admsNodeID_bx] = "
4378  <<Jdxp_static[admsNodeID_bx] << std::endl;
4379  Xyce::dout() << " Jdxp_dynamic[admsNodeID_bx] = "
4380  <<Jdxp_dynamic[admsNodeID_bx] << std::endl;
4381  Xyce::dout() << " staticContributions[admsNodeID_bi] = "
4382  <<staticContributions[admsNodeID_bi].val() << std::endl;
4383  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_xf2_GND) << std::endl;
4384  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_xf1_GND) << std::endl;
4385  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) << std::endl;
4386  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_e_ei) << std::endl;
4387  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) << std::endl;
4388  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_bx) << std::endl;
4389  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
4390  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_c_cx) << std::endl;
4391  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) << std::endl;
4392  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_e) << std::endl;
4393  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp) << std::endl;
4394  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
4395  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_cx) << std::endl;
4396  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx) << std::endl;
4397  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) << std::endl;
4398  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) << std::endl;
4399  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei) << std::endl;
4400  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_Temp_dt_GND) << std::endl;
4401  Xyce::dout() << " dynamicContributions[admsNodeID_bi] = "
4402  <<dynamicContributions[admsNodeID_bi].val() << std::endl;
4403  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_xf2_GND) << std::endl;
4404  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_xf1_GND) << std::endl;
4405  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) << std::endl;
4406  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_e_ei) << std::endl;
4407  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) << std::endl;
4408  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_bx) << std::endl;
4409  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
4410  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_c_cx) << std::endl;
4411  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) << std::endl;
4412  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_e) << std::endl;
4413  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp) << std::endl;
4414  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
4415  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_cx) << std::endl;
4416  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx) << std::endl;
4417  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) << std::endl;
4418  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) << std::endl;
4419  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei) << std::endl;
4420  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_Temp_dt_GND) << std::endl;
4421  Xyce::dout() << " Jdxp_static[admsNodeID_bi] = "
4422  <<Jdxp_static[admsNodeID_bi] << std::endl;
4423  Xyce::dout() << " Jdxp_dynamic[admsNodeID_bi] = "
4424  <<Jdxp_dynamic[admsNodeID_bi] << std::endl;
4425  Xyce::dout() << " staticContributions[admsNodeID_ei] = "
4426  <<staticContributions[admsNodeID_ei].val() << std::endl;
4427  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_xf2_GND) << std::endl;
4428  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_xf1_GND) << std::endl;
4429  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) << std::endl;
4430  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei) << std::endl;
4431  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) << std::endl;
4432  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_bx) << std::endl;
4433  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
4434  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_c_cx) << std::endl;
4435  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) << std::endl;
4436  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_e) << std::endl;
4437  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp) << std::endl;
4438  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
4439  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_cx) << std::endl;
4440  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx) << std::endl;
4441  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) << std::endl;
4442  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) << std::endl;
4443  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) << std::endl;
4444  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_Temp_dt_GND) << std::endl;
4445  Xyce::dout() << " dynamicContributions[admsNodeID_ei] = "
4446  <<dynamicContributions[admsNodeID_ei].val() << std::endl;
4447  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_xf2_GND) << std::endl;
4448  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_xf1_GND) << std::endl;
4449  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) << std::endl;
4450  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei) << std::endl;
4451  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) << std::endl;
4452  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_bx) << std::endl;
4453  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
4454  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_c_cx) << std::endl;
4455  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) << std::endl;
4456  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_e) << std::endl;
4457  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp) << std::endl;
4458  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
4459  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_cx) << std::endl;
4460  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx) << std::endl;
4461  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) << std::endl;
4462  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) << std::endl;
4463  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) << std::endl;
4464  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_Temp_dt_GND) << std::endl;
4465  Xyce::dout() << " Jdxp_static[admsNodeID_ei] = "
4466  <<Jdxp_static[admsNodeID_ei] << std::endl;
4467  Xyce::dout() << " Jdxp_dynamic[admsNodeID_ei] = "
4468  <<Jdxp_dynamic[admsNodeID_ei] << std::endl;
4469  Xyce::dout() << " staticContributions[admsNodeID_bp] = "
4470  <<staticContributions[admsNodeID_bp].val() << std::endl;
4471  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_xf2_GND) << std::endl;
4472  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_xf1_GND) << std::endl;
4473  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) << std::endl;
4474  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_e_ei) << std::endl;
4475  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) << std::endl;
4476  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_bx) << std::endl;
4477  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) << std::endl;
4478  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_c_cx) << std::endl;
4479  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_c) << std::endl;
4480  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_e) << std::endl;
4481  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp) << std::endl;
4482  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) << std::endl;
4483  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_cx) << std::endl;
4484  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_cx) << std::endl;
4485  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) << std::endl;
4486  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) << std::endl;
4487  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei) << std::endl;
4488  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_Temp_dt_GND) << std::endl;
4489  Xyce::dout() << " dynamicContributions[admsNodeID_bp] = "
4490  <<dynamicContributions[admsNodeID_bp].val() << std::endl;
4491  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_xf2_GND) << std::endl;
4492  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_xf1_GND) << std::endl;
4493  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) << std::endl;
4494  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_e_ei) << std::endl;
4495  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) << std::endl;
4496  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_bx) << std::endl;
4497  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) << std::endl;
4498  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_c_cx) << std::endl;
4499  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_c) << std::endl;
4500  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_e) << std::endl;
4501  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp) << std::endl;
4502  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) << std::endl;
4503  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_cx) << std::endl;
4504  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_cx) << std::endl;
4505  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) << std::endl;
4506  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) << std::endl;
4507  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei) << std::endl;
4508  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_Temp_dt_GND) << std::endl;
4509  Xyce::dout() << " Jdxp_static[admsNodeID_bp] = "
4510  <<Jdxp_static[admsNodeID_bp] << std::endl;
4511  Xyce::dout() << " Jdxp_dynamic[admsNodeID_bp] = "
4512  <<Jdxp_dynamic[admsNodeID_bp] << std::endl;
4513  Xyce::dout() << " staticContributions[admsNodeID_xf1] = "
4514  <<staticContributions[admsNodeID_xf1].val() << std::endl;
4515  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_xf2_GND) << std::endl;
4516  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_xf1_GND) << std::endl;
4517  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bp_cx) << std::endl;
4518  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_e_ei) << std::endl;
4519  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_bi) << std::endl;
4520  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_b_bx) << std::endl;
4521  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_cx_ci) << std::endl;
4522  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_c_cx) << std::endl;
4523  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_b_c) << std::endl;
4524  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_b_e) << std::endl;
4525  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_bp) << std::endl;
4526  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_ci_ei) << std::endl;
4527  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_cx) << std::endl;
4528  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_cx) << std::endl;
4529  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ci) << std::endl;
4530  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_ei) << std::endl;
4531  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ei) << std::endl;
4532  Xyce::dout() << " staticContributions[admsNodeID_xf1].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_xf1].dx(admsProbeID_Temp_dt_GND) << std::endl;
4533  Xyce::dout() << " dynamicContributions[admsNodeID_xf1] = "
4534  <<dynamicContributions[admsNodeID_xf1].val() << std::endl;
4535  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_xf2_GND) << std::endl;
4536  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_xf1_GND) << std::endl;
4537  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bp_cx) << std::endl;
4538  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_e_ei) << std::endl;
4539  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_bi) << std::endl;
4540  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_b_bx) << std::endl;
4541  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_cx_ci) << std::endl;
4542  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_c_cx) << std::endl;
4543  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_b_c) << std::endl;
4544  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_b_e) << std::endl;
4545  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_bp) << std::endl;
4546  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_ci_ei) << std::endl;
4547  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_cx) << std::endl;
4548  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_cx) << std::endl;
4549  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ci) << std::endl;
4550  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bx_ei) << std::endl;
4551  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ei) << std::endl;
4552  Xyce::dout() << " dynamicContributions[admsNodeID_xf1].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_xf1].dx(admsProbeID_Temp_dt_GND) << std::endl;
4553  Xyce::dout() << " Jdxp_static[admsNodeID_xf1] = "
4554  <<Jdxp_static[admsNodeID_xf1] << std::endl;
4555  Xyce::dout() << " Jdxp_dynamic[admsNodeID_xf1] = "
4556  <<Jdxp_dynamic[admsNodeID_xf1] << std::endl;
4557  Xyce::dout() << " staticContributions[admsNodeID_xf2] = "
4558  <<staticContributions[admsNodeID_xf2].val() << std::endl;
4559  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_xf2_GND) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_xf2_GND) << std::endl;
4560  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_xf1_GND) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_xf1_GND) << std::endl;
4561  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bp_cx) << std::endl;
4562  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_e_ei) << std::endl;
4563  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_bi) << std::endl;
4564  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_b_bx) << std::endl;
4565  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_cx_ci) << std::endl;
4566  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_c_cx) << std::endl;
4567  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_b_c) << std::endl;
4568  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_b_e) << std::endl;
4569  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_bp) << std::endl;
4570  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_ci_ei) << std::endl;
4571  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_cx) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_cx) << std::endl;
4572  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_cx) << std::endl;
4573  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_ci) << std::endl;
4574  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_ei) << std::endl;
4575  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_ei) << std::endl;
4576  Xyce::dout() << " staticContributions[admsNodeID_xf2].dx(admsProbeID_Temp_dt_GND) = " <<staticContributions[admsNodeID_xf2].dx(admsProbeID_Temp_dt_GND) << std::endl;
4577  Xyce::dout() << " dynamicContributions[admsNodeID_xf2] = "
4578  <<dynamicContributions[admsNodeID_xf2].val() << std::endl;
4579  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_xf2_GND) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_xf2_GND) << std::endl;
4580  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_xf1_GND) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_xf1_GND) << std::endl;
4581  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bp_cx) << std::endl;
4582  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_e_ei) << std::endl;
4583  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_bi) << std::endl;
4584  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_b_bx) << std::endl;
4585  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_cx_ci) << std::endl;
4586  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_c_cx) << std::endl;
4587  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_b_c) << std::endl;
4588  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_b_e) << std::endl;
4589  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_bp) << std::endl;
4590  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_ci_ei) << std::endl;
4591  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_cx) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_cx) << std::endl;
4592  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_cx) << std::endl;
4593  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_ci) << std::endl;
4594  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bx_ei) << std::endl;
4595  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_bi_ei) << std::endl;
4596  Xyce::dout() << " dynamicContributions[admsNodeID_xf2].dx(admsProbeID_Temp_dt_GND) = " <<dynamicContributions[admsNodeID_xf2].dx(admsProbeID_Temp_dt_GND) << std::endl;
4597  Xyce::dout() << " Jdxp_static[admsNodeID_xf2] = "
4598  <<Jdxp_static[admsNodeID_xf2] << std::endl;
4599  Xyce::dout() << " Jdxp_dynamic[admsNodeID_xf2] = "
4600  <<Jdxp_dynamic[admsNodeID_xf2] << std::endl;
4601 
4602  if (!origFlag)
4603  Xyce::dout() << "This step was limited by this device." << std::endl;
4604  }
4605 
4606  return true;
4607 }
4608 
4609 //-----------------------------------------------------------------------------
4610 // Function : Instance::loadDAEdFdx
4611 // Purpose :
4612 // Special Notes : Load the dFdx ("static jacobian") matrix
4613 // Scope : public
4614 // Creator : admsXml
4615 // Creation Date :
4616 //-----------------------------------------------------------------------------
4618 {
4619  bool bsuccess = true;
4620  Linear::Matrix * dFdxMatPtr = extData.dFdxMatrixPtr;
4621 
4622  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4623  {
4624  Xyce::dout() << subsection_divider << std::endl;
4625  Xyce::dout() << "ADMSvbic13::Instance::loadDAEdFdx (" << getName() << "):" << std::endl;
4626  }
4628 
4629 
4630  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4631  {
4633  }
4634  (*f_bi_Equ_bp_Node_Ptr) += -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp);
4635 
4636 
4637  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4638  {
4639  Xyce::dout() << " (*f_bi_Equ_bp_Node_Ptr) += " << -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp)<< std::endl;
4640  }
4642 
4643 
4644  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4645  {
4646  Xyce::dout() << " (*f_ei_Equ_bx_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp)<< std::endl;
4647  }
4648  (*f_ei_Equ_bp_Node_Ptr) += -staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp);
4649 
4650 
4651  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4652  {
4653  Xyce::dout() << " (*f_ei_Equ_bp_Node_Ptr) += " << -staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp)<< std::endl;
4654  }
4656 
4657 
4658  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4659  {
4661  }
4662  (*f_bi_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci);
4663 
4664 
4665  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4666  {
4667  Xyce::dout() << " (*f_bi_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci)<< std::endl;
4668  }
4670 
4671 
4672  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4673  {
4674  Xyce::dout() << " (*f_ei_Equ_bi_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci)<< std::endl;
4675  }
4676  (*f_ei_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci);
4677 
4678 
4679  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4680  {
4681  Xyce::dout() << " (*f_ei_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci)<< std::endl;
4682  }
4684 
4685 
4686  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4687  {
4688  Xyce::dout() << " (*f_bi_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei)<< std::endl;
4689  }
4691 
4692 
4693  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4694  {
4696  }
4697  (*f_bi_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_bi].dx(admsProbeID_Temp_dt_GND);
4698 
4699 
4700  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4701  {
4702  Xyce::dout() << " (*f_bi_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_bi].dx(admsProbeID_Temp_dt_GND)<< std::endl;
4703  }
4704  (*f_ei_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_ei].dx(admsProbeID_Temp_dt_GND);
4705 
4706 
4707  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4708  {
4709  Xyce::dout() << " (*f_ei_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_Temp_dt_GND)<< std::endl;
4710  }
4712 
4713 
4714  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4715  {
4717  }
4719 
4720 
4721  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4722  {
4723  Xyce::dout() << " (*f_bx_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei) -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei)<< std::endl;
4724  }
4725  (*f_bx_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci);
4726 
4727 
4728  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4729  {
4730  Xyce::dout() << " (*f_bx_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci)<< std::endl;
4731  }
4733 
4734 
4735  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4736  {
4738  }
4739  (*f_bx_Equ_bp_Node_Ptr) += -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp);
4740 
4741 
4742  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4743  {
4744  Xyce::dout() << " (*f_bx_Equ_bp_Node_Ptr) += " << -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp)<< std::endl;
4745  }
4746  (*f_bx_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_bx].dx(admsProbeID_Temp_dt_GND);
4747 
4748 
4749  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4750  {
4751  Xyce::dout() << " (*f_bx_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_bx].dx(admsProbeID_Temp_dt_GND)<< std::endl;
4752  }
4753  (*f_ci_Equ_xf2_Node_Ptr) += +staticContributions[admsNodeID_ci].dx(admsProbeID_V_xf2_GND);
4754 
4755 
4756  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4757  {
4758  Xyce::dout() << " (*f_ci_Equ_xf2_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_V_xf2_GND)<< std::endl;
4759  }
4760  (*f_ei_Equ_xf2_Node_Ptr) += +staticContributions[admsNodeID_ei].dx(admsProbeID_V_xf2_GND);
4761 
4762 
4763  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4764  {
4765  Xyce::dout() << " (*f_ei_Equ_xf2_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_xf2_GND)<< std::endl;
4766  }
4768 
4769 
4770  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4771  {
4773  }
4775 
4776 
4777  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4778  {
4779  Xyce::dout() << " (*f_ci_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei)<< std::endl;
4780  }
4782 
4783 
4784  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4785  {
4786  Xyce::dout() << " (*f_ci_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci)<< std::endl;
4787  }
4788  (*f_ci_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_ci].dx(admsProbeID_Temp_dt_GND);
4789 
4790 
4791  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4792  {
4793  Xyce::dout() << " (*f_ci_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_Temp_dt_GND)<< std::endl;
4794  }
4795  (*f_bi_Equ_xf2_Node_Ptr) += +staticContributions[admsNodeID_bi].dx(admsProbeID_V_xf2_GND);
4796 
4797 
4798  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4799  {
4800  Xyce::dout() << " (*f_bi_Equ_xf2_Node_Ptr) += " << +staticContributions[admsNodeID_bi].dx(admsProbeID_V_xf2_GND)<< std::endl;
4801  }
4803 
4804 
4805  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4806  {
4807  Xyce::dout() << " (*f_ci_Equ_bx_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) +staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp)<< std::endl;
4808  }
4809  (*f_ci_Equ_bp_Node_Ptr) += -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp);
4810 
4811 
4812  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4813  {
4814  Xyce::dout() << " (*f_ci_Equ_bp_Node_Ptr) += " << -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp)<< std::endl;
4815  }
4817 
4818 
4819  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4820  {
4822  }
4824 
4825 
4826  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4827  {
4828  Xyce::dout() << " (*f_cx_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) -staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci)<< std::endl;
4829  }
4831 
4832 
4833  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4834  {
4835  Xyce::dout() << " (*f_bx_Equ_cx_Node_Ptr) += " << -staticContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx) -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_cx)<< std::endl;
4836  }
4838 
4839 
4840  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4841  {
4843  }
4845 
4846 
4847  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4848  {
4850  }
4851  (*f_cx_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_cx].dx(admsProbeID_Temp_dt_GND);
4852 
4853 
4854  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4855  {
4856  Xyce::dout() << " (*f_cx_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_Temp_dt_GND)<< std::endl;
4857  }
4858  (*f_bx_Equ_c_Node_Ptr) += +staticContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx);
4859 
4860 
4861  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4862  {
4863  Xyce::dout() << " (*f_bx_Equ_c_Node_Ptr) += " << +staticContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx)<< std::endl;
4864  }
4865  (*f_cx_Equ_c_Node_Ptr) += +staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx);
4866 
4867 
4868  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4869  {
4870  Xyce::dout() << " (*f_cx_Equ_c_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx)<< std::endl;
4871  }
4873 
4874 
4875  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4876  {
4877  Xyce::dout() << " (*f_bp_Equ_bi_Node_Ptr) += " << +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei)<< std::endl;
4878  }
4880 
4881 
4882  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4883  {
4884  Xyce::dout() << " (*f_bp_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei)<< std::endl;
4885  }
4886  (*f_bp_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci);
4887 
4888 
4889  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4890  {
4891  Xyce::dout() << " (*f_bp_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci)<< std::endl;
4892  }
4894 
4895 
4896  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4897  {
4898  Xyce::dout() << " (*f_bp_Equ_bx_Node_Ptr) += " << +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp)<< std::endl;
4899  }
4901 
4902 
4903  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4904  {
4905  Xyce::dout() << " (*f_bp_Equ_bp_Node_Ptr) += " << +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp)<< std::endl;
4906  }
4907  (*f_bp_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_bp].dx(admsProbeID_Temp_dt_GND);
4908 
4909 
4910  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4911  {
4912  Xyce::dout() << " (*f_bp_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_bp].dx(admsProbeID_Temp_dt_GND)<< std::endl;
4913  }
4914  (*f_c_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_c].dx(admsProbeID_Temp_dt_GND);
4915 
4916 
4917  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4918  {
4919  Xyce::dout() << " (*f_c_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_c].dx(admsProbeID_Temp_dt_GND)<< std::endl;
4920  }
4921  (*f_c_Equ_c_Node_Ptr) += +staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx);
4922 
4923 
4924  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4925  {
4926  Xyce::dout() << " (*f_c_Equ_c_Node_Ptr) += " << +staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx)<< std::endl;
4927  }
4928  (*f_c_Equ_cx_Node_Ptr) += -staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx);
4929 
4930 
4931  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4932  {
4933  Xyce::dout() << " (*f_c_Equ_cx_Node_Ptr) += " << -staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx)<< std::endl;
4934  }
4936 
4937 
4938  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4939  {
4940  Xyce::dout() << " (*f_ci_Equ_cx_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx)<< std::endl;
4941  }
4943 
4944 
4945  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4946  {
4947  Xyce::dout() << " (*f_cx_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_ei) -staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei)<< std::endl;
4948  }
4950 
4951 
4952  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4953  {
4954  Xyce::dout() << " (*f_cx_Equ_bp_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) -staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp)<< std::endl;
4955  }
4956  (*f_b_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_b].dx(admsProbeID_Temp_dt_GND);
4957 
4958 
4959  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4960  {
4961  Xyce::dout() << " (*f_b_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_b].dx(admsProbeID_Temp_dt_GND)<< std::endl;
4962  }
4963  (*f_b_Equ_b_Node_Ptr) += +staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx);
4964 
4965 
4966  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4967  {
4968  Xyce::dout() << " (*f_b_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx)<< std::endl;
4969  }
4970  (*f_b_Equ_bx_Node_Ptr) += -staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx);
4971 
4972 
4973  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4974  {
4975  Xyce::dout() << " (*f_b_Equ_bx_Node_Ptr) += " << -staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx)<< std::endl;
4976  }
4977  (*f_bx_Equ_b_Node_Ptr) += +staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx);
4978 
4979 
4980  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4981  {
4982  Xyce::dout() << " (*f_bx_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx)<< std::endl;
4983  }
4984  (*f_e_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_e].dx(admsProbeID_Temp_dt_GND);
4985 
4986 
4987  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4988  {
4989  Xyce::dout() << " (*f_e_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_e].dx(admsProbeID_Temp_dt_GND)<< std::endl;
4990  }
4991  (*f_e_Equ_e_Node_Ptr) += +staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei);
4992 
4993 
4994  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4995  {
4996  Xyce::dout() << " (*f_e_Equ_e_Node_Ptr) += " << +staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei)<< std::endl;
4997  }
4998  (*f_e_Equ_ei_Node_Ptr) += -staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei);
4999 
5000 
5001  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5002  {
5003  Xyce::dout() << " (*f_e_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei)<< std::endl;
5004  }
5005  (*f_ei_Equ_e_Node_Ptr) += +staticContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei);
5006 
5007 
5008  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5009  {
5010  Xyce::dout() << " (*f_ei_Equ_e_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei)<< std::endl;
5011  }
5012  (*f_bp_Equ_cx_Node_Ptr) += -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx);
5013 
5014 
5015  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5016  {
5017  Xyce::dout() << " (*f_bp_Equ_cx_Node_Ptr) += " << -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx)<< std::endl;
5018  }
5020 
5021 
5022  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5023  {
5024  Xyce::dout() << " (*f_xf1_Equ_bi_Node_Ptr) += " << +staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ei) +staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ci)<< std::endl;
5025  }
5026  (*f_xf1_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ci);
5027 
5028 
5029  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5030  {
5031  Xyce::dout() << " (*f_xf1_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ci)<< std::endl;
5032  }
5033  (*f_xf1_Equ_ei_Node_Ptr) += -staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ei);
5034 
5035 
5036  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5037  {
5038  Xyce::dout() << " (*f_xf1_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_xf1].dx(admsProbeID_V_bi_ei)<< std::endl;
5039  }
5040  (*f_xf1_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_xf1].dx(admsProbeID_Temp_dt_GND);
5041 
5042 
5043  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5044  {
5045  Xyce::dout() << " (*f_xf1_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_xf1].dx(admsProbeID_Temp_dt_GND)<< std::endl;
5046  }
5047  (*f_xf1_Equ_xf2_Node_Ptr) += +staticContributions[admsNodeID_xf1].dx(admsProbeID_V_xf2_GND);
5048 
5049 
5050  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5051  {
5052  Xyce::dout() << " (*f_xf1_Equ_xf2_Node_Ptr) += " << +staticContributions[admsNodeID_xf1].dx(admsProbeID_V_xf2_GND)<< std::endl;
5053  }
5054  (*f_xf2_Equ_xf1_Node_Ptr) += +staticContributions[admsNodeID_xf2].dx(admsProbeID_V_xf1_GND);
5055 
5056 
5057  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5058  {
5059  Xyce::dout() << " (*f_xf2_Equ_xf1_Node_Ptr) += " << +staticContributions[admsNodeID_xf2].dx(admsProbeID_V_xf1_GND)<< std::endl;
5060  }
5061  (*f_xf2_Equ_xf2_Node_Ptr) += +staticContributions[admsNodeID_xf2].dx(admsProbeID_V_xf2_GND);
5062 
5063 
5064  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5065  {
5066  Xyce::dout() << " (*f_xf2_Equ_xf2_Node_Ptr) += " << +staticContributions[admsNodeID_xf2].dx(admsProbeID_V_xf2_GND)<< std::endl;
5067  }
5068  (*f_dt_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_dt].dx(admsProbeID_Temp_dt_GND);
5069 
5070 
5071  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5072  {
5073  Xyce::dout() << " (*f_dt_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_dt].dx(admsProbeID_Temp_dt_GND)<< std::endl;
5074  }
5076 
5077 
5078  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5079  {
5080  Xyce::dout() << " (*f_dt_Equ_bp_Node_Ptr) += " << -staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) +staticContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx)<< std::endl;
5081  }
5083 
5084 
5085  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5086  {
5088  }
5089  (*f_dt_Equ_e_Node_Ptr) += +staticContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei);
5090 
5091 
5092  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5093  {
5094  Xyce::dout() << " (*f_dt_Equ_e_Node_Ptr) += " << +staticContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei)<< std::endl;
5095  }
5097 
5098 
5099  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5100  {
5102  }
5104 
5105 
5106  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5107  {
5109  }
5111 
5112 
5113  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5114  {
5116  }
5117  (*f_dt_Equ_b_Node_Ptr) += +staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx);
5118 
5119 
5120  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5121  {
5122  Xyce::dout() << " (*f_dt_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx)<< std::endl;
5123  }
5125 
5126 
5127  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5128  {
5130  }
5131  (*f_dt_Equ_c_Node_Ptr) += +staticContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx);
5132 
5133 
5134  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5135  {
5136  Xyce::dout() << " (*f_dt_Equ_c_Node_Ptr) += " << +staticContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx)<< std::endl;
5137  }
5138  (*f_dt_Equ_xf2_Node_Ptr) += +staticContributions[admsNodeID_dt].dx(admsProbeID_V_xf2_GND);
5139 
5140 
5141  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5142  {
5143  Xyce::dout() << " (*f_dt_Equ_xf2_Node_Ptr) += " << +staticContributions[admsNodeID_dt].dx(admsProbeID_V_xf2_GND)<< std::endl;
5144  }
5145 
5146 
5147  return bsuccess;
5148 }
5149 
5150 
5151 //-----------------------------------------------------------------------------
5152 // Function : Instance::loadDAEdQdx
5153 // Purpose :
5154 // Special Notes : Load the dQdx ("dynamic jacobian") matrix
5155 // Scope : public
5156 // Creator : admsXml
5157 // Creation Date :
5158 //-----------------------------------------------------------------------------
5160 {
5161  bool bsuccess = true;
5162  Linear::Matrix * dQdxMatPtr = extData.dQdxMatrixPtr;
5163 
5164  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5165  {
5166  Xyce::dout() << subsection_divider << std::endl;
5167  Xyce::dout() << "ADMSvbic13::Instance::loadDAEdQdx (" << getName() << "):" << std::endl;
5168  }
5170 
5171 
5172  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5173  {
5174  Xyce::dout() << " (*q_bi_Equ_bx_Node_Ptr) += " << +dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) +dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp)<< std::endl;
5175  }
5176  (*q_bi_Equ_bp_Node_Ptr) += -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp);
5177 
5178 
5179  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5180  {
5181  Xyce::dout() << " (*q_bi_Equ_bp_Node_Ptr) += " << -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp)<< std::endl;
5182  }
5184 
5185 
5186  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5187  {
5188  Xyce::dout() << " (*q_ei_Equ_bx_Node_Ptr) += " << +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp)<< std::endl;
5189  }
5190  (*q_ei_Equ_bp_Node_Ptr) += -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp);
5191 
5192 
5193  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5194  {
5195  Xyce::dout() << " (*q_ei_Equ_bp_Node_Ptr) += " << -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp)<< std::endl;
5196  }
5198 
5199 
5200  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5201  {
5203  }
5204  (*q_bi_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci);
5205 
5206 
5207  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5208  {
5209  Xyce::dout() << " (*q_bi_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci)<< std::endl;
5210  }
5212 
5213 
5214  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5215  {
5217  }
5218  (*q_ei_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci);
5219 
5220 
5221  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5222  {
5223  Xyce::dout() << " (*q_ei_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci)<< std::endl;
5224  }
5226 
5227 
5228  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5229  {
5230  Xyce::dout() << " (*q_bi_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei) -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei)<< std::endl;
5231  }
5233 
5234 
5235  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5236  {
5237  Xyce::dout() << " (*q_ei_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei)<< std::endl;
5238  }
5239  (*q_bi_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_bi].dx(admsProbeID_Temp_dt_GND);
5240 
5241 
5242  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5243  {
5244  Xyce::dout() << " (*q_bi_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_bi].dx(admsProbeID_Temp_dt_GND)<< std::endl;
5245  }
5246  (*q_ei_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_ei].dx(admsProbeID_Temp_dt_GND);
5247 
5248 
5249  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5250  {
5251  Xyce::dout() << " (*q_ei_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_ei].dx(admsProbeID_Temp_dt_GND)<< std::endl;
5252  }
5254 
5255 
5256  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5257  {
5258  Xyce::dout() << " (*q_bx_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci) +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei)<< std::endl;
5259  }
5261 
5262 
5263  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5264  {
5265  Xyce::dout() << " (*q_bx_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei)<< std::endl;
5266  }
5267  (*q_bx_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci);
5268 
5269 
5270  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5271  {
5272  Xyce::dout() << " (*q_bx_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci)<< std::endl;
5273  }
5275 
5276 
5277  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5278  {
5279  Xyce::dout() << " (*q_bx_Equ_bx_Node_Ptr) += " << +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei)<< std::endl;
5280  }
5281  (*q_bx_Equ_bp_Node_Ptr) += -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp);
5282 
5283 
5284  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5285  {
5286  Xyce::dout() << " (*q_bx_Equ_bp_Node_Ptr) += " << -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp)<< std::endl;
5287  }
5288  (*q_bx_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_bx].dx(admsProbeID_Temp_dt_GND);
5289 
5290 
5291  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5292  {
5293  Xyce::dout() << " (*q_bx_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_bx].dx(admsProbeID_Temp_dt_GND)<< std::endl;
5294  }
5296 
5297 
5298  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5299  {
5300  Xyce::dout() << " (*q_ci_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei)<< std::endl;
5301  }
5303 
5304 
5305  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5306  {
5307  Xyce::dout() << " (*q_ci_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei) -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei)<< std::endl;
5308  }
5309  (*q_ci_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci);
5310 
5311 
5312  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5313  {
5314  Xyce::dout() << " (*q_ci_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci)<< std::endl;
5315  }
5316  (*q_ci_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_ci].dx(admsProbeID_Temp_dt_GND);
5317 
5318 
5319  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5320  {
5321  Xyce::dout() << " (*q_ci_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_ci].dx(admsProbeID_Temp_dt_GND)<< std::endl;
5322  }
5324 
5325 
5326  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5327  {
5328  Xyce::dout() << " (*q_ci_Equ_bx_Node_Ptr) += " << +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp)<< std::endl;
5329  }
5330  (*q_ci_Equ_bp_Node_Ptr) += -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp);
5331 
5332 
5333  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5334  {
5335  Xyce::dout() << " (*q_ci_Equ_bp_Node_Ptr) += " << -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp)<< std::endl;
5336  }
5338 
5339 
5340  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5341  {
5343  }
5344  (*q_cx_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci);
5345 
5346 
5347  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5348  {
5349  Xyce::dout() << " (*q_cx_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci)<< std::endl;
5350  }
5351  (*q_cx_Equ_bx_Node_Ptr) += +dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp);
5352 
5353 
5354  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5355  {
5356  Xyce::dout() << " (*q_cx_Equ_bx_Node_Ptr) += " << +dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp)<< std::endl;
5357  }
5358  (*q_cx_Equ_cx_Node_Ptr) += -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx);
5359 
5360 
5361  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5362  {
5363  Xyce::dout() << " (*q_cx_Equ_cx_Node_Ptr) += " << -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx)<< std::endl;
5364  }
5365  (*q_cx_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_cx].dx(admsProbeID_Temp_dt_GND);
5366 
5367 
5368  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5369  {
5370  Xyce::dout() << " (*q_cx_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_cx].dx(admsProbeID_Temp_dt_GND)<< std::endl;
5371  }
5373 
5374 
5375  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5376  {
5377  Xyce::dout() << " (*q_bp_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei)<< std::endl;
5378  }
5379  (*q_bp_Equ_ei_Node_Ptr) += -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei);
5380 
5381 
5382  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5383  {
5384  Xyce::dout() << " (*q_bp_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei)<< std::endl;
5385  }
5386  (*q_bp_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci);
5387 
5388 
5389  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5390  {
5391  Xyce::dout() << " (*q_bp_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci)<< std::endl;
5392  }
5393  (*q_bp_Equ_bx_Node_Ptr) += +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp);
5394 
5395 
5396  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5397  {
5398  Xyce::dout() << " (*q_bp_Equ_bx_Node_Ptr) += " << +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp)<< std::endl;
5399  }
5400  (*q_bp_Equ_bp_Node_Ptr) += -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp);
5401 
5402 
5403  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5404  {
5405  Xyce::dout() << " (*q_bp_Equ_bp_Node_Ptr) += " << -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp)<< std::endl;
5406  }
5407  (*q_bp_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_bp].dx(admsProbeID_Temp_dt_GND);
5408 
5409 
5410  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5411  {
5412  Xyce::dout() << " (*q_bp_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_bp].dx(admsProbeID_Temp_dt_GND)<< std::endl;
5413  }
5414  (*q_c_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c);
5415 
5416 
5417  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5418  {
5419  Xyce::dout() << " (*q_c_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c)<< std::endl;
5420  }
5421  (*q_cx_Equ_ei_Node_Ptr) += -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei);
5422 
5423 
5424  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5425  {
5426  Xyce::dout() << " (*q_cx_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei)<< std::endl;
5427  }
5428  (*q_cx_Equ_bp_Node_Ptr) += -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp);
5429 
5430 
5431  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5432  {
5433  Xyce::dout() << " (*q_cx_Equ_bp_Node_Ptr) += " << -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp)<< std::endl;
5434  }
5436 
5437 
5438  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5439  {
5440  Xyce::dout() << " (*q_b_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e)<< std::endl;
5441  }
5442  (*q_e_Equ_e_Node_Ptr) += -dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e);
5443 
5444 
5445  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5446  {
5447  Xyce::dout() << " (*q_e_Equ_e_Node_Ptr) += " << -dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e)<< std::endl;
5448  }
5449  (*q_xf2_Equ_xf2_Node_Ptr) += +dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_xf2_GND);
5450 
5451 
5452  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5453  {
5454  Xyce::dout() << " (*q_xf2_Equ_xf2_Node_Ptr) += " << +dynamicContributions[admsNodeID_xf2].dx(admsProbeID_V_xf2_GND)<< std::endl;
5455  }
5456  (*q_dt_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_dt].dx(admsProbeID_Temp_dt_GND);
5457 
5458 
5459  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5460  {
5461  Xyce::dout() << " (*q_dt_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_dt].dx(admsProbeID_Temp_dt_GND)<< std::endl;
5462  }
5463  (*q_bi_Equ_cx_Node_Ptr) += -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx);
5464 
5465 
5466  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5467  {
5468  Xyce::dout() << " (*q_bi_Equ_cx_Node_Ptr) += " << -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx)<< std::endl;
5469  }
5470  (*q_ei_Equ_cx_Node_Ptr) += -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx);
5471 
5472 
5473  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5474  {
5475  Xyce::dout() << " (*q_ei_Equ_cx_Node_Ptr) += " << -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx)<< std::endl;
5476  }
5477  (*q_b_Equ_e_Node_Ptr) += -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e);
5478 
5479 
5480  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5481  {
5482  Xyce::dout() << " (*q_b_Equ_e_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e)<< std::endl;
5483  }
5484  (*q_e_Equ_b_Node_Ptr) += +dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e);
5485 
5486 
5487  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5488  {
5489  Xyce::dout() << " (*q_e_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e)<< std::endl;
5490  }
5491  (*q_b_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c);
5492 
5493 
5494  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5495  {
5496  Xyce::dout() << " (*q_b_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c)<< std::endl;
5497  }
5498  (*q_c_Equ_b_Node_Ptr) += +dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c);
5499 
5500 
5501  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5502  {
5503  Xyce::dout() << " (*q_c_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c)<< std::endl;
5504  }
5505  (*q_xf1_Equ_xf1_Node_Ptr) += +dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_xf1_GND);
5506 
5507 
5508  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5509  {
5510  Xyce::dout() << " (*q_xf1_Equ_xf1_Node_Ptr) += " << +dynamicContributions[admsNodeID_xf1].dx(admsProbeID_V_xf1_GND)<< std::endl;
5511  }
5512 
5513 
5514  return bsuccess;
5515 }
5516 
5517 //-----------------------------------------------------------------------------
5518 // Function : Instance::updateTemperature
5519 // Purpose : Set temperature and update any parameters that depend on it
5520 // Special Notes : In Xyce ADMS, we'll simply copy the temperature, which is
5521 // in Kelvin, to our "admsTemperature" variable, which needs
5522 // to be in Celsius.
5523 // Scope : public
5524 // Creator : admsXml
5525 // Creation Date :
5526 //-----------------------------------------------------------------------------
5527 bool Instance::updateTemperature(const double & temperatureTemp)
5528 {
5529 
5530  admsTemperature = temperatureTemp;
5531  adms_vt_nom = adms_vt(temperatureTemp);
5532 
5533  return true;
5534 }
5535 
5536 // Class Model
5537 //-----------------------------------------------------------------------------
5538 // Function : Model::processParams
5539 // Purpose :
5540 // Special Notes :
5541 // Scope : public
5542 // Creator : admsXml
5543 // Creation Date :
5544 //-----------------------------------------------------------------------------
5546 {
5547 
5548  // Now we need to check that any parameters are within their ranges as
5549  // specified in the verilog:
5550 
5551  // Parameter type : [ (-1), 1 ]] 0, 0 [
5552  if ( (!((type >=(-1) && type <=1 )) || (type >0 && type <0 )) )
5553  {
5554  UserError0(*this) << "ADMSvbic13: Parameter type value " << type << " out of range [ (-1), 1 ] or ] 0, 0 [";
5555  }
5556 
5557  // Parameter VBICtype : [ (-1), 1 ][ 0, 0 ]
5558  if ( (!((VBICtype >=(-1) && VBICtype <=1 )) || (VBICtype >=0 && VBICtype <=0 )) )
5559  {
5560  UserError0(*this) << "ADMSvbic13: Parameter VBICtype value " << VBICtype << " out of range [ (-1), 1 ] or in excluded range [ 0, 0 ]";
5561  }
5562 
5563  // Parameter scale : ] 0.0, 1.0 ]
5564  if ( (!((scale >0.0 && scale <=1.0 ))) )
5565  {
5566  UserError0(*this) << "ADMSvbic13: Parameter scale value " << scale << " out of range ] 0.0, 1.0 ]";
5567  }
5568 
5569  // Parameter shrink : [ 0.0, 100.0 [
5570  if ( (!((shrink >=0.0 && shrink <100.0 ))) )
5571  {
5572  UserError0(*this) << "ADMSvbic13: Parameter shrink value " << shrink << " out of range [ 0.0, 100.0 [";
5573  }
5574 
5575  // Parameter tmin : [ (-250.0), 27.0 ]
5576  if ( (!((tmin >=(-250.0) && tmin <=27.0 ))) )
5577  {
5578  UserError0(*this) << "ADMSvbic13: Parameter tmin value " << tmin << " out of range [ (-250.0), 27.0 ]";
5579  }
5580 
5581  // Parameter tmax : [ 27.0, 1000.0 ]
5582  if ( (!((tmax >=27.0 && tmax <=1000.0 ))) )
5583  {
5584  UserError0(*this) << "ADMSvbic13: Parameter tmax value " << tmax << " out of range [ 27.0, 1000.0 ]";
5585  }
5586 
5587  // Parameter gmin : [ 0.0, (+inf) [
5588  if ( (!((gmin >=0.0))) )
5589  {
5590  UserError0(*this) << "ADMSvbic13: Parameter gmin value " << gmin << " out of range [ 0.0, (+inf) [";
5591  }
5592 
5593  // Parameter pnjmaxi : ] 0.0, (+inf) [
5594  if ( (!((pnjmaxi >0.0))) )
5595  {
5596  UserError0(*this) << "ADMSvbic13: Parameter pnjmaxi value " << pnjmaxi << " out of range ] 0.0, (+inf) [";
5597  }
5598 
5599  // Parameter maxexp : ] 0.0, (+inf) [
5600  if ( (!((maxexp >0.0))) )
5601  {
5602  UserError0(*this) << "ADMSvbic13: Parameter maxexp value " << maxexp << " out of range ] 0.0, (+inf) [";
5603  }
5604 
5605  // Parameter tnom : [ (-250.0), 1000.0 ]
5606  if ( (!((tnom >=(-250.0) && tnom <=1000.0 ))) )
5607  {
5608  UserError0(*this) << "ADMSvbic13: Parameter tnom value " << tnom << " out of range [ (-250.0), 1000.0 ]";
5609  }
5610 
5611  // Parameter tminclip : [ (-250.0), 27.0 ]
5612  if ( (!((tminclip >=(-250.0) && tminclip <=27.0 ))) )
5613  {
5614  UserError0(*this) << "ADMSvbic13: Parameter tminclip value " << tminclip << " out of range [ (-250.0), 27.0 ]";
5615  }
5616 
5617  // Parameter tmaxclip : [ 27.0, 1000.0 ]
5618  if ( (!((tmaxclip >=27.0 && tmaxclip <=1000.0 ))) )
5619  {
5620  UserError0(*this) << "ADMSvbic13: Parameter tmaxclip value " << tmaxclip << " out of range [ 27.0, 1000.0 ]";
5621  }
5622 
5623  // Parameter rcx : [ 0.0, (+inf) [
5624  if ( (!((rcx >=0.0))) )
5625  {
5626  UserError0(*this) << "ADMSvbic13: Parameter rcx value " << rcx << " out of range [ 0.0, (+inf) [";
5627  }
5628 
5629  // Parameter rci : [ 0.0, (+inf) [
5630  if ( (!((rci >=0.0))) )
5631  {
5632  UserError0(*this) << "ADMSvbic13: Parameter rci value " << rci << " out of range [ 0.0, (+inf) [";
5633  }
5634 
5635  // Parameter vo : [ 0.0, (+inf) [
5636  if ( (!((vo >=0.0))) )
5637  {
5638  UserError0(*this) << "ADMSvbic13: Parameter vo value " << vo << " out of range [ 0.0, (+inf) [";
5639  }
5640 
5641  // Parameter gamm : [ 0.0, (+inf) [
5642  if ( (!((gamm >=0.0))) )
5643  {
5644  UserError0(*this) << "ADMSvbic13: Parameter gamm value " << gamm << " out of range [ 0.0, (+inf) [";
5645  }
5646 
5647  // Parameter hrcf : [ 0.0, (+inf) [
5648  if ( (!((hrcf >=0.0))) )
5649  {
5650  UserError0(*this) << "ADMSvbic13: Parameter hrcf value " << hrcf << " out of range [ 0.0, (+inf) [";
5651  }
5652 
5653  // Parameter rbx : [ 0.0, (+inf) [
5654  if ( (!((rbx >=0.0))) )
5655  {
5656  UserError0(*this) << "ADMSvbic13: Parameter rbx value " << rbx << " out of range [ 0.0, (+inf) [";
5657  }
5658 
5659  // Parameter rbi : [ 0.0, (+inf) [
5660  if ( (!((rbi >=0.0))) )
5661  {
5662  UserError0(*this) << "ADMSvbic13: Parameter rbi value " << rbi << " out of range [ 0.0, (+inf) [";
5663  }
5664 
5665  // Parameter re : [ 0.0, (+inf) [
5666  if ( (!((re >=0.0))) )
5667  {
5668  UserError0(*this) << "ADMSvbic13: Parameter re value " << re << " out of range [ 0.0, (+inf) [";
5669  }
5670 
5671  // Parameter rs : [ 0.0, (+inf) [
5672  if ( (!((rs >=0.0))) )
5673  {
5674  UserError0(*this) << "ADMSvbic13: Parameter rs value " << rs << " out of range [ 0.0, (+inf) [";
5675  }
5676 
5677  // Parameter rbp : [ 0.0, (+inf) [
5678  if ( (!((rbp >=0.0))) )
5679  {
5680  UserError0(*this) << "ADMSvbic13: Parameter rbp value " << rbp << " out of range [ 0.0, (+inf) [";
5681  }
5682 
5683  // Parameter is : ] 0.0, (+inf) [
5684  if ( (!((is >0.0))) )
5685  {
5686  UserError0(*this) << "ADMSvbic13: Parameter is value " << is << " out of range ] 0.0, (+inf) [";
5687  }
5688 
5689  // Parameter isrr : ] 0.0, (+inf) [
5690  if ( (!((isrr >0.0))) )
5691  {
5692  UserError0(*this) << "ADMSvbic13: Parameter isrr value " << isrr << " out of range ] 0.0, (+inf) [";
5693  }
5694 
5695  // Parameter nf : ] 0.0, (+inf) [
5696  if ( (!((nf >0.0))) )
5697  {
5698  UserError0(*this) << "ADMSvbic13: Parameter nf value " << nf << " out of range ] 0.0, (+inf) [";
5699  }
5700 
5701  // Parameter nr : ] 0.0, (+inf) [
5702  if ( (!((nr >0.0))) )
5703  {
5704  UserError0(*this) << "ADMSvbic13: Parameter nr value " << nr << " out of range ] 0.0, (+inf) [";
5705  }
5706 
5707  // Parameter qbm : [ 0, 1 ]
5708  if ( (!((qbm >=0 && qbm <=1 ))) )
5709  {
5710  UserError0(*this) << "ADMSvbic13: Parameter qbm value " << qbm << " out of range [ 0, 1 ]";
5711  }
5712 
5713  // Parameter isp : [ 0.0, (+inf) [
5714  if ( (!((isp >=0.0))) )
5715  {
5716  UserError0(*this) << "ADMSvbic13: Parameter isp value " << isp << " out of range [ 0.0, (+inf) [";
5717  }
5718 
5719  // Parameter wsp : [ 0.0, 1.0 ]
5720  if ( (!((wsp >=0.0 && wsp <=1.0 ))) )
5721  {
5722  UserError0(*this) << "ADMSvbic13: Parameter wsp value " << wsp << " out of range [ 0.0, 1.0 ]";
5723  }
5724 
5725  // Parameter nfp : ] 0.0, (+inf) [
5726  if ( (!((nfp >0.0))) )
5727  {
5728  UserError0(*this) << "ADMSvbic13: Parameter nfp value " << nfp << " out of range ] 0.0, (+inf) [";
5729  }
5730 
5731  // Parameter fc : [ 0.0, 1.0 [
5732  if ( (!((fc >=0.0 && fc <1.0 ))) )
5733  {
5734  UserError0(*this) << "ADMSvbic13: Parameter fc value " << fc << " out of range [ 0.0, 1.0 [";
5735  }
5736 
5737  // Parameter cbeo : [ 0.0, (+inf) [
5738  if ( (!((cbeo >=0.0))) )
5739  {
5740  UserError0(*this) << "ADMSvbic13: Parameter cbeo value " << cbeo << " out of range [ 0.0, (+inf) [";
5741  }
5742 
5743  // Parameter cje : [ 0.0, (+inf) [
5744  if ( (!((cje >=0.0))) )
5745  {
5746  UserError0(*this) << "ADMSvbic13: Parameter cje value " << cje << " out of range [ 0.0, (+inf) [";
5747  }
5748 
5749  // Parameter pe : ] 0.0, (+inf) [
5750  if ( (!((pe >0.0))) )
5751  {
5752  UserError0(*this) << "ADMSvbic13: Parameter pe value " << pe << " out of range ] 0.0, (+inf) [";
5753  }
5754 
5755  // Parameter me : ] 0.0, 1.0 ]
5756  if ( (!((me >0.0 && me <=1.0 ))) )
5757  {
5758  UserError0(*this) << "ADMSvbic13: Parameter me value " << me << " out of range ] 0.0, 1.0 ]";
5759  }
5760 
5761  // Parameter cbco : [ 0.0, (+inf) [
5762  if ( (!((cbco >=0.0))) )
5763  {
5764  UserError0(*this) << "ADMSvbic13: Parameter cbco value " << cbco << " out of range [ 0.0, (+inf) [";
5765  }
5766 
5767  // Parameter cjc : [ 0.0, (+inf) [
5768  if ( (!((cjc >=0.0))) )
5769  {
5770  UserError0(*this) << "ADMSvbic13: Parameter cjc value " << cjc << " out of range [ 0.0, (+inf) [";
5771  }
5772 
5773  // Parameter pc : ] 0.0, (+inf) [
5774  if ( (!((pc >0.0))) )
5775  {
5776  UserError0(*this) << "ADMSvbic13: Parameter pc value " << pc << " out of range ] 0.0, (+inf) [";
5777  }
5778 
5779  // Parameter mc : ] 0.0, 1.0 ]
5780  if ( (!((mc >0.0 && mc <=1.0 ))) )
5781  {
5782  UserError0(*this) << "ADMSvbic13: Parameter mc value " << mc << " out of range ] 0.0, 1.0 ]";
5783  }
5784 
5785  // Parameter vrt : [ 0.0, (+inf) [
5786  if ( (!((vrt >=0.0))) )
5787  {
5788  UserError0(*this) << "ADMSvbic13: Parameter vrt value " << vrt << " out of range [ 0.0, (+inf) [";
5789  }
5790 
5791  // Parameter art : ] 0.0, (+inf) [
5792  if ( (!((art >0.0))) )
5793  {
5794  UserError0(*this) << "ADMSvbic13: Parameter art value " << art << " out of range ] 0.0, (+inf) [";
5795  }
5796 
5797  // Parameter qco : [ 0.0, (+inf) [
5798  if ( (!((qco >=0.0))) )
5799  {
5800  UserError0(*this) << "ADMSvbic13: Parameter qco value " << qco << " out of range [ 0.0, (+inf) [";
5801  }
5802 
5803  // Parameter cjep : [ 0.0, (+inf) [
5804  if ( (!((cjep >=0.0))) )
5805  {
5806  UserError0(*this) << "ADMSvbic13: Parameter cjep value " << cjep << " out of range [ 0.0, (+inf) [";
5807  }
5808 
5809  // Parameter cjcp : [ 0.0, (+inf) [
5810  if ( (!((cjcp >=0.0))) )
5811  {
5812  UserError0(*this) << "ADMSvbic13: Parameter cjcp value " << cjcp << " out of range [ 0.0, (+inf) [";
5813  }
5814 
5815  // Parameter ps : ] 0.0, (+inf) [
5816  if ( (!((ps >0.0))) )
5817  {
5818  UserError0(*this) << "ADMSvbic13: Parameter ps value " << ps << " out of range ] 0.0, (+inf) [";
5819  }
5820 
5821  // Parameter ms : ] 0.0, 1.0 ]
5822  if ( (!((ms >0.0 && ms <=1.0 ))) )
5823  {
5824  UserError0(*this) << "ADMSvbic13: Parameter ms value " << ms << " out of range ] 0.0, 1.0 ]";
5825  }
5826 
5827  // Parameter ccso : [ 0.0, (+inf) [
5828  if ( (!((ccso >=0.0))) )
5829  {
5830  UserError0(*this) << "ADMSvbic13: Parameter ccso value " << ccso << " out of range [ 0.0, (+inf) [";
5831  }
5832 
5833  // Parameter ibei : [ 0.0, (+inf) [
5834  if ( (!((ibei >=0.0))) )
5835  {
5836  UserError0(*this) << "ADMSvbic13: Parameter ibei value " << ibei << " out of range [ 0.0, (+inf) [";
5837  }
5838 
5839  // Parameter wbe : [ 0.0, 1.0 ]
5840  if ( (!((wbe >=0.0 && wbe <=1.0 ))) )
5841  {
5842  UserError0(*this) << "ADMSvbic13: Parameter wbe value " << wbe << " out of range [ 0.0, 1.0 ]";
5843  }
5844 
5845  // Parameter nei : ] 0.0, (+inf) [
5846  if ( (!((nei >0.0))) )
5847  {
5848  UserError0(*this) << "ADMSvbic13: Parameter nei value " << nei << " out of range ] 0.0, (+inf) [";
5849  }
5850 
5851  // Parameter qnibeir : [ 0.0, 1.0 ]
5852  if ( (!((qnibeir >=0.0 && qnibeir <=1.0 ))) )
5853  {
5854  UserError0(*this) << "ADMSvbic13: Parameter qnibeir value " << qnibeir << " out of range [ 0.0, 1.0 ]";
5855  }
5856 
5857  // Parameter iben : [ 0.0, (+inf) [
5858  if ( (!((iben >=0.0))) )
5859  {
5860  UserError0(*this) << "ADMSvbic13: Parameter iben value " << iben << " out of range [ 0.0, (+inf) [";
5861  }
5862 
5863  // Parameter nen : ] nei, (+inf) [
5864  if ( (!((nen >nei))) )
5865  {
5866  UserError0(*this) << "ADMSvbic13: Parameter nen value " << nen << " out of range ] nei, (+inf) [";
5867  }
5868 
5869  // Parameter ibci : [ 0.0, (+inf) [
5870  if ( (!((ibci >=0.0))) )
5871  {
5872  UserError0(*this) << "ADMSvbic13: Parameter ibci value " << ibci << " out of range [ 0.0, (+inf) [";
5873  }
5874 
5875  // Parameter nci : ] 0.0, (+inf) [
5876  if ( (!((nci >0.0))) )
5877  {
5878  UserError0(*this) << "ADMSvbic13: Parameter nci value " << nci << " out of range ] 0.0, (+inf) [";
5879  }
5880 
5881  // Parameter ibcn : [ 0.0, (+inf) [
5882  if ( (!((ibcn >=0.0))) )
5883  {
5884  UserError0(*this) << "ADMSvbic13: Parameter ibcn value " << ibcn << " out of range [ 0.0, (+inf) [";
5885  }
5886 
5887  // Parameter ncn : ] nci, (+inf) [
5888  if ( (!((ncn >nci))) )
5889  {
5890  UserError0(*this) << "ADMSvbic13: Parameter ncn value " << ncn << " out of range ] nci, (+inf) [";
5891  }
5892 
5893  // Parameter ibeip : [ 0.0, (+inf) [
5894  if ( (!((ibeip >=0.0))) )
5895  {
5896  UserError0(*this) << "ADMSvbic13: Parameter ibeip value " << ibeip << " out of range [ 0.0, (+inf) [";
5897  }
5898 
5899  // Parameter ibenp : [ 0.0, (+inf) [
5900  if ( (!((ibenp >=0.0))) )
5901  {
5902  UserError0(*this) << "ADMSvbic13: Parameter ibenp value " << ibenp << " out of range [ 0.0, (+inf) [";
5903  }
5904 
5905  // Parameter ibcip : [ 0.0, (+inf) [
5906  if ( (!((ibcip >=0.0))) )
5907  {
5908  UserError0(*this) << "ADMSvbic13: Parameter ibcip value " << ibcip << " out of range [ 0.0, (+inf) [";
5909  }
5910 
5911  // Parameter ncip : ] 0.0, (+inf) [
5912  if ( (!((ncip >0.0))) )
5913  {
5914  UserError0(*this) << "ADMSvbic13: Parameter ncip value " << ncip << " out of range ] 0.0, (+inf) [";
5915  }
5916 
5917  // Parameter ibcnp : [ 0.0, (+inf) [
5918  if ( (!((ibcnp >=0.0))) )
5919  {
5920  UserError0(*this) << "ADMSvbic13: Parameter ibcnp value " << ibcnp << " out of range [ 0.0, (+inf) [";
5921  }
5922 
5923  // Parameter ncnp : ] ncip, (+inf) [
5924  if ( (!((ncnp >ncip))) )
5925  {
5926  UserError0(*this) << "ADMSvbic13: Parameter ncnp value " << ncnp << " out of range ] ncip, (+inf) [";
5927  }
5928 
5929  // Parameter vef : [ 0.0, (+inf) [
5930  if ( (!((vef >=0.0))) )
5931  {
5932  UserError0(*this) << "ADMSvbic13: Parameter vef value " << vef << " out of range [ 0.0, (+inf) [";
5933  }
5934 
5935  // Parameter ver : [ 0.0, (+inf) [
5936  if ( (!((ver >=0.0))) )
5937  {
5938  UserError0(*this) << "ADMSvbic13: Parameter ver value " << ver << " out of range [ 0.0, (+inf) [";
5939  }
5940 
5941  // Parameter ikf : [ 0.0, (+inf) [
5942  if ( (!((ikf >=0.0))) )
5943  {
5944  UserError0(*this) << "ADMSvbic13: Parameter ikf value " << ikf << " out of range [ 0.0, (+inf) [";
5945  }
5946 
5947  // Parameter nkf : ] 0.0, (+inf) [
5948  if ( (!((nkf >0.0))) )
5949  {
5950  UserError0(*this) << "ADMSvbic13: Parameter nkf value " << nkf << " out of range ] 0.0, (+inf) [";
5951  }
5952 
5953  // Parameter ikr : [ 0.0, (+inf) [
5954  if ( (!((ikr >=0.0))) )
5955  {
5956  UserError0(*this) << "ADMSvbic13: Parameter ikr value " << ikr << " out of range [ 0.0, (+inf) [";
5957  }
5958 
5959  // Parameter ikp : [ 0.0, (+inf) [
5960  if ( (!((ikp >=0.0))) )
5961  {
5962  UserError0(*this) << "ADMSvbic13: Parameter ikp value " << ikp << " out of range [ 0.0, (+inf) [";
5963  }
5964 
5965  // Parameter tf : [ 0.0, (+inf) [
5966  if ( (!((tf >=0.0))) )
5967  {
5968  UserError0(*this) << "ADMSvbic13: Parameter tf value " << tf << " out of range [ 0.0, (+inf) [";
5969  }
5970 
5971  // Parameter qtf : [ 0.0, (+inf) [
5972  if ( (!((qtf >=0.0))) )
5973  {
5974  UserError0(*this) << "ADMSvbic13: Parameter qtf value " << qtf << " out of range [ 0.0, (+inf) [";
5975  }
5976 
5977  // Parameter xtf : [ 0.0, (+inf) [
5978  if ( (!((xtf >=0.0))) )
5979  {
5980  UserError0(*this) << "ADMSvbic13: Parameter xtf value " << xtf << " out of range [ 0.0, (+inf) [";
5981  }
5982 
5983  // Parameter vtf : [ 0.0, (+inf) [
5984  if ( (!((vtf >=0.0))) )
5985  {
5986  UserError0(*this) << "ADMSvbic13: Parameter vtf value " << vtf << " out of range [ 0.0, (+inf) [";
5987  }
5988 
5989  // Parameter itf : [ 0.0, (+inf) [
5990  if ( (!((itf >=0.0))) )
5991  {
5992  UserError0(*this) << "ADMSvbic13: Parameter itf value " << itf << " out of range [ 0.0, (+inf) [";
5993  }
5994 
5995  // Parameter tr : [ 0.0, (+inf) [
5996  if ( (!((tr >=0.0))) )
5997  {
5998  UserError0(*this) << "ADMSvbic13: Parameter tr value " << tr << " out of range [ 0.0, (+inf) [";
5999  }
6000 
6001  // Parameter td : [ 0.0, (+inf) [
6002  if ( (!((td >=0.0))) )
6003  {
6004  UserError0(*this) << "ADMSvbic13: Parameter td value " << td << " out of range [ 0.0, (+inf) [";
6005  }
6006 
6007  // Parameter avc1 : [ 0.0, (+inf) [
6008  if ( (!((avc1 >=0.0))) )
6009  {
6010  UserError0(*this) << "ADMSvbic13: Parameter avc1 value " << avc1 << " out of range [ 0.0, (+inf) [";
6011  }
6012 
6013  // Parameter avc2 : [ 0.0, (+inf) [
6014  if ( (!((avc2 >=0.0))) )
6015  {
6016  UserError0(*this) << "ADMSvbic13: Parameter avc2 value " << avc2 << " out of range [ 0.0, (+inf) [";
6017  }
6018 
6019  // Parameter avcx1 : [ 0.0, (+inf) [
6020  if ( (!((avcx1 >=0.0))) )
6021  {
6022  UserError0(*this) << "ADMSvbic13: Parameter avcx1 value " << avcx1 << " out of range [ 0.0, (+inf) [";
6023  }
6024 
6025  // Parameter avcx2 : [ 0.0, (+inf) [
6026  if ( (!((avcx2 >=0.0))) )
6027  {
6028  UserError0(*this) << "ADMSvbic13: Parameter avcx2 value " << avcx2 << " out of range [ 0.0, (+inf) [";
6029  }
6030 
6031  // Parameter mcx : ] 0.0, 1.0 ]
6032  if ( (!((mcx >0.0 && mcx <=1.0 ))) )
6033  {
6034  UserError0(*this) << "ADMSvbic13: Parameter mcx value " << mcx << " out of range ] 0.0, 1.0 ]";
6035  }
6036 
6037  // Parameter vbbe : [ 0.0, (+inf) [
6038  if ( (!((vbbe >=0.0))) )
6039  {
6040  UserError0(*this) << "ADMSvbic13: Parameter vbbe value " << vbbe << " out of range [ 0.0, (+inf) [";
6041  }
6042 
6043  // Parameter nbbe : ] 0.0, (+inf) [
6044  if ( (!((nbbe >0.0))) )
6045  {
6046  UserError0(*this) << "ADMSvbic13: Parameter nbbe value " << nbbe << " out of range ] 0.0, (+inf) [";
6047  }
6048 
6049  // Parameter ibbe : ] 0.0, (+inf) [
6050  if ( (!((ibbe >0.0))) )
6051  {
6052  UserError0(*this) << "ADMSvbic13: Parameter ibbe value " << ibbe << " out of range ] 0.0, (+inf) [";
6053  }
6054 
6055  // Parameter vpte : [ 0.0, (+inf) [
6056  if ( (!((vpte >=0.0))) )
6057  {
6058  UserError0(*this) << "ADMSvbic13: Parameter vpte value " << vpte << " out of range [ 0.0, (+inf) [";
6059  }
6060 
6061  // Parameter ibk0 : [ 0.0, (+inf) [
6062  if ( (!((ibk0 >=0.0))) )
6063  {
6064  UserError0(*this) << "ADMSvbic13: Parameter ibk0 value " << ibk0 << " out of range [ 0.0, (+inf) [";
6065  }
6066 
6067  // Parameter abk : ] 0.0, (+inf) [
6068  if ( (!((abk >0.0))) )
6069  {
6070  UserError0(*this) << "ADMSvbic13: Parameter abk value " << abk << " out of range ] 0.0, (+inf) [";
6071  }
6072 
6073  // Parameter bbk : [ 0.0, (+inf) [
6074  if ( (!((bbk >=0.0))) )
6075  {
6076  UserError0(*this) << "ADMSvbic13: Parameter bbk value " << bbk << " out of range [ 0.0, (+inf) [";
6077  }
6078 
6079  // Parameter kfn : [ 0.0, (+inf) [
6080  if ( (!((kfn >=0.0))) )
6081  {
6082  UserError0(*this) << "ADMSvbic13: Parameter kfn value " << kfn << " out of range [ 0.0, (+inf) [";
6083  }
6084 
6085  // Parameter afn : ] 0.0, (+inf) [
6086  if ( (!((afn >0.0))) )
6087  {
6088  UserError0(*this) << "ADMSvbic13: Parameter afn value " << afn << " out of range ] 0.0, (+inf) [";
6089  }
6090 
6091  // Parameter bfn : ] 0.0, (+inf) [
6092  if ( (!((bfn >0.0))) )
6093  {
6094  UserError0(*this) << "ADMSvbic13: Parameter bfn value " << bfn << " out of range ] 0.0, (+inf) [";
6095  }
6096 
6097  // Parameter rth : [ 0.0, (+inf) [
6098  if ( (!((rth >=0.0))) )
6099  {
6100  UserError0(*this) << "ADMSvbic13: Parameter rth value " << rth << " out of range [ 0.0, (+inf) [";
6101  }
6102 
6103  // Parameter cth : [ 0.0, (+inf) [
6104  if ( (!((cth >=0.0))) )
6105  {
6106  UserError0(*this) << "ADMSvbic13: Parameter cth value " << cth << " out of range [ 0.0, (+inf) [";
6107  }
6108 
6109 
6110  // and of course, this routine is where we should put the initial_model
6111  // stuff
6112 
6113 
6114  return true;
6115 }
6116 //----------------------------------------------------------------------------
6117 // Function : Model::processInstanceParams
6118 // Purpose :
6119 // Special Notes :
6120 // Scope : public
6121 // Creator :
6122 // Creation Date :
6123 //----------------------------------------------------------------------------
6125 {
6126 
6127  std::vector<Instance*>::iterator iter;
6128  std::vector<Instance*>::iterator first = instanceContainer.begin();
6129  std::vector<Instance*>::iterator last = instanceContainer.end();
6130 
6131  for (iter=first; iter!=last; ++iter)
6132  {
6133  (*iter)->processParams();
6134  }
6135 
6136  return true;
6137 }
6138 
6139 //-----------------------------------------------------------------------------
6140 // Function : Model::Model
6141 // Purpose : model block constructor
6142 // Special Notes :
6143 // Scope : public
6144 // Creator :
6145 // Creation Date :
6146 //-----------------------------------------------------------------------------
6148  const Configuration & configuration,
6149  const ModelBlock & model_block,
6150  const FactoryBlock & factory_block)
6151  : DeviceModel(model_block, configuration.getModelParameters(), factory_block),
6152  npn(0.0),
6153  pnp(0.0),
6154  type((-1)),
6155  VBICtype(1),
6156  scale(1.0),
6157  shrink(0.0),
6158  tmin((-100.0)),
6159  tmax(500.0),
6160  gmin(1.0e-12),
6161  pnjmaxi(1.0),
6162  maxexp(1.0e22),
6163  tnom(27.0),
6164  tminclip((-100.0)),
6165  tmaxclip(500.0),
6166  rcx(0.0),
6167  rci(0.0),
6168  vo(0.0),
6169  gamm(0.0),
6170  hrcf(0.0),
6171  rbx(0.0),
6172  rbi(0.0),
6173  re(0.0),
6174  rs(0.0),
6175  rbp(0.0),
6176  is(1.0e-16),
6177  isrr(1.0),
6178  nf(1.0),
6179  nr(1.0),
6180  qbm(0),
6181  isp(0.0),
6182  wsp(1.0),
6183  nfp(1.0),
6184  fc(0.9),
6185  cbeo(0.0),
6186  cje(0.0),
6187  pe(0.75),
6188  me(0.33),
6189  aje((-0.5)),
6190  cbco(0.0),
6191  cjc(0.0),
6192  pc(0.75),
6193  mc(0.33),
6194  ajc((-0.5)),
6195  vrt(0.0),
6196  art(0.1),
6197  qco(0.0),
6198  cjep(0.0),
6199  cjcp(0.0),
6200  ps(0.75),
6201  ms(0.33),
6202  ajs((-0.5)),
6203  ccso(0.0),
6204  ibei(1.0e-18),
6205  wbe(1.0),
6206  nei(1.0),
6207  qnibeir(0.0),
6208  iben(0.0),
6209  nen(2.0),
6210  ibci(1.0e-16),
6211  nci(1.0),
6212  ibcn(0.0),
6213  ncn(2.0),
6214  ibeip(0.0),
6215  ibenp(0.0),
6216  ibcip(0.0),
6217  ncip(1.0),
6218  ibcnp(0.0),
6219  ncnp(2.0),
6220  vef(0.0),
6221  ver(0.0),
6222  ikf(0.0),
6223  nkf(0.5),
6224  ikr(0.0),
6225  ikp(0.0),
6226  tf(0.0),
6227  qtf(0.0),
6228  xtf(0.0),
6229  vtf(0.0),
6230  itf(0.0),
6231  tr(0.0),
6232  td(0.0),
6233  avc1(0.0),
6234  avc2(0.0),
6235  avcx1(0.0),
6236  avcx2(0.0),
6237  mcx(0.33),
6238  vbbe(0.0),
6239  nbbe(1.0),
6240  ibbe(1.0e-06),
6241  tvbbe1(0.0),
6242  tvbbe2(0.0),
6243  tnbbe(0.0),
6244  vpte(0.0),
6245  ibk0(0.0),
6246  abk(1.0),
6247  bbk(0.0),
6248  kfn(0.0),
6249  afn(1.0),
6250  bfn(1.0),
6251  rth(0.0),
6252  cth(0.0),
6253  xre(0.0),
6254  xrb(0.0),
6255  xrbi(0.0),
6256  xrbx(0.0),
6257  xrc(0.0),
6258  xrci(0.0),
6259  xrcx(0.0),
6260  xrbp(0.0),
6261  xrs(0.0),
6262  xvo(0.0),
6263  ea(1.12),
6264  eaie(1.12),
6265  eaic(1.12),
6266  eais(1.12),
6267  eane(1.12),
6268  eanc(1.12),
6269  eans(1.12),
6270  eap(1.12),
6271  dear(0.0),
6272  xis(3.0),
6273  xii(3.0),
6274  xin(3.0),
6275  xisr(0.0),
6276  xikf(0.0),
6277  tavc(0.0),
6278  tavcx(0.0),
6279  tnf(0.0),
6280  tcvef(0.0),
6281  tcver(0.0),
6282  tcrth(0.0)
6283 {
6284  // Set params to constant default values (from parTable):
6285  setDefaultParams();
6286 
6287  // Set params according to .model line and constant defaults from metadata:
6288  setModParams(model_block.params);
6289 
6290  // Set any non-constant parameter defaults:
6291  // Set any parameters that were not given and whose defaults depend on other
6292  // parameters:
6293 
6294 
6295  if (!given("XYCEADMSMODTEMP"))
6296  admsModTemp=getDeviceOptions().temp.getImmutableValue<double>();
6297 
6298  // Fix the TNOM parameter that has "helpfully" been converted to Kelvin
6299  // by the DeviceEntity class
6300 
6301  if (given("TNOM"))
6302  tnom -= CONSTCtoK;
6303 
6304  // Calculate any parameters specified as expressions:
6305 
6307 
6308  // set internal model type based on model card type
6309  if (getType() == "pnp" || getType() == "PNP")
6310  VBICtype = -1;
6311 
6312  // calculate dependent (ie computed) params and check for errors:
6313  processParams();
6314 }
6315 
6316 //-----------------------------------------------------------------------------
6317 // Function : Model::~Model
6318 // Purpose : destructor
6319 // Special Notes :
6320 // Scope : public
6321 // Creator :
6322 // Creation Date :
6323 //-----------------------------------------------------------------------------
6325 {
6326  std::vector<Instance*>::iterator iterI;
6327  std::vector<Instance*>::iterator firstI = instanceContainer.begin ();
6328  std::vector<Instance*>::iterator lastI = instanceContainer.end ();
6329 
6330  // loop over instances:
6331  for (iterI = firstI; iterI != lastI; ++iterI)
6332  {
6333  delete (*iterI);
6334  }
6335 }
6336 
6337 //-----------------------------------------------------------------------------
6338 // Function : Model::printOutInstances
6339 // Purpose : debugging tool.
6340 // Special Notes :
6341 // Scope : public
6342 // Creator :
6343 // Creation Date :
6344 //-----------------------------------------------------------------------------
6345 std::ostream &Model::printOutInstances(std::ostream &os) const
6346 {
6347  std::vector<Instance*>::const_iterator iter;
6348  std::vector<Instance*>::const_iterator first = instanceContainer.begin();
6349  std::vector<Instance*>::const_iterator last = instanceContainer.end();
6350 
6351  int i;
6352  os << std::endl;
6353  os << " name model name Parameters" << std::endl;
6354  for (i=0, iter=first; iter!=last; ++iter, ++i)
6355  {
6356  os << " " << i << ": " << (*iter)->getName() << " ";
6357  os << getName();
6358 
6359  os << std::endl;
6360  os << "M = " << (*iter)->m << std::endl;
6361  os << "TRISE = " << (*iter)->trise << std::endl;
6362  os << "SW_NOISE = " << (*iter)->sw_noise << std::endl;
6363  os << "SW_ET = " << (*iter)->sw_et << std::endl;
6364  os << std::endl;
6365  }
6366 
6367  os << std::endl;
6368 
6369  return os;
6370 }
6371 
6372 //-----------------------------------------------------------------------------
6373 // Function : Model::forEachInstance
6374 // Purpose :
6375 // Special Notes :
6376 // Scope : public
6377 // Creator : David Baur
6378 // Creation Date : 2/4/2014
6379 //-----------------------------------------------------------------------------
6380 /// Apply a device instance "op" to all instances associated with this
6381 /// model
6382 ///
6383 /// @param[in] op Operator to apply to all instances.
6384 ///
6385 ///
6386 void Model::forEachInstance(DeviceInstanceOp &op) const /* override */
6387 {
6388  for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
6389  op(*it);
6390 }
6391 
6392 Device *Traits::factory(const Configuration &configuration, const FactoryBlock &factory_block)
6393 {
6394  return new DeviceMaster<Traits>(configuration, factory_block, factory_block.solverState_, factory_block.deviceOptions_);
6395 }
6396 
6398 {
6400  .registerDevice("q", 11)
6401  .registerModelType("npn", 11)
6402  .registerModelType("pnp", 11);
6403 }
6404 
6405 
6406 
6407 #ifdef Xyce_ADMS_SENSITIVITIES
6408 //-----------------------------------------------------------------------------
6409 // Function : evaluateInitialInstance
6410 // Purpose : Evaluate the statements in the initial_instance block
6411 // Special Notes : specific for sensitivity use
6412 // Scope : public
6413 // Creator : admsXml
6414 // Creation Date :
6415 //-----------------------------------------------------------------------------
6416 void evaluateInitialInstance(
6417  // instance parameters
6418  // reals
6419  AdmsSensFadType & instancePar_m,
6420  bool instancePar_given_m,
6421  AdmsSensFadType & instancePar_trise,
6422  bool instancePar_given_trise,
6423  // non-reals(including hidden)
6424  int instancePar_sw_noise,
6425  bool instancePar_given_sw_noise,
6426  int instancePar_sw_et,
6427  bool instancePar_given_sw_et,
6428  // model parameters
6429  // reals
6430  AdmsSensFadType & modelPar_npn,
6431  bool modelPar_given_npn,
6432  AdmsSensFadType & modelPar_pnp,
6433  bool modelPar_given_pnp,
6434  AdmsSensFadType & modelPar_scale,
6435  bool modelPar_given_scale,
6436  AdmsSensFadType & modelPar_shrink,
6437  bool modelPar_given_shrink,
6438  AdmsSensFadType & modelPar_tmin,
6439  bool modelPar_given_tmin,
6440  AdmsSensFadType & modelPar_tmax,
6441  bool modelPar_given_tmax,
6442  AdmsSensFadType & modelPar_gmin,
6443  bool modelPar_given_gmin,
6444  AdmsSensFadType & modelPar_pnjmaxi,
6445  bool modelPar_given_pnjmaxi,
6446  AdmsSensFadType & modelPar_maxexp,
6447  bool modelPar_given_maxexp,
6448  AdmsSensFadType & modelPar_tnom,
6449  bool modelPar_given_tnom,
6450  AdmsSensFadType & modelPar_tminclip,
6451  bool modelPar_given_tminclip,
6452  AdmsSensFadType & modelPar_tmaxclip,
6453  bool modelPar_given_tmaxclip,
6454  AdmsSensFadType & modelPar_rcx,
6455  bool modelPar_given_rcx,
6456  AdmsSensFadType & modelPar_rci,
6457  bool modelPar_given_rci,
6458  AdmsSensFadType & modelPar_vo,
6459  bool modelPar_given_vo,
6460  AdmsSensFadType & modelPar_gamm,
6461  bool modelPar_given_gamm,
6462  AdmsSensFadType & modelPar_hrcf,
6463  bool modelPar_given_hrcf,
6464  AdmsSensFadType & modelPar_rbx,
6465  bool modelPar_given_rbx,
6466  AdmsSensFadType & modelPar_rbi,
6467  bool modelPar_given_rbi,
6468  AdmsSensFadType & modelPar_re,
6469  bool modelPar_given_re,
6470  AdmsSensFadType & modelPar_rs,
6471  bool modelPar_given_rs,
6472  AdmsSensFadType & modelPar_rbp,
6473  bool modelPar_given_rbp,
6474  AdmsSensFadType & modelPar_is,
6475  bool modelPar_given_is,
6476  AdmsSensFadType & modelPar_isrr,
6477  bool modelPar_given_isrr,
6478  AdmsSensFadType & modelPar_nf,
6479  bool modelPar_given_nf,
6480  AdmsSensFadType & modelPar_nr,
6481  bool modelPar_given_nr,
6482  AdmsSensFadType & modelPar_isp,
6483  bool modelPar_given_isp,
6484  AdmsSensFadType & modelPar_wsp,
6485  bool modelPar_given_wsp,
6486  AdmsSensFadType & modelPar_nfp,
6487  bool modelPar_given_nfp,
6488  AdmsSensFadType & modelPar_fc,
6489  bool modelPar_given_fc,
6490  AdmsSensFadType & modelPar_cbeo,
6491  bool modelPar_given_cbeo,
6492  AdmsSensFadType & modelPar_cje,
6493  bool modelPar_given_cje,
6494  AdmsSensFadType & modelPar_pe,
6495  bool modelPar_given_pe,
6496  AdmsSensFadType & modelPar_me,
6497  bool modelPar_given_me,
6498  AdmsSensFadType & modelPar_aje,
6499  bool modelPar_given_aje,
6500  AdmsSensFadType & modelPar_cbco,
6501  bool modelPar_given_cbco,
6502  AdmsSensFadType & modelPar_cjc,
6503  bool modelPar_given_cjc,
6504  AdmsSensFadType & modelPar_pc,
6505  bool modelPar_given_pc,
6506  AdmsSensFadType & modelPar_mc,
6507  bool modelPar_given_mc,
6508  AdmsSensFadType & modelPar_ajc,
6509  bool modelPar_given_ajc,
6510  AdmsSensFadType & modelPar_vrt,
6511  bool modelPar_given_vrt,
6512  AdmsSensFadType & modelPar_art,
6513  bool modelPar_given_art,
6514  AdmsSensFadType & modelPar_qco,
6515  bool modelPar_given_qco,
6516  AdmsSensFadType & modelPar_cjep,
6517  bool modelPar_given_cjep,
6518  AdmsSensFadType & modelPar_cjcp,
6519  bool modelPar_given_cjcp,
6520  AdmsSensFadType & modelPar_ps,
6521  bool modelPar_given_ps,
6522  AdmsSensFadType & modelPar_ms,
6523  bool modelPar_given_ms,
6524  AdmsSensFadType & modelPar_ajs,
6525  bool modelPar_given_ajs,
6526  AdmsSensFadType & modelPar_ccso,
6527  bool modelPar_given_ccso,
6528  AdmsSensFadType & modelPar_ibei,
6529  bool modelPar_given_ibei,
6530  AdmsSensFadType & modelPar_wbe,
6531  bool modelPar_given_wbe,
6532  AdmsSensFadType & modelPar_nei,
6533  bool modelPar_given_nei,
6534  AdmsSensFadType & modelPar_qnibeir,
6535  bool modelPar_given_qnibeir,
6536  AdmsSensFadType & modelPar_iben,
6537  bool modelPar_given_iben,
6538  AdmsSensFadType & modelPar_nen,
6539  bool modelPar_given_nen,
6540  AdmsSensFadType & modelPar_ibci,
6541  bool modelPar_given_ibci,
6542  AdmsSensFadType & modelPar_nci,
6543  bool modelPar_given_nci,
6544  AdmsSensFadType & modelPar_ibcn,
6545  bool modelPar_given_ibcn,
6546  AdmsSensFadType & modelPar_ncn,
6547  bool modelPar_given_ncn,
6548  AdmsSensFadType & modelPar_ibeip,
6549  bool modelPar_given_ibeip,
6550  AdmsSensFadType & modelPar_ibenp,
6551  bool modelPar_given_ibenp,
6552  AdmsSensFadType & modelPar_ibcip,
6553  bool modelPar_given_ibcip,
6554  AdmsSensFadType & modelPar_ncip,
6555  bool modelPar_given_ncip,
6556  AdmsSensFadType & modelPar_ibcnp,
6557  bool modelPar_given_ibcnp,
6558  AdmsSensFadType & modelPar_ncnp,
6559  bool modelPar_given_ncnp,
6560  AdmsSensFadType & modelPar_vef,
6561  bool modelPar_given_vef,
6562  AdmsSensFadType & modelPar_ver,
6563  bool modelPar_given_ver,
6564  AdmsSensFadType & modelPar_ikf,
6565  bool modelPar_given_ikf,
6566  AdmsSensFadType & modelPar_nkf,
6567  bool modelPar_given_nkf,
6568  AdmsSensFadType & modelPar_ikr,
6569  bool modelPar_given_ikr,
6570  AdmsSensFadType & modelPar_ikp,
6571  bool modelPar_given_ikp,
6572  AdmsSensFadType & modelPar_tf,
6573  bool modelPar_given_tf,
6574  AdmsSensFadType & modelPar_qtf,
6575  bool modelPar_given_qtf,
6576  AdmsSensFadType & modelPar_xtf,
6577  bool modelPar_given_xtf,
6578  AdmsSensFadType & modelPar_vtf,
6579  bool modelPar_given_vtf,
6580  AdmsSensFadType & modelPar_itf,
6581  bool modelPar_given_itf,
6582  AdmsSensFadType & modelPar_tr,
6583  bool modelPar_given_tr,
6584  AdmsSensFadType & modelPar_td,
6585  bool modelPar_given_td,
6586  AdmsSensFadType & modelPar_avc1,
6587  bool modelPar_given_avc1,
6588  AdmsSensFadType & modelPar_avc2,
6589  bool modelPar_given_avc2,
6590  AdmsSensFadType & modelPar_avcx1,
6591  bool modelPar_given_avcx1,
6592  AdmsSensFadType & modelPar_avcx2,
6593  bool modelPar_given_avcx2,
6594  AdmsSensFadType & modelPar_mcx,
6595  bool modelPar_given_mcx,
6596  AdmsSensFadType & modelPar_vbbe,
6597  bool modelPar_given_vbbe,
6598  AdmsSensFadType & modelPar_nbbe,
6599  bool modelPar_given_nbbe,
6600  AdmsSensFadType & modelPar_ibbe,
6601  bool modelPar_given_ibbe,
6602  AdmsSensFadType & modelPar_tvbbe1,
6603  bool modelPar_given_tvbbe1,
6604  AdmsSensFadType & modelPar_tvbbe2,
6605  bool modelPar_given_tvbbe2,
6606  AdmsSensFadType & modelPar_tnbbe,
6607  bool modelPar_given_tnbbe,
6608  AdmsSensFadType & modelPar_vpte,
6609  bool modelPar_given_vpte,
6610  AdmsSensFadType & modelPar_ibk0,
6611  bool modelPar_given_ibk0,
6612  AdmsSensFadType & modelPar_abk,
6613  bool modelPar_given_abk,
6614  AdmsSensFadType & modelPar_bbk,
6615  bool modelPar_given_bbk,
6616  AdmsSensFadType & modelPar_kfn,
6617  bool modelPar_given_kfn,
6618  AdmsSensFadType & modelPar_afn,
6619  bool modelPar_given_afn,
6620  AdmsSensFadType & modelPar_bfn,
6621  bool modelPar_given_bfn,
6622  AdmsSensFadType & modelPar_rth,
6623  bool modelPar_given_rth,
6624  AdmsSensFadType & modelPar_cth,
6625  bool modelPar_given_cth,
6626  AdmsSensFadType & modelPar_xre,
6627  bool modelPar_given_xre,
6628  AdmsSensFadType & modelPar_xrb,
6629  bool modelPar_given_xrb,
6630  AdmsSensFadType & modelPar_xrbi,
6631  bool modelPar_given_xrbi,
6632  AdmsSensFadType & modelPar_xrbx,
6633  bool modelPar_given_xrbx,
6634  AdmsSensFadType & modelPar_xrc,
6635  bool modelPar_given_xrc,
6636  AdmsSensFadType & modelPar_xrci,
6637  bool modelPar_given_xrci,
6638  AdmsSensFadType & modelPar_xrcx,
6639  bool modelPar_given_xrcx,
6640  AdmsSensFadType & modelPar_xrbp,
6641  bool modelPar_given_xrbp,
6642  AdmsSensFadType & modelPar_xrs,
6643  bool modelPar_given_xrs,
6644  AdmsSensFadType & modelPar_xvo,
6645  bool modelPar_given_xvo,
6646  AdmsSensFadType & modelPar_ea,
6647  bool modelPar_given_ea,
6648  AdmsSensFadType & modelPar_eaie,
6649  bool modelPar_given_eaie,
6650  AdmsSensFadType & modelPar_eaic,
6651  bool modelPar_given_eaic,
6652  AdmsSensFadType & modelPar_eais,
6653  bool modelPar_given_eais,
6654  AdmsSensFadType & modelPar_eane,
6655  bool modelPar_given_eane,
6656  AdmsSensFadType & modelPar_eanc,
6657  bool modelPar_given_eanc,
6658  AdmsSensFadType & modelPar_eans,
6659  bool modelPar_given_eans,
6660  AdmsSensFadType & modelPar_eap,
6661  bool modelPar_given_eap,
6662  AdmsSensFadType & modelPar_dear,
6663  bool modelPar_given_dear,
6664  AdmsSensFadType & modelPar_xis,
6665  bool modelPar_given_xis,
6666  AdmsSensFadType & modelPar_xii,
6667  bool modelPar_given_xii,
6668  AdmsSensFadType & modelPar_xin,
6669  bool modelPar_given_xin,
6670  AdmsSensFadType & modelPar_xisr,
6671  bool modelPar_given_xisr,
6672  AdmsSensFadType & modelPar_xikf,
6673  bool modelPar_given_xikf,
6674  AdmsSensFadType & modelPar_tavc,
6675  bool modelPar_given_tavc,
6676  AdmsSensFadType & modelPar_tavcx,
6677  bool modelPar_given_tavcx,
6678  AdmsSensFadType & modelPar_tnf,
6679  bool modelPar_given_tnf,
6680  AdmsSensFadType & modelPar_tcvef,
6681  bool modelPar_given_tcvef,
6682  AdmsSensFadType & modelPar_tcver,
6683  bool modelPar_given_tcver,
6684  AdmsSensFadType & modelPar_tcrth,
6685  bool modelPar_given_tcrth,
6686  // non-reals (including hidden)
6687  int modelPar_type,
6688  bool modelPar_given_type,
6689  int modelPar_VBICtype,
6690  int modelPar_qbm,
6691  bool modelPar_given_qbm,
6692  double admsTemperature, double adms_vt_nom)
6693 {
6694 }
6695 
6696 
6697 
6698 //-----------------------------------------------------------------------------
6699 // Function : evaluateInitialModel
6700 // Purpose : Evaluate the statements in the initial_model block
6701 // Special Notes : specific for sensitivity use
6702 // Scope : public
6703 // Creator : admsXml
6704 // Creation Date :
6705 //-----------------------------------------------------------------------------
6706 void evaluateInitialModel(
6707  // model parameters
6708  // reals
6709  AdmsSensFadType & modelPar_npn,
6710  bool modelPar_given_npn,
6711  AdmsSensFadType & modelPar_pnp,
6712  bool modelPar_given_pnp,
6713  AdmsSensFadType & modelPar_scale,
6714  bool modelPar_given_scale,
6715  AdmsSensFadType & modelPar_shrink,
6716  bool modelPar_given_shrink,
6717  AdmsSensFadType & modelPar_tmin,
6718  bool modelPar_given_tmin,
6719  AdmsSensFadType & modelPar_tmax,
6720  bool modelPar_given_tmax,
6721  AdmsSensFadType & modelPar_gmin,
6722  bool modelPar_given_gmin,
6723  AdmsSensFadType & modelPar_pnjmaxi,
6724  bool modelPar_given_pnjmaxi,
6725  AdmsSensFadType & modelPar_maxexp,
6726  bool modelPar_given_maxexp,
6727  AdmsSensFadType & modelPar_tnom,
6728  bool modelPar_given_tnom,
6729  AdmsSensFadType & modelPar_tminclip,
6730  bool modelPar_given_tminclip,
6731  AdmsSensFadType & modelPar_tmaxclip,
6732  bool modelPar_given_tmaxclip,
6733  AdmsSensFadType & modelPar_rcx,
6734  bool modelPar_given_rcx,
6735  AdmsSensFadType & modelPar_rci,
6736  bool modelPar_given_rci,
6737  AdmsSensFadType & modelPar_vo,
6738  bool modelPar_given_vo,
6739  AdmsSensFadType & modelPar_gamm,
6740  bool modelPar_given_gamm,
6741  AdmsSensFadType & modelPar_hrcf,
6742  bool modelPar_given_hrcf,
6743  AdmsSensFadType & modelPar_rbx,
6744  bool modelPar_given_rbx,
6745  AdmsSensFadType & modelPar_rbi,
6746  bool modelPar_given_rbi,
6747  AdmsSensFadType & modelPar_re,
6748  bool modelPar_given_re,
6749  AdmsSensFadType & modelPar_rs,
6750  bool modelPar_given_rs,
6751  AdmsSensFadType & modelPar_rbp,
6752  bool modelPar_given_rbp,
6753  AdmsSensFadType & modelPar_is,
6754  bool modelPar_given_is,
6755  AdmsSensFadType & modelPar_isrr,
6756  bool modelPar_given_isrr,
6757  AdmsSensFadType & modelPar_nf,
6758  bool modelPar_given_nf,
6759  AdmsSensFadType & modelPar_nr,
6760  bool modelPar_given_nr,
6761  AdmsSensFadType & modelPar_isp,
6762  bool modelPar_given_isp,
6763  AdmsSensFadType & modelPar_wsp,
6764  bool modelPar_given_wsp,
6765  AdmsSensFadType & modelPar_nfp,
6766  bool modelPar_given_nfp,
6767  AdmsSensFadType & modelPar_fc,
6768  bool modelPar_given_fc,
6769  AdmsSensFadType & modelPar_cbeo,
6770  bool modelPar_given_cbeo,
6771  AdmsSensFadType & modelPar_cje,
6772  bool modelPar_given_cje,
6773  AdmsSensFadType & modelPar_pe,
6774  bool modelPar_given_pe,
6775  AdmsSensFadType & modelPar_me,
6776  bool modelPar_given_me,
6777  AdmsSensFadType & modelPar_aje,
6778  bool modelPar_given_aje,
6779  AdmsSensFadType & modelPar_cbco,
6780  bool modelPar_given_cbco,
6781  AdmsSensFadType & modelPar_cjc,
6782  bool modelPar_given_cjc,
6783  AdmsSensFadType & modelPar_pc,
6784  bool modelPar_given_pc,
6785  AdmsSensFadType & modelPar_mc,
6786  bool modelPar_given_mc,
6787  AdmsSensFadType & modelPar_ajc,
6788  bool modelPar_given_ajc,
6789  AdmsSensFadType & modelPar_vrt,
6790  bool modelPar_given_vrt,
6791  AdmsSensFadType & modelPar_art,
6792  bool modelPar_given_art,
6793  AdmsSensFadType & modelPar_qco,
6794  bool modelPar_given_qco,
6795  AdmsSensFadType & modelPar_cjep,
6796  bool modelPar_given_cjep,
6797  AdmsSensFadType & modelPar_cjcp,
6798  bool modelPar_given_cjcp,
6799  AdmsSensFadType & modelPar_ps,
6800  bool modelPar_given_ps,
6801  AdmsSensFadType & modelPar_ms,
6802  bool modelPar_given_ms,
6803  AdmsSensFadType & modelPar_ajs,
6804  bool modelPar_given_ajs,
6805  AdmsSensFadType & modelPar_ccso,
6806  bool modelPar_given_ccso,
6807  AdmsSensFadType & modelPar_ibei,
6808  bool modelPar_given_ibei,
6809  AdmsSensFadType & modelPar_wbe,
6810  bool modelPar_given_wbe,
6811  AdmsSensFadType & modelPar_nei,
6812  bool modelPar_given_nei,
6813  AdmsSensFadType & modelPar_qnibeir,
6814  bool modelPar_given_qnibeir,
6815  AdmsSensFadType & modelPar_iben,
6816  bool modelPar_given_iben,
6817  AdmsSensFadType & modelPar_nen,
6818  bool modelPar_given_nen,
6819  AdmsSensFadType & modelPar_ibci,
6820  bool modelPar_given_ibci,
6821  AdmsSensFadType & modelPar_nci,
6822  bool modelPar_given_nci,
6823  AdmsSensFadType & modelPar_ibcn,
6824  bool modelPar_given_ibcn,
6825  AdmsSensFadType & modelPar_ncn,
6826  bool modelPar_given_ncn,
6827  AdmsSensFadType & modelPar_ibeip,
6828  bool modelPar_given_ibeip,
6829  AdmsSensFadType & modelPar_ibenp,
6830  bool modelPar_given_ibenp,
6831  AdmsSensFadType & modelPar_ibcip,
6832  bool modelPar_given_ibcip,
6833  AdmsSensFadType & modelPar_ncip,
6834  bool modelPar_given_ncip,
6835  AdmsSensFadType & modelPar_ibcnp,
6836  bool modelPar_given_ibcnp,
6837  AdmsSensFadType & modelPar_ncnp,
6838  bool modelPar_given_ncnp,
6839  AdmsSensFadType & modelPar_vef,
6840  bool modelPar_given_vef,
6841  AdmsSensFadType & modelPar_ver,
6842  bool modelPar_given_ver,
6843  AdmsSensFadType & modelPar_ikf,
6844  bool modelPar_given_ikf,
6845  AdmsSensFadType & modelPar_nkf,
6846  bool modelPar_given_nkf,
6847  AdmsSensFadType & modelPar_ikr,
6848  bool modelPar_given_ikr,
6849  AdmsSensFadType & modelPar_ikp,
6850  bool modelPar_given_ikp,
6851  AdmsSensFadType & modelPar_tf,
6852  bool modelPar_given_tf,
6853  AdmsSensFadType & modelPar_qtf,
6854  bool modelPar_given_qtf,
6855  AdmsSensFadType & modelPar_xtf,
6856  bool modelPar_given_xtf,
6857  AdmsSensFadType & modelPar_vtf,
6858  bool modelPar_given_vtf,
6859  AdmsSensFadType & modelPar_itf,
6860  bool modelPar_given_itf,
6861  AdmsSensFadType & modelPar_tr,
6862  bool modelPar_given_tr,
6863  AdmsSensFadType & modelPar_td,
6864  bool modelPar_given_td,
6865  AdmsSensFadType & modelPar_avc1,
6866  bool modelPar_given_avc1,
6867  AdmsSensFadType & modelPar_avc2,
6868  bool modelPar_given_avc2,
6869  AdmsSensFadType & modelPar_avcx1,
6870  bool modelPar_given_avcx1,
6871  AdmsSensFadType & modelPar_avcx2,
6872  bool modelPar_given_avcx2,
6873  AdmsSensFadType & modelPar_mcx,
6874  bool modelPar_given_mcx,
6875  AdmsSensFadType & modelPar_vbbe,
6876  bool modelPar_given_vbbe,
6877  AdmsSensFadType & modelPar_nbbe,
6878  bool modelPar_given_nbbe,
6879  AdmsSensFadType & modelPar_ibbe,
6880  bool modelPar_given_ibbe,
6881  AdmsSensFadType & modelPar_tvbbe1,
6882  bool modelPar_given_tvbbe1,
6883  AdmsSensFadType & modelPar_tvbbe2,
6884  bool modelPar_given_tvbbe2,
6885  AdmsSensFadType & modelPar_tnbbe,
6886  bool modelPar_given_tnbbe,
6887  AdmsSensFadType & modelPar_vpte,
6888  bool modelPar_given_vpte,
6889  AdmsSensFadType & modelPar_ibk0,
6890  bool modelPar_given_ibk0,
6891  AdmsSensFadType & modelPar_abk,
6892  bool modelPar_given_abk,
6893  AdmsSensFadType & modelPar_bbk,
6894  bool modelPar_given_bbk,
6895  AdmsSensFadType & modelPar_kfn,
6896  bool modelPar_given_kfn,
6897  AdmsSensFadType & modelPar_afn,
6898  bool modelPar_given_afn,
6899  AdmsSensFadType & modelPar_bfn,
6900  bool modelPar_given_bfn,
6901  AdmsSensFadType & modelPar_rth,
6902  bool modelPar_given_rth,
6903  AdmsSensFadType & modelPar_cth,
6904  bool modelPar_given_cth,
6905  AdmsSensFadType & modelPar_xre,
6906  bool modelPar_given_xre,
6907  AdmsSensFadType & modelPar_xrb,
6908  bool modelPar_given_xrb,
6909  AdmsSensFadType & modelPar_xrbi,
6910  bool modelPar_given_xrbi,
6911  AdmsSensFadType & modelPar_xrbx,
6912  bool modelPar_given_xrbx,
6913  AdmsSensFadType & modelPar_xrc,
6914  bool modelPar_given_xrc,
6915  AdmsSensFadType & modelPar_xrci,
6916  bool modelPar_given_xrci,
6917  AdmsSensFadType & modelPar_xrcx,
6918  bool modelPar_given_xrcx,
6919  AdmsSensFadType & modelPar_xrbp,
6920  bool modelPar_given_xrbp,
6921  AdmsSensFadType & modelPar_xrs,
6922  bool modelPar_given_xrs,
6923  AdmsSensFadType & modelPar_xvo,
6924  bool modelPar_given_xvo,
6925  AdmsSensFadType & modelPar_ea,
6926  bool modelPar_given_ea,
6927  AdmsSensFadType & modelPar_eaie,
6928  bool modelPar_given_eaie,
6929  AdmsSensFadType & modelPar_eaic,
6930  bool modelPar_given_eaic,
6931  AdmsSensFadType & modelPar_eais,
6932  bool modelPar_given_eais,
6933  AdmsSensFadType & modelPar_eane,
6934  bool modelPar_given_eane,
6935  AdmsSensFadType & modelPar_eanc,
6936  bool modelPar_given_eanc,
6937  AdmsSensFadType & modelPar_eans,
6938  bool modelPar_given_eans,
6939  AdmsSensFadType & modelPar_eap,
6940  bool modelPar_given_eap,
6941  AdmsSensFadType & modelPar_dear,
6942  bool modelPar_given_dear,
6943  AdmsSensFadType & modelPar_xis,
6944  bool modelPar_given_xis,
6945  AdmsSensFadType & modelPar_xii,
6946  bool modelPar_given_xii,
6947  AdmsSensFadType & modelPar_xin,
6948  bool modelPar_given_xin,
6949  AdmsSensFadType & modelPar_xisr,
6950  bool modelPar_given_xisr,
6951  AdmsSensFadType & modelPar_xikf,
6952  bool modelPar_given_xikf,
6953  AdmsSensFadType & modelPar_tavc,
6954  bool modelPar_given_tavc,
6955  AdmsSensFadType & modelPar_tavcx,
6956  bool modelPar_given_tavcx,
6957  AdmsSensFadType & modelPar_tnf,
6958  bool modelPar_given_tnf,
6959  AdmsSensFadType & modelPar_tcvef,
6960  bool modelPar_given_tcvef,
6961  AdmsSensFadType & modelPar_tcver,
6962  bool modelPar_given_tcver,
6963  AdmsSensFadType & modelPar_tcrth,
6964  bool modelPar_given_tcrth,
6965  // non-reals (including hidden)
6966  int modelPar_type,
6967  bool modelPar_given_type,
6968  int modelPar_VBICtype,
6969  int modelPar_qbm,
6970  bool modelPar_given_qbm,
6971  double admsTemperature)
6972 {
6973 }
6974 
6975 
6976 
6977 //-----------------------------------------------------------------------------
6978 // Function : evaluateModelEquations
6979 // Purpose : Evaluate the main module block. Similar to
6980 // updateIntermediateVars, but takes all instance and model
6981 // parameters and variables as arguments instead of using
6982 // the ones stored in the objects.
6983 // Special Notes : specific for sensitivity use
6984 // Scope : public
6985 // Creator : admsXml
6986 // Creation Date :
6987 //-----------------------------------------------------------------------------
6988 void evaluateModelEquations(
6989  std::vector <double> & probeVars,
6990  // probe constants
6991  const int admsProbeID_V_xf2_GND,
6992  const int admsProbeID_V_xf1_GND,
6993  const int admsProbeID_V_bp_cx,
6994  const int admsProbeID_V_e_ei,
6995  const int admsProbeID_V_bx_bi,
6996  const int admsProbeID_V_b_bx,
6997  const int admsProbeID_V_cx_ci,
6998  const int admsProbeID_V_c_cx,
6999  const int admsProbeID_V_b_c,
7000  const int admsProbeID_V_b_e,
7001  const int admsProbeID_V_bx_bp,
7002  const int admsProbeID_V_ci_ei,
7003  const int admsProbeID_V_bx_cx,
7004  const int admsProbeID_V_bi_cx,
7005  const int admsProbeID_V_bi_ci,
7006  const int admsProbeID_V_bx_ei,
7007  const int admsProbeID_V_bi_ei,
7008  const int admsProbeID_Temp_dt_GND,
7009  // node constants
7010  const int admsNodeID_c,
7011  const int admsNodeID_b,
7012  const int admsNodeID_e,
7013  const int admsNodeID_dt,
7014  const int admsNodeID_cx,
7015  const int admsNodeID_ci,
7016  const int admsNodeID_bx,
7017  const int admsNodeID_bi,
7018  const int admsNodeID_ei,
7019  const int admsNodeID_bp,
7020  const int admsNodeID_xf1,
7021  const int admsNodeID_xf2,
7022  // instance parameters
7023  // reals
7024  AdmsSensFadType & instancePar_m,
7025  bool instancePar_given_m,
7026  AdmsSensFadType & instancePar_trise,
7027  bool instancePar_given_trise,
7028  // non-reals(including hidden)
7029  int instancePar_sw_noise,
7030  bool instancePar_given_sw_noise,
7031  int instancePar_sw_et,
7032  bool instancePar_given_sw_et,
7033  // model parameters
7034  // reals
7035  AdmsSensFadType & modelPar_npn,
7036  bool modelPar_given_npn,
7037  AdmsSensFadType & modelPar_pnp,
7038  bool modelPar_given_pnp,
7039  AdmsSensFadType & modelPar_scale,
7040  bool modelPar_given_scale,
7041  AdmsSensFadType & modelPar_shrink,
7042  bool modelPar_given_shrink,
7043  AdmsSensFadType & modelPar_tmin,
7044  bool modelPar_given_tmin,
7045  AdmsSensFadType & modelPar_tmax,
7046  bool modelPar_given_tmax,
7047  AdmsSensFadType & modelPar_gmin,
7048  bool modelPar_given_gmin,
7049  AdmsSensFadType & modelPar_pnjmaxi,
7050  bool modelPar_given_pnjmaxi,
7051  AdmsSensFadType & modelPar_maxexp,
7052  bool modelPar_given_maxexp,
7053  AdmsSensFadType & modelPar_tnom,
7054  bool modelPar_given_tnom,
7055  AdmsSensFadType & modelPar_tminclip,
7056  bool modelPar_given_tminclip,
7057  AdmsSensFadType & modelPar_tmaxclip,
7058  bool modelPar_given_tmaxclip,
7059  AdmsSensFadType & modelPar_rcx,
7060  bool modelPar_given_rcx,
7061  AdmsSensFadType & modelPar_rci,
7062  bool modelPar_given_rci,
7063  AdmsSensFadType & modelPar_vo,
7064  bool modelPar_given_vo,
7065  AdmsSensFadType & modelPar_gamm,
7066  bool modelPar_given_gamm,
7067  AdmsSensFadType & modelPar_hrcf,
7068  bool modelPar_given_hrcf,
7069  AdmsSensFadType & modelPar_rbx,
7070  bool modelPar_given_rbx,
7071  AdmsSensFadType & modelPar_rbi,
7072  bool modelPar_given_rbi,
7073  AdmsSensFadType & modelPar_re,
7074  bool modelPar_given_re,
7075  AdmsSensFadType & modelPar_rs,
7076  bool modelPar_given_rs,
7077  AdmsSensFadType & modelPar_rbp,
7078  bool modelPar_given_rbp,
7079  AdmsSensFadType & modelPar_is,
7080  bool modelPar_given_is,
7081  AdmsSensFadType & modelPar_isrr,
7082  bool modelPar_given_isrr,
7083  AdmsSensFadType & modelPar_nf,
7084  bool modelPar_given_nf,
7085  AdmsSensFadType & modelPar_nr,
7086  bool modelPar_given_nr,
7087  AdmsSensFadType & modelPar_isp,
7088  bool modelPar_given_isp,
7089  AdmsSensFadType & modelPar_wsp,
7090  bool modelPar_given_wsp,
7091  AdmsSensFadType & modelPar_nfp,
7092  bool modelPar_given_nfp,
7093  AdmsSensFadType & modelPar_fc,
7094  bool modelPar_given_fc,
7095  AdmsSensFadType & modelPar_cbeo,
7096  bool modelPar_given_cbeo,
7097  AdmsSensFadType & modelPar_cje,
7098  bool modelPar_given_cje,
7099  AdmsSensFadType & modelPar_pe,
7100  bool modelPar_given_pe,
7101  AdmsSensFadType & modelPar_me,
7102  bool modelPar_given_me,
7103  AdmsSensFadType & modelPar_aje,
7104  bool modelPar_given_aje,
7105  AdmsSensFadType & modelPar_cbco,
7106  bool modelPar_given_cbco,
7107  AdmsSensFadType & modelPar_cjc,
7108  bool modelPar_given_cjc,
7109  AdmsSensFadType & modelPar_pc,
7110  bool modelPar_given_pc,
7111  AdmsSensFadType & modelPar_mc,
7112  bool modelPar_given_mc,
7113  AdmsSensFadType & modelPar_ajc,
7114  bool modelPar_given_ajc,
7115  AdmsSensFadType & modelPar_vrt,
7116  bool modelPar_given_vrt,
7117  AdmsSensFadType & modelPar_art,
7118  bool modelPar_given_art,
7119  AdmsSensFadType & modelPar_qco,
7120  bool modelPar_given_qco,
7121  AdmsSensFadType & modelPar_cjep,
7122  bool modelPar_given_cjep,
7123  AdmsSensFadType & modelPar_cjcp,
7124  bool modelPar_given_cjcp,
7125  AdmsSensFadType & modelPar_ps,
7126  bool modelPar_given_ps,
7127  AdmsSensFadType & modelPar_ms,
7128  bool modelPar_given_ms,
7129  AdmsSensFadType & modelPar_ajs,
7130  bool modelPar_given_ajs,
7131  AdmsSensFadType & modelPar_ccso,
7132  bool modelPar_given_ccso,
7133  AdmsSensFadType & modelPar_ibei,
7134  bool modelPar_given_ibei,
7135  AdmsSensFadType & modelPar_wbe,
7136  bool modelPar_given_wbe,
7137  AdmsSensFadType & modelPar_nei,
7138  bool modelPar_given_nei,
7139  AdmsSensFadType & modelPar_qnibeir,
7140  bool modelPar_given_qnibeir,
7141  AdmsSensFadType & modelPar_iben,
7142  bool modelPar_given_iben,
7143  AdmsSensFadType & modelPar_nen,
7144  bool modelPar_given_nen,
7145  AdmsSensFadType & modelPar_ibci,
7146  bool modelPar_given_ibci,
7147  AdmsSensFadType & modelPar_nci,
7148  bool modelPar_given_nci,
7149  AdmsSensFadType & modelPar_ibcn,
7150  bool modelPar_given_ibcn,
7151  AdmsSensFadType & modelPar_ncn,
7152  bool modelPar_given_ncn,
7153  AdmsSensFadType & modelPar_ibeip,
7154  bool modelPar_given_ibeip,
7155  AdmsSensFadType & modelPar_ibenp,
7156  bool modelPar_given_ibenp,
7157  AdmsSensFadType & modelPar_ibcip,
7158  bool modelPar_given_ibcip,
7159  AdmsSensFadType & modelPar_ncip,
7160  bool modelPar_given_ncip,
7161  AdmsSensFadType & modelPar_ibcnp,
7162  bool modelPar_given_ibcnp,
7163  AdmsSensFadType & modelPar_ncnp,
7164  bool modelPar_given_ncnp,
7165  AdmsSensFadType & modelPar_vef,
7166  bool modelPar_given_vef,
7167  AdmsSensFadType & modelPar_ver,
7168  bool modelPar_given_ver,
7169  AdmsSensFadType & modelPar_ikf,
7170  bool modelPar_given_ikf,
7171  AdmsSensFadType & modelPar_nkf,
7172  bool modelPar_given_nkf,
7173  AdmsSensFadType & modelPar_ikr,
7174  bool modelPar_given_ikr,
7175  AdmsSensFadType & modelPar_ikp,
7176  bool modelPar_given_ikp,
7177  AdmsSensFadType & modelPar_tf,
7178  bool modelPar_given_tf,
7179  AdmsSensFadType & modelPar_qtf,
7180  bool modelPar_given_qtf,
7181  AdmsSensFadType & modelPar_xtf,
7182  bool modelPar_given_xtf,
7183  AdmsSensFadType & modelPar_vtf,
7184  bool modelPar_given_vtf,
7185  AdmsSensFadType & modelPar_itf,
7186  bool modelPar_given_itf,
7187  AdmsSensFadType & modelPar_tr,
7188  bool modelPar_given_tr,
7189  AdmsSensFadType & modelPar_td,
7190  bool modelPar_given_td,
7191  AdmsSensFadType & modelPar_avc1,
7192  bool modelPar_given_avc1,
7193  AdmsSensFadType & modelPar_avc2,
7194  bool modelPar_given_avc2,
7195  AdmsSensFadType & modelPar_avcx1,
7196  bool modelPar_given_avcx1,
7197  AdmsSensFadType & modelPar_avcx2,
7198  bool modelPar_given_avcx2,
7199  AdmsSensFadType & modelPar_mcx,
7200  bool modelPar_given_mcx,
7201  AdmsSensFadType & modelPar_vbbe,
7202  bool modelPar_given_vbbe,
7203  AdmsSensFadType & modelPar_nbbe,
7204  bool modelPar_given_nbbe,
7205  AdmsSensFadType & modelPar_ibbe,
7206  bool modelPar_given_ibbe,
7207  AdmsSensFadType & modelPar_tvbbe1,
7208  bool modelPar_given_tvbbe1,
7209  AdmsSensFadType & modelPar_tvbbe2,
7210  bool modelPar_given_tvbbe2,
7211  AdmsSensFadType & modelPar_tnbbe,
7212  bool modelPar_given_tnbbe,
7213  AdmsSensFadType & modelPar_vpte,
7214  bool modelPar_given_vpte,
7215  AdmsSensFadType & modelPar_ibk0,
7216  bool modelPar_given_ibk0,
7217  AdmsSensFadType & modelPar_abk,
7218  bool modelPar_given_abk,
7219  AdmsSensFadType & modelPar_bbk,
7220  bool modelPar_given_bbk,
7221  AdmsSensFadType & modelPar_kfn,
7222  bool modelPar_given_kfn,
7223  AdmsSensFadType & modelPar_afn,
7224  bool modelPar_given_afn,
7225  AdmsSensFadType & modelPar_bfn,
7226  bool modelPar_given_bfn,
7227  AdmsSensFadType & modelPar_rth,
7228  bool modelPar_given_rth,
7229  AdmsSensFadType & modelPar_cth,
7230  bool modelPar_given_cth,
7231  AdmsSensFadType & modelPar_xre,
7232  bool modelPar_given_xre,
7233  AdmsSensFadType & modelPar_xrb,
7234  bool modelPar_given_xrb,
7235  AdmsSensFadType & modelPar_xrbi,
7236  bool modelPar_given_xrbi,
7237  AdmsSensFadType & modelPar_xrbx,
7238  bool modelPar_given_xrbx,
7239  AdmsSensFadType & modelPar_xrc,
7240  bool modelPar_given_xrc,
7241  AdmsSensFadType & modelPar_xrci,
7242  bool modelPar_given_xrci,
7243  AdmsSensFadType & modelPar_xrcx,
7244  bool modelPar_given_xrcx,
7245  AdmsSensFadType & modelPar_xrbp,
7246  bool modelPar_given_xrbp,
7247  AdmsSensFadType & modelPar_xrs,
7248  bool modelPar_given_xrs,
7249  AdmsSensFadType & modelPar_xvo,
7250  bool modelPar_given_xvo,
7251  AdmsSensFadType & modelPar_ea,
7252  bool modelPar_given_ea,
7253  AdmsSensFadType & modelPar_eaie,
7254  bool modelPar_given_eaie,
7255  AdmsSensFadType & modelPar_eaic,
7256  bool modelPar_given_eaic,
7257  AdmsSensFadType & modelPar_eais,
7258  bool modelPar_given_eais,
7259  AdmsSensFadType & modelPar_eane,
7260  bool modelPar_given_eane,
7261  AdmsSensFadType & modelPar_eanc,
7262  bool modelPar_given_eanc,
7263  AdmsSensFadType & modelPar_eans,
7264  bool modelPar_given_eans,
7265  AdmsSensFadType & modelPar_eap,
7266  bool modelPar_given_eap,
7267  AdmsSensFadType & modelPar_dear,
7268  bool modelPar_given_dear,
7269  AdmsSensFadType & modelPar_xis,
7270  bool modelPar_given_xis,
7271  AdmsSensFadType & modelPar_xii,
7272  bool modelPar_given_xii,
7273  AdmsSensFadType & modelPar_xin,
7274  bool modelPar_given_xin,
7275  AdmsSensFadType & modelPar_xisr,
7276  bool modelPar_given_xisr,
7277  AdmsSensFadType & modelPar_xikf,
7278  bool modelPar_given_xikf,
7279  AdmsSensFadType & modelPar_tavc,
7280  bool modelPar_given_tavc,
7281  AdmsSensFadType & modelPar_tavcx,
7282  bool modelPar_given_tavcx,
7283  AdmsSensFadType & modelPar_tnf,
7284  bool modelPar_given_tnf,
7285  AdmsSensFadType & modelPar_tcvef,
7286  bool modelPar_given_tcvef,
7287  AdmsSensFadType & modelPar_tcver,
7288  bool modelPar_given_tcver,
7289  AdmsSensFadType & modelPar_tcrth,
7290  bool modelPar_given_tcrth,
7291  // non-reals (including hidden)
7292  int modelPar_type,
7293  bool modelPar_given_type,
7294  int modelPar_VBICtype,
7295  int modelPar_qbm,
7296  bool modelPar_given_qbm,
7297  // basic variables
7298  double admsTemperature, double adms_vt_nom, double gmin, std::vector <AdmsSensFadType> & staticContributions, std::vector <AdmsSensFadType> & dynamicContributions, const Instance & theInstance)
7299 {
7300 
7301  // Local variables
7302 
7303 
7304  // -- code converted from analog/code block
7305  //Block-local variables for block analogBlock
7306  AdmsSensFadType is_t;
7307  AdmsSensFadType isrr_t;
7308  AdmsSensFadType ikf_t;
7309  AdmsSensFadType ibei_t;
7310  AdmsSensFadType ibci_t;
7311  AdmsSensFadType isp_t;
7312  AdmsSensFadType iben_t;
7313  AdmsSensFadType ibcn_t;
7314  //End of Block-local variables
7315  //Block-local variables for block analogBlock
7316  AdmsSensFadType ibeip_t;
7317  AdmsSensFadType ibenp_t;
7318  AdmsSensFadType ibcip_t;
7319  AdmsSensFadType ibcnp_t;
7320  //End of Block-local variables
7321  //Block-local variables for block analogBlock
7322  AdmsSensFadType rcx_t;
7323  AdmsSensFadType rci_t;
7324  AdmsSensFadType rbx_t;
7325  AdmsSensFadType rbi_t;
7326  AdmsSensFadType re_t;
7327  AdmsSensFadType rs_t;
7328  AdmsSensFadType rbp_t;
7329  AdmsSensFadType rth_t;
7330  //End of Block-local variables
7331  //Block-local variables for block analogBlock
7332  AdmsSensFadType pe_t;
7333  AdmsSensFadType pc_t;
7334  AdmsSensFadType ps_t;
7335  //End of Block-local variables
7336  //Block-local variables for block analogBlock
7337  AdmsSensFadType cje_t;
7338  AdmsSensFadType cjc_t;
7339  AdmsSensFadType cjep_t;
7340  AdmsSensFadType cjcp_t;
7341  //End of Block-local variables
7342  //Block-local variables for block analogBlock
7343  AdmsSensFadType nf_t;
7344  AdmsSensFadType nr_t;
7345  AdmsSensFadType avc2_t;
7346  AdmsSensFadType avcx2_t;
7347  AdmsSensFadType vbbe_t;
7348  AdmsSensFadType nbbe_t;
7349  AdmsSensFadType gamm_t;
7350  AdmsSensFadType vo_t;
7351  AdmsSensFadType ebbe_t;
7352  AdmsSensFadType vef_t;
7353  AdmsSensFadType ver_t;
7354  //End of Block-local variables
7355  //Block-local variables for block analogBlock
7356  AdmsSensFadType tdevC;
7357  AdmsSensFadType tdevK;
7358  AdmsSensFadType tiniK;
7359  AdmsSensFadType rT;
7360  AdmsSensFadType dT;
7361  //End of Block-local variables
7362  //Block-local variables for block analogBlock
7363  AdmsSensFadType Ivef;
7364  AdmsSensFadType Iver;
7365  AdmsSensFadType Iikf;
7366  AdmsSensFadType Iikr;
7367  AdmsSensFadType Iikp;
7368  AdmsSensFadType Ivo;
7369  AdmsSensFadType Ihrcf;
7370  AdmsSensFadType Ivtf;
7371  AdmsSensFadType Iitf;
7372  AdmsSensFadType sltf;
7373  //End of Block-local variables
7374  //Block-local variables for block analogBlock
7375  AdmsSensFadType Gcx;
7376  AdmsSensFadType Gci;
7377  AdmsSensFadType Gbx;
7378  AdmsSensFadType Gbi;
7379  AdmsSensFadType Ge;
7380  AdmsSensFadType Gbp;
7381  AdmsSensFadType Gs;
7382  AdmsSensFadType Gth;
7383  //End of Block-local variables
7384  //Block-local variables for block analogBlock
7385  AdmsSensFadType maxvIfi;
7386  AdmsSensFadType maxvIri;
7387  AdmsSensFadType maxvIp;
7388  AdmsSensFadType maxvIbbe;
7389  //End of Block-local variables
7390  //Block-local variables for block analogBlock
7391  AdmsSensFadType maxvIbei;
7392  AdmsSensFadType maxvIben;
7393  AdmsSensFadType maxvIbci;
7394  AdmsSensFadType maxvIbcn;
7395  AdmsSensFadType maxvIbeip;
7396  AdmsSensFadType maxvIbenp;
7397  AdmsSensFadType maxvIbcip;
7398  AdmsSensFadType maxvIbcnp;
7399  //End of Block-local variables
7400  //Block-local variables for block analogBlock
7401  AdmsSensFadType vtv;
7402  AdmsSensFadType Ifi;
7403  AdmsSensFadType Iri;
7404  AdmsSensFadType Itzf;
7405  AdmsSensFadType Itzr;
7406  AdmsSensFadType q1z;
7407  AdmsSensFadType q1;
7408  AdmsSensFadType q2;
7409  AdmsSensFadType qb;
7410  AdmsSensFadType Ifp;
7411  double Irp;
7412  double Iccp;
7413  AdmsSensFadType q2p;
7414  AdmsSensFadType qbp;
7415  //End of Block-local variables
7416  //Block-local variables for block analogBlock
7417  AdmsSensFadType Ibe;
7418  AdmsSensFadType Ibex;
7419  AdmsSensFadType Ibcj;
7420  AdmsSensFadType Ibc;
7421  AdmsSensFadType Ibep;
7422  double Ibcp;
7423  AdmsSensFadType Igc;
7424  AdmsSensFadType Igcx;
7425  AdmsSensFadType avalf;
7426  //End of Block-local variables
7427  //Block-local variables for block analogBlock
7428  AdmsSensFadType Ircx;
7429  AdmsSensFadType Irci;
7430  AdmsSensFadType Irbx;
7431  AdmsSensFadType Irbi;
7432  AdmsSensFadType Ire;
7433  AdmsSensFadType Irbp;
7434  double Irs;
7435  //End of Block-local variables
7436  //Block-local variables for block analogBlock
7437  AdmsSensFadType Kbci;
7438  AdmsSensFadType Kbcx;
7439  AdmsSensFadType rKp1;
7440  AdmsSensFadType Iohm;
7441  AdmsSensFadType derf;
7442  //End of Block-local variables
7443  //Block-local variables for block analogBlock
7444  AdmsSensFadType arg;
7445  AdmsSensFadType expi;
7446  AdmsSensFadType expn;
7447  AdmsSensFadType expx;
7448  AdmsSensFadType afac;
7449  //End of Block-local variables
7450  //Block-local variables for block analogBlock
7451  AdmsSensFadType VmaxExp;
7452  //End of Block-local variables
7453  //Block-local variables for block analogBlock
7454  AdmsSensFadType qdbe;
7455  AdmsSensFadType qdbex;
7456  AdmsSensFadType qdbc;
7457  AdmsSensFadType qdbep;
7458  double qdbcp;
7459  //End of Block-local variables
7460  //Block-local variables for block analogBlock
7461  AdmsSensFadType sgIf;
7462  AdmsSensFadType rIf;
7463  AdmsSensFadType mIf;
7464  AdmsSensFadType tff;
7465  //End of Block-local variables
7466  //Block-local variables for block analogBlock
7467  AdmsSensFadType Qbe;
7468  AdmsSensFadType Qbex;
7469  AdmsSensFadType Qbc;
7470  AdmsSensFadType Qbcx;
7471  AdmsSensFadType Qbep;
7472  double Qbcp;
7473  AdmsSensFadType Qbeo;
7474  AdmsSensFadType Qbco;
7475  //End of Block-local variables
7476  //Block-local variables for block analogBlock
7477  double Vxf1;
7478  double Vxf2;
7479  AdmsSensFadType Ixf1;
7480  double Ixf2;
7481  AdmsSensFadType Qxf1;
7482  AdmsSensFadType Qxf2;
7483  AdmsSensFadType Itxf;
7484  //End of Block-local variables
7485  //Block-local variables for block analogBlock
7486  double dt_et;
7487  AdmsSensFadType Ith;
7488  AdmsSensFadType power;
7489  AdmsSensFadType Irth;
7490  AdmsSensFadType Qcth;
7491  //End of Block-local variables
7492  //Block-local variables for block analogBlock
7493  AdmsSensFadType Vbei;
7494  AdmsSensFadType Vbci;
7495  AdmsSensFadType Vbex;
7496  AdmsSensFadType Vbep;
7497  double Vbcp;
7498  AdmsSensFadType Vbcx;
7499  AdmsSensFadType Vbxcx;
7500  AdmsSensFadType Bvbe;
7501  //End of Block-local variables
7502  //Block-local variables for block analogBlock
7503  AdmsSensFadType Vbe;
7504  double Vbc;
7505  double Vrcx;
7506  AdmsSensFadType Vrci;
7507  double Vrbx;
7508  double Vrbi;
7509  double Vre;
7510  double Vrbp;
7511  double Vrs;
7512  AdmsSensFadType Vcei;
7513  double Vcep;
7514  //End of Block-local variables
7515  //Block-local variables for block analogBlock
7516  AdmsSensFadType scaleFac;
7517  AdmsSensFadType shrinkL;
7518  AdmsSensFadType gminMod;
7519  AdmsSensFadType imaxMod;
7520  AdmsSensFadType mMod;
7521  //End of Block-local variables
7522  //Block-local variables for block analogBlock
7523  double ic;
7524  double ib;
7525  double ie;
7526  double isub;
7527  double powerT;
7528  double powerD;
7529  double Vce;
7530  //End of Block-local variables
7531  //Block-local variables for block analogBlock
7532  double Ircx_Vrcx;
7533  double Irci_Vrci;
7534  double Irbx_Vrbx;
7535  double Irbi_Vrbi;
7536  double Irbp_Vrbp;
7537  double Ire_Vre;
7538  double Irs_Vrs;
7539  //End of Block-local variables
7540  //Block-local variables for block analogBlock
7541  double tauTh;
7542  double gci_eff;
7543  AdmsSensFadType Iibk;
7544  AdmsSensFadType Ibk;
7545  AdmsSensFadType VcbFac;
7546  //End of Block-local variables
7547  //Block-local variables for block analogBlock
7548  AdmsSensFadType tVCrit;
7549  //End of Block-local variables
7550  //Begin block initializeModel
7551  {
7552  scaleFac = modelPar_scale;
7553  shrinkL = (1.0-(0.01*modelPar_shrink));
7554  if (modelPar_given_gmin)
7555  {
7556  gminMod = modelPar_gmin;
7557  }
7558  else
7559  {
7560  gminMod = gmin;
7561  }
7562  mMod = instancePar_m;
7563  if (modelPar_given_pnjmaxi)
7564  {
7565  imaxMod = modelPar_pnjmaxi;
7566  }
7567  else
7568  {
7569  imaxMod = 1.0;
7570  }
7571  if (modelPar_given_npn)
7572  {
7573  modelPar_VBICtype = 1.0;
7574  }
7575  else
7576  {
7577  if (modelPar_given_pnp)
7578  {
7579  modelPar_VBICtype = (-1.0);
7580  }
7581  else
7582  {
7583  if (modelPar_given_type)
7584  {
7585  modelPar_VBICtype = (-modelPar_type);
7586  }
7587  }
7588  }
7589  VmaxExp = log(modelPar_maxexp);
7590  Iikr = adms_ternary_op<AdmsSensFadType>((modelPar_ikr>0.0),(1.0/modelPar_ikr),0.0);
7591  Iikp = adms_ternary_op<AdmsSensFadType>((modelPar_ikp>0.0),(1.0/modelPar_ikp),0.0);
7592  Ihrcf = adms_ternary_op<AdmsSensFadType>((modelPar_hrcf>0.0),(1.0/modelPar_hrcf),0.0);
7593  Ivtf = adms_ternary_op<AdmsSensFadType>((modelPar_vtf>0.0),(1.0/modelPar_vtf),0.0);
7594  Iitf = adms_ternary_op<AdmsSensFadType>((modelPar_itf>0.0),(1.0/modelPar_itf),0.0);
7595  sltf = ((modelPar_itf>0.0)?0.0:1.0);
7596  tiniK = (273.15+modelPar_tnom);
7597  }
7598  // End block initializeModel
7599  //Begin block initializeInstance
7600  {
7601  tdevC = ((admsTemperature+instancePar_trise)-273.15);
7602  if ((tdevC<modelPar_tmin))
7603  {
7604  std::cerr << "WARNING: ambient temperature is lower than allowed minimum" << std::endl;
7605  }
7606  if ((tdevC>modelPar_tmax))
7607  {
7608  std::cerr << "WARNING: ambient temperature is higher than allowed maximum" << std::endl;
7609  }
7610  if ((tdevC<(modelPar_tminclip+1.0)))
7611  {
7612  tdevC = (modelPar_tminclip+exp(((tdevC-modelPar_tminclip)-1.0)));
7613  }
7614  else
7615  {
7616  if ((tdevC>(modelPar_tmaxclip-1.0)))
7617  {
7618  tdevC = (modelPar_tmaxclip-exp(((modelPar_tmaxclip-tdevC)-1.0)));
7619  }
7620  else
7621  {
7622  tdevC = tdevC;
7623  }
7624  }
7625  tdevK = (tdevC+273.15);
7626  vtv = ((1.380662e-23*tdevK)/1.602189e-19);
7627  rT = (tdevK/tiniK);
7628  tVCrit = (adms_vt(admsTemperature)*log((adms_vt(admsTemperature)/(1.41421356237309504880*modelPar_is))));
7629  if ((modelPar_ibbe>0.0))
7630  {
7631  maxvIbbe = ((modelPar_nbbe*vtv)*log((exp(((-modelPar_vbbe)/(modelPar_nbbe*vtv)))+(imaxMod/modelPar_ibbe))));
7632  }
7633  else
7634  {
7635  maxvIbbe = 0.0;
7636  }
7637  is_t = ((modelPar_is*pow(rT,(modelPar_xis/modelPar_nf)))*exp((((-modelPar_ea)*(1.0-rT))/(vtv*modelPar_nf))));
7638  if ((is_t>0.0))
7639  {
7640  if (((modelPar_ikf>0.0)&&(imaxMod>modelPar_ikf)))
7641  {
7642  maxvIfi = ((modelPar_nf*vtv)*log((1.0+(pow(((0.5*imaxMod)*pow((4.0/modelPar_ikf),modelPar_nkf)),(1.0/(1.0-modelPar_nkf)))/is_t))));
7643  }
7644  else
7645  {
7646  maxvIfi = ((modelPar_nf*vtv)*log((1.0+(imaxMod/is_t))));
7647  }
7648  }
7649  else
7650  {
7651  maxvIfi = 0.0;
7652  }
7653  isrr_t = ((modelPar_isrr*pow(rT,(modelPar_xisr/modelPar_nr)))*exp((((-modelPar_dear)*(1.0-rT))/(vtv*modelPar_nr))));
7654  if (((is_t>0.0)&&(isrr_t>0.0)))
7655  {
7656  if (((modelPar_ikr>0.0)&&(imaxMod>modelPar_ikr)))
7657  {
7658  maxvIri = ((modelPar_nr*vtv)*log((1.0+(pow(((0.5*imaxMod)*pow((4.0/modelPar_ikr),modelPar_nkf)),(1.0/(1.0-modelPar_nkf)))/(is_t*isrr_t)))));
7659  }
7660  else
7661  {
7662  maxvIri = ((modelPar_nr*vtv)*log((1.0+(imaxMod/(is_t*isrr_t)))));
7663  }
7664  }
7665  else
7666  {
7667  maxvIri = 0.0;
7668  }
7669  isp_t = ((modelPar_isp*pow(rT,(modelPar_xis/modelPar_nfp)))*exp((((-modelPar_eap)*(1.0-rT))/(vtv*modelPar_nfp))));
7670  if ((isp_t>0.0))
7671  {
7672  if (((modelPar_ikp>0.0)&&(imaxMod>modelPar_ikp)))
7673  {
7674  maxvIp = ((modelPar_nfp*vtv)*log((1.0+(((imaxMod*imaxMod)*Iikp)/isp_t))));
7675  }
7676  else
7677  {
7678  maxvIp = ((modelPar_nfp*vtv)*log((1.0+(imaxMod/isp_t))));
7679  }
7680  }
7681  else
7682  {
7683  maxvIp = 0.0;
7684  }
7685  ibei_t = ((modelPar_ibei*pow(rT,(modelPar_xii/modelPar_nei)))*exp((((-modelPar_eaie)*(1.0-rT))/(vtv*modelPar_nei))));
7686  if ((ibei_t>0.0))
7687  {
7688  maxvIbei = ((modelPar_nei*vtv)*log((1.0+(imaxMod/ibei_t))));
7689  }
7690  else
7691  {
7692  maxvIbei = 0.0;
7693  }
7694  iben_t = ((modelPar_iben*pow(rT,(modelPar_xin/modelPar_nen)))*exp((((-modelPar_eane)*(1.0-rT))/(vtv*modelPar_nen))));
7695  if ((iben_t>0.0))
7696  {
7697  maxvIben = ((modelPar_nen*vtv)*log((1.0+(imaxMod/iben_t))));
7698  }
7699  else
7700  {
7701  maxvIben = 0.0;
7702  }
7703  ibci_t = ((modelPar_ibci*pow(rT,(modelPar_xii/modelPar_nci)))*exp((((-modelPar_eaic)*(1.0-rT))/(vtv*modelPar_nci))));
7704  if ((ibci_t>0.0))
7705  {
7706  maxvIbci = ((modelPar_nci*vtv)*log((1.0+(imaxMod/ibci_t))));
7707  }
7708  else
7709  {
7710  maxvIbci = 0.0;
7711  }
7712  ibcn_t = ((modelPar_ibcn*pow(rT,(modelPar_xin/modelPar_ncn)))*exp((((-modelPar_eanc)*(1.0-rT))/(vtv*modelPar_ncn))));
7713  if ((ibcn_t>0.0))
7714  {
7715  maxvIbcn = ((modelPar_ncn*vtv)*log((1.0+(imaxMod/ibcn_t))));
7716  }
7717  else
7718  {
7719  maxvIbcn = 0.0;
7720  }
7721  ibeip_t = ((modelPar_ibeip*pow(rT,(modelPar_xii/modelPar_nci)))*exp((((-modelPar_eaic)*(1.0-rT))/(vtv*modelPar_nci))));
7722  if ((ibeip_t>0.0))
7723  {
7724  maxvIbeip = ((modelPar_nci*vtv)*log((1.0+(imaxMod/ibeip_t))));
7725  }
7726  else
7727  {
7728  maxvIbeip = 0.0;
7729  }
7730  ibenp_t = ((modelPar_ibenp*pow(rT,(modelPar_xin/modelPar_ncn)))*exp((((-modelPar_eanc)*(1.0-rT))/(vtv*modelPar_ncn))));
7731  if ((ibenp_t>0.0))
7732  {
7733  maxvIbenp = ((modelPar_ncn*vtv)*log((1.0+(imaxMod/ibenp_t))));
7734  }
7735  else
7736  {
7737  maxvIbenp = 0.0;
7738  }
7739  ibcip_t = ((modelPar_ibcip*pow(rT,(modelPar_xii/modelPar_ncip)))*exp((((-modelPar_eais)*(1.0-rT))/(vtv*modelPar_ncip))));
7740  if ((ibcip_t>0.0))
7741  {
7742  maxvIbcip = ((modelPar_ncip*vtv)*log((1.0+(imaxMod/ibcip_t))));
7743  }
7744  else
7745  {
7746  maxvIbcip = 0.0;
7747  }
7748  ibcnp_t = ((modelPar_ibcnp*pow(rT,(modelPar_xin/modelPar_ncnp)))*exp((((-modelPar_eans)*(1.0-rT))/(vtv*modelPar_ncnp))));
7749  if ((ibcnp_t>0.0))
7750  {
7751  maxvIbcnp = ((modelPar_ncnp*vtv)*log((1.0+(imaxMod/ibcnp_t))));
7752  }
7753  else
7754  {
7755  maxvIbcnp = 0.0;
7756  }
7757  }
7758  // End block initializeInstance
7759  //Begin block evaluateStatic
7760  {
7761  dt_et = probeVars[admsProbeID_Temp_dt_GND];
7762 
7763  tdevC = (((admsTemperature+instancePar_trise)+dt_et)-273.15);
7764  if ((tdevC<(modelPar_tminclip+1.0)))
7765  {
7766  tdevC = (modelPar_tminclip+exp(((tdevC-modelPar_tminclip)-1.0)));
7767  }
7768  else
7769  {
7770  if ((tdevC>(modelPar_tmaxclip-1.0)))
7771  {
7772  tdevC = (modelPar_tmaxclip-exp(((modelPar_tmaxclip-tdevC)-1.0)));
7773  }
7774  else
7775  {
7776  tdevC = tdevC;
7777  }
7778  }
7779  tdevK = (tdevC+273.15);
7780  vtv = ((1.380662e-23*tdevK)/1.602189e-19);
7781  rT = (tdevK/tiniK);
7782  dT = (tdevK-tiniK);
7783  ikf_t = (modelPar_ikf*pow(rT,modelPar_xikf));
7784  if (modelPar_given_xrcx)
7785  {
7786  rcx_t = (modelPar_rcx*pow(rT,modelPar_xrcx));
7787  }
7788  else
7789  {
7790  rcx_t = (modelPar_rcx*pow(rT,modelPar_xrc));
7791  }
7792  if (modelPar_given_xrci)
7793  {
7794  rci_t = (modelPar_rci*pow(rT,modelPar_xrci));
7795  }
7796  else
7797  {
7798  rci_t = (modelPar_rci*pow(rT,modelPar_xrc));
7799  }
7800  if (modelPar_given_xrbx)
7801  {
7802  rbx_t = (modelPar_rbx*pow(rT,modelPar_xrbx));
7803  }
7804  else
7805  {
7806  rbx_t = (modelPar_rbx*pow(rT,modelPar_xrb));
7807  }
7808  if (modelPar_given_xrbi)
7809  {
7810  rbi_t = (modelPar_rbi*pow(rT,modelPar_xrbi));
7811  }
7812  else
7813  {
7814  rbi_t = (modelPar_rbi*pow(rT,modelPar_xrb));
7815  }
7816  re_t = (modelPar_re*pow(rT,modelPar_xre));
7817  rs_t = (modelPar_rs*pow(rT,modelPar_xrs));
7818  if (modelPar_given_xrbp)
7819  {
7820  rbp_t = (modelPar_rbp*pow(rT,modelPar_xrbp));
7821  }
7822  else
7823  {
7824  rbp_t = (modelPar_rbp*pow(rT,modelPar_xrc));
7825  }
7826  rth_t = (modelPar_rth*(1.0+(dT*modelPar_tcrth)));
7827  is_t = ((modelPar_is*pow(rT,(modelPar_xis/modelPar_nf)))*exp((((-modelPar_ea)*(1.0-rT))/(vtv*modelPar_nf))));
7828  isrr_t = ((modelPar_isrr*pow(rT,(modelPar_xisr/modelPar_nr)))*exp((((-modelPar_dear)*(1.0-rT))/(vtv*modelPar_nr))));
7829  isp_t = ((modelPar_isp*pow(rT,(modelPar_xis/modelPar_nfp)))*exp((((-modelPar_eap)*(1.0-rT))/(vtv*modelPar_nfp))));
7830  ibei_t = ((modelPar_ibei*pow(rT,(modelPar_xii/modelPar_nei)))*exp((((-modelPar_eaie)*(1.0-rT))/(vtv*modelPar_nei))));
7831  iben_t = ((modelPar_iben*pow(rT,(modelPar_xin/modelPar_nen)))*exp((((-modelPar_eane)*(1.0-rT))/(vtv*modelPar_nen))));
7832  ibci_t = ((modelPar_ibci*pow(rT,(modelPar_xii/modelPar_nci)))*exp((((-modelPar_eaic)*(1.0-rT))/(vtv*modelPar_nci))));
7833  ibcn_t = ((modelPar_ibcn*pow(rT,(modelPar_xin/modelPar_ncn)))*exp((((-modelPar_eanc)*(1.0-rT))/(vtv*modelPar_ncn))));
7834  ibeip_t = ((modelPar_ibeip*pow(rT,(modelPar_xii/modelPar_nci)))*exp((((-modelPar_eaic)*(1.0-rT))/(vtv*modelPar_nci))));
7835  ibenp_t = ((modelPar_ibenp*pow(rT,(modelPar_xin/modelPar_ncn)))*exp((((-modelPar_eanc)*(1.0-rT))/(vtv*modelPar_ncn))));
7836  ibcip_t = ((modelPar_ibcip*pow(rT,(modelPar_xii/modelPar_ncip)))*exp((((-modelPar_eais)*(1.0-rT))/(vtv*modelPar_ncip))));
7837  ibcnp_t = ((modelPar_ibcnp*pow(rT,(modelPar_xin/modelPar_ncnp)))*exp((((-modelPar_eans)*(1.0-rT))/(vtv*modelPar_ncnp))));
7838  nf_t = (modelPar_nf*(1.0+(dT*modelPar_tnf)));
7839  nr_t = (modelPar_nr*(1.0+(dT*modelPar_tnf)));
7840  avc2_t = (modelPar_avc2*(1.0+(dT*modelPar_tavc)));
7841  avcx2_t = (modelPar_avcx2*(1.0+(dT*modelPar_tavcx)));
7842  vbbe_t = (modelPar_vbbe*(1.0+(dT*(modelPar_tvbbe1+(dT*modelPar_tvbbe2)))));
7843  nbbe_t = (modelPar_nbbe*(1.0+(dT*modelPar_tnbbe)));
7844  //Begin block pePsibiBlock
7845  {
7846  //Block-local variables for block pePsibiBlock
7847  AdmsSensFadType psiio;
7848  AdmsSensFadType psiin;
7849  //End of Block-local variables
7850  psiio = ((2.0*(vtv/rT))*log((exp((((0.5*modelPar_pe)*rT)/vtv))-exp(((((-0.5)*modelPar_pe)*rT)/vtv)))));
7851  psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-(modelPar_eaie*(rT-1.0)));
7852  pe_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
7853  }
7854  // End block pePsibiBlock
7855  //Begin block pcPsibiBlock
7856  {
7857  //Block-local variables for block pcPsibiBlock
7858  AdmsSensFadType psiio;
7859  AdmsSensFadType psiin;
7860  //End of Block-local variables
7861  psiio = ((2.0*(vtv/rT))*log((exp((((0.5*modelPar_pc)*rT)/vtv))-exp(((((-0.5)*modelPar_pc)*rT)/vtv)))));
7862  psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-(modelPar_eaic*(rT-1.0)));
7863  pc_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
7864  }
7865  // End block pcPsibiBlock
7866  //Begin block psPsibiBlock
7867  {
7868  //Block-local variables for block psPsibiBlock
7869  AdmsSensFadType psiio;
7870  AdmsSensFadType psiin;
7871  //End of Block-local variables
7872  psiio = ((2.0*(vtv/rT))*log((exp((((0.5*modelPar_ps)*rT)/vtv))-exp(((((-0.5)*modelPar_ps)*rT)/vtv)))));
7873  psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-(modelPar_eais*(rT-1.0)));
7874  ps_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
7875  }
7876  // End block psPsibiBlock
7877  cje_t = (modelPar_cje*pow((modelPar_pe/pe_t),modelPar_me));
7878  cjc_t = (modelPar_cjc*pow((modelPar_pc/pc_t),modelPar_mc));
7879  cjep_t = (modelPar_cjep*pow((modelPar_pc/pc_t),modelPar_mc));
7880  cjcp_t = (modelPar_cjcp*pow((modelPar_ps/ps_t),modelPar_ms));
7881  gamm_t = ((modelPar_gamm*pow(rT,modelPar_xis))*exp((((-modelPar_ea)*(1.0-rT))/vtv)));
7882  vo_t = (modelPar_vo*pow(rT,modelPar_xvo));
7883  ebbe_t = exp(((-vbbe_t)/(nbbe_t*vtv)));
7884  vef_t = (modelPar_vef*(1.0+(dT*modelPar_tcvef)));
7885  ver_t = (modelPar_ver*(1.0+(dT*modelPar_tcver)));
7886  Gcx = adms_ternary_op<AdmsSensFadType>((rcx_t>1.0e-3),(1.0/rcx_t),1.0e3);
7887  Gci = adms_ternary_op<AdmsSensFadType>((rci_t>1.0e-3),(1.0/rci_t),1.0e3);
7888  Gbx = adms_ternary_op<AdmsSensFadType>((rbx_t>1.0e-3),(1.0/rbx_t),1.0e3);
7889  Gbi = adms_ternary_op<AdmsSensFadType>((rbi_t>1.0e-3),(1.0/rbi_t),1.0e3);
7890  Ge = adms_ternary_op<AdmsSensFadType>((re_t>1.0e-3),(1.0/re_t),1.0e3);
7891  Gbp = adms_ternary_op<AdmsSensFadType>((rbp_t>1.0e-3),(1.0/rbp_t),1.0e3);
7892  Gs = adms_ternary_op<AdmsSensFadType>((rs_t>1.0e-3),(1.0/rs_t),1.0e3);
7893  Gth = adms_ternary_op<AdmsSensFadType>((rth_t>1.0e-3),(1.0/rth_t),1.0e3);
7894  Ivef = adms_ternary_op<AdmsSensFadType>((vef_t>0.0),(1.0/vef_t),0.0);
7895  Iver = adms_ternary_op<AdmsSensFadType>((ver_t>0.0),(1.0/ver_t),0.0);
7896  Iikf = adms_ternary_op<AdmsSensFadType>((ikf_t>0.0),(1.0/ikf_t),0.0);
7897  Ivo = adms_ternary_op<AdmsSensFadType>((vo_t>0.0),(1.0/vo_t),0.0);
7898  Vbei = probeVars[admsProbeID_V_bi_ei];
7899 
7900  Vbex = probeVars[admsProbeID_V_bx_ei];
7901 
7902  Vbci = probeVars[admsProbeID_V_bi_ci];
7903 
7904  Vbcx = probeVars[admsProbeID_V_bi_cx];
7905 
7906  Vbxcx = probeVars[admsProbeID_V_bx_cx];
7907 
7908  Vcei = (modelPar_VBICtype*(probeVars[admsProbeID_V_ci_ei]));
7909  Vbep = probeVars[admsProbeID_V_bx_bp];
7910 
7911  Vbe = probeVars[admsProbeID_V_b_e];
7912 
7913  Vbc = (probeVars[admsProbeID_V_b_c]);
7914  Vrcx = (probeVars[admsProbeID_V_c_cx]);
7915  Vrci = (modelPar_VBICtype*(probeVars[admsProbeID_V_cx_ci]));
7916  Vrbx = (probeVars[admsProbeID_V_b_bx]);
7917  Vrbi = (probeVars[admsProbeID_V_bx_bi]);
7918  Vre = (probeVars[admsProbeID_V_e_ei]);
7919  Vrbp = (probeVars[admsProbeID_V_bp_cx]);
7920  Vxf1 = (probeVars[admsProbeID_V_xf1_GND]);
7921  Vxf2 = (probeVars[admsProbeID_V_xf2_GND]);
7922  //Begin block qdbeBlock
7923  {
7924  //Block-local variables for block qdbeBlock
7925  AdmsSensFadType dv0;
7926  AdmsSensFadType dvh;
7927  AdmsSensFadType pwq;
7928  AdmsSensFadType qlo;
7929  AdmsSensFadType qhi;
7930  AdmsSensFadType mv0;
7931  AdmsSensFadType vl0;
7932  AdmsSensFadType q0;
7933  AdmsSensFadType dv;
7934  AdmsSensFadType mv;
7935  AdmsSensFadType vl;
7936  //End of Block-local variables
7937  dv0 = ((-pe_t)*modelPar_fc);
7938  if ((modelPar_aje<=0.0))
7939  {
7940  dvh = (Vbei+dv0);
7941  if ((dvh>0.0))
7942  {
7943  pwq = pow((1.0-modelPar_fc),(-modelPar_me));
7944  qlo = ((pe_t*(1.0-(pwq*(1.0-modelPar_fc))))/(1.0-modelPar_me));
7945  qhi = ((dvh*(1.0+(((0.5*modelPar_me)*dvh)/(pe_t*(1.0-modelPar_fc)))))*pwq);
7946  }
7947  else
7948  {
7949  qlo = ((pe_t*(1.0-pow((1.0-(Vbei/pe_t)),(1.0-modelPar_me))))/(1.0-modelPar_me));
7950  qhi = 0.0;
7951  }
7952  qdbe = (qlo+qhi);
7953  }
7954  else
7955  {
7956  mv0 = sqrt(((dv0*dv0)+((4.0*modelPar_aje)*modelPar_aje)));
7957  vl0 = ((-0.5)*(dv0+mv0));
7958  q0 = (((-pe_t)*pow((1.0-(vl0/pe_t)),(1.0-modelPar_me)))/(1.0-modelPar_me));
7959  dv = (Vbei+dv0);
7960  mv = sqrt(((dv*dv)+((4.0*modelPar_aje)*modelPar_aje)));
7961  vl = ((0.5*(dv-mv))-dv0);
7962  qlo = (((-pe_t)*pow((1.0-(vl/pe_t)),(1.0-modelPar_me)))/(1.0-modelPar_me));
7963  qdbe = ((qlo+((pow((1.0-modelPar_fc),(-modelPar_me))*((Vbei-vl)+vl0))*(1.0+(((0.5*modelPar_me)*((Vbei-vl)+vl0))/(pe_t*(1.0-modelPar_fc))))))-q0);
7964  }
7965  }
7966  // End block qdbeBlock
7967  //Begin block qdbcBlock
7968  {
7969  //Block-local variables for block qdbcBlock
7970  AdmsSensFadType dv0;
7971  AdmsSensFadType dvh;
7972  AdmsSensFadType pwq;
7973  AdmsSensFadType qlo;
7974  AdmsSensFadType qhi;
7975  AdmsSensFadType vn0;
7976  AdmsSensFadType vnl0;
7977  AdmsSensFadType vl0;
7978  AdmsSensFadType qlo0;
7979  AdmsSensFadType vn;
7980  AdmsSensFadType vnl;
7981  AdmsSensFadType vl;
7982  AdmsSensFadType sel;
7983  AdmsSensFadType crt;
7984  AdmsSensFadType cmx;
7985  AdmsSensFadType cl;
7986  AdmsSensFadType ql;
7987  AdmsSensFadType mv0;
7988  AdmsSensFadType q0;
7989  AdmsSensFadType dv;
7990  AdmsSensFadType mv;
7991  //End of Block-local variables
7992  dv0 = ((-pc_t)*modelPar_fc);
7993  if ((modelPar_ajc<=0.0))
7994  {
7995  dvh = (Vbci+dv0);
7996  if ((dvh>0.0))
7997  {
7998  pwq = pow((1.0-modelPar_fc),((-1.0)-modelPar_mc));
7999  qlo = ((pc_t*(1.0-((pwq*(1.0-modelPar_fc))*(1.0-modelPar_fc))))/(1.0-modelPar_mc));
8000  qhi = ((dvh*((1.0-modelPar_fc)+(((0.5*modelPar_mc)*dvh)/pc_t)))*pwq);
8001  }
8002  else
8003  {
8004  if (((modelPar_vrt>0.0)&&(Vbci<(-modelPar_vrt))))
8005  {
8006  qlo = ((pc_t*(1.0-(pow((1.0+(modelPar_vrt/pc_t)),(1.0-modelPar_mc))*(1.0-(((1.0-modelPar_mc)*(Vbci+modelPar_vrt))/(pc_t+modelPar_vrt))))))/(1.0-modelPar_mc));
8007  }
8008  else
8009  {
8010  qlo = ((pc_t*(1.0-pow((1.0-(Vbci/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8011  }
8012  qhi = 0.0;
8013  }
8014  qdbc = (qlo+qhi);
8015  }
8016  else
8017  {
8018  if (((modelPar_vrt>0.0)&&(modelPar_art>0.0)))
8019  {
8020  vn0 = ((modelPar_vrt+dv0)/(modelPar_vrt-dv0));
8021  vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*modelPar_ajc)*modelPar_ajc)))+sqrt((((vn0+1.0)*(vn0+1))+((4*modelPar_art)*modelPar_art)))));
8022  vl0 = (0.5*(((vnl0*(modelPar_vrt-dv0))-modelPar_vrt)-dv0));
8023  qlo0 = ((pc_t*(1.0-pow((1.0-(vl0/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8024  vn = ((((2*Vbci)+modelPar_vrt)+dv0)/(modelPar_vrt-dv0));
8025  vnl = ((2.0*vn)/(sqrt((((vn-1.0)*(vn-1))+((4*modelPar_ajc)*modelPar_ajc)))+sqrt((((vn+1.0)*(vn+1))+((4*modelPar_art)*modelPar_art)))));
8026  vl = (0.5*(((vnl*(modelPar_vrt-dv0))-modelPar_vrt)-dv0));
8027  qlo = ((pc_t*(1.0-pow((1.0-(vl/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8028  sel = (0.5*(vnl+1.0));
8029  crt = pow((1.0+(modelPar_vrt/pc_t)),(-modelPar_mc));
8030  cmx = pow((1.0+(dv0/pc_t)),(-modelPar_mc));
8031  cl = (((1.0-sel)*crt)+(sel*cmx));
8032  ql = (((Vbci-vl)+vl0)*cl);
8033  qdbc = ((ql+qlo)-qlo0);
8034  }
8035  else
8036  {
8037  mv0 = sqrt(((dv0*dv0)+((4*modelPar_ajc)*modelPar_ajc)));
8038  vl0 = ((-0.5)*(dv0+mv0));
8039  q0 = (((-pc_t)*pow((1.0-(vl0/pc_t)),(1.0-modelPar_mc)))/(1.0-modelPar_mc));
8040  dv = (Vbci+dv0);
8041  mv = sqrt(((dv*dv)+((4*modelPar_ajc)*modelPar_ajc)));
8042  vl = ((0.5*(dv-mv))-dv0);
8043  qlo = (((-pc_t)*pow((1.0-(vl/pc_t)),(1.0-modelPar_mc)))/(1.0-modelPar_mc));
8044  qdbc = ((qlo+(pow((1.0-modelPar_fc),(-modelPar_mc))*((Vbci-vl)+vl0)))-q0);
8045  }
8046  }
8047  }
8048  // End block qdbcBlock
8049  afac = (1.0/(nf_t*vtv));
8050  if ((Vbei<maxvIfi))
8051  {
8052  expi = exp((Vbei*afac));
8053  }
8054  else
8055  {
8056  expi = (exp((maxvIfi*afac))*(1.0+((Vbei-maxvIfi)*afac)));
8057  }
8058  Ifi = (is_t*(expi-1.0));
8059  afac = (1.0/(nr_t*vtv));
8060  if ((Vbci<maxvIri))
8061  {
8062  expi = exp((Vbci*afac));
8063  }
8064  else
8065  {
8066  expi = (exp((maxvIri*afac))*(1.0+((Vbci-maxvIri)*afac)));
8067  }
8068  Iri = ((is_t*isrr_t)*(expi-1.0));
8069  q1z = (((1.0+(qdbe*Iver))+(qdbc*Ivef))-1.0e-4);
8070  q1 = ((0.5*(sqrt(((q1z*q1z)+1.0e-8))+q1z))+1.0e-4);
8071  q2 = ((Ifi*Iikf)+(Iri*Iikr));
8072  if ((modelPar_qbm<0.5))
8073  {
8074  arg = (pow(q1,(1.0/modelPar_nkf))+(4.0*q2));
8075  if ((arg>1.0e-8))
8076  {
8077  qb = (0.5*(q1+pow(arg,modelPar_nkf)));
8078  }
8079  else
8080  {
8081  qb = (0.5*(q1+pow(1.0e-8,modelPar_nkf)));
8082  }
8083  }
8084  else
8085  {
8086  arg = (1.0+(4.0*q2));
8087  if ((arg>1.0e-8))
8088  {
8089  qb = ((0.5*q1)*(1.0+pow(arg,modelPar_nkf)));
8090  }
8091  else
8092  {
8093  qb = ((0.5*q1)*(1.0+pow(1.0e-8,modelPar_nkf)));
8094  }
8095  }
8096  Itzr = (Iri/qb);
8097  Itzf = (Ifi/qb);
8098  Itxf = Vxf2;
8099  if ((modelPar_isp>0.0))
8100  {
8101  afac = (1.0/(modelPar_nfp*vtv));
8102  if ((Vbep<maxvIp))
8103  {
8104  expi = exp((Vbep*afac));
8105  }
8106  else
8107  {
8108  expi = (exp((maxvIp*afac))*(1.0+((Vbep-maxvIp)*afac)));
8109  }
8110  if ((Vbci<maxvIp))
8111  {
8112  expx = exp((Vbci*afac));
8113  }
8114  else
8115  {
8116  expx = (exp((maxvIp*afac))*(1.0+((Vbci-maxvIp)*afac)));
8117  }
8118  Ifp = (isp_t*(((modelPar_wsp*expi)+((1.0-modelPar_wsp)*expx))-1.0));
8119  q2p = (Ifp*Iikp);
8120  arg = (1.0+(4.0*q2p));
8121  if ((arg>1.0e-8))
8122  {
8123  qbp = (0.5*(1.0+sqrt(arg)));
8124  }
8125  else
8126  {
8127  qbp = (0.5*(1.0+sqrt(1.0e-8)));
8128  }
8129  }
8130  else
8131  {
8132  Ifp = 0.0;
8133  qbp = 1.0;
8134  }
8135  if ((modelPar_wbe==1.0))
8136  {
8137  afac = (1.0/(modelPar_nei*vtv));
8138  if ((Vbei<maxvIbei))
8139  {
8140  expi = exp((Vbei*afac));
8141  }
8142  else
8143  {
8144  expi = (exp((maxvIbei*afac))*(1.0+((Vbei-maxvIbei)*afac)));
8145  }
8146  afac = (1.0/(modelPar_nen*vtv));
8147  if ((Vbei<maxvIben))
8148  {
8149  expn = exp((Vbei*afac));
8150  }
8151  else
8152  {
8153  expn = (exp((maxvIben*afac))*(1.0+((Vbei-maxvIben)*afac)));
8154  }
8155  if ((modelPar_qnibeir>0.0))
8156  {
8157  Ibe = (((ibei_t*(1.0+(modelPar_qnibeir*(q1-1.0))))*(expi-1.0))+(iben_t*(expn-1.0)));
8158  }
8159  else
8160  {
8161  Ibe = ((ibei_t*(expi-1.0))+(iben_t*(expn-1.0)));
8162  }
8163  if ((modelPar_vbbe>0.0))
8164  {
8165  Bvbe = ((-vbbe_t)-Vbei);
8166  afac = (1.0/(nbbe_t*vtv));
8167  if ((Bvbe<maxvIbbe))
8168  {
8169  expx = exp((Bvbe*afac));
8170  }
8171  else
8172  {
8173  expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
8174  }
8175  Ibe = (Ibe-(modelPar_ibbe*(expx-ebbe_t)));
8176  }
8177  Ibex = 0.0;
8178  }
8179  else
8180  {
8181  if ((modelPar_wbe==0.0))
8182  {
8183  Ibe = 0.0;
8184  afac = (1.0/(modelPar_nei*vtv));
8185  if ((Vbex<maxvIbei))
8186  {
8187  expi = exp((Vbex*afac));
8188  }
8189  else
8190  {
8191  expi = (exp((maxvIbei*afac))*(1.0+((Vbex-maxvIbei)*afac)));
8192  }
8193  afac = (1.0/(modelPar_nen*vtv));
8194  if ((Vbex<maxvIben))
8195  {
8196  expn = exp((Vbex*afac));
8197  }
8198  else
8199  {
8200  expn = (exp((maxvIben*afac))*(1.0+((Vbex-maxvIben)*afac)));
8201  }
8202  Ibex = ((ibei_t*(expi-1.0))+(iben_t*(expn-1.0)));
8203  if ((modelPar_vbbe>0.0))
8204  {
8205  Bvbe = ((-vbbe_t)-Vbei);
8206  afac = (1.0/(nbbe_t*vtv));
8207  if ((Bvbe<maxvIbbe))
8208  {
8209  expx = exp((Bvbe*afac));
8210  }
8211  else
8212  {
8213  expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
8214  }
8215  Ibex = (Ibex-(modelPar_ibbe*(expx-ebbe_t)));
8216  }
8217  }
8218  else
8219  {
8220  afac = (1.0/(modelPar_nei*vtv));
8221  if ((Vbei<maxvIbei))
8222  {
8223  expi = exp((Vbei*afac));
8224  }
8225  else
8226  {
8227  expi = (exp((maxvIbei*afac))*(1.0+((Vbei-maxvIbei)*afac)));
8228  }
8229  afac = (1.0/(modelPar_nen*vtv));
8230  if ((Vbei<maxvIben))
8231  {
8232  expn = exp((Vbei*afac));
8233  }
8234  else
8235  {
8236  expn = (exp((maxvIben*afac))*(1.0+((Vbei-maxvIben)*afac)));
8237  }
8238  if ((modelPar_qnibeir>0.0))
8239  {
8240  Ibe = (modelPar_wbe*(((ibei_t*(1.0+(modelPar_qnibeir*(q1-1.0))))*(expi-1.0))+(iben_t*(expn-1.0))));
8241  }
8242  else
8243  {
8244  Ibe = (modelPar_wbe*((ibei_t*(expi-1.0))+(iben_t*(expn-1.0))));
8245  }
8246  if ((modelPar_vbbe>0.0))
8247  {
8248  Bvbe = ((-vbbe_t)-Vbei);
8249  afac = (1.0/(nbbe_t*vtv));
8250  if ((Bvbe<maxvIbbe))
8251  {
8252  expx = exp((Bvbe*afac));
8253  }
8254  else
8255  {
8256  expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
8257  }
8258  Ibe = (Ibe-((modelPar_wbe*modelPar_ibbe)*(expx-ebbe_t)));
8259  }
8260  afac = (1.0/(modelPar_nei*vtv));
8261  if ((Vbex<maxvIbei))
8262  {
8263  expi = exp((Vbex*afac));
8264  }
8265  else
8266  {
8267  expi = (exp((maxvIbei*afac))*(1.0+((Vbex-maxvIbei)*afac)));
8268  }
8269  afac = (1.0/(modelPar_nen*vtv));
8270  if ((Vbex<maxvIben))
8271  {
8272  expn = exp((Vbex*afac));
8273  }
8274  else
8275  {
8276  expn = (exp((maxvIben*afac))*(1.0+((Vbex-maxvIben)*afac)));
8277  }
8278  Ibex = ((1.0-modelPar_wbe)*((ibei_t*(expi-1.0))+(iben_t*(expn-1.0))));
8279  if ((modelPar_vbbe>0.0))
8280  {
8281  Bvbe = ((-vbbe_t)-Vbei);
8282  afac = (1.0/(nbbe_t*vtv));
8283  if ((Bvbe<maxvIbbe))
8284  {
8285  expx = exp((Bvbe*afac));
8286  }
8287  else
8288  {
8289  expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
8290  }
8291  Ibex = (Ibex-(((1.0-modelPar_wbe)*modelPar_ibbe)*(expx-ebbe_t)));
8292  }
8293  }
8294  }
8295  afac = (1.0/(modelPar_nci*vtv));
8296  if ((Vbci<maxvIbci))
8297  {
8298  expi = exp((Vbci*afac));
8299  }
8300  else
8301  {
8302  expi = (exp((maxvIbci*afac))*(1.0+((Vbci-maxvIbci)*afac)));
8303  }
8304  afac = (1.0/(modelPar_ncn*vtv));
8305  if ((Vbci<maxvIbcn))
8306  {
8307  expn = exp((Vbci*afac));
8308  }
8309  else
8310  {
8311  expn = (exp((maxvIbcn*afac))*(1.0+((Vbci-maxvIbcn)*afac)));
8312  }
8313  Ibcj = ((ibci_t*(expi-1.0))+(ibcn_t*(expn-1.0)));
8314  if (((modelPar_ibeip>0.0)||(modelPar_ibenp>0.0)))
8315  {
8316  afac = (1.0/(modelPar_nci*vtv));
8317  if ((Vbep<maxvIbeip))
8318  {
8319  expi = exp((Vbep*afac));
8320  }
8321  else
8322  {
8323  expi = (exp((maxvIbeip*afac))*(1.0+((Vbep-maxvIbeip)*afac)));
8324  }
8325  afac = (1.0/(modelPar_ncn*vtv));
8326  if ((Vbep<maxvIbenp))
8327  {
8328  expn = exp((Vbep*afac));
8329  }
8330  else
8331  {
8332  expn = (exp((maxvIbenp*afac))*(1.0+((Vbep-maxvIbenp)*afac)));
8333  }
8334  Ibep = ((ibeip_t*(expi-1.0))+(ibenp_t*(expn-1.0)));
8335  }
8336  else
8337  {
8338  Ibep = 0.0;
8339  }
8340  arg = (Vbci/vtv);
8341  if ((arg<VmaxExp))
8342  {
8343  expi = exp(arg);
8344  }
8345  else
8346  {
8347  expi = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
8348  }
8349  arg = (Vbcx/vtv);
8350  if ((arg<VmaxExp))
8351  {
8352  expx = exp(arg);
8353  }
8354  else
8355  {
8356  expx = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
8357  }
8358  Kbci = sqrt((1.0+(gamm_t*expi)));
8359  Kbcx = sqrt((1.0+(gamm_t*expx)));
8360  Ircx = (Vrcx*Gcx);
8361  rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
8362  Iohm = ((Vrci+(vtv*((Kbci-Kbcx)-log(rKp1))))*Gci);
8363  derf = ((Ivo*Iohm)/(Gci*(1.0+(((0.5*Ivo)*Ihrcf)*sqrt(((Vrci*Vrci)+0.01))))));
8364  Irci = (Iohm/sqrt((1+(derf*derf))));
8365  Irbx = (Vrbx*Gbx);
8366  Irbi = ((Vrbi*qb)*Gbi);
8367  Ire = (Vre*Ge);
8368  Irbp = ((Vrbp*qbp)*Gbp);
8369  if ((modelPar_avc1>0.0))
8370  {
8371  //Begin block igcBlock
8372  {
8373  //Block-local variables for block igcBlock
8374  AdmsSensFadType vminm;
8375  AdmsSensFadType vl;
8376  AdmsSensFadType mac1;
8377  AdmsSensFadType expi;
8378  AdmsSensFadType expl;
8379  //End of Block-local variables
8380  vminm = pow((0.02*(avc2_t+1.0)),(1.0/(1.01-modelPar_mc)));
8381  vl = ((0.5*(sqrt(((((pc_t-Vbci)-vminm)*((pc_t-Vbci)-vminm))+0.01))+((pc_t-Vbci)-vminm)))+vminm);
8382  mac1 = ((-avc2_t)*pow(vl,(modelPar_mc-1.0)));
8383  if ((mac1<VmaxExp))
8384  {
8385  expi = exp(mac1);
8386  }
8387  else
8388  {
8389  expl = exp(VmaxExp);
8390  expi = (expl*(1.0+(mac1-VmaxExp)));
8391  }
8392  avalf = ((modelPar_avc1*vl)*expi);
8393  }
8394  // End block igcBlock
8395  Igc = (((Itxf-Itzr)-Ibcj)*avalf);
8396  }
8397  else
8398  {
8399  Igc = 0.0;
8400  }
8401  if ((modelPar_avcx1>0.0))
8402  {
8403  //Begin block igcxBlock
8404  {
8405  //Block-local variables for block igcxBlock
8406  AdmsSensFadType vminm;
8407  AdmsSensFadType vl;
8408  AdmsSensFadType mac1;
8409  AdmsSensFadType expi;
8410  AdmsSensFadType expl;
8411  //End of Block-local variables
8412  vminm = pow((0.02*(avcx2_t+1.0)),(1.0/(1.01-modelPar_mcx)));
8413  vl = ((0.5*(sqrt(((((-Vbxcx)-vminm)*((-Vbxcx)-vminm))+0.01))+((-Vbxcx)-vminm)))+vminm);
8414  mac1 = ((-avcx2_t)*pow(vl,(modelPar_mcx-1.0)));
8415  if ((mac1<VmaxExp))
8416  {
8417  expi = exp(mac1);
8418  }
8419  else
8420  {
8421  expl = exp(VmaxExp);
8422  expi = (expl*(1.0+(mac1-VmaxExp)));
8423  }
8424  avalf = ((modelPar_avcx1*vl)*expi);
8425  }
8426  // End block igcxBlock
8427  Igcx = ((-Ircx)*avalf);
8428  }
8429  else
8430  {
8431  Igcx = 0.0;
8432  }
8433  if (((modelPar_bbk>0.0)&&(modelPar_ibk0>0.0)))
8434  {
8435  if ((modelPar_vpte>0.0))
8436  {
8437  VcbFac = ((1.0-(Vbci/modelPar_vpte))-0.1);
8438  VcbFac = (0.1+(0.5*(VcbFac+sqrt(((VcbFac*VcbFac)+1.0e-4)))));
8439  Iibk = (modelPar_ibk0*VcbFac);
8440  }
8441  else
8442  {
8443  Iibk = modelPar_ibk0;
8444  }
8445  Ibk = (modelPar_bbk*pow(((Itzf/Iibk)-1.0),modelPar_abk));
8446  }
8447  else
8448  {
8449  Ibk = 0.0;
8450  }
8451  Ibc = ((Ibcj-Igc)-Ibk);
8452  power = (((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itxf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp));
8453  Ith = ((-instancePar_sw_et)*power);
8454  Irth = (dt_et*Gth);
8455  Ixf1 = (Vxf2-Itzf);
8456  Ixf2 = (Vxf2-Vxf1);
8457  Ibe = (Ibe+(gminMod*Vbei));
8458  Ibex = (Ibex+(gminMod*Vbex));
8459  Ibep = (Ibep+(gminMod*Vbep));
8460  Ibc = (Ibc+(gminMod*Vbci));
8461  Igcx = (Igcx+(gminMod*Vbxcx));
8462  Ibe = ((modelPar_VBICtype*mMod)*Ibe);
8463  Ibex = ((modelPar_VBICtype*mMod)*Ibex);
8464  Itzf = ((modelPar_VBICtype*mMod)*Itzf);
8465  Itxf = ((modelPar_VBICtype*mMod)*Itxf);
8466  Itzr = ((modelPar_VBICtype*mMod)*Itzr);
8467  Ibc = ((modelPar_VBICtype*mMod)*Ibc);
8468  Igcx = ((modelPar_VBICtype*mMod)*Igcx);
8469  Ibep = ((modelPar_VBICtype*mMod)*Ibep);
8470  Ircx = (mMod*Ircx);
8471  Irci = ((modelPar_VBICtype*mMod)*Irci);
8472  Irbx = (mMod*Irbx);
8473  Irbi = (mMod*Irbi);
8474  Ire = (mMod*Ire);
8475  Irbp = (mMod*Irbp);
8476  Ith = (mMod*Ith);
8477  Irth = (mMod*Irth);
8478  }
8479  // End block evaluateStatic
8480  //Begin block evaluateDynamic
8481  {
8482  //Begin block qdbexBlock
8483  {
8484  //Block-local variables for block qdbexBlock
8485  AdmsSensFadType dv0;
8486  AdmsSensFadType dvh;
8487  AdmsSensFadType pwq;
8488  AdmsSensFadType qlo;
8489  AdmsSensFadType qhi;
8490  AdmsSensFadType mv0;
8491  AdmsSensFadType vl0;
8492  AdmsSensFadType q0;
8493  AdmsSensFadType dv;
8494  AdmsSensFadType mv;
8495  AdmsSensFadType vl;
8496  //End of Block-local variables
8497  dv0 = ((-pe_t)*modelPar_fc);
8498  if ((modelPar_aje<=0.0))
8499  {
8500  dvh = (Vbex+dv0);
8501  if ((dvh>0.0))
8502  {
8503  pwq = pow((1.0-modelPar_fc),(-modelPar_me));
8504  qlo = ((pe_t*(1.0-(pwq*(1.0-modelPar_fc))))/(1.0-modelPar_me));
8505  qhi = ((dvh*(1.0+(((0.5*modelPar_me)*dvh)/(pe_t*(1.0-modelPar_fc)))))*pwq);
8506  }
8507  else
8508  {
8509  qlo = ((pe_t*(1.0-pow((1.0-(Vbex/pe_t)),(1.0-modelPar_me))))/(1.0-modelPar_me));
8510  qhi = 0.0;
8511  }
8512  qdbex = (qlo+qhi);
8513  }
8514  else
8515  {
8516  mv0 = sqrt(((dv0*dv0)+((4.0*modelPar_aje)*modelPar_aje)));
8517  vl0 = ((-0.5)*(dv0+mv0));
8518  q0 = (((-pe_t)*pow((1.0-(vl0/pe_t)),(1.0-modelPar_me)))/(1.0-modelPar_me));
8519  dv = (Vbex+dv0);
8520  mv = sqrt(((dv*dv)+((4.0*modelPar_aje)*modelPar_aje)));
8521  vl = ((0.5*(dv-mv))-dv0);
8522  qlo = (((-pe_t)*pow((1.0-(vl/pe_t)),(1.0-modelPar_me)))/(1.0-modelPar_me));
8523  qdbex = ((qlo+((pow((1.0-modelPar_fc),(-modelPar_me))*((Vbex-vl)+vl0))*(1.0+(((0.5*modelPar_me)*((Vbex-vl)+vl0))/(pe_t*(1.0-modelPar_fc))))))-q0);
8524  }
8525  }
8526  // End block qdbexBlock
8527  //Begin block qdbepBlock
8528  {
8529  //Block-local variables for block qdbepBlock
8530  AdmsSensFadType dv0;
8531  AdmsSensFadType dvh;
8532  AdmsSensFadType pwq;
8533  AdmsSensFadType qlo;
8534  AdmsSensFadType qhi;
8535  AdmsSensFadType vn0;
8536  AdmsSensFadType vnl0;
8537  AdmsSensFadType vl0;
8538  AdmsSensFadType qlo0;
8539  AdmsSensFadType vn;
8540  AdmsSensFadType vnl;
8541  AdmsSensFadType vl;
8542  AdmsSensFadType sel;
8543  AdmsSensFadType crt;
8544  AdmsSensFadType cmx;
8545  AdmsSensFadType cl;
8546  AdmsSensFadType ql;
8547  AdmsSensFadType mv0;
8548  AdmsSensFadType q0;
8549  AdmsSensFadType dv;
8550  AdmsSensFadType mv;
8551  //End of Block-local variables
8552  dv0 = ((-pc_t)*modelPar_fc);
8553  if ((modelPar_ajc<=0.0))
8554  {
8555  dvh = (Vbep+dv0);
8556  if ((dvh>0.0))
8557  {
8558  pwq = pow((1.0-modelPar_fc),((-1.0)-modelPar_mc));
8559  qlo = ((pc_t*(1.0-((pwq*(1.0-modelPar_fc))*(1.0-modelPar_fc))))/(1.0-modelPar_mc));
8560  qhi = ((dvh*((1.0-modelPar_fc)+(((0.5*modelPar_mc)*dvh)/pc_t)))*pwq);
8561  }
8562  else
8563  {
8564  if (((modelPar_vrt>0.0)&&(Vbep<(-modelPar_vrt))))
8565  {
8566  qlo = ((pc_t*(1.0-(pow((1.0+(modelPar_vrt/pc_t)),(1.0-modelPar_mc))*(1.0-(((1.0-modelPar_mc)*(Vbep+modelPar_vrt))/(pc_t+modelPar_vrt))))))/(1.0-modelPar_mc));
8567  }
8568  else
8569  {
8570  qlo = ((pc_t*(1.0-pow((1.0-(Vbep/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8571  }
8572  qhi = 0.0;
8573  }
8574  qdbep = (qlo+qhi);
8575  }
8576  else
8577  {
8578  if (((modelPar_vrt>0.0)&&(modelPar_art>0.0)))
8579  {
8580  vn0 = ((modelPar_vrt+dv0)/(modelPar_vrt-dv0));
8581  vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*modelPar_ajc)*modelPar_ajc)))+sqrt((((vn0+1.0)*(vn0+1))+((4*modelPar_art)*modelPar_art)))));
8582  vl0 = (0.5*(((vnl0*(modelPar_vrt-dv0))-modelPar_vrt)-dv0));
8583  qlo0 = ((pc_t*(1.0-pow((1.0-(vl0/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8584  vn = ((((2*Vbep)+modelPar_vrt)+dv0)/(modelPar_vrt-dv0));
8585  vnl = ((2.0*vn)/(sqrt((((vn-1.0)*(vn-1))+((4*modelPar_ajc)*modelPar_ajc)))+sqrt((((vn+1.0)*(vn+1))+((4*modelPar_art)*modelPar_art)))));
8586  vl = (0.5*(((vnl*(modelPar_vrt-dv0))-modelPar_vrt)-dv0));
8587  qlo = ((pc_t*(1.0-pow((1.0-(vl/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8588  sel = (0.5*(vnl+1.0));
8589  crt = pow((1.0+(modelPar_vrt/pc_t)),(-modelPar_mc));
8590  cmx = pow((1.0+(dv0/pc_t)),(-modelPar_mc));
8591  cl = (((1.0-sel)*crt)+(sel*cmx));
8592  ql = (((Vbep-vl)+vl0)*cl);
8593  qdbep = ((ql+qlo)-qlo0);
8594  }
8595  else
8596  {
8597  mv0 = sqrt(((dv0*dv0)+((4*modelPar_ajc)*modelPar_ajc)));
8598  vl0 = ((-0.5)*(dv0+mv0));
8599  q0 = (((-pc_t)*pow((1.0-(vl0/pc_t)),(1.0-modelPar_mc)))/(1.0-modelPar_mc));
8600  dv = (Vbep+dv0);
8601  mv = sqrt(((dv*dv)+((4*modelPar_ajc)*modelPar_ajc)));
8602  vl = ((0.5*(dv-mv))-dv0);
8603  qlo = (((-pc_t)*pow((1.0-(vl/pc_t)),(1.0-modelPar_mc)))/(1.0-modelPar_mc));
8604  qdbep = ((qlo+(pow((1.0-modelPar_fc),(-modelPar_mc))*((Vbep-vl)+vl0)))-q0);
8605  }
8606  }
8607  }
8608  // End block qdbepBlock
8609  sgIf = ((Ifi>0.0)?1.0:0.0);
8610  rIf = ((Ifi*sgIf)*Iitf);
8611  mIf = (rIf/(rIf+1.0));
8612  arg = ((Vbci*Ivtf)/1.44);
8613  if ((arg<VmaxExp))
8614  {
8615  expi = exp(arg);
8616  }
8617  else
8618  {
8619  expi = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
8620  }
8621  tff = ((modelPar_tf*(1.0+(modelPar_qtf*q1)))*(1.0+(((modelPar_xtf*expi)*(sltf+(mIf*mIf)))*sgIf)));
8622  Qbe = (((cje_t*qdbe)*modelPar_wbe)+((tff*Ifi)/qb));
8623  Qbex = ((cje_t*qdbex)*(1.0-modelPar_wbe));
8624  Qbc = (((cjc_t*qdbc)+(modelPar_tr*Iri))+(modelPar_qco*Kbci));
8625  Qbcx = (modelPar_qco*Kbcx);
8626  Qbep = ((cjep_t*qdbep)+(modelPar_tr*Ifp));
8627  Qbeo = (Vbe*modelPar_cbeo);
8628  Qbco = (Vbc*modelPar_cbco);
8629  Qcth = (dt_et*modelPar_cth);
8630  Qxf1 = (modelPar_td*Vxf1);
8631  Qxf2 = ((modelPar_td*Vxf2)*0.3333333333333333);
8632  Qbe = ((modelPar_VBICtype*mMod)*Qbe);
8633  Qbex = ((modelPar_VBICtype*mMod)*Qbex);
8634  Qbc = ((modelPar_VBICtype*mMod)*Qbc);
8635  Qbcx = ((modelPar_VBICtype*mMod)*Qbcx);
8636  Qbep = ((modelPar_VBICtype*mMod)*Qbep);
8637  Qbeo = (mMod*Qbeo);
8638  Qbco = (mMod*Qbco);
8639  Qcth = (mMod*Qcth);
8640  }
8641  // End block evaluateDynamic
8642  //Begin block loadStatic
8643  {
8644  // I(bi,ei) <+ (Ibe)
8645  staticContributions[admsNodeID_bi] += Ibe;
8646  staticContributions[admsNodeID_ei] -= Ibe;
8647  // I(bx,ei) <+ (Ibex)
8648  staticContributions[admsNodeID_bx] += Ibex;
8649  staticContributions[admsNodeID_ei] -= Ibex;
8650  // I(ci,ei) <+ (Itxf)
8651  staticContributions[admsNodeID_ci] += Itxf;
8652  staticContributions[admsNodeID_ei] -= Itxf;
8653  // I(ei,ci) <+ (Itzr)
8654  staticContributions[admsNodeID_ei] += Itzr;
8655  staticContributions[admsNodeID_ci] -= Itzr;
8656  // I(bi,ci) <+ (Ibc)
8657  staticContributions[admsNodeID_bi] += Ibc;
8658  staticContributions[admsNodeID_ci] -= Ibc;
8659  // I(bx,cx) <+ (Igcx)
8660  staticContributions[admsNodeID_bx] += Igcx;
8661  staticContributions[admsNodeID_cx] -= Igcx;
8662  // I(bx,bp) <+ (Ibep)
8663  staticContributions[admsNodeID_bx] += Ibep;
8664  staticContributions[admsNodeID_bp] -= Ibep;
8665  // I(c,cx) <+ (Ircx)
8666  staticContributions[admsNodeID_c] += Ircx;
8667  staticContributions[admsNodeID_cx] -= Ircx;
8668  // I(cx,ci) <+ (Irci)
8669  staticContributions[admsNodeID_cx] += Irci;
8670  staticContributions[admsNodeID_ci] -= Irci;
8671  // I(b,bx) <+ (Irbx)
8672  staticContributions[admsNodeID_b] += Irbx;
8673  staticContributions[admsNodeID_bx] -= Irbx;
8674  // I(bx,bi) <+ (Irbi)
8675  staticContributions[admsNodeID_bx] += Irbi;
8676  staticContributions[admsNodeID_bi] -= Irbi;
8677  // I(e,ei) <+ (Ire)
8678  staticContributions[admsNodeID_e] += Ire;
8679  staticContributions[admsNodeID_ei] -= Ire;
8680  // I(bp,cx) <+ (Irbp)
8681  staticContributions[admsNodeID_bp] += Irbp;
8682  staticContributions[admsNodeID_cx] -= Irbp;
8683  // I(xf1,GND) <+ (Ixf1)
8684  staticContributions[admsNodeID_xf1] += Ixf1;
8685  // I(xf2,GND) <+ (Ixf2)
8686  staticContributions[admsNodeID_xf2] += Ixf2;
8687  // Pwr(dt,GND) <+ (Irth)
8688  staticContributions[admsNodeID_dt] += Irth;
8689  // Pwr(dt,GND) <+ (Ith)
8690  staticContributions[admsNodeID_dt] += Ith;
8691  }
8692  // End block loadStatic
8693  //Begin block loadDynamic
8694  {
8695  // I(bi,ei) <+ (ddt(Qbe))
8696  dynamicContributions[admsNodeID_bi] += (Qbe);
8697  dynamicContributions[admsNodeID_ei] -= (Qbe);
8698  // I(bx,ei) <+ (ddt(Qbex))
8699  dynamicContributions[admsNodeID_bx] += (Qbex);
8700  dynamicContributions[admsNodeID_ei] -= (Qbex);
8701  // I(bi,ci) <+ (ddt(Qbc))
8702  dynamicContributions[admsNodeID_bi] += (Qbc);
8703  dynamicContributions[admsNodeID_ci] -= (Qbc);
8704  // I(bi,cx) <+ (ddt(Qbcx))
8705  dynamicContributions[admsNodeID_bi] += (Qbcx);
8706  dynamicContributions[admsNodeID_cx] -= (Qbcx);
8707  // I(bx,bp) <+ (ddt(Qbep))
8708  dynamicContributions[admsNodeID_bx] += (Qbep);
8709  dynamicContributions[admsNodeID_bp] -= (Qbep);
8710  // I(b,e) <+ (ddt(Qbeo))
8711  dynamicContributions[admsNodeID_b] += (Qbeo);
8712  dynamicContributions[admsNodeID_e] -= (Qbeo);
8713  // I(b,c) <+ (ddt(Qbco))
8714  dynamicContributions[admsNodeID_b] += (Qbco);
8715  dynamicContributions[admsNodeID_c] -= (Qbco);
8716  // I(xf1,GND) <+ (ddt(Qxf1))
8717  dynamicContributions[admsNodeID_xf1] += (Qxf1);
8718  // I(xf2,GND) <+ (ddt(Qxf2))
8719  dynamicContributions[admsNodeID_xf2] += (Qxf2);
8720  // Pwr(dt,GND) <+ (ddt(Qcth))
8721  dynamicContributions[admsNodeID_dt] += (Qcth);
8722  }
8723  // End block loadDynamic
8724 }
8725 
8726 
8727 
8728 //-----------------------------------------------------------------------------
8729 // Function : InstanceSensitivity::operator()
8730 // Purpose : return sensitivity for a single instance parameter
8731 // Special Notes :
8732 // Scope : public
8733 // Creator : admsXml
8734 // Creation Date :
8735 //-----------------------------------------------------------------------------
8736 /// Compute sensitivity of a device instance's outputs to a specified instance
8737 /// parameter
8738 ///
8739 ///
8740 /// @param[in] entity The device entity that owns the parameter
8741 /// @param[in] name The unadorned parameter name specific to the entity
8742 /// @param[out] dfdp The derivative of the F vector with respect to the parameter
8743 /// @param[out] dqdp The derivative of the Q vector with respect to the parameter
8744 /// @param[out] dbdp The derivative of the B vector with respect to the parameter
8745 /// @param[out] Findices The indices into the F vector corresponding to the elements of dfdp
8746 /// @param[out] Qindices The indices into the Q vector corresponding to the elements of dfdp
8747 /// @param[out] Bindices The indices into the B vector corresponding to the elements of dfdp
8748 ///
8749 ///
8750 void InstanceSensitivity::operator()
8751  (
8752  const ParameterBase &entity,
8753  const std::string &name,
8754  std::vector<double> & dfdp,
8755  std::vector<double> & dqdp,
8756  std::vector<double> & dbdp,
8757  std::vector<int> & Findices,
8758  std::vector<int> & Qindices,
8759  std::vector<int> & Bindices
8760  ) const
8761 {
8762  const ParameterBase * e1 = &entity;
8763  const Instance & in = *(dynamic_cast<const Instance *> (e1));
8764  const Model & mod =in.model_;
8765 
8766  dfdp.resize(12+0);
8767  dqdp.resize(12+0);
8768  Findices.resize(12+0);
8769  Qindices.resize(12+0);
8770 
8771  std::vector <double> probeVars(18);
8772  std::vector <AdmsSensFadType> staticContributions(12+0);
8773  std::vector <AdmsSensFadType> dynamicContributions(12+0);
8774 
8775 
8776  // initialize contributions to zero (automatically sets derivatives to zero)
8777  for (int i=0; i < 12+0 ; ++i)
8778  {
8779  staticContributions[i]=0;
8780  dynamicContributions[i]=0;
8781  }
8782 
8783  // Copy out all the model parameters (doubles) into FAD types
8784  //reals
8785  AdmsSensFadType modelPar_npn=mod.npn;
8786  bool modelPar_given_npn=mod.given("npn");
8787  AdmsSensFadType modelPar_pnp=mod.pnp;
8788  bool modelPar_given_pnp=mod.given("pnp");
8789  AdmsSensFadType modelPar_scale=mod.scale;
8790  bool modelPar_given_scale=mod.given("scale");
8791  AdmsSensFadType modelPar_shrink=mod.shrink;
8792  bool modelPar_given_shrink=mod.given("shrink");
8793  AdmsSensFadType modelPar_tmin=mod.tmin;
8794  bool modelPar_given_tmin=mod.given("tmin");
8795  AdmsSensFadType modelPar_tmax=mod.tmax;
8796  bool modelPar_given_tmax=mod.given("tmax");
8797  AdmsSensFadType modelPar_gmin=mod.gmin;
8798  bool modelPar_given_gmin=mod.given("gmin");
8799  AdmsSensFadType modelPar_pnjmaxi=mod.pnjmaxi;
8800  bool modelPar_given_pnjmaxi=mod.given("pnjmaxi");
8801  AdmsSensFadType modelPar_maxexp=mod.maxexp;
8802  bool modelPar_given_maxexp=mod.given("maxexp");
8803  AdmsSensFadType modelPar_tnom=mod.tnom;
8804  bool modelPar_given_tnom=mod.given("tnom");
8805  AdmsSensFadType modelPar_tminclip=mod.tminclip;
8806  bool modelPar_given_tminclip=mod.given("tminclip");
8807  AdmsSensFadType modelPar_tmaxclip=mod.tmaxclip;
8808  bool modelPar_given_tmaxclip=mod.given("tmaxclip");
8809  AdmsSensFadType modelPar_rcx=mod.rcx;
8810  bool modelPar_given_rcx=mod.given("rcx");
8811  AdmsSensFadType modelPar_rci=mod.rci;
8812  bool modelPar_given_rci=mod.given("rci");
8813  AdmsSensFadType modelPar_vo=mod.vo;
8814  bool modelPar_given_vo=mod.given("vo");
8815  AdmsSensFadType modelPar_gamm=mod.gamm;
8816  bool modelPar_given_gamm=mod.given("gamm");
8817  AdmsSensFadType modelPar_hrcf=mod.hrcf;
8818  bool modelPar_given_hrcf=mod.given("hrcf");
8819  AdmsSensFadType modelPar_rbx=mod.rbx;
8820  bool modelPar_given_rbx=mod.given("rbx");
8821  AdmsSensFadType modelPar_rbi=mod.rbi;
8822  bool modelPar_given_rbi=mod.given("rbi");
8823  AdmsSensFadType modelPar_re=mod.re;
8824  bool modelPar_given_re=mod.given("re");
8825  AdmsSensFadType modelPar_rs=mod.rs;
8826  bool modelPar_given_rs=mod.given("rs");
8827  AdmsSensFadType modelPar_rbp=mod.rbp;
8828  bool modelPar_given_rbp=mod.given("rbp");
8829  AdmsSensFadType modelPar_is=mod.is;
8830  bool modelPar_given_is=mod.given("is");
8831  AdmsSensFadType modelPar_isrr=mod.isrr;
8832  bool modelPar_given_isrr=mod.given("isrr");
8833  AdmsSensFadType modelPar_nf=mod.nf;
8834  bool modelPar_given_nf=mod.given("nf");
8835  AdmsSensFadType modelPar_nr=mod.nr;
8836  bool modelPar_given_nr=mod.given("nr");
8837  AdmsSensFadType modelPar_isp=mod.isp;
8838  bool modelPar_given_isp=mod.given("isp");
8839  AdmsSensFadType modelPar_wsp=mod.wsp;
8840  bool modelPar_given_wsp=mod.given("wsp");
8841  AdmsSensFadType modelPar_nfp=mod.nfp;
8842  bool modelPar_given_nfp=mod.given("nfp");
8843  AdmsSensFadType modelPar_fc=mod.fc;
8844  bool modelPar_given_fc=mod.given("fc");
8845  AdmsSensFadType modelPar_cbeo=mod.cbeo;
8846  bool modelPar_given_cbeo=mod.given("cbeo");
8847  AdmsSensFadType modelPar_cje=mod.cje;
8848  bool modelPar_given_cje=mod.given("cje");
8849  AdmsSensFadType modelPar_pe=mod.pe;
8850  bool modelPar_given_pe=mod.given("pe");
8851  AdmsSensFadType modelPar_me=mod.me;
8852  bool modelPar_given_me=mod.given("me");
8853  AdmsSensFadType modelPar_aje=mod.aje;
8854  bool modelPar_given_aje=mod.given("aje");
8855  AdmsSensFadType modelPar_cbco=mod.cbco;
8856  bool modelPar_given_cbco=mod.given("cbco");
8857  AdmsSensFadType modelPar_cjc=mod.cjc;
8858  bool modelPar_given_cjc=mod.given("cjc");
8859  AdmsSensFadType modelPar_pc=mod.pc;
8860  bool modelPar_given_pc=mod.given("pc");
8861  AdmsSensFadType modelPar_mc=mod.mc;
8862  bool modelPar_given_mc=mod.given("mc");
8863  AdmsSensFadType modelPar_ajc=mod.ajc;
8864  bool modelPar_given_ajc=mod.given("ajc");
8865  AdmsSensFadType modelPar_vrt=mod.vrt;
8866  bool modelPar_given_vrt=mod.given("vrt");
8867  AdmsSensFadType modelPar_art=mod.art;
8868  bool modelPar_given_art=mod.given("art");
8869  AdmsSensFadType modelPar_qco=mod.qco;
8870  bool modelPar_given_qco=mod.given("qco");
8871  AdmsSensFadType modelPar_cjep=mod.cjep;
8872  bool modelPar_given_cjep=mod.given("cjep");
8873  AdmsSensFadType modelPar_cjcp=mod.cjcp;
8874  bool modelPar_given_cjcp=mod.given("cjcp");
8875  AdmsSensFadType modelPar_ps=mod.ps;
8876  bool modelPar_given_ps=mod.given("ps");
8877  AdmsSensFadType modelPar_ms=mod.ms;
8878  bool modelPar_given_ms=mod.given("ms");
8879  AdmsSensFadType modelPar_ajs=mod.ajs;
8880  bool modelPar_given_ajs=mod.given("ajs");
8881  AdmsSensFadType modelPar_ccso=mod.ccso;
8882  bool modelPar_given_ccso=mod.given("ccso");
8883  AdmsSensFadType modelPar_ibei=mod.ibei;
8884  bool modelPar_given_ibei=mod.given("ibei");
8885  AdmsSensFadType modelPar_wbe=mod.wbe;
8886  bool modelPar_given_wbe=mod.given("wbe");
8887  AdmsSensFadType modelPar_nei=mod.nei;
8888  bool modelPar_given_nei=mod.given("nei");
8889  AdmsSensFadType modelPar_qnibeir=mod.qnibeir;
8890  bool modelPar_given_qnibeir=mod.given("qnibeir");
8891  AdmsSensFadType modelPar_iben=mod.iben;
8892  bool modelPar_given_iben=mod.given("iben");
8893  AdmsSensFadType modelPar_nen=mod.nen;
8894  bool modelPar_given_nen=mod.given("nen");
8895  AdmsSensFadType modelPar_ibci=mod.ibci;
8896  bool modelPar_given_ibci=mod.given("ibci");
8897  AdmsSensFadType modelPar_nci=mod.nci;
8898  bool modelPar_given_nci=mod.given("nci");
8899  AdmsSensFadType modelPar_ibcn=mod.ibcn;
8900  bool modelPar_given_ibcn=mod.given("ibcn");
8901  AdmsSensFadType modelPar_ncn=mod.ncn;
8902  bool modelPar_given_ncn=mod.given("ncn");
8903  AdmsSensFadType modelPar_ibeip=mod.ibeip;
8904  bool modelPar_given_ibeip=mod.given("ibeip");
8905  AdmsSensFadType modelPar_ibenp=mod.ibenp;
8906  bool modelPar_given_ibenp=mod.given("ibenp");
8907  AdmsSensFadType modelPar_ibcip=mod.ibcip;
8908  bool modelPar_given_ibcip=mod.given("ibcip");
8909  AdmsSensFadType modelPar_ncip=mod.ncip;
8910  bool modelPar_given_ncip=mod.given("ncip");
8911  AdmsSensFadType modelPar_ibcnp=mod.ibcnp;
8912  bool modelPar_given_ibcnp=mod.given("ibcnp");
8913  AdmsSensFadType modelPar_ncnp=mod.ncnp;
8914  bool modelPar_given_ncnp=mod.given("ncnp");
8915  AdmsSensFadType modelPar_vef=mod.vef;
8916  bool modelPar_given_vef=mod.given("vef");
8917  AdmsSensFadType modelPar_ver=mod.ver;
8918  bool modelPar_given_ver=mod.given("ver");
8919  AdmsSensFadType modelPar_ikf=mod.ikf;
8920  bool modelPar_given_ikf=mod.given("ikf");
8921  AdmsSensFadType modelPar_nkf=mod.nkf;
8922  bool modelPar_given_nkf=mod.given("nkf");
8923  AdmsSensFadType modelPar_ikr=mod.ikr;
8924  bool modelPar_given_ikr=mod.given("ikr");
8925  AdmsSensFadType modelPar_ikp=mod.ikp;
8926  bool modelPar_given_ikp=mod.given("ikp");
8927  AdmsSensFadType modelPar_tf=mod.tf;
8928  bool modelPar_given_tf=mod.given("tf");
8929  AdmsSensFadType modelPar_qtf=mod.qtf;
8930  bool modelPar_given_qtf=mod.given("qtf");
8931  AdmsSensFadType modelPar_xtf=mod.xtf;
8932  bool modelPar_given_xtf=mod.given("xtf");
8933  AdmsSensFadType modelPar_vtf=mod.vtf;
8934  bool modelPar_given_vtf=mod.given("vtf");
8935  AdmsSensFadType modelPar_itf=mod.itf;
8936  bool modelPar_given_itf=mod.given("itf");
8937  AdmsSensFadType modelPar_tr=mod.tr;
8938  bool modelPar_given_tr=mod.given("tr");
8939  AdmsSensFadType modelPar_td=mod.td;
8940  bool modelPar_given_td=mod.given("td");
8941  AdmsSensFadType modelPar_avc1=mod.avc1;
8942  bool modelPar_given_avc1=mod.given("avc1");
8943  AdmsSensFadType modelPar_avc2=mod.avc2;
8944  bool modelPar_given_avc2=mod.given("avc2");
8945  AdmsSensFadType modelPar_avcx1=mod.avcx1;
8946  bool modelPar_given_avcx1=mod.given("avcx1");
8947  AdmsSensFadType modelPar_avcx2=mod.avcx2;
8948  bool modelPar_given_avcx2=mod.given("avcx2");
8949  AdmsSensFadType modelPar_mcx=mod.mcx;
8950  bool modelPar_given_mcx=mod.given("mcx");
8951  AdmsSensFadType modelPar_vbbe=mod.vbbe;
8952  bool modelPar_given_vbbe=mod.given("vbbe");
8953  AdmsSensFadType modelPar_nbbe=mod.nbbe;
8954  bool modelPar_given_nbbe=mod.given("nbbe");
8955  AdmsSensFadType modelPar_ibbe=mod.ibbe;
8956  bool modelPar_given_ibbe=mod.given("ibbe");
8957  AdmsSensFadType modelPar_tvbbe1=mod.tvbbe1;
8958  bool modelPar_given_tvbbe1=mod.given("tvbbe1");
8959  AdmsSensFadType modelPar_tvbbe2=mod.tvbbe2;
8960  bool modelPar_given_tvbbe2=mod.given("tvbbe2");
8961  AdmsSensFadType modelPar_tnbbe=mod.tnbbe;
8962  bool modelPar_given_tnbbe=mod.given("tnbbe");
8963  AdmsSensFadType modelPar_vpte=mod.vpte;
8964  bool modelPar_given_vpte=mod.given("vpte");
8965  AdmsSensFadType modelPar_ibk0=mod.ibk0;
8966  bool modelPar_given_ibk0=mod.given("ibk0");
8967  AdmsSensFadType modelPar_abk=mod.abk;
8968  bool modelPar_given_abk=mod.given("abk");
8969  AdmsSensFadType modelPar_bbk=mod.bbk;
8970  bool modelPar_given_bbk=mod.given("bbk");
8971  AdmsSensFadType modelPar_kfn=mod.kfn;
8972  bool modelPar_given_kfn=mod.given("kfn");
8973  AdmsSensFadType modelPar_afn=mod.afn;
8974  bool modelPar_given_afn=mod.given("afn");
8975  AdmsSensFadType modelPar_bfn=mod.bfn;
8976  bool modelPar_given_bfn=mod.given("bfn");
8977  AdmsSensFadType modelPar_rth=mod.rth;
8978  bool modelPar_given_rth=mod.given("rth");
8979  AdmsSensFadType modelPar_cth=mod.cth;
8980  bool modelPar_given_cth=mod.given("cth");
8981  AdmsSensFadType modelPar_xre=mod.xre;
8982  bool modelPar_given_xre=mod.given("xre");
8983  AdmsSensFadType modelPar_xrb=mod.xrb;
8984  bool modelPar_given_xrb=mod.given("xrb");
8985  AdmsSensFadType modelPar_xrbi=mod.xrbi;
8986  bool modelPar_given_xrbi=mod.given("xrbi");
8987  AdmsSensFadType modelPar_xrbx=mod.xrbx;
8988  bool modelPar_given_xrbx=mod.given("xrbx");
8989  AdmsSensFadType modelPar_xrc=mod.xrc;
8990  bool modelPar_given_xrc=mod.given("xrc");
8991  AdmsSensFadType modelPar_xrci=mod.xrci;
8992  bool modelPar_given_xrci=mod.given("xrci");
8993  AdmsSensFadType modelPar_xrcx=mod.xrcx;
8994  bool modelPar_given_xrcx=mod.given("xrcx");
8995  AdmsSensFadType modelPar_xrbp=mod.xrbp;
8996  bool modelPar_given_xrbp=mod.given("xrbp");
8997  AdmsSensFadType modelPar_xrs=mod.xrs;
8998  bool modelPar_given_xrs=mod.given("xrs");
8999  AdmsSensFadType modelPar_xvo=mod.xvo;
9000  bool modelPar_given_xvo=mod.given("xvo");
9001  AdmsSensFadType modelPar_ea=mod.ea;
9002  bool modelPar_given_ea=mod.given("ea");
9003  AdmsSensFadType modelPar_eaie=mod.eaie;
9004  bool modelPar_given_eaie=mod.given("eaie");
9005  AdmsSensFadType modelPar_eaic=mod.eaic;
9006  bool modelPar_given_eaic=mod.given("eaic");
9007  AdmsSensFadType modelPar_eais=mod.eais;
9008  bool modelPar_given_eais=mod.given("eais");
9009  AdmsSensFadType modelPar_eane=mod.eane;
9010  bool modelPar_given_eane=mod.given("eane");
9011  AdmsSensFadType modelPar_eanc=mod.eanc;
9012  bool modelPar_given_eanc=mod.given("eanc");
9013  AdmsSensFadType modelPar_eans=mod.eans;
9014  bool modelPar_given_eans=mod.given("eans");
9015  AdmsSensFadType modelPar_eap=mod.eap;
9016  bool modelPar_given_eap=mod.given("eap");
9017  AdmsSensFadType modelPar_dear=mod.dear;
9018  bool modelPar_given_dear=mod.given("dear");
9019  AdmsSensFadType modelPar_xis=mod.xis;
9020  bool modelPar_given_xis=mod.given("xis");
9021  AdmsSensFadType modelPar_xii=mod.xii;
9022  bool modelPar_given_xii=mod.given("xii");
9023  AdmsSensFadType modelPar_xin=mod.xin;
9024  bool modelPar_given_xin=mod.given("xin");
9025  AdmsSensFadType modelPar_xisr=mod.xisr;
9026  bool modelPar_given_xisr=mod.given("xisr");
9027  AdmsSensFadType modelPar_xikf=mod.xikf;
9028  bool modelPar_given_xikf=mod.given("xikf");
9029  AdmsSensFadType modelPar_tavc=mod.tavc;
9030  bool modelPar_given_tavc=mod.given("tavc");
9031  AdmsSensFadType modelPar_tavcx=mod.tavcx;
9032  bool modelPar_given_tavcx=mod.given("tavcx");
9033  AdmsSensFadType modelPar_tnf=mod.tnf;
9034  bool modelPar_given_tnf=mod.given("tnf");
9035  AdmsSensFadType modelPar_tcvef=mod.tcvef;
9036  bool modelPar_given_tcvef=mod.given("tcvef");
9037  AdmsSensFadType modelPar_tcver=mod.tcver;
9038  bool modelPar_given_tcver=mod.given("tcver");
9039  AdmsSensFadType modelPar_tcrth=mod.tcrth;
9040  bool modelPar_given_tcrth=mod.given("tcrth");
9041 
9042 
9043  // hidden reals
9044 
9045 
9046  // non-reals (including hiddens)
9047  int modelPar_type=mod.type;
9048  bool modelPar_given_type=mod.given("type");
9049  int modelPar_VBICtype=mod.VBICtype;
9050  int modelPar_qbm=mod.qbm;
9051  bool modelPar_given_qbm=mod.given("qbm");
9052 
9053 
9054 
9055  // Copy out all the instance parameters (doubles) into FAD types
9056  // Keep a map so we can set the right one to the independent variable
9057  // We do this solely to avoid a big ugly "if/else" block just to find the
9058  // one parameter we're doing sensitivities on.
9059  unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> inParamMap;
9060 
9061  // reals
9062  AdmsSensFadType instancePar_m=in.m;
9063  bool instancePar_given_m=in.given("m");
9064  inParamMap["m"] = &instancePar_m;
9065  AdmsSensFadType instancePar_trise=in.trise;
9066  bool instancePar_given_trise=in.given("trise");
9067  inParamMap["trise"] = &instancePar_trise;
9068 
9069 
9070  // Copy all the real hidden instance params into fad types
9071 
9072 
9073 
9074  // Copy all the non-real instance params into vars of their appropriate type:
9075  int instancePar_sw_noise=in.sw_noise;
9076  bool instancePar_given_sw_noise=in.given("sw_noise");
9077  int instancePar_sw_et=in.sw_et;
9078  bool instancePar_given_sw_et=in.given("sw_et");
9079 
9080 
9081  // Set the one parameter whose name was passed in to be the independent
9082  // variable for Sacado purposes. Since we stored variable pointers, this
9083  // makes sure that that ONE variable gets set right.
9084  // FIXME: make this check the name first, otherwise segfault on invalid name!
9085  inParamMap[name]->diff(0,1);
9086 
9087  //make local copies of all instance vars
9088  //reals
9089 
9090 
9091  //non-reals
9092 
9093 
9094  //make local copies of all model vars
9095  //reals
9096 
9097 
9098  // non-reals
9099 
9100 
9101 
9102  Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
9103 
9104  // extract solution variables and set as Fad independent variables.
9105 
9106  probeVars[in.admsProbeID_V_xf2_GND] = (*solVectorPtr)[in.li_xf2];
9107  probeVars[in.admsProbeID_V_xf1_GND] = (*solVectorPtr)[in.li_xf1];
9108  probeVars[in.admsProbeID_V_bp_cx] = (*solVectorPtr)[in.li_bp] - (*solVectorPtr)[in.li_cx];
9109  probeVars[in.admsProbeID_V_e_ei] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_ei];
9110  probeVars[in.admsProbeID_V_bx_bi] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bi];
9111  probeVars[in.admsProbeID_V_b_bx] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_bx];
9112  probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
9113  probeVars[in.admsProbeID_V_c_cx] = (*solVectorPtr)[in.li_c] - (*solVectorPtr)[in.li_cx];
9114  probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
9115  probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
9116  probeVars[in.admsProbeID_V_bx_bp] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bp];
9117  probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
9118  probeVars[in.admsProbeID_V_bx_cx] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_cx];
9119  probeVars[in.admsProbeID_V_bi_cx] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_cx];
9120  probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
9121  probeVars[in.admsProbeID_V_bx_ei] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_ei];
9122  probeVars[in.admsProbeID_V_bi_ei] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ei];
9123  probeVars[in.admsProbeID_Temp_dt_GND] = (*solVectorPtr)[in.li_dt];
9124 
9125  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
9126  probeVars[in.admsProbeID_V_bx_bp] *= modelPar_VBICtype;
9127  probeVars[in.admsProbeID_V_bx_cx] *= modelPar_VBICtype;
9128  probeVars[in.admsProbeID_V_bi_cx] *= modelPar_VBICtype;
9129  probeVars[in.admsProbeID_V_bi_ci] *= modelPar_VBICtype;
9130  probeVars[in.admsProbeID_V_bx_ei] *= modelPar_VBICtype;
9131  probeVars[in.admsProbeID_V_bi_ei] *= modelPar_VBICtype;
9132 
9133 
9134 
9135  // Now call the function that does the heavy lifting.
9136  evaluateModelEquations(
9137  probeVars,
9138  // probe constants
9139  in.admsProbeID_V_xf2_GND,
9140  in.admsProbeID_V_xf1_GND,
9141  in.admsProbeID_V_bp_cx,
9142  in.admsProbeID_V_e_ei,
9143  in.admsProbeID_V_bx_bi,
9144  in.admsProbeID_V_b_bx,
9145  in.admsProbeID_V_cx_ci,
9146  in.admsProbeID_V_c_cx,
9147  in.admsProbeID_V_b_c,
9148  in.admsProbeID_V_b_e,
9149  in.admsProbeID_V_bx_bp,
9150  in.admsProbeID_V_ci_ei,
9151  in.admsProbeID_V_bx_cx,
9152  in.admsProbeID_V_bi_cx,
9153  in.admsProbeID_V_bi_ci,
9154  in.admsProbeID_V_bx_ei,
9155  in.admsProbeID_V_bi_ei,
9156  in.admsProbeID_Temp_dt_GND,
9157 
9158  // node constants
9159  in.admsNodeID_c,
9160  in.admsNodeID_b,
9161  in.admsNodeID_e,
9162  in.admsNodeID_dt,
9163  in.admsNodeID_cx,
9164  in.admsNodeID_ci,
9165  in.admsNodeID_bx,
9166  in.admsNodeID_bi,
9167  in.admsNodeID_ei,
9168  in.admsNodeID_bp,
9169  in.admsNodeID_xf1,
9170  in.admsNodeID_xf2,
9171  // instance parameters
9172  // reals
9173  instancePar_m,
9174  instancePar_given_m,
9175  instancePar_trise,
9176  instancePar_given_trise,
9177  // non-reals(including hidden)
9178  instancePar_sw_noise,
9179  instancePar_given_sw_noise,
9180  instancePar_sw_et,
9181  instancePar_given_sw_et,
9182  // model parameters
9183  // reals
9184  modelPar_npn,
9185  modelPar_given_npn,
9186  modelPar_pnp,
9187  modelPar_given_pnp,
9188  modelPar_scale,
9189  modelPar_given_scale,
9190  modelPar_shrink,
9191  modelPar_given_shrink,
9192  modelPar_tmin,
9193  modelPar_given_tmin,
9194  modelPar_tmax,
9195  modelPar_given_tmax,
9196  modelPar_gmin,
9197  modelPar_given_gmin,
9198  modelPar_pnjmaxi,
9199  modelPar_given_pnjmaxi,
9200  modelPar_maxexp,
9201  modelPar_given_maxexp,
9202  modelPar_tnom,
9203  modelPar_given_tnom,
9204  modelPar_tminclip,
9205  modelPar_given_tminclip,
9206  modelPar_tmaxclip,
9207  modelPar_given_tmaxclip,
9208  modelPar_rcx,
9209  modelPar_given_rcx,
9210  modelPar_rci,
9211  modelPar_given_rci,
9212  modelPar_vo,
9213  modelPar_given_vo,
9214  modelPar_gamm,
9215  modelPar_given_gamm,
9216  modelPar_hrcf,
9217  modelPar_given_hrcf,
9218  modelPar_rbx,
9219  modelPar_given_rbx,
9220  modelPar_rbi,
9221  modelPar_given_rbi,
9222  modelPar_re,
9223  modelPar_given_re,
9224  modelPar_rs,
9225  modelPar_given_rs,
9226  modelPar_rbp,
9227  modelPar_given_rbp,
9228  modelPar_is,
9229  modelPar_given_is,
9230  modelPar_isrr,
9231  modelPar_given_isrr,
9232  modelPar_nf,
9233  modelPar_given_nf,
9234  modelPar_nr,
9235  modelPar_given_nr,
9236  modelPar_isp,
9237  modelPar_given_isp,
9238  modelPar_wsp,
9239  modelPar_given_wsp,
9240  modelPar_nfp,
9241  modelPar_given_nfp,
9242  modelPar_fc,
9243  modelPar_given_fc,
9244  modelPar_cbeo,
9245  modelPar_given_cbeo,
9246  modelPar_cje,
9247  modelPar_given_cje,
9248  modelPar_pe,
9249  modelPar_given_pe,
9250  modelPar_me,
9251  modelPar_given_me,
9252  modelPar_aje,
9253  modelPar_given_aje,
9254  modelPar_cbco,
9255  modelPar_given_cbco,
9256  modelPar_cjc,
9257  modelPar_given_cjc,
9258  modelPar_pc,
9259  modelPar_given_pc,
9260  modelPar_mc,
9261  modelPar_given_mc,
9262  modelPar_ajc,
9263  modelPar_given_ajc,
9264  modelPar_vrt,
9265  modelPar_given_vrt,
9266  modelPar_art,
9267  modelPar_given_art,
9268  modelPar_qco,
9269  modelPar_given_qco,
9270  modelPar_cjep,
9271  modelPar_given_cjep,
9272  modelPar_cjcp,
9273  modelPar_given_cjcp,
9274  modelPar_ps,
9275  modelPar_given_ps,
9276  modelPar_ms,
9277  modelPar_given_ms,
9278  modelPar_ajs,
9279  modelPar_given_ajs,
9280  modelPar_ccso,
9281  modelPar_given_ccso,
9282  modelPar_ibei,
9283  modelPar_given_ibei,
9284  modelPar_wbe,
9285  modelPar_given_wbe,
9286  modelPar_nei,
9287  modelPar_given_nei,
9288  modelPar_qnibeir,
9289  modelPar_given_qnibeir,
9290  modelPar_iben,
9291  modelPar_given_iben,
9292  modelPar_nen,
9293  modelPar_given_nen,
9294  modelPar_ibci,
9295  modelPar_given_ibci,
9296  modelPar_nci,
9297  modelPar_given_nci,
9298  modelPar_ibcn,
9299  modelPar_given_ibcn,
9300  modelPar_ncn,
9301  modelPar_given_ncn,
9302  modelPar_ibeip,
9303  modelPar_given_ibeip,
9304  modelPar_ibenp,
9305  modelPar_given_ibenp,
9306  modelPar_ibcip,
9307  modelPar_given_ibcip,
9308  modelPar_ncip,
9309  modelPar_given_ncip,
9310  modelPar_ibcnp,
9311  modelPar_given_ibcnp,
9312  modelPar_ncnp,
9313  modelPar_given_ncnp,
9314  modelPar_vef,
9315  modelPar_given_vef,
9316  modelPar_ver,
9317  modelPar_given_ver,
9318  modelPar_ikf,
9319  modelPar_given_ikf,
9320  modelPar_nkf,
9321  modelPar_given_nkf,
9322  modelPar_ikr,
9323  modelPar_given_ikr,
9324  modelPar_ikp,
9325  modelPar_given_ikp,
9326  modelPar_tf,
9327  modelPar_given_tf,
9328  modelPar_qtf,
9329  modelPar_given_qtf,
9330  modelPar_xtf,
9331  modelPar_given_xtf,
9332  modelPar_vtf,
9333  modelPar_given_vtf,
9334  modelPar_itf,
9335  modelPar_given_itf,
9336  modelPar_tr,
9337  modelPar_given_tr,
9338  modelPar_td,
9339  modelPar_given_td,
9340  modelPar_avc1,
9341  modelPar_given_avc1,
9342  modelPar_avc2,
9343  modelPar_given_avc2,
9344  modelPar_avcx1,
9345  modelPar_given_avcx1,
9346  modelPar_avcx2,
9347  modelPar_given_avcx2,
9348  modelPar_mcx,
9349  modelPar_given_mcx,
9350  modelPar_vbbe,
9351  modelPar_given_vbbe,
9352  modelPar_nbbe,
9353  modelPar_given_nbbe,
9354  modelPar_ibbe,
9355  modelPar_given_ibbe,
9356  modelPar_tvbbe1,
9357  modelPar_given_tvbbe1,
9358  modelPar_tvbbe2,
9359  modelPar_given_tvbbe2,
9360  modelPar_tnbbe,
9361  modelPar_given_tnbbe,
9362  modelPar_vpte,
9363  modelPar_given_vpte,
9364  modelPar_ibk0,
9365  modelPar_given_ibk0,
9366  modelPar_abk,
9367  modelPar_given_abk,
9368  modelPar_bbk,
9369  modelPar_given_bbk,
9370  modelPar_kfn,
9371  modelPar_given_kfn,
9372  modelPar_afn,
9373  modelPar_given_afn,
9374  modelPar_bfn,
9375  modelPar_given_bfn,
9376  modelPar_rth,
9377  modelPar_given_rth,
9378  modelPar_cth,
9379  modelPar_given_cth,
9380  modelPar_xre,
9381  modelPar_given_xre,
9382  modelPar_xrb,
9383  modelPar_given_xrb,
9384  modelPar_xrbi,
9385  modelPar_given_xrbi,
9386  modelPar_xrbx,
9387  modelPar_given_xrbx,
9388  modelPar_xrc,
9389  modelPar_given_xrc,
9390  modelPar_xrci,
9391  modelPar_given_xrci,
9392  modelPar_xrcx,
9393  modelPar_given_xrcx,
9394  modelPar_xrbp,
9395  modelPar_given_xrbp,
9396  modelPar_xrs,
9397  modelPar_given_xrs,
9398  modelPar_xvo,
9399  modelPar_given_xvo,
9400  modelPar_ea,
9401  modelPar_given_ea,
9402  modelPar_eaie,
9403  modelPar_given_eaie,
9404  modelPar_eaic,
9405  modelPar_given_eaic,
9406  modelPar_eais,
9407  modelPar_given_eais,
9408  modelPar_eane,
9409  modelPar_given_eane,
9410  modelPar_eanc,
9411  modelPar_given_eanc,
9412  modelPar_eans,
9413  modelPar_given_eans,
9414  modelPar_eap,
9415  modelPar_given_eap,
9416  modelPar_dear,
9417  modelPar_given_dear,
9418  modelPar_xis,
9419  modelPar_given_xis,
9420  modelPar_xii,
9421  modelPar_given_xii,
9422  modelPar_xin,
9423  modelPar_given_xin,
9424  modelPar_xisr,
9425  modelPar_given_xisr,
9426  modelPar_xikf,
9427  modelPar_given_xikf,
9428  modelPar_tavc,
9429  modelPar_given_tavc,
9430  modelPar_tavcx,
9431  modelPar_given_tavcx,
9432  modelPar_tnf,
9433  modelPar_given_tnf,
9434  modelPar_tcvef,
9435  modelPar_given_tcvef,
9436  modelPar_tcver,
9437  modelPar_given_tcver,
9438  modelPar_tcrth,
9439  modelPar_given_tcrth,
9440  // non-reals (including hidden)
9441  modelPar_type,
9442  modelPar_given_type,
9443  modelPar_VBICtype,
9444  modelPar_qbm,
9445  modelPar_given_qbm,
9446  in.admsTemperature,
9447  in.adms_vt_nom,
9448  in.getDeviceOptions().gmin,
9449  staticContributions,
9450  dynamicContributions,
9451  in);
9452 
9453 
9454  // We now have the F and Q vector stuff, populate the dependencies:
9455 
9456  dfdp[in.admsNodeID_c] += staticContributions[in.admsNodeID_c].dx(0);
9457  dqdp[in.admsNodeID_c] += dynamicContributions[in.admsNodeID_c].dx(0);
9458  Findices[in.admsNodeID_c] = in.li_c;
9459  Qindices[in.admsNodeID_c] = in.li_c;
9460  dfdp[in.admsNodeID_b] += staticContributions[in.admsNodeID_b].dx(0);
9461  dqdp[in.admsNodeID_b] += dynamicContributions[in.admsNodeID_b].dx(0);
9462  Findices[in.admsNodeID_b] = in.li_b;
9463  Qindices[in.admsNodeID_b] = in.li_b;
9464  dfdp[in.admsNodeID_e] += staticContributions[in.admsNodeID_e].dx(0);
9465  dqdp[in.admsNodeID_e] += dynamicContributions[in.admsNodeID_e].dx(0);
9466  Findices[in.admsNodeID_e] = in.li_e;
9467  Qindices[in.admsNodeID_e] = in.li_e;
9468  dfdp[in.admsNodeID_dt] += staticContributions[in.admsNodeID_dt].dx(0);
9469  dqdp[in.admsNodeID_dt] += dynamicContributions[in.admsNodeID_dt].dx(0);
9470  Findices[in.admsNodeID_dt] = in.li_dt;
9471  Qindices[in.admsNodeID_dt] = in.li_dt;
9472  dfdp[in.admsNodeID_cx] += staticContributions[in.admsNodeID_cx].dx(0);
9473  dqdp[in.admsNodeID_cx] += dynamicContributions[in.admsNodeID_cx].dx(0);
9474  Findices[in.admsNodeID_cx] = in.li_cx;
9475  Qindices[in.admsNodeID_cx] = in.li_cx;
9476  dfdp[in.admsNodeID_ci] += staticContributions[in.admsNodeID_ci].dx(0);
9477  dqdp[in.admsNodeID_ci] += dynamicContributions[in.admsNodeID_ci].dx(0);
9478  Findices[in.admsNodeID_ci] = in.li_ci;
9479  Qindices[in.admsNodeID_ci] = in.li_ci;
9480  dfdp[in.admsNodeID_bx] += staticContributions[in.admsNodeID_bx].dx(0);
9481  dqdp[in.admsNodeID_bx] += dynamicContributions[in.admsNodeID_bx].dx(0);
9482  Findices[in.admsNodeID_bx] = in.li_bx;
9483  Qindices[in.admsNodeID_bx] = in.li_bx;
9484  dfdp[in.admsNodeID_bi] += staticContributions[in.admsNodeID_bi].dx(0);
9485  dqdp[in.admsNodeID_bi] += dynamicContributions[in.admsNodeID_bi].dx(0);
9486  Findices[in.admsNodeID_bi] = in.li_bi;
9487  Qindices[in.admsNodeID_bi] = in.li_bi;
9488  dfdp[in.admsNodeID_ei] += staticContributions[in.admsNodeID_ei].dx(0);
9489  dqdp[in.admsNodeID_ei] += dynamicContributions[in.admsNodeID_ei].dx(0);
9490  Findices[in.admsNodeID_ei] = in.li_ei;
9491  Qindices[in.admsNodeID_ei] = in.li_ei;
9492  dfdp[in.admsNodeID_bp] += staticContributions[in.admsNodeID_bp].dx(0);
9493  dqdp[in.admsNodeID_bp] += dynamicContributions[in.admsNodeID_bp].dx(0);
9494  Findices[in.admsNodeID_bp] = in.li_bp;
9495  Qindices[in.admsNodeID_bp] = in.li_bp;
9496  dfdp[in.admsNodeID_xf1] += staticContributions[in.admsNodeID_xf1].dx(0);
9497  dqdp[in.admsNodeID_xf1] += dynamicContributions[in.admsNodeID_xf1].dx(0);
9498  Findices[in.admsNodeID_xf1] = in.li_xf1;
9499  Qindices[in.admsNodeID_xf1] = in.li_xf1;
9500  dfdp[in.admsNodeID_xf2] += staticContributions[in.admsNodeID_xf2].dx(0);
9501  dqdp[in.admsNodeID_xf2] += dynamicContributions[in.admsNodeID_xf2].dx(0);
9502  Findices[in.admsNodeID_xf2] = in.li_xf2;
9503  Qindices[in.admsNodeID_xf2] = in.li_xf2;
9504 
9505 
9506 }
9507 
9508 //-----------------------------------------------------------------------------
9509 // Function : ModelSensitivity::operator()
9510 // Purpose : return sensitivity for a single model parameter
9511 // Special Notes :
9512 // Scope : public
9513 // Creator : admsXml
9514 // Creation Date :
9515 //-----------------------------------------------------------------------------
9516 /// Compute sensitivity to a specified model
9517 /// parameter of all device instances of that model's outputs
9518 ///
9519 ///
9520 /// @param[in] entity The device entity that owns the parameter
9521 /// @param[in] name The unadorned parameter name specific to the entity
9522 /// @param[out] dfdp The derivative of the F vector with respect to the parameter
9523 /// @param[out] dqdp The derivative of the Q vector with respect to the parameter
9524 /// @param[out] dbdp The derivative of the B vector with respect to the parameter
9525 /// @param[out] Findices The indices into the F vector corresponding to the elements of dfdp
9526 /// @param[out] Qindices The indices into the Q vector corresponding to the elements of dfdp
9527 /// @param[out] Bindices The indices into the B vector corresponding to the elements of dfdp
9528 ///
9529 ///
9530 void ModelSensitivity::operator()
9531  (
9532  const ParameterBase &entity,
9533  const std::string &name,
9534  std::vector<double> & dfdp,
9535  std::vector<double> & dqdp,
9536  std::vector<double> & dbdp,
9537  std::vector<int> & Findices,
9538  std::vector<int> & Qindices,
9539  std::vector<int> & Bindices
9540  ) const
9541 {
9542  const ParameterBase * e1 = &entity;
9543  const Model & mod = *(dynamic_cast<const Model *> (e1));
9544  int sizeInstance = mod.instanceContainer.size();
9545 
9546  dfdp.resize((12+0)*sizeInstance);
9547  dqdp.resize((12+0)*sizeInstance);
9548  Findices.resize((12+0)*sizeInstance);
9549  Qindices.resize((12+0)*sizeInstance);
9550 
9551  std::vector <double> probeVars(18);
9552  std::vector <AdmsSensFadType> staticContributions(12+0);
9553  std::vector <AdmsSensFadType> dynamicContributions(12+0);
9554 
9555 
9556  // Copy out all the model parameters (doubles) into FAD types
9557  // Keep a map so we can set the right one to the independent variable
9558  // We do this solely to avoid a big ugly "if/else" block just to find the
9559  // one parameter we're doing sensitivities on.
9560  unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> modParamMap;
9561 
9562  // reals
9563  AdmsSensFadType modelPar_npn=mod.npn;
9564  bool modelPar_given_npn=mod.given("npn");
9565  modParamMap["npn"] = &modelPar_npn;
9566  AdmsSensFadType modelPar_pnp=mod.pnp;
9567  bool modelPar_given_pnp=mod.given("pnp");
9568  modParamMap["pnp"] = &modelPar_pnp;
9569  AdmsSensFadType modelPar_scale=mod.scale;
9570  bool modelPar_given_scale=mod.given("scale");
9571  modParamMap["scale"] = &modelPar_scale;
9572  AdmsSensFadType modelPar_shrink=mod.shrink;
9573  bool modelPar_given_shrink=mod.given("shrink");
9574  modParamMap["shrink"] = &modelPar_shrink;
9575  AdmsSensFadType modelPar_tmin=mod.tmin;
9576  bool modelPar_given_tmin=mod.given("tmin");
9577  modParamMap["tmin"] = &modelPar_tmin;
9578  AdmsSensFadType modelPar_tmax=mod.tmax;
9579  bool modelPar_given_tmax=mod.given("tmax");
9580  modParamMap["tmax"] = &modelPar_tmax;
9581  AdmsSensFadType modelPar_gmin=mod.gmin;
9582  bool modelPar_given_gmin=mod.given("gmin");
9583  modParamMap["gmin"] = &modelPar_gmin;
9584  AdmsSensFadType modelPar_pnjmaxi=mod.pnjmaxi;
9585  bool modelPar_given_pnjmaxi=mod.given("pnjmaxi");
9586  modParamMap["pnjmaxi"] = &modelPar_pnjmaxi;
9587  AdmsSensFadType modelPar_maxexp=mod.maxexp;
9588  bool modelPar_given_maxexp=mod.given("maxexp");
9589  modParamMap["maxexp"] = &modelPar_maxexp;
9590  AdmsSensFadType modelPar_tnom=mod.tnom;
9591  bool modelPar_given_tnom=mod.given("tnom");
9592  modParamMap["tnom"] = &modelPar_tnom;
9593  AdmsSensFadType modelPar_tminclip=mod.tminclip;
9594  bool modelPar_given_tminclip=mod.given("tminclip");
9595  modParamMap["tminclip"] = &modelPar_tminclip;
9596  AdmsSensFadType modelPar_tmaxclip=mod.tmaxclip;
9597  bool modelPar_given_tmaxclip=mod.given("tmaxclip");
9598  modParamMap["tmaxclip"] = &modelPar_tmaxclip;
9599  AdmsSensFadType modelPar_rcx=mod.rcx;
9600  bool modelPar_given_rcx=mod.given("rcx");
9601  modParamMap["rcx"] = &modelPar_rcx;
9602  AdmsSensFadType modelPar_rci=mod.rci;
9603  bool modelPar_given_rci=mod.given("rci");
9604  modParamMap["rci"] = &modelPar_rci;
9605  AdmsSensFadType modelPar_vo=mod.vo;
9606  bool modelPar_given_vo=mod.given("vo");
9607  modParamMap["vo"] = &modelPar_vo;
9608  AdmsSensFadType modelPar_gamm=mod.gamm;
9609  bool modelPar_given_gamm=mod.given("gamm");
9610  modParamMap["gamm"] = &modelPar_gamm;
9611  AdmsSensFadType modelPar_hrcf=mod.hrcf;
9612  bool modelPar_given_hrcf=mod.given("hrcf");
9613  modParamMap["hrcf"] = &modelPar_hrcf;
9614  AdmsSensFadType modelPar_rbx=mod.rbx;
9615  bool modelPar_given_rbx=mod.given("rbx");
9616  modParamMap["rbx"] = &modelPar_rbx;
9617  AdmsSensFadType modelPar_rbi=mod.rbi;
9618  bool modelPar_given_rbi=mod.given("rbi");
9619  modParamMap["rbi"] = &modelPar_rbi;
9620  AdmsSensFadType modelPar_re=mod.re;
9621  bool modelPar_given_re=mod.given("re");
9622  modParamMap["re"] = &modelPar_re;
9623  AdmsSensFadType modelPar_rs=mod.rs;
9624  bool modelPar_given_rs=mod.given("rs");
9625  modParamMap["rs"] = &modelPar_rs;
9626  AdmsSensFadType modelPar_rbp=mod.rbp;
9627  bool modelPar_given_rbp=mod.given("rbp");
9628  modParamMap["rbp"] = &modelPar_rbp;
9629  AdmsSensFadType modelPar_is=mod.is;
9630  bool modelPar_given_is=mod.given("is");
9631  modParamMap["is"] = &modelPar_is;
9632  AdmsSensFadType modelPar_isrr=mod.isrr;
9633  bool modelPar_given_isrr=mod.given("isrr");
9634  modParamMap["isrr"] = &modelPar_isrr;
9635  AdmsSensFadType modelPar_nf=mod.nf;
9636  bool modelPar_given_nf=mod.given("nf");
9637  modParamMap["nf"] = &modelPar_nf;
9638  AdmsSensFadType modelPar_nr=mod.nr;
9639  bool modelPar_given_nr=mod.given("nr");
9640  modParamMap["nr"] = &modelPar_nr;
9641  AdmsSensFadType modelPar_isp=mod.isp;
9642  bool modelPar_given_isp=mod.given("isp");
9643  modParamMap["isp"] = &modelPar_isp;
9644  AdmsSensFadType modelPar_wsp=mod.wsp;
9645  bool modelPar_given_wsp=mod.given("wsp");
9646  modParamMap["wsp"] = &modelPar_wsp;
9647  AdmsSensFadType modelPar_nfp=mod.nfp;
9648  bool modelPar_given_nfp=mod.given("nfp");
9649  modParamMap["nfp"] = &modelPar_nfp;
9650  AdmsSensFadType modelPar_fc=mod.fc;
9651  bool modelPar_given_fc=mod.given("fc");
9652  modParamMap["fc"] = &modelPar_fc;
9653  AdmsSensFadType modelPar_cbeo=mod.cbeo;
9654  bool modelPar_given_cbeo=mod.given("cbeo");
9655  modParamMap["cbeo"] = &modelPar_cbeo;
9656  AdmsSensFadType modelPar_cje=mod.cje;
9657  bool modelPar_given_cje=mod.given("cje");
9658  modParamMap["cje"] = &modelPar_cje;
9659  AdmsSensFadType modelPar_pe=mod.pe;
9660  bool modelPar_given_pe=mod.given("pe");
9661  modParamMap["pe"] = &modelPar_pe;
9662  AdmsSensFadType modelPar_me=mod.me;
9663  bool modelPar_given_me=mod.given("me");
9664  modParamMap["me"] = &modelPar_me;
9665  AdmsSensFadType modelPar_aje=mod.aje;
9666  bool modelPar_given_aje=mod.given("aje");
9667  modParamMap["aje"] = &modelPar_aje;
9668  AdmsSensFadType modelPar_cbco=mod.cbco;
9669  bool modelPar_given_cbco=mod.given("cbco");
9670  modParamMap["cbco"] = &modelPar_cbco;
9671  AdmsSensFadType modelPar_cjc=mod.cjc;
9672  bool modelPar_given_cjc=mod.given("cjc");
9673  modParamMap["cjc"] = &modelPar_cjc;
9674  AdmsSensFadType modelPar_pc=mod.pc;
9675  bool modelPar_given_pc=mod.given("pc");
9676  modParamMap["pc"] = &modelPar_pc;
9677  AdmsSensFadType modelPar_mc=mod.mc;
9678  bool modelPar_given_mc=mod.given("mc");
9679  modParamMap["mc"] = &modelPar_mc;
9680  AdmsSensFadType modelPar_ajc=mod.ajc;
9681  bool modelPar_given_ajc=mod.given("ajc");
9682  modParamMap["ajc"] = &modelPar_ajc;
9683  AdmsSensFadType modelPar_vrt=mod.vrt;
9684  bool modelPar_given_vrt=mod.given("vrt");
9685  modParamMap["vrt"] = &modelPar_vrt;
9686  AdmsSensFadType modelPar_art=mod.art;
9687  bool modelPar_given_art=mod.given("art");
9688  modParamMap["art"] = &modelPar_art;
9689  AdmsSensFadType modelPar_qco=mod.qco;
9690  bool modelPar_given_qco=mod.given("qco");
9691  modParamMap["qco"] = &modelPar_qco;
9692  AdmsSensFadType modelPar_cjep=mod.cjep;
9693  bool modelPar_given_cjep=mod.given("cjep");
9694  modParamMap["cjep"] = &modelPar_cjep;
9695  AdmsSensFadType modelPar_cjcp=mod.cjcp;
9696  bool modelPar_given_cjcp=mod.given("cjcp");
9697  modParamMap["cjcp"] = &modelPar_cjcp;
9698  AdmsSensFadType modelPar_ps=mod.ps;
9699  bool modelPar_given_ps=mod.given("ps");
9700  modParamMap["ps"] = &modelPar_ps;
9701  AdmsSensFadType modelPar_ms=mod.ms;
9702  bool modelPar_given_ms=mod.given("ms");
9703  modParamMap["ms"] = &modelPar_ms;
9704  AdmsSensFadType modelPar_ajs=mod.ajs;
9705  bool modelPar_given_ajs=mod.given("ajs");
9706  modParamMap["ajs"] = &modelPar_ajs;
9707  AdmsSensFadType modelPar_ccso=mod.ccso;
9708  bool modelPar_given_ccso=mod.given("ccso");
9709  modParamMap["ccso"] = &modelPar_ccso;
9710  AdmsSensFadType modelPar_ibei=mod.ibei;
9711  bool modelPar_given_ibei=mod.given("ibei");
9712  modParamMap["ibei"] = &modelPar_ibei;
9713  AdmsSensFadType modelPar_wbe=mod.wbe;
9714  bool modelPar_given_wbe=mod.given("wbe");
9715  modParamMap["wbe"] = &modelPar_wbe;
9716  AdmsSensFadType modelPar_nei=mod.nei;
9717  bool modelPar_given_nei=mod.given("nei");
9718  modParamMap["nei"] = &modelPar_nei;
9719  AdmsSensFadType modelPar_qnibeir=mod.qnibeir;
9720  bool modelPar_given_qnibeir=mod.given("qnibeir");
9721  modParamMap["qnibeir"] = &modelPar_qnibeir;
9722  AdmsSensFadType modelPar_iben=mod.iben;
9723  bool modelPar_given_iben=mod.given("iben");
9724  modParamMap["iben"] = &modelPar_iben;
9725  AdmsSensFadType modelPar_nen=mod.nen;
9726  bool modelPar_given_nen=mod.given("nen");
9727  modParamMap["nen"] = &modelPar_nen;
9728  AdmsSensFadType modelPar_ibci=mod.ibci;
9729  bool modelPar_given_ibci=mod.given("ibci");
9730  modParamMap["ibci"] = &modelPar_ibci;
9731  AdmsSensFadType modelPar_nci=mod.nci;
9732  bool modelPar_given_nci=mod.given("nci");
9733  modParamMap["nci"] = &modelPar_nci;
9734  AdmsSensFadType modelPar_ibcn=mod.ibcn;
9735  bool modelPar_given_ibcn=mod.given("ibcn");
9736  modParamMap["ibcn"] = &modelPar_ibcn;
9737  AdmsSensFadType modelPar_ncn=mod.ncn;
9738  bool modelPar_given_ncn=mod.given("ncn");
9739  modParamMap["ncn"] = &modelPar_ncn;
9740  AdmsSensFadType modelPar_ibeip=mod.ibeip;
9741  bool modelPar_given_ibeip=mod.given("ibeip");
9742  modParamMap["ibeip"] = &modelPar_ibeip;
9743  AdmsSensFadType modelPar_ibenp=mod.ibenp;
9744  bool modelPar_given_ibenp=mod.given("ibenp");
9745  modParamMap["ibenp"] = &modelPar_ibenp;
9746  AdmsSensFadType modelPar_ibcip=mod.ibcip;
9747  bool modelPar_given_ibcip=mod.given("ibcip");
9748  modParamMap["ibcip"] = &modelPar_ibcip;
9749  AdmsSensFadType modelPar_ncip=mod.ncip;
9750  bool modelPar_given_ncip=mod.given("ncip");
9751  modParamMap["ncip"] = &modelPar_ncip;
9752  AdmsSensFadType modelPar_ibcnp=mod.ibcnp;
9753  bool modelPar_given_ibcnp=mod.given("ibcnp");
9754  modParamMap["ibcnp"] = &modelPar_ibcnp;
9755  AdmsSensFadType modelPar_ncnp=mod.ncnp;
9756  bool modelPar_given_ncnp=mod.given("ncnp");
9757  modParamMap["ncnp"] = &modelPar_ncnp;
9758  AdmsSensFadType modelPar_vef=mod.vef;
9759  bool modelPar_given_vef=mod.given("vef");
9760  modParamMap["vef"] = &modelPar_vef;
9761  AdmsSensFadType modelPar_ver=mod.ver;
9762  bool modelPar_given_ver=mod.given("ver");
9763  modParamMap["ver"] = &modelPar_ver;
9764  AdmsSensFadType modelPar_ikf=mod.ikf;
9765  bool modelPar_given_ikf=mod.given("ikf");
9766  modParamMap["ikf"] = &modelPar_ikf;
9767  AdmsSensFadType modelPar_nkf=mod.nkf;
9768  bool modelPar_given_nkf=mod.given("nkf");
9769  modParamMap["nkf"] = &modelPar_nkf;
9770  AdmsSensFadType modelPar_ikr=mod.ikr;
9771  bool modelPar_given_ikr=mod.given("ikr");
9772  modParamMap["ikr"] = &modelPar_ikr;
9773  AdmsSensFadType modelPar_ikp=mod.ikp;
9774  bool modelPar_given_ikp=mod.given("ikp");
9775  modParamMap["ikp"] = &modelPar_ikp;
9776  AdmsSensFadType modelPar_tf=mod.tf;
9777  bool modelPar_given_tf=mod.given("tf");
9778  modParamMap["tf"] = &modelPar_tf;
9779  AdmsSensFadType modelPar_qtf=mod.qtf;
9780  bool modelPar_given_qtf=mod.given("qtf");
9781  modParamMap["qtf"] = &modelPar_qtf;
9782  AdmsSensFadType modelPar_xtf=mod.xtf;
9783  bool modelPar_given_xtf=mod.given("xtf");
9784  modParamMap["xtf"] = &modelPar_xtf;
9785  AdmsSensFadType modelPar_vtf=mod.vtf;
9786  bool modelPar_given_vtf=mod.given("vtf");
9787  modParamMap["vtf"] = &modelPar_vtf;
9788  AdmsSensFadType modelPar_itf=mod.itf;
9789  bool modelPar_given_itf=mod.given("itf");
9790  modParamMap["itf"] = &modelPar_itf;
9791  AdmsSensFadType modelPar_tr=mod.tr;
9792  bool modelPar_given_tr=mod.given("tr");
9793  modParamMap["tr"] = &modelPar_tr;
9794  AdmsSensFadType modelPar_td=mod.td;
9795  bool modelPar_given_td=mod.given("td");
9796  modParamMap["td"] = &modelPar_td;
9797  AdmsSensFadType modelPar_avc1=mod.avc1;
9798  bool modelPar_given_avc1=mod.given("avc1");
9799  modParamMap["avc1"] = &modelPar_avc1;
9800  AdmsSensFadType modelPar_avc2=mod.avc2;
9801  bool modelPar_given_avc2=mod.given("avc2");
9802  modParamMap["avc2"] = &modelPar_avc2;
9803  AdmsSensFadType modelPar_avcx1=mod.avcx1;
9804  bool modelPar_given_avcx1=mod.given("avcx1");
9805  modParamMap["avcx1"] = &modelPar_avcx1;
9806  AdmsSensFadType modelPar_avcx2=mod.avcx2;
9807  bool modelPar_given_avcx2=mod.given("avcx2");
9808  modParamMap["avcx2"] = &modelPar_avcx2;
9809  AdmsSensFadType modelPar_mcx=mod.mcx;
9810  bool modelPar_given_mcx=mod.given("mcx");
9811  modParamMap["mcx"] = &modelPar_mcx;
9812  AdmsSensFadType modelPar_vbbe=mod.vbbe;
9813  bool modelPar_given_vbbe=mod.given("vbbe");
9814  modParamMap["vbbe"] = &modelPar_vbbe;
9815  AdmsSensFadType modelPar_nbbe=mod.nbbe;
9816  bool modelPar_given_nbbe=mod.given("nbbe");
9817  modParamMap["nbbe"] = &modelPar_nbbe;
9818  AdmsSensFadType modelPar_ibbe=mod.ibbe;
9819  bool modelPar_given_ibbe=mod.given("ibbe");
9820  modParamMap["ibbe"] = &modelPar_ibbe;
9821  AdmsSensFadType modelPar_tvbbe1=mod.tvbbe1;
9822  bool modelPar_given_tvbbe1=mod.given("tvbbe1");
9823  modParamMap["tvbbe1"] = &modelPar_tvbbe1;
9824  AdmsSensFadType modelPar_tvbbe2=mod.tvbbe2;
9825  bool modelPar_given_tvbbe2=mod.given("tvbbe2");
9826  modParamMap["tvbbe2"] = &modelPar_tvbbe2;
9827  AdmsSensFadType modelPar_tnbbe=mod.tnbbe;
9828  bool modelPar_given_tnbbe=mod.given("tnbbe");
9829  modParamMap["tnbbe"] = &modelPar_tnbbe;
9830  AdmsSensFadType modelPar_vpte=mod.vpte;
9831  bool modelPar_given_vpte=mod.given("vpte");
9832  modParamMap["vpte"] = &modelPar_vpte;
9833  AdmsSensFadType modelPar_ibk0=mod.ibk0;
9834  bool modelPar_given_ibk0=mod.given("ibk0");
9835  modParamMap["ibk0"] = &modelPar_ibk0;
9836  AdmsSensFadType modelPar_abk=mod.abk;
9837  bool modelPar_given_abk=mod.given("abk");
9838  modParamMap["abk"] = &modelPar_abk;
9839  AdmsSensFadType modelPar_bbk=mod.bbk;
9840  bool modelPar_given_bbk=mod.given("bbk");
9841  modParamMap["bbk"] = &modelPar_bbk;
9842  AdmsSensFadType modelPar_kfn=mod.kfn;
9843  bool modelPar_given_kfn=mod.given("kfn");
9844  modParamMap["kfn"] = &modelPar_kfn;
9845  AdmsSensFadType modelPar_afn=mod.afn;
9846  bool modelPar_given_afn=mod.given("afn");
9847  modParamMap["afn"] = &modelPar_afn;
9848  AdmsSensFadType modelPar_bfn=mod.bfn;
9849  bool modelPar_given_bfn=mod.given("bfn");
9850  modParamMap["bfn"] = &modelPar_bfn;
9851  AdmsSensFadType modelPar_rth=mod.rth;
9852  bool modelPar_given_rth=mod.given("rth");
9853  modParamMap["rth"] = &modelPar_rth;
9854  AdmsSensFadType modelPar_cth=mod.cth;
9855  bool modelPar_given_cth=mod.given("cth");
9856  modParamMap["cth"] = &modelPar_cth;
9857  AdmsSensFadType modelPar_xre=mod.xre;
9858  bool modelPar_given_xre=mod.given("xre");
9859  modParamMap["xre"] = &modelPar_xre;
9860  AdmsSensFadType modelPar_xrb=mod.xrb;
9861  bool modelPar_given_xrb=mod.given("xrb");
9862  modParamMap["xrb"] = &modelPar_xrb;
9863  AdmsSensFadType modelPar_xrbi=mod.xrbi;
9864  bool modelPar_given_xrbi=mod.given("xrbi");
9865  modParamMap["xrbi"] = &modelPar_xrbi;
9866  AdmsSensFadType modelPar_xrbx=mod.xrbx;
9867  bool modelPar_given_xrbx=mod.given("xrbx");
9868  modParamMap["xrbx"] = &modelPar_xrbx;
9869  AdmsSensFadType modelPar_xrc=mod.xrc;
9870  bool modelPar_given_xrc=mod.given("xrc");
9871  modParamMap["xrc"] = &modelPar_xrc;
9872  AdmsSensFadType modelPar_xrci=mod.xrci;
9873  bool modelPar_given_xrci=mod.given("xrci");
9874  modParamMap["xrci"] = &modelPar_xrci;
9875  AdmsSensFadType modelPar_xrcx=mod.xrcx;
9876  bool modelPar_given_xrcx=mod.given("xrcx");
9877  modParamMap["xrcx"] = &modelPar_xrcx;
9878  AdmsSensFadType modelPar_xrbp=mod.xrbp;
9879  bool modelPar_given_xrbp=mod.given("xrbp");
9880  modParamMap["xrbp"] = &modelPar_xrbp;
9881  AdmsSensFadType modelPar_xrs=mod.xrs;
9882  bool modelPar_given_xrs=mod.given("xrs");
9883  modParamMap["xrs"] = &modelPar_xrs;
9884  AdmsSensFadType modelPar_xvo=mod.xvo;
9885  bool modelPar_given_xvo=mod.given("xvo");
9886  modParamMap["xvo"] = &modelPar_xvo;
9887  AdmsSensFadType modelPar_ea=mod.ea;
9888  bool modelPar_given_ea=mod.given("ea");
9889  modParamMap["ea"] = &modelPar_ea;
9890  AdmsSensFadType modelPar_eaie=mod.eaie;
9891  bool modelPar_given_eaie=mod.given("eaie");
9892  modParamMap["eaie"] = &modelPar_eaie;
9893  AdmsSensFadType modelPar_eaic=mod.eaic;
9894  bool modelPar_given_eaic=mod.given("eaic");
9895  modParamMap["eaic"] = &modelPar_eaic;
9896  AdmsSensFadType modelPar_eais=mod.eais;
9897  bool modelPar_given_eais=mod.given("eais");
9898  modParamMap["eais"] = &modelPar_eais;
9899  AdmsSensFadType modelPar_eane=mod.eane;
9900  bool modelPar_given_eane=mod.given("eane");
9901  modParamMap["eane"] = &modelPar_eane;
9902  AdmsSensFadType modelPar_eanc=mod.eanc;
9903  bool modelPar_given_eanc=mod.given("eanc");
9904  modParamMap["eanc"] = &modelPar_eanc;
9905  AdmsSensFadType modelPar_eans=mod.eans;
9906  bool modelPar_given_eans=mod.given("eans");
9907  modParamMap["eans"] = &modelPar_eans;
9908  AdmsSensFadType modelPar_eap=mod.eap;
9909  bool modelPar_given_eap=mod.given("eap");
9910  modParamMap["eap"] = &modelPar_eap;
9911  AdmsSensFadType modelPar_dear=mod.dear;
9912  bool modelPar_given_dear=mod.given("dear");
9913  modParamMap["dear"] = &modelPar_dear;
9914  AdmsSensFadType modelPar_xis=mod.xis;
9915  bool modelPar_given_xis=mod.given("xis");
9916  modParamMap["xis"] = &modelPar_xis;
9917  AdmsSensFadType modelPar_xii=mod.xii;
9918  bool modelPar_given_xii=mod.given("xii");
9919  modParamMap["xii"] = &modelPar_xii;
9920  AdmsSensFadType modelPar_xin=mod.xin;
9921  bool modelPar_given_xin=mod.given("xin");
9922  modParamMap["xin"] = &modelPar_xin;
9923  AdmsSensFadType modelPar_xisr=mod.xisr;
9924  bool modelPar_given_xisr=mod.given("xisr");
9925  modParamMap["xisr"] = &modelPar_xisr;
9926  AdmsSensFadType modelPar_xikf=mod.xikf;
9927  bool modelPar_given_xikf=mod.given("xikf");
9928  modParamMap["xikf"] = &modelPar_xikf;
9929  AdmsSensFadType modelPar_tavc=mod.tavc;
9930  bool modelPar_given_tavc=mod.given("tavc");
9931  modParamMap["tavc"] = &modelPar_tavc;
9932  AdmsSensFadType modelPar_tavcx=mod.tavcx;
9933  bool modelPar_given_tavcx=mod.given("tavcx");
9934  modParamMap["tavcx"] = &modelPar_tavcx;
9935  AdmsSensFadType modelPar_tnf=mod.tnf;
9936  bool modelPar_given_tnf=mod.given("tnf");
9937  modParamMap["tnf"] = &modelPar_tnf;
9938  AdmsSensFadType modelPar_tcvef=mod.tcvef;
9939  bool modelPar_given_tcvef=mod.given("tcvef");
9940  modParamMap["tcvef"] = &modelPar_tcvef;
9941  AdmsSensFadType modelPar_tcver=mod.tcver;
9942  bool modelPar_given_tcver=mod.given("tcver");
9943  modParamMap["tcver"] = &modelPar_tcver;
9944  AdmsSensFadType modelPar_tcrth=mod.tcrth;
9945  bool modelPar_given_tcrth=mod.given("tcrth");
9946  modParamMap["tcrth"] = &modelPar_tcrth;
9947 
9948 
9949  // hidden reals
9950 
9951 
9952  // non-reals (including hiddens)
9953  int modelPar_type=mod.type;
9954  bool modelPar_given_type=mod.given("type");
9955  int modelPar_VBICtype=mod.VBICtype;
9956  int modelPar_qbm=mod.qbm;
9957  bool modelPar_given_qbm=mod.given("qbm");
9958 
9959 
9960  // Set the one parameter whose name was passed in to be the independent
9961  // variable for Sacado purposes. Since we stored variable pointers, this
9962  // makes sure that that ONE variable gets set right.
9963  // FIXME: make this check name for presence first! Segfault on invalid.
9964  modParamMap[name]->diff(0,1);
9965 
9966  //make local copies of all model vars
9967  //reals
9968 
9969 
9970  // non-reals
9971 
9972 
9973 
9974  // Now loop over all instances and do the deed
9975  int inst=0;
9976  for (std::vector<Instance*>::const_iterator in_it=mod.instanceContainer.begin(); in_it != mod.instanceContainer.end(); ++in_it,++inst)
9977  {
9978 
9979  Instance & in=*(*in_it);
9980  // initialize contributions to zero (automatically sets derivatives to zero)
9981  for (int i=0; i < 12+0 ; ++i)
9982  {
9983  staticContributions[i]=0;
9984  dynamicContributions[i]=0;
9985  }
9986 
9987 
9988 
9989  // Copy out all the instance parameters (doubles) into FAD types
9990  // reals
9991  AdmsSensFadType instancePar_m=in.m;
9992  bool instancePar_given_m=in.given("m");
9993  AdmsSensFadType instancePar_trise=in.trise;
9994  bool instancePar_given_trise=in.given("trise");
9995 
9996 
9997  // real hidden instance
9998 
9999 
10000  // Copy all the non-real instance params into vars of their appropriate type:
10001  int instancePar_sw_noise=in.sw_noise;
10002  bool instancePar_given_sw_noise=in.given("sw_noise");
10003  int instancePar_sw_et=in.sw_et;
10004  bool instancePar_given_sw_et=in.given("sw_et");
10005 
10006 
10007 
10008 
10009  // If there are any instance parameters that were not given, and have
10010  // corresponding model params, copy the model param into the instance.
10011  // This was already done by the instance constructor, but we do it again
10012  // because now we're propagating derivatives, and the user could be trying
10013  // to get sensitivity to the model parameter.
10014 
10015 
10016  //make local copies of all instance vars
10017  //reals
10018 
10019 
10020  //non-reals
10021 
10022 
10023 
10024  Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
10025 
10026  // extract solution variables and set as Fad independent variables.
10027  probeVars[in.admsProbeID_V_xf2_GND] = (*solVectorPtr)[in.li_xf2];
10028  probeVars[in.admsProbeID_V_xf1_GND] = (*solVectorPtr)[in.li_xf1];
10029  probeVars[in.admsProbeID_V_bp_cx] = (*solVectorPtr)[in.li_bp] - (*solVectorPtr)[in.li_cx];
10030  probeVars[in.admsProbeID_V_e_ei] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_ei];
10031  probeVars[in.admsProbeID_V_bx_bi] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bi];
10032  probeVars[in.admsProbeID_V_b_bx] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_bx];
10033  probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
10034  probeVars[in.admsProbeID_V_c_cx] = (*solVectorPtr)[in.li_c] - (*solVectorPtr)[in.li_cx];
10035  probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
10036  probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
10037  probeVars[in.admsProbeID_V_bx_bp] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bp];
10038  probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
10039  probeVars[in.admsProbeID_V_bx_cx] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_cx];
10040  probeVars[in.admsProbeID_V_bi_cx] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_cx];
10041  probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
10042  probeVars[in.admsProbeID_V_bx_ei] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_ei];
10043  probeVars[in.admsProbeID_V_bi_ei] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ei];
10044  probeVars[in.admsProbeID_Temp_dt_GND] = (*solVectorPtr)[in.li_dt];
10045 
10046  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
10047  probeVars[in.admsProbeID_V_bx_bp] *= modelPar_VBICtype;
10048  probeVars[in.admsProbeID_V_bx_cx] *= modelPar_VBICtype;
10049  probeVars[in.admsProbeID_V_bi_cx] *= modelPar_VBICtype;
10050  probeVars[in.admsProbeID_V_bi_ci] *= modelPar_VBICtype;
10051  probeVars[in.admsProbeID_V_bx_ei] *= modelPar_VBICtype;
10052  probeVars[in.admsProbeID_V_bi_ei] *= modelPar_VBICtype;
10053 
10054 
10055 
10056  // Now call the function that does the heavy lifting.
10057 
10058  evaluateModelEquations(
10059  probeVars,
10060  // probe constants
10061  in.admsProbeID_V_xf2_GND,
10062  in.admsProbeID_V_xf1_GND,
10063  in.admsProbeID_V_bp_cx,
10064  in.admsProbeID_V_e_ei,
10065  in.admsProbeID_V_bx_bi,
10066  in.admsProbeID_V_b_bx,
10067  in.admsProbeID_V_cx_ci,
10068  in.admsProbeID_V_c_cx,
10069  in.admsProbeID_V_b_c,
10070  in.admsProbeID_V_b_e,
10071  in.admsProbeID_V_bx_bp,
10072  in.admsProbeID_V_ci_ei,
10073  in.admsProbeID_V_bx_cx,
10074  in.admsProbeID_V_bi_cx,
10075  in.admsProbeID_V_bi_ci,
10076  in.admsProbeID_V_bx_ei,
10077  in.admsProbeID_V_bi_ei,
10078  in.admsProbeID_Temp_dt_GND,
10079 
10080  // node constants
10081  in.admsNodeID_c,
10082  in.admsNodeID_b,
10083  in.admsNodeID_e,
10084  in.admsNodeID_dt,
10085  in.admsNodeID_cx,
10086  in.admsNodeID_ci,
10087  in.admsNodeID_bx,
10088  in.admsNodeID_bi,
10089  in.admsNodeID_ei,
10090  in.admsNodeID_bp,
10091  in.admsNodeID_xf1,
10092  in.admsNodeID_xf2,
10093  // instance parameters
10094  // reals
10095  instancePar_m,
10096  instancePar_given_m,
10097  instancePar_trise,
10098  instancePar_given_trise,
10099  // non-reals(including hidden)
10100  instancePar_sw_noise,
10101  instancePar_given_sw_noise,
10102  instancePar_sw_et,
10103  instancePar_given_sw_et,
10104  // model parameters
10105  // reals
10106  modelPar_npn,
10107  modelPar_given_npn,
10108  modelPar_pnp,
10109  modelPar_given_pnp,
10110  modelPar_scale,
10111  modelPar_given_scale,
10112  modelPar_shrink,
10113  modelPar_given_shrink,
10114  modelPar_tmin,
10115  modelPar_given_tmin,
10116  modelPar_tmax,
10117  modelPar_given_tmax,
10118  modelPar_gmin,
10119  modelPar_given_gmin,
10120  modelPar_pnjmaxi,
10121  modelPar_given_pnjmaxi,
10122  modelPar_maxexp,
10123  modelPar_given_maxexp,
10124  modelPar_tnom,
10125  modelPar_given_tnom,
10126  modelPar_tminclip,
10127  modelPar_given_tminclip,
10128  modelPar_tmaxclip,
10129  modelPar_given_tmaxclip,
10130  modelPar_rcx,
10131  modelPar_given_rcx,
10132  modelPar_rci,
10133  modelPar_given_rci,
10134  modelPar_vo,
10135  modelPar_given_vo,
10136  modelPar_gamm,
10137  modelPar_given_gamm,
10138  modelPar_hrcf,
10139  modelPar_given_hrcf,
10140  modelPar_rbx,
10141  modelPar_given_rbx,
10142  modelPar_rbi,
10143  modelPar_given_rbi,
10144  modelPar_re,
10145  modelPar_given_re,
10146  modelPar_rs,
10147  modelPar_given_rs,
10148  modelPar_rbp,
10149  modelPar_given_rbp,
10150  modelPar_is,
10151  modelPar_given_is,
10152  modelPar_isrr,
10153  modelPar_given_isrr,
10154  modelPar_nf,
10155  modelPar_given_nf,
10156  modelPar_nr,
10157  modelPar_given_nr,
10158  modelPar_isp,
10159  modelPar_given_isp,
10160  modelPar_wsp,
10161  modelPar_given_wsp,
10162  modelPar_nfp,
10163  modelPar_given_nfp,
10164  modelPar_fc,
10165  modelPar_given_fc,
10166  modelPar_cbeo,
10167  modelPar_given_cbeo,
10168  modelPar_cje,
10169  modelPar_given_cje,
10170  modelPar_pe,
10171  modelPar_given_pe,
10172  modelPar_me,
10173  modelPar_given_me,
10174  modelPar_aje,
10175  modelPar_given_aje,
10176  modelPar_cbco,
10177  modelPar_given_cbco,
10178  modelPar_cjc,
10179  modelPar_given_cjc,
10180  modelPar_pc,
10181  modelPar_given_pc,
10182  modelPar_mc,
10183  modelPar_given_mc,
10184  modelPar_ajc,
10185  modelPar_given_ajc,
10186  modelPar_vrt,
10187  modelPar_given_vrt,
10188  modelPar_art,
10189  modelPar_given_art,
10190  modelPar_qco,
10191  modelPar_given_qco,
10192  modelPar_cjep,
10193  modelPar_given_cjep,
10194  modelPar_cjcp,
10195  modelPar_given_cjcp,
10196  modelPar_ps,
10197  modelPar_given_ps,
10198  modelPar_ms,
10199  modelPar_given_ms,
10200  modelPar_ajs,
10201  modelPar_given_ajs,
10202  modelPar_ccso,
10203  modelPar_given_ccso,
10204  modelPar_ibei,
10205  modelPar_given_ibei,
10206  modelPar_wbe,
10207  modelPar_given_wbe,
10208  modelPar_nei,
10209  modelPar_given_nei,
10210  modelPar_qnibeir,
10211  modelPar_given_qnibeir,
10212  modelPar_iben,
10213  modelPar_given_iben,
10214  modelPar_nen,
10215  modelPar_given_nen,
10216  modelPar_ibci,
10217  modelPar_given_ibci,
10218  modelPar_nci,
10219  modelPar_given_nci,
10220  modelPar_ibcn,
10221  modelPar_given_ibcn,
10222  modelPar_ncn,
10223  modelPar_given_ncn,
10224  modelPar_ibeip,
10225  modelPar_given_ibeip,
10226  modelPar_ibenp,
10227  modelPar_given_ibenp,
10228  modelPar_ibcip,
10229  modelPar_given_ibcip,
10230  modelPar_ncip,
10231  modelPar_given_ncip,
10232  modelPar_ibcnp,
10233  modelPar_given_ibcnp,
10234  modelPar_ncnp,
10235  modelPar_given_ncnp,
10236  modelPar_vef,
10237  modelPar_given_vef,
10238  modelPar_ver,
10239  modelPar_given_ver,
10240  modelPar_ikf,
10241  modelPar_given_ikf,
10242  modelPar_nkf,
10243  modelPar_given_nkf,
10244  modelPar_ikr,
10245  modelPar_given_ikr,
10246  modelPar_ikp,
10247  modelPar_given_ikp,
10248  modelPar_tf,
10249  modelPar_given_tf,
10250  modelPar_qtf,
10251  modelPar_given_qtf,
10252  modelPar_xtf,
10253  modelPar_given_xtf,
10254  modelPar_vtf,
10255  modelPar_given_vtf,
10256  modelPar_itf,
10257  modelPar_given_itf,
10258  modelPar_tr,
10259  modelPar_given_tr,
10260  modelPar_td,
10261  modelPar_given_td,
10262  modelPar_avc1,
10263  modelPar_given_avc1,
10264  modelPar_avc2,
10265  modelPar_given_avc2,
10266  modelPar_avcx1,
10267  modelPar_given_avcx1,
10268  modelPar_avcx2,
10269  modelPar_given_avcx2,
10270  modelPar_mcx,
10271  modelPar_given_mcx,
10272  modelPar_vbbe,
10273  modelPar_given_vbbe,
10274  modelPar_nbbe,
10275  modelPar_given_nbbe,
10276  modelPar_ibbe,
10277  modelPar_given_ibbe,
10278  modelPar_tvbbe1,
10279  modelPar_given_tvbbe1,
10280  modelPar_tvbbe2,
10281  modelPar_given_tvbbe2,
10282  modelPar_tnbbe,
10283  modelPar_given_tnbbe,
10284  modelPar_vpte,
10285  modelPar_given_vpte,
10286  modelPar_ibk0,
10287  modelPar_given_ibk0,
10288  modelPar_abk,
10289  modelPar_given_abk,
10290  modelPar_bbk,
10291  modelPar_given_bbk,
10292  modelPar_kfn,
10293  modelPar_given_kfn,
10294  modelPar_afn,
10295  modelPar_given_afn,
10296  modelPar_bfn,
10297  modelPar_given_bfn,
10298  modelPar_rth,
10299  modelPar_given_rth,
10300  modelPar_cth,
10301  modelPar_given_cth,
10302  modelPar_xre,
10303  modelPar_given_xre,
10304  modelPar_xrb,
10305  modelPar_given_xrb,
10306  modelPar_xrbi,
10307  modelPar_given_xrbi,
10308  modelPar_xrbx,
10309  modelPar_given_xrbx,
10310  modelPar_xrc,
10311  modelPar_given_xrc,
10312  modelPar_xrci,
10313  modelPar_given_xrci,
10314  modelPar_xrcx,
10315  modelPar_given_xrcx,
10316  modelPar_xrbp,
10317  modelPar_given_xrbp,
10318  modelPar_xrs,
10319  modelPar_given_xrs,
10320  modelPar_xvo,
10321  modelPar_given_xvo,
10322  modelPar_ea,
10323  modelPar_given_ea,
10324  modelPar_eaie,
10325  modelPar_given_eaie,
10326  modelPar_eaic,
10327  modelPar_given_eaic,
10328  modelPar_eais,
10329  modelPar_given_eais,
10330  modelPar_eane,
10331  modelPar_given_eane,
10332  modelPar_eanc,
10333  modelPar_given_eanc,
10334  modelPar_eans,
10335  modelPar_given_eans,
10336  modelPar_eap,
10337  modelPar_given_eap,
10338  modelPar_dear,
10339  modelPar_given_dear,
10340  modelPar_xis,
10341  modelPar_given_xis,
10342  modelPar_xii,
10343  modelPar_given_xii,
10344  modelPar_xin,
10345  modelPar_given_xin,
10346  modelPar_xisr,
10347  modelPar_given_xisr,
10348  modelPar_xikf,
10349  modelPar_given_xikf,
10350  modelPar_tavc,
10351  modelPar_given_tavc,
10352  modelPar_tavcx,
10353  modelPar_given_tavcx,
10354  modelPar_tnf,
10355  modelPar_given_tnf,
10356  modelPar_tcvef,
10357  modelPar_given_tcvef,
10358  modelPar_tcver,
10359  modelPar_given_tcver,
10360  modelPar_tcrth,
10361  modelPar_given_tcrth,
10362  // non-reals (including hidden)
10363  modelPar_type,
10364  modelPar_given_type,
10365  modelPar_VBICtype,
10366  modelPar_qbm,
10367  modelPar_given_qbm,
10368  in.admsTemperature,
10369  in.adms_vt_nom,
10370  in.getDeviceOptions().gmin,
10371  staticContributions,
10372  dynamicContributions,
10373  in);
10374 
10375 
10376  // We now have the F and Q vector stuff, populate the dependencies:
10377 
10378  dfdp[in.admsNodeID_c+inst*(12+0)] += staticContributions[in.admsNodeID_c].dx(0);
10379  dqdp[in.admsNodeID_c+inst*(12+0)] += dynamicContributions[in.admsNodeID_c].dx(0);
10380  Findices[in.admsNodeID_c+inst*(12+0)] = in.li_c;
10381  Qindices[in.admsNodeID_c+inst*(12+0)] = in.li_c;
10382  dfdp[in.admsNodeID_b+inst*(12+0)] += staticContributions[in.admsNodeID_b].dx(0);
10383  dqdp[in.admsNodeID_b+inst*(12+0)] += dynamicContributions[in.admsNodeID_b].dx(0);
10384  Findices[in.admsNodeID_b+inst*(12+0)] = in.li_b;
10385  Qindices[in.admsNodeID_b+inst*(12+0)] = in.li_b;
10386  dfdp[in.admsNodeID_e+inst*(12+0)] += staticContributions[in.admsNodeID_e].dx(0);
10387  dqdp[in.admsNodeID_e+inst*(12+0)] += dynamicContributions[in.admsNodeID_e].dx(0);
10388  Findices[in.admsNodeID_e+inst*(12+0)] = in.li_e;
10389  Qindices[in.admsNodeID_e+inst*(12+0)] = in.li_e;
10390  dfdp[in.admsNodeID_dt+inst*(12+0)] += staticContributions[in.admsNodeID_dt].dx(0);
10391  dqdp[in.admsNodeID_dt+inst*(12+0)] += dynamicContributions[in.admsNodeID_dt].dx(0);
10392  Findices[in.admsNodeID_dt+inst*(12+0)] = in.li_dt;
10393  Qindices[in.admsNodeID_dt+inst*(12+0)] = in.li_dt;
10394  dfdp[in.admsNodeID_cx+inst*(12+0)] += staticContributions[in.admsNodeID_cx].dx(0);
10395  dqdp[in.admsNodeID_cx+inst*(12+0)] += dynamicContributions[in.admsNodeID_cx].dx(0);
10396  Findices[in.admsNodeID_cx+inst*(12+0)] = in.li_cx;
10397  Qindices[in.admsNodeID_cx+inst*(12+0)] = in.li_cx;
10398  dfdp[in.admsNodeID_ci+inst*(12+0)] += staticContributions[in.admsNodeID_ci].dx(0);
10399  dqdp[in.admsNodeID_ci+inst*(12+0)] += dynamicContributions[in.admsNodeID_ci].dx(0);
10400  Findices[in.admsNodeID_ci+inst*(12+0)] = in.li_ci;
10401  Qindices[in.admsNodeID_ci+inst*(12+0)] = in.li_ci;
10402  dfdp[in.admsNodeID_bx+inst*(12+0)] += staticContributions[in.admsNodeID_bx].dx(0);
10403  dqdp[in.admsNodeID_bx+inst*(12+0)] += dynamicContributions[in.admsNodeID_bx].dx(0);
10404  Findices[in.admsNodeID_bx+inst*(12+0)] = in.li_bx;
10405  Qindices[in.admsNodeID_bx+inst*(12+0)] = in.li_bx;
10406  dfdp[in.admsNodeID_bi+inst*(12+0)] += staticContributions[in.admsNodeID_bi].dx(0);
10407  dqdp[in.admsNodeID_bi+inst*(12+0)] += dynamicContributions[in.admsNodeID_bi].dx(0);
10408  Findices[in.admsNodeID_bi+inst*(12+0)] = in.li_bi;
10409  Qindices[in.admsNodeID_bi+inst*(12+0)] = in.li_bi;
10410  dfdp[in.admsNodeID_ei+inst*(12+0)] += staticContributions[in.admsNodeID_ei].dx(0);
10411  dqdp[in.admsNodeID_ei+inst*(12+0)] += dynamicContributions[in.admsNodeID_ei].dx(0);
10412  Findices[in.admsNodeID_ei+inst*(12+0)] = in.li_ei;
10413  Qindices[in.admsNodeID_ei+inst*(12+0)] = in.li_ei;
10414  dfdp[in.admsNodeID_bp+inst*(12+0)] += staticContributions[in.admsNodeID_bp].dx(0);
10415  dqdp[in.admsNodeID_bp+inst*(12+0)] += dynamicContributions[in.admsNodeID_bp].dx(0);
10416  Findices[in.admsNodeID_bp+inst*(12+0)] = in.li_bp;
10417  Qindices[in.admsNodeID_bp+inst*(12+0)] = in.li_bp;
10418  dfdp[in.admsNodeID_xf1+inst*(12+0)] += staticContributions[in.admsNodeID_xf1].dx(0);
10419  dqdp[in.admsNodeID_xf1+inst*(12+0)] += dynamicContributions[in.admsNodeID_xf1].dx(0);
10420  Findices[in.admsNodeID_xf1+inst*(12+0)] = in.li_xf1;
10421  Qindices[in.admsNodeID_xf1+inst*(12+0)] = in.li_xf1;
10422  dfdp[in.admsNodeID_xf2+inst*(12+0)] += staticContributions[in.admsNodeID_xf2].dx(0);
10423  dqdp[in.admsNodeID_xf2+inst*(12+0)] += dynamicContributions[in.admsNodeID_xf2].dx(0);
10424  Findices[in.admsNodeID_xf2+inst*(12+0)] = in.li_xf2;
10425  Qindices[in.admsNodeID_xf2+inst*(12+0)] = in.li_xf2;
10426  }
10427 
10428 }
10429 
10430 #endif // Xyce_ADMS_SENSITIVITIES
10431 
10432 } // namespace ADMSvbic13
10433 } // namespace Device
10434 } // namespace Xyce
const InstanceName & getName() const
Instance(const Configuration &configuration, const InstanceBlock &instance_block, Model &model, const FactoryBlock &factory_block)
const SolverState & solverState_
Descriptor & addPar(const char *parName, T default_value, T U::*varPtr)
Adds the parameter description to the parameter map.
Definition: N_DEV_Pars.h:1429
#define CONSTCtoK
Definition: N_DEV_Const.h:52
double pnjlim_new(double vnew, double vold, double vt, double vcrit, int *icheck)
Linear::Vector * nextSolVectorPtr
bool given(const std::string &parameter_name) const
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)
ScalarT limRTH(ScalarT orig, ScalarT old)
#define AssertLIDs(cmp)
std::vector< AdmsFadType > dynamicContributions
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
virtual void registerJacLIDs(const JacobianStamp &jacLIDVec)
void registerJacLIDs(const JacobianStamp &jacLIDVec)
static void loadModelParameters(ParametricData< Model > &model_parameters)
std::vector< Param > params
Parameters from the line.
void setParams(const std::vector< Param > &params)
const std::string & getName() const
Sacado::Fad::SFad< double, 18 > AdmsFadType
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
const JacobianStamp & jacobianStamp() const
const DeviceOptions & getDeviceOptions() const
Parameter is not to be documented.
Definition: N_DEV_Pars.h:72
std::vector< AdmsFadType > probeVars
void registerStateLIDs(const LocalIdVector &staLIDVecRef)
const DeviceOptions & deviceOptions_
std::vector< std::vector< int > > JacobianStamp
Definition: N_DEV_fwd.h:196
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
Linear::Vector * nextStaVectorPtr
static Config< T > & addConfiguration()
Adds the device to the Xyce device configuration.
Linear::Matrix * dFdxMatrixPtr
static std::vector< int > jacMap
The Device class is an interface for device implementations.
Definition: N_DEV_Device.h:101
IdVector LocalIdVector
Definition: N_DEV_fwd.h:198
static std::vector< std::vector< int > > jacStamp
Class Configuration contains device configuration data.
static std::vector< std::vector< int > > jacMap2
bool processParams()
processParams
static T adms_vt(const T temp)
const SolverState & getSolverState() const
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
Sacado::Fad::SFad< double, 1 > AdmsSensFadType
Linear::Vector * currStaVectorPtr
Linear::Vector * daeFVectorPtr
bool updateTemperature(const double &temp=-999.0)
const std::string & getType() const
double gmin
minimum allowed conductance.
virtual std::ostream & printOutInstances(std::ostream &os) const
bool processInstanceParams()
processInstanceParams
void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)
ModelBlock represents a .MODEL line from the netlist.
Manages parameter binding for class C.
Definition: N_DEV_Pars.h:214
std::vector< Instance * > instanceContainer
InstanceBlock represent a device instance line from the netlist.
Model(const Configuration &configuration, const ModelBlock &model_block, const FactoryBlock &factory_block)
bool initJctFlag_
true if on the first newton step of the first dcop solve of the first .STEP iteration. BJT, JFET, Diode, MOSFET, SW, Extern
Util::Param temp
operating temperature of ckt.
std::vector< Param > params
std::vector< AdmsFadType > staticContributions
Linear::Matrix * dQdxMatrixPtr
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
void setModParams(const std::vector< Param > &params)