Xyce  6.1
N_DEV_ADMSHBT_X.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_ADMSHBT_X.C,v $
28 //
29 // Purpose :
30 //
31 // Special Notes : Generated from verilog file fbhhbt-2.1_nonoise_limited_inductors_typed.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:31:49
38 //
39 // Revision Information:
40 // ---------------------
41 //
42 // Revision Number: $Revision: 1.74 $
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_ADMSHBT_X.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 ADMSHBT_X {
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, &ADMSHBT_X::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("TEMP", static_cast<double>(25.0), &ADMSHBT_X::Instance::Temp)
98  .setUnit(U_DEGC)
99  .setDescription("Device operating temperature")
100 #ifdef Xyce_ADMS_SENSITIVITIES
101  .setAnalyticSensitivityAvailable(true)
102  .setSensitivityFunctor(&instSens)
103 #endif // Xyce_ADMS_SENSITIVITIES
104  ;
105  p.addPar("N", static_cast<int>(1), &ADMSHBT_X::Instance::N)
106  .setUnit(U_NONE)
107  .setDescription("Number of emitter fingers");
108  p.addPar("L", static_cast<double>(30*1.0e-6), &ADMSHBT_X::Instance::L)
109  .setUnit(U_METER)
110  .setDescription("Length of emitter fingers")
111 #ifdef Xyce_ADMS_SENSITIVITIES
112  .setAnalyticSensitivityAvailable(true)
113  .setSensitivityFunctor(&instSens)
114 #endif // Xyce_ADMS_SENSITIVITIES
115  ;
116  p.addPar("W", static_cast<double>(3*1.0e-6), &ADMSHBT_X::Instance::W)
117  .setUnit(U_METER)
118  .setDescription("Width of emitter fingers")
119 #ifdef Xyce_ADMS_SENSITIVITIES
120  .setAnalyticSensitivityAvailable(true)
121  .setSensitivityFunctor(&instSens)
122 #endif // Xyce_ADMS_SENSITIVITIES
123  ;
124 
125 
126 }
127 
129 {
130  // Set up each parameter directly, using the up-cased variable name
131  // as the tag.
132 
133  // This kludge is to force us always to have a model parameter
134  // that the device manager can set to the temperature, even if we have
135  // no "TEMP".
136  p.addPar("XYCEADMSMODTEMP", 0.0, &ADMSHBT_X::Model::admsModTemp)
137  .setExpressionAccess(NO_DOC)
138  .setUnit(U_DEGK)
139  .setCategory(CAT_TEMP)
140  .setDescription("Internal-use parameter for setting device model temperature");
141  p.addPar("MODE", static_cast<int>(1), &ADMSHBT_X::Model::Mode);
142  p.addPar("NOISE", static_cast<int>(1), &ADMSHBT_X::Model::Noise);
143  p.addPar("DEBUG", static_cast<int>(0), &ADMSHBT_X::Model::Debug);
144  p.addPar("DEBUGPLUS", static_cast<int>(0), &ADMSHBT_X::Model::DebugPlus);
145  p.addPar("TEMP", static_cast<double>(25.0), &ADMSHBT_X::Model::Temp)
146  .setUnit(U_DEGC)
147  .setDescription("Device operating temperature")
148 #ifdef Xyce_ADMS_SENSITIVITIES
149  .setAnalyticSensitivityAvailable(true)
150  .setSensitivityFunctor(&modSens)
151 #endif // Xyce_ADMS_SENSITIVITIES
152  ;
153  p.addPar("RTH", static_cast<double>(0.1), &ADMSHBT_X::Model::Rth)
154 #ifdef Xyce_ADMS_SENSITIVITIES
155  .setAnalyticSensitivityAvailable(true)
156  .setSensitivityFunctor(&modSens)
157 #endif // Xyce_ADMS_SENSITIVITIES
158  ;
159  p.addPar("CTH", static_cast<double>(700*1.0e-9), &ADMSHBT_X::Model::Cth)
160 #ifdef Xyce_ADMS_SENSITIVITIES
161  .setAnalyticSensitivityAvailable(true)
162  .setSensitivityFunctor(&modSens)
163 #endif // Xyce_ADMS_SENSITIVITIES
164  ;
165  p.addPar("N", static_cast<int>(1), &ADMSHBT_X::Model::N)
166  .setUnit(U_NONE)
167  .setDescription("Number of emitter fingers");
168  p.addPar("L", static_cast<double>(30*1.0e-6), &ADMSHBT_X::Model::L)
169  .setUnit(U_METER)
170  .setDescription("Length of emitter fingers")
171 #ifdef Xyce_ADMS_SENSITIVITIES
172  .setAnalyticSensitivityAvailable(true)
173  .setSensitivityFunctor(&modSens)
174 #endif // Xyce_ADMS_SENSITIVITIES
175  ;
176  p.addPar("W", static_cast<double>(3*1.0e-6), &ADMSHBT_X::Model::W)
177  .setUnit(U_METER)
178  .setDescription("Width of emitter fingers")
179 #ifdef Xyce_ADMS_SENSITIVITIES
180  .setAnalyticSensitivityAvailable(true)
181  .setSensitivityFunctor(&modSens)
182 #endif // Xyce_ADMS_SENSITIVITIES
183  ;
184  p.addPar("JSF", static_cast<double>(20e-24), &ADMSHBT_X::Model::Jsf)
185 #ifdef Xyce_ADMS_SENSITIVITIES
186  .setAnalyticSensitivityAvailable(true)
187  .setSensitivityFunctor(&modSens)
188 #endif // Xyce_ADMS_SENSITIVITIES
189  ;
190  p.addPar("NF", static_cast<double>(1.0), &ADMSHBT_X::Model::nf)
191 #ifdef Xyce_ADMS_SENSITIVITIES
192  .setAnalyticSensitivityAvailable(true)
193  .setSensitivityFunctor(&modSens)
194 #endif // Xyce_ADMS_SENSITIVITIES
195  ;
196  p.addPar("VG", static_cast<double>(1.3), &ADMSHBT_X::Model::Vg)
197 #ifdef Xyce_ADMS_SENSITIVITIES
198  .setAnalyticSensitivityAvailable(true)
199  .setSensitivityFunctor(&modSens)
200 #endif // Xyce_ADMS_SENSITIVITIES
201  ;
202  p.addPar("JSE", static_cast<double>(0.0), &ADMSHBT_X::Model::Jse)
203 #ifdef Xyce_ADMS_SENSITIVITIES
204  .setAnalyticSensitivityAvailable(true)
205  .setSensitivityFunctor(&modSens)
206 #endif // Xyce_ADMS_SENSITIVITIES
207  ;
208  p.addPar("NE", static_cast<double>(0.0), &ADMSHBT_X::Model::ne)
209 #ifdef Xyce_ADMS_SENSITIVITIES
210  .setAnalyticSensitivityAvailable(true)
211  .setSensitivityFunctor(&modSens)
212 #endif // Xyce_ADMS_SENSITIVITIES
213  ;
214  p.addPar("RBXX", static_cast<double>(1e6), &ADMSHBT_X::Model::Rbxx)
215 #ifdef Xyce_ADMS_SENSITIVITIES
216  .setAnalyticSensitivityAvailable(true)
217  .setSensitivityFunctor(&modSens)
218 #endif // Xyce_ADMS_SENSITIVITIES
219  ;
220  p.addPar("VGB", static_cast<double>(0.0), &ADMSHBT_X::Model::Vgb)
221 #ifdef Xyce_ADMS_SENSITIVITIES
222  .setAnalyticSensitivityAvailable(true)
223  .setSensitivityFunctor(&modSens)
224 #endif // Xyce_ADMS_SENSITIVITIES
225  ;
226  p.addPar("JSEE", static_cast<double>(0.0), &ADMSHBT_X::Model::Jsee)
227 #ifdef Xyce_ADMS_SENSITIVITIES
228  .setAnalyticSensitivityAvailable(true)
229  .setSensitivityFunctor(&modSens)
230 #endif // Xyce_ADMS_SENSITIVITIES
231  ;
232  p.addPar("NEE", static_cast<double>(0.0), &ADMSHBT_X::Model::nee)
233 #ifdef Xyce_ADMS_SENSITIVITIES
234  .setAnalyticSensitivityAvailable(true)
235  .setSensitivityFunctor(&modSens)
236 #endif // Xyce_ADMS_SENSITIVITIES
237  ;
238  p.addPar("RBBXX", static_cast<double>(1e6), &ADMSHBT_X::Model::Rbbxx)
239 #ifdef Xyce_ADMS_SENSITIVITIES
240  .setAnalyticSensitivityAvailable(true)
241  .setSensitivityFunctor(&modSens)
242 #endif // Xyce_ADMS_SENSITIVITIES
243  ;
244  p.addPar("VGBB", static_cast<double>(0.0), &ADMSHBT_X::Model::Vgbb)
245 #ifdef Xyce_ADMS_SENSITIVITIES
246  .setAnalyticSensitivityAvailable(true)
247  .setSensitivityFunctor(&modSens)
248 #endif // Xyce_ADMS_SENSITIVITIES
249  ;
250  p.addPar("JSR", static_cast<double>(20e-18), &ADMSHBT_X::Model::Jsr)
251 #ifdef Xyce_ADMS_SENSITIVITIES
252  .setAnalyticSensitivityAvailable(true)
253  .setSensitivityFunctor(&modSens)
254 #endif // Xyce_ADMS_SENSITIVITIES
255  ;
256  p.addPar("NR", static_cast<double>(1.0), &ADMSHBT_X::Model::nr)
257 #ifdef Xyce_ADMS_SENSITIVITIES
258  .setAnalyticSensitivityAvailable(true)
259  .setSensitivityFunctor(&modSens)
260 #endif // Xyce_ADMS_SENSITIVITIES
261  ;
262  p.addPar("VGR", static_cast<double>(0.0), &ADMSHBT_X::Model::Vgr)
263 #ifdef Xyce_ADMS_SENSITIVITIES
264  .setAnalyticSensitivityAvailable(true)
265  .setSensitivityFunctor(&modSens)
266 #endif // Xyce_ADMS_SENSITIVITIES
267  ;
268  p.addPar("XCJC", static_cast<double>(0.5), &ADMSHBT_X::Model::XCjc)
269 #ifdef Xyce_ADMS_SENSITIVITIES
270  .setAnalyticSensitivityAvailable(true)
271  .setSensitivityFunctor(&modSens)
272 #endif // Xyce_ADMS_SENSITIVITIES
273  ;
274  p.addPar("JSC", static_cast<double>(0.0), &ADMSHBT_X::Model::Jsc)
275 #ifdef Xyce_ADMS_SENSITIVITIES
276  .setAnalyticSensitivityAvailable(true)
277  .setSensitivityFunctor(&modSens)
278 #endif // Xyce_ADMS_SENSITIVITIES
279  ;
280  p.addPar("NC", static_cast<double>(0.0), &ADMSHBT_X::Model::nc)
281 #ifdef Xyce_ADMS_SENSITIVITIES
282  .setAnalyticSensitivityAvailable(true)
283  .setSensitivityFunctor(&modSens)
284 #endif // Xyce_ADMS_SENSITIVITIES
285  ;
286  p.addPar("RCXX", static_cast<double>(1e6), &ADMSHBT_X::Model::Rcxx)
287 #ifdef Xyce_ADMS_SENSITIVITIES
288  .setAnalyticSensitivityAvailable(true)
289  .setSensitivityFunctor(&modSens)
290 #endif // Xyce_ADMS_SENSITIVITIES
291  ;
292  p.addPar("VGC", static_cast<double>(0.0), &ADMSHBT_X::Model::Vgc)
293 #ifdef Xyce_ADMS_SENSITIVITIES
294  .setAnalyticSensitivityAvailable(true)
295  .setSensitivityFunctor(&modSens)
296 #endif // Xyce_ADMS_SENSITIVITIES
297  ;
298  p.addPar("BF", static_cast<double>(100.0), &ADMSHBT_X::Model::Bf)
299 #ifdef Xyce_ADMS_SENSITIVITIES
300  .setAnalyticSensitivityAvailable(true)
301  .setSensitivityFunctor(&modSens)
302 #endif // Xyce_ADMS_SENSITIVITIES
303  ;
304  p.addPar("KBETA", static_cast<double>(0.0), &ADMSHBT_X::Model::kBeta)
305 #ifdef Xyce_ADMS_SENSITIVITIES
306  .setAnalyticSensitivityAvailable(true)
307  .setSensitivityFunctor(&modSens)
308 #endif // Xyce_ADMS_SENSITIVITIES
309  ;
310  p.addPar("BR", static_cast<double>(1.0), &ADMSHBT_X::Model::Br)
311 #ifdef Xyce_ADMS_SENSITIVITIES
312  .setAnalyticSensitivityAvailable(true)
313  .setSensitivityFunctor(&modSens)
314 #endif // Xyce_ADMS_SENSITIVITIES
315  ;
316  p.addPar("VAF", static_cast<double>(0.0), &ADMSHBT_X::Model::VAF)
317 #ifdef Xyce_ADMS_SENSITIVITIES
318  .setAnalyticSensitivityAvailable(true)
319  .setSensitivityFunctor(&modSens)
320 #endif // Xyce_ADMS_SENSITIVITIES
321  ;
322  p.addPar("VAR", static_cast<double>(0.0), &ADMSHBT_X::Model::VAR)
323 #ifdef Xyce_ADMS_SENSITIVITIES
324  .setAnalyticSensitivityAvailable(true)
325  .setSensitivityFunctor(&modSens)
326 #endif // Xyce_ADMS_SENSITIVITIES
327  ;
328  p.addPar("IKF", static_cast<double>(0.0), &ADMSHBT_X::Model::IKF)
329 #ifdef Xyce_ADMS_SENSITIVITIES
330  .setAnalyticSensitivityAvailable(true)
331  .setSensitivityFunctor(&modSens)
332 #endif // Xyce_ADMS_SENSITIVITIES
333  ;
334  p.addPar("IKR", static_cast<double>(0.0), &ADMSHBT_X::Model::IKR)
335 #ifdef Xyce_ADMS_SENSITIVITIES
336  .setAnalyticSensitivityAvailable(true)
337  .setSensitivityFunctor(&modSens)
338 #endif // Xyce_ADMS_SENSITIVITIES
339  ;
340  p.addPar("MC", static_cast<double>(0.0), &ADMSHBT_X::Model::Mc)
341 #ifdef Xyce_ADMS_SENSITIVITIES
342  .setAnalyticSensitivityAvailable(true)
343  .setSensitivityFunctor(&modSens)
344 #endif // Xyce_ADMS_SENSITIVITIES
345  ;
346  p.addPar("BVCEO", static_cast<double>(0.0), &ADMSHBT_X::Model::BVceo)
347 #ifdef Xyce_ADMS_SENSITIVITIES
348  .setAnalyticSensitivityAvailable(true)
349  .setSensitivityFunctor(&modSens)
350 #endif // Xyce_ADMS_SENSITIVITIES
351  ;
352  p.addPar("KC", static_cast<double>(0.0), &ADMSHBT_X::Model::kc)
353 #ifdef Xyce_ADMS_SENSITIVITIES
354  .setAnalyticSensitivityAvailable(true)
355  .setSensitivityFunctor(&modSens)
356 #endif // Xyce_ADMS_SENSITIVITIES
357  ;
358  p.addPar("BVEBO", static_cast<double>(0.0), &ADMSHBT_X::Model::BVebo)
359 #ifdef Xyce_ADMS_SENSITIVITIES
360  .setAnalyticSensitivityAvailable(true)
361  .setSensitivityFunctor(&modSens)
362 #endif // Xyce_ADMS_SENSITIVITIES
363  ;
364  p.addPar("TR", static_cast<double>(1*1.0e-15), &ADMSHBT_X::Model::Tr)
365 #ifdef Xyce_ADMS_SENSITIVITIES
366  .setAnalyticSensitivityAvailable(true)
367  .setSensitivityFunctor(&modSens)
368 #endif // Xyce_ADMS_SENSITIVITIES
369  ;
370  p.addPar("TRX", static_cast<double>(1*1.0e-15), &ADMSHBT_X::Model::Trx)
371 #ifdef Xyce_ADMS_SENSITIVITIES
372  .setAnalyticSensitivityAvailable(true)
373  .setSensitivityFunctor(&modSens)
374 #endif // Xyce_ADMS_SENSITIVITIES
375  ;
376  p.addPar("TF", static_cast<double>(1*1.0e-12), &ADMSHBT_X::Model::Tf)
377 #ifdef Xyce_ADMS_SENSITIVITIES
378  .setAnalyticSensitivityAvailable(true)
379  .setSensitivityFunctor(&modSens)
380 #endif // Xyce_ADMS_SENSITIVITIES
381  ;
382  p.addPar("TFT", static_cast<double>(0.0), &ADMSHBT_X::Model::Tft)
383 #ifdef Xyce_ADMS_SENSITIVITIES
384  .setAnalyticSensitivityAvailable(true)
385  .setSensitivityFunctor(&modSens)
386 #endif // Xyce_ADMS_SENSITIVITIES
387  ;
388  p.addPar("THCS", static_cast<double>(0.0), &ADMSHBT_X::Model::Thcs)
389 #ifdef Xyce_ADMS_SENSITIVITIES
390  .setAnalyticSensitivityAvailable(true)
391  .setSensitivityFunctor(&modSens)
392 #endif // Xyce_ADMS_SENSITIVITIES
393  ;
394  p.addPar("AHC", static_cast<double>(0.0), &ADMSHBT_X::Model::Ahc)
395 #ifdef Xyce_ADMS_SENSITIVITIES
396  .setAnalyticSensitivityAvailable(true)
397  .setSensitivityFunctor(&modSens)
398 #endif // Xyce_ADMS_SENSITIVITIES
399  ;
400  p.addPar("CJE", static_cast<double>(1*1.0e-15), &ADMSHBT_X::Model::Cje)
401 #ifdef Xyce_ADMS_SENSITIVITIES
402  .setAnalyticSensitivityAvailable(true)
403  .setSensitivityFunctor(&modSens)
404 #endif // Xyce_ADMS_SENSITIVITIES
405  ;
406  p.addPar("MJE", static_cast<double>(0.5), &ADMSHBT_X::Model::mje)
407 #ifdef Xyce_ADMS_SENSITIVITIES
408  .setAnalyticSensitivityAvailable(true)
409  .setSensitivityFunctor(&modSens)
410 #endif // Xyce_ADMS_SENSITIVITIES
411  ;
412  p.addPar("VJE", static_cast<double>(1.3), &ADMSHBT_X::Model::Vje)
413 #ifdef Xyce_ADMS_SENSITIVITIES
414  .setAnalyticSensitivityAvailable(true)
415  .setSensitivityFunctor(&modSens)
416 #endif // Xyce_ADMS_SENSITIVITIES
417  ;
418  p.addPar("CJC", static_cast<double>(1*1.0e-15), &ADMSHBT_X::Model::Cjc)
419 #ifdef Xyce_ADMS_SENSITIVITIES
420  .setAnalyticSensitivityAvailable(true)
421  .setSensitivityFunctor(&modSens)
422 #endif // Xyce_ADMS_SENSITIVITIES
423  ;
424  p.addPar("MJC", static_cast<double>(0.5), &ADMSHBT_X::Model::mjc)
425 #ifdef Xyce_ADMS_SENSITIVITIES
426  .setAnalyticSensitivityAvailable(true)
427  .setSensitivityFunctor(&modSens)
428 #endif // Xyce_ADMS_SENSITIVITIES
429  ;
430  p.addPar("VJC", static_cast<double>(1.3), &ADMSHBT_X::Model::Vjc)
431 #ifdef Xyce_ADMS_SENSITIVITIES
432  .setAnalyticSensitivityAvailable(true)
433  .setSensitivityFunctor(&modSens)
434 #endif // Xyce_ADMS_SENSITIVITIES
435  ;
436  p.addPar("KJC", static_cast<double>(1.0), &ADMSHBT_X::Model::kjc)
437 #ifdef Xyce_ADMS_SENSITIVITIES
438  .setAnalyticSensitivityAvailable(true)
439  .setSensitivityFunctor(&modSens)
440 #endif // Xyce_ADMS_SENSITIVITIES
441  ;
442  p.addPar("CMIN", static_cast<double>(0.1*1.0e-15), &ADMSHBT_X::Model::Cmin)
443 #ifdef Xyce_ADMS_SENSITIVITIES
444  .setAnalyticSensitivityAvailable(true)
445  .setSensitivityFunctor(&modSens)
446 #endif // Xyce_ADMS_SENSITIVITIES
447  ;
448  p.addPar("J0", static_cast<double>(1e-3), &ADMSHBT_X::Model::J0)
449 #ifdef Xyce_ADMS_SENSITIVITIES
450  .setAnalyticSensitivityAvailable(true)
451  .setSensitivityFunctor(&modSens)
452 #endif // Xyce_ADMS_SENSITIVITIES
453  ;
454  p.addPar("XJ0", static_cast<double>(1.0), &ADMSHBT_X::Model::XJ0)
455 #ifdef Xyce_ADMS_SENSITIVITIES
456  .setAnalyticSensitivityAvailable(true)
457  .setSensitivityFunctor(&modSens)
458 #endif // Xyce_ADMS_SENSITIVITIES
459  ;
460  p.addPar("RCI0", static_cast<double>(1e-3), &ADMSHBT_X::Model::Rci0)
461 #ifdef Xyce_ADMS_SENSITIVITIES
462  .setAnalyticSensitivityAvailable(true)
463  .setSensitivityFunctor(&modSens)
464 #endif // Xyce_ADMS_SENSITIVITIES
465  ;
466  p.addPar("JK", static_cast<double>(4e-4), &ADMSHBT_X::Model::Jk)
467 #ifdef Xyce_ADMS_SENSITIVITIES
468  .setAnalyticSensitivityAvailable(true)
469  .setSensitivityFunctor(&modSens)
470 #endif // Xyce_ADMS_SENSITIVITIES
471  ;
472  p.addPar("RJK", static_cast<double>(1e-3), &ADMSHBT_X::Model::RJk)
473 #ifdef Xyce_ADMS_SENSITIVITIES
474  .setAnalyticSensitivityAvailable(true)
475  .setSensitivityFunctor(&modSens)
476 #endif // Xyce_ADMS_SENSITIVITIES
477  ;
478  p.addPar("VCES", static_cast<double>(1e-3), &ADMSHBT_X::Model::Vces)
479 #ifdef Xyce_ADMS_SENSITIVITIES
480  .setAnalyticSensitivityAvailable(true)
481  .setSensitivityFunctor(&modSens)
482 #endif // Xyce_ADMS_SENSITIVITIES
483  ;
484  p.addPar("RC", static_cast<double>(1.0), &ADMSHBT_X::Model::Rc)
485 #ifdef Xyce_ADMS_SENSITIVITIES
486  .setAnalyticSensitivityAvailable(true)
487  .setSensitivityFunctor(&modSens)
488 #endif // Xyce_ADMS_SENSITIVITIES
489  ;
490  p.addPar("RE", static_cast<double>(1.0), &ADMSHBT_X::Model::Re)
491 #ifdef Xyce_ADMS_SENSITIVITIES
492  .setAnalyticSensitivityAvailable(true)
493  .setSensitivityFunctor(&modSens)
494 #endif // Xyce_ADMS_SENSITIVITIES
495  ;
496  p.addPar("RB", static_cast<double>(1.0), &ADMSHBT_X::Model::Rb)
497 #ifdef Xyce_ADMS_SENSITIVITIES
498  .setAnalyticSensitivityAvailable(true)
499  .setSensitivityFunctor(&modSens)
500 #endif // Xyce_ADMS_SENSITIVITIES
501  ;
502  p.addPar("RB2", static_cast<double>(1.0), &ADMSHBT_X::Model::Rb2)
503 #ifdef Xyce_ADMS_SENSITIVITIES
504  .setAnalyticSensitivityAvailable(true)
505  .setSensitivityFunctor(&modSens)
506 #endif // Xyce_ADMS_SENSITIVITIES
507  ;
508  p.addPar("LC", static_cast<double>(0.0), &ADMSHBT_X::Model::Lc)
509 #ifdef Xyce_ADMS_SENSITIVITIES
510  .setAnalyticSensitivityAvailable(true)
511  .setSensitivityFunctor(&modSens)
512 #endif // Xyce_ADMS_SENSITIVITIES
513  ;
514  p.addPar("LE", static_cast<double>(0.0), &ADMSHBT_X::Model::Le)
515 #ifdef Xyce_ADMS_SENSITIVITIES
516  .setAnalyticSensitivityAvailable(true)
517  .setSensitivityFunctor(&modSens)
518 #endif // Xyce_ADMS_SENSITIVITIES
519  ;
520  p.addPar("LB", static_cast<double>(0.0), &ADMSHBT_X::Model::Lb)
521 #ifdef Xyce_ADMS_SENSITIVITIES
522  .setAnalyticSensitivityAvailable(true)
523  .setSensitivityFunctor(&modSens)
524 #endif // Xyce_ADMS_SENSITIVITIES
525  ;
526  p.addPar("CQ", static_cast<double>(0.0), &ADMSHBT_X::Model::Cq)
527 #ifdef Xyce_ADMS_SENSITIVITIES
528  .setAnalyticSensitivityAvailable(true)
529  .setSensitivityFunctor(&modSens)
530 #endif // Xyce_ADMS_SENSITIVITIES
531  ;
532  p.addPar("CPB", static_cast<double>(0.0), &ADMSHBT_X::Model::Cpb)
533 #ifdef Xyce_ADMS_SENSITIVITIES
534  .setAnalyticSensitivityAvailable(true)
535  .setSensitivityFunctor(&modSens)
536 #endif // Xyce_ADMS_SENSITIVITIES
537  ;
538  p.addPar("CPC", static_cast<double>(0.0), &ADMSHBT_X::Model::Cpc)
539 #ifdef Xyce_ADMS_SENSITIVITIES
540  .setAnalyticSensitivityAvailable(true)
541  .setSensitivityFunctor(&modSens)
542 #endif // Xyce_ADMS_SENSITIVITIES
543  ;
544  p.addPar("TNOM", static_cast<double>(20.0), &ADMSHBT_X::Model::Tnom)
545 #ifdef Xyce_ADMS_SENSITIVITIES
546  .setAnalyticSensitivityAvailable(true)
547  .setSensitivityFunctor(&modSens)
548 #endif // Xyce_ADMS_SENSITIVITIES
549  ;
550  //Hidden parameter dtype
551 
552 }
553 
554 //-----------------------------------------------------------------------------
555 // Function : Instance::processParams
556 // Purpose :
557 // Special Notes :
558 // Scope : public
559 // Creator : admsXml
560 // Creation Date :
561 //-----------------------------------------------------------------------------
563 {
564  // set any non-constant parameter defaults
565 
566  // copy any model variables that have associated instance variables, but
567  // are only given in the model card:
568  if (!(given("Temp")))
569  {
570  Temp = model_.Temp;
571  }
572  if (!(given("N")))
573  {
574  N = model_.N;
575  }
576  if (!(given("L")))
577  {
578  L = model_.L;
579  }
580  if (!(given("W")))
581  {
582  W = model_.W;
583  }
584 
585 
586 
587  // Set any parameters that were not given and whose defaults depend on other
588  // parameters:
589 
590 
591  // Now we need to check that any parameters are within their ranges as
592  // specified in the verilog:
593 
594  // Parameter Temp : [ (-273.15), (+inf) [
595  if ( (!((Temp >=(-273.15)))) )
596  {
597  UserError0(*this) << "ADMSHBT_X: Parameter Temp value " << Temp << " out of range [ (-273.15), (+inf) [";
598  }
599 
600  // Parameter N : ] 0, (+inf) [
601  if ( (!((N >0))) )
602  {
603  UserError0(*this) << "ADMSHBT_X: Parameter N value " << N << " out of range ] 0, (+inf) [";
604  }
605 
606  // Parameter L : ] 0.0, (+inf) [
607  if ( (!((L >0.0))) )
608  {
609  UserError0(*this) << "ADMSHBT_X: Parameter L value " << L << " out of range ] 0.0, (+inf) [";
610  }
611 
612  // Parameter W : ] 0.0, (+inf) [
613  if ( (!((W >0.0))) )
614  {
615  UserError0(*this) << "ADMSHBT_X: Parameter W value " << W << " out of range ] 0.0, (+inf) [";
616  }
617 
618 
619  // this seems a little stupid, but verilog models that use $temperature
620  // don't also use a defined parameter "Temp", and count on $temperature
621  // to be the one the simulator wants:
622 
624 
625  // and of course, this routine is where we should put the initial_instance
626  // stuff
627 
628 
629  return true;
630 }
631 
632 //-----------------------------------------------------------------------------
633 // Function : Instance::Instance
634 // Purpose : "instance block" constructor
635 // Special Notes :
636 // Scope : public
637 // Creator : admsXml
638 // Creation Date :
639 //-----------------------------------------------------------------------------
640 
642  const Configuration & configuration,
643  const InstanceBlock & instance_block,
644  Model & model,
645  const FactoryBlock & factory_block)
646  : DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
647  model_(model),
648  Temp(25.0),
649  N(1),
650  L(30*1.0e-6),
651  W(3*1.0e-6),
652  li_c(-1),
653  li_b(-1),
654  li_e(-1),
655  li_t(-1),
656  li_ei(-1),
657  li_bi(-1),
658  li_bii(-1),
659  li_ci(-1),
660  li_ti(-1),
661  li_ex(-1),
662  li_exx(-1),
663  li_cx(-1),
664  f_bi_Equ_ti_Node_Ptr(0),
665  f_ci_Equ_ti_Node_Ptr(0),
666  f_bi_Equ_bi_Node_Ptr(0),
667  f_bi_Equ_ci_Node_Ptr(0),
668  f_ci_Equ_bi_Node_Ptr(0),
669  f_ci_Equ_ci_Node_Ptr(0),
670  f_bii_Equ_ti_Node_Ptr(0),
671  f_bii_Equ_bii_Node_Ptr(0),
672  f_bii_Equ_ci_Node_Ptr(0),
673  f_ci_Equ_bii_Node_Ptr(0),
674  f_bii_Equ_ei_Node_Ptr(0),
675  f_ci_Equ_ei_Node_Ptr(0),
676  f_ei_Equ_bii_Node_Ptr(0),
677  f_ei_Equ_ci_Node_Ptr(0),
678  f_ei_Equ_ti_Node_Ptr(0),
679  f_ei_Equ_ei_Node_Ptr(0),
680  f_ex_Equ_ti_Node_Ptr(0),
681  f_ex_Equ_ex_Node_Ptr(0),
682  f_ex_Equ_ei_Node_Ptr(0),
683  f_ei_Equ_ex_Node_Ptr(0),
684  f_exx_Equ_ti_Node_Ptr(0),
685  f_exx_Equ_exx_Node_Ptr(0),
686  f_exx_Equ_ei_Node_Ptr(0),
687  f_ei_Equ_exx_Node_Ptr(0),
688  f_cx_Equ_ti_Node_Ptr(0),
689  f_cx_Equ_cx_Node_Ptr(0),
690  f_cx_Equ_ci_Node_Ptr(0),
691  f_ci_Equ_cx_Node_Ptr(0),
692  f_bii_Equ_bi_Node_Ptr(0),
693  f_bi_Equ_bii_Node_Ptr(0),
694  f_ex_Equ_bii_Node_Ptr(0),
695  f_bii_Equ_ex_Node_Ptr(0),
696  f_exx_Equ_bii_Node_Ptr(0),
697  f_bii_Equ_exx_Node_Ptr(0),
698  f_cx_Equ_bii_Node_Ptr(0),
699  f_bii_Equ_cx_Node_Ptr(0),
700  f_b_Equ_b_Node_Ptr(0),
701  f_c_Equ_c_Node_Ptr(0),
702  f_b_Equ_c_Node_Ptr(0),
703  f_c_Equ_b_Node_Ptr(0),
704  f_ti_Equ_bi_Node_Ptr(0),
705  f_ti_Equ_ci_Node_Ptr(0),
706  f_ti_Equ_ei_Node_Ptr(0),
707  f_ti_Equ_bii_Node_Ptr(0),
708  f_ti_Equ_ti_Node_Ptr(0),
709  f_t_Equ_t_Node_Ptr(0),
710  f_t_Equ_ti_Node_Ptr(0),
711  f_ti_Equ_t_Node_Ptr(0),
712  f_c_Equ_BRA_c_ci_Var_Ptr(0),
713  f_b_Equ_BRA_b_bi_Var_Ptr(0),
714  f_e_Equ_BRA_e_ei_Var_Ptr(0),
715  f_ei_Equ_BRA_e_ei_Var_Ptr(0),
716  f_bi_Equ_BRA_b_bi_Var_Ptr(0),
717  f_ci_Equ_BRA_c_ci_Var_Ptr(0),
718  f_BRA_b_bi_Equ_b_Node_Ptr(0),
719  f_BRA_b_bi_Equ_bi_Node_Ptr(0),
720  f_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr(0),
721  f_BRA_e_ei_Equ_e_Node_Ptr(0),
722  f_BRA_e_ei_Equ_ei_Node_Ptr(0),
723  f_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr(0),
724  f_BRA_c_ci_Equ_c_Node_Ptr(0),
725  f_BRA_c_ci_Equ_ci_Node_Ptr(0),
726  f_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr(0),
727  q_bi_Equ_ti_Node_Ptr(0),
728  q_ci_Equ_ti_Node_Ptr(0),
729  q_bi_Equ_bi_Node_Ptr(0),
730  q_bi_Equ_ci_Node_Ptr(0),
731  q_ci_Equ_bi_Node_Ptr(0),
732  q_ci_Equ_ci_Node_Ptr(0),
733  q_bii_Equ_ti_Node_Ptr(0),
734  q_bii_Equ_bii_Node_Ptr(0),
735  q_bii_Equ_ci_Node_Ptr(0),
736  q_ci_Equ_bii_Node_Ptr(0),
737  q_bii_Equ_ei_Node_Ptr(0),
738  q_ci_Equ_ei_Node_Ptr(0),
739  q_ei_Equ_bii_Node_Ptr(0),
740  q_ei_Equ_ci_Node_Ptr(0),
741  q_ei_Equ_ti_Node_Ptr(0),
742  q_ei_Equ_ei_Node_Ptr(0),
743  q_ex_Equ_ti_Node_Ptr(0),
744  q_ex_Equ_ex_Node_Ptr(0),
745  q_ex_Equ_ei_Node_Ptr(0),
746  q_ei_Equ_ex_Node_Ptr(0),
747  q_exx_Equ_ti_Node_Ptr(0),
748  q_exx_Equ_exx_Node_Ptr(0),
749  q_exx_Equ_ei_Node_Ptr(0),
750  q_ei_Equ_exx_Node_Ptr(0),
751  q_cx_Equ_ti_Node_Ptr(0),
752  q_cx_Equ_cx_Node_Ptr(0),
753  q_cx_Equ_ci_Node_Ptr(0),
754  q_ci_Equ_cx_Node_Ptr(0),
755  q_bii_Equ_bi_Node_Ptr(0),
756  q_bi_Equ_bii_Node_Ptr(0),
757  q_ex_Equ_bii_Node_Ptr(0),
758  q_bii_Equ_ex_Node_Ptr(0),
759  q_exx_Equ_bii_Node_Ptr(0),
760  q_bii_Equ_exx_Node_Ptr(0),
761  q_cx_Equ_bii_Node_Ptr(0),
762  q_bii_Equ_cx_Node_Ptr(0),
763  q_b_Equ_b_Node_Ptr(0),
764  q_c_Equ_c_Node_Ptr(0),
765  q_b_Equ_c_Node_Ptr(0),
766  q_c_Equ_b_Node_Ptr(0),
767  q_ti_Equ_bi_Node_Ptr(0),
768  q_ti_Equ_ci_Node_Ptr(0),
769  q_ti_Equ_ei_Node_Ptr(0),
770  q_ti_Equ_bii_Node_Ptr(0),
771  q_ti_Equ_ti_Node_Ptr(0),
772  q_t_Equ_t_Node_Ptr(0),
773  q_t_Equ_ti_Node_Ptr(0),
774  q_ti_Equ_t_Node_Ptr(0),
775  q_c_Equ_BRA_c_ci_Var_Ptr(0),
776  q_b_Equ_BRA_b_bi_Var_Ptr(0),
777  q_e_Equ_BRA_e_ei_Var_Ptr(0),
778  q_ei_Equ_BRA_e_ei_Var_Ptr(0),
779  q_bi_Equ_BRA_b_bi_Var_Ptr(0),
780  q_ci_Equ_BRA_c_ci_Var_Ptr(0),
781  q_BRA_b_bi_Equ_b_Node_Ptr(0),
782  q_BRA_b_bi_Equ_bi_Node_Ptr(0),
783  q_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr(0),
784  q_BRA_e_ei_Equ_e_Node_Ptr(0),
785  q_BRA_e_ei_Equ_ei_Node_Ptr(0),
786  q_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr(0),
787  q_BRA_c_ci_Equ_c_Node_Ptr(0),
788  q_BRA_c_ci_Equ_ci_Node_Ptr(0),
789  q_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr(0),
790  admsTemperature(getDeviceOptions().temp.getImmutableValue<double>())
791 
792 {
793  numIntVars = 8 + 3;
794  numExtVars = 4;
795 
796 
797  // Right now, we only have state for limited probes...
798  numStateVars = 3;
799 
800 
801  // Set up jacobian stamp:
802 
803  if (jacStamp.empty())
804  {
805  jacStamp.resize(12);
806  jacStamp[admsNodeID_c].resize(3);
809  // Extra columns for dependence on branches
810  {
811  int tempOffset=0;
812  jacStamp[admsNodeID_c][2+(tempOffset++)] = admsBRA_ID_c_ci;
813  }
814 
815  jacStamp[admsNodeID_b].resize(3);
818  // Extra columns for dependence on branches
819  {
820  int tempOffset=0;
821  jacStamp[admsNodeID_b][2+(tempOffset++)] = admsBRA_ID_b_bi;
822  }
823 
824  jacStamp[admsNodeID_e].resize(1);
825  // Extra columns for dependence on branches
826  {
827  int tempOffset=0;
828  jacStamp[admsNodeID_e][0+(tempOffset++)] = admsBRA_ID_e_ei;
829  }
830 
831  jacStamp[admsNodeID_t].resize(2);
834  jacStamp[admsNodeID_ei].resize(7);
841  // Extra columns for dependence on branches
842  {
843  int tempOffset=0;
844  jacStamp[admsNodeID_ei][6+(tempOffset++)] = admsBRA_ID_e_ei;
845  }
846 
847  jacStamp[admsNodeID_bi].resize(5);
852  // Extra columns for dependence on branches
853  {
854  int tempOffset=0;
855  jacStamp[admsNodeID_bi][4+(tempOffset++)] = admsBRA_ID_b_bi;
856  }
857 
858  jacStamp[admsNodeID_bii].resize(8);
867  jacStamp[admsNodeID_ci].resize(7);
874  // Extra columns for dependence on branches
875  {
876  int tempOffset=0;
877  jacStamp[admsNodeID_ci][6+(tempOffset++)] = admsBRA_ID_c_ci;
878  }
879 
880  jacStamp[admsNodeID_ti].resize(6);
887  jacStamp[admsNodeID_ex].resize(4);
892  jacStamp[admsNodeID_exx].resize(4);
897  jacStamp[admsNodeID_cx].resize(4);
902  // Jacobian rows for branch equations
903 
904  {
905  int jacsize=jacStamp.size();
906  jacStamp.resize(jacsize+1);
907  jacStamp[admsBRA_ID_b_bi].resize(3);
908  int tempCol = 0;
909  jacStamp[admsBRA_ID_b_bi][tempCol++] = admsNodeID_b; // Branch eqn b,bi - node b
910  jacStamp[admsBRA_ID_b_bi][tempCol++] = admsNodeID_bi; // Branch eqn b,bi - node bi
911  jacStamp[admsBRA_ID_b_bi][tempCol++] = admsBRA_ID_b_bi; // Branch eqn b,bi - branch var b,bi
912  }
913  {
914  int jacsize=jacStamp.size();
915  jacStamp.resize(jacsize+1);
916  jacStamp[admsBRA_ID_e_ei].resize(3);
917  int tempCol = 0;
918  jacStamp[admsBRA_ID_e_ei][tempCol++] = admsNodeID_e; // Branch eqn e,ei - node e
919  jacStamp[admsBRA_ID_e_ei][tempCol++] = admsNodeID_ei; // Branch eqn e,ei - node ei
920  jacStamp[admsBRA_ID_e_ei][tempCol++] = admsBRA_ID_e_ei; // Branch eqn e,ei - branch var e,ei
921  }
922  {
923  int jacsize=jacStamp.size();
924  jacStamp.resize(jacsize+1);
925  jacStamp[admsBRA_ID_c_ci].resize(3);
926  int tempCol = 0;
927  jacStamp[admsBRA_ID_c_ci][tempCol++] = admsNodeID_c; // Branch eqn c,ci - node c
928  jacStamp[admsBRA_ID_c_ci][tempCol++] = admsNodeID_ci; // Branch eqn c,ci - node ci
929  jacStamp[admsBRA_ID_c_ci][tempCol++] = admsBRA_ID_c_ci; // Branch eqn c,ci - branch var c,ci
930  }
931 
932  // This is really not strictly necessary when not mapping away nodes,
933  // but makes life easier when we get to registerJacLIDs. This block
934  // simply makes a map that leaves everything in place. Later, when we
935  // start making nodes go away, we will need to modify this.
936 
937  int mapSize = jacStamp.size();
938  jacMap.clear();
939  jacMap2.clear();
940  jacMap.resize(mapSize);
941  jacMap2.resize(mapSize);
942  for (int i=0;i<mapSize;++i)
943  {
944  int rowSize=jacStamp[i].size();
945  jacMap[i]=i;
946  jacMap2[i].resize(rowSize);
947  for (int j=0;j<rowSize;++j)
948  {
949  jacMap2[i][j] = j;
950  }
951  }
952 
953  }
954 
955 
957  setParams(instance_block.params);
958 
959  // Real bogosity here...
960  if (!given("XYCEADMSINSTTEMP"))
961  admsInstTemp=getDeviceOptions().temp.getImmutableValue<double>();
962 
963  // Fix the TEMP parameter that has "helpfully" been converted to Kelvin
964  // by the DeviceEntity class
965 
966  if (given("TEMP"))
967  Temp -= CONSTCtoK;
968 
969  //calculate any parameters specified as expressions
971 
972  // calculate dependent (i.e. computed params) and check for errors.
973  processParams();
974 }
975 
976 //-----------------------------------------------------------------------------
977 // Function : Instance::~Instance
978 // Purpose : destructor
979 // Special Notes :
980 // Scope : public
981 // Creator : admsXml
982 // Creation Date :
983 //-----------------------------------------------------------------------------
985 {
986 }
987 
988 //-----------------------------------------------------------------------------
989 // Function : Instance::registerLIDs
990 // Purpose : function for registering, and setting up, local ID's.
991 // Special Notes :
992 // Scope : public
993 // Creator : admsXml
994 // Creation Date :
995 //-----------------------------------------------------------------------------
996 void Instance::registerLIDs( const LocalIdVector & intLIDVecRef,
997  const LocalIdVector & extLIDVecRef)
998 {
999  AssertLIDs(intLIDVecRef.size() == numIntVars);
1000  AssertLIDs(extLIDVecRef.size() == numExtVars);
1001 
1002  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1003  {
1004  Xyce::dout() << std::endl << section_divider << std::endl
1005  << "In ADMSHBT_X::Instance::register LIDs\n\n"
1006  << "name = " << getName() << std::endl
1007  << "number of internal variables: " << numIntVars << std::endl
1008  << "number of external variables: " << numExtVars << std::endl;
1009  }
1010 
1011  // copy over the global ID lists.
1012  intLIDVec = intLIDVecRef;
1013  extLIDVec = extLIDVecRef;
1014 
1015  // Now use these lists to obtain the indices into the linear algebra
1016  // entities. This assumes an order.
1017  int i=0;
1018  li_c = extLIDVecRef[i++];
1019  li_b = extLIDVecRef[i++];
1020  li_e = extLIDVecRef[i++];
1021  li_t = extLIDVecRef[i++];
1022 
1023 
1024  i=0;
1025  li_ei = intLIDVecRef[i++];
1026  li_bi = intLIDVecRef[i++];
1027  li_bii = intLIDVecRef[i++];
1028  li_ci = intLIDVecRef[i++];
1029  li_ti = intLIDVecRef[i++];
1030  li_ex = intLIDVecRef[i++];
1031  li_exx = intLIDVecRef[i++];
1032  li_cx = intLIDVecRef[i++];
1033  li_BRA_b_bi = intLIDVecRef[i++];
1034  li_BRA_e_ei = intLIDVecRef[i++];
1035  li_BRA_c_ci = intLIDVecRef[i++];
1036 
1037 
1038  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1039  {
1040  Xyce::dout() << "\nSolution and RHS variables:\n";
1041  Xyce::dout() << "\nli_c = " << li_c << std::endl;
1042  Xyce::dout() << "\nli_b = " << li_b << std::endl;
1043  Xyce::dout() << "\nli_e = " << li_e << std::endl;
1044  Xyce::dout() << "\nli_t = " << li_t << std::endl;
1045  Xyce::dout() << "\nli_ei = " << li_ei << std::endl;
1046  Xyce::dout() << "\nli_bi = " << li_bi << std::endl;
1047  Xyce::dout() << "\nli_bii = " << li_bii << std::endl;
1048  Xyce::dout() << "\nli_ci = " << li_ci << std::endl;
1049  Xyce::dout() << "\nli_ti = " << li_ti << std::endl;
1050  Xyce::dout() << "\nli_ex = " << li_ex << std::endl;
1051  Xyce::dout() << "\nli_exx = " << li_exx << std::endl;
1052  Xyce::dout() << "\nli_cx = " << li_cx << std::endl;
1053  Xyce::dout() << "\nli_BRA_b_bi = " << li_BRA_b_bi << std::endl;
1054  Xyce::dout() << "\nli_BRA_e_ei = " << li_BRA_e_ei << std::endl;
1055  Xyce::dout() << "\nli_BRA_c_ci = " << li_BRA_c_ci << std::endl;
1056 
1057  Xyce::dout() << "\nEnd of ADMSHBT_X::Instance::register LIDs\n";
1058  Xyce::dout() << section_divider << std::endl;
1059  }
1060 }
1061 
1062 //-----------------------------------------------------------------------------
1063 // Function : Instance::loadNodeSymbols
1064 // Purpose :
1065 // Special Notes :
1066 // Scope : public
1067 // Creator : admsXml
1068 // Creation Date :
1069 //-----------------------------------------------------------------------------
1070 void Instance::loadNodeSymbols(Util::SymbolTable &symbol_table) const
1071 {
1072  addInternalNode(symbol_table, li_ei, getName(), "ei");
1073  addInternalNode(symbol_table, li_bi, getName(), "bi");
1074  addInternalNode(symbol_table, li_bii, getName(), "bii");
1075  addInternalNode(symbol_table, li_ci, getName(), "ci");
1076  addInternalNode(symbol_table, li_ti, getName(), "ti");
1077  addInternalNode(symbol_table, li_ex, getName(), "ex");
1078  addInternalNode(symbol_table, li_exx, getName(), "exx");
1079  addInternalNode(symbol_table, li_cx, getName(), "cx");
1080  addInternalNode(symbol_table, li_BRA_b_bi, getName(), "b_bi_branch");
1081  addInternalNode(symbol_table, li_BRA_e_ei, getName(), "e_ei_branch");
1082  addInternalNode(symbol_table, li_BRA_c_ci, getName(), "c_ci_branch");
1083 }
1084 
1085 //-----------------------------------------------------------------------------
1086 // Function : Instance::registerStateLIDs
1087 // Purpose :
1088 // Special Notes :
1089 // Scope : public
1090 // Creator : admsXml
1091 // Creation Date :
1092 //-----------------------------------------------------------------------------
1093 void Instance::registerStateLIDs( const LocalIdVector & staLIDVecRef)
1094 {
1095  AssertLIDs(staLIDVecRef.size() == numStateVars);
1096 
1097  int numSta = staLIDVecRef.size();
1098  if (numSta > 0)
1099  {
1100  int i=0;
1101  staLIDVec = staLIDVecRef;
1102 
1106  }
1107 }
1108 
1109 //-----------------------------------------------------------------------------
1110 // Function : Instance::jacobianStamp
1111 // Purpose :
1112 // Special Notes : In initial version, we won't support mapping away nodes
1113 // Scope : public
1114 // Creator : admsXml
1115 // Creation Date :
1116 //-----------------------------------------------------------------------------
1118 {
1119  return jacStamp;
1120 }
1121 
1122 //-----------------------------------------------------------------------------
1123 // Function : Instance::registerJacLIDs
1124 // Purpose : Create Offset variables used for referencing jacobian
1125 // elements
1126 // Special Notes :
1127 // Scope : public
1128 // Creator : admsXml
1129 // Creation Date :
1130 //-----------------------------------------------------------------------------
1132 {
1134  std::vector<int> & map=jacMap;
1135  std::vector< std::vector<int> > & map2=jacMap2;
1136 
1137 
1138  // do nothing, we won't use the jac lids anymore, we'll use pointers
1139 
1140 }
1141 
1142 //-----------------------------------------------------------------------------
1143 // Function : Instance::setupPointers
1144 // Purpose : Create pointer variables used for referencing jacobian
1145 // elements
1146 // Special Notes :
1147 // Scope : public
1148 // Creator : admsXml
1149 // Creation Date :
1150 //-----------------------------------------------------------------------------
1152 {
1153 
1154  Linear::Matrix * dFdxMatPtr = extData.dFdxMatrixPtr;
1155  Linear::Matrix * dQdxMatPtr = extData.dQdxMatrixPtr;
1156  f_c_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_c);
1157  q_c_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_c);
1158  f_c_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_b);
1159  q_c_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_b);
1160  f_c_Equ_BRA_c_ci_Var_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_BRA_c_ci);
1161  q_c_Equ_BRA_c_ci_Var_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_BRA_c_ci);
1162  f_b_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_b);
1163  q_b_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_b);
1164  f_b_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_c);
1165  q_b_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_c);
1166  f_b_Equ_BRA_b_bi_Var_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_BRA_b_bi);
1167  q_b_Equ_BRA_b_bi_Var_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_BRA_b_bi);
1168  f_e_Equ_BRA_e_ei_Var_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_BRA_e_ei);
1169  q_e_Equ_BRA_e_ei_Var_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_BRA_e_ei);
1170  f_t_Equ_t_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_t,li_t);
1171  q_t_Equ_t_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_t,li_t);
1172  f_t_Equ_ti_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_t,li_ti);
1173  q_t_Equ_ti_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_t,li_ti);
1174  f_ei_Equ_bii_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_bii);
1175  q_ei_Equ_bii_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_bii);
1176  f_ei_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_ci);
1177  q_ei_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_ci);
1178  f_ei_Equ_ti_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_ti);
1179  q_ei_Equ_ti_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_ti);
1180  f_ei_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_ei);
1181  q_ei_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_ei);
1182  f_ei_Equ_ex_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_ex);
1183  q_ei_Equ_ex_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_ex);
1184  f_ei_Equ_exx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_exx);
1185  q_ei_Equ_exx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_exx);
1186  f_ei_Equ_BRA_e_ei_Var_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_BRA_e_ei);
1187  q_ei_Equ_BRA_e_ei_Var_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_BRA_e_ei);
1188  f_bi_Equ_ti_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_ti);
1189  q_bi_Equ_ti_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_ti);
1190  f_bi_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_bi);
1191  q_bi_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_bi);
1192  f_bi_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_ci);
1193  q_bi_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_ci);
1194  f_bi_Equ_bii_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_bii);
1195  q_bi_Equ_bii_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_bii);
1196  f_bi_Equ_BRA_b_bi_Var_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_BRA_b_bi);
1197  q_bi_Equ_BRA_b_bi_Var_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_BRA_b_bi);
1198  f_bii_Equ_ti_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bii,li_ti);
1199  q_bii_Equ_ti_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bii,li_ti);
1200  f_bii_Equ_bii_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bii,li_bii);
1201  q_bii_Equ_bii_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bii,li_bii);
1202  f_bii_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bii,li_ci);
1203  q_bii_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bii,li_ci);
1204  f_bii_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bii,li_ei);
1205  q_bii_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bii,li_ei);
1206  f_bii_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bii,li_bi);
1207  q_bii_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bii,li_bi);
1208  f_bii_Equ_ex_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bii,li_ex);
1209  q_bii_Equ_ex_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bii,li_ex);
1210  f_bii_Equ_exx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bii,li_exx);
1211  q_bii_Equ_exx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bii,li_exx);
1212  f_bii_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bii,li_cx);
1213  q_bii_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bii,li_cx);
1214  f_ci_Equ_ti_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_ti);
1215  q_ci_Equ_ti_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_ti);
1216  f_ci_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_bi);
1217  q_ci_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_bi);
1218  f_ci_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_ci);
1219  q_ci_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_ci);
1220  f_ci_Equ_bii_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_bii);
1221  q_ci_Equ_bii_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_bii);
1222  f_ci_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_ei);
1223  q_ci_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_ei);
1224  f_ci_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_cx);
1225  q_ci_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_cx);
1226  f_ci_Equ_BRA_c_ci_Var_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_BRA_c_ci);
1227  q_ci_Equ_BRA_c_ci_Var_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_BRA_c_ci);
1228  f_ti_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ti,li_bi);
1229  q_ti_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ti,li_bi);
1230  f_ti_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ti,li_ci);
1231  q_ti_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ti,li_ci);
1232  f_ti_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ti,li_ei);
1233  q_ti_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ti,li_ei);
1234  f_ti_Equ_bii_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ti,li_bii);
1235  q_ti_Equ_bii_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ti,li_bii);
1236  f_ti_Equ_ti_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ti,li_ti);
1237  q_ti_Equ_ti_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ti,li_ti);
1238  f_ti_Equ_t_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ti,li_t);
1239  q_ti_Equ_t_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ti,li_t);
1240  f_ex_Equ_ti_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ex,li_ti);
1241  q_ex_Equ_ti_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ex,li_ti);
1242  f_ex_Equ_ex_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ex,li_ex);
1243  q_ex_Equ_ex_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ex,li_ex);
1244  f_ex_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ex,li_ei);
1245  q_ex_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ex,li_ei);
1246  f_ex_Equ_bii_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ex,li_bii);
1247  q_ex_Equ_bii_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ex,li_bii);
1248  f_exx_Equ_ti_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_exx,li_ti);
1249  q_exx_Equ_ti_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_exx,li_ti);
1250  f_exx_Equ_exx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_exx,li_exx);
1251  q_exx_Equ_exx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_exx,li_exx);
1252  f_exx_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_exx,li_ei);
1253  q_exx_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_exx,li_ei);
1254  f_exx_Equ_bii_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_exx,li_bii);
1255  q_exx_Equ_bii_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_exx,li_bii);
1256  f_cx_Equ_ti_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_ti);
1257  q_cx_Equ_ti_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_ti);
1258  f_cx_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_cx);
1259  q_cx_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_cx);
1260  f_cx_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_ci);
1261  q_cx_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_ci);
1262  f_cx_Equ_bii_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_bii);
1263  q_cx_Equ_bii_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_bii);
1264  f_BRA_b_bi_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_BRA_b_bi,li_b);
1265  q_BRA_b_bi_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_BRA_b_bi,li_b);
1266  f_BRA_b_bi_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_BRA_b_bi,li_bi);
1267  q_BRA_b_bi_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_BRA_b_bi,li_bi);
1268  f_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr=dFdxMatPtr->returnRawEntryPointer(li_BRA_b_bi,li_BRA_b_bi);
1269  q_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr=dQdxMatPtr->returnRawEntryPointer(li_BRA_b_bi,li_BRA_b_bi);
1270  f_BRA_e_ei_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_BRA_e_ei,li_e);
1271  q_BRA_e_ei_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_BRA_e_ei,li_e);
1272  f_BRA_e_ei_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_BRA_e_ei,li_ei);
1273  q_BRA_e_ei_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_BRA_e_ei,li_ei);
1274  f_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr=dFdxMatPtr->returnRawEntryPointer(li_BRA_e_ei,li_BRA_e_ei);
1275  q_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr=dQdxMatPtr->returnRawEntryPointer(li_BRA_e_ei,li_BRA_e_ei);
1276  f_BRA_c_ci_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_BRA_c_ci,li_c);
1277  q_BRA_c_ci_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_BRA_c_ci,li_c);
1278  f_BRA_c_ci_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_BRA_c_ci,li_ci);
1279  q_BRA_c_ci_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_BRA_c_ci,li_ci);
1280  f_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr=dFdxMatPtr->returnRawEntryPointer(li_BRA_c_ci,li_BRA_c_ci);
1281  q_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr=dQdxMatPtr->returnRawEntryPointer(li_BRA_c_ci,li_BRA_c_ci);
1282 
1283 
1284 }
1285 
1286 // RHS load functions
1287 
1288 //-----------------------------------------------------------------------------
1289 // Function : Instance::loadDAEFVector
1290 // Purpose : load F vector (static contributions) for one instance for
1291 // NEW DAE formulation
1292 // Special Notes :
1293 // Scope : public
1294 // Creator : admsXml
1295 // Creation Date :
1296 //-----------------------------------------------------------------------------
1298 {
1299 
1300  bool bsuccess=true;
1301 
1318  {
1319  double *dFdxdVp = extData.dFdxdVpVectorRawPtr;
1320  dFdxdVp[li_c] += Jdxp_static[admsNodeID_c];
1321  dFdxdVp[li_b] += Jdxp_static[admsNodeID_b];
1322  dFdxdVp[li_e] += Jdxp_static[admsNodeID_e];
1323  dFdxdVp[li_t] += Jdxp_static[admsNodeID_t];
1324  dFdxdVp[li_ei] += Jdxp_static[admsNodeID_ei];
1325  dFdxdVp[li_bi] += Jdxp_static[admsNodeID_bi];
1326  dFdxdVp[li_bii] += Jdxp_static[admsNodeID_bii];
1327  dFdxdVp[li_ci] += Jdxp_static[admsNodeID_ci];
1328  dFdxdVp[li_ti] += Jdxp_static[admsNodeID_ti];
1329  dFdxdVp[li_ex] += Jdxp_static[admsNodeID_ex];
1330  dFdxdVp[li_exx] += Jdxp_static[admsNodeID_exx];
1331  dFdxdVp[li_cx] += Jdxp_static[admsNodeID_cx];
1335 
1336  }
1337 
1338  return bsuccess;
1339 }
1340 
1341 //-----------------------------------------------------------------------------
1342 // Function : Instance::loadDAEQVector
1343 // Purpose : load Q vector (dynamic contributions) for one instance for
1344 // NEW DAE formulation
1345 // Special Notes :
1346 // Scope : public
1347 // Creator : admsXml
1348 // Creation Date :
1349 //-----------------------------------------------------------------------------
1351 {
1368  {
1369  double *dQdxdVp = extData.dQdxdVpVectorRawPtr;
1370  dQdxdVp[li_c] += Jdxp_dynamic[admsNodeID_c];
1371  dQdxdVp[li_b] += Jdxp_dynamic[admsNodeID_b];
1372  dQdxdVp[li_e] += Jdxp_dynamic[admsNodeID_e];
1373  dQdxdVp[li_t] += Jdxp_dynamic[admsNodeID_t];
1374  dQdxdVp[li_ei] += Jdxp_dynamic[admsNodeID_ei];
1375  dQdxdVp[li_bi] += Jdxp_dynamic[admsNodeID_bi];
1376  dQdxdVp[li_bii] += Jdxp_dynamic[admsNodeID_bii];
1377  dQdxdVp[li_ci] += Jdxp_dynamic[admsNodeID_ci];
1378  dQdxdVp[li_ti] += Jdxp_dynamic[admsNodeID_ti];
1379  dQdxdVp[li_ex] += Jdxp_dynamic[admsNodeID_ex];
1380  dQdxdVp[li_exx] += Jdxp_dynamic[admsNodeID_exx];
1381  dQdxdVp[li_cx] += Jdxp_dynamic[admsNodeID_cx];
1385  }
1386 
1387  return true;
1388 }
1389 
1390 
1391 //-----------------------------------------------------------------------------
1392 // Function : Instance::updatePrimaryState
1393 // Purpose :
1394 // Special Notes : In this initial implementation, does little more than
1395 // call updateIntermediateVars()
1396 // Scope : public
1397 // Creator : admsXml
1398 // Creation Date :
1399 //-----------------------------------------------------------------------------
1401 {
1402  bool bsuccess = true;
1403 
1404  bsuccess = updateIntermediateVars();
1405 
1406  // if old DAE were implemented, we'd save dynamic contributions as state
1407  // here.
1408 
1409  double * staVec = extData.nextStaVectorRawPtr;
1410  // Also need to save limited voltage drops
1411  // This formulation assumes that we have *always* written the
1412  // limited voltages back into the probeVars[] array.
1413 
1417 
1418  return bsuccess;
1419 }
1420 
1421 //-----------------------------------------------------------------------------
1422 // Function : Instance::updateSecondaryState
1423 // Purpose :
1424 // Special Notes : In this initial implementation, does nothing
1425 // Scope : public
1426 // Creator : admsXml
1427 // Creation Date :
1428 //-----------------------------------------------------------------------------
1430 {
1431  bool bsuccess = true;
1432 
1433  // were old DAE implemented, we'd pull dynamic contribution derivatives
1434  // out of state.
1435 
1436  return bsuccess;
1437 }
1438 
1439 //-----------------------------------------------------------------------------
1440 // Function : Instance::updateIntermediateVars
1441 // Purpose : update intermediate variables for one HBT_X instance
1442 // Special Notes :
1443 // Scope : public
1444 // Creator : admsXml
1445 // Creation Date :
1446 //-----------------------------------------------------------------------------
1448 {
1449 
1450  bool bsuccess=true;
1451  Linear::Vector * solVectorPtr = extData.nextSolVectorPtr;
1452 
1453  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
1454  {
1455  Xyce::dout() << std::endl << subsection_divider << std::endl;
1456  Xyce::dout() << " In ADMSHBT_X::Instance::updateIntermediateVars\n\n";
1457  Xyce::dout() << " name = " << getName() << std::endl;
1458  }
1459 
1460  // Local variables
1461  AdmsFadType qbe;
1462  AdmsFadType qbtf;
1463  AdmsFadType xtff;
1464  AdmsFadType Wh;
1465  AdmsFadType Ih;
1466  double AHC;
1467  double RCIO;
1468  double InvVpt;
1469  double Vlim;
1470  AdmsFadType qb2;
1471  AdmsFadType qbtra;
1472  AdmsFadType qbtr;
1473  AdmsFadType qb1;
1474  AdmsFadType qb2med;
1475  AdmsFadType xix;
1476  double I00;
1477  AdmsFadType Ipdiss;
1478  AdmsFadType Icdx;
1479  AdmsFadType Ibdxx;
1480  AdmsFadType Ibdx;
1481  AdmsFadType Ib1;
1482  AdmsFadType Ib0;
1483  AdmsFadType EdBeta;
1484  AdmsFadType mm;
1485  double Vbclin;
1486  double epsi;
1487  AdmsFadType Ibx;
1488  AdmsFadType Ib2;
1489  AdmsFadType Ic1;
1490  AdmsFadType Ic1r;
1491  AdmsFadType Ic0;
1492  AdmsFadType qb;
1493  AdmsFadType q2;
1494  AdmsFadType q1;
1495  AdmsFadType Ic1ra;
1496  AdmsFadType Ic0a;
1497  double TWO_Q;
1498  double FOUR_K;
1499  double Area;
1500  AdmsFadType Tex;
1501  AdmsFadType TjK;
1502  AdmsFadType Tj;
1503  AdmsFadType Texi;
1504  AdmsFadType vcei;
1505  AdmsFadType vxxe;
1506  AdmsFadType vxc;
1507  AdmsFadType vxe;
1508  AdmsFadType vbei;
1509  AdmsFadType vbci;
1510  AdmsFadType vbcx;
1511  double tVCrit;
1512  // temporary variables for limiting
1513  double vbei_orig,vbei_limited,vbei_old;
1514  double vbci_orig,vbci_limited,vbci_old;
1515  double vbcx_orig,vbcx_limited,vbcx_old;
1516 
1517 
1518  // set the sizes of the Fad arrays:
1519 
1520  if (probeVars.size() != (19))
1521  {
1522  probeVars.resize(19);
1523  staticContributions.resize(12+3);
1524  dynamicContributions.resize(12+3);
1525  probeDiffs.resize(19,0.0);
1526  Jdxp_static.resize(12+3);
1527  Jdxp_dynamic.resize(12+3);
1528  }
1529 
1530  // initialize contributions to zero (automatically sets derivatives to zero)
1531  for (int i=0; i < 12+3 ; ++i)
1532  {
1533  staticContributions[i]=0;
1534  dynamicContributions[i]=0;
1535  Jdxp_static[i]=0;
1536  Jdxp_dynamic[i]=0;
1537  }
1538 
1539  for (int i=0; i < 19 ; ++i)
1540  {
1541  probeDiffs[i] = 0.0;
1542  }
1543  // extract solution variables and set as Fad independent variables.
1544 
1545  probeVars[admsProbeID_V_t_ti] = (*solVectorPtr)[li_t] - (*solVectorPtr)[li_ti];
1547 
1548  probeVars[admsProbeID_V_b_c] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_c];
1550 
1551  probeVars[admsProbeID_V_c_GND] = (*solVectorPtr)[li_c];
1553 
1554  probeVars[admsProbeID_V_b_GND] = (*solVectorPtr)[li_b];
1556 
1557  probeVars[admsProbeID_V_cx_bii] = (*solVectorPtr)[li_cx] - (*solVectorPtr)[li_bii];
1559 
1560  probeVars[admsProbeID_V_exx_bii] = (*solVectorPtr)[li_exx] - (*solVectorPtr)[li_bii];
1562 
1563  probeVars[admsProbeID_V_ex_bii] = (*solVectorPtr)[li_ex] - (*solVectorPtr)[li_bii];
1565 
1566  probeVars[admsProbeID_V_bii_bi] = (*solVectorPtr)[li_bii] - (*solVectorPtr)[li_bi];
1568 
1569  probeVars[admsProbeID_I_c_ci] = (*solVectorPtr)[li_BRA_c_ci];
1571 
1572  probeVars[admsProbeID_I_e_ei] = (*solVectorPtr)[li_BRA_e_ei];
1574 
1575  probeVars[admsProbeID_I_b_bi] = (*solVectorPtr)[li_BRA_b_bi];
1577 
1578  probeVars[admsProbeID_V_ti_GND] = (*solVectorPtr)[li_ti];
1580 
1581  probeVars[admsProbeID_V_ci_ei] = (*solVectorPtr)[li_ci] - (*solVectorPtr)[li_ei];
1583 
1584  probeVars[admsProbeID_V_exx_ei] = (*solVectorPtr)[li_exx] - (*solVectorPtr)[li_ei];
1586 
1587  probeVars[admsProbeID_V_cx_ci] = (*solVectorPtr)[li_cx] - (*solVectorPtr)[li_ci];
1589 
1590  probeVars[admsProbeID_V_ex_ei] = (*solVectorPtr)[li_ex] - (*solVectorPtr)[li_ei];
1592 
1593  probeVars[admsProbeID_V_bii_ei] = (*solVectorPtr)[li_bii] - (*solVectorPtr)[li_ei];
1595 
1596  probeVars[admsProbeID_V_bii_ci] = (*solVectorPtr)[li_bii] - (*solVectorPtr)[li_ci];
1598 
1599  probeVars[admsProbeID_V_bi_ci] = (*solVectorPtr)[li_bi] - (*solVectorPtr)[li_ci];
1601 
1602 
1603  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
1607 
1608  // Copy probes into limiting vars
1609  vbei_orig = vbei_limited = probeVars[admsProbeID_V_bii_ei].val();
1611  vbci_orig = vbci_limited = probeVars[admsProbeID_V_bii_ci].val();
1613  vbcx_orig = vbcx_limited = probeVars[admsProbeID_V_bi_ci].val();
1615 
1616  origFlag = true;
1617 
1618  //Manually moved from below
1619  tVCrit = (adms_vt_nom*log((adms_vt_nom/(1.41421356237309504880*(((((model_.Jsf)*L)*W)*N)*1e12)))));
1620  if (getSolverState().newtonIter == 0)
1621  {
1622 
1624  {
1625  // manually inserted code:
1627  {
1628  Linear::Vector * flagSolVectorPtr = (extData.flagSolVectorPtr);
1629  if ((*flagSolVectorPtr)[li_e] == 0 ||
1630  (*flagSolVectorPtr)[li_ei] == 0 ||
1631  (*flagSolVectorPtr)[li_ex] == 0 ||
1632  (*flagSolVectorPtr)[li_exx] == 0 ||
1633  (*flagSolVectorPtr)[li_b] == 0 ||
1634  (*flagSolVectorPtr)[li_bi] == 0 ||
1635  (*flagSolVectorPtr)[li_bii] == 0 ||
1636  (*flagSolVectorPtr)[li_c] == 0 ||
1637  (*flagSolVectorPtr)[li_ci] == 0 ||
1638  (*flagSolVectorPtr)[li_cx] == 0 ||
1639  (*flagSolVectorPtr)[li_t] == 0 ||
1640  (*flagSolVectorPtr)[li_ti] == 0 )
1641  {
1642  vbcx_limited = vbci_limited = 0;
1643  vbei_limited = tVCrit;
1644  origFlag = false;
1645  }
1646  }
1647  else
1648  {
1649  vbcx_limited = vbci_limited = 0;
1650  vbei_limited = tVCrit;
1651  origFlag = false;
1652  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
1653  {
1654  Xyce::dout() << " Setting device initial condition to Base-Emitter drop=tVCri (" << tVCrit << ")" << std::endl;
1655  }
1656  }
1657  }
1658  // end manually inserted code
1659 
1660  if (!(getSolverState().dcopFlag)||(getSolverState().locaEnabledFlag && getSolverState().dcopFlag))
1661  {
1665  }
1666  else
1667  {
1668  vbei_old = vbei_limited;
1669  vbci_old = vbci_limited;
1670  vbcx_old = vbcx_limited;
1671  }
1672  }
1673  else
1674  {
1678  }
1679 
1680  // -- code converted from analog/code block
1681  // Manually moved to above
1682  //tVCrit = (adms_vt_nom*log((adms_vt_nom/(1.41421356237309504880*(((((model_.Jsf)*L)*W)*N)*1e12)))));
1683 
1684 
1685  //vbcx = ($limit(V(bi,ci),"typedpnjlim",$vt(),tVCrit,dtype));
1687  {
1688  int icheck=0;
1689  vbcx_limited = devSupport.pnjlim(vbcx_limited,vbcx_old,adms_vt_nom,tVCrit,&icheck);
1690  if (icheck == 1)
1691  origFlag = false;
1692  if (!origFlag)
1693  {
1694  probeDiffs[admsProbeID_V_bi_ci] = vbcx_limited - vbcx_orig;
1696  }
1697  }
1699 
1700 
1701 
1702  //vbci = ($limit(V(bii,ci),"typedpnjlim",$vt(),tVCrit,dtype));
1703  if (getDeviceOptions().voltageLimiterFlag)
1704  {
1705  int icheck=0;
1706  vbci_limited = devSupport.pnjlim(vbci_limited,vbci_old,adms_vt_nom,tVCrit,&icheck);
1707  if (icheck == 1)
1708  origFlag = false;
1709  if (!origFlag)
1710  {
1711  probeDiffs[admsProbeID_V_bii_ci] = vbci_limited - vbci_orig;
1713  }
1714  }
1716 
1717 
1718 
1719  //vbei = ($limit(V(bii,ei),"typedpnjlim",$vt(),tVCrit,dtype));
1720  if (getDeviceOptions().voltageLimiterFlag)
1721  {
1722  int icheck=0;
1723  vbei_limited = devSupport.pnjlim(vbei_limited,vbei_old,adms_vt_nom,tVCrit,&icheck);
1724  if (icheck == 1)
1725  origFlag = false;
1726  if (!origFlag)
1727  {
1728  probeDiffs[admsProbeID_V_bii_ei] = vbei_limited - vbei_orig;
1730  }
1731  }
1733 
1737  vcei = ((model_.dtype)*(probeVars[admsProbeID_V_ci_ei]));
1738  Texi = (probeVars[admsProbeID_V_ti_GND]);
1739  Tj = (Texi+Temp);
1740  TjK = (Tj+273.15);
1741  Tex = (Tj-(model_.Tnom));
1742  Area = (((L*W)*1.0e12)*N);
1743  FOUR_K = (4*1.3806226e-23);
1744  TWO_Q = (2*1.6021918e-19);
1745  Ic0a = AnalogFunctions::diode<AdmsFadType>(vbei,(model_.Jsf),(model_.Vg),(model_.nf),Area,Tj,(model_.Tnom));
1746  Ic1ra = AnalogFunctions::diode<AdmsFadType>(vbci,((model_.XCjc)*(model_.Jsr)),(model_.Vgr),(model_.nr),Area,Tj,(model_.Tnom));
1747  if ((((model_.VAF)>0.0)&&((model_.VAR)>0.0)))
1748  {
1749  q1 = ((1.0+((AnalogFunctions::charge<AdmsFadType>(vbei,1.0,(model_.Vje),(model_.mje),1.0)-AnalogFunctions::charge<double>(0.0,1.0,(model_.Vje),(model_.mje),1.0))/(model_.VAR)))+((AnalogFunctions::charge<AdmsFadType>(vbci,1.0,(model_.Vjc),(model_.mjc),1.0)-AnalogFunctions::charge<double>(0.0,1.0,(model_.Vjc),(model_.mjc),1.0))/(model_.VAF)));
1750  }
1751  else
1752  {
1753  if ((((model_.VAF)>0.0)&&((model_.VAR)==0.0)))
1754  {
1755  q1 = (1.0+((AnalogFunctions::charge<AdmsFadType>(vbci,1.0,(model_.Vjc),(model_.mjc),1.0)-AnalogFunctions::charge<AdmsFadType>(0.0,1.0,(model_.Vjc),(model_.mjc),1.0))/(model_.VAF)));
1756  }
1757  else
1758  {
1759  if ((((model_.VAF)==0.0)&&((model_.VAR)>0.0)))
1760  {
1761  q1 = (1.0+((AnalogFunctions::charge<AdmsFadType>(vbei,1.0,(model_.Vje),(model_.mje),1.0)-AnalogFunctions::charge<AdmsFadType>(0.0,1.0,(model_.Vje),(model_.mje),1.0))/(model_.VAR)));
1762  }
1763  else
1764  {
1765  q1 = 1.0;
1766  }
1767  }
1768  }
1769  if ((((model_.IKF)>0.0)&&((model_.IKR)>0.0)))
1770  {
1771  q2 = ((Ic0a/(Area*(model_.IKF)))+(Ic1ra/(Area*(model_.IKR))));
1772  }
1773  else
1774  {
1775  if ((((model_.IKF)>0.0)&&((model_.IKR)==0.0)))
1776  {
1777  q2 = (Ic0a/(Area*(model_.IKF)));
1778  }
1779  else
1780  {
1781  if ((((model_.IKF)==0.0)&&((model_.IKR)>0.0)))
1782  {
1783  q2 = (Ic1ra/(Area*(model_.IKR)));
1784  }
1785  else
1786  {
1787  q2 = 0.0;
1788  }
1789  }
1790  }
1791  qb = ((q1+sqrt(((q1*q1)+(4.0*q2))))/2.0);
1792  Ic0 = (Ic0a/qb);
1793  Ic1r = (Ic1ra/qb);
1794  Ic1 = (Ic0-Ic1r);
1795  Ib2 = (AnalogFunctions::diode<AdmsFadType>(vbci,((model_.XCjc)*(model_.Jsr)),(model_.Vgr),(model_.nr),Area,Tj,(model_.Tnom))/(model_.Br));
1796  Ibx = (AnalogFunctions::diode<AdmsFadType>(vbcx,((1.0-(model_.XCjc))*(model_.Jsr)),(model_.Vgr),(model_.nr),Area,Tj,(model_.Tnom))/(model_.Br));
1797  epsi = 1.0e-6;
1798  Vbclin = ((model_.BVceo)*pow((1.0-epsi),(1/(model_.Mc))));
1799  mm = AnalogFunctions::MM<AdmsFadType>(vbci,(model_.BVceo),(model_.Mc),Vbclin,(model_.Bf),(model_.kc));
1800  if ((mm>1.0))
1801  {
1802  if (((model_.kBeta)>0.0))
1803  {
1804  if ((((model_.Bf)-((model_.kBeta)*Tex))>1e-6))
1805  {
1806  EdBeta = (((1/((model_.Bf)-((model_.kBeta)*Tex)))-((model_.kc)*(mm-1)))/(((model_.kc)*(mm-1))+1));
1807  }
1808  else
1809  {
1810  EdBeta = ((1e6-((model_.kc)*(mm-1)))/(((model_.kc)*(mm-1))+1));
1811  }
1812  }
1813  else
1814  {
1815  EdBeta = (((1/(model_.Bf))-((model_.kc)*(mm-1)))/(((model_.kc)*(mm-1))+1));
1816  }
1817  }
1818  else
1819  {
1820  if (((model_.kBeta)>0.0))
1821  {
1822  if ((((model_.Bf)-((model_.kBeta)*Tex))>1e-6))
1823  {
1824  EdBeta = (1/((model_.Bf)-((model_.kBeta)*Tex)));
1825  }
1826  else
1827  {
1828  EdBeta = 1e6;
1829  }
1830  }
1831  else
1832  {
1833  EdBeta = (1/(model_.Bf));
1834  }
1835  }
1836  Ib0 = (Ic0a*EdBeta);
1837  if (((model_.BVebo)>0))
1838  {
1839  Ib1 = (Ib0-AnalogFunctions::diode<AdmsFadType>(((-(model_.BVebo))-vbei),(model_.Jsf),0.0,1.0,Area,0.0,0.0));
1840  }
1841  else
1842  {
1843  Ib1 = Ib0;
1844  }
1845  if ((((model_.Jse)>0.0)&&((model_.ne)>0)))
1846  {
1847  Ibdx = AnalogFunctions::diode<AdmsFadType>(vxe,(model_.Jse),(model_.Vgb),(model_.ne),Area,Tj,(model_.Tnom));
1848  }
1849  else
1850  {
1851  Ibdx = (vxe*1e-12);
1852  }
1853  if ((((model_.Jsee)>0.0)&&((model_.nee)>0)))
1854  {
1855  Ibdxx = AnalogFunctions::diode<AdmsFadType>(vxxe,(model_.Jsee),(model_.Vgbb),(model_.nee),Area,Tj,(model_.Tnom));
1856  }
1857  else
1858  {
1859  Ibdxx = (vxxe*1e-12);
1860  }
1861  if ((((model_.Jsc)>0.0)&&((model_.nc)>0)))
1862  {
1863  Icdx = AnalogFunctions::diode<AdmsFadType>(vxc,(model_.Jsc),(model_.Vgc),(model_.nc),Area,Tj,(model_.Tnom));
1864  }
1865  else
1866  {
1867  Icdx = (vxc*1e-12);
1868  }
1869  Ipdiss = ((((Ic1*vcei)+(Ib1*vbei))+(Ib2*vbci))+(Ibx*vbcx));
1870  if ((Ipdiss<0.0))
1871  {
1872  Ipdiss = 0;
1873  }
1874  I00 = ((model_.J0)*Area);
1875  if ((((model_.XCjc)<1.0)&&((model_.XCjc)>0.0)))
1876  {
1877  if ((((model_.J0)<=0.0)||(Ic0<0.0)))
1878  {
1879  qb2med = (((model_.XCjc)*AnalogFunctions::charge<AdmsFadType>(vbci,((model_.Cjc)-(model_.Cmin)),(model_.Vjc),(model_.mjc),Area))+((((model_.XCjc)*Area)*(model_.Cmin))*vbci));
1880  }
1881  else
1882  {
1883  xix = (Ic0/I00);
1884  qb2med = ((((model_.XCjc)*(1.0-tanh(xix)))*(AnalogFunctions::charge<AdmsFadType>(vbci,((model_.Cjc)-(model_.Cmin)),(model_.Vjc),(model_.mjc),Area)+((((1.0-(model_.XJ0))*Area)*(model_.Cmin))*vbci)))+(((((model_.XJ0)*(model_.XCjc))*Area)*(model_.Cmin))*vbci));
1885  }
1886  }
1887  else
1888  {
1889  if ((((model_.J0)<0.0)||(Ic0<0.0)))
1890  {
1891  qb2med = (AnalogFunctions::charge<AdmsFadType>(vbci,((model_.Cjc)-(model_.Cmin)),(model_.Vjc),(model_.mjc),Area)+((Area*(model_.Cmin))*vbci));
1892  }
1893  else
1894  {
1895  xix = (Ic0/I00);
1896  qb2med = (((1.0-tanh(xix))*(AnalogFunctions::charge<AdmsFadType>(vbci,((model_.Cjc)-(model_.Cmin)),(model_.Vjc),(model_.mjc),Area)+((((1.0-(model_.XJ0))*Area)*(model_.Cmin))*vbci)))+((((model_.XJ0)*Area)*(model_.Cmin))*vbci));
1897  }
1898  }
1899  if ((((model_.XCjc)<1.0)&&((model_.XCjc)>0.0)))
1900  {
1901  qb1 = (((1.0-(model_.XCjc))*AnalogFunctions::charge<AdmsFadType>(vbcx,((model_.Cjc)-(model_.Cmin)),(model_.Vjc),(model_.mjc),Area))+((((1.0-(model_.XCjc))*Area)*(model_.Cmin))*vbcx));
1902  }
1903  else
1904  {
1905  qb1 = 0.0;
1906  }
1907  qbtr = ((model_.Tr)*Ic1r);
1908  qbtra = ((model_.Trx)*Ibx);
1909  qb2 = (qb2med+qbtr);
1910  if ((((model_.Jk)>0.0)&&((model_.Rci0)>0.0)))
1911  {
1912  if (((model_.RJk)>0.0))
1913  {
1914  Vlim = (((model_.Jk)*(model_.Rci0))/(1.0-((model_.Rci0)/(model_.RJk))));
1915  InvVpt = ((1.0-((model_.Rci0)/(model_.RJk)))/((model_.Jk)*(model_.RJk)));
1916  }
1917  else
1918  {
1919  Vlim = (((model_.Jk)*(model_.Rci0))/1.016);
1920  InvVpt = 0.0;
1921  }
1922  }
1923  if ((((((model_.Thcs)>0.0)&&((model_.Ahc)>0.0))&&((model_.Jk)>0.0))&&(Ic0>0.0)))
1924  {
1925  RCIO = ((model_.Rci0)/Area);
1926  AHC = (Area*(model_.Ahc));
1927  if ((((model_.Rci0)<(model_.RJk))||((model_.RJk)<=0.0)))
1928  {
1929  Ih = (1.0-(AnalogFunctions::ICK<AdmsFadType>(vcei,RCIO,Vlim,InvVpt,(model_.Vces))/Ic0));
1930  }
1931  else
1932  {
1933  Ih = (1.0-(AnalogFunctions::Vceff<AdmsFadType>(vcei,(model_.Vces))/(RCIO*Ic0)));
1934  }
1935  Wh = ((Ih+sqrt(((Ih*Ih)+AHC)))/(1.0+sqrt((1.0+AHC))));
1936  xtff = (((model_.Thcs)*Ic0)*(Wh*Wh));
1937  }
1938  else
1939  {
1940  xtff = 0;
1941  }
1942  qbtf = (((model_.Tf)+((model_.Tft)*Tex))*Ic0);
1943  qbe = ((xtff+qbtf)+AnalogFunctions::charge<AdmsFadType>(vbei,(model_.Cje),(model_.Vje),(model_.mje),Area));
1944  // I(bi,ci) <+ ((dtype*Ibx))
1945  {
1946  AdmsFadType contribTemp;
1947  contribTemp= ((model_.dtype)*Ibx);
1948  staticContributions[admsNodeID_bi] += contribTemp;
1949  staticContributions[admsNodeID_ci] -= contribTemp;
1950 
1953  }
1954  // I(bi,ci) <+ ((dtype*ddt((qb1+qbtra))))
1955  {
1956  AdmsFadType contribTemp;
1957  contribTemp= ((model_.dtype)*((qb1+qbtra)));
1958  dynamicContributions[admsNodeID_bi] += contribTemp;
1959  dynamicContributions[admsNodeID_ci] -= contribTemp;
1960 
1963  }
1964  // I(bii,ci) <+ ((dtype*Ib2))
1965  {
1966  AdmsFadType contribTemp;
1967  contribTemp= ((model_.dtype)*Ib2);
1968  staticContributions[admsNodeID_bii] += contribTemp;
1969  staticContributions[admsNodeID_ci] -= contribTemp;
1970 
1973  }
1974  // I(bii,ci) <+ ((dtype*ddt(qb2)))
1975  {
1976  AdmsFadType contribTemp;
1977  contribTemp= ((model_.dtype)*(qb2));
1978  dynamicContributions[admsNodeID_bii] += contribTemp;
1979  dynamicContributions[admsNodeID_ci] -= contribTemp;
1980 
1983  }
1984  // I(bii,ei) <+ ((dtype*Ib1))
1985  {
1986  AdmsFadType contribTemp;
1987  contribTemp= ((model_.dtype)*Ib1);
1988  staticContributions[admsNodeID_bii] += contribTemp;
1989  staticContributions[admsNodeID_ei] -= contribTemp;
1990 
1993  }
1994  // I(bii,ei) <+ ((dtype*ddt(qbe)))
1995  {
1996  AdmsFadType contribTemp;
1997  contribTemp= ((model_.dtype)*(qbe));
1998  dynamicContributions[admsNodeID_bii] += contribTemp;
1999  dynamicContributions[admsNodeID_ei] -= contribTemp;
2000 
2003  }
2004  // I(ci,ei) <+ ((dtype*Ic1))
2005  {
2006  AdmsFadType contribTemp;
2007  contribTemp= ((model_.dtype)*Ic1);
2008  staticContributions[admsNodeID_ci] += contribTemp;
2009  staticContributions[admsNodeID_ei] -= contribTemp;
2010 
2013  }
2014  // I(ex,ei) <+ ((dtype*Ibdx))
2017  // I(exx,ei) <+ ((dtype*Ibdxx))
2020  // I(cx,ci) <+ ((dtype*Icdx))
2023  // V(b,bi) <+ ((I(b,bi)*(Rb/N)))
2025  // V(b,bi) <+ (ddt((I(b,bi)*Lb)))
2027  // V(e,ei) <+ ((I(e,ei)*(Re/N)))
2029  // V(e,ei) <+ (ddt((I(e,ei)*Le)))
2031  // V(c,ci) <+ ((I(c,ci)*(Rc/N)))
2033  // V(c,ci) <+ (ddt((I(c,ci)*Lc)))
2035  // I(bii,bi) <+ ((V(bii,bi)/(Rb2/N)))
2038  if ((((model_.Jse)>0.0)&&((model_.ne)>0)))
2039  {
2040  // I(ex,bii) <+ ((V(ex,bii)/(Rbxx/N)))
2043  }
2044  else
2045  {
2046  // I(ex,bii) <+ ((V(ex,bii)*1e-12))
2049  }
2050  if ((((model_.Jsee)>0.0)&&((model_.nee)>0)))
2051  {
2052  // I(exx,bii) <+ ((V(exx,bii)/(Rbbxx/N)))
2055  }
2056  else
2057  {
2058  // I(exx,bii) <+ ((V(exx,bii)*1e-12))
2061  }
2062  if ((((model_.Jsc)>0.0)&&((model_.nc)>0)))
2063  {
2064  // I(cx,bii) <+ ((V(cx,bii)/(Rcxx/N)))
2067  }
2068  else
2069  {
2070  // I(cx,bii) <+ ((V(cx,bii)*1e-12))
2073  }
2074  // I(b,GND) <+ (ddt((Cpb*V(b,GND))))
2076  // I(c,GND) <+ (ddt((Cpc*V(c,GND))))
2078  // I(b,c) <+ (ddt((Cq*V(b,c))))
2080  dynamicContributions[admsNodeID_c] -= (((model_.Cq)*(probeVars[admsProbeID_V_b_c])));
2081  // I(ti,GND) <+ ((-Ipdiss))
2082  {
2083  AdmsFadType contribTemp;
2084  contribTemp= (-Ipdiss);
2085  staticContributions[admsNodeID_ti] += contribTemp;
2086 
2088  }
2089  if (((model_.Rth)>0))
2090  {
2091  // I(t,ti) <+ ((V(t,ti)/Rth))
2094  // I(t,ti) <+ ((Cth*ddt(V(t,ti))))
2096  dynamicContributions[admsNodeID_ti] -= ((model_.Cth)*((probeVars[admsProbeID_V_t_ti])));
2097  }
2098  else
2099  {
2100  // I(t,ti) <+ ((V(t,ti)*1e3))
2103  }
2104 
2105  // Additional term resulting from contributions into V(b,bi)
2108 
2109  // Additional term resulting from contributions into V(e,ei)
2112 
2113  // Additional term resulting from contributions into V(c,ci)
2116  // Final term for branch equation admsBRA_ID_b_bi
2117  staticContributions[admsBRA_ID_b_bi] -= (*solVectorPtr)[li_b]-(*solVectorPtr)[li_bi];
2118  // Final term for branch equation admsBRA_ID_e_ei
2119  staticContributions[admsBRA_ID_e_ei] -= (*solVectorPtr)[li_e]-(*solVectorPtr)[li_ei];
2120  // Final term for branch equation admsBRA_ID_c_ci
2121  staticContributions[admsBRA_ID_c_ci] -= (*solVectorPtr)[li_c]-(*solVectorPtr)[li_ci];
2122 
2123 
2124  // -- endcode converted from analog/code block
2125  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2126  {
2127  Xyce::dout() << " probeVars[admsProbeID_V_t_ti] = "
2128  <<probeVars[admsProbeID_V_t_ti].val() << std::endl;
2129  Xyce::dout() << " probeVars[admsProbeID_V_b_c] = "
2130  <<probeVars[admsProbeID_V_b_c].val() << std::endl;
2131  Xyce::dout() << " probeVars[admsProbeID_V_c_GND] = "
2132  <<probeVars[admsProbeID_V_c_GND].val() << std::endl;
2133  Xyce::dout() << " probeVars[admsProbeID_V_b_GND] = "
2134  <<probeVars[admsProbeID_V_b_GND].val() << std::endl;
2135  Xyce::dout() << " probeVars[admsProbeID_V_cx_bii] = "
2136  <<probeVars[admsProbeID_V_cx_bii].val() << std::endl;
2137  Xyce::dout() << " probeVars[admsProbeID_V_exx_bii] = "
2138  <<probeVars[admsProbeID_V_exx_bii].val() << std::endl;
2139  Xyce::dout() << " probeVars[admsProbeID_V_ex_bii] = "
2140  <<probeVars[admsProbeID_V_ex_bii].val() << std::endl;
2141  Xyce::dout() << " probeVars[admsProbeID_V_bii_bi] = "
2142  <<probeVars[admsProbeID_V_bii_bi].val() << std::endl;
2143  Xyce::dout() << " probeVars[admsProbeID_I_c_ci] = "
2144  <<probeVars[admsProbeID_I_c_ci].val() << std::endl;
2145  Xyce::dout() << " probeVars[admsProbeID_I_e_ei] = "
2146  <<probeVars[admsProbeID_I_e_ei].val() << std::endl;
2147  Xyce::dout() << " probeVars[admsProbeID_I_b_bi] = "
2148  <<probeVars[admsProbeID_I_b_bi].val() << std::endl;
2149  Xyce::dout() << " probeVars[admsProbeID_V_ti_GND] = "
2150  <<probeVars[admsProbeID_V_ti_GND].val() << std::endl;
2151  Xyce::dout() << " probeVars[admsProbeID_V_ci_ei] = "
2152  <<probeVars[admsProbeID_V_ci_ei].val() << std::endl;
2153  Xyce::dout() << " probeVars[admsProbeID_V_exx_ei] = "
2154  <<probeVars[admsProbeID_V_exx_ei].val() << std::endl;
2155  Xyce::dout() << " probeVars[admsProbeID_V_cx_ci] = "
2156  <<probeVars[admsProbeID_V_cx_ci].val() << std::endl;
2157  Xyce::dout() << " probeVars[admsProbeID_V_ex_ei] = "
2158  <<probeVars[admsProbeID_V_ex_ei].val() << std::endl;
2159  Xyce::dout() << " probeVars[admsProbeID_V_bii_ei] = "
2160  <<probeVars[admsProbeID_V_bii_ei].val() << std::endl;
2161  Xyce::dout() << " probeVars[admsProbeID_V_bii_ci] = "
2162  <<probeVars[admsProbeID_V_bii_ci].val() << std::endl;
2163  Xyce::dout() << " probeVars[admsProbeID_V_bi_ci] = "
2164  <<probeVars[admsProbeID_V_bi_ci].val() << std::endl;
2165  Xyce::dout() << " staticContributions[admsNodeID_c] = "
2166  <<staticContributions[admsNodeID_c].val() << std::endl;
2167  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_t_ti) << std::endl;
2168  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c) << std::endl;
2169  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_c_GND) << std::endl;
2170  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_GND) << std::endl;
2171  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_bii) << std::endl;
2172  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_exx_bii) << std::endl;
2173  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_ex_bii) << std::endl;
2174  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bii_bi) << std::endl;
2175  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_I_c_ci) << std::endl;
2176  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_I_e_ei) << std::endl;
2177  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_I_b_bi) << std::endl;
2178  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_ti_GND) << std::endl;
2179  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
2180  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_exx_ei) << std::endl;
2181  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
2182  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_ex_ei) << std::endl;
2183  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bii_ei) << std::endl;
2184  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bii_ci) << std::endl;
2185  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) << std::endl;
2186  Xyce::dout() << " dynamicContributions[admsNodeID_c] = "
2187  <<dynamicContributions[admsNodeID_c].val() << std::endl;
2188  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_t_ti) << std::endl;
2189  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c) << std::endl;
2190  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c_GND) << std::endl;
2191  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_GND) << std::endl;
2192  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_bii) << std::endl;
2193  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_exx_bii) << std::endl;
2194  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ex_bii) << std::endl;
2195  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bii_bi) << std::endl;
2196  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_I_c_ci) << std::endl;
2197  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_I_e_ei) << std::endl;
2198  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_I_b_bi) << std::endl;
2199  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ti_GND) << std::endl;
2200  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
2201  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_exx_ei) << std::endl;
2202  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
2203  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ex_ei) << std::endl;
2204  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bii_ei) << std::endl;
2205  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bii_ci) << std::endl;
2206  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) << std::endl;
2207  Xyce::dout() << " Jdxp_static[admsNodeID_c] = "
2208  <<Jdxp_static[admsNodeID_c] << std::endl;
2209  Xyce::dout() << " Jdxp_dynamic[admsNodeID_c] = "
2210  <<Jdxp_dynamic[admsNodeID_c] << std::endl;
2211  Xyce::dout() << " staticContributions[admsNodeID_b] = "
2212  <<staticContributions[admsNodeID_b].val() << std::endl;
2213  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_t_ti) << std::endl;
2214  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c) << std::endl;
2215  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_c_GND) << std::endl;
2216  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_GND) << std::endl;
2217  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_bii) << std::endl;
2218  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_exx_bii) << std::endl;
2219  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_ex_bii) << std::endl;
2220  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bii_bi) << std::endl;
2221  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_I_c_ci) << std::endl;
2222  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_I_e_ei) << std::endl;
2223  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_I_b_bi) << std::endl;
2224  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_ti_GND) << std::endl;
2225  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
2226  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_exx_ei) << std::endl;
2227  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
2228  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_ex_ei) << std::endl;
2229  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bii_ei) << std::endl;
2230  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bii_ci) << std::endl;
2231  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) << std::endl;
2232  Xyce::dout() << " dynamicContributions[admsNodeID_b] = "
2233  <<dynamicContributions[admsNodeID_b].val() << std::endl;
2234  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_t_ti) << std::endl;
2235  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) << std::endl;
2236  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c_GND) << std::endl;
2237  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_GND) << std::endl;
2238  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_bii) << std::endl;
2239  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_exx_bii) << std::endl;
2240  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ex_bii) << std::endl;
2241  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bii_bi) << std::endl;
2242  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_I_c_ci) << std::endl;
2243  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_I_e_ei) << std::endl;
2244  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_I_b_bi) << std::endl;
2245  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ti_GND) << std::endl;
2246  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
2247  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_exx_ei) << std::endl;
2248  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
2249  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ex_ei) << std::endl;
2250  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bii_ei) << std::endl;
2251  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bii_ci) << std::endl;
2252  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) << std::endl;
2253  Xyce::dout() << " Jdxp_static[admsNodeID_b] = "
2254  <<Jdxp_static[admsNodeID_b] << std::endl;
2255  Xyce::dout() << " Jdxp_dynamic[admsNodeID_b] = "
2256  <<Jdxp_dynamic[admsNodeID_b] << std::endl;
2257  Xyce::dout() << " staticContributions[admsNodeID_e] = "
2258  <<staticContributions[admsNodeID_e].val() << std::endl;
2259  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_t_ti) << std::endl;
2260  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_c) << std::endl;
2261  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_c_GND) << std::endl;
2262  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_GND) << std::endl;
2263  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_bii) << std::endl;
2264  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_exx_bii) << std::endl;
2265  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_ex_bii) << std::endl;
2266  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bii_bi) << std::endl;
2267  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_I_c_ci) << std::endl;
2268  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_I_e_ei) << std::endl;
2269  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_I_b_bi) << std::endl;
2270  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_ti_GND) << std::endl;
2271  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
2272  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_exx_ei) << std::endl;
2273  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
2274  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_ex_ei) << std::endl;
2275  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bii_ei) << std::endl;
2276  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bii_ci) << std::endl;
2277  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) << std::endl;
2278  Xyce::dout() << " dynamicContributions[admsNodeID_e] = "
2279  <<dynamicContributions[admsNodeID_e].val() << std::endl;
2280  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_t_ti) << std::endl;
2281  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_c) << std::endl;
2282  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c_GND) << std::endl;
2283  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_GND) << std::endl;
2284  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_bii) << std::endl;
2285  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_exx_bii) << std::endl;
2286  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ex_bii) << std::endl;
2287  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bii_bi) << std::endl;
2288  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_I_c_ci) << std::endl;
2289  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_I_e_ei) << std::endl;
2290  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_I_b_bi) << std::endl;
2291  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ti_GND) << std::endl;
2292  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
2293  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_exx_ei) << std::endl;
2294  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
2295  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ex_ei) << std::endl;
2296  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bii_ei) << std::endl;
2297  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bii_ci) << std::endl;
2298  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) << std::endl;
2299  Xyce::dout() << " Jdxp_static[admsNodeID_e] = "
2300  <<Jdxp_static[admsNodeID_e] << std::endl;
2301  Xyce::dout() << " Jdxp_dynamic[admsNodeID_e] = "
2302  <<Jdxp_dynamic[admsNodeID_e] << std::endl;
2303  Xyce::dout() << " staticContributions[admsNodeID_t] = "
2304  <<staticContributions[admsNodeID_t].val() << std::endl;
2305  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_t_ti) << std::endl;
2306  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_b_c) << std::endl;
2307  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_c_GND) << std::endl;
2308  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_b_GND) << std::endl;
2309  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_cx_bii) << std::endl;
2310  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_exx_bii) << std::endl;
2311  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_ex_bii) << std::endl;
2312  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_bii_bi) << std::endl;
2313  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_I_c_ci) << std::endl;
2314  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_I_e_ei) << std::endl;
2315  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_I_b_bi) << std::endl;
2316  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_ti_GND) << std::endl;
2317  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_ci_ei) << std::endl;
2318  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_exx_ei) << std::endl;
2319  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_cx_ci) << std::endl;
2320  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_ex_ei) << std::endl;
2321  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_bii_ei) << std::endl;
2322  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_bii_ci) << std::endl;
2323  Xyce::dout() << " staticContributions[admsNodeID_t].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_t].dx(admsProbeID_V_bi_ci) << std::endl;
2324  Xyce::dout() << " dynamicContributions[admsNodeID_t] = "
2325  <<dynamicContributions[admsNodeID_t].val() << std::endl;
2326  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_t_ti) << std::endl;
2327  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_b_c) << std::endl;
2328  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_c_GND) << std::endl;
2329  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_b_GND) << std::endl;
2330  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_cx_bii) << std::endl;
2331  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_exx_bii) << std::endl;
2332  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ex_bii) << std::endl;
2333  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_bii_bi) << std::endl;
2334  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_I_c_ci) << std::endl;
2335  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_I_e_ei) << std::endl;
2336  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_I_b_bi) << std::endl;
2337  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ti_GND) << std::endl;
2338  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ci_ei) << std::endl;
2339  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_exx_ei) << std::endl;
2340  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_cx_ci) << std::endl;
2341  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ex_ei) << std::endl;
2342  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_bii_ei) << std::endl;
2343  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_bii_ci) << std::endl;
2344  Xyce::dout() << " dynamicContributions[admsNodeID_t].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_t].dx(admsProbeID_V_bi_ci) << std::endl;
2345  Xyce::dout() << " Jdxp_static[admsNodeID_t] = "
2346  <<Jdxp_static[admsNodeID_t] << std::endl;
2347  Xyce::dout() << " Jdxp_dynamic[admsNodeID_t] = "
2348  <<Jdxp_dynamic[admsNodeID_t] << std::endl;
2349  Xyce::dout() << " staticContributions[admsNodeID_ei] = "
2350  <<staticContributions[admsNodeID_ei].val() << std::endl;
2351  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_t_ti) << std::endl;
2352  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) << std::endl;
2353  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_c_GND) << std::endl;
2354  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_GND) << std::endl;
2355  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_bii) << std::endl;
2356  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_exx_bii) << std::endl;
2357  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_ex_bii) << std::endl;
2358  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_bi) << std::endl;
2359  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_I_c_ci) << std::endl;
2360  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_I_e_ei) << std::endl;
2361  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_I_b_bi) << std::endl;
2362  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_ti_GND) << std::endl;
2363  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
2364  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_exx_ei) << std::endl;
2365  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
2366  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_ex_ei) << std::endl;
2367  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ei) << std::endl;
2368  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ci) << std::endl;
2369  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) << std::endl;
2370  Xyce::dout() << " dynamicContributions[admsNodeID_ei] = "
2371  <<dynamicContributions[admsNodeID_ei].val() << std::endl;
2372  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_t_ti) << std::endl;
2373  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) << std::endl;
2374  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_c_GND) << std::endl;
2375  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_GND) << std::endl;
2376  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_cx_bii) << std::endl;
2377  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_exx_bii) << std::endl;
2378  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ex_bii) << std::endl;
2379  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_bi) << std::endl;
2380  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_I_c_ci) << std::endl;
2381  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_I_e_ei) << std::endl;
2382  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_I_b_bi) << std::endl;
2383  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ti_GND) << std::endl;
2384  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
2385  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_exx_ei) << std::endl;
2386  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
2387  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ex_ei) << std::endl;
2388  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ei) << std::endl;
2389  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ci) << std::endl;
2390  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) << std::endl;
2391  Xyce::dout() << " Jdxp_static[admsNodeID_ei] = "
2392  <<Jdxp_static[admsNodeID_ei] << std::endl;
2393  Xyce::dout() << " Jdxp_dynamic[admsNodeID_ei] = "
2394  <<Jdxp_dynamic[admsNodeID_ei] << std::endl;
2395  Xyce::dout() << " staticContributions[admsNodeID_bi] = "
2396  <<staticContributions[admsNodeID_bi].val() << std::endl;
2397  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_t_ti) << std::endl;
2398  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) << std::endl;
2399  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_c_GND) << std::endl;
2400  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_GND) << std::endl;
2401  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_bii) << std::endl;
2402  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_exx_bii) << std::endl;
2403  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_ex_bii) << std::endl;
2404  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bii_bi) << std::endl;
2405  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_I_c_ci) << std::endl;
2406  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_I_e_ei) << std::endl;
2407  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_I_b_bi) << std::endl;
2408  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_ti_GND) << std::endl;
2409  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
2410  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_exx_ei) << std::endl;
2411  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
2412  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_ex_ei) << std::endl;
2413  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bii_ei) << std::endl;
2414  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bii_ci) << std::endl;
2415  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) << std::endl;
2416  Xyce::dout() << " dynamicContributions[admsNodeID_bi] = "
2417  <<dynamicContributions[admsNodeID_bi].val() << std::endl;
2418  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_t_ti) << std::endl;
2419  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) << std::endl;
2420  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_c_GND) << std::endl;
2421  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_GND) << std::endl;
2422  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_cx_bii) << std::endl;
2423  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_exx_bii) << std::endl;
2424  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ex_bii) << std::endl;
2425  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bii_bi) << std::endl;
2426  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_I_c_ci) << std::endl;
2427  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_I_e_ei) << std::endl;
2428  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_I_b_bi) << std::endl;
2429  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ti_GND) << std::endl;
2430  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
2431  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_exx_ei) << std::endl;
2432  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
2433  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ex_ei) << std::endl;
2434  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bii_ei) << std::endl;
2435  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bii_ci) << std::endl;
2436  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) << std::endl;
2437  Xyce::dout() << " Jdxp_static[admsNodeID_bi] = "
2438  <<Jdxp_static[admsNodeID_bi] << std::endl;
2439  Xyce::dout() << " Jdxp_dynamic[admsNodeID_bi] = "
2440  <<Jdxp_dynamic[admsNodeID_bi] << std::endl;
2441  Xyce::dout() << " staticContributions[admsNodeID_bii] = "
2442  <<staticContributions[admsNodeID_bii].val() << std::endl;
2443  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_t_ti) << std::endl;
2444  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_b_c) << std::endl;
2445  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_c_GND) << std::endl;
2446  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_b_GND) << std::endl;
2447  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_cx_bii) << std::endl;
2448  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_exx_bii) << std::endl;
2449  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_ex_bii) << std::endl;
2450  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_bi) << std::endl;
2451  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_I_c_ci) << std::endl;
2452  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_I_e_ei) << std::endl;
2453  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_I_b_bi) << std::endl;
2454  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_ti_GND) << std::endl;
2455  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_ci_ei) << std::endl;
2456  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_exx_ei) << std::endl;
2457  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_cx_ci) << std::endl;
2458  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_ex_ei) << std::endl;
2459  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ei) << std::endl;
2460  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ci) << std::endl;
2461  Xyce::dout() << " staticContributions[admsNodeID_bii].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_bii].dx(admsProbeID_V_bi_ci) << std::endl;
2462  Xyce::dout() << " dynamicContributions[admsNodeID_bii] = "
2463  <<dynamicContributions[admsNodeID_bii].val() << std::endl;
2464  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_t_ti) << std::endl;
2465  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_b_c) << std::endl;
2466  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_c_GND) << std::endl;
2467  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_b_GND) << std::endl;
2468  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_cx_bii) << std::endl;
2469  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_exx_bii) << std::endl;
2470  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ex_bii) << std::endl;
2471  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_bi) << std::endl;
2472  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_I_c_ci) << std::endl;
2473  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_I_e_ei) << std::endl;
2474  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_I_b_bi) << std::endl;
2475  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ti_GND) << std::endl;
2476  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ci_ei) << std::endl;
2477  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_exx_ei) << std::endl;
2478  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_cx_ci) << std::endl;
2479  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ex_ei) << std::endl;
2480  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ei) << std::endl;
2481  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ci) << std::endl;
2482  Xyce::dout() << " dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bi_ci) << std::endl;
2483  Xyce::dout() << " Jdxp_static[admsNodeID_bii] = "
2484  <<Jdxp_static[admsNodeID_bii] << std::endl;
2485  Xyce::dout() << " Jdxp_dynamic[admsNodeID_bii] = "
2486  <<Jdxp_dynamic[admsNodeID_bii] << std::endl;
2487  Xyce::dout() << " staticContributions[admsNodeID_ci] = "
2488  <<staticContributions[admsNodeID_ci].val() << std::endl;
2489  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_t_ti) << std::endl;
2490  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) << std::endl;
2491  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_c_GND) << std::endl;
2492  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_GND) << std::endl;
2493  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_bii) << std::endl;
2494  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_exx_bii) << std::endl;
2495  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_ex_bii) << std::endl;
2496  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_bi) << std::endl;
2497  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_I_c_ci) << std::endl;
2498  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_I_e_ei) << std::endl;
2499  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_I_b_bi) << std::endl;
2500  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_ti_GND) << std::endl;
2501  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
2502  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_exx_ei) << std::endl;
2503  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
2504  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_ex_ei) << std::endl;
2505  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei) << std::endl;
2506  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ci) << std::endl;
2507  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) << std::endl;
2508  Xyce::dout() << " dynamicContributions[admsNodeID_ci] = "
2509  <<dynamicContributions[admsNodeID_ci].val() << std::endl;
2510  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_t_ti) << std::endl;
2511  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) << std::endl;
2512  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_c_GND) << std::endl;
2513  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_GND) << std::endl;
2514  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_cx_bii) << std::endl;
2515  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_exx_bii) << std::endl;
2516  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ex_bii) << std::endl;
2517  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_bi) << std::endl;
2518  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_I_c_ci) << std::endl;
2519  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_I_e_ei) << std::endl;
2520  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_I_b_bi) << std::endl;
2521  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ti_GND) << std::endl;
2522  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
2523  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_exx_ei) << std::endl;
2524  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
2525  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ex_ei) << std::endl;
2526  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei) << std::endl;
2527  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ci) << std::endl;
2528  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) << std::endl;
2529  Xyce::dout() << " Jdxp_static[admsNodeID_ci] = "
2530  <<Jdxp_static[admsNodeID_ci] << std::endl;
2531  Xyce::dout() << " Jdxp_dynamic[admsNodeID_ci] = "
2532  <<Jdxp_dynamic[admsNodeID_ci] << std::endl;
2533  Xyce::dout() << " staticContributions[admsNodeID_ti] = "
2534  <<staticContributions[admsNodeID_ti].val() << std::endl;
2535  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti) << std::endl;
2536  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_b_c) << std::endl;
2537  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_c_GND) << std::endl;
2538  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_b_GND) << std::endl;
2539  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_cx_bii) << std::endl;
2540  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_exx_bii) << std::endl;
2541  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_ex_bii) << std::endl;
2542  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_bii_bi) << std::endl;
2543  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_I_c_ci) << std::endl;
2544  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_I_e_ei) << std::endl;
2545  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_I_b_bi) << std::endl;
2546  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_ti_GND) << std::endl;
2547  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_ci_ei) << std::endl;
2548  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_exx_ei) << std::endl;
2549  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_cx_ci) << std::endl;
2550  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_ex_ei) << std::endl;
2551  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ei) << std::endl;
2552  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ci) << std::endl;
2553  Xyce::dout() << " staticContributions[admsNodeID_ti].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_ti].dx(admsProbeID_V_bi_ci) << std::endl;
2554  Xyce::dout() << " dynamicContributions[admsNodeID_ti] = "
2555  <<dynamicContributions[admsNodeID_ti].val() << std::endl;
2556  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti) << std::endl;
2557  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_b_c) << std::endl;
2558  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_c_GND) << std::endl;
2559  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_b_GND) << std::endl;
2560  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_cx_bii) << std::endl;
2561  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_exx_bii) << std::endl;
2562  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_ex_bii) << std::endl;
2563  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_bii_bi) << std::endl;
2564  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_I_c_ci) << std::endl;
2565  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_I_e_ei) << std::endl;
2566  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_I_b_bi) << std::endl;
2567  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_ti_GND) << std::endl;
2568  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_ci_ei) << std::endl;
2569  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_exx_ei) << std::endl;
2570  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_cx_ci) << std::endl;
2571  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_ex_ei) << std::endl;
2572  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ei) << std::endl;
2573  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ci) << std::endl;
2574  Xyce::dout() << " dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_bi_ci) << std::endl;
2575  Xyce::dout() << " Jdxp_static[admsNodeID_ti] = "
2576  <<Jdxp_static[admsNodeID_ti] << std::endl;
2577  Xyce::dout() << " Jdxp_dynamic[admsNodeID_ti] = "
2578  <<Jdxp_dynamic[admsNodeID_ti] << std::endl;
2579  Xyce::dout() << " staticContributions[admsNodeID_ex] = "
2580  <<staticContributions[admsNodeID_ex].val() << std::endl;
2581  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_t_ti) << std::endl;
2582  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_b_c) << std::endl;
2583  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_c_GND) << std::endl;
2584  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_b_GND) << std::endl;
2585  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_cx_bii) << std::endl;
2586  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_exx_bii) << std::endl;
2587  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_bii) << std::endl;
2588  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_bii_bi) << std::endl;
2589  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_I_c_ci) << std::endl;
2590  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_I_e_ei) << std::endl;
2591  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_I_b_bi) << std::endl;
2592  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_ti_GND) << std::endl;
2593  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_ci_ei) << std::endl;
2594  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_exx_ei) << std::endl;
2595  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_cx_ci) << std::endl;
2596  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_ei) << std::endl;
2597  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_bii_ei) << std::endl;
2598  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_bii_ci) << std::endl;
2599  Xyce::dout() << " staticContributions[admsNodeID_ex].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_ex].dx(admsProbeID_V_bi_ci) << std::endl;
2600  Xyce::dout() << " dynamicContributions[admsNodeID_ex] = "
2601  <<dynamicContributions[admsNodeID_ex].val() << std::endl;
2602  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_t_ti) << std::endl;
2603  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_b_c) << std::endl;
2604  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_c_GND) << std::endl;
2605  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_b_GND) << std::endl;
2606  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_cx_bii) << std::endl;
2607  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_exx_bii) << std::endl;
2608  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_ex_bii) << std::endl;
2609  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_bii_bi) << std::endl;
2610  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_I_c_ci) << std::endl;
2611  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_I_e_ei) << std::endl;
2612  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_I_b_bi) << std::endl;
2613  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_ti_GND) << std::endl;
2614  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_ci_ei) << std::endl;
2615  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_exx_ei) << std::endl;
2616  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_cx_ci) << std::endl;
2617  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_ex_ei) << std::endl;
2618  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_bii_ei) << std::endl;
2619  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_bii_ci) << std::endl;
2620  Xyce::dout() << " dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_ex].dx(admsProbeID_V_bi_ci) << std::endl;
2621  Xyce::dout() << " Jdxp_static[admsNodeID_ex] = "
2622  <<Jdxp_static[admsNodeID_ex] << std::endl;
2623  Xyce::dout() << " Jdxp_dynamic[admsNodeID_ex] = "
2624  <<Jdxp_dynamic[admsNodeID_ex] << std::endl;
2625  Xyce::dout() << " staticContributions[admsNodeID_exx] = "
2626  <<staticContributions[admsNodeID_exx].val() << std::endl;
2627  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_t_ti) << std::endl;
2628  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_b_c) << std::endl;
2629  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_c_GND) << std::endl;
2630  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_b_GND) << std::endl;
2631  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_cx_bii) << std::endl;
2632  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_bii) << std::endl;
2633  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_ex_bii) << std::endl;
2634  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_bii_bi) << std::endl;
2635  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_I_c_ci) << std::endl;
2636  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_I_e_ei) << std::endl;
2637  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_I_b_bi) << std::endl;
2638  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_ti_GND) << std::endl;
2639  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_ci_ei) << std::endl;
2640  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_ei) << std::endl;
2641  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_cx_ci) << std::endl;
2642  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_ex_ei) << std::endl;
2643  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_bii_ei) << std::endl;
2644  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_bii_ci) << std::endl;
2645  Xyce::dout() << " staticContributions[admsNodeID_exx].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_exx].dx(admsProbeID_V_bi_ci) << std::endl;
2646  Xyce::dout() << " dynamicContributions[admsNodeID_exx] = "
2647  <<dynamicContributions[admsNodeID_exx].val() << std::endl;
2648  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_t_ti) << std::endl;
2649  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_b_c) << std::endl;
2650  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_c_GND) << std::endl;
2651  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_b_GND) << std::endl;
2652  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_cx_bii) << std::endl;
2653  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_exx_bii) << std::endl;
2654  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_ex_bii) << std::endl;
2655  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_bii_bi) << std::endl;
2656  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_I_c_ci) << std::endl;
2657  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_I_e_ei) << std::endl;
2658  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_I_b_bi) << std::endl;
2659  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_ti_GND) << std::endl;
2660  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_ci_ei) << std::endl;
2661  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_exx_ei) << std::endl;
2662  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_cx_ci) << std::endl;
2663  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_ex_ei) << std::endl;
2664  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_bii_ei) << std::endl;
2665  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_bii_ci) << std::endl;
2666  Xyce::dout() << " dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_exx].dx(admsProbeID_V_bi_ci) << std::endl;
2667  Xyce::dout() << " Jdxp_static[admsNodeID_exx] = "
2668  <<Jdxp_static[admsNodeID_exx] << std::endl;
2669  Xyce::dout() << " Jdxp_dynamic[admsNodeID_exx] = "
2670  <<Jdxp_dynamic[admsNodeID_exx] << std::endl;
2671  Xyce::dout() << " staticContributions[admsNodeID_cx] = "
2672  <<staticContributions[admsNodeID_cx].val() << std::endl;
2673  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_t_ti) << std::endl;
2674  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) << std::endl;
2675  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_GND) << std::endl;
2676  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_GND) << std::endl;
2677  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_bii) << std::endl;
2678  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_exx_bii) << std::endl;
2679  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_ex_bii) << std::endl;
2680  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bii_bi) << std::endl;
2681  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_I_c_ci) << std::endl;
2682  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_I_e_ei) << std::endl;
2683  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_I_b_bi) << std::endl;
2684  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_ti_GND) << std::endl;
2685  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
2686  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_exx_ei) << std::endl;
2687  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
2688  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_ex_ei) << std::endl;
2689  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bii_ei) << std::endl;
2690  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bii_ci) << std::endl;
2691  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) << std::endl;
2692  Xyce::dout() << " dynamicContributions[admsNodeID_cx] = "
2693  <<dynamicContributions[admsNodeID_cx].val() << std::endl;
2694  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_t_ti) << std::endl;
2695  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) << std::endl;
2696  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_c_GND) << std::endl;
2697  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_GND) << std::endl;
2698  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_cx_bii) << std::endl;
2699  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_exx_bii) << std::endl;
2700  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ex_bii) << std::endl;
2701  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bii_bi) << std::endl;
2702  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_I_c_ci) << std::endl;
2703  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_I_e_ei) << std::endl;
2704  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_I_b_bi) << std::endl;
2705  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ti_GND) << std::endl;
2706  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
2707  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_exx_ei) << std::endl;
2708  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
2709  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ex_ei) << std::endl;
2710  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bii_ei) << std::endl;
2711  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bii_ci) << std::endl;
2712  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) << std::endl;
2713  Xyce::dout() << " Jdxp_static[admsNodeID_cx] = "
2714  <<Jdxp_static[admsNodeID_cx] << std::endl;
2715  Xyce::dout() << " Jdxp_dynamic[admsNodeID_cx] = "
2716  <<Jdxp_dynamic[admsNodeID_cx] << std::endl;
2717  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi] = "
2718  <<staticContributions[admsBRA_ID_b_bi].val() << std::endl;
2719  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_t_ti) << std::endl;
2720  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_b_c) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_b_c) << std::endl;
2721  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_c_GND) << std::endl;
2722  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_b_GND) << std::endl;
2723  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_cx_bii) << std::endl;
2724  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_exx_bii) << std::endl;
2725  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ex_bii) << std::endl;
2726  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_bi) << std::endl;
2727  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_c_ci) << std::endl;
2728  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_e_ei) << std::endl;
2729  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_b_bi) << std::endl;
2730  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ti_GND) << std::endl;
2731  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ci_ei) << std::endl;
2732  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_exx_ei) << std::endl;
2733  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_cx_ci) << std::endl;
2734  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ex_ei) << std::endl;
2735  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_ei) << std::endl;
2736  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_ci) << std::endl;
2737  Xyce::dout() << " staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bi_ci) << std::endl;
2738  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi] = "
2739  <<dynamicContributions[admsBRA_ID_b_bi].val() << std::endl;
2740  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_t_ti) << std::endl;
2741  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_b_c) << std::endl;
2742  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_c_GND) << std::endl;
2743  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_b_GND) << std::endl;
2744  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_cx_bii) << std::endl;
2745  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_exx_bii) << std::endl;
2746  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ex_bii) << std::endl;
2747  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_bi) << std::endl;
2748  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_c_ci) << std::endl;
2749  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_e_ei) << std::endl;
2750  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_b_bi) << std::endl;
2751  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ti_GND) << std::endl;
2752  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ci_ei) << std::endl;
2753  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_exx_ei) << std::endl;
2754  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_cx_ci) << std::endl;
2755  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_ex_ei) << std::endl;
2756  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_ei) << std::endl;
2757  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bii_ci) << std::endl;
2758  Xyce::dout() << " dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_V_bi_ci) << std::endl;
2759  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei] = "
2760  <<staticContributions[admsBRA_ID_e_ei].val() << std::endl;
2761  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_t_ti) << std::endl;
2762  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_b_c) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_b_c) << std::endl;
2763  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_c_GND) << std::endl;
2764  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_b_GND) << std::endl;
2765  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_cx_bii) << std::endl;
2766  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_exx_bii) << std::endl;
2767  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ex_bii) << std::endl;
2768  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_bi) << std::endl;
2769  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_c_ci) << std::endl;
2770  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_e_ei) << std::endl;
2771  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_b_bi) << std::endl;
2772  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ti_GND) << std::endl;
2773  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ci_ei) << std::endl;
2774  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_exx_ei) << std::endl;
2775  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_cx_ci) << std::endl;
2776  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ex_ei) << std::endl;
2777  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_ei) << std::endl;
2778  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_ci) << std::endl;
2779  Xyce::dout() << " staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bi_ci) << std::endl;
2780  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei] = "
2781  <<dynamicContributions[admsBRA_ID_e_ei].val() << std::endl;
2782  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_t_ti) << std::endl;
2783  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_b_c) << std::endl;
2784  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_c_GND) << std::endl;
2785  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_b_GND) << std::endl;
2786  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_cx_bii) << std::endl;
2787  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_exx_bii) << std::endl;
2788  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ex_bii) << std::endl;
2789  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_bi) << std::endl;
2790  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_c_ci) << std::endl;
2791  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_e_ei) << std::endl;
2792  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_b_bi) << std::endl;
2793  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ti_GND) << std::endl;
2794  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ci_ei) << std::endl;
2795  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_exx_ei) << std::endl;
2796  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_cx_ci) << std::endl;
2797  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_ex_ei) << std::endl;
2798  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_ei) << std::endl;
2799  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bii_ci) << std::endl;
2800  Xyce::dout() << " dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_V_bi_ci) << std::endl;
2801  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci] = "
2802  <<staticContributions[admsBRA_ID_c_ci].val() << std::endl;
2803  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_t_ti) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_t_ti) << std::endl;
2804  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_b_c) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_b_c) << std::endl;
2805  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_c_GND) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_c_GND) << std::endl;
2806  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_b_GND) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_b_GND) << std::endl;
2807  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_cx_bii) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_cx_bii) << std::endl;
2808  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_exx_bii) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_exx_bii) << std::endl;
2809  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ex_bii) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ex_bii) << std::endl;
2810  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_bi) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_bi) << std::endl;
2811  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_c_ci) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_c_ci) << std::endl;
2812  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_e_ei) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_e_ei) << std::endl;
2813  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_b_bi) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_b_bi) << std::endl;
2814  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ti_GND) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ti_GND) << std::endl;
2815  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ci_ei) << std::endl;
2816  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_exx_ei) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_exx_ei) << std::endl;
2817  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_cx_ci) << std::endl;
2818  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ex_ei) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ex_ei) << std::endl;
2819  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_ei) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_ei) << std::endl;
2820  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_ci) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_ci) << std::endl;
2821  Xyce::dout() << " staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bi_ci) << std::endl;
2822  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci] = "
2823  <<dynamicContributions[admsBRA_ID_c_ci].val() << std::endl;
2824  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_t_ti) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_t_ti) << std::endl;
2825  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_b_c) << std::endl;
2826  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_c_GND) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_c_GND) << std::endl;
2827  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_b_GND) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_b_GND) << std::endl;
2828  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_cx_bii) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_cx_bii) << std::endl;
2829  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_exx_bii) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_exx_bii) << std::endl;
2830  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ex_bii) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ex_bii) << std::endl;
2831  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_bi) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_bi) << std::endl;
2832  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_c_ci) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_c_ci) << std::endl;
2833  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_e_ei) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_e_ei) << std::endl;
2834  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_b_bi) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_b_bi) << std::endl;
2835  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ti_GND) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ti_GND) << std::endl;
2836  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ci_ei) << std::endl;
2837  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_exx_ei) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_exx_ei) << std::endl;
2838  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_cx_ci) << std::endl;
2839  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ex_ei) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_ex_ei) << std::endl;
2840  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_ei) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_ei) << std::endl;
2841  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_ci) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bii_ci) << std::endl;
2842  Xyce::dout() << " dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_V_bi_ci) << std::endl;
2843 
2844  if (!origFlag)
2845  Xyce::dout() << "This step was limited by this device." << std::endl;
2846  }
2847 
2848  return true;
2849 }
2850 
2851 //-----------------------------------------------------------------------------
2852 // Function : Instance::loadDAEdFdx
2853 // Purpose :
2854 // Special Notes : Load the dFdx ("static jacobian") matrix
2855 // Scope : public
2856 // Creator : admsXml
2857 // Creation Date :
2858 //-----------------------------------------------------------------------------
2860 {
2861  bool bsuccess = true;
2862  Linear::Matrix * dFdxMatPtr = extData.dFdxMatrixPtr;
2863 
2864  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2865  {
2866  Xyce::dout() << subsection_divider << std::endl;
2867  Xyce::dout() << "ADMSHBT_X::Instance::loadDAEdFdx (" << getName() << "):" << std::endl;
2868  }
2869  (*f_bi_Equ_ti_Node_Ptr) += +staticContributions[admsNodeID_bi].dx(admsProbeID_V_ti_GND);
2870 
2871 
2872  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2873  {
2874  Xyce::dout() << " (*f_bi_Equ_ti_Node_Ptr) += " << +staticContributions[admsNodeID_bi].dx(admsProbeID_V_ti_GND)<< std::endl;
2875  }
2876  (*f_ci_Equ_ti_Node_Ptr) += +staticContributions[admsNodeID_ci].dx(admsProbeID_V_ti_GND);
2877 
2878 
2879  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2880  {
2881  Xyce::dout() << " (*f_ci_Equ_ti_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_V_ti_GND)<< std::endl;
2882  }
2884 
2885 
2886  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2887  {
2888  Xyce::dout() << " (*f_bi_Equ_bi_Node_Ptr) += " << -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bii_bi) +staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci)<< std::endl;
2889  }
2890  (*f_bi_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci);
2891 
2892 
2893  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2894  {
2895  Xyce::dout() << " (*f_bi_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci)<< std::endl;
2896  }
2897  (*f_ci_Equ_bi_Node_Ptr) += +staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci);
2898 
2899 
2900  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2901  {
2902  Xyce::dout() << " (*f_ci_Equ_bi_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci)<< std::endl;
2903  }
2905 
2906 
2907  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2908  {
2910  }
2911  (*f_bii_Equ_ti_Node_Ptr) += +staticContributions[admsNodeID_bii].dx(admsProbeID_V_ti_GND);
2912 
2913 
2914  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2915  {
2916  Xyce::dout() << " (*f_bii_Equ_ti_Node_Ptr) += " << +staticContributions[admsNodeID_bii].dx(admsProbeID_V_ti_GND)<< std::endl;
2917  }
2919 
2920 
2921  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2922  {
2924  }
2925  (*f_bii_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ci);
2926 
2927 
2928  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2929  {
2930  Xyce::dout() << " (*f_bii_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ci)<< std::endl;
2931  }
2933 
2934 
2935  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2936  {
2937  Xyce::dout() << " (*f_ci_Equ_bii_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei) +staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ci)<< std::endl;
2938  }
2939  (*f_bii_Equ_ei_Node_Ptr) += -staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ei);
2940 
2941 
2942  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2943  {
2944  Xyce::dout() << " (*f_bii_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ei)<< std::endl;
2945  }
2946  (*f_ci_Equ_ei_Node_Ptr) += -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei);
2947 
2948 
2949  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2950  {
2951  Xyce::dout() << " (*f_ci_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei)<< std::endl;
2952  }
2954 
2955 
2956  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2957  {
2958  Xyce::dout() << " (*f_ei_Equ_bii_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ei) +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ci)<< std::endl;
2959  }
2960  (*f_ei_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ci);
2961 
2962 
2963  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2964  {
2965  Xyce::dout() << " (*f_ei_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ci)<< std::endl;
2966  }
2967  (*f_ei_Equ_ti_Node_Ptr) += +staticContributions[admsNodeID_ei].dx(admsProbeID_V_ti_GND);
2968 
2969 
2970  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2971  {
2972  Xyce::dout() << " (*f_ei_Equ_ti_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_ti_GND)<< std::endl;
2973  }
2975 
2976 
2977  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2978  {
2980  }
2981  (*f_ex_Equ_ti_Node_Ptr) += +staticContributions[admsNodeID_ex].dx(admsProbeID_V_ti_GND);
2982 
2983 
2984  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2985  {
2986  Xyce::dout() << " (*f_ex_Equ_ti_Node_Ptr) += " << +staticContributions[admsNodeID_ex].dx(admsProbeID_V_ti_GND)<< std::endl;
2987  }
2989 
2990 
2991  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2992  {
2993  Xyce::dout() << " (*f_ex_Equ_ex_Node_Ptr) += " << +staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_bii) +staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_ei)<< std::endl;
2994  }
2995  (*f_ex_Equ_ei_Node_Ptr) += -staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_ei);
2996 
2997 
2998  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2999  {
3000  Xyce::dout() << " (*f_ex_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_ei)<< std::endl;
3001  }
3002  (*f_ei_Equ_ex_Node_Ptr) += +staticContributions[admsNodeID_ei].dx(admsProbeID_V_ex_ei);
3003 
3004 
3005  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3006  {
3007  Xyce::dout() << " (*f_ei_Equ_ex_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_ex_ei)<< std::endl;
3008  }
3009  (*f_exx_Equ_ti_Node_Ptr) += +staticContributions[admsNodeID_exx].dx(admsProbeID_V_ti_GND);
3010 
3011 
3012  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3013  {
3014  Xyce::dout() << " (*f_exx_Equ_ti_Node_Ptr) += " << +staticContributions[admsNodeID_exx].dx(admsProbeID_V_ti_GND)<< std::endl;
3015  }
3017 
3018 
3019  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3020  {
3021  Xyce::dout() << " (*f_exx_Equ_exx_Node_Ptr) += " << +staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_bii) +staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_ei)<< std::endl;
3022  }
3023  (*f_exx_Equ_ei_Node_Ptr) += -staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_ei);
3024 
3025 
3026  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3027  {
3028  Xyce::dout() << " (*f_exx_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_ei)<< std::endl;
3029  }
3030  (*f_ei_Equ_exx_Node_Ptr) += +staticContributions[admsNodeID_ei].dx(admsProbeID_V_exx_ei);
3031 
3032 
3033  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3034  {
3035  Xyce::dout() << " (*f_ei_Equ_exx_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_exx_ei)<< std::endl;
3036  }
3037  (*f_cx_Equ_ti_Node_Ptr) += +staticContributions[admsNodeID_cx].dx(admsProbeID_V_ti_GND);
3038 
3039 
3040  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3041  {
3042  Xyce::dout() << " (*f_cx_Equ_ti_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_V_ti_GND)<< std::endl;
3043  }
3045 
3046 
3047  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3048  {
3049  Xyce::dout() << " (*f_cx_Equ_cx_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_bii) +staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci)<< std::endl;
3050  }
3051  (*f_cx_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci);
3052 
3053 
3054  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3055  {
3056  Xyce::dout() << " (*f_cx_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci)<< std::endl;
3057  }
3058  (*f_ci_Equ_cx_Node_Ptr) += +staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci);
3059 
3060 
3061  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3062  {
3063  Xyce::dout() << " (*f_ci_Equ_cx_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci)<< std::endl;
3064  }
3065  (*f_bii_Equ_bi_Node_Ptr) += -staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_bi);
3066 
3067 
3068  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3069  {
3070  Xyce::dout() << " (*f_bii_Equ_bi_Node_Ptr) += " << -staticContributions[admsNodeID_bii].dx(admsProbeID_V_bii_bi)<< std::endl;
3071  }
3072  (*f_bi_Equ_bii_Node_Ptr) += +staticContributions[admsNodeID_bi].dx(admsProbeID_V_bii_bi);
3073 
3074 
3075  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3076  {
3077  Xyce::dout() << " (*f_bi_Equ_bii_Node_Ptr) += " << +staticContributions[admsNodeID_bi].dx(admsProbeID_V_bii_bi)<< std::endl;
3078  }
3079  (*f_ex_Equ_bii_Node_Ptr) += -staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_bii);
3080 
3081 
3082  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3083  {
3084  Xyce::dout() << " (*f_ex_Equ_bii_Node_Ptr) += " << -staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_bii)<< std::endl;
3085  }
3086  (*f_bii_Equ_ex_Node_Ptr) += +staticContributions[admsNodeID_bii].dx(admsProbeID_V_ex_bii);
3087 
3088 
3089  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3090  {
3091  Xyce::dout() << " (*f_bii_Equ_ex_Node_Ptr) += " << +staticContributions[admsNodeID_bii].dx(admsProbeID_V_ex_bii)<< std::endl;
3092  }
3093  (*f_exx_Equ_bii_Node_Ptr) += -staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_bii);
3094 
3095 
3096  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3097  {
3098  Xyce::dout() << " (*f_exx_Equ_bii_Node_Ptr) += " << -staticContributions[admsNodeID_exx].dx(admsProbeID_V_exx_bii)<< std::endl;
3099  }
3100  (*f_bii_Equ_exx_Node_Ptr) += +staticContributions[admsNodeID_bii].dx(admsProbeID_V_exx_bii);
3101 
3102 
3103  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3104  {
3105  Xyce::dout() << " (*f_bii_Equ_exx_Node_Ptr) += " << +staticContributions[admsNodeID_bii].dx(admsProbeID_V_exx_bii)<< std::endl;
3106  }
3107  (*f_cx_Equ_bii_Node_Ptr) += -staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_bii);
3108 
3109 
3110  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3111  {
3112  Xyce::dout() << " (*f_cx_Equ_bii_Node_Ptr) += " << -staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_bii)<< std::endl;
3113  }
3114  (*f_bii_Equ_cx_Node_Ptr) += +staticContributions[admsNodeID_bii].dx(admsProbeID_V_cx_bii);
3115 
3116 
3117  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3118  {
3119  Xyce::dout() << " (*f_bii_Equ_cx_Node_Ptr) += " << +staticContributions[admsNodeID_bii].dx(admsProbeID_V_cx_bii)<< std::endl;
3120  }
3121  (*f_ti_Equ_bi_Node_Ptr) += +staticContributions[admsNodeID_ti].dx(admsProbeID_V_bi_ci);
3122 
3123 
3124  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3125  {
3126  Xyce::dout() << " (*f_ti_Equ_bi_Node_Ptr) += " << +staticContributions[admsNodeID_ti].dx(admsProbeID_V_bi_ci)<< std::endl;
3127  }
3129 
3130 
3131  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3132  {
3134  }
3136 
3137 
3138  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3139  {
3140  Xyce::dout() << " (*f_ti_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ei) -staticContributions[admsNodeID_ti].dx(admsProbeID_V_ci_ei)<< std::endl;
3141  }
3143 
3144 
3145  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3146  {
3147  Xyce::dout() << " (*f_ti_Equ_bii_Node_Ptr) += " << +staticContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ei) +staticContributions[admsNodeID_ti].dx(admsProbeID_V_bii_ci)<< std::endl;
3148  }
3150 
3151 
3152  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3153  {
3154  Xyce::dout() << " (*f_ti_Equ_ti_Node_Ptr) += " << -staticContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti) +staticContributions[admsNodeID_ti].dx(admsProbeID_V_ti_GND)<< std::endl;
3155  }
3156  (*f_t_Equ_t_Node_Ptr) += +staticContributions[admsNodeID_t].dx(admsProbeID_V_t_ti);
3157 
3158 
3159  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3160  {
3161  Xyce::dout() << " (*f_t_Equ_t_Node_Ptr) += " << +staticContributions[admsNodeID_t].dx(admsProbeID_V_t_ti)<< std::endl;
3162  }
3163  (*f_t_Equ_ti_Node_Ptr) += -staticContributions[admsNodeID_t].dx(admsProbeID_V_t_ti);
3164 
3165 
3166  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3167  {
3168  Xyce::dout() << " (*f_t_Equ_ti_Node_Ptr) += " << -staticContributions[admsNodeID_t].dx(admsProbeID_V_t_ti)<< std::endl;
3169  }
3170  (*f_ti_Equ_t_Node_Ptr) += +staticContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti);
3171 
3172 
3173  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3174  {
3175  Xyce::dout() << " (*f_ti_Equ_t_Node_Ptr) += " << +staticContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti)<< std::endl;
3176  }
3177  (*f_c_Equ_BRA_c_ci_Var_Ptr) += staticContributions[admsNodeID_c].dx(admsProbeID_I_c_ci);
3178 
3179 
3180  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3181  {
3182  Xyce::dout() << " (*f_c_Equ_BRA_c_ci_Var_Ptr) += " <<staticContributions[admsNodeID_c].dx(admsProbeID_I_c_ci) << std::endl;
3183 
3184  }
3185  (*f_b_Equ_BRA_b_bi_Var_Ptr) += staticContributions[admsNodeID_b].dx(admsProbeID_I_b_bi);
3186 
3187 
3188  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3189  {
3190  Xyce::dout() << " (*f_b_Equ_BRA_b_bi_Var_Ptr) += " <<staticContributions[admsNodeID_b].dx(admsProbeID_I_b_bi) << std::endl;
3191 
3192  }
3193  (*f_e_Equ_BRA_e_ei_Var_Ptr) += staticContributions[admsNodeID_e].dx(admsProbeID_I_e_ei);
3194 
3195 
3196  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3197  {
3198  Xyce::dout() << " (*f_e_Equ_BRA_e_ei_Var_Ptr) += " <<staticContributions[admsNodeID_e].dx(admsProbeID_I_e_ei) << std::endl;
3199 
3200  }
3201  (*f_ei_Equ_BRA_e_ei_Var_Ptr) += staticContributions[admsNodeID_ei].dx(admsProbeID_I_e_ei);
3202 
3203 
3204  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3205  {
3206  Xyce::dout() << " (*f_ei_Equ_BRA_e_ei_Var_Ptr) += " <<staticContributions[admsNodeID_ei].dx(admsProbeID_I_e_ei) << std::endl;
3207 
3208  }
3209  (*f_bi_Equ_BRA_b_bi_Var_Ptr) += staticContributions[admsNodeID_bi].dx(admsProbeID_I_b_bi);
3210 
3211 
3212  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3213  {
3214  Xyce::dout() << " (*f_bi_Equ_BRA_b_bi_Var_Ptr) += " <<staticContributions[admsNodeID_bi].dx(admsProbeID_I_b_bi) << std::endl;
3215 
3216  }
3217  (*f_ci_Equ_BRA_c_ci_Var_Ptr) += staticContributions[admsNodeID_ci].dx(admsProbeID_I_c_ci);
3218 
3219 
3220  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3221  {
3222  Xyce::dout() << " (*f_ci_Equ_BRA_c_ci_Var_Ptr) += " <<staticContributions[admsNodeID_ci].dx(admsProbeID_I_c_ci) << std::endl;
3223 
3224  }
3225  // there also need to be extra loads for branch b,bi
3226  // Load for branch b,bi equ var b
3227  (*f_BRA_b_bi_Equ_b_Node_Ptr) += -1;
3228 
3229  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3230  { Xyce::dout() << " (*f_BRA_b_bi_Equ_b_Node_Ptr) += " << -1<< std::endl;
3231 
3232  }
3233  // Load for branch b,bi equ var bi
3234  (*f_BRA_b_bi_Equ_bi_Node_Ptr) += +1;
3235 
3236  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3237  { Xyce::dout() << " (*f_BRA_b_bi_Equ_bi_Node_Ptr) += " << +1<< std::endl;
3238 
3239  }
3240  //load for branch b,bi equ branch b,bi var
3241  (*f_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr) += staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_b_bi);
3242 
3243  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3244  {Xyce::dout() << " (*f_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr) += " << staticContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_b_bi) << std::endl;
3245 
3246  }
3247  // there also need to be extra loads for branch e,ei
3248  // Load for branch e,ei equ var e
3249  (*f_BRA_e_ei_Equ_e_Node_Ptr) += -1;
3250 
3251  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3252  { Xyce::dout() << " (*f_BRA_e_ei_Equ_e_Node_Ptr) += " << -1<< std::endl;
3253 
3254  }
3255  // Load for branch e,ei equ var ei
3256  (*f_BRA_e_ei_Equ_ei_Node_Ptr) += +1;
3257 
3258  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3259  { Xyce::dout() << " (*f_BRA_e_ei_Equ_ei_Node_Ptr) += " << +1<< std::endl;
3260 
3261  }
3262  //load for branch e,ei equ branch e,ei var
3263  (*f_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr) += staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_e_ei);
3264 
3265  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3266  {Xyce::dout() << " (*f_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr) += " << staticContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_e_ei) << std::endl;
3267 
3268  }
3269  // there also need to be extra loads for branch c,ci
3270  // Load for branch c,ci equ var c
3271  (*f_BRA_c_ci_Equ_c_Node_Ptr) += -1;
3272 
3273  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3274  { Xyce::dout() << " (*f_BRA_c_ci_Equ_c_Node_Ptr) += " << -1<< std::endl;
3275 
3276  }
3277  // Load for branch c,ci equ var ci
3278  (*f_BRA_c_ci_Equ_ci_Node_Ptr) += +1;
3279 
3280  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3281  { Xyce::dout() << " (*f_BRA_c_ci_Equ_ci_Node_Ptr) += " << +1<< std::endl;
3282 
3283  }
3284  //load for branch c,ci equ branch c,ci var
3285  (*f_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr) += staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_c_ci);
3286 
3287  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3288  {Xyce::dout() << " (*f_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr) += " << staticContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_c_ci) << std::endl;
3289 
3290  }
3291 
3292 
3293  return bsuccess;
3294 }
3295 
3296 
3297 //-----------------------------------------------------------------------------
3298 // Function : Instance::loadDAEdQdx
3299 // Purpose :
3300 // Special Notes : Load the dQdx ("dynamic jacobian") matrix
3301 // Scope : public
3302 // Creator : admsXml
3303 // Creation Date :
3304 //-----------------------------------------------------------------------------
3306 {
3307  bool bsuccess = true;
3308  Linear::Matrix * dQdxMatPtr = extData.dQdxMatrixPtr;
3309 
3310  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3311  {
3312  Xyce::dout() << subsection_divider << std::endl;
3313  Xyce::dout() << "ADMSHBT_X::Instance::loadDAEdQdx (" << getName() << "):" << std::endl;
3314  }
3315  (*q_bi_Equ_ti_Node_Ptr) += +dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ti_GND);
3316 
3317 
3318  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3319  {
3320  Xyce::dout() << " (*q_bi_Equ_ti_Node_Ptr) += " << +dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ti_GND)<< std::endl;
3321  }
3322  (*q_ci_Equ_ti_Node_Ptr) += +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ti_GND);
3323 
3324 
3325  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3326  {
3327  Xyce::dout() << " (*q_ci_Equ_ti_Node_Ptr) += " << +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ti_GND)<< std::endl;
3328  }
3329  (*q_bi_Equ_bi_Node_Ptr) += +dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci);
3330 
3331 
3332  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3333  {
3334  Xyce::dout() << " (*q_bi_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci)<< std::endl;
3335  }
3336  (*q_bi_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci);
3337 
3338 
3339  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3340  {
3341  Xyce::dout() << " (*q_bi_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci)<< std::endl;
3342  }
3343  (*q_ci_Equ_bi_Node_Ptr) += +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci);
3344 
3345 
3346  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3347  {
3348  Xyce::dout() << " (*q_ci_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci)<< std::endl;
3349  }
3351 
3352 
3353  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3354  {
3355  Xyce::dout() << " (*q_ci_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ci) -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci)<< std::endl;
3356  }
3357  (*q_bii_Equ_ti_Node_Ptr) += +dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ti_GND);
3358 
3359 
3360  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3361  {
3362  Xyce::dout() << " (*q_bii_Equ_ti_Node_Ptr) += " << +dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ti_GND)<< std::endl;
3363  }
3365 
3366 
3367  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3368  {
3369  Xyce::dout() << " (*q_bii_Equ_bii_Node_Ptr) += " << +dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ei) +dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ci)<< std::endl;
3370  }
3372 
3373 
3374  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3375  {
3376  Xyce::dout() << " (*q_bii_Equ_ci_Node_Ptr) += " << +dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ci_ei) -dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ci)<< std::endl;
3377  }
3379 
3380 
3381  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3382  {
3383  Xyce::dout() << " (*q_ci_Equ_bii_Node_Ptr) += " << +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei) +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ci)<< std::endl;
3384  }
3386 
3387 
3388  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3389  {
3390  Xyce::dout() << " (*q_bii_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_ci_ei) -dynamicContributions[admsNodeID_bii].dx(admsProbeID_V_bii_ei)<< std::endl;
3391  }
3392  (*q_ci_Equ_ei_Node_Ptr) += -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei);
3393 
3394 
3395  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3396  {
3397  Xyce::dout() << " (*q_ci_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bii_ei)<< std::endl;
3398  }
3400 
3401 
3402  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3403  {
3404  Xyce::dout() << " (*q_ei_Equ_bii_Node_Ptr) += " << +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ei) +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ci)<< std::endl;
3405  }
3407 
3408 
3409  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3410  {
3411  Xyce::dout() << " (*q_ei_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ci) +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei)<< std::endl;
3412  }
3413  (*q_ei_Equ_ti_Node_Ptr) += +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ti_GND);
3414 
3415 
3416  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3417  {
3418  Xyce::dout() << " (*q_ei_Equ_ti_Node_Ptr) += " << +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ti_GND)<< std::endl;
3419  }
3421 
3422 
3423  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3424  {
3425  Xyce::dout() << " (*q_ei_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bii_ei) -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei)<< std::endl;
3426  }
3428 
3429 
3430  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3431  {
3432  Xyce::dout() << " (*q_b_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_GND)<< std::endl;
3433  }
3435 
3436 
3437  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3438  {
3439  Xyce::dout() << " (*q_c_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c_GND)<< std::endl;
3440  }
3441  (*q_b_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c);
3442 
3443 
3444  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3445  {
3446  Xyce::dout() << " (*q_b_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c)<< std::endl;
3447  }
3448  (*q_c_Equ_b_Node_Ptr) += +dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c);
3449 
3450 
3451  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3452  {
3453  Xyce::dout() << " (*q_c_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c)<< std::endl;
3454  }
3455  (*q_ti_Equ_ti_Node_Ptr) += -dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti);
3456 
3457 
3458  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3459  {
3460  Xyce::dout() << " (*q_ti_Equ_ti_Node_Ptr) += " << -dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti)<< std::endl;
3461  }
3462  (*q_t_Equ_t_Node_Ptr) += +dynamicContributions[admsNodeID_t].dx(admsProbeID_V_t_ti);
3463 
3464 
3465  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3466  {
3467  Xyce::dout() << " (*q_t_Equ_t_Node_Ptr) += " << +dynamicContributions[admsNodeID_t].dx(admsProbeID_V_t_ti)<< std::endl;
3468  }
3469  (*q_t_Equ_ti_Node_Ptr) += -dynamicContributions[admsNodeID_t].dx(admsProbeID_V_t_ti);
3470 
3471 
3472  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3473  {
3474  Xyce::dout() << " (*q_t_Equ_ti_Node_Ptr) += " << -dynamicContributions[admsNodeID_t].dx(admsProbeID_V_t_ti)<< std::endl;
3475  }
3476  (*q_ti_Equ_t_Node_Ptr) += +dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti);
3477 
3478 
3479  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3480  {
3481  Xyce::dout() << " (*q_ti_Equ_t_Node_Ptr) += " << +dynamicContributions[admsNodeID_ti].dx(admsProbeID_V_t_ti)<< std::endl;
3482  }
3483  (*q_c_Equ_BRA_c_ci_Var_Ptr) += dynamicContributions[admsNodeID_c].dx(admsProbeID_I_c_ci);
3484  (*q_b_Equ_BRA_b_bi_Var_Ptr) += dynamicContributions[admsNodeID_b].dx(admsProbeID_I_b_bi);
3485  (*q_e_Equ_BRA_e_ei_Var_Ptr) += dynamicContributions[admsNodeID_e].dx(admsProbeID_I_e_ei);
3486  (*q_ei_Equ_BRA_e_ei_Var_Ptr) += dynamicContributions[admsNodeID_ei].dx(admsProbeID_I_e_ei);
3487  (*q_bi_Equ_BRA_b_bi_Var_Ptr) += dynamicContributions[admsNodeID_bi].dx(admsProbeID_I_b_bi);
3488  (*q_ci_Equ_BRA_c_ci_Var_Ptr) += dynamicContributions[admsNodeID_ci].dx(admsProbeID_I_c_ci);
3489  // there also need to be extra loads for branch b,bi
3490  // Load for branch b,bi equ var b
3491  // Load for branch b,bi equ var bi
3492  //load for branch b,bi equ branch b,bi var
3493  (*q_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr) += dynamicContributions[admsBRA_ID_b_bi].dx(admsProbeID_I_b_bi);
3494  // there also need to be extra loads for branch e,ei
3495  // Load for branch e,ei equ var e
3496  // Load for branch e,ei equ var ei
3497  //load for branch e,ei equ branch e,ei var
3498  (*q_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr) += dynamicContributions[admsBRA_ID_e_ei].dx(admsProbeID_I_e_ei);
3499  // there also need to be extra loads for branch c,ci
3500  // Load for branch c,ci equ var c
3501  // Load for branch c,ci equ var ci
3502  //load for branch c,ci equ branch c,ci var
3503  (*q_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr) += dynamicContributions[admsBRA_ID_c_ci].dx(admsProbeID_I_c_ci);
3504 
3505 
3506  return bsuccess;
3507 }
3508 
3509 //-----------------------------------------------------------------------------
3510 // Function : Instance::updateTemperature
3511 // Purpose : Set temperature and update any parameters that depend on it
3512 // Special Notes : In Xyce ADMS, we'll simply copy the temperature, which is
3513 // in Kelvin, to our "admsTemperature" variable, which needs
3514 // to be in Celsius.
3515 // Scope : public
3516 // Creator : admsXml
3517 // Creation Date :
3518 //-----------------------------------------------------------------------------
3519 bool Instance::updateTemperature(const double & temperatureTemp)
3520 {
3521 
3522  admsTemperature = temperatureTemp;
3523  adms_vt_nom = adms_vt(temperatureTemp);
3524 
3525  return true;
3526 }
3527 
3528 // Class Model
3529 //-----------------------------------------------------------------------------
3530 // Function : Model::processParams
3531 // Purpose :
3532 // Special Notes :
3533 // Scope : public
3534 // Creator : admsXml
3535 // Creation Date :
3536 //-----------------------------------------------------------------------------
3538 {
3539 
3540  // Now we need to check that any parameters are within their ranges as
3541  // specified in the verilog:
3542 
3543  // Parameter Mode : [ 0, 4 ]
3544  if ( (!((Mode >=0 && Mode <=4 ))) )
3545  {
3546  UserError0(*this) << "ADMSHBT_X: Parameter Mode value " << Mode << " out of range [ 0, 4 ]";
3547  }
3548 
3549  // Parameter Noise : [ 0, 4 ]
3550  if ( (!((Noise >=0 && Noise <=4 ))) )
3551  {
3552  UserError0(*this) << "ADMSHBT_X: Parameter Noise value " << Noise << " out of range [ 0, 4 ]";
3553  }
3554 
3555  // Parameter Debug : [ 0, (+inf) [
3556  if ( (!((Debug >=0))) )
3557  {
3558  UserError0(*this) << "ADMSHBT_X: Parameter Debug value " << Debug << " out of range [ 0, (+inf) [";
3559  }
3560 
3561  // Parameter DebugPlus : [ 0, (+inf) [
3562  if ( (!((DebugPlus >=0))) )
3563  {
3564  UserError0(*this) << "ADMSHBT_X: Parameter DebugPlus value " << DebugPlus << " out of range [ 0, (+inf) [";
3565  }
3566 
3567  // Parameter Temp : [ (-273.15), (+inf) [
3568  if ( (!((Temp >=(-273.15)))) )
3569  {
3570  UserError0(*this) << "ADMSHBT_X: Parameter Temp value " << Temp << " out of range [ (-273.15), (+inf) [";
3571  }
3572 
3573  // Parameter Rth : [ 0.0, (+inf) [
3574  if ( (!((Rth >=0.0))) )
3575  {
3576  UserError0(*this) << "ADMSHBT_X: Parameter Rth value " << Rth << " out of range [ 0.0, (+inf) [";
3577  }
3578 
3579  // Parameter Cth : [ 0.0, (+inf) [
3580  if ( (!((Cth >=0.0))) )
3581  {
3582  UserError0(*this) << "ADMSHBT_X: Parameter Cth value " << Cth << " out of range [ 0.0, (+inf) [";
3583  }
3584 
3585  // Parameter N : ] 0, (+inf) [
3586  if ( (!((N >0))) )
3587  {
3588  UserError0(*this) << "ADMSHBT_X: Parameter N value " << N << " out of range ] 0, (+inf) [";
3589  }
3590 
3591  // Parameter L : ] 0.0, (+inf) [
3592  if ( (!((L >0.0))) )
3593  {
3594  UserError0(*this) << "ADMSHBT_X: Parameter L value " << L << " out of range ] 0.0, (+inf) [";
3595  }
3596 
3597  // Parameter W : ] 0.0, (+inf) [
3598  if ( (!((W >0.0))) )
3599  {
3600  UserError0(*this) << "ADMSHBT_X: Parameter W value " << W << " out of range ] 0.0, (+inf) [";
3601  }
3602 
3603  // Parameter Jsf : [ 0.0, (+inf) [
3604  if ( (!((Jsf >=0.0))) )
3605  {
3606  UserError0(*this) << "ADMSHBT_X: Parameter Jsf value " << Jsf << " out of range [ 0.0, (+inf) [";
3607  }
3608 
3609  // Parameter nf : [ 0.0, (+inf) [
3610  if ( (!((nf >=0.0))) )
3611  {
3612  UserError0(*this) << "ADMSHBT_X: Parameter nf value " << nf << " out of range [ 0.0, (+inf) [";
3613  }
3614 
3615  // Parameter Vg : [ (-2.0), (+inf) [
3616  if ( (!((Vg >=(-2.0)))) )
3617  {
3618  UserError0(*this) << "ADMSHBT_X: Parameter Vg value " << Vg << " out of range [ (-2.0), (+inf) [";
3619  }
3620 
3621  // Parameter Jse : [ 0.0, (+inf) [
3622  if ( (!((Jse >=0.0))) )
3623  {
3624  UserError0(*this) << "ADMSHBT_X: Parameter Jse value " << Jse << " out of range [ 0.0, (+inf) [";
3625  }
3626 
3627  // Parameter ne : [ 0.0, (+inf) [
3628  if ( (!((ne >=0.0))) )
3629  {
3630  UserError0(*this) << "ADMSHBT_X: Parameter ne value " << ne << " out of range [ 0.0, (+inf) [";
3631  }
3632 
3633  // Parameter Rbxx : ] 0.0, (+inf) [
3634  if ( (!((Rbxx >0.0))) )
3635  {
3636  UserError0(*this) << "ADMSHBT_X: Parameter Rbxx value " << Rbxx << " out of range ] 0.0, (+inf) [";
3637  }
3638 
3639  // Parameter Vgb : [ 0.0, (+inf) [
3640  if ( (!((Vgb >=0.0))) )
3641  {
3642  UserError0(*this) << "ADMSHBT_X: Parameter Vgb value " << Vgb << " out of range [ 0.0, (+inf) [";
3643  }
3644 
3645  // Parameter Jsee : [ 0.0, (+inf) [
3646  if ( (!((Jsee >=0.0))) )
3647  {
3648  UserError0(*this) << "ADMSHBT_X: Parameter Jsee value " << Jsee << " out of range [ 0.0, (+inf) [";
3649  }
3650 
3651  // Parameter nee : [ 0.0, (+inf) [
3652  if ( (!((nee >=0.0))) )
3653  {
3654  UserError0(*this) << "ADMSHBT_X: Parameter nee value " << nee << " out of range [ 0.0, (+inf) [";
3655  }
3656 
3657  // Parameter Rbbxx : ] 0.0, (+inf) [
3658  if ( (!((Rbbxx >0.0))) )
3659  {
3660  UserError0(*this) << "ADMSHBT_X: Parameter Rbbxx value " << Rbbxx << " out of range ] 0.0, (+inf) [";
3661  }
3662 
3663  // Parameter Vgbb : [ 0.0, (+inf) [
3664  if ( (!((Vgbb >=0.0))) )
3665  {
3666  UserError0(*this) << "ADMSHBT_X: Parameter Vgbb value " << Vgbb << " out of range [ 0.0, (+inf) [";
3667  }
3668 
3669  // Parameter Jsr : [ 0.0, (+inf) [
3670  if ( (!((Jsr >=0.0))) )
3671  {
3672  UserError0(*this) << "ADMSHBT_X: Parameter Jsr value " << Jsr << " out of range [ 0.0, (+inf) [";
3673  }
3674 
3675  // Parameter nr : [ 0.0, (+inf) [
3676  if ( (!((nr >=0.0))) )
3677  {
3678  UserError0(*this) << "ADMSHBT_X: Parameter nr value " << nr << " out of range [ 0.0, (+inf) [";
3679  }
3680 
3681  // Parameter Vgr : [ 0.0, (+inf) [
3682  if ( (!((Vgr >=0.0))) )
3683  {
3684  UserError0(*this) << "ADMSHBT_X: Parameter Vgr value " << Vgr << " out of range [ 0.0, (+inf) [";
3685  }
3686 
3687  // Parameter XCjc : [ 0.0, 1.0 [
3688  if ( (!((XCjc >=0.0 && XCjc <1.0 ))) )
3689  {
3690  UserError0(*this) << "ADMSHBT_X: Parameter XCjc value " << XCjc << " out of range [ 0.0, 1.0 [";
3691  }
3692 
3693  // Parameter Jsc : [ 0.0, (+inf) [
3694  if ( (!((Jsc >=0.0))) )
3695  {
3696  UserError0(*this) << "ADMSHBT_X: Parameter Jsc value " << Jsc << " out of range [ 0.0, (+inf) [";
3697  }
3698 
3699  // Parameter nc : [ 0.0, (+inf) [
3700  if ( (!((nc >=0.0))) )
3701  {
3702  UserError0(*this) << "ADMSHBT_X: Parameter nc value " << nc << " out of range [ 0.0, (+inf) [";
3703  }
3704 
3705  // Parameter Rcxx : ] 0.0, (+inf) [
3706  if ( (!((Rcxx >0.0))) )
3707  {
3708  UserError0(*this) << "ADMSHBT_X: Parameter Rcxx value " << Rcxx << " out of range ] 0.0, (+inf) [";
3709  }
3710 
3711  // Parameter Vgc : [ 0.0, (+inf) [
3712  if ( (!((Vgc >=0.0))) )
3713  {
3714  UserError0(*this) << "ADMSHBT_X: Parameter Vgc value " << Vgc << " out of range [ 0.0, (+inf) [";
3715  }
3716 
3717  // Parameter Bf : [ 0.0, (+inf) [
3718  if ( (!((Bf >=0.0))) )
3719  {
3720  UserError0(*this) << "ADMSHBT_X: Parameter Bf value " << Bf << " out of range [ 0.0, (+inf) [";
3721  }
3722 
3723  // Parameter kBeta : [ 0.0, (+inf) [
3724  if ( (!((kBeta >=0.0))) )
3725  {
3726  UserError0(*this) << "ADMSHBT_X: Parameter kBeta value " << kBeta << " out of range [ 0.0, (+inf) [";
3727  }
3728 
3729  // Parameter Br : [ 0.0, (+inf) [
3730  if ( (!((Br >=0.0))) )
3731  {
3732  UserError0(*this) << "ADMSHBT_X: Parameter Br value " << Br << " out of range [ 0.0, (+inf) [";
3733  }
3734 
3735  // Parameter VAF : [ 0.0, (+inf) [
3736  if ( (!((VAF >=0.0))) )
3737  {
3738  UserError0(*this) << "ADMSHBT_X: Parameter VAF value " << VAF << " out of range [ 0.0, (+inf) [";
3739  }
3740 
3741  // Parameter VAR : [ 0.0, (+inf) [
3742  if ( (!((VAR >=0.0))) )
3743  {
3744  UserError0(*this) << "ADMSHBT_X: Parameter VAR value " << VAR << " out of range [ 0.0, (+inf) [";
3745  }
3746 
3747  // Parameter IKF : [ 0.0, (+inf) [
3748  if ( (!((IKF >=0.0))) )
3749  {
3750  UserError0(*this) << "ADMSHBT_X: Parameter IKF value " << IKF << " out of range [ 0.0, (+inf) [";
3751  }
3752 
3753  // Parameter IKR : [ 0.0, (+inf) [
3754  if ( (!((IKR >=0.0))) )
3755  {
3756  UserError0(*this) << "ADMSHBT_X: Parameter IKR value " << IKR << " out of range [ 0.0, (+inf) [";
3757  }
3758 
3759  // Parameter Mc : [ 0.0, (+inf) [
3760  if ( (!((Mc >=0.0))) )
3761  {
3762  UserError0(*this) << "ADMSHBT_X: Parameter Mc value " << Mc << " out of range [ 0.0, (+inf) [";
3763  }
3764 
3765  // Parameter BVceo : [ 0.0, (+inf) [
3766  if ( (!((BVceo >=0.0))) )
3767  {
3768  UserError0(*this) << "ADMSHBT_X: Parameter BVceo value " << BVceo << " out of range [ 0.0, (+inf) [";
3769  }
3770 
3771  // Parameter kc : [ 0.0, (+inf) [
3772  if ( (!((kc >=0.0))) )
3773  {
3774  UserError0(*this) << "ADMSHBT_X: Parameter kc value " << kc << " out of range [ 0.0, (+inf) [";
3775  }
3776 
3777  // Parameter BVebo : [ 0.0, (+inf) [
3778  if ( (!((BVebo >=0.0))) )
3779  {
3780  UserError0(*this) << "ADMSHBT_X: Parameter BVebo value " << BVebo << " out of range [ 0.0, (+inf) [";
3781  }
3782 
3783  // Parameter Tr : [ 0.0, (+inf) [
3784  if ( (!((Tr >=0.0))) )
3785  {
3786  UserError0(*this) << "ADMSHBT_X: Parameter Tr value " << Tr << " out of range [ 0.0, (+inf) [";
3787  }
3788 
3789  // Parameter Trx : [ 0.0, (+inf) [
3790  if ( (!((Trx >=0.0))) )
3791  {
3792  UserError0(*this) << "ADMSHBT_X: Parameter Trx value " << Trx << " out of range [ 0.0, (+inf) [";
3793  }
3794 
3795  // Parameter Tf : [ 0.0, (+inf) [
3796  if ( (!((Tf >=0.0))) )
3797  {
3798  UserError0(*this) << "ADMSHBT_X: Parameter Tf value " << Tf << " out of range [ 0.0, (+inf) [";
3799  }
3800 
3801  // Parameter Tft : [ 0.0, (+inf) [
3802  if ( (!((Tft >=0.0))) )
3803  {
3804  UserError0(*this) << "ADMSHBT_X: Parameter Tft value " << Tft << " out of range [ 0.0, (+inf) [";
3805  }
3806 
3807  // Parameter Thcs : [ 0.0, (+inf) [
3808  if ( (!((Thcs >=0.0))) )
3809  {
3810  UserError0(*this) << "ADMSHBT_X: Parameter Thcs value " << Thcs << " out of range [ 0.0, (+inf) [";
3811  }
3812 
3813  // Parameter Ahc : [ 0.0, (+inf) [
3814  if ( (!((Ahc >=0.0))) )
3815  {
3816  UserError0(*this) << "ADMSHBT_X: Parameter Ahc value " << Ahc << " out of range [ 0.0, (+inf) [";
3817  }
3818 
3819  // Parameter Cje : [ 0.0, (+inf) [
3820  if ( (!((Cje >=0.0))) )
3821  {
3822  UserError0(*this) << "ADMSHBT_X: Parameter Cje value " << Cje << " out of range [ 0.0, (+inf) [";
3823  }
3824 
3825  // Parameter mje : [ 0.0, 1 [
3826  if ( (!((mje >=0.0 && mje <1 ))) )
3827  {
3828  UserError0(*this) << "ADMSHBT_X: Parameter mje value " << mje << " out of range [ 0.0, 1 [";
3829  }
3830 
3831  // Parameter Vje : [ 0.0, (+inf) [
3832  if ( (!((Vje >=0.0))) )
3833  {
3834  UserError0(*this) << "ADMSHBT_X: Parameter Vje value " << Vje << " out of range [ 0.0, (+inf) [";
3835  }
3836 
3837  // Parameter Cjc : [ 0.0, (+inf) [
3838  if ( (!((Cjc >=0.0))) )
3839  {
3840  UserError0(*this) << "ADMSHBT_X: Parameter Cjc value " << Cjc << " out of range [ 0.0, (+inf) [";
3841  }
3842 
3843  // Parameter mjc : [ 0.0, (+inf) [
3844  if ( (!((mjc >=0.0))) )
3845  {
3846  UserError0(*this) << "ADMSHBT_X: Parameter mjc value " << mjc << " out of range [ 0.0, (+inf) [";
3847  }
3848 
3849  // Parameter Vjc : [ 0.0, (+inf) [
3850  if ( (!((Vjc >=0.0))) )
3851  {
3852  UserError0(*this) << "ADMSHBT_X: Parameter Vjc value " << Vjc << " out of range [ 0.0, (+inf) [";
3853  }
3854 
3855  // Parameter kjc : ] (-inf) (+inf) [
3856 
3857  // Parameter Cmin : [ 0.0, (+inf) [
3858  if ( (!((Cmin >=0.0))) )
3859  {
3860  UserError0(*this) << "ADMSHBT_X: Parameter Cmin value " << Cmin << " out of range [ 0.0, (+inf) [";
3861  }
3862 
3863  // Parameter J0 : [ 0.0, (+inf) [
3864  if ( (!((J0 >=0.0))) )
3865  {
3866  UserError0(*this) << "ADMSHBT_X: Parameter J0 value " << J0 << " out of range [ 0.0, (+inf) [";
3867  }
3868 
3869  // Parameter XJ0 : [ 0.0, 1.0 ]
3870  if ( (!((XJ0 >=0.0 && XJ0 <=1.0 ))) )
3871  {
3872  UserError0(*this) << "ADMSHBT_X: Parameter XJ0 value " << XJ0 << " out of range [ 0.0, 1.0 ]";
3873  }
3874 
3875  // Parameter Rci0 : ] 0.0, (+inf) [
3876  if ( (!((Rci0 >0.0))) )
3877  {
3878  UserError0(*this) << "ADMSHBT_X: Parameter Rci0 value " << Rci0 << " out of range ] 0.0, (+inf) [";
3879  }
3880 
3881  // Parameter Jk : [ 0.0, (+inf) [
3882  if ( (!((Jk >=0.0))) )
3883  {
3884  UserError0(*this) << "ADMSHBT_X: Parameter Jk value " << Jk << " out of range [ 0.0, (+inf) [";
3885  }
3886 
3887  // Parameter RJk : [ 0.0, (+inf) [
3888  if ( (!((RJk >=0.0))) )
3889  {
3890  UserError0(*this) << "ADMSHBT_X: Parameter RJk value " << RJk << " out of range [ 0.0, (+inf) [";
3891  }
3892 
3893  // Parameter Vces : [ 0.0, (+inf) [
3894  if ( (!((Vces >=0.0))) )
3895  {
3896  UserError0(*this) << "ADMSHBT_X: Parameter Vces value " << Vces << " out of range [ 0.0, (+inf) [";
3897  }
3898 
3899  // Parameter Rc : ] 0.0, (+inf) [
3900  if ( (!((Rc >0.0))) )
3901  {
3902  UserError0(*this) << "ADMSHBT_X: Parameter Rc value " << Rc << " out of range ] 0.0, (+inf) [";
3903  }
3904 
3905  // Parameter Re : ] 0.0, (+inf) [
3906  if ( (!((Re >0.0))) )
3907  {
3908  UserError0(*this) << "ADMSHBT_X: Parameter Re value " << Re << " out of range ] 0.0, (+inf) [";
3909  }
3910 
3911  // Parameter Rb : ] 0.0, (+inf) [
3912  if ( (!((Rb >0.0))) )
3913  {
3914  UserError0(*this) << "ADMSHBT_X: Parameter Rb value " << Rb << " out of range ] 0.0, (+inf) [";
3915  }
3916 
3917  // Parameter Rb2 : ] 0.0, (+inf) [
3918  if ( (!((Rb2 >0.0))) )
3919  {
3920  UserError0(*this) << "ADMSHBT_X: Parameter Rb2 value " << Rb2 << " out of range ] 0.0, (+inf) [";
3921  }
3922 
3923  // Parameter Lc : [ 0.0, (+inf) [
3924  if ( (!((Lc >=0.0))) )
3925  {
3926  UserError0(*this) << "ADMSHBT_X: Parameter Lc value " << Lc << " out of range [ 0.0, (+inf) [";
3927  }
3928 
3929  // Parameter Le : [ 0.0, (+inf) [
3930  if ( (!((Le >=0.0))) )
3931  {
3932  UserError0(*this) << "ADMSHBT_X: Parameter Le value " << Le << " out of range [ 0.0, (+inf) [";
3933  }
3934 
3935  // Parameter Lb : [ 0.0, (+inf) [
3936  if ( (!((Lb >=0.0))) )
3937  {
3938  UserError0(*this) << "ADMSHBT_X: Parameter Lb value " << Lb << " out of range [ 0.0, (+inf) [";
3939  }
3940 
3941  // Parameter Cq : [ 0.0, (+inf) [
3942  if ( (!((Cq >=0.0))) )
3943  {
3944  UserError0(*this) << "ADMSHBT_X: Parameter Cq value " << Cq << " out of range [ 0.0, (+inf) [";
3945  }
3946 
3947  // Parameter Cpb : [ 0.0, (+inf) [
3948  if ( (!((Cpb >=0.0))) )
3949  {
3950  UserError0(*this) << "ADMSHBT_X: Parameter Cpb value " << Cpb << " out of range [ 0.0, (+inf) [";
3951  }
3952 
3953  // Parameter Cpc : [ 0.0, (+inf) [
3954  if ( (!((Cpc >=0.0))) )
3955  {
3956  UserError0(*this) << "ADMSHBT_X: Parameter Cpc value " << Cpc << " out of range [ 0.0, (+inf) [";
3957  }
3958 
3959  // Parameter Tnom : [ (-273.15), (+inf) [
3960  if ( (!((Tnom >=(-273.15)))) )
3961  {
3962  UserError0(*this) << "ADMSHBT_X: Parameter Tnom value " << Tnom << " out of range [ (-273.15), (+inf) [";
3963  }
3964 
3965  // Parameter dtype : [ (-1), 1 ][ 0, 0 ]
3966  if ( (!((dtype >=(-1) && dtype <=1 )) || (dtype >=0 && dtype <=0 )) )
3967  {
3968  UserError0(*this) << "ADMSHBT_X: Parameter dtype value " << dtype << " out of range [ (-1), 1 ] or in excluded range [ 0, 0 ]";
3969  }
3970 
3971 
3972  // and of course, this routine is where we should put the initial_model
3973  // stuff
3974 
3975 
3976  return true;
3977 }
3978 //----------------------------------------------------------------------------
3979 // Function : Model::processInstanceParams
3980 // Purpose :
3981 // Special Notes :
3982 // Scope : public
3983 // Creator :
3984 // Creation Date :
3985 //----------------------------------------------------------------------------
3987 {
3988 
3989  std::vector<Instance*>::iterator iter;
3990  std::vector<Instance*>::iterator first = instanceContainer.begin();
3991  std::vector<Instance*>::iterator last = instanceContainer.end();
3992 
3993  for (iter=first; iter!=last; ++iter)
3994  {
3995  (*iter)->processParams();
3996  }
3997 
3998  return true;
3999 }
4000 
4001 //-----------------------------------------------------------------------------
4002 // Function : Model::Model
4003 // Purpose : model block constructor
4004 // Special Notes :
4005 // Scope : public
4006 // Creator :
4007 // Creation Date :
4008 //-----------------------------------------------------------------------------
4010  const Configuration & configuration,
4011  const ModelBlock & model_block,
4012  const FactoryBlock & factory_block)
4013  : DeviceModel(model_block, configuration.getModelParameters(), factory_block),
4014  Mode(1),
4015  Noise(1),
4016  Debug(0),
4017  DebugPlus(0),
4018  Temp(25.0),
4019  Rth(0.1),
4020  Cth(700*1.0e-9),
4021  N(1),
4022  L(30*1.0e-6),
4023  W(3*1.0e-6),
4024  Jsf(20e-24),
4025  nf(1.0),
4026  Vg(1.3),
4027  Jse(0.0),
4028  ne(0.0),
4029  Rbxx(1e6),
4030  Vgb(0.0),
4031  Jsee(0.0),
4032  nee(0.0),
4033  Rbbxx(1e6),
4034  Vgbb(0.0),
4035  Jsr(20e-18),
4036  nr(1.0),
4037  Vgr(0.0),
4038  XCjc(0.5),
4039  Jsc(0.0),
4040  nc(0.0),
4041  Rcxx(1e6),
4042  Vgc(0.0),
4043  Bf(100.0),
4044  kBeta(0.0),
4045  Br(1.0),
4046  VAF(0.0),
4047  VAR(0.0),
4048  IKF(0.0),
4049  IKR(0.0),
4050  Mc(0.0),
4051  BVceo(0.0),
4052  kc(0.0),
4053  BVebo(0.0),
4054  Tr(1*1.0e-15),
4055  Trx(1*1.0e-15),
4056  Tf(1*1.0e-12),
4057  Tft(0.0),
4058  Thcs(0.0),
4059  Ahc(0.0),
4060  Cje(1*1.0e-15),
4061  mje(0.5),
4062  Vje(1.3),
4063  Cjc(1*1.0e-15),
4064  mjc(0.5),
4065  Vjc(1.3),
4066  kjc(1.0),
4067  Cmin(0.1*1.0e-15),
4068  J0(1e-3),
4069  XJ0(1.0),
4070  Rci0(1e-3),
4071  Jk(4e-4),
4072  RJk(1e-3),
4073  Vces(1e-3),
4074  Rc(1.0),
4075  Re(1.0),
4076  Rb(1.0),
4077  Rb2(1.0),
4078  Lc(0.0),
4079  Le(0.0),
4080  Lb(0.0),
4081  Cq(0.0),
4082  Cpb(0.0),
4083  Cpc(0.0),
4084  Tnom(20.0),
4085  dtype(1)
4086 {
4087  // Set params to constant default values (from parTable):
4088  setDefaultParams();
4089 
4090  // Set params according to .model line and constant defaults from metadata:
4091  setModParams(model_block.params);
4092 
4093  // Set any non-constant parameter defaults:
4094  // Set any parameters that were not given and whose defaults depend on other
4095  // parameters:
4096 
4097 
4098  if (!given("XYCEADMSMODTEMP"))
4099  admsModTemp=getDeviceOptions().temp.getImmutableValue<double>();
4100 
4101  // Fix the TNOM parameter that has "helpfully" been converted to Kelvin
4102  // by the DeviceEntity class
4103 
4104  if (given("TNOM"))
4105  Tnom -= CONSTCtoK;
4106 
4107  // Calculate any parameters specified as expressions:
4108 
4110 
4111  // set internal model type based on model card type
4112  if (getType() == "pnp" || getType() == "PNP")
4113  dtype = -1;
4114 
4115  // calculate dependent (ie computed) params and check for errors:
4116  processParams();
4117 }
4118 
4119 //-----------------------------------------------------------------------------
4120 // Function : Model::~Model
4121 // Purpose : destructor
4122 // Special Notes :
4123 // Scope : public
4124 // Creator :
4125 // Creation Date :
4126 //-----------------------------------------------------------------------------
4128 {
4129  std::vector<Instance*>::iterator iterI;
4130  std::vector<Instance*>::iterator firstI = instanceContainer.begin ();
4131  std::vector<Instance*>::iterator lastI = instanceContainer.end ();
4132 
4133  // loop over instances:
4134  for (iterI = firstI; iterI != lastI; ++iterI)
4135  {
4136  delete (*iterI);
4137  }
4138 }
4139 
4140 //-----------------------------------------------------------------------------
4141 // Function : Model::printOutInstances
4142 // Purpose : debugging tool.
4143 // Special Notes :
4144 // Scope : public
4145 // Creator :
4146 // Creation Date :
4147 //-----------------------------------------------------------------------------
4148 std::ostream &Model::printOutInstances(std::ostream &os) const
4149 {
4150  std::vector<Instance*>::const_iterator iter;
4151  std::vector<Instance*>::const_iterator first = instanceContainer.begin();
4152  std::vector<Instance*>::const_iterator last = instanceContainer.end();
4153 
4154  int i;
4155  os << std::endl;
4156  os << " name model name Parameters" << std::endl;
4157  for (i=0, iter=first; iter!=last; ++iter, ++i)
4158  {
4159  os << " " << i << ": " << (*iter)->getName() << " ";
4160  os << getName();
4161 
4162  os << std::endl;
4163  os << "TEMP = " << (*iter)->Temp << std::endl;
4164  os << "N = " << (*iter)->N << std::endl;
4165  os << "L = " << (*iter)->L << std::endl;
4166  os << "W = " << (*iter)->W << std::endl;
4167  os << std::endl;
4168  }
4169 
4170  os << std::endl;
4171 
4172  return os;
4173 }
4174 
4175 //-----------------------------------------------------------------------------
4176 // Function : Model::forEachInstance
4177 // Purpose :
4178 // Special Notes :
4179 // Scope : public
4180 // Creator : David Baur
4181 // Creation Date : 2/4/2014
4182 //-----------------------------------------------------------------------------
4183 /// Apply a device instance "op" to all instances associated with this
4184 /// model
4185 ///
4186 /// @param[in] op Operator to apply to all instances.
4187 ///
4188 ///
4189 void Model::forEachInstance(DeviceInstanceOp &op) const /* override */
4190 {
4191  for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
4192  op(*it);
4193 }
4194 
4195 Device *Traits::factory(const Configuration &configuration, const FactoryBlock &factory_block)
4196 {
4197  return new DeviceMaster<Traits>(configuration, factory_block, factory_block.solverState_, factory_block.deviceOptions_);
4198 }
4199 
4201 {
4203  .registerDevice("q", 23)
4204  .registerModelType("npn", 23)
4205  .registerModelType("pnp", 23);
4206 }
4207 
4208 
4209 
4210 #ifdef Xyce_ADMS_SENSITIVITIES
4211 //-----------------------------------------------------------------------------
4212 // Function : evaluateInitialInstance
4213 // Purpose : Evaluate the statements in the initial_instance block
4214 // Special Notes : specific for sensitivity use
4215 // Scope : public
4216 // Creator : admsXml
4217 // Creation Date :
4218 //-----------------------------------------------------------------------------
4219 void evaluateInitialInstance(
4220  // instance parameters
4221  // reals
4222  AdmsSensFadType & instancePar_Temp,
4223  bool instancePar_given_Temp,
4224  AdmsSensFadType & instancePar_L,
4225  bool instancePar_given_L,
4226  AdmsSensFadType & instancePar_W,
4227  bool instancePar_given_W,
4228  // non-reals(including hidden)
4229  int instancePar_N,
4230  bool instancePar_given_N,
4231  // model parameters
4232  // reals
4233  AdmsSensFadType & modelPar_Temp,
4234  bool modelPar_given_Temp,
4235  AdmsSensFadType & modelPar_Rth,
4236  bool modelPar_given_Rth,
4237  AdmsSensFadType & modelPar_Cth,
4238  bool modelPar_given_Cth,
4239  AdmsSensFadType & modelPar_L,
4240  bool modelPar_given_L,
4241  AdmsSensFadType & modelPar_W,
4242  bool modelPar_given_W,
4243  AdmsSensFadType & modelPar_Jsf,
4244  bool modelPar_given_Jsf,
4245  AdmsSensFadType & modelPar_nf,
4246  bool modelPar_given_nf,
4247  AdmsSensFadType & modelPar_Vg,
4248  bool modelPar_given_Vg,
4249  AdmsSensFadType & modelPar_Jse,
4250  bool modelPar_given_Jse,
4251  AdmsSensFadType & modelPar_ne,
4252  bool modelPar_given_ne,
4253  AdmsSensFadType & modelPar_Rbxx,
4254  bool modelPar_given_Rbxx,
4255  AdmsSensFadType & modelPar_Vgb,
4256  bool modelPar_given_Vgb,
4257  AdmsSensFadType & modelPar_Jsee,
4258  bool modelPar_given_Jsee,
4259  AdmsSensFadType & modelPar_nee,
4260  bool modelPar_given_nee,
4261  AdmsSensFadType & modelPar_Rbbxx,
4262  bool modelPar_given_Rbbxx,
4263  AdmsSensFadType & modelPar_Vgbb,
4264  bool modelPar_given_Vgbb,
4265  AdmsSensFadType & modelPar_Jsr,
4266  bool modelPar_given_Jsr,
4267  AdmsSensFadType & modelPar_nr,
4268  bool modelPar_given_nr,
4269  AdmsSensFadType & modelPar_Vgr,
4270  bool modelPar_given_Vgr,
4271  AdmsSensFadType & modelPar_XCjc,
4272  bool modelPar_given_XCjc,
4273  AdmsSensFadType & modelPar_Jsc,
4274  bool modelPar_given_Jsc,
4275  AdmsSensFadType & modelPar_nc,
4276  bool modelPar_given_nc,
4277  AdmsSensFadType & modelPar_Rcxx,
4278  bool modelPar_given_Rcxx,
4279  AdmsSensFadType & modelPar_Vgc,
4280  bool modelPar_given_Vgc,
4281  AdmsSensFadType & modelPar_Bf,
4282  bool modelPar_given_Bf,
4283  AdmsSensFadType & modelPar_kBeta,
4284  bool modelPar_given_kBeta,
4285  AdmsSensFadType & modelPar_Br,
4286  bool modelPar_given_Br,
4287  AdmsSensFadType & modelPar_VAF,
4288  bool modelPar_given_VAF,
4289  AdmsSensFadType & modelPar_VAR,
4290  bool modelPar_given_VAR,
4291  AdmsSensFadType & modelPar_IKF,
4292  bool modelPar_given_IKF,
4293  AdmsSensFadType & modelPar_IKR,
4294  bool modelPar_given_IKR,
4295  AdmsSensFadType & modelPar_Mc,
4296  bool modelPar_given_Mc,
4297  AdmsSensFadType & modelPar_BVceo,
4298  bool modelPar_given_BVceo,
4299  AdmsSensFadType & modelPar_kc,
4300  bool modelPar_given_kc,
4301  AdmsSensFadType & modelPar_BVebo,
4302  bool modelPar_given_BVebo,
4303  AdmsSensFadType & modelPar_Tr,
4304  bool modelPar_given_Tr,
4305  AdmsSensFadType & modelPar_Trx,
4306  bool modelPar_given_Trx,
4307  AdmsSensFadType & modelPar_Tf,
4308  bool modelPar_given_Tf,
4309  AdmsSensFadType & modelPar_Tft,
4310  bool modelPar_given_Tft,
4311  AdmsSensFadType & modelPar_Thcs,
4312  bool modelPar_given_Thcs,
4313  AdmsSensFadType & modelPar_Ahc,
4314  bool modelPar_given_Ahc,
4315  AdmsSensFadType & modelPar_Cje,
4316  bool modelPar_given_Cje,
4317  AdmsSensFadType & modelPar_mje,
4318  bool modelPar_given_mje,
4319  AdmsSensFadType & modelPar_Vje,
4320  bool modelPar_given_Vje,
4321  AdmsSensFadType & modelPar_Cjc,
4322  bool modelPar_given_Cjc,
4323  AdmsSensFadType & modelPar_mjc,
4324  bool modelPar_given_mjc,
4325  AdmsSensFadType & modelPar_Vjc,
4326  bool modelPar_given_Vjc,
4327  AdmsSensFadType & modelPar_kjc,
4328  bool modelPar_given_kjc,
4329  AdmsSensFadType & modelPar_Cmin,
4330  bool modelPar_given_Cmin,
4331  AdmsSensFadType & modelPar_J0,
4332  bool modelPar_given_J0,
4333  AdmsSensFadType & modelPar_XJ0,
4334  bool modelPar_given_XJ0,
4335  AdmsSensFadType & modelPar_Rci0,
4336  bool modelPar_given_Rci0,
4337  AdmsSensFadType & modelPar_Jk,
4338  bool modelPar_given_Jk,
4339  AdmsSensFadType & modelPar_RJk,
4340  bool modelPar_given_RJk,
4341  AdmsSensFadType & modelPar_Vces,
4342  bool modelPar_given_Vces,
4343  AdmsSensFadType & modelPar_Rc,
4344  bool modelPar_given_Rc,
4345  AdmsSensFadType & modelPar_Re,
4346  bool modelPar_given_Re,
4347  AdmsSensFadType & modelPar_Rb,
4348  bool modelPar_given_Rb,
4349  AdmsSensFadType & modelPar_Rb2,
4350  bool modelPar_given_Rb2,
4351  AdmsSensFadType & modelPar_Lc,
4352  bool modelPar_given_Lc,
4353  AdmsSensFadType & modelPar_Le,
4354  bool modelPar_given_Le,
4355  AdmsSensFadType & modelPar_Lb,
4356  bool modelPar_given_Lb,
4357  AdmsSensFadType & modelPar_Cq,
4358  bool modelPar_given_Cq,
4359  AdmsSensFadType & modelPar_Cpb,
4360  bool modelPar_given_Cpb,
4361  AdmsSensFadType & modelPar_Cpc,
4362  bool modelPar_given_Cpc,
4363  AdmsSensFadType & modelPar_Tnom,
4364  bool modelPar_given_Tnom,
4365  // non-reals (including hidden)
4366  int modelPar_Mode,
4367  bool modelPar_given_Mode,
4368  int modelPar_Noise,
4369  bool modelPar_given_Noise,
4370  int modelPar_Debug,
4371  bool modelPar_given_Debug,
4372  int modelPar_DebugPlus,
4373  bool modelPar_given_DebugPlus,
4374  int modelPar_N,
4375  bool modelPar_given_N,
4376  int modelPar_dtype,
4377  double admsTemperature, double adms_vt_nom)
4378 {
4379 }
4380 
4381 
4382 
4383 //-----------------------------------------------------------------------------
4384 // Function : evaluateInitialModel
4385 // Purpose : Evaluate the statements in the initial_model block
4386 // Special Notes : specific for sensitivity use
4387 // Scope : public
4388 // Creator : admsXml
4389 // Creation Date :
4390 //-----------------------------------------------------------------------------
4391 void evaluateInitialModel(
4392  // model parameters
4393  // reals
4394  AdmsSensFadType & modelPar_Temp,
4395  bool modelPar_given_Temp,
4396  AdmsSensFadType & modelPar_Rth,
4397  bool modelPar_given_Rth,
4398  AdmsSensFadType & modelPar_Cth,
4399  bool modelPar_given_Cth,
4400  AdmsSensFadType & modelPar_L,
4401  bool modelPar_given_L,
4402  AdmsSensFadType & modelPar_W,
4403  bool modelPar_given_W,
4404  AdmsSensFadType & modelPar_Jsf,
4405  bool modelPar_given_Jsf,
4406  AdmsSensFadType & modelPar_nf,
4407  bool modelPar_given_nf,
4408  AdmsSensFadType & modelPar_Vg,
4409  bool modelPar_given_Vg,
4410  AdmsSensFadType & modelPar_Jse,
4411  bool modelPar_given_Jse,
4412  AdmsSensFadType & modelPar_ne,
4413  bool modelPar_given_ne,
4414  AdmsSensFadType & modelPar_Rbxx,
4415  bool modelPar_given_Rbxx,
4416  AdmsSensFadType & modelPar_Vgb,
4417  bool modelPar_given_Vgb,
4418  AdmsSensFadType & modelPar_Jsee,
4419  bool modelPar_given_Jsee,
4420  AdmsSensFadType & modelPar_nee,
4421  bool modelPar_given_nee,
4422  AdmsSensFadType & modelPar_Rbbxx,
4423  bool modelPar_given_Rbbxx,
4424  AdmsSensFadType & modelPar_Vgbb,
4425  bool modelPar_given_Vgbb,
4426  AdmsSensFadType & modelPar_Jsr,
4427  bool modelPar_given_Jsr,
4428  AdmsSensFadType & modelPar_nr,
4429  bool modelPar_given_nr,
4430  AdmsSensFadType & modelPar_Vgr,
4431  bool modelPar_given_Vgr,
4432  AdmsSensFadType & modelPar_XCjc,
4433  bool modelPar_given_XCjc,
4434  AdmsSensFadType & modelPar_Jsc,
4435  bool modelPar_given_Jsc,
4436  AdmsSensFadType & modelPar_nc,
4437  bool modelPar_given_nc,
4438  AdmsSensFadType & modelPar_Rcxx,
4439  bool modelPar_given_Rcxx,
4440  AdmsSensFadType & modelPar_Vgc,
4441  bool modelPar_given_Vgc,
4442  AdmsSensFadType & modelPar_Bf,
4443  bool modelPar_given_Bf,
4444  AdmsSensFadType & modelPar_kBeta,
4445  bool modelPar_given_kBeta,
4446  AdmsSensFadType & modelPar_Br,
4447  bool modelPar_given_Br,
4448  AdmsSensFadType & modelPar_VAF,
4449  bool modelPar_given_VAF,
4450  AdmsSensFadType & modelPar_VAR,
4451  bool modelPar_given_VAR,
4452  AdmsSensFadType & modelPar_IKF,
4453  bool modelPar_given_IKF,
4454  AdmsSensFadType & modelPar_IKR,
4455  bool modelPar_given_IKR,
4456  AdmsSensFadType & modelPar_Mc,
4457  bool modelPar_given_Mc,
4458  AdmsSensFadType & modelPar_BVceo,
4459  bool modelPar_given_BVceo,
4460  AdmsSensFadType & modelPar_kc,
4461  bool modelPar_given_kc,
4462  AdmsSensFadType & modelPar_BVebo,
4463  bool modelPar_given_BVebo,
4464  AdmsSensFadType & modelPar_Tr,
4465  bool modelPar_given_Tr,
4466  AdmsSensFadType & modelPar_Trx,
4467  bool modelPar_given_Trx,
4468  AdmsSensFadType & modelPar_Tf,
4469  bool modelPar_given_Tf,
4470  AdmsSensFadType & modelPar_Tft,
4471  bool modelPar_given_Tft,
4472  AdmsSensFadType & modelPar_Thcs,
4473  bool modelPar_given_Thcs,
4474  AdmsSensFadType & modelPar_Ahc,
4475  bool modelPar_given_Ahc,
4476  AdmsSensFadType & modelPar_Cje,
4477  bool modelPar_given_Cje,
4478  AdmsSensFadType & modelPar_mje,
4479  bool modelPar_given_mje,
4480  AdmsSensFadType & modelPar_Vje,
4481  bool modelPar_given_Vje,
4482  AdmsSensFadType & modelPar_Cjc,
4483  bool modelPar_given_Cjc,
4484  AdmsSensFadType & modelPar_mjc,
4485  bool modelPar_given_mjc,
4486  AdmsSensFadType & modelPar_Vjc,
4487  bool modelPar_given_Vjc,
4488  AdmsSensFadType & modelPar_kjc,
4489  bool modelPar_given_kjc,
4490  AdmsSensFadType & modelPar_Cmin,
4491  bool modelPar_given_Cmin,
4492  AdmsSensFadType & modelPar_J0,
4493  bool modelPar_given_J0,
4494  AdmsSensFadType & modelPar_XJ0,
4495  bool modelPar_given_XJ0,
4496  AdmsSensFadType & modelPar_Rci0,
4497  bool modelPar_given_Rci0,
4498  AdmsSensFadType & modelPar_Jk,
4499  bool modelPar_given_Jk,
4500  AdmsSensFadType & modelPar_RJk,
4501  bool modelPar_given_RJk,
4502  AdmsSensFadType & modelPar_Vces,
4503  bool modelPar_given_Vces,
4504  AdmsSensFadType & modelPar_Rc,
4505  bool modelPar_given_Rc,
4506  AdmsSensFadType & modelPar_Re,
4507  bool modelPar_given_Re,
4508  AdmsSensFadType & modelPar_Rb,
4509  bool modelPar_given_Rb,
4510  AdmsSensFadType & modelPar_Rb2,
4511  bool modelPar_given_Rb2,
4512  AdmsSensFadType & modelPar_Lc,
4513  bool modelPar_given_Lc,
4514  AdmsSensFadType & modelPar_Le,
4515  bool modelPar_given_Le,
4516  AdmsSensFadType & modelPar_Lb,
4517  bool modelPar_given_Lb,
4518  AdmsSensFadType & modelPar_Cq,
4519  bool modelPar_given_Cq,
4520  AdmsSensFadType & modelPar_Cpb,
4521  bool modelPar_given_Cpb,
4522  AdmsSensFadType & modelPar_Cpc,
4523  bool modelPar_given_Cpc,
4524  AdmsSensFadType & modelPar_Tnom,
4525  bool modelPar_given_Tnom,
4526  // non-reals (including hidden)
4527  int modelPar_Mode,
4528  bool modelPar_given_Mode,
4529  int modelPar_Noise,
4530  bool modelPar_given_Noise,
4531  int modelPar_Debug,
4532  bool modelPar_given_Debug,
4533  int modelPar_DebugPlus,
4534  bool modelPar_given_DebugPlus,
4535  int modelPar_N,
4536  bool modelPar_given_N,
4537  int modelPar_dtype,
4538  double admsTemperature)
4539 {
4540 }
4541 
4542 
4543 
4544 //-----------------------------------------------------------------------------
4545 // Function : evaluateModelEquations
4546 // Purpose : Evaluate the main module block. Similar to
4547 // updateIntermediateVars, but takes all instance and model
4548 // parameters and variables as arguments instead of using
4549 // the ones stored in the objects.
4550 // Special Notes : specific for sensitivity use
4551 // Scope : public
4552 // Creator : admsXml
4553 // Creation Date :
4554 //-----------------------------------------------------------------------------
4555 void evaluateModelEquations(
4556  std::vector <double> & probeVars,
4557  // probe constants
4558  const int admsProbeID_V_t_ti,
4559  const int admsProbeID_V_b_c,
4560  const int admsProbeID_V_c_GND,
4561  const int admsProbeID_V_b_GND,
4562  const int admsProbeID_V_cx_bii,
4563  const int admsProbeID_V_exx_bii,
4564  const int admsProbeID_V_ex_bii,
4565  const int admsProbeID_V_bii_bi,
4566  const int admsProbeID_I_c_ci,
4567  const int admsProbeID_I_e_ei,
4568  const int admsProbeID_I_b_bi,
4569  const int admsProbeID_V_ti_GND,
4570  const int admsProbeID_V_ci_ei,
4571  const int admsProbeID_V_exx_ei,
4572  const int admsProbeID_V_cx_ci,
4573  const int admsProbeID_V_ex_ei,
4574  const int admsProbeID_V_bii_ei,
4575  const int admsProbeID_V_bii_ci,
4576  const int admsProbeID_V_bi_ci,
4577  // node constants
4578  const int admsNodeID_c,
4579  const int admsNodeID_b,
4580  const int admsNodeID_e,
4581  const int admsNodeID_t,
4582  const int admsNodeID_ei,
4583  const int admsNodeID_bi,
4584  const int admsNodeID_bii,
4585  const int admsNodeID_ci,
4586  const int admsNodeID_ti,
4587  const int admsNodeID_ex,
4588  const int admsNodeID_exx,
4589  const int admsNodeID_cx,
4590  const int admsBRA_ID_b_bi,
4591  const int admsBRA_ID_e_ei,
4592  const int admsBRA_ID_c_ci,
4593  // instance parameters
4594  // reals
4595  AdmsSensFadType & instancePar_Temp,
4596  bool instancePar_given_Temp,
4597  AdmsSensFadType & instancePar_L,
4598  bool instancePar_given_L,
4599  AdmsSensFadType & instancePar_W,
4600  bool instancePar_given_W,
4601  // non-reals(including hidden)
4602  int instancePar_N,
4603  bool instancePar_given_N,
4604  // model parameters
4605  // reals
4606  AdmsSensFadType & modelPar_Temp,
4607  bool modelPar_given_Temp,
4608  AdmsSensFadType & modelPar_Rth,
4609  bool modelPar_given_Rth,
4610  AdmsSensFadType & modelPar_Cth,
4611  bool modelPar_given_Cth,
4612  AdmsSensFadType & modelPar_L,
4613  bool modelPar_given_L,
4614  AdmsSensFadType & modelPar_W,
4615  bool modelPar_given_W,
4616  AdmsSensFadType & modelPar_Jsf,
4617  bool modelPar_given_Jsf,
4618  AdmsSensFadType & modelPar_nf,
4619  bool modelPar_given_nf,
4620  AdmsSensFadType & modelPar_Vg,
4621  bool modelPar_given_Vg,
4622  AdmsSensFadType & modelPar_Jse,
4623  bool modelPar_given_Jse,
4624  AdmsSensFadType & modelPar_ne,
4625  bool modelPar_given_ne,
4626  AdmsSensFadType & modelPar_Rbxx,
4627  bool modelPar_given_Rbxx,
4628  AdmsSensFadType & modelPar_Vgb,
4629  bool modelPar_given_Vgb,
4630  AdmsSensFadType & modelPar_Jsee,
4631  bool modelPar_given_Jsee,
4632  AdmsSensFadType & modelPar_nee,
4633  bool modelPar_given_nee,
4634  AdmsSensFadType & modelPar_Rbbxx,
4635  bool modelPar_given_Rbbxx,
4636  AdmsSensFadType & modelPar_Vgbb,
4637  bool modelPar_given_Vgbb,
4638  AdmsSensFadType & modelPar_Jsr,
4639  bool modelPar_given_Jsr,
4640  AdmsSensFadType & modelPar_nr,
4641  bool modelPar_given_nr,
4642  AdmsSensFadType & modelPar_Vgr,
4643  bool modelPar_given_Vgr,
4644  AdmsSensFadType & modelPar_XCjc,
4645  bool modelPar_given_XCjc,
4646  AdmsSensFadType & modelPar_Jsc,
4647  bool modelPar_given_Jsc,
4648  AdmsSensFadType & modelPar_nc,
4649  bool modelPar_given_nc,
4650  AdmsSensFadType & modelPar_Rcxx,
4651  bool modelPar_given_Rcxx,
4652  AdmsSensFadType & modelPar_Vgc,
4653  bool modelPar_given_Vgc,
4654  AdmsSensFadType & modelPar_Bf,
4655  bool modelPar_given_Bf,
4656  AdmsSensFadType & modelPar_kBeta,
4657  bool modelPar_given_kBeta,
4658  AdmsSensFadType & modelPar_Br,
4659  bool modelPar_given_Br,
4660  AdmsSensFadType & modelPar_VAF,
4661  bool modelPar_given_VAF,
4662  AdmsSensFadType & modelPar_VAR,
4663  bool modelPar_given_VAR,
4664  AdmsSensFadType & modelPar_IKF,
4665  bool modelPar_given_IKF,
4666  AdmsSensFadType & modelPar_IKR,
4667  bool modelPar_given_IKR,
4668  AdmsSensFadType & modelPar_Mc,
4669  bool modelPar_given_Mc,
4670  AdmsSensFadType & modelPar_BVceo,
4671  bool modelPar_given_BVceo,
4672  AdmsSensFadType & modelPar_kc,
4673  bool modelPar_given_kc,
4674  AdmsSensFadType & modelPar_BVebo,
4675  bool modelPar_given_BVebo,
4676  AdmsSensFadType & modelPar_Tr,
4677  bool modelPar_given_Tr,
4678  AdmsSensFadType & modelPar_Trx,
4679  bool modelPar_given_Trx,
4680  AdmsSensFadType & modelPar_Tf,
4681  bool modelPar_given_Tf,
4682  AdmsSensFadType & modelPar_Tft,
4683  bool modelPar_given_Tft,
4684  AdmsSensFadType & modelPar_Thcs,
4685  bool modelPar_given_Thcs,
4686  AdmsSensFadType & modelPar_Ahc,
4687  bool modelPar_given_Ahc,
4688  AdmsSensFadType & modelPar_Cje,
4689  bool modelPar_given_Cje,
4690  AdmsSensFadType & modelPar_mje,
4691  bool modelPar_given_mje,
4692  AdmsSensFadType & modelPar_Vje,
4693  bool modelPar_given_Vje,
4694  AdmsSensFadType & modelPar_Cjc,
4695  bool modelPar_given_Cjc,
4696  AdmsSensFadType & modelPar_mjc,
4697  bool modelPar_given_mjc,
4698  AdmsSensFadType & modelPar_Vjc,
4699  bool modelPar_given_Vjc,
4700  AdmsSensFadType & modelPar_kjc,
4701  bool modelPar_given_kjc,
4702  AdmsSensFadType & modelPar_Cmin,
4703  bool modelPar_given_Cmin,
4704  AdmsSensFadType & modelPar_J0,
4705  bool modelPar_given_J0,
4706  AdmsSensFadType & modelPar_XJ0,
4707  bool modelPar_given_XJ0,
4708  AdmsSensFadType & modelPar_Rci0,
4709  bool modelPar_given_Rci0,
4710  AdmsSensFadType & modelPar_Jk,
4711  bool modelPar_given_Jk,
4712  AdmsSensFadType & modelPar_RJk,
4713  bool modelPar_given_RJk,
4714  AdmsSensFadType & modelPar_Vces,
4715  bool modelPar_given_Vces,
4716  AdmsSensFadType & modelPar_Rc,
4717  bool modelPar_given_Rc,
4718  AdmsSensFadType & modelPar_Re,
4719  bool modelPar_given_Re,
4720  AdmsSensFadType & modelPar_Rb,
4721  bool modelPar_given_Rb,
4722  AdmsSensFadType & modelPar_Rb2,
4723  bool modelPar_given_Rb2,
4724  AdmsSensFadType & modelPar_Lc,
4725  bool modelPar_given_Lc,
4726  AdmsSensFadType & modelPar_Le,
4727  bool modelPar_given_Le,
4728  AdmsSensFadType & modelPar_Lb,
4729  bool modelPar_given_Lb,
4730  AdmsSensFadType & modelPar_Cq,
4731  bool modelPar_given_Cq,
4732  AdmsSensFadType & modelPar_Cpb,
4733  bool modelPar_given_Cpb,
4734  AdmsSensFadType & modelPar_Cpc,
4735  bool modelPar_given_Cpc,
4736  AdmsSensFadType & modelPar_Tnom,
4737  bool modelPar_given_Tnom,
4738  // non-reals (including hidden)
4739  int modelPar_Mode,
4740  bool modelPar_given_Mode,
4741  int modelPar_Noise,
4742  bool modelPar_given_Noise,
4743  int modelPar_Debug,
4744  bool modelPar_given_Debug,
4745  int modelPar_DebugPlus,
4746  bool modelPar_given_DebugPlus,
4747  int modelPar_N,
4748  bool modelPar_given_N,
4749  int modelPar_dtype,
4750  // basic variables
4751  double admsTemperature, double adms_vt_nom, double gmin, std::vector <AdmsSensFadType> & staticContributions, std::vector <AdmsSensFadType> & dynamicContributions, const Instance & theInstance)
4752 {
4753 
4754  // Local variables
4755  AdmsSensFadType qbe;
4756  AdmsSensFadType qbtf;
4757  AdmsSensFadType xtff;
4758  AdmsSensFadType Wh;
4759  AdmsSensFadType Ih;
4760  AdmsSensFadType AHC;
4761  AdmsSensFadType RCIO;
4762  AdmsSensFadType InvVpt;
4763  AdmsSensFadType Vlim;
4764  AdmsSensFadType qb2;
4765  AdmsSensFadType qbtra;
4766  AdmsSensFadType qbtr;
4767  AdmsSensFadType qb1;
4768  AdmsSensFadType qb2med;
4769  AdmsSensFadType xix;
4770  AdmsSensFadType I00;
4771  AdmsSensFadType Ipdiss;
4772  AdmsSensFadType Icdx;
4773  AdmsSensFadType Ibdxx;
4774  AdmsSensFadType Ibdx;
4775  AdmsSensFadType Ib1;
4776  AdmsSensFadType Ib0;
4777  AdmsSensFadType EdBeta;
4778  AdmsSensFadType mm;
4779  AdmsSensFadType Vbclin;
4780  double epsi;
4781  AdmsSensFadType Ibx;
4782  AdmsSensFadType Ib2;
4783  AdmsSensFadType Ic1;
4784  AdmsSensFadType Ic1r;
4785  AdmsSensFadType Ic0;
4786  AdmsSensFadType qb;
4787  AdmsSensFadType q2;
4788  AdmsSensFadType q1;
4789  AdmsSensFadType Ic1ra;
4790  AdmsSensFadType Ic0a;
4791  double TWO_Q;
4792  double FOUR_K;
4793  AdmsSensFadType Area;
4794  AdmsSensFadType Tex;
4795  AdmsSensFadType TjK;
4796  AdmsSensFadType Tj;
4797  double Texi;
4798  AdmsSensFadType vcei;
4799  AdmsSensFadType vxxe;
4800  AdmsSensFadType vxc;
4801  AdmsSensFadType vxe;
4802  AdmsSensFadType vbei;
4803  AdmsSensFadType vbci;
4804  AdmsSensFadType vbcx;
4805  AdmsSensFadType tVCrit;
4806 
4807 
4808  // -- code converted from analog/code block
4809  tVCrit = (adms_vt_nom*log((adms_vt_nom/(1.41421356237309504880*((((modelPar_Jsf*instancePar_L)*instancePar_W)*instancePar_N)*1e12)))));
4810  vbcx = probeVars[admsProbeID_V_bi_ci];
4811 
4812  vbci = probeVars[admsProbeID_V_bii_ci];
4813 
4814  vbei = probeVars[admsProbeID_V_bii_ei];
4815 
4816  vxe = (modelPar_dtype*(probeVars[admsProbeID_V_ex_ei]));
4817  vxc = (modelPar_dtype*(probeVars[admsProbeID_V_cx_ci]));
4818  vxxe = (modelPar_dtype*(probeVars[admsProbeID_V_exx_ei]));
4819  vcei = (modelPar_dtype*(probeVars[admsProbeID_V_ci_ei]));
4820  Texi = (probeVars[admsProbeID_V_ti_GND]);
4821  Tj = (Texi+instancePar_Temp);
4822  TjK = (Tj+273.15);
4823  Tex = (Tj-modelPar_Tnom);
4824  Area = (((instancePar_L*instancePar_W)*1.0e12)*instancePar_N);
4825  FOUR_K = (4*1.3806226e-23);
4826  TWO_Q = (2*1.6021918e-19);
4827  Ic0a = AnalogFunctions::diode<AdmsSensFadType>(vbei,modelPar_Jsf,modelPar_Vg,modelPar_nf,Area,Tj,modelPar_Tnom);
4828  Ic1ra = AnalogFunctions::diode<AdmsSensFadType>(vbci,(modelPar_XCjc*modelPar_Jsr),modelPar_Vgr,modelPar_nr,Area,Tj,modelPar_Tnom);
4829  if (((modelPar_VAF>0.0)&&(modelPar_VAR>0.0)))
4830  {
4831  q1 = ((1.0+((AnalogFunctions::charge<AdmsSensFadType>(vbei,1.0,modelPar_Vje,modelPar_mje,1.0)-AnalogFunctions::charge<AdmsSensFadType>(0.0,1.0,modelPar_Vje,modelPar_mje,1.0))/modelPar_VAR))+((AnalogFunctions::charge<AdmsSensFadType>(vbci,1.0,modelPar_Vjc,modelPar_mjc,1.0)-AnalogFunctions::charge<AdmsSensFadType>(0.0,1.0,modelPar_Vjc,modelPar_mjc,1.0))/modelPar_VAF));
4832  }
4833  else
4834  {
4835  if (((modelPar_VAF>0.0)&&(modelPar_VAR==0.0)))
4836  {
4837  q1 = (1.0+((AnalogFunctions::charge<AdmsSensFadType>(vbci,1.0,modelPar_Vjc,modelPar_mjc,1.0)-AnalogFunctions::charge<AdmsSensFadType>(0.0,1.0,modelPar_Vjc,modelPar_mjc,1.0))/modelPar_VAF));
4838  }
4839  else
4840  {
4841  if (((modelPar_VAF==0.0)&&(modelPar_VAR>0.0)))
4842  {
4843  q1 = (1.0+((AnalogFunctions::charge<AdmsSensFadType>(vbei,1.0,modelPar_Vje,modelPar_mje,1.0)-AnalogFunctions::charge<AdmsSensFadType>(0.0,1.0,modelPar_Vje,modelPar_mje,1.0))/modelPar_VAR));
4844  }
4845  else
4846  {
4847  q1 = 1.0;
4848  }
4849  }
4850  }
4851  if (((modelPar_IKF>0.0)&&(modelPar_IKR>0.0)))
4852  {
4853  q2 = ((Ic0a/(Area*modelPar_IKF))+(Ic1ra/(Area*modelPar_IKR)));
4854  }
4855  else
4856  {
4857  if (((modelPar_IKF>0.0)&&(modelPar_IKR==0.0)))
4858  {
4859  q2 = (Ic0a/(Area*modelPar_IKF));
4860  }
4861  else
4862  {
4863  if (((modelPar_IKF==0.0)&&(modelPar_IKR>0.0)))
4864  {
4865  q2 = (Ic1ra/(Area*modelPar_IKR));
4866  }
4867  else
4868  {
4869  q2 = 0.0;
4870  }
4871  }
4872  }
4873  qb = ((q1+sqrt(((q1*q1)+(4.0*q2))))/2.0);
4874  Ic0 = (Ic0a/qb);
4875  Ic1r = (Ic1ra/qb);
4876  Ic1 = (Ic0-Ic1r);
4877  Ib2 = (AnalogFunctions::diode<AdmsSensFadType>(vbci,(modelPar_XCjc*modelPar_Jsr),modelPar_Vgr,modelPar_nr,Area,Tj,modelPar_Tnom)/modelPar_Br);
4878  Ibx = (AnalogFunctions::diode<AdmsSensFadType>(vbcx,((1.0-modelPar_XCjc)*modelPar_Jsr),modelPar_Vgr,modelPar_nr,Area,Tj,modelPar_Tnom)/modelPar_Br);
4879  epsi = 1.0e-6;
4880  Vbclin = (modelPar_BVceo*pow((1.0-epsi),(1/modelPar_Mc)));
4881  mm = AnalogFunctions::MM<AdmsSensFadType>(vbci,modelPar_BVceo,modelPar_Mc,Vbclin,modelPar_Bf,modelPar_kc);
4882  if ((mm>1.0))
4883  {
4884  if ((modelPar_kBeta>0.0))
4885  {
4886  if (((modelPar_Bf-(modelPar_kBeta*Tex))>1e-6))
4887  {
4888  EdBeta = (((1/(modelPar_Bf-(modelPar_kBeta*Tex)))-(modelPar_kc*(mm-1)))/((modelPar_kc*(mm-1))+1));
4889  }
4890  else
4891  {
4892  EdBeta = ((1e6-(modelPar_kc*(mm-1)))/((modelPar_kc*(mm-1))+1));
4893  }
4894  }
4895  else
4896  {
4897  EdBeta = (((1/modelPar_Bf)-(modelPar_kc*(mm-1)))/((modelPar_kc*(mm-1))+1));
4898  }
4899  }
4900  else
4901  {
4902  if ((modelPar_kBeta>0.0))
4903  {
4904  if (((modelPar_Bf-(modelPar_kBeta*Tex))>1e-6))
4905  {
4906  EdBeta = (1/(modelPar_Bf-(modelPar_kBeta*Tex)));
4907  }
4908  else
4909  {
4910  EdBeta = 1e6;
4911  }
4912  }
4913  else
4914  {
4915  EdBeta = (1/modelPar_Bf);
4916  }
4917  }
4918  Ib0 = (Ic0a*EdBeta);
4919  if ((modelPar_BVebo>0))
4920  {
4921  Ib1 = (Ib0-AnalogFunctions::diode<AdmsSensFadType>(((-modelPar_BVebo)-vbei),modelPar_Jsf,0.0,1.0,Area,0.0,0.0));
4922  }
4923  else
4924  {
4925  Ib1 = Ib0;
4926  }
4927  if (((modelPar_Jse>0.0)&&(modelPar_ne>0)))
4928  {
4929  Ibdx = AnalogFunctions::diode<AdmsSensFadType>(vxe,modelPar_Jse,modelPar_Vgb,modelPar_ne,Area,Tj,modelPar_Tnom);
4930  }
4931  else
4932  {
4933  Ibdx = (vxe*1e-12);
4934  }
4935  if (((modelPar_Jsee>0.0)&&(modelPar_nee>0)))
4936  {
4937  Ibdxx = AnalogFunctions::diode<AdmsSensFadType>(vxxe,modelPar_Jsee,modelPar_Vgbb,modelPar_nee,Area,Tj,modelPar_Tnom);
4938  }
4939  else
4940  {
4941  Ibdxx = (vxxe*1e-12);
4942  }
4943  if (((modelPar_Jsc>0.0)&&(modelPar_nc>0)))
4944  {
4945  Icdx = AnalogFunctions::diode<AdmsSensFadType>(vxc,modelPar_Jsc,modelPar_Vgc,modelPar_nc,Area,Tj,modelPar_Tnom);
4946  }
4947  else
4948  {
4949  Icdx = (vxc*1e-12);
4950  }
4951  Ipdiss = ((((Ic1*vcei)+(Ib1*vbei))+(Ib2*vbci))+(Ibx*vbcx));
4952  if ((Ipdiss<0.0))
4953  {
4954  Ipdiss = 0;
4955  }
4956  I00 = (modelPar_J0*Area);
4957  if (((modelPar_XCjc<1.0)&&(modelPar_XCjc>0.0)))
4958  {
4959  if (((modelPar_J0<=0.0)||(Ic0<0.0)))
4960  {
4961  qb2med = ((modelPar_XCjc*AnalogFunctions::charge<AdmsSensFadType>(vbci,(modelPar_Cjc-modelPar_Cmin),modelPar_Vjc,modelPar_mjc,Area))+(((modelPar_XCjc*Area)*modelPar_Cmin)*vbci));
4962  }
4963  else
4964  {
4965  xix = (Ic0/I00);
4966  qb2med = (((modelPar_XCjc*(1.0-tanh(xix)))*(AnalogFunctions::charge<AdmsSensFadType>(vbci,(modelPar_Cjc-modelPar_Cmin),modelPar_Vjc,modelPar_mjc,Area)+((((1.0-modelPar_XJ0)*Area)*modelPar_Cmin)*vbci)))+((((modelPar_XJ0*modelPar_XCjc)*Area)*modelPar_Cmin)*vbci));
4967  }
4968  }
4969  else
4970  {
4971  if (((modelPar_J0<0.0)||(Ic0<0.0)))
4972  {
4973  qb2med = (AnalogFunctions::charge<AdmsSensFadType>(vbci,(modelPar_Cjc-modelPar_Cmin),modelPar_Vjc,modelPar_mjc,Area)+((Area*modelPar_Cmin)*vbci));
4974  }
4975  else
4976  {
4977  xix = (Ic0/I00);
4978  qb2med = (((1.0-tanh(xix))*(AnalogFunctions::charge<AdmsSensFadType>(vbci,(modelPar_Cjc-modelPar_Cmin),modelPar_Vjc,modelPar_mjc,Area)+((((1.0-modelPar_XJ0)*Area)*modelPar_Cmin)*vbci)))+(((modelPar_XJ0*Area)*modelPar_Cmin)*vbci));
4979  }
4980  }
4981  if (((modelPar_XCjc<1.0)&&(modelPar_XCjc>0.0)))
4982  {
4983  qb1 = (((1.0-modelPar_XCjc)*AnalogFunctions::charge<AdmsSensFadType>(vbcx,(modelPar_Cjc-modelPar_Cmin),modelPar_Vjc,modelPar_mjc,Area))+((((1.0-modelPar_XCjc)*Area)*modelPar_Cmin)*vbcx));
4984  }
4985  else
4986  {
4987  qb1 = 0.0;
4988  }
4989  qbtr = (modelPar_Tr*Ic1r);
4990  qbtra = (modelPar_Trx*Ibx);
4991  qb2 = (qb2med+qbtr);
4992  if (((modelPar_Jk>0.0)&&(modelPar_Rci0>0.0)))
4993  {
4994  if ((modelPar_RJk>0.0))
4995  {
4996  Vlim = ((modelPar_Jk*modelPar_Rci0)/(1.0-(modelPar_Rci0/modelPar_RJk)));
4997  InvVpt = ((1.0-(modelPar_Rci0/modelPar_RJk))/(modelPar_Jk*modelPar_RJk));
4998  }
4999  else
5000  {
5001  Vlim = ((modelPar_Jk*modelPar_Rci0)/1.016);
5002  InvVpt = 0.0;
5003  }
5004  }
5005  if (((((modelPar_Thcs>0.0)&&(modelPar_Ahc>0.0))&&(modelPar_Jk>0.0))&&(Ic0>0.0)))
5006  {
5007  RCIO = (modelPar_Rci0/Area);
5008  AHC = (Area*modelPar_Ahc);
5009  if (((modelPar_Rci0<modelPar_RJk)||(modelPar_RJk<=0.0)))
5010  {
5011  Ih = (1.0-(AnalogFunctions::ICK<AdmsSensFadType>(vcei,RCIO,Vlim,InvVpt,modelPar_Vces)/Ic0));
5012  }
5013  else
5014  {
5015  Ih = (1.0-(AnalogFunctions::Vceff<AdmsSensFadType>(vcei,modelPar_Vces)/(RCIO*Ic0)));
5016  }
5017  Wh = ((Ih+sqrt(((Ih*Ih)+AHC)))/(1.0+sqrt((1.0+AHC))));
5018  xtff = ((modelPar_Thcs*Ic0)*(Wh*Wh));
5019  }
5020  else
5021  {
5022  xtff = 0;
5023  }
5024  qbtf = ((modelPar_Tf+(modelPar_Tft*Tex))*Ic0);
5025  qbe = ((xtff+qbtf)+AnalogFunctions::charge<AdmsSensFadType>(vbei,modelPar_Cje,modelPar_Vje,modelPar_mje,Area));
5026  // I(bi,ci) <+ ((dtype*Ibx))
5027  staticContributions[admsNodeID_bi] += (modelPar_dtype*Ibx);
5028  staticContributions[admsNodeID_ci] -= (modelPar_dtype*Ibx);
5029  // I(bi,ci) <+ ((dtype*ddt((qb1+qbtra))))
5030  dynamicContributions[admsNodeID_bi] += (modelPar_dtype*((qb1+qbtra)));
5031  dynamicContributions[admsNodeID_ci] -= (modelPar_dtype*((qb1+qbtra)));
5032  // I(bii,ci) <+ ((dtype*Ib2))
5033  staticContributions[admsNodeID_bii] += (modelPar_dtype*Ib2);
5034  staticContributions[admsNodeID_ci] -= (modelPar_dtype*Ib2);
5035  // I(bii,ci) <+ ((dtype*ddt(qb2)))
5036  dynamicContributions[admsNodeID_bii] += (modelPar_dtype*(qb2));
5037  dynamicContributions[admsNodeID_ci] -= (modelPar_dtype*(qb2));
5038  // I(bii,ei) <+ ((dtype*Ib1))
5039  staticContributions[admsNodeID_bii] += (modelPar_dtype*Ib1);
5040  staticContributions[admsNodeID_ei] -= (modelPar_dtype*Ib1);
5041  // I(bii,ei) <+ ((dtype*ddt(qbe)))
5042  dynamicContributions[admsNodeID_bii] += (modelPar_dtype*(qbe));
5043  dynamicContributions[admsNodeID_ei] -= (modelPar_dtype*(qbe));
5044  // I(ci,ei) <+ ((dtype*Ic1))
5045  staticContributions[admsNodeID_ci] += (modelPar_dtype*Ic1);
5046  staticContributions[admsNodeID_ei] -= (modelPar_dtype*Ic1);
5047  // I(ex,ei) <+ ((dtype*Ibdx))
5048  staticContributions[admsNodeID_ex] += (modelPar_dtype*Ibdx);
5049  staticContributions[admsNodeID_ei] -= (modelPar_dtype*Ibdx);
5050  // I(exx,ei) <+ ((dtype*Ibdxx))
5051  staticContributions[admsNodeID_exx] += (modelPar_dtype*Ibdxx);
5052  staticContributions[admsNodeID_ei] -= (modelPar_dtype*Ibdxx);
5053  // I(cx,ci) <+ ((dtype*Icdx))
5054  staticContributions[admsNodeID_cx] += (modelPar_dtype*Icdx);
5055  staticContributions[admsNodeID_ci] -= (modelPar_dtype*Icdx);
5056  // V(b,bi) <+ ((I(b,bi)*(Rb/N)))
5057  staticContributions[admsBRA_ID_b_bi] += ((probeVars[admsProbeID_I_b_bi])*(modelPar_Rb/instancePar_N));
5058  // V(b,bi) <+ (ddt((I(b,bi)*Lb)))
5059  dynamicContributions[admsBRA_ID_b_bi] += (((probeVars[admsProbeID_I_b_bi])*modelPar_Lb));
5060  // V(e,ei) <+ ((I(e,ei)*(Re/N)))
5061  staticContributions[admsBRA_ID_e_ei] += ((probeVars[admsProbeID_I_e_ei])*(modelPar_Re/instancePar_N));
5062  // V(e,ei) <+ (ddt((I(e,ei)*Le)))
5063  dynamicContributions[admsBRA_ID_e_ei] += (((probeVars[admsProbeID_I_e_ei])*modelPar_Le));
5064  // V(c,ci) <+ ((I(c,ci)*(Rc/N)))
5065  staticContributions[admsBRA_ID_c_ci] += ((probeVars[admsProbeID_I_c_ci])*(modelPar_Rc/instancePar_N));
5066  // V(c,ci) <+ (ddt((I(c,ci)*Lc)))
5067  dynamicContributions[admsBRA_ID_c_ci] += (((probeVars[admsProbeID_I_c_ci])*modelPar_Lc));
5068  // I(bii,bi) <+ ((V(bii,bi)/(Rb2/N)))
5069  staticContributions[admsNodeID_bii] += ((probeVars[admsProbeID_V_bii_bi])/(modelPar_Rb2/instancePar_N));
5070  staticContributions[admsNodeID_bi] -= ((probeVars[admsProbeID_V_bii_bi])/(modelPar_Rb2/instancePar_N));
5071  if (((modelPar_Jse>0.0)&&(modelPar_ne>0)))
5072  {
5073  // I(ex,bii) <+ ((V(ex,bii)/(Rbxx/N)))
5074  staticContributions[admsNodeID_ex] += ((probeVars[admsProbeID_V_ex_bii])/(modelPar_Rbxx/instancePar_N));
5075  staticContributions[admsNodeID_bii] -= ((probeVars[admsProbeID_V_ex_bii])/(modelPar_Rbxx/instancePar_N));
5076  }
5077  else
5078  {
5079  // I(ex,bii) <+ ((V(ex,bii)*1e-12))
5080  staticContributions[admsNodeID_ex] += ((probeVars[admsProbeID_V_ex_bii])*1e-12);
5081  staticContributions[admsNodeID_bii] -= ((probeVars[admsProbeID_V_ex_bii])*1e-12);
5082  }
5083  if (((modelPar_Jsee>0.0)&&(modelPar_nee>0)))
5084  {
5085  // I(exx,bii) <+ ((V(exx,bii)/(Rbbxx/N)))
5086  staticContributions[admsNodeID_exx] += ((probeVars[admsProbeID_V_exx_bii])/(modelPar_Rbbxx/instancePar_N));
5087  staticContributions[admsNodeID_bii] -= ((probeVars[admsProbeID_V_exx_bii])/(modelPar_Rbbxx/instancePar_N));
5088  }
5089  else
5090  {
5091  // I(exx,bii) <+ ((V(exx,bii)*1e-12))
5092  staticContributions[admsNodeID_exx] += ((probeVars[admsProbeID_V_exx_bii])*1e-12);
5093  staticContributions[admsNodeID_bii] -= ((probeVars[admsProbeID_V_exx_bii])*1e-12);
5094  }
5095  if (((modelPar_Jsc>0.0)&&(modelPar_nc>0)))
5096  {
5097  // I(cx,bii) <+ ((V(cx,bii)/(Rcxx/N)))
5098  staticContributions[admsNodeID_cx] += ((probeVars[admsProbeID_V_cx_bii])/(modelPar_Rcxx/instancePar_N));
5099  staticContributions[admsNodeID_bii] -= ((probeVars[admsProbeID_V_cx_bii])/(modelPar_Rcxx/instancePar_N));
5100  }
5101  else
5102  {
5103  // I(cx,bii) <+ ((V(cx,bii)*1e-12))
5104  staticContributions[admsNodeID_cx] += ((probeVars[admsProbeID_V_cx_bii])*1e-12);
5105  staticContributions[admsNodeID_bii] -= ((probeVars[admsProbeID_V_cx_bii])*1e-12);
5106  }
5107  // I(b,GND) <+ (ddt((Cpb*V(b,GND))))
5108  dynamicContributions[admsNodeID_b] += ((modelPar_Cpb*(probeVars[admsProbeID_V_b_GND])));
5109  // I(c,GND) <+ (ddt((Cpc*V(c,GND))))
5110  dynamicContributions[admsNodeID_c] += ((modelPar_Cpc*(probeVars[admsProbeID_V_c_GND])));
5111  // I(b,c) <+ (ddt((Cq*V(b,c))))
5112  dynamicContributions[admsNodeID_b] += ((modelPar_Cq*(probeVars[admsProbeID_V_b_c])));
5113  dynamicContributions[admsNodeID_c] -= ((modelPar_Cq*(probeVars[admsProbeID_V_b_c])));
5114  // I(ti,GND) <+ ((-Ipdiss))
5115  staticContributions[admsNodeID_ti] += (-Ipdiss);
5116  if ((modelPar_Rth>0))
5117  {
5118  // I(t,ti) <+ ((V(t,ti)/Rth))
5119  staticContributions[admsNodeID_t] += ((probeVars[admsProbeID_V_t_ti])/modelPar_Rth);
5120  staticContributions[admsNodeID_ti] -= ((probeVars[admsProbeID_V_t_ti])/modelPar_Rth);
5121  // I(t,ti) <+ ((Cth*ddt(V(t,ti))))
5122  dynamicContributions[admsNodeID_t] += (modelPar_Cth*((probeVars[admsProbeID_V_t_ti])));
5123  dynamicContributions[admsNodeID_ti] -= (modelPar_Cth*((probeVars[admsProbeID_V_t_ti])));
5124  }
5125  else
5126  {
5127  // I(t,ti) <+ ((V(t,ti)*1e3))
5128  staticContributions[admsNodeID_t] += ((probeVars[admsProbeID_V_t_ti])*1e3);
5129  staticContributions[admsNodeID_ti] -= ((probeVars[admsProbeID_V_t_ti])*1e3);
5130  }
5131 }
5132 
5133 
5134 
5135 //-----------------------------------------------------------------------------
5136 // Function : InstanceSensitivity::operator()
5137 // Purpose : return sensitivity for a single instance parameter
5138 // Special Notes :
5139 // Scope : public
5140 // Creator : admsXml
5141 // Creation Date :
5142 //-----------------------------------------------------------------------------
5143 /// Compute sensitivity of a device instance's outputs to a specified instance
5144 /// parameter
5145 ///
5146 ///
5147 /// @param[in] entity The device entity that owns the parameter
5148 /// @param[in] name The unadorned parameter name specific to the entity
5149 /// @param[out] dfdp The derivative of the F vector with respect to the parameter
5150 /// @param[out] dqdp The derivative of the Q vector with respect to the parameter
5151 /// @param[out] dbdp The derivative of the B vector with respect to the parameter
5152 /// @param[out] Findices The indices into the F vector corresponding to the elements of dfdp
5153 /// @param[out] Qindices The indices into the Q vector corresponding to the elements of dfdp
5154 /// @param[out] Bindices The indices into the B vector corresponding to the elements of dfdp
5155 ///
5156 ///
5157 void InstanceSensitivity::operator()
5158  (
5159  const ParameterBase &entity,
5160  const std::string &name,
5161  std::vector<double> & dfdp,
5162  std::vector<double> & dqdp,
5163  std::vector<double> & dbdp,
5164  std::vector<int> & Findices,
5165  std::vector<int> & Qindices,
5166  std::vector<int> & Bindices
5167  ) const
5168 {
5169  const ParameterBase * e1 = &entity;
5170  const Instance & in = *(dynamic_cast<const Instance *> (e1));
5171  const Model & mod =in.model_;
5172 
5173  dfdp.resize(12+3);
5174  dqdp.resize(12+3);
5175  Findices.resize(12+3);
5176  Qindices.resize(12+3);
5177 
5178  std::vector <double> probeVars(19);
5179  std::vector <AdmsSensFadType> staticContributions(12+3);
5180  std::vector <AdmsSensFadType> dynamicContributions(12+3);
5181 
5182 
5183  // initialize contributions to zero (automatically sets derivatives to zero)
5184  for (int i=0; i < 12+3 ; ++i)
5185  {
5186  staticContributions[i]=0;
5187  dynamicContributions[i]=0;
5188  }
5189 
5190  // Copy out all the model parameters (doubles) into FAD types
5191  //reals
5192  AdmsSensFadType modelPar_Temp=mod.Temp;
5193  bool modelPar_given_Temp=mod.given("Temp");
5194  AdmsSensFadType modelPar_Rth=mod.Rth;
5195  bool modelPar_given_Rth=mod.given("Rth");
5196  AdmsSensFadType modelPar_Cth=mod.Cth;
5197  bool modelPar_given_Cth=mod.given("Cth");
5198  AdmsSensFadType modelPar_L=mod.L;
5199  bool modelPar_given_L=mod.given("L");
5200  AdmsSensFadType modelPar_W=mod.W;
5201  bool modelPar_given_W=mod.given("W");
5202  AdmsSensFadType modelPar_Jsf=mod.Jsf;
5203  bool modelPar_given_Jsf=mod.given("Jsf");
5204  AdmsSensFadType modelPar_nf=mod.nf;
5205  bool modelPar_given_nf=mod.given("nf");
5206  AdmsSensFadType modelPar_Vg=mod.Vg;
5207  bool modelPar_given_Vg=mod.given("Vg");
5208  AdmsSensFadType modelPar_Jse=mod.Jse;
5209  bool modelPar_given_Jse=mod.given("Jse");
5210  AdmsSensFadType modelPar_ne=mod.ne;
5211  bool modelPar_given_ne=mod.given("ne");
5212  AdmsSensFadType modelPar_Rbxx=mod.Rbxx;
5213  bool modelPar_given_Rbxx=mod.given("Rbxx");
5214  AdmsSensFadType modelPar_Vgb=mod.Vgb;
5215  bool modelPar_given_Vgb=mod.given("Vgb");
5216  AdmsSensFadType modelPar_Jsee=mod.Jsee;
5217  bool modelPar_given_Jsee=mod.given("Jsee");
5218  AdmsSensFadType modelPar_nee=mod.nee;
5219  bool modelPar_given_nee=mod.given("nee");
5220  AdmsSensFadType modelPar_Rbbxx=mod.Rbbxx;
5221  bool modelPar_given_Rbbxx=mod.given("Rbbxx");
5222  AdmsSensFadType modelPar_Vgbb=mod.Vgbb;
5223  bool modelPar_given_Vgbb=mod.given("Vgbb");
5224  AdmsSensFadType modelPar_Jsr=mod.Jsr;
5225  bool modelPar_given_Jsr=mod.given("Jsr");
5226  AdmsSensFadType modelPar_nr=mod.nr;
5227  bool modelPar_given_nr=mod.given("nr");
5228  AdmsSensFadType modelPar_Vgr=mod.Vgr;
5229  bool modelPar_given_Vgr=mod.given("Vgr");
5230  AdmsSensFadType modelPar_XCjc=mod.XCjc;
5231  bool modelPar_given_XCjc=mod.given("XCjc");
5232  AdmsSensFadType modelPar_Jsc=mod.Jsc;
5233  bool modelPar_given_Jsc=mod.given("Jsc");
5234  AdmsSensFadType modelPar_nc=mod.nc;
5235  bool modelPar_given_nc=mod.given("nc");
5236  AdmsSensFadType modelPar_Rcxx=mod.Rcxx;
5237  bool modelPar_given_Rcxx=mod.given("Rcxx");
5238  AdmsSensFadType modelPar_Vgc=mod.Vgc;
5239  bool modelPar_given_Vgc=mod.given("Vgc");
5240  AdmsSensFadType modelPar_Bf=mod.Bf;
5241  bool modelPar_given_Bf=mod.given("Bf");
5242  AdmsSensFadType modelPar_kBeta=mod.kBeta;
5243  bool modelPar_given_kBeta=mod.given("kBeta");
5244  AdmsSensFadType modelPar_Br=mod.Br;
5245  bool modelPar_given_Br=mod.given("Br");
5246  AdmsSensFadType modelPar_VAF=mod.VAF;
5247  bool modelPar_given_VAF=mod.given("VAF");
5248  AdmsSensFadType modelPar_VAR=mod.VAR;
5249  bool modelPar_given_VAR=mod.given("VAR");
5250  AdmsSensFadType modelPar_IKF=mod.IKF;
5251  bool modelPar_given_IKF=mod.given("IKF");
5252  AdmsSensFadType modelPar_IKR=mod.IKR;
5253  bool modelPar_given_IKR=mod.given("IKR");
5254  AdmsSensFadType modelPar_Mc=mod.Mc;
5255  bool modelPar_given_Mc=mod.given("Mc");
5256  AdmsSensFadType modelPar_BVceo=mod.BVceo;
5257  bool modelPar_given_BVceo=mod.given("BVceo");
5258  AdmsSensFadType modelPar_kc=mod.kc;
5259  bool modelPar_given_kc=mod.given("kc");
5260  AdmsSensFadType modelPar_BVebo=mod.BVebo;
5261  bool modelPar_given_BVebo=mod.given("BVebo");
5262  AdmsSensFadType modelPar_Tr=mod.Tr;
5263  bool modelPar_given_Tr=mod.given("Tr");
5264  AdmsSensFadType modelPar_Trx=mod.Trx;
5265  bool modelPar_given_Trx=mod.given("Trx");
5266  AdmsSensFadType modelPar_Tf=mod.Tf;
5267  bool modelPar_given_Tf=mod.given("Tf");
5268  AdmsSensFadType modelPar_Tft=mod.Tft;
5269  bool modelPar_given_Tft=mod.given("Tft");
5270  AdmsSensFadType modelPar_Thcs=mod.Thcs;
5271  bool modelPar_given_Thcs=mod.given("Thcs");
5272  AdmsSensFadType modelPar_Ahc=mod.Ahc;
5273  bool modelPar_given_Ahc=mod.given("Ahc");
5274  AdmsSensFadType modelPar_Cje=mod.Cje;
5275  bool modelPar_given_Cje=mod.given("Cje");
5276  AdmsSensFadType modelPar_mje=mod.mje;
5277  bool modelPar_given_mje=mod.given("mje");
5278  AdmsSensFadType modelPar_Vje=mod.Vje;
5279  bool modelPar_given_Vje=mod.given("Vje");
5280  AdmsSensFadType modelPar_Cjc=mod.Cjc;
5281  bool modelPar_given_Cjc=mod.given("Cjc");
5282  AdmsSensFadType modelPar_mjc=mod.mjc;
5283  bool modelPar_given_mjc=mod.given("mjc");
5284  AdmsSensFadType modelPar_Vjc=mod.Vjc;
5285  bool modelPar_given_Vjc=mod.given("Vjc");
5286  AdmsSensFadType modelPar_kjc=mod.kjc;
5287  bool modelPar_given_kjc=mod.given("kjc");
5288  AdmsSensFadType modelPar_Cmin=mod.Cmin;
5289  bool modelPar_given_Cmin=mod.given("Cmin");
5290  AdmsSensFadType modelPar_J0=mod.J0;
5291  bool modelPar_given_J0=mod.given("J0");
5292  AdmsSensFadType modelPar_XJ0=mod.XJ0;
5293  bool modelPar_given_XJ0=mod.given("XJ0");
5294  AdmsSensFadType modelPar_Rci0=mod.Rci0;
5295  bool modelPar_given_Rci0=mod.given("Rci0");
5296  AdmsSensFadType modelPar_Jk=mod.Jk;
5297  bool modelPar_given_Jk=mod.given("Jk");
5298  AdmsSensFadType modelPar_RJk=mod.RJk;
5299  bool modelPar_given_RJk=mod.given("RJk");
5300  AdmsSensFadType modelPar_Vces=mod.Vces;
5301  bool modelPar_given_Vces=mod.given("Vces");
5302  AdmsSensFadType modelPar_Rc=mod.Rc;
5303  bool modelPar_given_Rc=mod.given("Rc");
5304  AdmsSensFadType modelPar_Re=mod.Re;
5305  bool modelPar_given_Re=mod.given("Re");
5306  AdmsSensFadType modelPar_Rb=mod.Rb;
5307  bool modelPar_given_Rb=mod.given("Rb");
5308  AdmsSensFadType modelPar_Rb2=mod.Rb2;
5309  bool modelPar_given_Rb2=mod.given("Rb2");
5310  AdmsSensFadType modelPar_Lc=mod.Lc;
5311  bool modelPar_given_Lc=mod.given("Lc");
5312  AdmsSensFadType modelPar_Le=mod.Le;
5313  bool modelPar_given_Le=mod.given("Le");
5314  AdmsSensFadType modelPar_Lb=mod.Lb;
5315  bool modelPar_given_Lb=mod.given("Lb");
5316  AdmsSensFadType modelPar_Cq=mod.Cq;
5317  bool modelPar_given_Cq=mod.given("Cq");
5318  AdmsSensFadType modelPar_Cpb=mod.Cpb;
5319  bool modelPar_given_Cpb=mod.given("Cpb");
5320  AdmsSensFadType modelPar_Cpc=mod.Cpc;
5321  bool modelPar_given_Cpc=mod.given("Cpc");
5322  AdmsSensFadType modelPar_Tnom=mod.Tnom;
5323  bool modelPar_given_Tnom=mod.given("Tnom");
5324 
5325 
5326  // hidden reals
5327 
5328 
5329  // non-reals (including hiddens)
5330  int modelPar_Mode=mod.Mode;
5331  bool modelPar_given_Mode=mod.given("Mode");
5332  int modelPar_Noise=mod.Noise;
5333  bool modelPar_given_Noise=mod.given("Noise");
5334  int modelPar_Debug=mod.Debug;
5335  bool modelPar_given_Debug=mod.given("Debug");
5336  int modelPar_DebugPlus=mod.DebugPlus;
5337  bool modelPar_given_DebugPlus=mod.given("DebugPlus");
5338  int modelPar_N=mod.N;
5339  bool modelPar_given_N=mod.given("N");
5340  int modelPar_dtype=mod.dtype;
5341 
5342 
5343 
5344  // Copy out all the instance parameters (doubles) into FAD types
5345  // Keep a map so we can set the right one to the independent variable
5346  // We do this solely to avoid a big ugly "if/else" block just to find the
5347  // one parameter we're doing sensitivities on.
5348  unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> inParamMap;
5349 
5350  // reals
5351  AdmsSensFadType instancePar_Temp=in.Temp;
5352  bool instancePar_given_Temp=in.given("Temp");
5353  inParamMap["Temp"] = &instancePar_Temp;
5354  AdmsSensFadType instancePar_L=in.L;
5355  bool instancePar_given_L=in.given("L");
5356  inParamMap["L"] = &instancePar_L;
5357  AdmsSensFadType instancePar_W=in.W;
5358  bool instancePar_given_W=in.given("W");
5359  inParamMap["W"] = &instancePar_W;
5360 
5361 
5362  // Copy all the real hidden instance params into fad types
5363 
5364 
5365 
5366  // Copy all the non-real instance params into vars of their appropriate type:
5367  int instancePar_N=in.N;
5368  bool instancePar_given_N=in.given("N");
5369 
5370 
5371  // Set the one parameter whose name was passed in to be the independent
5372  // variable for Sacado purposes. Since we stored variable pointers, this
5373  // makes sure that that ONE variable gets set right.
5374  // FIXME: make this check the name first, otherwise segfault on invalid name!
5375  inParamMap[name]->diff(0,1);
5376 
5377  //make local copies of all instance vars
5378  //reals
5379 
5380 
5381  //non-reals
5382 
5383 
5384  //make local copies of all model vars
5385  //reals
5386 
5387 
5388  // non-reals
5389 
5390 
5391 
5392  Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
5393 
5394  // extract solution variables and set as Fad independent variables.
5395 
5396  probeVars[in.admsProbeID_V_t_ti] = (*solVectorPtr)[in.li_t] - (*solVectorPtr)[in.li_ti];
5397  probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
5398  probeVars[in.admsProbeID_V_c_GND] = (*solVectorPtr)[in.li_c];
5399  probeVars[in.admsProbeID_V_b_GND] = (*solVectorPtr)[in.li_b];
5400  probeVars[in.admsProbeID_V_cx_bii] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_bii];
5401  probeVars[in.admsProbeID_V_exx_bii] = (*solVectorPtr)[in.li_exx] - (*solVectorPtr)[in.li_bii];
5402  probeVars[in.admsProbeID_V_ex_bii] = (*solVectorPtr)[in.li_ex] - (*solVectorPtr)[in.li_bii];
5403  probeVars[in.admsProbeID_V_bii_bi] = (*solVectorPtr)[in.li_bii] - (*solVectorPtr)[in.li_bi];
5404  probeVars[in.admsProbeID_I_c_ci] = (*solVectorPtr)[in.li_BRA_c_ci];
5405  probeVars[in.admsProbeID_I_e_ei] = (*solVectorPtr)[in.li_BRA_e_ei];
5406  probeVars[in.admsProbeID_I_b_bi] = (*solVectorPtr)[in.li_BRA_b_bi];
5407  probeVars[in.admsProbeID_V_ti_GND] = (*solVectorPtr)[in.li_ti];
5408  probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
5409  probeVars[in.admsProbeID_V_exx_ei] = (*solVectorPtr)[in.li_exx] - (*solVectorPtr)[in.li_ei];
5410  probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
5411  probeVars[in.admsProbeID_V_ex_ei] = (*solVectorPtr)[in.li_ex] - (*solVectorPtr)[in.li_ei];
5412  probeVars[in.admsProbeID_V_bii_ei] = (*solVectorPtr)[in.li_bii] - (*solVectorPtr)[in.li_ei];
5413  probeVars[in.admsProbeID_V_bii_ci] = (*solVectorPtr)[in.li_bii] - (*solVectorPtr)[in.li_ci];
5414  probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
5415 
5416  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
5417  probeVars[in.admsProbeID_V_bii_ei] *= modelPar_dtype;
5418  probeVars[in.admsProbeID_V_bii_ci] *= modelPar_dtype;
5419  probeVars[in.admsProbeID_V_bi_ci] *= modelPar_dtype;
5420 
5421 
5422 
5423  // Now call the function that does the heavy lifting.
5424  evaluateModelEquations(
5425  probeVars,
5426  // probe constants
5427  in.admsProbeID_V_t_ti,
5428  in.admsProbeID_V_b_c,
5429  in.admsProbeID_V_c_GND,
5430  in.admsProbeID_V_b_GND,
5431  in.admsProbeID_V_cx_bii,
5432  in.admsProbeID_V_exx_bii,
5433  in.admsProbeID_V_ex_bii,
5434  in.admsProbeID_V_bii_bi,
5435  in.admsProbeID_I_c_ci,
5436  in.admsProbeID_I_e_ei,
5437  in.admsProbeID_I_b_bi,
5438  in.admsProbeID_V_ti_GND,
5439  in.admsProbeID_V_ci_ei,
5440  in.admsProbeID_V_exx_ei,
5441  in.admsProbeID_V_cx_ci,
5442  in.admsProbeID_V_ex_ei,
5443  in.admsProbeID_V_bii_ei,
5444  in.admsProbeID_V_bii_ci,
5445  in.admsProbeID_V_bi_ci,
5446 
5447  // node constants
5448  in.admsNodeID_c,
5449  in.admsNodeID_b,
5450  in.admsNodeID_e,
5451  in.admsNodeID_t,
5452  in.admsNodeID_ei,
5453  in.admsNodeID_bi,
5454  in.admsNodeID_bii,
5455  in.admsNodeID_ci,
5456  in.admsNodeID_ti,
5457  in.admsNodeID_ex,
5458  in.admsNodeID_exx,
5459  in.admsNodeID_cx,
5460  in.admsBRA_ID_b_bi,
5461  in.admsBRA_ID_e_ei,
5462  in.admsBRA_ID_c_ci,
5463  // instance parameters
5464  // reals
5465  instancePar_Temp,
5466  instancePar_given_Temp,
5467  instancePar_L,
5468  instancePar_given_L,
5469  instancePar_W,
5470  instancePar_given_W,
5471  // non-reals(including hidden)
5472  instancePar_N,
5473  instancePar_given_N,
5474  // model parameters
5475  // reals
5476  modelPar_Temp,
5477  modelPar_given_Temp,
5478  modelPar_Rth,
5479  modelPar_given_Rth,
5480  modelPar_Cth,
5481  modelPar_given_Cth,
5482  modelPar_L,
5483  modelPar_given_L,
5484  modelPar_W,
5485  modelPar_given_W,
5486  modelPar_Jsf,
5487  modelPar_given_Jsf,
5488  modelPar_nf,
5489  modelPar_given_nf,
5490  modelPar_Vg,
5491  modelPar_given_Vg,
5492  modelPar_Jse,
5493  modelPar_given_Jse,
5494  modelPar_ne,
5495  modelPar_given_ne,
5496  modelPar_Rbxx,
5497  modelPar_given_Rbxx,
5498  modelPar_Vgb,
5499  modelPar_given_Vgb,
5500  modelPar_Jsee,
5501  modelPar_given_Jsee,
5502  modelPar_nee,
5503  modelPar_given_nee,
5504  modelPar_Rbbxx,
5505  modelPar_given_Rbbxx,
5506  modelPar_Vgbb,
5507  modelPar_given_Vgbb,
5508  modelPar_Jsr,
5509  modelPar_given_Jsr,
5510  modelPar_nr,
5511  modelPar_given_nr,
5512  modelPar_Vgr,
5513  modelPar_given_Vgr,
5514  modelPar_XCjc,
5515  modelPar_given_XCjc,
5516  modelPar_Jsc,
5517  modelPar_given_Jsc,
5518  modelPar_nc,
5519  modelPar_given_nc,
5520  modelPar_Rcxx,
5521  modelPar_given_Rcxx,
5522  modelPar_Vgc,
5523  modelPar_given_Vgc,
5524  modelPar_Bf,
5525  modelPar_given_Bf,
5526  modelPar_kBeta,
5527  modelPar_given_kBeta,
5528  modelPar_Br,
5529  modelPar_given_Br,
5530  modelPar_VAF,
5531  modelPar_given_VAF,
5532  modelPar_VAR,
5533  modelPar_given_VAR,
5534  modelPar_IKF,
5535  modelPar_given_IKF,
5536  modelPar_IKR,
5537  modelPar_given_IKR,
5538  modelPar_Mc,
5539  modelPar_given_Mc,
5540  modelPar_BVceo,
5541  modelPar_given_BVceo,
5542  modelPar_kc,
5543  modelPar_given_kc,
5544  modelPar_BVebo,
5545  modelPar_given_BVebo,
5546  modelPar_Tr,
5547  modelPar_given_Tr,
5548  modelPar_Trx,
5549  modelPar_given_Trx,
5550  modelPar_Tf,
5551  modelPar_given_Tf,
5552  modelPar_Tft,
5553  modelPar_given_Tft,
5554  modelPar_Thcs,
5555  modelPar_given_Thcs,
5556  modelPar_Ahc,
5557  modelPar_given_Ahc,
5558  modelPar_Cje,
5559  modelPar_given_Cje,
5560  modelPar_mje,
5561  modelPar_given_mje,
5562  modelPar_Vje,
5563  modelPar_given_Vje,
5564  modelPar_Cjc,
5565  modelPar_given_Cjc,
5566  modelPar_mjc,
5567  modelPar_given_mjc,
5568  modelPar_Vjc,
5569  modelPar_given_Vjc,
5570  modelPar_kjc,
5571  modelPar_given_kjc,
5572  modelPar_Cmin,
5573  modelPar_given_Cmin,
5574  modelPar_J0,
5575  modelPar_given_J0,
5576  modelPar_XJ0,
5577  modelPar_given_XJ0,
5578  modelPar_Rci0,
5579  modelPar_given_Rci0,
5580  modelPar_Jk,
5581  modelPar_given_Jk,
5582  modelPar_RJk,
5583  modelPar_given_RJk,
5584  modelPar_Vces,
5585  modelPar_given_Vces,
5586  modelPar_Rc,
5587  modelPar_given_Rc,
5588  modelPar_Re,
5589  modelPar_given_Re,
5590  modelPar_Rb,
5591  modelPar_given_Rb,
5592  modelPar_Rb2,
5593  modelPar_given_Rb2,
5594  modelPar_Lc,
5595  modelPar_given_Lc,
5596  modelPar_Le,
5597  modelPar_given_Le,
5598  modelPar_Lb,
5599  modelPar_given_Lb,
5600  modelPar_Cq,
5601  modelPar_given_Cq,
5602  modelPar_Cpb,
5603  modelPar_given_Cpb,
5604  modelPar_Cpc,
5605  modelPar_given_Cpc,
5606  modelPar_Tnom,
5607  modelPar_given_Tnom,
5608  // non-reals (including hidden)
5609  modelPar_Mode,
5610  modelPar_given_Mode,
5611  modelPar_Noise,
5612  modelPar_given_Noise,
5613  modelPar_Debug,
5614  modelPar_given_Debug,
5615  modelPar_DebugPlus,
5616  modelPar_given_DebugPlus,
5617  modelPar_N,
5618  modelPar_given_N,
5619  modelPar_dtype,
5620  in.admsTemperature,
5621  in.adms_vt_nom,
5622  in.getDeviceOptions().gmin,
5623  staticContributions,
5624  dynamicContributions,
5625  in);
5626 
5627 
5628  // We now have the F and Q vector stuff, populate the dependencies:
5629 
5630  dfdp[in.admsNodeID_c] += staticContributions[in.admsNodeID_c].dx(0);
5631  dqdp[in.admsNodeID_c] += dynamicContributions[in.admsNodeID_c].dx(0);
5632  Findices[in.admsNodeID_c] = in.li_c;
5633  Qindices[in.admsNodeID_c] = in.li_c;
5634  dfdp[in.admsNodeID_b] += staticContributions[in.admsNodeID_b].dx(0);
5635  dqdp[in.admsNodeID_b] += dynamicContributions[in.admsNodeID_b].dx(0);
5636  Findices[in.admsNodeID_b] = in.li_b;
5637  Qindices[in.admsNodeID_b] = in.li_b;
5638  dfdp[in.admsNodeID_e] += staticContributions[in.admsNodeID_e].dx(0);
5639  dqdp[in.admsNodeID_e] += dynamicContributions[in.admsNodeID_e].dx(0);
5640  Findices[in.admsNodeID_e] = in.li_e;
5641  Qindices[in.admsNodeID_e] = in.li_e;
5642  dfdp[in.admsNodeID_t] += staticContributions[in.admsNodeID_t].dx(0);
5643  dqdp[in.admsNodeID_t] += dynamicContributions[in.admsNodeID_t].dx(0);
5644  Findices[in.admsNodeID_t] = in.li_t;
5645  Qindices[in.admsNodeID_t] = in.li_t;
5646  dfdp[in.admsNodeID_ei] += staticContributions[in.admsNodeID_ei].dx(0);
5647  dqdp[in.admsNodeID_ei] += dynamicContributions[in.admsNodeID_ei].dx(0);
5648  Findices[in.admsNodeID_ei] = in.li_ei;
5649  Qindices[in.admsNodeID_ei] = in.li_ei;
5650  dfdp[in.admsNodeID_bi] += staticContributions[in.admsNodeID_bi].dx(0);
5651  dqdp[in.admsNodeID_bi] += dynamicContributions[in.admsNodeID_bi].dx(0);
5652  Findices[in.admsNodeID_bi] = in.li_bi;
5653  Qindices[in.admsNodeID_bi] = in.li_bi;
5654  dfdp[in.admsNodeID_bii] += staticContributions[in.admsNodeID_bii].dx(0);
5655  dqdp[in.admsNodeID_bii] += dynamicContributions[in.admsNodeID_bii].dx(0);
5656  Findices[in.admsNodeID_bii] = in.li_bii;
5657  Qindices[in.admsNodeID_bii] = in.li_bii;
5658  dfdp[in.admsNodeID_ci] += staticContributions[in.admsNodeID_ci].dx(0);
5659  dqdp[in.admsNodeID_ci] += dynamicContributions[in.admsNodeID_ci].dx(0);
5660  Findices[in.admsNodeID_ci] = in.li_ci;
5661  Qindices[in.admsNodeID_ci] = in.li_ci;
5662  dfdp[in.admsNodeID_ti] += staticContributions[in.admsNodeID_ti].dx(0);
5663  dqdp[in.admsNodeID_ti] += dynamicContributions[in.admsNodeID_ti].dx(0);
5664  Findices[in.admsNodeID_ti] = in.li_ti;
5665  Qindices[in.admsNodeID_ti] = in.li_ti;
5666  dfdp[in.admsNodeID_ex] += staticContributions[in.admsNodeID_ex].dx(0);
5667  dqdp[in.admsNodeID_ex] += dynamicContributions[in.admsNodeID_ex].dx(0);
5668  Findices[in.admsNodeID_ex] = in.li_ex;
5669  Qindices[in.admsNodeID_ex] = in.li_ex;
5670  dfdp[in.admsNodeID_exx] += staticContributions[in.admsNodeID_exx].dx(0);
5671  dqdp[in.admsNodeID_exx] += dynamicContributions[in.admsNodeID_exx].dx(0);
5672  Findices[in.admsNodeID_exx] = in.li_exx;
5673  Qindices[in.admsNodeID_exx] = in.li_exx;
5674  dfdp[in.admsNodeID_cx] += staticContributions[in.admsNodeID_cx].dx(0);
5675  dqdp[in.admsNodeID_cx] += dynamicContributions[in.admsNodeID_cx].dx(0);
5676  Findices[in.admsNodeID_cx] = in.li_cx;
5677  Qindices[in.admsNodeID_cx] = in.li_cx;
5678  dfdp[in.admsBRA_ID_b_bi] += staticContributions[in.admsBRA_ID_b_bi].dx(0);
5679  dqdp[in.admsBRA_ID_b_bi] += dynamicContributions[in.admsBRA_ID_b_bi].dx(0);
5680  Findices[in.admsBRA_ID_b_bi] = in.li_BRA_b_bi;
5681  Qindices[in.admsBRA_ID_b_bi] = in.li_BRA_b_bi;
5682  dfdp[in.admsBRA_ID_e_ei] += staticContributions[in.admsBRA_ID_e_ei].dx(0);
5683  dqdp[in.admsBRA_ID_e_ei] += dynamicContributions[in.admsBRA_ID_e_ei].dx(0);
5684  Findices[in.admsBRA_ID_e_ei] = in.li_BRA_e_ei;
5685  Qindices[in.admsBRA_ID_e_ei] = in.li_BRA_e_ei;
5686  dfdp[in.admsBRA_ID_c_ci] += staticContributions[in.admsBRA_ID_c_ci].dx(0);
5687  dqdp[in.admsBRA_ID_c_ci] += dynamicContributions[in.admsBRA_ID_c_ci].dx(0);
5688  Findices[in.admsBRA_ID_c_ci] = in.li_BRA_c_ci;
5689  Qindices[in.admsBRA_ID_c_ci] = in.li_BRA_c_ci;
5690 
5691 
5692 }
5693 
5694 //-----------------------------------------------------------------------------
5695 // Function : ModelSensitivity::operator()
5696 // Purpose : return sensitivity for a single model parameter
5697 // Special Notes :
5698 // Scope : public
5699 // Creator : admsXml
5700 // Creation Date :
5701 //-----------------------------------------------------------------------------
5702 /// Compute sensitivity to a specified model
5703 /// parameter of all device instances of that model's outputs
5704 ///
5705 ///
5706 /// @param[in] entity The device entity that owns the parameter
5707 /// @param[in] name The unadorned parameter name specific to the entity
5708 /// @param[out] dfdp The derivative of the F vector with respect to the parameter
5709 /// @param[out] dqdp The derivative of the Q vector with respect to the parameter
5710 /// @param[out] dbdp The derivative of the B vector with respect to the parameter
5711 /// @param[out] Findices The indices into the F vector corresponding to the elements of dfdp
5712 /// @param[out] Qindices The indices into the Q vector corresponding to the elements of dfdp
5713 /// @param[out] Bindices The indices into the B vector corresponding to the elements of dfdp
5714 ///
5715 ///
5716 void ModelSensitivity::operator()
5717  (
5718  const ParameterBase &entity,
5719  const std::string &name,
5720  std::vector<double> & dfdp,
5721  std::vector<double> & dqdp,
5722  std::vector<double> & dbdp,
5723  std::vector<int> & Findices,
5724  std::vector<int> & Qindices,
5725  std::vector<int> & Bindices
5726  ) const
5727 {
5728  const ParameterBase * e1 = &entity;
5729  const Model & mod = *(dynamic_cast<const Model *> (e1));
5730  int sizeInstance = mod.instanceContainer.size();
5731 
5732  dfdp.resize((12+3)*sizeInstance);
5733  dqdp.resize((12+3)*sizeInstance);
5734  Findices.resize((12+3)*sizeInstance);
5735  Qindices.resize((12+3)*sizeInstance);
5736 
5737  std::vector <double> probeVars(19);
5738  std::vector <AdmsSensFadType> staticContributions(12+3);
5739  std::vector <AdmsSensFadType> dynamicContributions(12+3);
5740 
5741 
5742  // Copy out all the model parameters (doubles) into FAD types
5743  // Keep a map so we can set the right one to the independent variable
5744  // We do this solely to avoid a big ugly "if/else" block just to find the
5745  // one parameter we're doing sensitivities on.
5746  unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> modParamMap;
5747 
5748  // reals
5749  AdmsSensFadType modelPar_Temp=mod.Temp;
5750  bool modelPar_given_Temp=mod.given("Temp");
5751  modParamMap["Temp"] = &modelPar_Temp;
5752  AdmsSensFadType modelPar_Rth=mod.Rth;
5753  bool modelPar_given_Rth=mod.given("Rth");
5754  modParamMap["Rth"] = &modelPar_Rth;
5755  AdmsSensFadType modelPar_Cth=mod.Cth;
5756  bool modelPar_given_Cth=mod.given("Cth");
5757  modParamMap["Cth"] = &modelPar_Cth;
5758  AdmsSensFadType modelPar_L=mod.L;
5759  bool modelPar_given_L=mod.given("L");
5760  modParamMap["L"] = &modelPar_L;
5761  AdmsSensFadType modelPar_W=mod.W;
5762  bool modelPar_given_W=mod.given("W");
5763  modParamMap["W"] = &modelPar_W;
5764  AdmsSensFadType modelPar_Jsf=mod.Jsf;
5765  bool modelPar_given_Jsf=mod.given("Jsf");
5766  modParamMap["Jsf"] = &modelPar_Jsf;
5767  AdmsSensFadType modelPar_nf=mod.nf;
5768  bool modelPar_given_nf=mod.given("nf");
5769  modParamMap["nf"] = &modelPar_nf;
5770  AdmsSensFadType modelPar_Vg=mod.Vg;
5771  bool modelPar_given_Vg=mod.given("Vg");
5772  modParamMap["Vg"] = &modelPar_Vg;
5773  AdmsSensFadType modelPar_Jse=mod.Jse;
5774  bool modelPar_given_Jse=mod.given("Jse");
5775  modParamMap["Jse"] = &modelPar_Jse;
5776  AdmsSensFadType modelPar_ne=mod.ne;
5777  bool modelPar_given_ne=mod.given("ne");
5778  modParamMap["ne"] = &modelPar_ne;
5779  AdmsSensFadType modelPar_Rbxx=mod.Rbxx;
5780  bool modelPar_given_Rbxx=mod.given("Rbxx");
5781  modParamMap["Rbxx"] = &modelPar_Rbxx;
5782  AdmsSensFadType modelPar_Vgb=mod.Vgb;
5783  bool modelPar_given_Vgb=mod.given("Vgb");
5784  modParamMap["Vgb"] = &modelPar_Vgb;
5785  AdmsSensFadType modelPar_Jsee=mod.Jsee;
5786  bool modelPar_given_Jsee=mod.given("Jsee");
5787  modParamMap["Jsee"] = &modelPar_Jsee;
5788  AdmsSensFadType modelPar_nee=mod.nee;
5789  bool modelPar_given_nee=mod.given("nee");
5790  modParamMap["nee"] = &modelPar_nee;
5791  AdmsSensFadType modelPar_Rbbxx=mod.Rbbxx;
5792  bool modelPar_given_Rbbxx=mod.given("Rbbxx");
5793  modParamMap["Rbbxx"] = &modelPar_Rbbxx;
5794  AdmsSensFadType modelPar_Vgbb=mod.Vgbb;
5795  bool modelPar_given_Vgbb=mod.given("Vgbb");
5796  modParamMap["Vgbb"] = &modelPar_Vgbb;
5797  AdmsSensFadType modelPar_Jsr=mod.Jsr;
5798  bool modelPar_given_Jsr=mod.given("Jsr");
5799  modParamMap["Jsr"] = &modelPar_Jsr;
5800  AdmsSensFadType modelPar_nr=mod.nr;
5801  bool modelPar_given_nr=mod.given("nr");
5802  modParamMap["nr"] = &modelPar_nr;
5803  AdmsSensFadType modelPar_Vgr=mod.Vgr;
5804  bool modelPar_given_Vgr=mod.given("Vgr");
5805  modParamMap["Vgr"] = &modelPar_Vgr;
5806  AdmsSensFadType modelPar_XCjc=mod.XCjc;
5807  bool modelPar_given_XCjc=mod.given("XCjc");
5808  modParamMap["XCjc"] = &modelPar_XCjc;
5809  AdmsSensFadType modelPar_Jsc=mod.Jsc;
5810  bool modelPar_given_Jsc=mod.given("Jsc");
5811  modParamMap["Jsc"] = &modelPar_Jsc;
5812  AdmsSensFadType modelPar_nc=mod.nc;
5813  bool modelPar_given_nc=mod.given("nc");
5814  modParamMap["nc"] = &modelPar_nc;
5815  AdmsSensFadType modelPar_Rcxx=mod.Rcxx;
5816  bool modelPar_given_Rcxx=mod.given("Rcxx");
5817  modParamMap["Rcxx"] = &modelPar_Rcxx;
5818  AdmsSensFadType modelPar_Vgc=mod.Vgc;
5819  bool modelPar_given_Vgc=mod.given("Vgc");
5820  modParamMap["Vgc"] = &modelPar_Vgc;
5821  AdmsSensFadType modelPar_Bf=mod.Bf;
5822  bool modelPar_given_Bf=mod.given("Bf");
5823  modParamMap["Bf"] = &modelPar_Bf;
5824  AdmsSensFadType modelPar_kBeta=mod.kBeta;
5825  bool modelPar_given_kBeta=mod.given("kBeta");
5826  modParamMap["kBeta"] = &modelPar_kBeta;
5827  AdmsSensFadType modelPar_Br=mod.Br;
5828  bool modelPar_given_Br=mod.given("Br");
5829  modParamMap["Br"] = &modelPar_Br;
5830  AdmsSensFadType modelPar_VAF=mod.VAF;
5831  bool modelPar_given_VAF=mod.given("VAF");
5832  modParamMap["VAF"] = &modelPar_VAF;
5833  AdmsSensFadType modelPar_VAR=mod.VAR;
5834  bool modelPar_given_VAR=mod.given("VAR");
5835  modParamMap["VAR"] = &modelPar_VAR;
5836  AdmsSensFadType modelPar_IKF=mod.IKF;
5837  bool modelPar_given_IKF=mod.given("IKF");
5838  modParamMap["IKF"] = &modelPar_IKF;
5839  AdmsSensFadType modelPar_IKR=mod.IKR;
5840  bool modelPar_given_IKR=mod.given("IKR");
5841  modParamMap["IKR"] = &modelPar_IKR;
5842  AdmsSensFadType modelPar_Mc=mod.Mc;
5843  bool modelPar_given_Mc=mod.given("Mc");
5844  modParamMap["Mc"] = &modelPar_Mc;
5845  AdmsSensFadType modelPar_BVceo=mod.BVceo;
5846  bool modelPar_given_BVceo=mod.given("BVceo");
5847  modParamMap["BVceo"] = &modelPar_BVceo;
5848  AdmsSensFadType modelPar_kc=mod.kc;
5849  bool modelPar_given_kc=mod.given("kc");
5850  modParamMap["kc"] = &modelPar_kc;
5851  AdmsSensFadType modelPar_BVebo=mod.BVebo;
5852  bool modelPar_given_BVebo=mod.given("BVebo");
5853  modParamMap["BVebo"] = &modelPar_BVebo;
5854  AdmsSensFadType modelPar_Tr=mod.Tr;
5855  bool modelPar_given_Tr=mod.given("Tr");
5856  modParamMap["Tr"] = &modelPar_Tr;
5857  AdmsSensFadType modelPar_Trx=mod.Trx;
5858  bool modelPar_given_Trx=mod.given("Trx");
5859  modParamMap["Trx"] = &modelPar_Trx;
5860  AdmsSensFadType modelPar_Tf=mod.Tf;
5861  bool modelPar_given_Tf=mod.given("Tf");
5862  modParamMap["Tf"] = &modelPar_Tf;
5863  AdmsSensFadType modelPar_Tft=mod.Tft;
5864  bool modelPar_given_Tft=mod.given("Tft");
5865  modParamMap["Tft"] = &modelPar_Tft;
5866  AdmsSensFadType modelPar_Thcs=mod.Thcs;
5867  bool modelPar_given_Thcs=mod.given("Thcs");
5868  modParamMap["Thcs"] = &modelPar_Thcs;
5869  AdmsSensFadType modelPar_Ahc=mod.Ahc;
5870  bool modelPar_given_Ahc=mod.given("Ahc");
5871  modParamMap["Ahc"] = &modelPar_Ahc;
5872  AdmsSensFadType modelPar_Cje=mod.Cje;
5873  bool modelPar_given_Cje=mod.given("Cje");
5874  modParamMap["Cje"] = &modelPar_Cje;
5875  AdmsSensFadType modelPar_mje=mod.mje;
5876  bool modelPar_given_mje=mod.given("mje");
5877  modParamMap["mje"] = &modelPar_mje;
5878  AdmsSensFadType modelPar_Vje=mod.Vje;
5879  bool modelPar_given_Vje=mod.given("Vje");
5880  modParamMap["Vje"] = &modelPar_Vje;
5881  AdmsSensFadType modelPar_Cjc=mod.Cjc;
5882  bool modelPar_given_Cjc=mod.given("Cjc");
5883  modParamMap["Cjc"] = &modelPar_Cjc;
5884  AdmsSensFadType modelPar_mjc=mod.mjc;
5885  bool modelPar_given_mjc=mod.given("mjc");
5886  modParamMap["mjc"] = &modelPar_mjc;
5887  AdmsSensFadType modelPar_Vjc=mod.Vjc;
5888  bool modelPar_given_Vjc=mod.given("Vjc");
5889  modParamMap["Vjc"] = &modelPar_Vjc;
5890  AdmsSensFadType modelPar_kjc=mod.kjc;
5891  bool modelPar_given_kjc=mod.given("kjc");
5892  modParamMap["kjc"] = &modelPar_kjc;
5893  AdmsSensFadType modelPar_Cmin=mod.Cmin;
5894  bool modelPar_given_Cmin=mod.given("Cmin");
5895  modParamMap["Cmin"] = &modelPar_Cmin;
5896  AdmsSensFadType modelPar_J0=mod.J0;
5897  bool modelPar_given_J0=mod.given("J0");
5898  modParamMap["J0"] = &modelPar_J0;
5899  AdmsSensFadType modelPar_XJ0=mod.XJ0;
5900  bool modelPar_given_XJ0=mod.given("XJ0");
5901  modParamMap["XJ0"] = &modelPar_XJ0;
5902  AdmsSensFadType modelPar_Rci0=mod.Rci0;
5903  bool modelPar_given_Rci0=mod.given("Rci0");
5904  modParamMap["Rci0"] = &modelPar_Rci0;
5905  AdmsSensFadType modelPar_Jk=mod.Jk;
5906  bool modelPar_given_Jk=mod.given("Jk");
5907  modParamMap["Jk"] = &modelPar_Jk;
5908  AdmsSensFadType modelPar_RJk=mod.RJk;
5909  bool modelPar_given_RJk=mod.given("RJk");
5910  modParamMap["RJk"] = &modelPar_RJk;
5911  AdmsSensFadType modelPar_Vces=mod.Vces;
5912  bool modelPar_given_Vces=mod.given("Vces");
5913  modParamMap["Vces"] = &modelPar_Vces;
5914  AdmsSensFadType modelPar_Rc=mod.Rc;
5915  bool modelPar_given_Rc=mod.given("Rc");
5916  modParamMap["Rc"] = &modelPar_Rc;
5917  AdmsSensFadType modelPar_Re=mod.Re;
5918  bool modelPar_given_Re=mod.given("Re");
5919  modParamMap["Re"] = &modelPar_Re;
5920  AdmsSensFadType modelPar_Rb=mod.Rb;
5921  bool modelPar_given_Rb=mod.given("Rb");
5922  modParamMap["Rb"] = &modelPar_Rb;
5923  AdmsSensFadType modelPar_Rb2=mod.Rb2;
5924  bool modelPar_given_Rb2=mod.given("Rb2");
5925  modParamMap["Rb2"] = &modelPar_Rb2;
5926  AdmsSensFadType modelPar_Lc=mod.Lc;
5927  bool modelPar_given_Lc=mod.given("Lc");
5928  modParamMap["Lc"] = &modelPar_Lc;
5929  AdmsSensFadType modelPar_Le=mod.Le;
5930  bool modelPar_given_Le=mod.given("Le");
5931  modParamMap["Le"] = &modelPar_Le;
5932  AdmsSensFadType modelPar_Lb=mod.Lb;
5933  bool modelPar_given_Lb=mod.given("Lb");
5934  modParamMap["Lb"] = &modelPar_Lb;
5935  AdmsSensFadType modelPar_Cq=mod.Cq;
5936  bool modelPar_given_Cq=mod.given("Cq");
5937  modParamMap["Cq"] = &modelPar_Cq;
5938  AdmsSensFadType modelPar_Cpb=mod.Cpb;
5939  bool modelPar_given_Cpb=mod.given("Cpb");
5940  modParamMap["Cpb"] = &modelPar_Cpb;
5941  AdmsSensFadType modelPar_Cpc=mod.Cpc;
5942  bool modelPar_given_Cpc=mod.given("Cpc");
5943  modParamMap["Cpc"] = &modelPar_Cpc;
5944  AdmsSensFadType modelPar_Tnom=mod.Tnom;
5945  bool modelPar_given_Tnom=mod.given("Tnom");
5946  modParamMap["Tnom"] = &modelPar_Tnom;
5947 
5948 
5949  // hidden reals
5950 
5951 
5952  // non-reals (including hiddens)
5953  int modelPar_Mode=mod.Mode;
5954  bool modelPar_given_Mode=mod.given("Mode");
5955  int modelPar_Noise=mod.Noise;
5956  bool modelPar_given_Noise=mod.given("Noise");
5957  int modelPar_Debug=mod.Debug;
5958  bool modelPar_given_Debug=mod.given("Debug");
5959  int modelPar_DebugPlus=mod.DebugPlus;
5960  bool modelPar_given_DebugPlus=mod.given("DebugPlus");
5961  int modelPar_N=mod.N;
5962  bool modelPar_given_N=mod.given("N");
5963  int modelPar_dtype=mod.dtype;
5964 
5965 
5966  // Set the one parameter whose name was passed in to be the independent
5967  // variable for Sacado purposes. Since we stored variable pointers, this
5968  // makes sure that that ONE variable gets set right.
5969  // FIXME: make this check name for presence first! Segfault on invalid.
5970  modParamMap[name]->diff(0,1);
5971 
5972  //make local copies of all model vars
5973  //reals
5974 
5975 
5976  // non-reals
5977 
5978 
5979 
5980  // Now loop over all instances and do the deed
5981  int inst=0;
5982  for (std::vector<Instance*>::const_iterator in_it=mod.instanceContainer.begin(); in_it != mod.instanceContainer.end(); ++in_it,++inst)
5983  {
5984 
5985  Instance & in=*(*in_it);
5986  // initialize contributions to zero (automatically sets derivatives to zero)
5987  for (int i=0; i < 12+3 ; ++i)
5988  {
5989  staticContributions[i]=0;
5990  dynamicContributions[i]=0;
5991  }
5992 
5993 
5994 
5995  // Copy out all the instance parameters (doubles) into FAD types
5996  // reals
5997  AdmsSensFadType instancePar_Temp=in.Temp;
5998  bool instancePar_given_Temp=in.given("Temp");
5999  AdmsSensFadType instancePar_L=in.L;
6000  bool instancePar_given_L=in.given("L");
6001  AdmsSensFadType instancePar_W=in.W;
6002  bool instancePar_given_W=in.given("W");
6003 
6004 
6005  // real hidden instance
6006 
6007 
6008  // Copy all the non-real instance params into vars of their appropriate type:
6009  int instancePar_N=in.N;
6010  bool instancePar_given_N=in.given("N");
6011 
6012 
6013 
6014 
6015  // If there are any instance parameters that were not given, and have
6016  // corresponding model params, copy the model param into the instance.
6017  // This was already done by the instance constructor, but we do it again
6018  // because now we're propagating derivatives, and the user could be trying
6019  // to get sensitivity to the model parameter.
6020  if (!(in.given("Temp")))
6021  {
6022  instancePar_Temp = modelPar_Temp;
6023  }
6024  if (!(in.given("N")))
6025  {
6026  instancePar_N = modelPar_N;
6027  }
6028  if (!(in.given("L")))
6029  {
6030  instancePar_L = modelPar_L;
6031  }
6032  if (!(in.given("W")))
6033  {
6034  instancePar_W = modelPar_W;
6035  }
6036 
6037 
6038  //make local copies of all instance vars
6039  //reals
6040 
6041 
6042  //non-reals
6043 
6044 
6045 
6046  Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
6047 
6048  // extract solution variables and set as Fad independent variables.
6049  probeVars[in.admsProbeID_V_t_ti] = (*solVectorPtr)[in.li_t] - (*solVectorPtr)[in.li_ti];
6050  probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
6051  probeVars[in.admsProbeID_V_c_GND] = (*solVectorPtr)[in.li_c];
6052  probeVars[in.admsProbeID_V_b_GND] = (*solVectorPtr)[in.li_b];
6053  probeVars[in.admsProbeID_V_cx_bii] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_bii];
6054  probeVars[in.admsProbeID_V_exx_bii] = (*solVectorPtr)[in.li_exx] - (*solVectorPtr)[in.li_bii];
6055  probeVars[in.admsProbeID_V_ex_bii] = (*solVectorPtr)[in.li_ex] - (*solVectorPtr)[in.li_bii];
6056  probeVars[in.admsProbeID_V_bii_bi] = (*solVectorPtr)[in.li_bii] - (*solVectorPtr)[in.li_bi];
6057  probeVars[in.admsProbeID_I_c_ci] = (*solVectorPtr)[in.li_BRA_c_ci];
6058  probeVars[in.admsProbeID_I_e_ei] = (*solVectorPtr)[in.li_BRA_e_ei];
6059  probeVars[in.admsProbeID_I_b_bi] = (*solVectorPtr)[in.li_BRA_b_bi];
6060  probeVars[in.admsProbeID_V_ti_GND] = (*solVectorPtr)[in.li_ti];
6061  probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
6062  probeVars[in.admsProbeID_V_exx_ei] = (*solVectorPtr)[in.li_exx] - (*solVectorPtr)[in.li_ei];
6063  probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
6064  probeVars[in.admsProbeID_V_ex_ei] = (*solVectorPtr)[in.li_ex] - (*solVectorPtr)[in.li_ei];
6065  probeVars[in.admsProbeID_V_bii_ei] = (*solVectorPtr)[in.li_bii] - (*solVectorPtr)[in.li_ei];
6066  probeVars[in.admsProbeID_V_bii_ci] = (*solVectorPtr)[in.li_bii] - (*solVectorPtr)[in.li_ci];
6067  probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
6068 
6069  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
6070  probeVars[in.admsProbeID_V_bii_ei] *= modelPar_dtype;
6071  probeVars[in.admsProbeID_V_bii_ci] *= modelPar_dtype;
6072  probeVars[in.admsProbeID_V_bi_ci] *= modelPar_dtype;
6073 
6074 
6075 
6076  // Now call the function that does the heavy lifting.
6077 
6078  evaluateModelEquations(
6079  probeVars,
6080  // probe constants
6081  in.admsProbeID_V_t_ti,
6082  in.admsProbeID_V_b_c,
6083  in.admsProbeID_V_c_GND,
6084  in.admsProbeID_V_b_GND,
6085  in.admsProbeID_V_cx_bii,
6086  in.admsProbeID_V_exx_bii,
6087  in.admsProbeID_V_ex_bii,
6088  in.admsProbeID_V_bii_bi,
6089  in.admsProbeID_I_c_ci,
6090  in.admsProbeID_I_e_ei,
6091  in.admsProbeID_I_b_bi,
6092  in.admsProbeID_V_ti_GND,
6093  in.admsProbeID_V_ci_ei,
6094  in.admsProbeID_V_exx_ei,
6095  in.admsProbeID_V_cx_ci,
6096  in.admsProbeID_V_ex_ei,
6097  in.admsProbeID_V_bii_ei,
6098  in.admsProbeID_V_bii_ci,
6099  in.admsProbeID_V_bi_ci,
6100 
6101  // node constants
6102  in.admsNodeID_c,
6103  in.admsNodeID_b,
6104  in.admsNodeID_e,
6105  in.admsNodeID_t,
6106  in.admsNodeID_ei,
6107  in.admsNodeID_bi,
6108  in.admsNodeID_bii,
6109  in.admsNodeID_ci,
6110  in.admsNodeID_ti,
6111  in.admsNodeID_ex,
6112  in.admsNodeID_exx,
6113  in.admsNodeID_cx,
6114  in.admsBRA_ID_b_bi,
6115  in.admsBRA_ID_e_ei,
6116  in.admsBRA_ID_c_ci,
6117  // instance parameters
6118  // reals
6119  instancePar_Temp,
6120  instancePar_given_Temp,
6121  instancePar_L,
6122  instancePar_given_L,
6123  instancePar_W,
6124  instancePar_given_W,
6125  // non-reals(including hidden)
6126  instancePar_N,
6127  instancePar_given_N,
6128  // model parameters
6129  // reals
6130  modelPar_Temp,
6131  modelPar_given_Temp,
6132  modelPar_Rth,
6133  modelPar_given_Rth,
6134  modelPar_Cth,
6135  modelPar_given_Cth,
6136  modelPar_L,
6137  modelPar_given_L,
6138  modelPar_W,
6139  modelPar_given_W,
6140  modelPar_Jsf,
6141  modelPar_given_Jsf,
6142  modelPar_nf,
6143  modelPar_given_nf,
6144  modelPar_Vg,
6145  modelPar_given_Vg,
6146  modelPar_Jse,
6147  modelPar_given_Jse,
6148  modelPar_ne,
6149  modelPar_given_ne,
6150  modelPar_Rbxx,
6151  modelPar_given_Rbxx,
6152  modelPar_Vgb,
6153  modelPar_given_Vgb,
6154  modelPar_Jsee,
6155  modelPar_given_Jsee,
6156  modelPar_nee,
6157  modelPar_given_nee,
6158  modelPar_Rbbxx,
6159  modelPar_given_Rbbxx,
6160  modelPar_Vgbb,
6161  modelPar_given_Vgbb,
6162  modelPar_Jsr,
6163  modelPar_given_Jsr,
6164  modelPar_nr,
6165  modelPar_given_nr,
6166  modelPar_Vgr,
6167  modelPar_given_Vgr,
6168  modelPar_XCjc,
6169  modelPar_given_XCjc,
6170  modelPar_Jsc,
6171  modelPar_given_Jsc,
6172  modelPar_nc,
6173  modelPar_given_nc,
6174  modelPar_Rcxx,
6175  modelPar_given_Rcxx,
6176  modelPar_Vgc,
6177  modelPar_given_Vgc,
6178  modelPar_Bf,
6179  modelPar_given_Bf,
6180  modelPar_kBeta,
6181  modelPar_given_kBeta,
6182  modelPar_Br,
6183  modelPar_given_Br,
6184  modelPar_VAF,
6185  modelPar_given_VAF,
6186  modelPar_VAR,
6187  modelPar_given_VAR,
6188  modelPar_IKF,
6189  modelPar_given_IKF,
6190  modelPar_IKR,
6191  modelPar_given_IKR,
6192  modelPar_Mc,
6193  modelPar_given_Mc,
6194  modelPar_BVceo,
6195  modelPar_given_BVceo,
6196  modelPar_kc,
6197  modelPar_given_kc,
6198  modelPar_BVebo,
6199  modelPar_given_BVebo,
6200  modelPar_Tr,
6201  modelPar_given_Tr,
6202  modelPar_Trx,
6203  modelPar_given_Trx,
6204  modelPar_Tf,
6205  modelPar_given_Tf,
6206  modelPar_Tft,
6207  modelPar_given_Tft,
6208  modelPar_Thcs,
6209  modelPar_given_Thcs,
6210  modelPar_Ahc,
6211  modelPar_given_Ahc,
6212  modelPar_Cje,
6213  modelPar_given_Cje,
6214  modelPar_mje,
6215  modelPar_given_mje,
6216  modelPar_Vje,
6217  modelPar_given_Vje,
6218  modelPar_Cjc,
6219  modelPar_given_Cjc,
6220  modelPar_mjc,
6221  modelPar_given_mjc,
6222  modelPar_Vjc,
6223  modelPar_given_Vjc,
6224  modelPar_kjc,
6225  modelPar_given_kjc,
6226  modelPar_Cmin,
6227  modelPar_given_Cmin,
6228  modelPar_J0,
6229  modelPar_given_J0,
6230  modelPar_XJ0,
6231  modelPar_given_XJ0,
6232  modelPar_Rci0,
6233  modelPar_given_Rci0,
6234  modelPar_Jk,
6235  modelPar_given_Jk,
6236  modelPar_RJk,
6237  modelPar_given_RJk,
6238  modelPar_Vces,
6239  modelPar_given_Vces,
6240  modelPar_Rc,
6241  modelPar_given_Rc,
6242  modelPar_Re,
6243  modelPar_given_Re,
6244  modelPar_Rb,
6245  modelPar_given_Rb,
6246  modelPar_Rb2,
6247  modelPar_given_Rb2,
6248  modelPar_Lc,
6249  modelPar_given_Lc,
6250  modelPar_Le,
6251  modelPar_given_Le,
6252  modelPar_Lb,
6253  modelPar_given_Lb,
6254  modelPar_Cq,
6255  modelPar_given_Cq,
6256  modelPar_Cpb,
6257  modelPar_given_Cpb,
6258  modelPar_Cpc,
6259  modelPar_given_Cpc,
6260  modelPar_Tnom,
6261  modelPar_given_Tnom,
6262  // non-reals (including hidden)
6263  modelPar_Mode,
6264  modelPar_given_Mode,
6265  modelPar_Noise,
6266  modelPar_given_Noise,
6267  modelPar_Debug,
6268  modelPar_given_Debug,
6269  modelPar_DebugPlus,
6270  modelPar_given_DebugPlus,
6271  modelPar_N,
6272  modelPar_given_N,
6273  modelPar_dtype,
6274  in.admsTemperature,
6275  in.adms_vt_nom,
6276  in.getDeviceOptions().gmin,
6277  staticContributions,
6278  dynamicContributions,
6279  in);
6280 
6281 
6282  // We now have the F and Q vector stuff, populate the dependencies:
6283 
6284  dfdp[in.admsNodeID_c+inst*(12+3)] += staticContributions[in.admsNodeID_c].dx(0);
6285  dqdp[in.admsNodeID_c+inst*(12+3)] += dynamicContributions[in.admsNodeID_c].dx(0);
6286  Findices[in.admsNodeID_c+inst*(12+3)] = in.li_c;
6287  Qindices[in.admsNodeID_c+inst*(12+3)] = in.li_c;
6288  dfdp[in.admsNodeID_b+inst*(12+3)] += staticContributions[in.admsNodeID_b].dx(0);
6289  dqdp[in.admsNodeID_b+inst*(12+3)] += dynamicContributions[in.admsNodeID_b].dx(0);
6290  Findices[in.admsNodeID_b+inst*(12+3)] = in.li_b;
6291  Qindices[in.admsNodeID_b+inst*(12+3)] = in.li_b;
6292  dfdp[in.admsNodeID_e+inst*(12+3)] += staticContributions[in.admsNodeID_e].dx(0);
6293  dqdp[in.admsNodeID_e+inst*(12+3)] += dynamicContributions[in.admsNodeID_e].dx(0);
6294  Findices[in.admsNodeID_e+inst*(12+3)] = in.li_e;
6295  Qindices[in.admsNodeID_e+inst*(12+3)] = in.li_e;
6296  dfdp[in.admsNodeID_t+inst*(12+3)] += staticContributions[in.admsNodeID_t].dx(0);
6297  dqdp[in.admsNodeID_t+inst*(12+3)] += dynamicContributions[in.admsNodeID_t].dx(0);
6298  Findices[in.admsNodeID_t+inst*(12+3)] = in.li_t;
6299  Qindices[in.admsNodeID_t+inst*(12+3)] = in.li_t;
6300  dfdp[in.admsNodeID_ei+inst*(12+3)] += staticContributions[in.admsNodeID_ei].dx(0);
6301  dqdp[in.admsNodeID_ei+inst*(12+3)] += dynamicContributions[in.admsNodeID_ei].dx(0);
6302  Findices[in.admsNodeID_ei+inst*(12+3)] = in.li_ei;
6303  Qindices[in.admsNodeID_ei+inst*(12+3)] = in.li_ei;
6304  dfdp[in.admsNodeID_bi+inst*(12+3)] += staticContributions[in.admsNodeID_bi].dx(0);
6305  dqdp[in.admsNodeID_bi+inst*(12+3)] += dynamicContributions[in.admsNodeID_bi].dx(0);
6306  Findices[in.admsNodeID_bi+inst*(12+3)] = in.li_bi;
6307  Qindices[in.admsNodeID_bi+inst*(12+3)] = in.li_bi;
6308  dfdp[in.admsNodeID_bii+inst*(12+3)] += staticContributions[in.admsNodeID_bii].dx(0);
6309  dqdp[in.admsNodeID_bii+inst*(12+3)] += dynamicContributions[in.admsNodeID_bii].dx(0);
6310  Findices[in.admsNodeID_bii+inst*(12+3)] = in.li_bii;
6311  Qindices[in.admsNodeID_bii+inst*(12+3)] = in.li_bii;
6312  dfdp[in.admsNodeID_ci+inst*(12+3)] += staticContributions[in.admsNodeID_ci].dx(0);
6313  dqdp[in.admsNodeID_ci+inst*(12+3)] += dynamicContributions[in.admsNodeID_ci].dx(0);
6314  Findices[in.admsNodeID_ci+inst*(12+3)] = in.li_ci;
6315  Qindices[in.admsNodeID_ci+inst*(12+3)] = in.li_ci;
6316  dfdp[in.admsNodeID_ti+inst*(12+3)] += staticContributions[in.admsNodeID_ti].dx(0);
6317  dqdp[in.admsNodeID_ti+inst*(12+3)] += dynamicContributions[in.admsNodeID_ti].dx(0);
6318  Findices[in.admsNodeID_ti+inst*(12+3)] = in.li_ti;
6319  Qindices[in.admsNodeID_ti+inst*(12+3)] = in.li_ti;
6320  dfdp[in.admsNodeID_ex+inst*(12+3)] += staticContributions[in.admsNodeID_ex].dx(0);
6321  dqdp[in.admsNodeID_ex+inst*(12+3)] += dynamicContributions[in.admsNodeID_ex].dx(0);
6322  Findices[in.admsNodeID_ex+inst*(12+3)] = in.li_ex;
6323  Qindices[in.admsNodeID_ex+inst*(12+3)] = in.li_ex;
6324  dfdp[in.admsNodeID_exx+inst*(12+3)] += staticContributions[in.admsNodeID_exx].dx(0);
6325  dqdp[in.admsNodeID_exx+inst*(12+3)] += dynamicContributions[in.admsNodeID_exx].dx(0);
6326  Findices[in.admsNodeID_exx+inst*(12+3)] = in.li_exx;
6327  Qindices[in.admsNodeID_exx+inst*(12+3)] = in.li_exx;
6328  dfdp[in.admsNodeID_cx+inst*(12+3)] += staticContributions[in.admsNodeID_cx].dx(0);
6329  dqdp[in.admsNodeID_cx+inst*(12+3)] += dynamicContributions[in.admsNodeID_cx].dx(0);
6330  Findices[in.admsNodeID_cx+inst*(12+3)] = in.li_cx;
6331  Qindices[in.admsNodeID_cx+inst*(12+3)] = in.li_cx;
6332  dfdp[in.admsBRA_ID_b_bi+inst*(12+3)] += staticContributions[in.admsBRA_ID_b_bi].dx(0);
6333  dqdp[in.admsBRA_ID_b_bi+inst*(12+3)] += dynamicContributions[in.admsBRA_ID_b_bi].dx(0);
6334  Findices[in.admsBRA_ID_b_bi+inst*(12+3)] = in.li_BRA_b_bi;
6335  Qindices[in.admsBRA_ID_b_bi+inst*(12+3)] = in.li_BRA_b_bi;
6336  dfdp[in.admsBRA_ID_e_ei+inst*(12+3)] += staticContributions[in.admsBRA_ID_e_ei].dx(0);
6337  dqdp[in.admsBRA_ID_e_ei+inst*(12+3)] += dynamicContributions[in.admsBRA_ID_e_ei].dx(0);
6338  Findices[in.admsBRA_ID_e_ei+inst*(12+3)] = in.li_BRA_e_ei;
6339  Qindices[in.admsBRA_ID_e_ei+inst*(12+3)] = in.li_BRA_e_ei;
6340  dfdp[in.admsBRA_ID_c_ci+inst*(12+3)] += staticContributions[in.admsBRA_ID_c_ci].dx(0);
6341  dqdp[in.admsBRA_ID_c_ci+inst*(12+3)] += dynamicContributions[in.admsBRA_ID_c_ci].dx(0);
6342  Findices[in.admsBRA_ID_c_ci+inst*(12+3)] = in.li_BRA_c_ci;
6343  Qindices[in.admsBRA_ID_c_ci+inst*(12+3)] = in.li_BRA_c_ci;
6344  }
6345 
6346 }
6347 
6348 #endif // Xyce_ADMS_SENSITIVITIES
6349 
6350 } // namespace ADMSHBT_X
6351 } // namespace Device
6352 } // namespace Xyce
const InstanceName & getName() const
std::vector< AdmsFadType > probeVars
void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)
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
Linear::Vector * nextSolVectorPtr
double pnjlim(double vnew, double vold, double vt, double vcrit, int *icheck)
bool given(const std::string &parameter_name) const
Linear::Vector * daeQVectorPtr
Pure virtual class to augment a linear system.
std::vector< AdmsFadType > dynamicContributions
void addInternalNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
#define AssertLIDs(cmp)
static std::vector< std::vector< int > > jacStamp
virtual void registerJacLIDs(const JacobianStamp &jacLIDVec)
std::vector< AdmsFadType > staticContributions
bool updateTemperature(const double &temp=-999.0)
std::vector< Param > params
Parameters from the line.
void registerJacLIDs(const JacobianStamp &jacLIDVec)
void setParams(const std::vector< Param > &params)
const std::string & getName() const
Sacado::Fad::SFad< double, 1 > AdmsSensFadType
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
const DeviceOptions & getDeviceOptions() const
Parameter is not to be documented.
Definition: N_DEV_Pars.h:72
const DeviceOptions & deviceOptions_
std::vector< std::vector< int > > JacobianStamp
Definition: N_DEV_fwd.h:196
static std::vector< std::vector< int > > jacMap2
std::vector< Instance * > instanceContainer
bool processParams()
processParams
bool processInstanceParams()
processInstanceParams
Linear::Vector * nextStaVectorPtr
virtual std::ostream & printOutInstances(std::ostream &os) const
static Config< T > & addConfiguration()
Adds the device to the Xyce device configuration.
Sacado::Fad::SFad< double, 19 > AdmsFadType
Linear::Matrix * dFdxMatrixPtr
The Device class is an interface for device implementations.
Definition: N_DEV_Device.h:101
IdVector LocalIdVector
Definition: N_DEV_fwd.h:198
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
Class Configuration contains device configuration data.
#define L
const SolverState & getSolverState() const
const JacobianStamp & jacobianStamp() const
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
Model(const Configuration &configuration, const ModelBlock &model_block, const FactoryBlock &factory_block)
Linear::Vector * currStaVectorPtr
Linear::Vector * daeFVectorPtr
const std::string & getType() const
std::vector< double > Jdxp_dynamic
static void loadModelParameters(ParametricData< Model > &model_parameters)
static T adms_vt(const T temp)
#define W
ModelBlock represents a .MODEL line from the netlist.
static std::vector< int > jacMap
Manages parameter binding for class C.
Definition: N_DEV_Pars.h:214
InstanceBlock represent a device instance line from the netlist.
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
Instance(const Configuration &configuration, const InstanceBlock &instance_block, Model &model, const FactoryBlock &factory_block)
Util::Param temp
operating temperature of ckt.
std::vector< Param > params
Linear::Matrix * dQdxMatrixPtr
void registerStateLIDs(const LocalIdVector &staLIDVecRef)
Linear::Vector * flagSolVectorPtr
void setModParams(const std::vector< Param > &params)