Xyce  6.1
N_DEV_ADMSbjt504va.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_ADMSbjt504va.C,v $
28 //
29 // Purpose :
30 //
31 // Special Notes : Generated from verilog file bjt504.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 14:10:20
38 //
39 // Revision Information:
40 // ---------------------
41 //
42 // Revision Number: $Revision: 1.12 $
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_ADMSbjt504va.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 ADMSbjt504va {
78 
79 
80 void
82 {
83  // Set up each parameter directly, using the up-cased variable name
84  // as the tag.
85 
86  // This kludge is to force us always to have an instance parameter
87  // that the device manager can set to the temperature, even if we have
88  // no "TEMP".
89  p.addPar("XYCEADMSINSTTEMP", 0.0, &ADMSbjt504va::Instance::admsInstTemp)
90  .setExpressionAccess(NO_DOC)
91  .setUnit(U_DEGK)
92  .setCategory(CAT_TEMP)
93  .setDescription("Internal-use parameter for setting device instance temperature");
94  p.addPar("MULT", static_cast<double>(1.0), &ADMSbjt504va::Instance::MULT)
95  .setDescription("Multiplication factor")
96 #ifdef Xyce_ADMS_SENSITIVITIES
97  .setAnalyticSensitivityAvailable(true)
98  .setSensitivityFunctor(&instSens)
99 #endif // Xyce_ADMS_SENSITIVITIES
100  ;
101 
102 
103 }
104 
106 {
107  // Set up each parameter directly, using the up-cased variable name
108  // as the tag.
109 
110  // This kludge is to force us always to have a model parameter
111  // that the device manager can set to the temperature, even if we have
112  // no "TEMP".
113  p.addPar("XYCEADMSMODTEMP", 0.0, &ADMSbjt504va::Model::admsModTemp)
114  .setExpressionAccess(NO_DOC)
115  .setUnit(U_DEGK)
116  .setCategory(CAT_TEMP)
117  .setDescription("Internal-use parameter for setting device model temperature");
118  p.addPar("LEVEL", static_cast<int>(504), &ADMSbjt504va::Model::LEVEL)
119  .setDescription("Model level");
120  p.addPar("TREF", static_cast<double>(25.0), &ADMSbjt504va::Model::TREF)
121  .setUnit(U_DEGC)
122  .setDescription("Reference temperature")
123 #ifdef Xyce_ADMS_SENSITIVITIES
124  .setAnalyticSensitivityAvailable(true)
125  .setSensitivityFunctor(&modSens)
126 #endif // Xyce_ADMS_SENSITIVITIES
127  ;
128  p.addPar("DTA", static_cast<double>(0.0), &ADMSbjt504va::Model::DTA)
129  .setUnit(U_DEGC)
130  .setDescription("Difference between the local and global ambient temperatures")
131 #ifdef Xyce_ADMS_SENSITIVITIES
132  .setAnalyticSensitivityAvailable(true)
133  .setSensitivityFunctor(&modSens)
134 #endif // Xyce_ADMS_SENSITIVITIES
135  ;
136  p.addPar("EXMOD", static_cast<int>(1), &ADMSbjt504va::Model::EXMOD)
137  .setDescription("Flag for extended modeling of the reverse current gain");
138  p.addPar("EXPHI", static_cast<int>(1), &ADMSbjt504va::Model::EXPHI)
139  .setDescription("Flag for the distributed high-frequency effects in transient");
140  p.addPar("EXAVL", static_cast<int>(0), &ADMSbjt504va::Model::EXAVL)
141  .setDescription("Flag for extended modeling of avalanche currents");
142  p.addPar("EXSUB", static_cast<int>(0), &ADMSbjt504va::Model::EXSUB)
143  .setDescription("Flag for extended modelling of substrate currents");
144  p.addPar("IS", static_cast<double>(22.0*1.0e-18), &ADMSbjt504va::Model::IS)
145  .setUnit(U_AMP)
146  .setDescription("Collector-emitter saturation current")
147 #ifdef Xyce_ADMS_SENSITIVITIES
148  .setAnalyticSensitivityAvailable(true)
149  .setSensitivityFunctor(&modSens)
150 #endif // Xyce_ADMS_SENSITIVITIES
151  ;
152  p.addPar("IK", static_cast<double>(0.1), &ADMSbjt504va::Model::IK)
153  .setUnit(U_AMP)
154  .setDescription("Collector-emitter high injection knee current")
155 #ifdef Xyce_ADMS_SENSITIVITIES
156  .setAnalyticSensitivityAvailable(true)
157  .setSensitivityFunctor(&modSens)
158 #endif // Xyce_ADMS_SENSITIVITIES
159  ;
160  p.addPar("VER", static_cast<double>(2.5), &ADMSbjt504va::Model::VER)
161  .setUnit(U_VOLT)
162  .setDescription("Reverse Early voltage")
163 #ifdef Xyce_ADMS_SENSITIVITIES
164  .setAnalyticSensitivityAvailable(true)
165  .setSensitivityFunctor(&modSens)
166 #endif // Xyce_ADMS_SENSITIVITIES
167  ;
168  p.addPar("VEF", static_cast<double>(44.0), &ADMSbjt504va::Model::VEF)
169  .setUnit(U_VOLT)
170  .setDescription("Forward Early voltage")
171 #ifdef Xyce_ADMS_SENSITIVITIES
172  .setAnalyticSensitivityAvailable(true)
173  .setSensitivityFunctor(&modSens)
174 #endif // Xyce_ADMS_SENSITIVITIES
175  ;
176  p.addPar("BF", static_cast<double>(215.0), &ADMSbjt504va::Model::BF)
177  .setDescription("Ideal forward current gain")
178 #ifdef Xyce_ADMS_SENSITIVITIES
179  .setAnalyticSensitivityAvailable(true)
180  .setSensitivityFunctor(&modSens)
181 #endif // Xyce_ADMS_SENSITIVITIES
182  ;
183  p.addPar("IBF", static_cast<double>(2.7*1.0e-15), &ADMSbjt504va::Model::IBF)
184  .setUnit(U_AMP)
185  .setDescription("Saturation current of the non-ideal forward base current")
186 #ifdef Xyce_ADMS_SENSITIVITIES
187  .setAnalyticSensitivityAvailable(true)
188  .setSensitivityFunctor(&modSens)
189 #endif // Xyce_ADMS_SENSITIVITIES
190  ;
191  p.addPar("MLF", static_cast<double>(2.0), &ADMSbjt504va::Model::MLF)
192  .setDescription("Non-ideality factor of the non-ideal forward base current")
193 #ifdef Xyce_ADMS_SENSITIVITIES
194  .setAnalyticSensitivityAvailable(true)
195  .setSensitivityFunctor(&modSens)
196 #endif // Xyce_ADMS_SENSITIVITIES
197  ;
198  p.addPar("XIBI", static_cast<double>(0.0), &ADMSbjt504va::Model::XIBI)
199  .setDescription("Part of ideal base current that belongs to the sidewall")
200 #ifdef Xyce_ADMS_SENSITIVITIES
201  .setAnalyticSensitivityAvailable(true)
202  .setSensitivityFunctor(&modSens)
203 #endif // Xyce_ADMS_SENSITIVITIES
204  ;
205  p.addPar("IZEB", static_cast<double>(0.0), &ADMSbjt504va::Model::IZEB)
206  .setUnit(U_AMP)
207  .setDescription("Pre-factor of emitter-base Zener tunneling current")
208 #ifdef Xyce_ADMS_SENSITIVITIES
209  .setAnalyticSensitivityAvailable(true)
210  .setSensitivityFunctor(&modSens)
211 #endif // Xyce_ADMS_SENSITIVITIES
212  ;
213  p.addPar("NZEB", static_cast<double>(22.0), &ADMSbjt504va::Model::NZEB)
214  .setDescription("Coefficient of emitter-base Zener tunneling current")
215 #ifdef Xyce_ADMS_SENSITIVITIES
216  .setAnalyticSensitivityAvailable(true)
217  .setSensitivityFunctor(&modSens)
218 #endif // Xyce_ADMS_SENSITIVITIES
219  ;
220  p.addPar("BRI", static_cast<double>(7.0), &ADMSbjt504va::Model::BRI)
221  .setDescription("Ideal reverse current gain")
222 #ifdef Xyce_ADMS_SENSITIVITIES
223  .setAnalyticSensitivityAvailable(true)
224  .setSensitivityFunctor(&modSens)
225 #endif // Xyce_ADMS_SENSITIVITIES
226  ;
227  p.addPar("IBR", static_cast<double>(1.0*1.0e-15), &ADMSbjt504va::Model::IBR)
228  .setUnit(U_AMP)
229  .setDescription("Saturation current of the non-ideal reverse base current")
230 #ifdef Xyce_ADMS_SENSITIVITIES
231  .setAnalyticSensitivityAvailable(true)
232  .setSensitivityFunctor(&modSens)
233 #endif // Xyce_ADMS_SENSITIVITIES
234  ;
235  p.addPar("VLR", static_cast<double>(0.2), &ADMSbjt504va::Model::VLR)
236  .setUnit(U_VOLT)
237  .setDescription("Cross-over voltage of the non-ideal reverse base current")
238 #ifdef Xyce_ADMS_SENSITIVITIES
239  .setAnalyticSensitivityAvailable(true)
240  .setSensitivityFunctor(&modSens)
241 #endif // Xyce_ADMS_SENSITIVITIES
242  ;
243  p.addPar("XEXT", static_cast<double>(0.63), &ADMSbjt504va::Model::XEXT)
244  .setDescription("Part of currents and charges that belong to extrinsic region")
245 #ifdef Xyce_ADMS_SENSITIVITIES
246  .setAnalyticSensitivityAvailable(true)
247  .setSensitivityFunctor(&modSens)
248 #endif // Xyce_ADMS_SENSITIVITIES
249  ;
250  p.addPar("WAVL", static_cast<double>(1.1*1.0e-6), &ADMSbjt504va::Model::WAVL)
251  .setUnit(U_METER)
252  .setDescription("Epilayer thickness used in weak-avalanche model")
253 #ifdef Xyce_ADMS_SENSITIVITIES
254  .setAnalyticSensitivityAvailable(true)
255  .setSensitivityFunctor(&modSens)
256 #endif // Xyce_ADMS_SENSITIVITIES
257  ;
258  p.addPar("VAVL", static_cast<double>(3.0), &ADMSbjt504va::Model::VAVL)
259  .setUnit(U_VOLT)
260  .setDescription("Voltage determining curvature of avalanche current")
261 #ifdef Xyce_ADMS_SENSITIVITIES
262  .setAnalyticSensitivityAvailable(true)
263  .setSensitivityFunctor(&modSens)
264 #endif // Xyce_ADMS_SENSITIVITIES
265  ;
266  p.addPar("SFH", static_cast<double>(0.3), &ADMSbjt504va::Model::SFH)
267  .setDescription("Current spreading factor of avalanche model when EXAVL=1")
268 #ifdef Xyce_ADMS_SENSITIVITIES
269  .setAnalyticSensitivityAvailable(true)
270  .setSensitivityFunctor(&modSens)
271 #endif // Xyce_ADMS_SENSITIVITIES
272  ;
273  p.addPar("RE", static_cast<double>(5.0), &ADMSbjt504va::Model::RE)
274  .setUnit(U_OHM)
275  .setDescription("Emitter resistance")
276 #ifdef Xyce_ADMS_SENSITIVITIES
277  .setAnalyticSensitivityAvailable(true)
278  .setSensitivityFunctor(&modSens)
279 #endif // Xyce_ADMS_SENSITIVITIES
280  ;
281  p.addPar("RBC", static_cast<double>(23.0), &ADMSbjt504va::Model::RBC)
282  .setUnit(U_OHM)
283  .setDescription("Constant part of the base resistance")
284 #ifdef Xyce_ADMS_SENSITIVITIES
285  .setAnalyticSensitivityAvailable(true)
286  .setSensitivityFunctor(&modSens)
287 #endif // Xyce_ADMS_SENSITIVITIES
288  ;
289  p.addPar("RBV", static_cast<double>(18.0), &ADMSbjt504va::Model::RBV)
290  .setUnit(U_OHM)
291  .setDescription("Zero-bias value of the variable part of the base resistance")
292 #ifdef Xyce_ADMS_SENSITIVITIES
293  .setAnalyticSensitivityAvailable(true)
294  .setSensitivityFunctor(&modSens)
295 #endif // Xyce_ADMS_SENSITIVITIES
296  ;
297  p.addPar("RCC", static_cast<double>(12.0), &ADMSbjt504va::Model::RCC)
298  .setUnit(U_OHM)
299  .setDescription("Constant part of the collector resistance")
300 #ifdef Xyce_ADMS_SENSITIVITIES
301  .setAnalyticSensitivityAvailable(true)
302  .setSensitivityFunctor(&modSens)
303 #endif // Xyce_ADMS_SENSITIVITIES
304  ;
305  p.addPar("RCV", static_cast<double>(150.0), &ADMSbjt504va::Model::RCV)
306  .setUnit(U_OHM)
307  .setDescription("Resistance of the un-modulated epilayer")
308 #ifdef Xyce_ADMS_SENSITIVITIES
309  .setAnalyticSensitivityAvailable(true)
310  .setSensitivityFunctor(&modSens)
311 #endif // Xyce_ADMS_SENSITIVITIES
312  ;
313  p.addPar("SCRCV", static_cast<double>(1250.0), &ADMSbjt504va::Model::SCRCV)
314  .setUnit(U_OHM)
315  .setDescription("Space charge resistance of the epilayer")
316 #ifdef Xyce_ADMS_SENSITIVITIES
317  .setAnalyticSensitivityAvailable(true)
318  .setSensitivityFunctor(&modSens)
319 #endif // Xyce_ADMS_SENSITIVITIES
320  ;
321  p.addPar("IHC", static_cast<double>(4.0*1.0e-3), &ADMSbjt504va::Model::IHC)
322  .setUnit(U_AMP)
323  .setDescription("Critical current for velocity saturation in the epilayer")
324 #ifdef Xyce_ADMS_SENSITIVITIES
325  .setAnalyticSensitivityAvailable(true)
326  .setSensitivityFunctor(&modSens)
327 #endif // Xyce_ADMS_SENSITIVITIES
328  ;
329  p.addPar("AXI", static_cast<double>(0.3), &ADMSbjt504va::Model::AXI)
330  .setDescription("Smoothness parameter for the onset of quasi-saturation")
331 #ifdef Xyce_ADMS_SENSITIVITIES
332  .setAnalyticSensitivityAvailable(true)
333  .setSensitivityFunctor(&modSens)
334 #endif // Xyce_ADMS_SENSITIVITIES
335  ;
336  p.addPar("CJE", static_cast<double>(73.0*1.0e-15), &ADMSbjt504va::Model::CJE)
337  .setUnit(U_FARAD)
338  .setDescription("Zero-bias emitter-base depletion capacitance")
339 #ifdef Xyce_ADMS_SENSITIVITIES
340  .setAnalyticSensitivityAvailable(true)
341  .setSensitivityFunctor(&modSens)
342 #endif // Xyce_ADMS_SENSITIVITIES
343  ;
344  p.addPar("VDE", static_cast<double>(0.95), &ADMSbjt504va::Model::VDE)
345  .setUnit(U_OHM)
346  .setDescription("Emitter-base diffusion voltage")
347 #ifdef Xyce_ADMS_SENSITIVITIES
348  .setAnalyticSensitivityAvailable(true)
349  .setSensitivityFunctor(&modSens)
350 #endif // Xyce_ADMS_SENSITIVITIES
351  ;
352  p.addPar("PE", static_cast<double>(0.4), &ADMSbjt504va::Model::PE)
353  .setDescription("Emitter-base grading coefficient")
354 #ifdef Xyce_ADMS_SENSITIVITIES
355  .setAnalyticSensitivityAvailable(true)
356  .setSensitivityFunctor(&modSens)
357 #endif // Xyce_ADMS_SENSITIVITIES
358  ;
359  p.addPar("XCJE", static_cast<double>(0.4), &ADMSbjt504va::Model::XCJE)
360  .setDescription("Sidewall fraction of the emitter-base depletion capacitance")
361 #ifdef Xyce_ADMS_SENSITIVITIES
362  .setAnalyticSensitivityAvailable(true)
363  .setSensitivityFunctor(&modSens)
364 #endif // Xyce_ADMS_SENSITIVITIES
365  ;
366  p.addPar("CBEO", static_cast<double>(0.0), &ADMSbjt504va::Model::CBEO)
367  .setDescription("Emitter-base overlap capacitance")
368 #ifdef Xyce_ADMS_SENSITIVITIES
369  .setAnalyticSensitivityAvailable(true)
370  .setSensitivityFunctor(&modSens)
371 #endif // Xyce_ADMS_SENSITIVITIES
372  ;
373  p.addPar("CJC", static_cast<double>(78.0*1.0e-15), &ADMSbjt504va::Model::CJC)
374  .setUnit(U_FARAD)
375  .setDescription("Zero-bias collector-base depletion capacitance")
376 #ifdef Xyce_ADMS_SENSITIVITIES
377  .setAnalyticSensitivityAvailable(true)
378  .setSensitivityFunctor(&modSens)
379 #endif // Xyce_ADMS_SENSITIVITIES
380  ;
381  p.addPar("VDC", static_cast<double>(0.68), &ADMSbjt504va::Model::VDC)
382  .setUnit(U_VOLT)
383  .setDescription("Collector-base diffusion voltage")
384 #ifdef Xyce_ADMS_SENSITIVITIES
385  .setAnalyticSensitivityAvailable(true)
386  .setSensitivityFunctor(&modSens)
387 #endif // Xyce_ADMS_SENSITIVITIES
388  ;
389  p.addPar("PC", static_cast<double>(0.5), &ADMSbjt504va::Model::PC)
390  .setDescription("Collector-base grading coefficient")
391 #ifdef Xyce_ADMS_SENSITIVITIES
392  .setAnalyticSensitivityAvailable(true)
393  .setSensitivityFunctor(&modSens)
394 #endif // Xyce_ADMS_SENSITIVITIES
395  ;
396  p.addPar("XP", static_cast<double>(0.35), &ADMSbjt504va::Model::XP)
397  .setDescription("Constant part of Cjc")
398 #ifdef Xyce_ADMS_SENSITIVITIES
399  .setAnalyticSensitivityAvailable(true)
400  .setSensitivityFunctor(&modSens)
401 #endif // Xyce_ADMS_SENSITIVITIES
402  ;
403  p.addPar("MC", static_cast<double>(0.5), &ADMSbjt504va::Model::MC)
404  .setDescription("Coefficient for current modulation of CB depletion capacitance")
405 #ifdef Xyce_ADMS_SENSITIVITIES
406  .setAnalyticSensitivityAvailable(true)
407  .setSensitivityFunctor(&modSens)
408 #endif // Xyce_ADMS_SENSITIVITIES
409  ;
410  p.addPar("XCJC", static_cast<double>(32.0*1.0e-3), &ADMSbjt504va::Model::XCJC)
411  .setDescription("Fraction of CB depletion capacitance under the emitter")
412 #ifdef Xyce_ADMS_SENSITIVITIES
413  .setAnalyticSensitivityAvailable(true)
414  .setSensitivityFunctor(&modSens)
415 #endif // Xyce_ADMS_SENSITIVITIES
416  ;
417  p.addPar("RCBLX", static_cast<double>(0.0), &ADMSbjt504va::Model::RCBLX)
418  .setUnit(U_OHM)
419  .setDescription("Resistance Collector Buried Layer eXtrinsic")
420 #ifdef Xyce_ADMS_SENSITIVITIES
421  .setAnalyticSensitivityAvailable(true)
422  .setSensitivityFunctor(&modSens)
423 #endif // Xyce_ADMS_SENSITIVITIES
424  ;
425  p.addPar("RCBLI", static_cast<double>(0.0), &ADMSbjt504va::Model::RCBLI)
426  .setUnit(U_OHM)
427  .setDescription("Resistance Collector Buried Layer Intrinsic")
428 #ifdef Xyce_ADMS_SENSITIVITIES
429  .setAnalyticSensitivityAvailable(true)
430  .setSensitivityFunctor(&modSens)
431 #endif // Xyce_ADMS_SENSITIVITIES
432  ;
433  p.addPar("CBCO", static_cast<double>(0.0), &ADMSbjt504va::Model::CBCO)
434  .setDescription("Collector-base overlap capacitance")
435 #ifdef Xyce_ADMS_SENSITIVITIES
436  .setAnalyticSensitivityAvailable(true)
437  .setSensitivityFunctor(&modSens)
438 #endif // Xyce_ADMS_SENSITIVITIES
439  ;
440  p.addPar("MTAU", static_cast<double>(1.0), &ADMSbjt504va::Model::MTAU)
441  .setDescription("Non-ideality factor of the emitter stored charge")
442 #ifdef Xyce_ADMS_SENSITIVITIES
443  .setAnalyticSensitivityAvailable(true)
444  .setSensitivityFunctor(&modSens)
445 #endif // Xyce_ADMS_SENSITIVITIES
446  ;
447  p.addPar("TAUE", static_cast<double>(2.0*1.0e-12), &ADMSbjt504va::Model::TAUE)
448  .setUnit(U_SECOND)
449  .setDescription("Minimum transit time of stored emitter charge")
450 #ifdef Xyce_ADMS_SENSITIVITIES
451  .setAnalyticSensitivityAvailable(true)
452  .setSensitivityFunctor(&modSens)
453 #endif // Xyce_ADMS_SENSITIVITIES
454  ;
455  p.addPar("TAUB", static_cast<double>(4.2*1.0e-12), &ADMSbjt504va::Model::TAUB)
456  .setUnit(U_SECOND)
457  .setDescription("Transit time of stored base sharge")
458 #ifdef Xyce_ADMS_SENSITIVITIES
459  .setAnalyticSensitivityAvailable(true)
460  .setSensitivityFunctor(&modSens)
461 #endif // Xyce_ADMS_SENSITIVITIES
462  ;
463  p.addPar("TEPI", static_cast<double>(41.0*1.0e-12), &ADMSbjt504va::Model::TEPI)
464  .setUnit(U_SECOND)
465  .setDescription("Transit time of stored epilayer charge")
466 #ifdef Xyce_ADMS_SENSITIVITIES
467  .setAnalyticSensitivityAvailable(true)
468  .setSensitivityFunctor(&modSens)
469 #endif // Xyce_ADMS_SENSITIVITIES
470  ;
471  p.addPar("TAUR", static_cast<double>(520.0*1.0e-12), &ADMSbjt504va::Model::TAUR)
472  .setUnit(U_SECOND)
473  .setDescription("Transit time of reverse extrinsic stored base charge")
474 #ifdef Xyce_ADMS_SENSITIVITIES
475  .setAnalyticSensitivityAvailable(true)
476  .setSensitivityFunctor(&modSens)
477 #endif // Xyce_ADMS_SENSITIVITIES
478  ;
479  p.addPar("DEG", static_cast<double>(0.0), &ADMSbjt504va::Model::DEG)
480  .setUnit(U_EV)
481  .setDescription("Bandgap difference over the base")
482 #ifdef Xyce_ADMS_SENSITIVITIES
483  .setAnalyticSensitivityAvailable(true)
484  .setSensitivityFunctor(&modSens)
485 #endif // Xyce_ADMS_SENSITIVITIES
486  ;
487  p.addPar("XREC", static_cast<double>(0.0), &ADMSbjt504va::Model::XREC)
488  .setDescription("Pre-factor of the recombination part of Ib1")
489 #ifdef Xyce_ADMS_SENSITIVITIES
490  .setAnalyticSensitivityAvailable(true)
491  .setSensitivityFunctor(&modSens)
492 #endif // Xyce_ADMS_SENSITIVITIES
493  ;
494  p.addPar("AQBO", static_cast<double>(0.3), &ADMSbjt504va::Model::AQBO)
495  .setDescription("Temperature coefficient of the zero-bias base charge")
496 #ifdef Xyce_ADMS_SENSITIVITIES
497  .setAnalyticSensitivityAvailable(true)
498  .setSensitivityFunctor(&modSens)
499 #endif // Xyce_ADMS_SENSITIVITIES
500  ;
501  p.addPar("AE", static_cast<double>(0.0), &ADMSbjt504va::Model::AE)
502  .setDescription("Temperature coefficient of the resistivity of the emitter")
503 #ifdef Xyce_ADMS_SENSITIVITIES
504  .setAnalyticSensitivityAvailable(true)
505  .setSensitivityFunctor(&modSens)
506 #endif // Xyce_ADMS_SENSITIVITIES
507  ;
508  p.addPar("AB", static_cast<double>(1.0), &ADMSbjt504va::Model::AB)
509  .setDescription("Temperature coefficient of the resistivity of the base")
510 #ifdef Xyce_ADMS_SENSITIVITIES
511  .setAnalyticSensitivityAvailable(true)
512  .setSensitivityFunctor(&modSens)
513 #endif // Xyce_ADMS_SENSITIVITIES
514  ;
515  p.addPar("AEPI", static_cast<double>(2.5), &ADMSbjt504va::Model::AEPI)
516  .setDescription("Temperature coefficient of the resistivity of the epilayer")
517 #ifdef Xyce_ADMS_SENSITIVITIES
518  .setAnalyticSensitivityAvailable(true)
519  .setSensitivityFunctor(&modSens)
520 #endif // Xyce_ADMS_SENSITIVITIES
521  ;
522  p.addPar("AEX", static_cast<double>(0.62), &ADMSbjt504va::Model::AEX)
523  .setDescription("Temperature coefficient of the resistivity of the extrinsic base")
524 #ifdef Xyce_ADMS_SENSITIVITIES
525  .setAnalyticSensitivityAvailable(true)
526  .setSensitivityFunctor(&modSens)
527 #endif // Xyce_ADMS_SENSITIVITIES
528  ;
529  p.addPar("AC", static_cast<double>(2.0), &ADMSbjt504va::Model::AC)
530  .setDescription("Temperature coefficient of the resistivity of the collector contact")
531 #ifdef Xyce_ADMS_SENSITIVITIES
532  .setAnalyticSensitivityAvailable(true)
533  .setSensitivityFunctor(&modSens)
534 #endif // Xyce_ADMS_SENSITIVITIES
535  ;
536  p.addPar("ACBL", static_cast<double>(2.0), &ADMSbjt504va::Model::ACBL)
537  .setDescription("Temperature coefficient of the resistivity of the collector buried layer")
538 #ifdef Xyce_ADMS_SENSITIVITIES
539  .setAnalyticSensitivityAvailable(true)
540  .setSensitivityFunctor(&modSens)
541 #endif // Xyce_ADMS_SENSITIVITIES
542  ;
543  p.addPar("DVGBF", static_cast<double>(50.0*1.0e-3), &ADMSbjt504va::Model::DVGBF)
544  .setUnit(U_VOLT)
545  .setDescription("Band-gap voltage difference of the forward current gain")
546 #ifdef Xyce_ADMS_SENSITIVITIES
547  .setAnalyticSensitivityAvailable(true)
548  .setSensitivityFunctor(&modSens)
549 #endif // Xyce_ADMS_SENSITIVITIES
550  ;
551  p.addPar("DVGBR", static_cast<double>(45.0*1.0e-3), &ADMSbjt504va::Model::DVGBR)
552  .setUnit(U_VOLT)
553  .setDescription("Band-gap voltage difference of the reverse current gain")
554 #ifdef Xyce_ADMS_SENSITIVITIES
555  .setAnalyticSensitivityAvailable(true)
556  .setSensitivityFunctor(&modSens)
557 #endif // Xyce_ADMS_SENSITIVITIES
558  ;
559  p.addPar("VGB", static_cast<double>(1.17), &ADMSbjt504va::Model::VGB)
560  .setUnit(U_VOLT)
561  .setDescription("Band-gap voltage of the base")
562 #ifdef Xyce_ADMS_SENSITIVITIES
563  .setAnalyticSensitivityAvailable(true)
564  .setSensitivityFunctor(&modSens)
565 #endif // Xyce_ADMS_SENSITIVITIES
566  ;
567  p.addPar("VGC", static_cast<double>(1.18), &ADMSbjt504va::Model::VGC)
568  .setUnit(U_VOLT)
569  .setDescription("Band-gap voltage of the collector")
570 #ifdef Xyce_ADMS_SENSITIVITIES
571  .setAnalyticSensitivityAvailable(true)
572  .setSensitivityFunctor(&modSens)
573 #endif // Xyce_ADMS_SENSITIVITIES
574  ;
575  p.addPar("VGJ", static_cast<double>(1.15), &ADMSbjt504va::Model::VGJ)
576  .setUnit(U_VOLT)
577  .setDescription("Band-gap voltage recombination emitter-base junction")
578 #ifdef Xyce_ADMS_SENSITIVITIES
579  .setAnalyticSensitivityAvailable(true)
580  .setSensitivityFunctor(&modSens)
581 #endif // Xyce_ADMS_SENSITIVITIES
582  ;
583  p.addPar("VGZEB", static_cast<double>(1.15), &ADMSbjt504va::Model::VGZEB)
584  .setUnit(U_VOLT)
585  .setDescription("Band-gap voltage at Tref of Zener effect emitter-base junction")
586 #ifdef Xyce_ADMS_SENSITIVITIES
587  .setAnalyticSensitivityAvailable(true)
588  .setSensitivityFunctor(&modSens)
589 #endif // Xyce_ADMS_SENSITIVITIES
590  ;
591  p.addPar("AVGEB", static_cast<double>(4.73e-4), &ADMSbjt504va::Model::AVGEB)
592  .setUnit(U_VKM1)
593  .setDescription("Temperature coefficient band-gap voltage for Zener effect emitter-base junction")
594 #ifdef Xyce_ADMS_SENSITIVITIES
595  .setAnalyticSensitivityAvailable(true)
596  .setSensitivityFunctor(&modSens)
597 #endif // Xyce_ADMS_SENSITIVITIES
598  ;
599  p.addPar("TVGEB", static_cast<double>(636.0), &ADMSbjt504va::Model::TVGEB)
600  .setUnit(U_DEGK)
601  .setDescription("Temperature coefficient band-gap voltage for Zener effect emitter-base junction")
602 #ifdef Xyce_ADMS_SENSITIVITIES
603  .setAnalyticSensitivityAvailable(true)
604  .setSensitivityFunctor(&modSens)
605 #endif // Xyce_ADMS_SENSITIVITIES
606  ;
607  p.addPar("DVGTE", static_cast<double>(0.05), &ADMSbjt504va::Model::DVGTE)
608  .setUnit(U_VOLT)
609  .setDescription("Band-gap voltage difference of emitter stored charge")
610 #ifdef Xyce_ADMS_SENSITIVITIES
611  .setAnalyticSensitivityAvailable(true)
612  .setSensitivityFunctor(&modSens)
613 #endif // Xyce_ADMS_SENSITIVITIES
614  ;
615  p.addPar("DAIS", static_cast<double>(0.0), &ADMSbjt504va::Model::DAIS)
616  .setDescription("Fine tuning of temperature dependence of C-E saturation current")
617 #ifdef Xyce_ADMS_SENSITIVITIES
618  .setAnalyticSensitivityAvailable(true)
619  .setSensitivityFunctor(&modSens)
620 #endif // Xyce_ADMS_SENSITIVITIES
621  ;
622  p.addPar("AF", static_cast<double>(2.0), &ADMSbjt504va::Model::AF)
623  .setDescription("Exponent of the Flicker-noise")
624 #ifdef Xyce_ADMS_SENSITIVITIES
625  .setAnalyticSensitivityAvailable(true)
626  .setSensitivityFunctor(&modSens)
627 #endif // Xyce_ADMS_SENSITIVITIES
628  ;
629  p.addPar("KF", static_cast<double>(20.0*1.0e-12), &ADMSbjt504va::Model::KF)
630  .setDescription("Flicker-noise coefficient of the ideal base current")
631 #ifdef Xyce_ADMS_SENSITIVITIES
632  .setAnalyticSensitivityAvailable(true)
633  .setSensitivityFunctor(&modSens)
634 #endif // Xyce_ADMS_SENSITIVITIES
635  ;
636  p.addPar("KFN", static_cast<double>(20.0*1.0e-12), &ADMSbjt504va::Model::KFN)
637  .setDescription("Flicker-noise coefficient of the non-ideal base current")
638 #ifdef Xyce_ADMS_SENSITIVITIES
639  .setAnalyticSensitivityAvailable(true)
640  .setSensitivityFunctor(&modSens)
641 #endif // Xyce_ADMS_SENSITIVITIES
642  ;
643  p.addPar("KAVL", static_cast<int>(0), &ADMSbjt504va::Model::KAVL)
644  .setDescription("Switch for white noise contribution due to avalanche");
645  p.addPar("ISS", static_cast<double>(48.0*1.0e-18), &ADMSbjt504va::Model::ISS)
646  .setUnit(U_AMP)
647  .setDescription("Base-substrate saturation current")
648 #ifdef Xyce_ADMS_SENSITIVITIES
649  .setAnalyticSensitivityAvailable(true)
650  .setSensitivityFunctor(&modSens)
651 #endif // Xyce_ADMS_SENSITIVITIES
652  ;
653  p.addPar("ICSS", static_cast<double>((-1.0)), &ADMSbjt504va::Model::ICSS)
654  .setUnit(U_AMP)
655  .setDescription("Collector-substrate ideal saturation current")
656 #ifdef Xyce_ADMS_SENSITIVITIES
657  .setAnalyticSensitivityAvailable(true)
658  .setSensitivityFunctor(&modSens)
659 #endif // Xyce_ADMS_SENSITIVITIES
660  ;
661  p.addPar("IKS", static_cast<double>(250.0*1.0e-6), &ADMSbjt504va::Model::IKS)
662  .setUnit(U_AMP)
663  .setDescription("Base-substrate high injection knee current")
664 #ifdef Xyce_ADMS_SENSITIVITIES
665  .setAnalyticSensitivityAvailable(true)
666  .setSensitivityFunctor(&modSens)
667 #endif // Xyce_ADMS_SENSITIVITIES
668  ;
669  p.addPar("CJS", static_cast<double>(315.0*1.0e-15), &ADMSbjt504va::Model::CJS)
670  .setUnit(U_FARAD)
671  .setDescription("Zero-bias collector-substrate depletion capacitance")
672 #ifdef Xyce_ADMS_SENSITIVITIES
673  .setAnalyticSensitivityAvailable(true)
674  .setSensitivityFunctor(&modSens)
675 #endif // Xyce_ADMS_SENSITIVITIES
676  ;
677  p.addPar("VDS", static_cast<double>(0.62), &ADMSbjt504va::Model::VDS)
678  .setUnit(U_VOLT)
679  .setDescription("Collector-substrate diffusion voltage")
680 #ifdef Xyce_ADMS_SENSITIVITIES
681  .setAnalyticSensitivityAvailable(true)
682  .setSensitivityFunctor(&modSens)
683 #endif // Xyce_ADMS_SENSITIVITIES
684  ;
685  p.addPar("PS", static_cast<double>(0.34), &ADMSbjt504va::Model::PS)
686  .setDescription("Collector-substrate grading coefficient")
687 #ifdef Xyce_ADMS_SENSITIVITIES
688  .setAnalyticSensitivityAvailable(true)
689  .setSensitivityFunctor(&modSens)
690 #endif // Xyce_ADMS_SENSITIVITIES
691  ;
692  p.addPar("VGS", static_cast<double>(1.20), &ADMSbjt504va::Model::VGS)
693  .setUnit(U_VOLT)
694  .setDescription("band-gap voltage of the substrate")
695 #ifdef Xyce_ADMS_SENSITIVITIES
696  .setAnalyticSensitivityAvailable(true)
697  .setSensitivityFunctor(&modSens)
698 #endif // Xyce_ADMS_SENSITIVITIES
699  ;
700  p.addPar("AS", static_cast<double>(1.58), &ADMSbjt504va::Model::AS)
701  .setDescription("Substrate temperature coefficient")
702 #ifdef Xyce_ADMS_SENSITIVITIES
703  .setAnalyticSensitivityAvailable(true)
704  .setSensitivityFunctor(&modSens)
705 #endif // Xyce_ADMS_SENSITIVITIES
706  ;
707  p.addPar("ASUB", static_cast<double>(2.0), &ADMSbjt504va::Model::ASUB)
708  .setDescription("Temperature coefficient for mobility of minorities in the substrate")
709 #ifdef Xyce_ADMS_SENSITIVITIES
710  .setAnalyticSensitivityAvailable(true)
711  .setSensitivityFunctor(&modSens)
712 #endif // Xyce_ADMS_SENSITIVITIES
713  ;
714  p.addPar("MULT", static_cast<double>(1.0), &ADMSbjt504va::Model::MULT)
715  .setDescription("Multiplication factor")
716 #ifdef Xyce_ADMS_SENSITIVITIES
717  .setAnalyticSensitivityAvailable(true)
718  .setSensitivityFunctor(&modSens)
719 #endif // Xyce_ADMS_SENSITIVITIES
720  ;
721  p.addPar("TYPE", static_cast<int>(1), &ADMSbjt504va::Model::TYPE)
722  .setDescription("Flag for NPN (1) or PNP (-1) transistor type");
723  p.addPar("GMIN", static_cast<double>(1.0e-13), &ADMSbjt504va::Model::GMIN)
724  .setDescription("Minimum conductance")
725 #ifdef Xyce_ADMS_SENSITIVITIES
726  .setAnalyticSensitivityAvailable(true)
727  .setSensitivityFunctor(&modSens)
728 #endif // Xyce_ADMS_SENSITIVITIES
729  ;
730 
731 }
732 
733 //-----------------------------------------------------------------------------
734 // Function : Instance::processParams
735 // Purpose :
736 // Special Notes :
737 // Scope : public
738 // Creator : admsXml
739 // Creation Date :
740 //-----------------------------------------------------------------------------
742 {
743  // set any non-constant parameter defaults
744 
745  // copy any model variables that have associated instance variables, but
746  // are only given in the model card:
747  if (!(given("MULT")))
748  {
749  MULT = model_.MULT;
750  }
751 
752 
753 
754  // Set any parameters that were not given and whose defaults depend on other
755  // parameters:
756 
757 
758  // Now we need to check that any parameters are within their ranges as
759  // specified in the verilog:
760 
761  // Parameter MULT : ] 0.0, (+inf) [
762  if ( (!((MULT >0.0))) )
763  {
764  UserError0(*this) << "ADMSbjt504va: Parameter MULT value " << MULT << " out of range ] 0.0, (+inf) [";
765  }
766 
767 
768  // this seems a little stupid, but verilog models that use $temperature
769  // don't also use a defined parameter "Temp", and count on $temperature
770  // to be the one the simulator wants:
771 
773 
774  // and of course, this routine is where we should put the initial_instance
775  // stuff
776 
777 
778  return true;
779 }
780 
781 //-----------------------------------------------------------------------------
782 // Function : Instance::Instance
783 // Purpose : "instance block" constructor
784 // Special Notes :
785 // Scope : public
786 // Creator : admsXml
787 // Creation Date :
788 //-----------------------------------------------------------------------------
789 
791  const Configuration & configuration,
792  const InstanceBlock & instance_block,
793  Model & model,
794  const FactoryBlock & factory_block)
795  : DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
796  model_(model),
797  MULT(1.0),
798  Izteb(0.0),
799  qBI(0.0),
800  Ir(0.0),
801  If(0.0),
802  Ib1(0.0),
803  Ib1_s(0.0),
804  Ib2(0.0),
805  Ib3(0.0),
806  Iex(0.0),
807  XIex(0.0),
808  Isub(0.0),
809  XIsub(0.0),
810  Rb2(0.0),
811  Gem(0.0),
812  eVb1b2(0.0),
813  li_c(-1),
814  li_b(-1),
815  li_e(-1),
816  li_s(-1),
817  li_e1(-1),
818  li_b1(-1),
819  li_b2(-1),
820  li_c3(-1),
821  li_c4(-1),
822  li_c2(-1),
823  li_c1(-1),
824  li_noi(-1),
825  f_c1_Equ_c1_Node_Ptr(0),
826  f_c1_Equ_c2_Node_Ptr(0),
827  f_c2_Equ_c1_Node_Ptr(0),
828  f_c2_Equ_c2_Node_Ptr(0),
829  f_c1_Equ_b2_Node_Ptr(0),
830  f_c2_Equ_b2_Node_Ptr(0),
831  f_e1_Equ_c1_Node_Ptr(0),
832  f_e1_Equ_c2_Node_Ptr(0),
833  f_e1_Equ_b2_Node_Ptr(0),
834  f_c2_Equ_e1_Node_Ptr(0),
835  f_e1_Equ_e1_Node_Ptr(0),
836  f_b1_Equ_b1_Node_Ptr(0),
837  f_b1_Equ_e1_Node_Ptr(0),
838  f_e1_Equ_b1_Node_Ptr(0),
839  f_b2_Equ_b2_Node_Ptr(0),
840  f_b2_Equ_e1_Node_Ptr(0),
841  f_b2_Equ_c1_Node_Ptr(0),
842  f_b2_Equ_c2_Node_Ptr(0),
843  f_b1_Equ_s_Node_Ptr(0),
844  f_b1_Equ_c1_Node_Ptr(0),
845  f_s_Equ_s_Node_Ptr(0),
846  f_s_Equ_c1_Node_Ptr(0),
847  f_b1_Equ_c4_Node_Ptr(0),
848  f_s_Equ_c4_Node_Ptr(0),
849  f_b1_Equ_c2_Node_Ptr(0),
850  f_s_Equ_c2_Node_Ptr(0),
851  f_b1_Equ_b2_Node_Ptr(0),
852  f_s_Equ_b2_Node_Ptr(0),
853  f_s_Equ_b1_Node_Ptr(0),
854  f_b_Equ_s_Node_Ptr(0),
855  f_b_Equ_c1_Node_Ptr(0),
856  f_b_Equ_c2_Node_Ptr(0),
857  f_b_Equ_b2_Node_Ptr(0),
858  f_b_Equ_e1_Node_Ptr(0),
859  f_s_Equ_e1_Node_Ptr(0),
860  f_b_Equ_c3_Node_Ptr(0),
861  f_b_Equ_c4_Node_Ptr(0),
862  f_s_Equ_c3_Node_Ptr(0),
863  f_b_Equ_b1_Node_Ptr(0),
864  f_b_Equ_b_Node_Ptr(0),
865  f_s_Equ_b_Node_Ptr(0),
866  f_b_Equ_c_Node_Ptr(0),
867  f_s_Equ_c_Node_Ptr(0),
868  f_c1_Equ_s_Node_Ptr(0),
869  f_b1_Equ_c3_Node_Ptr(0),
870  f_b2_Equ_c3_Node_Ptr(0),
871  f_b2_Equ_c4_Node_Ptr(0),
872  f_b1_Equ_b_Node_Ptr(0),
873  f_b2_Equ_b_Node_Ptr(0),
874  f_b2_Equ_b1_Node_Ptr(0),
875  f_b1_Equ_c_Node_Ptr(0),
876  f_b2_Equ_c_Node_Ptr(0),
877  f_c2_Equ_c3_Node_Ptr(0),
878  f_c2_Equ_c4_Node_Ptr(0),
879  f_c2_Equ_b1_Node_Ptr(0),
880  f_c2_Equ_b_Node_Ptr(0),
881  f_c2_Equ_c_Node_Ptr(0),
882  f_e_Equ_e_Node_Ptr(0),
883  f_e_Equ_e1_Node_Ptr(0),
884  f_e1_Equ_e_Node_Ptr(0),
885  f_noi_Equ_noi_Node_Ptr(0),
886  f_noi_Equ_e1_Node_Ptr(0),
887  f_e1_Equ_noi_Node_Ptr(0),
888  f_b2_Equ_noi_Node_Ptr(0),
889  f_c2_Equ_noi_Node_Ptr(0),
890  f_e1_Equ_c3_Node_Ptr(0),
891  f_e1_Equ_c4_Node_Ptr(0),
892  f_e1_Equ_b_Node_Ptr(0),
893  f_e1_Equ_c_Node_Ptr(0),
894  f_b_Equ_e_Node_Ptr(0),
895  f_e_Equ_b_Node_Ptr(0),
896  f_c_Equ_b_Node_Ptr(0),
897  f_c_Equ_c_Node_Ptr(0),
898  f_c3_Equ_s_Node_Ptr(0),
899  f_c3_Equ_c1_Node_Ptr(0),
900  f_c3_Equ_c2_Node_Ptr(0),
901  f_c3_Equ_b2_Node_Ptr(0),
902  f_c3_Equ_e1_Node_Ptr(0),
903  f_c3_Equ_c3_Node_Ptr(0),
904  f_c3_Equ_c4_Node_Ptr(0),
905  f_c3_Equ_b1_Node_Ptr(0),
906  f_c3_Equ_b_Node_Ptr(0),
907  f_c3_Equ_c_Node_Ptr(0),
908  f_c_Equ_c3_Node_Ptr(0),
909  f_c_Equ_c4_Node_Ptr(0),
910  f_c_Equ_c1_Node_Ptr(0),
911  f_c_Equ_c2_Node_Ptr(0),
912  f_c_Equ_b2_Node_Ptr(0),
913  f_c_Equ_b1_Node_Ptr(0),
914  f_c4_Equ_c4_Node_Ptr(0),
915  f_c4_Equ_c1_Node_Ptr(0),
916  f_c1_Equ_c4_Node_Ptr(0),
917  f_c4_Equ_b2_Node_Ptr(0),
918  f_c4_Equ_e1_Node_Ptr(0),
919  f_c4_Equ_c2_Node_Ptr(0),
920  f_c4_Equ_b1_Node_Ptr(0),
921  f_c4_Equ_c3_Node_Ptr(0),
922  f_c1_Equ_e1_Node_Ptr(0),
923  f_c1_Equ_b1_Node_Ptr(0),
924  f_c1_Equ_c3_Node_Ptr(0),
925  f_c4_Equ_s_Node_Ptr(0),
926  f_c4_Equ_b_Node_Ptr(0),
927  f_c4_Equ_c_Node_Ptr(0),
928  f_c1_Equ_b_Node_Ptr(0),
929  f_c1_Equ_c_Node_Ptr(0),
930  f_noi_Equ_b2_Node_Ptr(0),
931  f_noi_Equ_c1_Node_Ptr(0),
932  f_noi_Equ_c2_Node_Ptr(0),
933  q_c1_Equ_c1_Node_Ptr(0),
934  q_c1_Equ_c2_Node_Ptr(0),
935  q_c2_Equ_c1_Node_Ptr(0),
936  q_c2_Equ_c2_Node_Ptr(0),
937  q_c1_Equ_b2_Node_Ptr(0),
938  q_c2_Equ_b2_Node_Ptr(0),
939  q_e1_Equ_c1_Node_Ptr(0),
940  q_e1_Equ_c2_Node_Ptr(0),
941  q_e1_Equ_b2_Node_Ptr(0),
942  q_c2_Equ_e1_Node_Ptr(0),
943  q_e1_Equ_e1_Node_Ptr(0),
944  q_b1_Equ_b1_Node_Ptr(0),
945  q_b1_Equ_e1_Node_Ptr(0),
946  q_e1_Equ_b1_Node_Ptr(0),
947  q_b2_Equ_b2_Node_Ptr(0),
948  q_b2_Equ_e1_Node_Ptr(0),
949  q_b2_Equ_c1_Node_Ptr(0),
950  q_b2_Equ_c2_Node_Ptr(0),
951  q_b1_Equ_s_Node_Ptr(0),
952  q_b1_Equ_c1_Node_Ptr(0),
953  q_s_Equ_s_Node_Ptr(0),
954  q_s_Equ_c1_Node_Ptr(0),
955  q_b1_Equ_c4_Node_Ptr(0),
956  q_s_Equ_c4_Node_Ptr(0),
957  q_b1_Equ_c2_Node_Ptr(0),
958  q_s_Equ_c2_Node_Ptr(0),
959  q_b1_Equ_b2_Node_Ptr(0),
960  q_s_Equ_b2_Node_Ptr(0),
961  q_s_Equ_b1_Node_Ptr(0),
962  q_b_Equ_s_Node_Ptr(0),
963  q_b_Equ_c1_Node_Ptr(0),
964  q_b_Equ_c2_Node_Ptr(0),
965  q_b_Equ_b2_Node_Ptr(0),
966  q_b_Equ_e1_Node_Ptr(0),
967  q_s_Equ_e1_Node_Ptr(0),
968  q_b_Equ_c3_Node_Ptr(0),
969  q_b_Equ_c4_Node_Ptr(0),
970  q_s_Equ_c3_Node_Ptr(0),
971  q_b_Equ_b1_Node_Ptr(0),
972  q_b_Equ_b_Node_Ptr(0),
973  q_s_Equ_b_Node_Ptr(0),
974  q_b_Equ_c_Node_Ptr(0),
975  q_s_Equ_c_Node_Ptr(0),
976  q_c1_Equ_s_Node_Ptr(0),
977  q_b1_Equ_c3_Node_Ptr(0),
978  q_b2_Equ_c3_Node_Ptr(0),
979  q_b2_Equ_c4_Node_Ptr(0),
980  q_b1_Equ_b_Node_Ptr(0),
981  q_b2_Equ_b_Node_Ptr(0),
982  q_b2_Equ_b1_Node_Ptr(0),
983  q_b1_Equ_c_Node_Ptr(0),
984  q_b2_Equ_c_Node_Ptr(0),
985  q_c2_Equ_c3_Node_Ptr(0),
986  q_c2_Equ_c4_Node_Ptr(0),
987  q_c2_Equ_b1_Node_Ptr(0),
988  q_c2_Equ_b_Node_Ptr(0),
989  q_c2_Equ_c_Node_Ptr(0),
990  q_e_Equ_e_Node_Ptr(0),
991  q_e_Equ_e1_Node_Ptr(0),
992  q_e1_Equ_e_Node_Ptr(0),
993  q_noi_Equ_noi_Node_Ptr(0),
994  q_noi_Equ_e1_Node_Ptr(0),
995  q_e1_Equ_noi_Node_Ptr(0),
996  q_b2_Equ_noi_Node_Ptr(0),
997  q_c2_Equ_noi_Node_Ptr(0),
998  q_e1_Equ_c3_Node_Ptr(0),
999  q_e1_Equ_c4_Node_Ptr(0),
1000  q_e1_Equ_b_Node_Ptr(0),
1001  q_e1_Equ_c_Node_Ptr(0),
1002  q_b_Equ_e_Node_Ptr(0),
1003  q_e_Equ_b_Node_Ptr(0),
1004  q_c_Equ_b_Node_Ptr(0),
1005  q_c_Equ_c_Node_Ptr(0),
1006  q_c3_Equ_s_Node_Ptr(0),
1007  q_c3_Equ_c1_Node_Ptr(0),
1008  q_c3_Equ_c2_Node_Ptr(0),
1009  q_c3_Equ_b2_Node_Ptr(0),
1010  q_c3_Equ_e1_Node_Ptr(0),
1011  q_c3_Equ_c3_Node_Ptr(0),
1012  q_c3_Equ_c4_Node_Ptr(0),
1013  q_c3_Equ_b1_Node_Ptr(0),
1014  q_c3_Equ_b_Node_Ptr(0),
1015  q_c3_Equ_c_Node_Ptr(0),
1016  q_c_Equ_c3_Node_Ptr(0),
1017  q_c_Equ_c4_Node_Ptr(0),
1018  q_c_Equ_c1_Node_Ptr(0),
1019  q_c_Equ_c2_Node_Ptr(0),
1020  q_c_Equ_b2_Node_Ptr(0),
1021  q_c_Equ_b1_Node_Ptr(0),
1022  q_c4_Equ_c4_Node_Ptr(0),
1023  q_c4_Equ_c1_Node_Ptr(0),
1024  q_c1_Equ_c4_Node_Ptr(0),
1025  q_c4_Equ_b2_Node_Ptr(0),
1026  q_c4_Equ_e1_Node_Ptr(0),
1027  q_c4_Equ_c2_Node_Ptr(0),
1028  q_c4_Equ_b1_Node_Ptr(0),
1029  q_c4_Equ_c3_Node_Ptr(0),
1030  q_c1_Equ_e1_Node_Ptr(0),
1031  q_c1_Equ_b1_Node_Ptr(0),
1032  q_c1_Equ_c3_Node_Ptr(0),
1033  q_c4_Equ_s_Node_Ptr(0),
1034  q_c4_Equ_b_Node_Ptr(0),
1035  q_c4_Equ_c_Node_Ptr(0),
1036  q_c1_Equ_b_Node_Ptr(0),
1037  q_c1_Equ_c_Node_Ptr(0),
1038  q_noi_Equ_b2_Node_Ptr(0),
1039  q_noi_Equ_c1_Node_Ptr(0),
1040  q_noi_Equ_c2_Node_Ptr(0),
1041  admsTemperature(getDeviceOptions().temp.getImmutableValue<double>())
1042 
1043 {
1044  numIntVars = 8 + 0;
1045  numExtVars = 4;
1046 
1047 
1048  // Right now, we only have state for limited probes...
1049  numStateVars = 4;
1050 
1051 
1052  // Set up jacobian stamp:
1053 
1054  if (jacStamp.empty())
1055  {
1056  jacStamp.resize(12);
1057  jacStamp[admsNodeID_c].resize(8);
1066  jacStamp[admsNodeID_b].resize(11);
1078  jacStamp[admsNodeID_e].resize(3);
1082  jacStamp[admsNodeID_s].resize(10);
1093  jacStamp[admsNodeID_e1].resize(11);
1105  jacStamp[admsNodeID_b1].resize(10);
1116  jacStamp[admsNodeID_b2].resize(10);
1127  jacStamp[admsNodeID_c3].resize(10);
1138  jacStamp[admsNodeID_c4].resize(10);
1149  jacStamp[admsNodeID_c2].resize(10);
1160  jacStamp[admsNodeID_c1].resize(10);
1171  jacStamp[admsNodeID_noi].resize(5);
1177 
1178 
1179  // This is really not strictly necessary when not mapping away nodes,
1180  // but makes life easier when we get to registerJacLIDs. This block
1181  // simply makes a map that leaves everything in place. Later, when we
1182  // start making nodes go away, we will need to modify this.
1183 
1184  int mapSize = jacStamp.size();
1185  jacMap.clear();
1186  jacMap2.clear();
1187  jacMap.resize(mapSize);
1188  jacMap2.resize(mapSize);
1189  for (int i=0;i<mapSize;++i)
1190  {
1191  int rowSize=jacStamp[i].size();
1192  jacMap[i]=i;
1193  jacMap2[i].resize(rowSize);
1194  for (int j=0;j<rowSize;++j)
1195  {
1196  jacMap2[i][j] = j;
1197  }
1198  }
1199 
1200  }
1201 
1202 
1203  setDefaultParams();
1204  setParams(instance_block.params);
1205 
1206  // Real bogosity here...
1207  if (!given("XYCEADMSINSTTEMP"))
1208  admsInstTemp=getDeviceOptions().temp.getImmutableValue<double>();
1209 
1210  //calculate any parameters specified as expressions
1212 
1213  // calculate dependent (i.e. computed params) and check for errors.
1214  processParams();
1215  collapseNodes();
1216 }
1217 
1218 //-----------------------------------------------------------------------------
1219 // Function : Instance::collapseNodes
1220 // Purpose : function to handle collapsing of nodes
1221 // Special Notes :
1222 // Scope : public
1223 // Creator : admsXml
1224 // Creation Date :
1225 //-----------------------------------------------------------------------------
1227 {
1228  collapseNode_c4 = false;
1229  collapseNode_c1 = false;
1230  if (((model_.RCBLX)>0.0))
1231  {
1232 
1233  if (!(((model_.RCBLI)>0.0)))
1234  {
1235 
1236  collapseNode_c1 = true;
1237 
1238  }
1239 
1240  }
1241 
1242  else
1243  {
1244 
1245  collapseNode_c4 = true;
1246 
1247  if (!(((model_.RCBLI)>0.0)))
1248  {
1249 
1250  collapseNode_c1 = true;
1251 
1252  }
1253 
1254  }
1255 
1256 
1257 
1258  // Map away any unneeded internal nodes:
1259  // temporary stamps and maps
1260  std::vector< std::vector<int> > tempStamp;
1261  std::vector<int> tempMap;
1262  std::vector< std::vector<int> > tempMap2;
1263 
1264  int OriginalSize = jacMap.size();
1265 
1266  // If the columns of the jacstamp are not in ascending order then
1267  // jacStampMap will do bogus things. Our ADMS back-end doesn't guarantee
1268  // in-order jacStamps. So we reorder (through the maps)
1269  jacStampMap_fixOrder(jacStamp,jacMap2,tempStamp,tempMap2);
1270  jacStamp=tempStamp; jacMap2=tempMap2;
1271 
1272  if (collapseNode_c4)
1273  {
1274  tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1276  tempStamp, tempMap, tempMap2,
1278  OriginalSize);
1279  // now move the new stuff into the old place
1280  jacStamp = tempStamp; jacMap = tempMap; jacMap2 = tempMap2;
1281  numIntVars--;
1282  }
1283  if (collapseNode_c1)
1284  {
1285  tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1287  tempStamp, tempMap, tempMap2,
1289  OriginalSize);
1290  // now move the new stuff into the old place
1291  jacStamp = tempStamp; jacMap = tempMap; jacMap2 = tempMap2;
1292  numIntVars--;
1293  }
1294 }
1295 
1296 //-----------------------------------------------------------------------------
1297 // Function : Instance::~Instance
1298 // Purpose : destructor
1299 // Special Notes :
1300 // Scope : public
1301 // Creator : admsXml
1302 // Creation Date :
1303 //-----------------------------------------------------------------------------
1305 {
1306 }
1307 
1308 //-----------------------------------------------------------------------------
1309 // Function : Instance::registerLIDs
1310 // Purpose : function for registering, and setting up, local ID's.
1311 // Special Notes :
1312 // Scope : public
1313 // Creator : admsXml
1314 // Creation Date :
1315 //-----------------------------------------------------------------------------
1316 void Instance::registerLIDs( const LocalIdVector & intLIDVecRef,
1317  const LocalIdVector & extLIDVecRef)
1318 {
1319  AssertLIDs(intLIDVecRef.size() == numIntVars);
1320  AssertLIDs(extLIDVecRef.size() == numExtVars);
1321 
1322  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1323  {
1324  Xyce::dout() << std::endl << section_divider << std::endl
1325  << "In ADMSbjt504va::Instance::register LIDs\n\n"
1326  << "name = " << getName() << std::endl
1327  << "number of internal variables: " << numIntVars << std::endl
1328  << "number of external variables: " << numExtVars << std::endl;
1329  }
1330 
1331  // copy over the global ID lists.
1332  intLIDVec = intLIDVecRef;
1333  extLIDVec = extLIDVecRef;
1334 
1335  // Now use these lists to obtain the indices into the linear algebra
1336  // entities. This assumes an order.
1337  int i=0;
1338  li_c = extLIDVecRef[i++];
1339  li_b = extLIDVecRef[i++];
1340  li_e = extLIDVecRef[i++];
1341  li_s = extLIDVecRef[i++];
1342 
1343 
1344  i=0;
1345  li_e1 = intLIDVecRef[i++];
1346  li_b1 = intLIDVecRef[i++];
1347  li_b2 = intLIDVecRef[i++];
1348  li_c3 = intLIDVecRef[i++];
1349  if (!collapseNode_c4)
1350  li_c4 = intLIDVecRef[i++];
1351  else
1352  li_c4 = li_c3;
1353  li_c2 = intLIDVecRef[i++];
1354  if (!collapseNode_c1)
1355  li_c1 = intLIDVecRef[i++];
1356  else
1357  li_c1 = li_c4;
1358  li_noi = intLIDVecRef[i++];
1359 
1360 
1361  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1362  {
1363  Xyce::dout() << "\nSolution and RHS variables:\n";
1364  Xyce::dout() << "\nli_c = " << li_c << std::endl;
1365  Xyce::dout() << "\nli_b = " << li_b << std::endl;
1366  Xyce::dout() << "\nli_e = " << li_e << std::endl;
1367  Xyce::dout() << "\nli_s = " << li_s << std::endl;
1368  Xyce::dout() << "\nli_e1 = " << li_e1 << std::endl;
1369  Xyce::dout() << "\nli_b1 = " << li_b1 << std::endl;
1370  Xyce::dout() << "\nli_b2 = " << li_b2 << std::endl;
1371  Xyce::dout() << "\nli_c3 = " << li_c3 << std::endl;
1372  Xyce::dout() << "\nli_c4 = " << li_c4 << std::endl;
1373  Xyce::dout() << "\nli_c2 = " << li_c2 << std::endl;
1374  Xyce::dout() << "\nli_c1 = " << li_c1 << std::endl;
1375  Xyce::dout() << "\nli_noi = " << li_noi << std::endl;
1376 
1377  Xyce::dout() << "\nEnd of ADMSbjt504va::Instance::register LIDs\n";
1378  Xyce::dout() << section_divider << std::endl;
1379  }
1380 }
1381 
1382 //-----------------------------------------------------------------------------
1383 // Function : Instance::loadNodeSymbols
1384 // Purpose :
1385 // Special Notes :
1386 // Scope : public
1387 // Creator : admsXml
1388 // Creation Date :
1389 //-----------------------------------------------------------------------------
1390 void Instance::loadNodeSymbols(Util::SymbolTable &symbol_table) const
1391 {
1392  addInternalNode(symbol_table, li_e1, getName(), "e1");
1393  addInternalNode(symbol_table, li_b1, getName(), "b1");
1394  addInternalNode(symbol_table, li_b2, getName(), "b2");
1395  addInternalNode(symbol_table, li_c3, getName(), "c3");
1396  if (!collapseNode_c4)
1397  {
1398  addInternalNode(symbol_table, li_c4, getName(), "c4");
1399  }
1400  addInternalNode(symbol_table, li_c2, getName(), "c2");
1401  if (!collapseNode_c1)
1402  {
1403  addInternalNode(symbol_table, li_c1, getName(), "c1");
1404  }
1405  addInternalNode(symbol_table, li_noi, getName(), "noi");
1406 }
1407 
1408 //-----------------------------------------------------------------------------
1409 // Function : Instance::registerStateLIDs
1410 // Purpose :
1411 // Special Notes :
1412 // Scope : public
1413 // Creator : admsXml
1414 // Creation Date :
1415 //-----------------------------------------------------------------------------
1416 void Instance::registerStateLIDs( const LocalIdVector & staLIDVecRef)
1417 {
1418  AssertLIDs(staLIDVecRef.size() == numStateVars);
1419 
1420  int numSta = staLIDVecRef.size();
1421  if (numSta > 0)
1422  {
1423  int i=0;
1424  staLIDVec = staLIDVecRef;
1425 
1430  }
1431 }
1432 
1433 //-----------------------------------------------------------------------------
1434 // Function : Instance::jacobianStamp
1435 // Purpose :
1436 // Special Notes : In initial version, we won't support mapping away nodes
1437 // Scope : public
1438 // Creator : admsXml
1439 // Creation Date :
1440 //-----------------------------------------------------------------------------
1442 {
1443  return jacStamp;
1444 }
1445 
1446 //-----------------------------------------------------------------------------
1447 // Function : Instance::registerJacLIDs
1448 // Purpose : Create Offset variables used for referencing jacobian
1449 // elements
1450 // Special Notes :
1451 // Scope : public
1452 // Creator : admsXml
1453 // Creation Date :
1454 //-----------------------------------------------------------------------------
1456 {
1458  std::vector<int> & map=jacMap;
1459  std::vector< std::vector<int> > & map2=jacMap2;
1460 
1461 
1462  // do nothing, we won't use the jac lids anymore, we'll use pointers
1463 
1464 }
1465 
1466 //-----------------------------------------------------------------------------
1467 // Function : Instance::setupPointers
1468 // Purpose : Create pointer variables used for referencing jacobian
1469 // elements
1470 // Special Notes :
1471 // Scope : public
1472 // Creator : admsXml
1473 // Creation Date :
1474 //-----------------------------------------------------------------------------
1476 {
1477 
1478  Linear::Matrix * dFdxMatPtr = extData.dFdxMatrixPtr;
1479  Linear::Matrix * dQdxMatPtr = extData.dQdxMatrixPtr;
1480  f_c_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_b);
1481  q_c_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_b);
1482  f_c_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_c);
1483  q_c_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_c);
1484  f_c_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_c3);
1485  q_c_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_c3);
1486  f_c_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_c4);
1487  q_c_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_c4);
1488  f_c_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_c1);
1489  q_c_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_c1);
1490  f_c_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_c2);
1491  q_c_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_c2);
1492  f_c_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_b2);
1493  q_c_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_b2);
1494  f_c_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_b1);
1495  q_c_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_b1);
1496  f_b_Equ_s_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_s);
1497  q_b_Equ_s_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_s);
1498  f_b_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_c1);
1499  q_b_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_c1);
1500  f_b_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_c2);
1501  q_b_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_c2);
1502  f_b_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_b2);
1503  q_b_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_b2);
1504  f_b_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_e1);
1505  q_b_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_e1);
1506  f_b_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_c3);
1507  q_b_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_c3);
1508  f_b_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_c4);
1509  q_b_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_c4);
1510  f_b_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_b1);
1511  q_b_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_b1);
1512  f_b_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_b);
1513  q_b_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_b);
1514  f_b_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_c);
1515  q_b_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_c);
1516  f_b_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_e);
1517  q_b_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_e);
1518  f_e_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_e);
1519  q_e_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_e);
1520  f_e_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_e1);
1521  q_e_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_e1);
1522  f_e_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_b);
1523  q_e_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_b);
1524  f_s_Equ_s_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_s);
1525  q_s_Equ_s_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_s);
1526  f_s_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_c1);
1527  q_s_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_c1);
1528  f_s_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_c4);
1529  q_s_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_c4);
1530  f_s_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_c2);
1531  q_s_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_c2);
1532  f_s_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_b2);
1533  q_s_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_b2);
1534  f_s_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_b1);
1535  q_s_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_b1);
1536  f_s_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_e1);
1537  q_s_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_e1);
1538  f_s_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_c3);
1539  q_s_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_c3);
1540  f_s_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_b);
1541  q_s_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_b);
1542  f_s_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_s,li_c);
1543  q_s_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_s,li_c);
1544  f_e1_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_c1);
1545  q_e1_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_c1);
1546  f_e1_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_c2);
1547  q_e1_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_c2);
1548  f_e1_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_b2);
1549  q_e1_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_b2);
1550  f_e1_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_e1);
1551  q_e1_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_e1);
1552  f_e1_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_b1);
1553  q_e1_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_b1);
1554  f_e1_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_e);
1555  q_e1_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_e);
1556  f_e1_Equ_noi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_noi);
1557  q_e1_Equ_noi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_noi);
1558  f_e1_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_c3);
1559  q_e1_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_c3);
1560  f_e1_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_c4);
1561  q_e1_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_c4);
1562  f_e1_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_b);
1563  q_e1_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_b);
1564  f_e1_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e1,li_c);
1565  q_e1_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e1,li_c);
1566  f_b1_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_b1);
1567  q_b1_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_b1);
1568  f_b1_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_e1);
1569  q_b1_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_e1);
1570  f_b1_Equ_s_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_s);
1571  q_b1_Equ_s_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_s);
1572  f_b1_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_c1);
1573  q_b1_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_c1);
1574  f_b1_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_c4);
1575  q_b1_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_c4);
1576  f_b1_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_c2);
1577  q_b1_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_c2);
1578  f_b1_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_b2);
1579  q_b1_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_b2);
1580  f_b1_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_c3);
1581  q_b1_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_c3);
1582  f_b1_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_b);
1583  q_b1_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_b);
1584  f_b1_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b1,li_c);
1585  q_b1_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b1,li_c);
1586  f_b2_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_b2);
1587  q_b2_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_b2);
1588  f_b2_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_e1);
1589  q_b2_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_e1);
1590  f_b2_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_c1);
1591  q_b2_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_c1);
1592  f_b2_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_c2);
1593  q_b2_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_c2);
1594  f_b2_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_c3);
1595  q_b2_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_c3);
1596  f_b2_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_c4);
1597  q_b2_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_c4);
1598  f_b2_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_b);
1599  q_b2_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_b);
1600  f_b2_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_b1);
1601  q_b2_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_b1);
1602  f_b2_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_c);
1603  q_b2_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_c);
1604  f_b2_Equ_noi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b2,li_noi);
1605  q_b2_Equ_noi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b2,li_noi);
1606  f_c3_Equ_s_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_s);
1607  q_c3_Equ_s_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_s);
1608  f_c3_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_c1);
1609  q_c3_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_c1);
1610  f_c3_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_c2);
1611  q_c3_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_c2);
1612  f_c3_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_b2);
1613  q_c3_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_b2);
1614  f_c3_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_e1);
1615  q_c3_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_e1);
1616  f_c3_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_c3);
1617  q_c3_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_c3);
1618  f_c3_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_c4);
1619  q_c3_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_c4);
1620  f_c3_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_b1);
1621  q_c3_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_b1);
1622  f_c3_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_b);
1623  q_c3_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_b);
1624  f_c3_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c3,li_c);
1625  q_c3_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c3,li_c);
1626  f_c4_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_c4);
1627  q_c4_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_c4);
1628  f_c4_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_c1);
1629  q_c4_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_c1);
1630  f_c4_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_b2);
1631  q_c4_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_b2);
1632  f_c4_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_e1);
1633  q_c4_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_e1);
1634  f_c4_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_c2);
1635  q_c4_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_c2);
1636  f_c4_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_b1);
1637  q_c4_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_b1);
1638  f_c4_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_c3);
1639  q_c4_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_c3);
1640  f_c4_Equ_s_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_s);
1641  q_c4_Equ_s_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_s);
1642  f_c4_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_b);
1643  q_c4_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_b);
1644  f_c4_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c4,li_c);
1645  q_c4_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c4,li_c);
1646  f_c2_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_c1);
1647  q_c2_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_c1);
1648  f_c2_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_c2);
1649  q_c2_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_c2);
1650  f_c2_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_b2);
1651  q_c2_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_b2);
1652  f_c2_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_e1);
1653  q_c2_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_e1);
1654  f_c2_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_c3);
1655  q_c2_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_c3);
1656  f_c2_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_c4);
1657  q_c2_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_c4);
1658  f_c2_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_b1);
1659  q_c2_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_b1);
1660  f_c2_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_b);
1661  q_c2_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_b);
1662  f_c2_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_c);
1663  q_c2_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_c);
1664  f_c2_Equ_noi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c2,li_noi);
1665  q_c2_Equ_noi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c2,li_noi);
1666  f_c1_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_c1);
1667  q_c1_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_c1);
1668  f_c1_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_c2);
1669  q_c1_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_c2);
1670  f_c1_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_b2);
1671  q_c1_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_b2);
1672  f_c1_Equ_s_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_s);
1673  q_c1_Equ_s_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_s);
1674  f_c1_Equ_c4_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_c4);
1675  q_c1_Equ_c4_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_c4);
1676  f_c1_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_e1);
1677  q_c1_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_e1);
1678  f_c1_Equ_b1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_b1);
1679  q_c1_Equ_b1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_b1);
1680  f_c1_Equ_c3_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_c3);
1681  q_c1_Equ_c3_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_c3);
1682  f_c1_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_b);
1683  q_c1_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_b);
1684  f_c1_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c1,li_c);
1685  q_c1_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c1,li_c);
1686  f_noi_Equ_noi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_noi,li_noi);
1687  q_noi_Equ_noi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_noi,li_noi);
1688  f_noi_Equ_e1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_noi,li_e1);
1689  q_noi_Equ_e1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_noi,li_e1);
1690  f_noi_Equ_b2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_noi,li_b2);
1691  q_noi_Equ_b2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_noi,li_b2);
1692  f_noi_Equ_c1_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_noi,li_c1);
1693  q_noi_Equ_c1_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_noi,li_c1);
1694  f_noi_Equ_c2_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_noi,li_c2);
1695  q_noi_Equ_c2_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_noi,li_c2);
1696 
1697 
1698 }
1699 
1700 // RHS load functions
1701 
1702 //-----------------------------------------------------------------------------
1703 // Function : Instance::loadDAEFVector
1704 // Purpose : load F vector (static contributions) for one instance for
1705 // NEW DAE formulation
1706 // Special Notes :
1707 // Scope : public
1708 // Creator : admsXml
1709 // Creation Date :
1710 //-----------------------------------------------------------------------------
1712 {
1713 
1714  bool bsuccess=true;
1715 
1729  {
1730  double *dFdxdVp = extData.dFdxdVpVectorRawPtr;
1731  dFdxdVp[li_c] += Jdxp_static[admsNodeID_c];
1732  dFdxdVp[li_b] += Jdxp_static[admsNodeID_b];
1733  dFdxdVp[li_e] += Jdxp_static[admsNodeID_e];
1734  dFdxdVp[li_s] += Jdxp_static[admsNodeID_s];
1735  dFdxdVp[li_e1] += Jdxp_static[admsNodeID_e1];
1736  dFdxdVp[li_b1] += Jdxp_static[admsNodeID_b1];
1737  dFdxdVp[li_b2] += Jdxp_static[admsNodeID_b2];
1738  dFdxdVp[li_c3] += Jdxp_static[admsNodeID_c3];
1739  dFdxdVp[li_c4] += Jdxp_static[admsNodeID_c4];
1740  dFdxdVp[li_c2] += Jdxp_static[admsNodeID_c2];
1741  dFdxdVp[li_c1] += Jdxp_static[admsNodeID_c1];
1742  dFdxdVp[li_noi] += Jdxp_static[admsNodeID_noi];
1743 
1744  }
1745 
1746  return bsuccess;
1747 }
1748 
1749 //-----------------------------------------------------------------------------
1750 // Function : Instance::loadDAEQVector
1751 // Purpose : load Q vector (dynamic contributions) for one instance for
1752 // NEW DAE formulation
1753 // Special Notes :
1754 // Scope : public
1755 // Creator : admsXml
1756 // Creation Date :
1757 //-----------------------------------------------------------------------------
1759 {
1773  {
1774  double *dQdxdVp = extData.dQdxdVpVectorRawPtr;
1775  dQdxdVp[li_c] += Jdxp_dynamic[admsNodeID_c];
1776  dQdxdVp[li_b] += Jdxp_dynamic[admsNodeID_b];
1777  dQdxdVp[li_e] += Jdxp_dynamic[admsNodeID_e];
1778  dQdxdVp[li_s] += Jdxp_dynamic[admsNodeID_s];
1779  dQdxdVp[li_e1] += Jdxp_dynamic[admsNodeID_e1];
1780  dQdxdVp[li_b1] += Jdxp_dynamic[admsNodeID_b1];
1781  dQdxdVp[li_b2] += Jdxp_dynamic[admsNodeID_b2];
1782  dQdxdVp[li_c3] += Jdxp_dynamic[admsNodeID_c3];
1783  dQdxdVp[li_c4] += Jdxp_dynamic[admsNodeID_c4];
1784  dQdxdVp[li_c2] += Jdxp_dynamic[admsNodeID_c2];
1785  dQdxdVp[li_c1] += Jdxp_dynamic[admsNodeID_c1];
1786  dQdxdVp[li_noi] += Jdxp_dynamic[admsNodeID_noi];
1787  }
1788 
1789  return true;
1790 }
1791 
1792 
1793 //-----------------------------------------------------------------------------
1794 // Function : Instance::updatePrimaryState
1795 // Purpose :
1796 // Special Notes : In this initial implementation, does little more than
1797 // call updateIntermediateVars()
1798 // Scope : public
1799 // Creator : admsXml
1800 // Creation Date :
1801 //-----------------------------------------------------------------------------
1803 {
1804  bool bsuccess = true;
1805 
1806  bsuccess = updateIntermediateVars();
1807 
1808  // if old DAE were implemented, we'd save dynamic contributions as state
1809  // here.
1810 
1811  double * staVec = extData.nextStaVectorRawPtr;
1812  // Also need to save limited voltage drops
1813  // This formulation assumes that we have *always* written the
1814  // limited voltages back into the probeVars[] array.
1815 
1820 
1821  return bsuccess;
1822 }
1823 
1824 //-----------------------------------------------------------------------------
1825 // Function : Instance::updateSecondaryState
1826 // Purpose :
1827 // Special Notes : In this initial implementation, does nothing
1828 // Scope : public
1829 // Creator : admsXml
1830 // Creation Date :
1831 //-----------------------------------------------------------------------------
1833 {
1834  bool bsuccess = true;
1835 
1836  // were old DAE implemented, we'd pull dynamic contribution derivatives
1837  // out of state.
1838 
1839  return bsuccess;
1840 }
1841 
1842 //-----------------------------------------------------------------------------
1843 // Function : Instance::updateIntermediateVars
1844 // Purpose : update intermediate variables for one bjt504va instance
1845 // Special Notes :
1846 // Scope : public
1847 // Creator : admsXml
1848 // Creation Date :
1849 //-----------------------------------------------------------------------------
1851 {
1852 
1853  bool bsuccess=true;
1854  Linear::Vector * solVectorPtr = extData.nextSolVectorPtr;
1855 
1856  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
1857  {
1858  Xyce::dout() << std::endl << subsection_divider << std::endl;
1859  Xyce::dout() << " In ADMSbjt504va::Instance::updateIntermediateVars\n\n";
1860  Xyce::dout() << " name = " << getName() << std::endl;
1861  }
1862 
1863  // Local variables
1864  double common;
1865  double powerREC;
1866  double powerRBC;
1867  double powerRCCxx;
1868  double powerRCCex;
1869  double powerRCCin;
1870  AdmsFadType powerRBV;
1871  AdmsFadType powerCCS;
1872  AdmsFadType powerFBCS;
1873  AdmsFadType powerFBC1fB1;
1874  double exponentFBC1fB2;
1875  AdmsFadType powerFBC1fB2;
1876  AdmsFadType powerEBSCS;
1877  AdmsFadType powerEBSC1f;
1878  AdmsFadType powerRBCS;
1879  AdmsFadType powerRBC1f;
1880  AdmsFadType powerExCS;
1881  AdmsFadType powerExC1f;
1882  AdmsFadType powerExCSMOD;
1883  AdmsFadType powerExC1fMOD;
1884  AdmsFadType powerSubsCS_B1S;
1885  AdmsFadType powerSubsCS_BS;
1886  AdmsFadType twoqIavl;
1887  AdmsFadType powerCCS_A;
1888  AdmsFadType Vb2c1;
1889  AdmsFadType Vb2c2;
1890  AdmsFadType Vb2e1;
1891  AdmsFadType Vb1e1;
1892  AdmsFadType Vb1b2;
1893  AdmsFadType Vsc1;
1894  AdmsFadType Vc1c2;
1895  AdmsFadType Vee1;
1896  AdmsFadType Vbb1;
1897  AdmsFadType Vbe;
1898  AdmsFadType Vbc;
1899  AdmsFadType Vc4c1;
1900  AdmsFadType Vc3c4;
1901  AdmsFadType Vb1c4;
1902  AdmsFadType Vcc3;
1903  AdmsFadType Vbc3;
1904  AdmsFadType Vsc4;
1905  AdmsFadType Vsc3;
1906  double expl;
1907  AdmsFadType eVb2c2;
1908  AdmsFadType eVb2e1;
1909  AdmsFadType eVb1e1;
1910  AdmsFadType eVb1c4;
1911  AdmsFadType eVbc3;
1912  AdmsFadType eVsc1;
1913  AdmsFadType eVsc3;
1914  AdmsFadType eVsc4;
1915  AdmsFadType eVbc3VDC;
1916  AdmsFadType eVb1c4VDC;
1917  AdmsFadType eVb2c2VDC;
1918  AdmsFadType eVb2c1VDC;
1919  AdmsFadType K0;
1920  AdmsFadType Kw;
1921  AdmsFadType pW;
1922  AdmsFadType Ec;
1923  AdmsFadType Ic1c2;
1924  AdmsFadType pav;
1925  AdmsFadType tmpV;
1926  AdmsFadType Vqs_th;
1927  double eps_VDC;
1928  double eps2;
1929  AdmsFadType x2;
1930  AdmsFadType Vqs;
1931  AdmsFadType Iqs;
1932  AdmsFadType Ic1c2_Iqs;
1933  AdmsFadType alpha1;
1934  AdmsFadType alpha;
1935  AdmsFadType vyi;
1936  AdmsFadType yi;
1937  AdmsFadType xi_w;
1938  AdmsFadType gp0;
1939  AdmsFadType gp0_help;
1940  AdmsFadType gp02;
1941  AdmsFadType sqr_arg;
1942  AdmsFadType p0star;
1943  AdmsFadType eVb2c2star;
1944  AdmsFadType B1;
1945  AdmsFadType B2;
1946  AdmsFadType Vxi0;
1947  AdmsFadType Vch;
1948  AdmsFadType Icap;
1949  AdmsFadType Icap_IHC;
1950  double Vfe;
1951  double a_VDE;
1952  AdmsFadType Vje;
1953  AdmsFadType E0BE;
1954  AdmsFadType Vte;
1955  AdmsFadType Vjunc;
1956  double bjc;
1957  double Vfc;
1958  AdmsFadType Vjc;
1959  AdmsFadType fI;
1960  AdmsFadType Vcv;
1961  AdmsFadType Vtc;
1962  double If0;
1963  AdmsFadType f1;
1964  AdmsFadType n0;
1965  AdmsFadType f2;
1966  AdmsFadType nB;
1967  AdmsFadType termE;
1968  AdmsFadType termC;
1969  AdmsFadType q0I;
1970  AdmsFadType q1I;
1971  AdmsFadType In;
1972  double Ibf0;
1973  AdmsFadType tmpExp;
1974  AdmsFadType eZEB;
1975  AdmsFadType x;
1976  AdmsFadType dE0BE;
1977  AdmsFadType edZEB;
1978  AdmsFadType DZEB;
1979  AdmsFadType g1;
1980  AdmsFadType g2;
1981  AdmsFadType nBex;
1982  AdmsFadType pWex;
1983  AdmsFadType Isf;
1984  AdmsFadType Xg1;
1985  AdmsFadType XnBex;
1986  AdmsFadType XIMex;
1987  AdmsFadType XIMsub;
1988  double Vex_bias;
1989  double Vex;
1990  AdmsFadType vdif;
1991  AdmsFadType VBex;
1992  AdmsFadType Fex;
1993  AdmsFadType q0Q;
1994  AdmsFadType q1Q;
1995  AdmsFadType qBQ;
1996  AdmsFadType Ib1b2;
1997  AdmsFadType Iavl;
1998  double dEdx0;
1999  AdmsFadType xd;
2000  AdmsFadType xi_w1;
2001  AdmsFadType Weff;
2002  AdmsFadType Wd;
2003  AdmsFadType Eav;
2004  AdmsFadType E0;
2005  AdmsFadType SHw;
2006  double Efi;
2007  AdmsFadType Ew;
2008  AdmsFadType Em;
2009  AdmsFadType EmEav_Em;
2010  AdmsFadType lambda;
2011  AdmsFadType Gmax;
2012  AdmsFadType Vb2c2star;
2013  AdmsFadType Qte;
2014  AdmsFadType Vje_s;
2015  AdmsFadType Qte_s;
2016  AdmsFadType Qtc;
2017  double Qb0;
2018  AdmsFadType Qbe_qs;
2019  AdmsFadType Qbc_qs;
2020  double a_VDC;
2021  AdmsFadType Vjcex;
2022  AdmsFadType Vtexv;
2023  AdmsFadType Qtex;
2024  AdmsFadType XVjcex;
2025  AdmsFadType XVtexv;
2026  AdmsFadType XQtex;
2027  double a_VDS;
2028  double Vfs;
2029  AdmsFadType Vjs;
2030  AdmsFadType Qts;
2031  double Qe0;
2032  AdmsFadType Qe;
2033  double Qepi0;
2034  AdmsFadType Qepi;
2035  AdmsFadType Qex;
2036  AdmsFadType XQex;
2037  AdmsFadType Xg2;
2038  AdmsFadType XpWex;
2039  AdmsFadType Qb1b2;
2040  AdmsFadType dVteVje;
2041  AdmsFadType Vb2e1Vfe;
2042  AdmsFadType dVjeVb2e1;
2043  AdmsFadType dVteVb2e1;
2044  AdmsFadType dQteVb2e1;
2045  AdmsFadType dn0Vb2e1;
2046  AdmsFadType dQbeVb2e1;
2047  AdmsFadType dQeVb2e1;
2048  AdmsFadType Qbc;
2049  AdmsFadType Qbe;
2050  AdmsFadType cor_exp_1;
2051  AdmsFadType cor_exp_2;
2052  // temporary variables for limiting
2053  double Vb1b2_orig,Vb1b2_limited,Vb1b2_old;
2054  double Vb1e1_orig,Vb1e1_limited,Vb1e1_old;
2055  double Vb2c2_orig,Vb2c2_limited,Vb2c2_old;
2056  double Vb2c1_orig,Vb2c1_limited,Vb2c1_old;
2057 
2058 
2059  // set the sizes of the Fad arrays:
2060 
2061  if (probeVars.size() != (15))
2062  {
2063  probeVars.resize(15);
2064  staticContributions.resize(12+0);
2065  dynamicContributions.resize(12+0);
2066  probeDiffs.resize(15,0.0);
2067  Jdxp_static.resize(12+0);
2068  Jdxp_dynamic.resize(12+0);
2069  }
2070 
2071  // initialize contributions to zero (automatically sets derivatives to zero)
2072  for (int i=0; i < 12+0 ; ++i)
2073  {
2074  staticContributions[i]=0;
2075  dynamicContributions[i]=0;
2076  Jdxp_static[i]=0;
2077  Jdxp_dynamic[i]=0;
2078  }
2079 
2080  for (int i=0; i < 15 ; ++i)
2081  {
2082  probeDiffs[i] = 0.0;
2083  }
2084  // extract solution variables and set as Fad independent variables.
2085 
2086  probeVars[admsProbeID_V_noi_e1] = (*solVectorPtr)[li_noi] - (*solVectorPtr)[li_e1];
2088 
2089  probeVars[admsProbeID_V_c3_c1] = (*solVectorPtr)[li_c3] - (*solVectorPtr)[li_c1];
2091 
2092  probeVars[admsProbeID_V_c3_c4] = (*solVectorPtr)[li_c3] - (*solVectorPtr)[li_c4];
2094 
2095  probeVars[admsProbeID_V_c4_c1] = (*solVectorPtr)[li_c4] - (*solVectorPtr)[li_c1];
2097 
2098  probeVars[admsProbeID_V_b_c] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_c];
2100 
2101  probeVars[admsProbeID_V_b_e] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_e];
2103 
2104  probeVars[admsProbeID_V_b_b1] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_b1];
2106 
2107  probeVars[admsProbeID_V_e_e1] = (*solVectorPtr)[li_e] - (*solVectorPtr)[li_e1];
2109 
2110  probeVars[admsProbeID_V_c1_c2] = (*solVectorPtr)[li_c1] - (*solVectorPtr)[li_c2];
2112 
2113  probeVars[admsProbeID_V_s_c1] = (*solVectorPtr)[li_s] - (*solVectorPtr)[li_c1];
2115 
2116  probeVars[admsProbeID_V_b1_b2] = (*solVectorPtr)[li_b1] - (*solVectorPtr)[li_b2];
2118 
2119  probeVars[admsProbeID_V_b1_e1] = (*solVectorPtr)[li_b1] - (*solVectorPtr)[li_e1];
2121 
2122  probeVars[admsProbeID_V_b2_e1] = (*solVectorPtr)[li_b2] - (*solVectorPtr)[li_e1];
2124 
2125  probeVars[admsProbeID_V_b2_c2] = (*solVectorPtr)[li_b2] - (*solVectorPtr)[li_c2];
2127 
2128  probeVars[admsProbeID_V_b2_c1] = (*solVectorPtr)[li_b2] - (*solVectorPtr)[li_c1];
2130 
2131 
2132  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
2137 
2138  // Copy probes into limiting vars
2139  Vb1b2_orig = Vb1b2_limited = probeVars[admsProbeID_V_b1_b2].val();
2141  Vb1e1_orig = Vb1e1_limited = probeVars[admsProbeID_V_b1_e1].val();
2143  Vb2c2_orig = Vb2c2_limited = probeVars[admsProbeID_V_b2_c2].val();
2145  Vb2c1_orig = Vb2c1_limited = probeVars[admsProbeID_V_b2_c1].val();
2147 
2148  origFlag = true;
2149 
2150  if (getSolverState().newtonIter == 0)
2151  {
2152 
2153  if (!(getSolverState().dcopFlag)||(getSolverState().locaEnabledFlag && getSolverState().dcopFlag))
2154  {
2159  }
2160  else
2161  {
2162  Vb1b2_old = Vb1b2_limited;
2163  Vb1e1_old = Vb1e1_limited;
2164  Vb2c2_old = Vb2c2_limited;
2165  Vb2c1_old = Vb2c1_limited;
2166  }
2167  }
2168  else
2169  {
2174  }
2175 
2176  // -- code converted from analog/code block
2177  {
2178 
2179 
2180  //Vb2c1 = ($limit(V(b2,c1),"trunc_ev","typed",TYPE,(-VER),0.7));
2182  {
2183  int icheck=0;
2184  Vb2c1_limited = AnalogFunctions::trunc_ev(Vb2c1_limited,Vb2c1_old,(-(model_.VER)),0.7);
2185  if (Vb2c1_limited != Vb2c1_orig)
2186  {
2187  icheck=1;
2188  }
2189  if (icheck == 1)
2190  origFlag = false;
2191  if (!origFlag)
2192  {
2193  probeDiffs[admsProbeID_V_b2_c1] = Vb2c1_limited - Vb2c1_orig;
2195  }
2196  }
2197  Vb2c1 = probeVars[admsProbeID_V_b2_c1];
2198 
2199 
2200 
2201  //Vb2c2 = ($limit(V(b2,c2),"trunc_ev","typed",TYPE,(-VER),0.7));
2202  if (getDeviceOptions().voltageLimiterFlag)
2203  {
2204  int icheck=0;
2205  Vb2c2_limited = AnalogFunctions::trunc_ev(Vb2c2_limited,Vb2c2_old,(-(model_.VER)),0.7);
2206  if (Vb2c2_limited != Vb2c2_orig)
2207  {
2208  icheck=1;
2209  }
2210  if (icheck == 1)
2211  origFlag = false;
2212  if (!origFlag)
2213  {
2214  probeDiffs[admsProbeID_V_b2_c2] = Vb2c2_limited - Vb2c2_orig;
2216  }
2217  }
2218  Vb2c2 = probeVars[admsProbeID_V_b2_c2];
2219 
2220  Vb2e1 = ((model_.TYPE)*(probeVars[admsProbeID_V_b2_e1]));
2221 
2222 
2223  //Vb1e1 = ($limit(V(b1,e1),"trunc_ev","typed",TYPE,(-VER),0.7));
2225  {
2226  int icheck=0;
2227  Vb1e1_limited = AnalogFunctions::trunc_ev(Vb1e1_limited,Vb1e1_old,(-(model_.VER)),0.7);
2228  if (Vb1e1_limited != Vb1e1_orig)
2229  {
2230  icheck=1;
2231  }
2232  if (icheck == 1)
2233  origFlag = false;
2234  if (!origFlag)
2235  {
2236  probeDiffs[admsProbeID_V_b1_e1] = Vb1e1_limited - Vb1e1_orig;
2238  }
2239  }
2240  Vb1e1 = probeVars[admsProbeID_V_b1_e1];
2241 
2242 
2243 
2244  //Vb1b2 = ($limit(V(b1,b2),"trunc_ev","typed",TYPE,(-VER),0.7));
2245  if (getDeviceOptions().voltageLimiterFlag)
2246  {
2247  int icheck=0;
2248  Vb1b2_limited = AnalogFunctions::trunc_ev(Vb1b2_limited,Vb1b2_old,(-(model_.VER)),0.7);
2249  if (Vb1b2_limited != Vb1b2_orig)
2250  {
2251  icheck=1;
2252  }
2253  if (icheck == 1)
2254  origFlag = false;
2255  if (!origFlag)
2256  {
2257  probeDiffs[admsProbeID_V_b1_b2] = Vb1b2_limited - Vb1b2_orig;
2259  }
2260  }
2261  Vb1b2 = probeVars[admsProbeID_V_b1_b2];
2262 
2263  Vsc1 = ((model_.TYPE)*(probeVars[admsProbeID_V_s_c1]));
2264  Vc1c2 = ((model_.TYPE)*(probeVars[admsProbeID_V_c1_c2]));
2265  Vee1 = ((model_.TYPE)*(probeVars[admsProbeID_V_e_e1]));
2266  Vbb1 = ((model_.TYPE)*(probeVars[admsProbeID_V_b_b1]));
2267  Vbe = ((model_.TYPE)*(probeVars[admsProbeID_V_b_e]));
2268  Vbc = ((model_.TYPE)*(probeVars[admsProbeID_V_b_c]));
2269  if (((model_.RCBLX)>0.0))
2270  {
2271  if (((model_.RCBLI)>0.0))
2272  {
2273  Vc4c1 = ((model_.TYPE)*(probeVars[admsProbeID_V_c4_c1]));
2274  Vc3c4 = ((model_.TYPE)*(probeVars[admsProbeID_V_c3_c4]));
2275  }
2276  else
2277  {
2278  Vc4c1 = 0;
2279  Vc3c4 = ((model_.TYPE)*(probeVars[admsProbeID_V_c3_c1]));
2280  }
2281  }
2282  else
2283  {
2284  if (((model_.RCBLI)>0.0))
2285  {
2286  Vc4c1 = ((model_.TYPE)*(probeVars[admsProbeID_V_c4_c1]));
2287  Vc3c4 = 0;
2288  }
2289  else
2290  {
2291  Vc4c1 = 0;
2292  Vc3c4 = 0;
2293  }
2294  }
2295  Vb1c4 = (((Vb1b2+Vb2c2)-Vc1c2)-Vc4c1);
2296  Vcc3 = ((((-Vbc)+Vbb1)+Vb1c4)-Vc3c4);
2297  Vbc3 = (Vbc+Vcc3);
2298  Vsc4 = (Vsc1-Vc4c1);
2299  Vsc3 = (Vsc4-Vc3c4);
2300  if (((Vb2c2*(model_.VtINV))<400.0))
2301  {
2302  eVb2c2 = exp((Vb2c2*(model_.VtINV)));
2303  }
2304  else
2305  {
2306  expl = exp(400.0);
2307  eVb2c2 = (expl*(1.0+((Vb2c2*(model_.VtINV))-400.0)));
2308  }
2309  if (((Vb2e1*(model_.VtINV))<400.0))
2310  {
2311  eVb2e1 = exp((Vb2e1*(model_.VtINV)));
2312  }
2313  else
2314  {
2315  expl = exp(400.0);
2316  eVb2e1 = (expl*(1.0+((Vb2e1*(model_.VtINV))-400.0)));
2317  }
2318  if (((Vb1e1*(model_.VtINV))<400.0))
2319  {
2320  eVb1e1 = exp((Vb1e1*(model_.VtINV)));
2321  }
2322  else
2323  {
2324  expl = exp(400.0);
2325  eVb1e1 = (expl*(1.0+((Vb1e1*(model_.VtINV))-400.0)));
2326  }
2327  if (((Vb1c4*(model_.VtINV))<400.0))
2328  {
2329  eVb1c4 = exp((Vb1c4*(model_.VtINV)));
2330  }
2331  else
2332  {
2333  expl = exp(400.0);
2334  eVb1c4 = (expl*(1.0+((Vb1c4*(model_.VtINV))-400.0)));
2335  }
2336  if (((Vb1b2*(model_.VtINV))<400.0))
2337  {
2338  eVb1b2 = exp((Vb1b2*(model_.VtINV)));
2339  }
2340  else
2341  {
2342  expl = exp(400.0);
2343  eVb1b2 = (expl*(1.0+((Vb1b2*(model_.VtINV))-400.0)));
2344  }
2345  if (((Vbc3*(model_.VtINV))<400.0))
2346  {
2347  eVbc3 = exp((Vbc3*(model_.VtINV)));
2348  }
2349  else
2350  {
2351  expl = exp(400.0);
2352  eVbc3 = (expl*(1.0+((Vbc3*(model_.VtINV))-400.0)));
2353  }
2354  if (((Vsc1*(model_.VtINV))<400.0))
2355  {
2356  eVsc1 = exp((Vsc1*(model_.VtINV)));
2357  }
2358  else
2359  {
2360  expl = exp(400.0);
2361  eVsc1 = (expl*(1.0+((Vsc1*(model_.VtINV))-400.0)));
2362  }
2363  if (((Vsc3*(model_.VtINV))<400.0))
2364  {
2365  eVsc3 = exp((Vsc3*(model_.VtINV)));
2366  }
2367  else
2368  {
2369  expl = exp(400.0);
2370  eVsc3 = (expl*(1.0+((Vsc3*(model_.VtINV))-400.0)));
2371  }
2372  if (((Vsc4*(model_.VtINV))<400.0))
2373  {
2374  eVsc4 = exp((Vsc4*(model_.VtINV)));
2375  }
2376  else
2377  {
2378  expl = exp(400.0);
2379  eVsc4 = (expl*(1.0+((Vsc4*(model_.VtINV))-400.0)));
2380  }
2381  if ((((Vbc3-(model_.VDC_T))*(model_.VtINV))<400.0))
2382  {
2383  eVbc3VDC = exp(((Vbc3-(model_.VDC_T))*(model_.VtINV)));
2384  }
2385  else
2386  {
2387  expl = exp(400.0);
2388  eVbc3VDC = (expl*(1.0+(((Vbc3-(model_.VDC_T))*(model_.VtINV))-400.0)));
2389  }
2390  if ((((Vb1c4-(model_.VDC_T))*(model_.VtINV))<400.0))
2391  {
2392  eVb1c4VDC = exp(((Vb1c4-(model_.VDC_T))*(model_.VtINV)));
2393  }
2394  else
2395  {
2396  expl = exp(400.0);
2397  eVb1c4VDC = (expl*(1.0+(((Vb1c4-(model_.VDC_T))*(model_.VtINV))-400.0)));
2398  }
2399  if ((((Vb2c2-(model_.VDC_T))*(model_.VtINV))<400.0))
2400  {
2401  eVb2c2VDC = exp(((Vb2c2-(model_.VDC_T))*(model_.VtINV)));
2402  }
2403  else
2404  {
2405  expl = exp(400.0);
2406  eVb2c2VDC = (expl*(1.0+(((Vb2c2-(model_.VDC_T))*(model_.VtINV))-400.0)));
2407  }
2408  if ((((Vb2c1-(model_.VDC_T))*(model_.VtINV))<400.0))
2409  {
2410  eVb2c1VDC = exp(((Vb2c1-(model_.VDC_T))*(model_.VtINV)));
2411  }
2412  else
2413  {
2414  expl = exp(400.0);
2415  eVb2c1VDC = (expl*(1.0+(((Vb2c1-(model_.VDC_T))*(model_.VtINV))-400.0)));
2416  }
2417  K0 = sqrt((1.0+(4.0*eVb2c2VDC)));
2418  Kw = sqrt((1.0+(4.0*eVb2c1VDC)));
2419  pW = ((2.0*eVb2c1VDC)/(1.0+Kw));
2420  if ((pW<1.0e-40))
2421  {
2422  pW = 0;
2423  }
2424  Ec = ((model_.Vt)*((K0-Kw)-log(((K0+1.0)/(Kw+1.0)))));
2425  Ic1c2 = ((Ec+Vc1c2)/(model_.RCV_TM));
2426  if ((Ic1c2>0.0))
2427  {
2428  if ((Vb2c1<100.0))
2429  {
2430  tmpV = Vb2c1;
2431  }
2432  else
2433  {
2434  tmpV = (100.0+log((1.0+(Vb2c1-100.0))));
2435  }
2436  tmpV = tmpV;
2437  Vqs_th = (((model_.VDC_T)+((2.0*(model_.Vt))*log(((((0.5*Ic1c2)*(model_.RCV_TM))*(model_.VtINV))+1.0))))-tmpV);
2438  eps_VDC = (0.2*(model_.VDC_T));
2439  eps2 = (eps_VDC*eps_VDC);
2440  x2 = (Vqs_th*Vqs_th);
2441  if ((Vqs_th<0.0))
2442  {
2443  Vqs = ((0.5*eps2)/(sqrt((x2+eps2))-Vqs_th));
2444  }
2445  else
2446  {
2447  Vqs = (0.5*(sqrt((x2+eps2))+Vqs_th));
2448  }
2449  Vqs = Vqs;
2450  Iqs = ((Vqs*(Vqs+((model_.IHC_M)*(model_.SCRCV_M))))/((model_.SCRCV_M)*(Vqs+((model_.IHC_M)*(model_.RCV_TM)))));
2451  Ic1c2_Iqs = (Ic1c2/Iqs);
2452  {
2453  //Block-local variables for block
2454  AdmsFadType dxa;
2455  //End of Block-local variables
2456  dxa = ((Ic1c2_Iqs-1.0)/(model_.AXI));
2457  if ((Ic1c2_Iqs<1.0))
2458  {
2459  alpha1 = (1.0+((model_.AXI)*log((1.0+exp(dxa)))));
2460  }
2461  else
2462  {
2463  alpha1 = (Ic1c2_Iqs+((model_.AXI)*log((1.0+exp((-dxa))))));
2464  }
2465  alpha1 = alpha1;
2466  }
2467  alpha = (alpha1/(1.0+((model_.AXI)*log((1.0+exp(((-1.0)/(model_.AXI))))))));
2468  vyi = (Vqs/((model_.IHC_M)*(model_.SCRCV_M)));
2469  yi = ((1.0+sqrt((1.0+(((4.0*alpha)*vyi)*(1.0+vyi)))))/((2.0*alpha)*(1.0+vyi)));
2470  xi_w = (1.0-(yi/(1.0+(pW*yi))));
2471  gp0 = ((((0.5*Ic1c2)*(model_.RCV_TM))*xi_w)*(model_.VtINV));
2472  gp0_help = ((2.0*gp0)+(pW*((pW+gp0)+1.0)));
2473  gp02 = (0.5*(gp0-1.0));
2474  sqr_arg = ((gp02*gp02)+gp0_help);
2475  if ((gp0>=1.0))
2476  {
2477  p0star = (gp02+sqrt(sqr_arg));
2478  }
2479  else
2480  {
2481  p0star = (gp0_help/(sqrt(sqr_arg)-gp02));
2482  }
2483  if ((p0star<1.0e-40))
2484  {
2485  p0star = 0.0;
2486  }
2487  eVb2c2star = ((p0star*(p0star+1.0))*exp(((model_.VDC_T)*(model_.VtINV))));
2488  B1 = ((0.5*(model_.SCRCV_M))*(Ic1c2-(model_.IHC_M)));
2489  B2 = ((((model_.SCRCV_M)*(model_.RCV_TM))*(model_.IHC_M))*Ic1c2);
2490  Vxi0 = (B1+sqrt(((B1*B1)+B2)));
2491  Vch = ((model_.VDC_T)*(0.1+((2.0*Ic1c2)/(Ic1c2+Iqs))));
2492  Icap = (((model_.IHC_M)*Ic1c2)/((model_.IHC_M)+Ic1c2));
2493  Icap_IHC = ((model_.IHC_M)/((model_.IHC_M)+Ic1c2));
2494  }
2495  else
2496  {
2497  Iqs = 0.0;
2498  p0star = ((2.0*eVb2c2VDC)/(1.0+K0));
2499  eVb2c2star = eVb2c2;
2500  if (((fabs(Vc1c2)<(1.0e-5*(model_.Vt)))||(fabs(Ec)<((1.0e-40*(model_.Vt))*(K0+Kw)))))
2501  {
2502  pav = (0.5*(p0star+pW));
2503  xi_w = (pav/(pav+1.0));
2504  }
2505  else
2506  {
2507  xi_w = (Ec/((Ec+Vb2c2)-Vb2c1));
2508  }
2509  Vxi0 = Vc1c2;
2510  Vch = (0.1*(model_.VDC_T));
2511  Icap = Ic1c2;
2512  Icap_IHC = (1.0-(Icap/(model_.IHC_M)));
2513  }
2514  Vfe = ((model_.VDE_T)*(1.0-pow(3.0,((-1.0)/(model_.PE)))));
2515  a_VDE = (0.1*(model_.VDE_T));
2516  {
2517  //Block-local variables for block
2518  AdmsFadType dxa;
2519  //End of Block-local variables
2520  dxa = ((Vb2e1-Vfe)/a_VDE);
2521  if ((Vb2e1<Vfe))
2522  {
2523  Vje = (Vb2e1-(a_VDE*log((1.0+exp(dxa)))));
2524  }
2525  else
2526  {
2527  Vje = (Vfe-(a_VDE*log((1.0+exp((-dxa))))));
2528  }
2529  Vje = Vje;
2530  }
2531  E0BE = pow((1.0-(Vje*(model_.inv_VDE_T))),(1.0-(model_.PE)));
2532  Vte = ((((model_.VDE_T)/(1.0-(model_.PE)))*(1.0-E0BE))+(3.0*(Vb2e1-Vje)));
2533  Vjunc = (Vb2c1+Vxi0);
2534  bjc = ((2.0-(model_.XP_T))/(1.0-(model_.XP_T)));
2535  Vfc = ((model_.VDC_T)*(1.0-pow(bjc,((-1.0)/(model_.PC)))));
2536  {
2537  //Block-local variables for block
2538  AdmsFadType dxa;
2539  //End of Block-local variables
2540  dxa = ((Vjunc-Vfc)/Vch);
2541  if ((Vjunc<Vfc))
2542  {
2543  Vjc = (Vjunc-(Vch*log((1.0+exp(dxa)))));
2544  }
2545  else
2546  {
2547  Vjc = (Vfc-(Vch*log((1.0+exp((-dxa))))));
2548  }
2549  Vjc = Vjc;
2550  }
2551  fI = pow(Icap_IHC,(model_.MC));
2552  Vcv = ((((model_.VDC_T)/(1.0-(model_.PC)))*(1.0-(fI*pow((1.0-(Vjc/(model_.VDC_T))),(1.0-(model_.PC))))))+((fI*bjc)*(Vjunc-Vjc)));
2553  Vtc = (((1.0-(model_.XP_T))*Vcv)+((model_.XP_T)*Vb2c1));
2554  If0 = ((4.0*(model_.IS_TM))/(model_.IK_TM));
2555  f1 = (If0*eVb2e1);
2556  n0 = (f1/(1.0+sqrt((1.0+f1))));
2557  f2 = (If0*eVb2c2star);
2558  nB = (f2/(1.0+sqrt((1.0+f2))));
2559  if (((model_.DEG)==0.0))
2560  {
2561  q0I = ((1.0+(Vte/(model_.VER_T)))+(Vtc/(model_.VEF_T)));
2562  }
2563  else
2564  {
2565  termE = ((((Vte/(model_.VER_T))+1.0)*(model_.DEG_T))*(model_.VtINV));
2566  termC = ((((-Vtc)/(model_.VEF_T))*(model_.DEG_T))*(model_.VtINV));
2567  q0I = ((exp(termE)-exp(termC))/(exp(((model_.DEG_T)*(model_.VtINV)))-1.0));
2568  }
2569  eps2 = (0.1*0.1);
2570  x2 = (q0I*q0I);
2571  if ((q0I<0.0))
2572  {
2573  q1I = ((0.5*eps2)/(sqrt((x2+eps2))-q0I));
2574  }
2575  else
2576  {
2577  q1I = (0.5*(sqrt((x2+eps2))+q0I));
2578  }
2579  q1I = q1I;
2580  qBI = (q1I*(1.0+(0.5*(n0+nB))));
2581  Ir = ((model_.IS_TM)*eVb2c2star);
2582  If = ((model_.IS_TM)*eVb2e1);
2583  In = ((If-Ir)/qBI);
2584  Ibf0 = ((model_.IS_TM)/(model_.BF_T));
2585  if (((model_.XREC)==0.0))
2586  {
2587  Ib1 = (((1.0-(model_.XIBI))*Ibf0)*(eVb2e1-1.0));
2588  }
2589  else
2590  {
2591  Ib1 = (((1.0-(model_.XIBI))*Ibf0)*(((1.0-(model_.XREC))*(eVb2e1-1.0))+(((model_.XREC)*((eVb2e1+eVb2c2star)-2.0))*(1.0+(Vtc/(model_.VEF_T))))));
2592  }
2593  Ib1_s = (((model_.XIBI)*Ibf0)*(eVb1e1-1.0));
2594  if ((((Vb2e1*(model_.VtINV))/(model_.MLF))<400.0))
2595  {
2596  tmpExp = exp(((Vb2e1*(model_.VtINV))/(model_.MLF)));
2597  }
2598  else
2599  {
2600  expl = exp(400.0);
2601  tmpExp = (expl*(1.0+(((Vb2e1*(model_.VtINV))/(model_.MLF))-400.0)));
2602  }
2603  Ib2 = (((model_.IBF_TM)*(tmpExp-1.0))+((model_.GMIN)*Vb2e1));
2604  if ((((0.5*Vb1c4)*(model_.VtINV))<400.0))
2605  {
2606  tmpExp = exp(((0.5*Vb1c4)*(model_.VtINV)));
2607  }
2608  else
2609  {
2610  expl = exp(400.0);
2611  tmpExp = (expl*(1.0+(((0.5*Vb1c4)*(model_.VtINV))-400.0)));
2612  }
2613  Ib3 = ((((model_.IBR_TM)*(eVb1c4-1.0))/(tmpExp+exp(((0.5*(model_.VLR))*(model_.VtINV)))))+((model_.GMIN)*Vb1c4));
2614  if (((((model_.IZEB)>0.0)&&((model_.NZEB)>0.0))&&(Vb2e1<0)))
2615  {
2616  if ((((model_.nZEB_T)*(1-((model_.pow2_2mPE)/(2.0*E0BE))))<400.0))
2617  {
2618  eZEB = exp(((model_.nZEB_T)*(1-((model_.pow2_2mPE)/(2.0*E0BE)))));
2619  }
2620  else
2621  {
2622  expl = exp(400.0);
2623  eZEB = (expl*(1.0+(((model_.nZEB_T)*(1-((model_.pow2_2mPE)/(2.0*E0BE))))-400.0)));
2624  }
2625  x = (Vb2e1*(model_.inv_VDE_T));
2626  dE0BE = ((pow((-x),((-2.0)-(model_.PE)))*(((model_.PE)*((1-((model_.PE)*(model_.PE)))-((3*x)*((model_.PE)-1))))-(((6*x)*x)*(((model_.PE)-1)+x))))*0.16666666666666666667);
2627  if (((((Vb2e1*(model_.pow2_2mPE))*(model_.nZEB_T))/((model_.VGZEB_T)*dE0BE))<400.0))
2628  {
2629  edZEB = exp((((Vb2e1*(model_.pow2_2mPE))*(model_.nZEB_T))/((model_.VGZEB_T)*dE0BE)));
2630  }
2631  else
2632  {
2633  expl = exp(400.0);
2634  edZEB = (expl*(1.0+((((Vb2e1*(model_.pow2_2mPE))*(model_.nZEB_T))/((model_.VGZEB_T)*dE0BE))-400.0)));
2635  }
2636  DZEB = ((-Vb2e1)-((((model_.VGZEB_T)*dE0BE)*(1-edZEB))/((model_.pow2_2mPE)*(model_.nZEB_T))));
2637  Izteb = ((((((2.0*(model_.IZEB_TM))*DZEB)*E0BE)*eZEB)*(model_.inv_VDE_T))*(model_.pow2_PEm2));
2638  }
2639  else
2640  {
2641  DZEB = 0;
2642  Izteb = 0;
2643  }
2644  g1 = (If0*eVb1c4);
2645  g2 = (4.0*eVb1c4VDC);
2646  nBex = ((g1-If0)/(1.0+sqrt((1.0+g1))));
2647  pWex = (g2/(1.0+sqrt((1.0+g2))));
2648  Iex = (((model_.IK_TM)*nBex)/(2.0*(model_.BRI_T)));
2649  if (((model_.EXSUB)==1.0))
2650  {
2651  Isub = (((2.0*(model_.ISS_TM))*(eVb1c4-eVsc4))/(1.0+sqrt((1.0+((4.0*((model_.IS_TM)/(model_.IKS_TM)))*eVb1c4)))));
2652  }
2653  else
2654  {
2655  Isub = (((2.0*(model_.ISS_TM))*(eVb1c4-1.0))/(1.0+sqrt((1.0+((4.0*((model_.IS_TM)/(model_.IKS_TM)))*eVb1c4)))));
2656  }
2657  if (((model_.ICSS)<0.0))
2658  {
2659  Isf = ((model_.ISS_TM)*(eVsc1-1.0));
2660  }
2661  else
2662  {
2663  Isf = ((model_.ICSS_TM)*(eVsc1-1.0));
2664  }
2665  XIex = 0.0;
2666  XIsub = 0.0;
2667  if ((((model_.EXMOD)==1)||((model_.EXMOD)==2)))
2668  {
2669  Iex = (Iex*(model_.Xext1));
2670  Isub = (Isub*(model_.Xext1));
2671  Xg1 = (If0*eVbc3);
2672  XnBex = ((Xg1-If0)/(1.0+sqrt((1.0+Xg1))));
2673  XIMex = (((((model_.XEXT)*0.5)*(model_.IK_TM))*XnBex)/(model_.BRI_T));
2674  if (((model_.EXSUB)==1.0))
2675  {
2676  XIMsub = (((((model_.XEXT)*2.0)*(model_.ISS_TM))*(eVbc3-eVsc3))/(1.0+sqrt((1.0+(((4.0*(model_.IS_T))/(model_.IKS_T))*eVbc3)))));
2677  }
2678  else
2679  {
2680  XIMsub = (((((model_.XEXT)*2.0)*(model_.ISS_TM))*(eVbc3-1.0))/(1.0+sqrt((1.0+(((4.0*(model_.IS_T))/(model_.IKS_T))*eVbc3)))));
2681  }
2682  if (((model_.EXMOD)==1))
2683  {
2684  Vex_bias = (((model_.XEXT)*(((model_.IS_TM)/(model_.BRI_T))+(model_.ISS_TM)))*(model_.RCCxx_TM));
2685  Vex = ((model_.Vt)*(2.0-log((Vex_bias*(model_.VtINV)))));
2686  vdif = (Vbc3-Vex);
2687  eps2 = (0.11*0.11);
2688  x2 = (vdif*vdif);
2689  if ((vdif<0.0))
2690  {
2691  VBex = ((0.5*eps2)/(sqrt((x2+eps2))-vdif));
2692  }
2693  else
2694  {
2695  VBex = (0.5*(sqrt((x2+eps2))+vdif));
2696  }
2697  VBex = VBex;
2698  Fex = (VBex/((Vex_bias+((XIMex+XIMsub)*(model_.RCCxx_TM)))+VBex));
2699  }
2700  else
2701  {
2702  Vex = 0.0;
2703  vdif = 0.0;
2704  VBex = 0.0;
2705  Fex = 1.0;
2706  }
2707  XIex = (Fex*XIMex);
2708  XIsub = (Fex*XIMsub);
2709  }
2710  else
2711  {
2712  Fex = 0;
2713  XnBex = 0;
2714  }
2715  q0Q = ((1.0+(Vte/(model_.VER_T)))+(Vtc/(model_.VEF_T)));
2716  eps2 = (0.1*0.1);
2717  x2 = (q0Q*q0Q);
2718  if ((q0Q<0.0))
2719  {
2720  q1Q = ((0.5*eps2)/(sqrt((x2+eps2))-q0Q));
2721  }
2722  else
2723  {
2724  q1Q = (0.5*(sqrt((x2+eps2))+q0Q));
2725  }
2726  q1Q = q1Q;
2727  qBQ = (q1Q*(1.0+(0.5*(n0+nB))));
2728  Rb2 = ((3.0*(model_.RBV_TM))/qBQ);
2729  Ib1b2 = ((((2.0*(model_.Vt))*(eVb1b2-1.0))+Vb1b2)/Rb2);
2730  Iavl = 0.0;
2731  Gem = 0.0;
2732  if (((Ic1c2>0.0)&&(Vb2c1<(model_.VDC_T))))
2733  {
2734  dEdx0 = ((2.0*(model_.VAVL))/((model_.WAVL)*(model_.WAVL)));
2735  sqr_arg = (((model_.VDC_T)-Vb2c1)/Icap_IHC);
2736  xd = sqrt(((2.0*sqr_arg)/dEdx0));
2737  if (((model_.EXAVL)==0.0))
2738  {
2739  Weff = (model_.WAVL);
2740  }
2741  else
2742  {
2743  xi_w1 = (1.0-(0.5*xi_w));
2744  Weff = (((model_.WAVL)*xi_w1)*xi_w1);
2745  }
2746  Wd = ((xd*Weff)/sqrt(((xd*xd)+(Weff*Weff))));
2747  Eav = (((model_.VDC_T)-Vb2c1)/Wd);
2748  E0 = (Eav+(((0.5*Wd)*dEdx0)*Icap_IHC));
2749  if (((model_.EXAVL)==0))
2750  {
2751  Em = E0;
2752  }
2753  else
2754  {
2755  SHw = (1.0+((2.0*(model_.SFH))*(1.0+(2.0*xi_w))));
2756  Efi = ((1.0+(model_.SFH))/(1.0+(2.0*(model_.SFH))));
2757  Ew = (Eav-(((0.5*Wd)*dEdx0)*(Efi-(Ic1c2/((model_.IHC_M)*SHw)))));
2758  sqr_arg = (((Ew-E0)*(Ew-E0))+((((0.1*Eav)*Eav)*Icap)/(model_.IHC_M)));
2759  Em = (0.5*((Ew+E0)+sqrt(sqr_arg)));
2760  }
2761  EmEav_Em = ((Em-Eav)/Em);
2762  if ((fabs(EmEav_Em)>1.0e-7))
2763  {
2764  lambda = ((0.5*Wd)/EmEav_Em);
2765  Gem = (((((model_.An)/(model_.BnT))*Em)*lambda)*(exp(((-(model_.BnT))/Em))-exp((((-(model_.BnT))/Em)*(1.0+(Weff/lambda))))));
2766  }
2767  else
2768  {
2769  Gem = (((model_.An)*Weff)*exp(((-(model_.BnT))/Em)));
2770  }
2771  Gmax = ((((model_.Vt)/(Ic1c2*((model_.RBC_TM)+Rb2)))+(qBI/(model_.BF_T)))+((model_.RE_TM)/((model_.RBC_TM)+Rb2)));
2772  Iavl = ((Ic1c2*Gem)/((Gem+(Gem/Gmax))+1.0));
2773  }
2774  if ((eVb2c2star>0.0))
2775  {
2776  Vb2c2star = ((model_.Vt)*log(eVb2c2star));
2777  }
2778  else
2779  {
2780  Vb2c2star = Vb2c2;
2781  }
2782  Qte = (((1.0-(model_.XCJE))*(model_.CJE_TM))*Vte);
2783  {
2784  //Block-local variables for block
2785  AdmsFadType dxa;
2786  //End of Block-local variables
2787  dxa = ((Vb1e1-Vfe)/a_VDE);
2788  if ((Vb1e1<Vfe))
2789  {
2790  Vje_s = (Vb1e1-(a_VDE*log((1.0+exp(dxa)))));
2791  }
2792  else
2793  {
2794  Vje_s = (Vfe-(a_VDE*log((1.0+exp((-dxa))))));
2795  }
2796  Vje_s = Vje_s;
2797  }
2798  Qte_s = (((model_.XCJE)*(model_.CJE_TM))*((((model_.VDE_T)/(1.0-(model_.PE)))*(1.0-pow((1.0-(Vje_s*(model_.inv_VDE_T))),(1.0-(model_.PE)))))+(3.0*(Vb1e1-Vje_s))));
2799  Qtc = (((model_.XCJC)*(model_.CJC_TM))*Vtc);
2800  Qb0 = ((model_.TAUB_T)*(model_.IK_TM));
2801  Qbe_qs = (((0.5*Qb0)*n0)*q1Q);
2802  Qbc_qs = (((0.5*Qb0)*nB)*q1Q);
2803  a_VDC = (0.1*(model_.VDC_T));
2804  {
2805  //Block-local variables for block
2806  AdmsFadType dxa;
2807  //End of Block-local variables
2808  dxa = ((Vb1c4-Vfc)/a_VDC);
2809  if ((Vb1c4<Vfc))
2810  {
2811  Vjcex = (Vb1c4-(a_VDC*log((1.0+exp(dxa)))));
2812  }
2813  else
2814  {
2815  Vjcex = (Vfc-(a_VDC*log((1.0+exp((-dxa))))));
2816  }
2817  Vjcex = Vjcex;
2818  }
2819  Vtexv = ((((model_.VDC_T)/(1.0-(model_.PC)))*(1.0-pow((1.0-(Vjcex/(model_.VDC_T))),(1.0-(model_.PC)))))+(bjc*(Vb1c4-Vjcex)));
2820  Qtex = ((((model_.CJC_TM)*(((1.0-(model_.XP_T))*Vtexv)+((model_.XP_T)*Vb1c4)))*(1.0-(model_.XCJC)))*(1.0-(model_.XEXT)));
2821  {
2822  //Block-local variables for block
2823  AdmsFadType dxa;
2824  //End of Block-local variables
2825  dxa = ((Vbc3-Vfc)/a_VDC);
2826  if ((Vbc3<Vfc))
2827  {
2828  XVjcex = (Vbc3-(a_VDC*log((1.0+exp(dxa)))));
2829  }
2830  else
2831  {
2832  XVjcex = (Vfc-(a_VDC*log((1.0+exp((-dxa))))));
2833  }
2834  XVjcex = XVjcex;
2835  }
2836  XVtexv = ((((model_.VDC_T)/(1.0-(model_.PC)))*(1.0-pow((1.0-(XVjcex/(model_.VDC_T))),(1.0-(model_.PC)))))+(bjc*(Vbc3-XVjcex)));
2837  XQtex = ((((model_.CJC_TM)*(((1.0-(model_.XP_T))*XVtexv)+((model_.XP_T)*Vbc3)))*(1.0-(model_.XCJC)))*(model_.XEXT));
2838  a_VDS = (0.1*(model_.VDS_T));
2839  Vfs = ((model_.VDS_T)*(1.0-pow(2.0,((-1.0)/(model_.PS)))));
2840  {
2841  //Block-local variables for block
2842  AdmsFadType dxa;
2843  //End of Block-local variables
2844  dxa = ((Vsc1-Vfs)/a_VDS);
2845  if ((Vsc1<Vfs))
2846  {
2847  Vjs = (Vsc1-(a_VDS*log((1.0+exp(dxa)))));
2848  }
2849  else
2850  {
2851  Vjs = (Vfs-(a_VDS*log((1.0+exp((-dxa))))));
2852  }
2853  Vjs = Vjs;
2854  }
2855  Qts = ((model_.CJS_TM)*((((model_.VDS_T)/(1.0-(model_.PS)))*(1.0-pow((1.0-(Vjs/(model_.VDS_T))),(1.0-(model_.PS)))))+(2.0*(Vsc1-Vjs))));
2856  Qe0 = (((model_.TAUE_T)*(model_.IK_TM))*pow(((model_.IS_TM)/(model_.IK_TM)),(1.0/(model_.MTAU))));
2857  if (((Vb2e1/((model_.MTAU)*(model_.Vt)))<400.0))
2858  {
2859  tmpExp = exp((Vb2e1/((model_.MTAU)*(model_.Vt))));
2860  }
2861  else
2862  {
2863  expl = exp(400.0);
2864  tmpExp = (expl*(1.0+((Vb2e1/((model_.MTAU)*(model_.Vt)))-400.0)));
2865  }
2866  Qe = (Qe0*(tmpExp-1.0));
2867  Qepi0 = (((4.0*(model_.TEPI_T))*(model_.Vt))/(model_.RCV_TM));
2868  Qepi = (((0.5*Qepi0)*xi_w)*((p0star+pW)+2.0));
2869  Qex = ((((model_.TAUR_T)*0.5)*((Qb0*nBex)+(Qepi0*pWex)))/((model_.TAUB_T)+(model_.TEPI_T)));
2870  XQex = 0.0;
2871  if (((model_.EXMOD)==1))
2872  {
2873  Qex = (Qex*(1.0-(model_.XEXT)));
2874  Xg2 = (4.0*eVbc3VDC);
2875  XpWex = (Xg2/(1.0+sqrt((1.0+Xg2))));
2876  XQex = (((((0.5*Fex)*(model_.XEXT))*(model_.TAUR_T))*((Qb0*XnBex)+(Qepi0*XpWex)))/((model_.TAUB_T)+(model_.TEPI_T)));
2877  }
2878  Qb1b2 = 0.0;
2879  if (((model_.EXPHI)==1))
2880  {
2881  dVteVje = (pow((1.0-(Vje*(model_.inv_VDE_T))),(-(model_.PE)))-3.0);
2882  Vb2e1Vfe = ((Vb2e1-Vfe)/a_VDE);
2883  if ((Vb2e1Vfe<0.0))
2884  {
2885  dVjeVb2e1 = (1.0/(1.0+exp(Vb2e1Vfe)));
2886  }
2887  else
2888  {
2889  dVjeVb2e1 = (exp((-Vb2e1Vfe))/(1.0+exp((-Vb2e1Vfe))));
2890  }
2891  dVteVb2e1 = ((dVteVje*dVjeVb2e1)+3.0);
2892  dQteVb2e1 = (((1.0-(model_.XCJE))*(model_.CJE_TM))*dVteVb2e1);
2893  dn0Vb2e1 = (((If0*eVb2e1)*(model_.VtINV))*(0.5/sqrt((1.0+f1))));
2894  dQbeVb2e1 = (((0.5*Qb0)*q1Q)*dn0Vb2e1);
2895  dQeVb2e1 = ((Qe+Qe0)/((model_.MTAU)*(model_.Vt)));
2896  Qb1b2 = ((0.2*Vb1b2)*((dQteVb2e1+dQbeVb2e1)+dQeVb2e1));
2897  Qbc = ((Qbe_qs*0.33333333333333333333)+Qbc_qs);
2898  Qbe = ((2.0*Qbe_qs)*0.33333333333333333333);
2899  }
2900  else
2901  {
2902  Qbe = Qbe_qs;
2903  Qbc = Qbc_qs;
2904  }
2905  // I(c1,c2) <+ ((TYPE*Ic1c2))
2906  {
2907  AdmsFadType contribTemp;
2908  contribTemp= ((model_.TYPE)*Ic1c2);
2909  staticContributions[admsNodeID_c1] += contribTemp;
2910  staticContributions[admsNodeID_c2] -= contribTemp;
2911 
2914  }
2915  // I(c2,e1) <+ ((TYPE*In))
2916  {
2917  AdmsFadType contribTemp;
2918  contribTemp= ((model_.TYPE)*In);
2919  staticContributions[admsNodeID_c2] += contribTemp;
2920  staticContributions[admsNodeID_e1] -= contribTemp;
2921 
2924  }
2925  // I(b1,e1) <+ ((TYPE*Ib1_s))
2926  {
2927  AdmsFadType contribTemp;
2928  contribTemp= ((model_.TYPE)*Ib1_s);
2929  staticContributions[admsNodeID_b1] += contribTemp;
2930  staticContributions[admsNodeID_e1] -= contribTemp;
2931 
2934  }
2935  // I(b2,e1) <+ ((TYPE*((Ib1+Ib2)-Izteb)))
2936  {
2937  AdmsFadType contribTemp;
2938  contribTemp= ((model_.TYPE)*((Ib1+Ib2)-Izteb));
2939  staticContributions[admsNodeID_b2] += contribTemp;
2940  staticContributions[admsNodeID_e1] -= contribTemp;
2941 
2944  }
2945  // I(b1,s) <+ ((TYPE*Isub))
2946  {
2947  AdmsFadType contribTemp;
2948  contribTemp= ((model_.TYPE)*Isub);
2949  staticContributions[admsNodeID_b1] += contribTemp;
2950  staticContributions[admsNodeID_s] -= contribTemp;
2951 
2954  }
2955  // I(b,s) <+ ((TYPE*XIsub))
2956  {
2957  AdmsFadType contribTemp;
2958  contribTemp= ((model_.TYPE)*XIsub);
2959  staticContributions[admsNodeID_b] += contribTemp;
2960  staticContributions[admsNodeID_s] -= contribTemp;
2961 
2964  }
2965  // I(s,c1) <+ ((TYPE*Isf))
2968  // I(b1,b2) <+ ((TYPE*Ib1b2))
2969  {
2970  AdmsFadType contribTemp;
2971  contribTemp= ((model_.TYPE)*Ib1b2);
2972  staticContributions[admsNodeID_b1] += contribTemp;
2973  staticContributions[admsNodeID_b2] -= contribTemp;
2974 
2977  }
2978  // I(b2,c2) <+ ((TYPE*((-1.0)*Iavl)))
2979  {
2980  AdmsFadType contribTemp;
2981  contribTemp= ((model_.TYPE)*((-1.0)*Iavl));
2982  staticContributions[admsNodeID_b2] += contribTemp;
2983  staticContributions[admsNodeID_c2] -= contribTemp;
2984 
2987  }
2988  // I(e,e1) <+ (((TYPE*Vee1)/RE_TM))
2991  // I(b,b1) <+ (((TYPE*Vbb1)/RBC_TM))
2994  // I(noi,e1) <+ (V(noi,e1))
2997  cor_exp_1 = (sqrt((1.0+(2.0*Gem)))*(probeVars[admsProbeID_V_noi_e1]));
2998  // I(b2,e1) <+ (cor_exp_1)
2999  {
3000  AdmsFadType contribTemp;
3001  contribTemp= cor_exp_1;
3002  staticContributions[admsNodeID_b2] += contribTemp;
3003  staticContributions[admsNodeID_e1] -= contribTemp;
3004 
3007  }
3008  cor_exp_2 = (((2.0+(2.0*Gem))/sqrt((1.0+(2.0*Gem))))*(probeVars[admsProbeID_V_noi_e1]));
3009  // I(e1,c2) <+ (cor_exp_2)
3010  {
3011  AdmsFadType contribTemp;
3012  contribTemp= cor_exp_2;
3013  staticContributions[admsNodeID_e1] += contribTemp;
3014  staticContributions[admsNodeID_c2] -= contribTemp;
3015 
3018  }
3019  // I(b2,e1) <+ (ddt((TYPE*((Qte+Qbe)+Qe))))
3020  {
3021  AdmsFadType contribTemp;
3022  contribTemp= (((model_.TYPE)*((Qte+Qbe)+Qe)));
3023  dynamicContributions[admsNodeID_b2] += contribTemp;
3024  dynamicContributions[admsNodeID_e1] -= contribTemp;
3025 
3028  }
3029  // I(b1,e1) <+ (ddt((TYPE*Qte_s)))
3030  {
3031  AdmsFadType contribTemp;
3032  contribTemp= (((model_.TYPE)*Qte_s));
3033  dynamicContributions[admsNodeID_b1] += contribTemp;
3034  dynamicContributions[admsNodeID_e1] -= contribTemp;
3035 
3038  }
3039  // I(b2,c2) <+ (ddt((TYPE*((Qtc+Qbc)+Qepi))))
3040  {
3041  AdmsFadType contribTemp;
3042  contribTemp= (((model_.TYPE)*((Qtc+Qbc)+Qepi)));
3043  dynamicContributions[admsNodeID_b2] += contribTemp;
3044  dynamicContributions[admsNodeID_c2] -= contribTemp;
3045 
3048  }
3049  // I(s,c1) <+ (ddt((TYPE*Qts)))
3052  // I(b1,b2) <+ (ddt((TYPE*Qb1b2)))
3053  {
3054  AdmsFadType contribTemp;
3055  contribTemp= (((model_.TYPE)*Qb1b2));
3056  dynamicContributions[admsNodeID_b1] += contribTemp;
3057  dynamicContributions[admsNodeID_b2] -= contribTemp;
3058 
3061  }
3062  // I(b,e) <+ (ddt(((TYPE*CBEO_M)*Vbe)))
3065  // I(b,c) <+ (ddt(((TYPE*CBCO_M)*Vbc)))
3068  }
3069  if (((model_.RCBLX)>0.0))
3070  {
3071  // I(b,c3) <+ ((TYPE*XIex))
3072  {
3073  AdmsFadType contribTemp;
3074  contribTemp= ((model_.TYPE)*XIex);
3075  staticContributions[admsNodeID_b] += contribTemp;
3076  staticContributions[admsNodeID_c3] -= contribTemp;
3077 
3080  }
3081  // I(c,c3) <+ (((TYPE*Vcc3)*GCCxx_TM))
3082  {
3083  AdmsFadType contribTemp;
3084  contribTemp= (((model_.TYPE)*Vcc3)*(model_.GCCxx_TM));
3085  staticContributions[admsNodeID_c] += contribTemp;
3086  staticContributions[admsNodeID_c3] -= contribTemp;
3087 
3090  }
3091  // I(b,c3) <+ (ddt((TYPE*(XQtex+XQex))))
3092  {
3093  AdmsFadType contribTemp;
3094  contribTemp= (((model_.TYPE)*(XQtex+XQex)));
3095  dynamicContributions[admsNodeID_b] += contribTemp;
3096  dynamicContributions[admsNodeID_c3] -= contribTemp;
3097 
3100  }
3101  if (((model_.RCBLI)>0.0))
3102  {
3103  // I(c4,c1) <+ (((TYPE*Vc4c1)*GCCin_TM))
3106  // I(b1,c4) <+ ((TYPE*(Ib3+Iex)))
3107  {
3108  AdmsFadType contribTemp;
3109  contribTemp= ((model_.TYPE)*(Ib3+Iex));
3110  staticContributions[admsNodeID_b1] += contribTemp;
3111  staticContributions[admsNodeID_c4] -= contribTemp;
3112 
3115  }
3116  // I(c3,c4) <+ (((TYPE*Vc3c4)*GCCex_TM))
3119  // I(b1,c4) <+ (ddt((TYPE*(Qtex+Qex))))
3120  {
3121  AdmsFadType contribTemp;
3122  contribTemp= (((model_.TYPE)*(Qtex+Qex)));
3123  dynamicContributions[admsNodeID_b1] += contribTemp;
3124  dynamicContributions[admsNodeID_c4] -= contribTemp;
3125 
3128  }
3129  }
3130  else
3131  {
3132  // V(c4,c1) <+ (0.0)
3133  // do nothing at all
3134  // I(b1,c1) <+ ((TYPE*(Ib3+Iex)))
3135  {
3136  AdmsFadType contribTemp;
3137  contribTemp= ((model_.TYPE)*(Ib3+Iex));
3138  staticContributions[admsNodeID_b1] += contribTemp;
3139  staticContributions[admsNodeID_c1] -= contribTemp;
3140 
3143  }
3144  // I(b1,c1) <+ (ddt((TYPE*(Qtex+Qex))))
3145  {
3146  AdmsFadType contribTemp;
3147  contribTemp= (((model_.TYPE)*(Qtex+Qex)));
3148  dynamicContributions[admsNodeID_b1] += contribTemp;
3149  dynamicContributions[admsNodeID_c1] -= contribTemp;
3150 
3153  }
3154  // I(c3,c1) <+ (((TYPE*Vc3c4)*GCCex_TM))
3157  }
3158  }
3159  else
3160  {
3161  // V(c3,c4) <+ (0)
3162  // do nothing at all
3163  if (((model_.RCBLI)>0.0))
3164  {
3165  // I(b,c4) <+ ((TYPE*XIex))
3166  {
3167  AdmsFadType contribTemp;
3168  contribTemp= ((model_.TYPE)*XIex);
3169  staticContributions[admsNodeID_b] += contribTemp;
3170  staticContributions[admsNodeID_c4] -= contribTemp;
3171 
3174  }
3175  // I(c,c4) <+ (((TYPE*Vcc3)*GCCxx_TM))
3176  {
3177  AdmsFadType contribTemp;
3178  contribTemp= (((model_.TYPE)*Vcc3)*(model_.GCCxx_TM));
3179  staticContributions[admsNodeID_c] += contribTemp;
3180  staticContributions[admsNodeID_c4] -= contribTemp;
3181 
3184  }
3185  // I(c4,c1) <+ (((TYPE*Vc4c1)*GCCin_TM))
3188  // I(b1,c4) <+ ((TYPE*(Ib3+Iex)))
3189  {
3190  AdmsFadType contribTemp;
3191  contribTemp= ((model_.TYPE)*(Ib3+Iex));
3192  staticContributions[admsNodeID_b1] += contribTemp;
3193  staticContributions[admsNodeID_c4] -= contribTemp;
3194 
3197  }
3198  // I(b1,c4) <+ (ddt((TYPE*(Qtex+Qex))))
3199  {
3200  AdmsFadType contribTemp;
3201  contribTemp= (((model_.TYPE)*(Qtex+Qex)));
3202  dynamicContributions[admsNodeID_b1] += contribTemp;
3203  dynamicContributions[admsNodeID_c4] -= contribTemp;
3204 
3207  }
3208  // I(b,c4) <+ (ddt((TYPE*(XQtex+XQex))))
3209  {
3210  AdmsFadType contribTemp;
3211  contribTemp= (((model_.TYPE)*(XQtex+XQex)));
3212  dynamicContributions[admsNodeID_b] += contribTemp;
3213  dynamicContributions[admsNodeID_c4] -= contribTemp;
3214 
3217  }
3218  }
3219  else
3220  {
3221  // I(b,c1) <+ ((TYPE*XIex))
3222  {
3223  AdmsFadType contribTemp;
3224  contribTemp= ((model_.TYPE)*XIex);
3225  staticContributions[admsNodeID_b] += contribTemp;
3226  staticContributions[admsNodeID_c1] -= contribTemp;
3227 
3230  }
3231  // I(c,c1) <+ (((TYPE*Vcc3)*GCCxx_TM))
3232  {
3233  AdmsFadType contribTemp;
3234  contribTemp= (((model_.TYPE)*Vcc3)*(model_.GCCxx_TM));
3235  staticContributions[admsNodeID_c] += contribTemp;
3236  staticContributions[admsNodeID_c1] -= contribTemp;
3237 
3240  }
3241  // V(c4,c1) <+ (0.0)
3242  // do nothing at all
3243  // I(b1,c1) <+ ((TYPE*(Ib3+Iex)))
3244  {
3245  AdmsFadType contribTemp;
3246  contribTemp= ((model_.TYPE)*(Ib3+Iex));
3247  staticContributions[admsNodeID_b1] += contribTemp;
3248  staticContributions[admsNodeID_c1] -= contribTemp;
3249 
3252  }
3253  // I(b1,c1) <+ (ddt((TYPE*(Qtex+Qex))))
3254  {
3255  AdmsFadType contribTemp;
3256  contribTemp= (((model_.TYPE)*(Qtex+Qex)));
3257  dynamicContributions[admsNodeID_b1] += contribTemp;
3258  dynamicContributions[admsNodeID_c1] -= contribTemp;
3259 
3262  }
3263  // I(b,c1) <+ (ddt((TYPE*(XQtex+XQex))))
3264  {
3265  AdmsFadType contribTemp;
3266  contribTemp= (((model_.TYPE)*(XQtex+XQex)));
3267  dynamicContributions[admsNodeID_b] += contribTemp;
3268  dynamicContributions[admsNodeID_c1] -= contribTemp;
3269 
3272  }
3273  // I(c3,c1) <+ (((TYPE*Vc3c4)*GCCex_TM))
3276  }
3277  }
3278  {
3279  }
3280 
3281 
3282  // -- endcode converted from analog/code block
3283  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3284  {
3285  Xyce::dout() << " probeVars[admsProbeID_V_noi_e1] = "
3286  <<probeVars[admsProbeID_V_noi_e1].val() << std::endl;
3287  Xyce::dout() << " probeVars[admsProbeID_V_c3_c1] = "
3288  <<probeVars[admsProbeID_V_c3_c1].val() << std::endl;
3289  Xyce::dout() << " probeVars[admsProbeID_V_c3_c4] = "
3290  <<probeVars[admsProbeID_V_c3_c4].val() << std::endl;
3291  Xyce::dout() << " probeVars[admsProbeID_V_c4_c1] = "
3292  <<probeVars[admsProbeID_V_c4_c1].val() << std::endl;
3293  Xyce::dout() << " probeVars[admsProbeID_V_b_c] = "
3294  <<probeVars[admsProbeID_V_b_c].val() << std::endl;
3295  Xyce::dout() << " probeVars[admsProbeID_V_b_e] = "
3296  <<probeVars[admsProbeID_V_b_e].val() << std::endl;
3297  Xyce::dout() << " probeVars[admsProbeID_V_b_b1] = "
3298  <<probeVars[admsProbeID_V_b_b1].val() << std::endl;
3299  Xyce::dout() << " probeVars[admsProbeID_V_e_e1] = "
3300  <<probeVars[admsProbeID_V_e_e1].val() << std::endl;
3301  Xyce::dout() << " probeVars[admsProbeID_V_c1_c2] = "
3302  <<probeVars[admsProbeID_V_c1_c2].val() << std::endl;
3303  Xyce::dout() << " probeVars[admsProbeID_V_s_c1] = "
3304  <<probeVars[admsProbeID_V_s_c1].val() << std::endl;
3305  Xyce::dout() << " probeVars[admsProbeID_V_b1_b2] = "
3306  <<probeVars[admsProbeID_V_b1_b2].val() << std::endl;
3307  Xyce::dout() << " probeVars[admsProbeID_V_b1_e1] = "
3308  <<probeVars[admsProbeID_V_b1_e1].val() << std::endl;
3309  Xyce::dout() << " probeVars[admsProbeID_V_b2_e1] = "
3310  <<probeVars[admsProbeID_V_b2_e1].val() << std::endl;
3311  Xyce::dout() << " probeVars[admsProbeID_V_b2_c2] = "
3312  <<probeVars[admsProbeID_V_b2_c2].val() << std::endl;
3313  Xyce::dout() << " probeVars[admsProbeID_V_b2_c1] = "
3314  <<probeVars[admsProbeID_V_b2_c1].val() << std::endl;
3315  Xyce::dout() << " staticContributions[admsNodeID_c] = "
3316  <<staticContributions[admsNodeID_c].val() << std::endl;
3317  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_noi_e1) << std::endl;
3318  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_c3_c1) << std::endl;
3319  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_c3_c4) << std::endl;
3320  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_c4_c1) << std::endl;
3321  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c) << std::endl;
3322  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_e) << std::endl;
3323  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_b1) << std::endl;
3324  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_e_e1) << std::endl;
3325  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_c1_c2) << std::endl;
3326  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_s_c1) << std::endl;
3327  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b1_b2) << std::endl;
3328  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b1_e1) << std::endl;
3329  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b2_e1) << std::endl;
3330  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b2_c2) << std::endl;
3331  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b2_c1) << std::endl;
3332  Xyce::dout() << " dynamicContributions[admsNodeID_c] = "
3333  <<dynamicContributions[admsNodeID_c].val() << std::endl;
3334  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_noi_e1) << std::endl;
3335  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c3_c1) << std::endl;
3336  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c3_c4) << std::endl;
3337  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c4_c1) << std::endl;
3338  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c) << std::endl;
3339  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_e) << std::endl;
3340  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_b1) << std::endl;
3341  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_e_e1) << std::endl;
3342  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c1_c2) << std::endl;
3343  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_s_c1) << std::endl;
3344  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b1_b2) << std::endl;
3345  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b1_e1) << std::endl;
3346  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b2_e1) << std::endl;
3347  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b2_c2) << std::endl;
3348  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b2_c1) << std::endl;
3349  Xyce::dout() << " Jdxp_static[admsNodeID_c] = "
3350  <<Jdxp_static[admsNodeID_c] << std::endl;
3351  Xyce::dout() << " Jdxp_dynamic[admsNodeID_c] = "
3352  <<Jdxp_dynamic[admsNodeID_c] << std::endl;
3353  Xyce::dout() << " staticContributions[admsNodeID_b] = "
3354  <<staticContributions[admsNodeID_b].val() << std::endl;
3355  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_noi_e1) << std::endl;
3356  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_c3_c1) << std::endl;
3357  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_c3_c4) << std::endl;
3358  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_c4_c1) << std::endl;
3359  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c) << std::endl;
3360  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_e) << std::endl;
3361  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_b1) << std::endl;
3362  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_e_e1) << std::endl;
3363  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_c1_c2) << std::endl;
3364  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_s_c1) << std::endl;
3365  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b1_b2) << std::endl;
3366  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b1_e1) << std::endl;
3367  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b2_e1) << std::endl;
3368  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b2_c2) << std::endl;
3369  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b2_c1) << std::endl;
3370  Xyce::dout() << " dynamicContributions[admsNodeID_b] = "
3371  <<dynamicContributions[admsNodeID_b].val() << std::endl;
3372  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_noi_e1) << std::endl;
3373  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c3_c1) << std::endl;
3374  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c3_c4) << std::endl;
3375  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c4_c1) << std::endl;
3376  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) << std::endl;
3377  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e) << std::endl;
3378  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_b1) << std::endl;
3379  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_e_e1) << std::endl;
3380  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c1_c2) << std::endl;
3381  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_s_c1) << std::endl;
3382  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b1_b2) << std::endl;
3383  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b1_e1) << std::endl;
3384  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b2_e1) << std::endl;
3385  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b2_c2) << std::endl;
3386  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b2_c1) << std::endl;
3387  Xyce::dout() << " Jdxp_static[admsNodeID_b] = "
3388  <<Jdxp_static[admsNodeID_b] << std::endl;
3389  Xyce::dout() << " Jdxp_dynamic[admsNodeID_b] = "
3390  <<Jdxp_dynamic[admsNodeID_b] << std::endl;
3391  Xyce::dout() << " staticContributions[admsNodeID_e] = "
3392  <<staticContributions[admsNodeID_e].val() << std::endl;
3393  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_noi_e1) << std::endl;
3394  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_c3_c1) << std::endl;
3395  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_c3_c4) << std::endl;
3396  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_c4_c1) << std::endl;
3397  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_c) << std::endl;
3398  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_e) << std::endl;
3399  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_b1) << std::endl;
3400  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_e_e1) << std::endl;
3401  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_c1_c2) << std::endl;
3402  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_s_c1) << std::endl;
3403  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b1_b2) << std::endl;
3404  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b1_e1) << std::endl;
3405  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b2_e1) << std::endl;
3406  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b2_c2) << std::endl;
3407  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b2_c1) << std::endl;
3408  Xyce::dout() << " dynamicContributions[admsNodeID_e] = "
3409  <<dynamicContributions[admsNodeID_e].val() << std::endl;
3410  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_noi_e1) << std::endl;
3411  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c3_c1) << std::endl;
3412  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c3_c4) << std::endl;
3413  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c4_c1) << std::endl;
3414  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_c) << std::endl;
3415  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e) << std::endl;
3416  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_b1) << std::endl;
3417  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_e_e1) << std::endl;
3418  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c1_c2) << std::endl;
3419  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_s_c1) << std::endl;
3420  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b1_b2) << std::endl;
3421  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b1_e1) << std::endl;
3422  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b2_e1) << std::endl;
3423  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b2_c2) << std::endl;
3424  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b2_c1) << std::endl;
3425  Xyce::dout() << " Jdxp_static[admsNodeID_e] = "
3426  <<Jdxp_static[admsNodeID_e] << std::endl;
3427  Xyce::dout() << " Jdxp_dynamic[admsNodeID_e] = "
3428  <<Jdxp_dynamic[admsNodeID_e] << std::endl;
3429  Xyce::dout() << " staticContributions[admsNodeID_s] = "
3430  <<staticContributions[admsNodeID_s].val() << std::endl;
3431  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_noi_e1) << std::endl;
3432  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_c3_c1) << std::endl;
3433  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_c3_c4) << std::endl;
3434  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_c4_c1) << std::endl;
3435  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_b_c) << std::endl;
3436  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_b_e) << std::endl;
3437  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_b_b1) << std::endl;
3438  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_e_e1) << std::endl;
3439  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_c1_c2) << std::endl;
3440  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_s_c1) << std::endl;
3441  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_b1_b2) << std::endl;
3442  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_b1_e1) << std::endl;
3443  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_b2_e1) << std::endl;
3444  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_b2_c2) << std::endl;
3445  Xyce::dout() << " staticContributions[admsNodeID_s].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_s].dx(admsProbeID_V_b2_c1) << std::endl;
3446  Xyce::dout() << " dynamicContributions[admsNodeID_s] = "
3447  <<dynamicContributions[admsNodeID_s].val() << std::endl;
3448  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_noi_e1) << std::endl;
3449  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_c3_c1) << std::endl;
3450  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_c3_c4) << std::endl;
3451  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_c4_c1) << std::endl;
3452  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b_c) << std::endl;
3453  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b_e) << std::endl;
3454  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b_b1) << std::endl;
3455  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_e_e1) << std::endl;
3456  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_c1_c2) << std::endl;
3457  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_s_c1) << std::endl;
3458  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b1_b2) << std::endl;
3459  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b1_e1) << std::endl;
3460  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b2_e1) << std::endl;
3461  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b2_c2) << std::endl;
3462  Xyce::dout() << " dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_s].dx(admsProbeID_V_b2_c1) << std::endl;
3463  Xyce::dout() << " Jdxp_static[admsNodeID_s] = "
3464  <<Jdxp_static[admsNodeID_s] << std::endl;
3465  Xyce::dout() << " Jdxp_dynamic[admsNodeID_s] = "
3466  <<Jdxp_dynamic[admsNodeID_s] << std::endl;
3467  Xyce::dout() << " staticContributions[admsNodeID_e1] = "
3468  <<staticContributions[admsNodeID_e1].val() << std::endl;
3469  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_noi_e1) << std::endl;
3470  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c1) << std::endl;
3471  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c4) << std::endl;
3472  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_c4_c1) << std::endl;
3473  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_b_c) << std::endl;
3474  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_b_e) << std::endl;
3475  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_b_b1) << std::endl;
3476  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_e_e1) << std::endl;
3477  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_c1_c2) << std::endl;
3478  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_s_c1) << std::endl;
3479  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_b1_b2) << std::endl;
3480  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_b1_e1) << std::endl;
3481  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_b2_e1) << std::endl;
3482  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c2) << std::endl;
3483  Xyce::dout() << " staticContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c1) << std::endl;
3484  Xyce::dout() << " dynamicContributions[admsNodeID_e1] = "
3485  <<dynamicContributions[admsNodeID_e1].val() << std::endl;
3486  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_noi_e1) << std::endl;
3487  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c1) << std::endl;
3488  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c4) << std::endl;
3489  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c4_c1) << std::endl;
3490  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_c) << std::endl;
3491  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_e) << std::endl;
3492  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_b1) << std::endl;
3493  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_e_e1) << std::endl;
3494  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c1_c2) << std::endl;
3495  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_s_c1) << std::endl;
3496  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b1_b2) << std::endl;
3497  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b1_e1) << std::endl;
3498  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b2_e1) << std::endl;
3499  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c2) << std::endl;
3500  Xyce::dout() << " dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c1) << std::endl;
3501  Xyce::dout() << " Jdxp_static[admsNodeID_e1] = "
3502  <<Jdxp_static[admsNodeID_e1] << std::endl;
3503  Xyce::dout() << " Jdxp_dynamic[admsNodeID_e1] = "
3504  <<Jdxp_dynamic[admsNodeID_e1] << std::endl;
3505  Xyce::dout() << " staticContributions[admsNodeID_b1] = "
3506  <<staticContributions[admsNodeID_b1].val() << std::endl;
3507  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_noi_e1) << std::endl;
3508  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c1) << std::endl;
3509  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c4) << std::endl;
3510  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_c4_c1) << std::endl;
3511  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_c) << std::endl;
3512  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_e) << std::endl;
3513  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_b1) << std::endl;
3514  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_e_e1) << std::endl;
3515  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_c1_c2) << std::endl;
3516  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_s_c1) << std::endl;
3517  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_b1_b2) << std::endl;
3518  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_b1_e1) << std::endl;
3519  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_b2_e1) << std::endl;
3520  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c2) << std::endl;
3521  Xyce::dout() << " staticContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c1) << std::endl;
3522  Xyce::dout() << " dynamicContributions[admsNodeID_b1] = "
3523  <<dynamicContributions[admsNodeID_b1].val() << std::endl;
3524  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_noi_e1) << std::endl;
3525  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c1) << std::endl;
3526  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c4) << std::endl;
3527  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c4_c1) << std::endl;
3528  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_c) << std::endl;
3529  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_e) << std::endl;
3530  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_b1) << std::endl;
3531  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_e_e1) << std::endl;
3532  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c1_c2) << std::endl;
3533  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_s_c1) << std::endl;
3534  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b1_b2) << std::endl;
3535  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b1_e1) << std::endl;
3536  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b2_e1) << std::endl;
3537  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c2) << std::endl;
3538  Xyce::dout() << " dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c1) << std::endl;
3539  Xyce::dout() << " Jdxp_static[admsNodeID_b1] = "
3540  <<Jdxp_static[admsNodeID_b1] << std::endl;
3541  Xyce::dout() << " Jdxp_dynamic[admsNodeID_b1] = "
3542  <<Jdxp_dynamic[admsNodeID_b1] << std::endl;
3543  Xyce::dout() << " staticContributions[admsNodeID_b2] = "
3544  <<staticContributions[admsNodeID_b2].val() << std::endl;
3545  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_noi_e1) << std::endl;
3546  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c1) << std::endl;
3547  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c4) << std::endl;
3548  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_c4_c1) << std::endl;
3549  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_c) << std::endl;
3550  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_e) << std::endl;
3551  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_b1) << std::endl;
3552  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_e_e1) << std::endl;
3553  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_c1_c2) << std::endl;
3554  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_s_c1) << std::endl;
3555  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_b1_b2) << std::endl;
3556  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_b1_e1) << std::endl;
3557  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_b2_e1) << std::endl;
3558  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c2) << std::endl;
3559  Xyce::dout() << " staticContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c1) << std::endl;
3560  Xyce::dout() << " dynamicContributions[admsNodeID_b2] = "
3561  <<dynamicContributions[admsNodeID_b2].val() << std::endl;
3562  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_noi_e1) << std::endl;
3563  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c1) << std::endl;
3564  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c4) << std::endl;
3565  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c4_c1) << std::endl;
3566  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_c) << std::endl;
3567  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_e) << std::endl;
3568  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_b1) << std::endl;
3569  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_e_e1) << std::endl;
3570  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c1_c2) << std::endl;
3571  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_s_c1) << std::endl;
3572  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b1_b2) << std::endl;
3573  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b1_e1) << std::endl;
3574  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b2_e1) << std::endl;
3575  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c2) << std::endl;
3576  Xyce::dout() << " dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c1) << std::endl;
3577  Xyce::dout() << " Jdxp_static[admsNodeID_b2] = "
3578  <<Jdxp_static[admsNodeID_b2] << std::endl;
3579  Xyce::dout() << " Jdxp_dynamic[admsNodeID_b2] = "
3580  <<Jdxp_dynamic[admsNodeID_b2] << std::endl;
3581  Xyce::dout() << " staticContributions[admsNodeID_c3] = "
3582  <<staticContributions[admsNodeID_c3].val() << std::endl;
3583  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_noi_e1) << std::endl;
3584  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c1) << std::endl;
3585  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c4) << std::endl;
3586  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_c4_c1) << std::endl;
3587  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_c) << std::endl;
3588  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_e) << std::endl;
3589  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_b1) << std::endl;
3590  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_e_e1) << std::endl;
3591  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_c1_c2) << std::endl;
3592  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_s_c1) << std::endl;
3593  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_b1_b2) << std::endl;
3594  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_b1_e1) << std::endl;
3595  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_b2_e1) << std::endl;
3596  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c2) << std::endl;
3597  Xyce::dout() << " staticContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c1) << std::endl;
3598  Xyce::dout() << " dynamicContributions[admsNodeID_c3] = "
3599  <<dynamicContributions[admsNodeID_c3].val() << std::endl;
3600  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_noi_e1) << std::endl;
3601  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c1) << std::endl;
3602  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c4) << std::endl;
3603  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c4_c1) << std::endl;
3604  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_c) << std::endl;
3605  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_e) << std::endl;
3606  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_b1) << std::endl;
3607  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_e_e1) << std::endl;
3608  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c1_c2) << std::endl;
3609  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_s_c1) << std::endl;
3610  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b1_b2) << std::endl;
3611  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b1_e1) << std::endl;
3612  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b2_e1) << std::endl;
3613  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c2) << std::endl;
3614  Xyce::dout() << " dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c1) << std::endl;
3615  Xyce::dout() << " Jdxp_static[admsNodeID_c3] = "
3616  <<Jdxp_static[admsNodeID_c3] << std::endl;
3617  Xyce::dout() << " Jdxp_dynamic[admsNodeID_c3] = "
3618  <<Jdxp_dynamic[admsNodeID_c3] << std::endl;
3619  Xyce::dout() << " staticContributions[admsNodeID_c4] = "
3620  <<staticContributions[admsNodeID_c4].val() << std::endl;
3621  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_noi_e1) << std::endl;
3622  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c1) << std::endl;
3623  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c4) << std::endl;
3624  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_c4_c1) << std::endl;
3625  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_c) << std::endl;
3626  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_e) << std::endl;
3627  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_b1) << std::endl;
3628  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_e_e1) << std::endl;
3629  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_c1_c2) << std::endl;
3630  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_s_c1) << std::endl;
3631  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_b1_b2) << std::endl;
3632  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_b1_e1) << std::endl;
3633  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_b2_e1) << std::endl;
3634  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c2) << std::endl;
3635  Xyce::dout() << " staticContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c1) << std::endl;
3636  Xyce::dout() << " dynamicContributions[admsNodeID_c4] = "
3637  <<dynamicContributions[admsNodeID_c4].val() << std::endl;
3638  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_noi_e1) << std::endl;
3639  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c1) << std::endl;
3640  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c4) << std::endl;
3641  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c4_c1) << std::endl;
3642  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_c) << std::endl;
3643  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_e) << std::endl;
3644  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_b1) << std::endl;
3645  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_e_e1) << std::endl;
3646  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c1_c2) << std::endl;
3647  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_s_c1) << std::endl;
3648  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b1_b2) << std::endl;
3649  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b1_e1) << std::endl;
3650  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b2_e1) << std::endl;
3651  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c2) << std::endl;
3652  Xyce::dout() << " dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c1) << std::endl;
3653  Xyce::dout() << " Jdxp_static[admsNodeID_c4] = "
3654  <<Jdxp_static[admsNodeID_c4] << std::endl;
3655  Xyce::dout() << " Jdxp_dynamic[admsNodeID_c4] = "
3656  <<Jdxp_dynamic[admsNodeID_c4] << std::endl;
3657  Xyce::dout() << " staticContributions[admsNodeID_c2] = "
3658  <<staticContributions[admsNodeID_c2].val() << std::endl;
3659  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_noi_e1) << std::endl;
3660  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c1) << std::endl;
3661  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c4) << std::endl;
3662  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_c4_c1) << std::endl;
3663  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_c) << std::endl;
3664  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_e) << std::endl;
3665  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_b1) << std::endl;
3666  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_e_e1) << std::endl;
3667  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_c1_c2) << std::endl;
3668  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_s_c1) << std::endl;
3669  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_b1_b2) << std::endl;
3670  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_b1_e1) << std::endl;
3671  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_b2_e1) << std::endl;
3672  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c2) << std::endl;
3673  Xyce::dout() << " staticContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c1) << std::endl;
3674  Xyce::dout() << " dynamicContributions[admsNodeID_c2] = "
3675  <<dynamicContributions[admsNodeID_c2].val() << std::endl;
3676  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_noi_e1) << std::endl;
3677  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c1) << std::endl;
3678  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c4) << std::endl;
3679  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c4_c1) << std::endl;
3680  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_c) << std::endl;
3681  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_e) << std::endl;
3682  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_b1) << std::endl;
3683  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_e_e1) << std::endl;
3684  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c1_c2) << std::endl;
3685  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_s_c1) << std::endl;
3686  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b1_b2) << std::endl;
3687  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b1_e1) << std::endl;
3688  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b2_e1) << std::endl;
3689  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c2) << std::endl;
3690  Xyce::dout() << " dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c1) << std::endl;
3691  Xyce::dout() << " Jdxp_static[admsNodeID_c2] = "
3692  <<Jdxp_static[admsNodeID_c2] << std::endl;
3693  Xyce::dout() << " Jdxp_dynamic[admsNodeID_c2] = "
3694  <<Jdxp_dynamic[admsNodeID_c2] << std::endl;
3695  Xyce::dout() << " staticContributions[admsNodeID_c1] = "
3696  <<staticContributions[admsNodeID_c1].val() << std::endl;
3697  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_noi_e1) << std::endl;
3698  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c1) << std::endl;
3699  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c4) << std::endl;
3700  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_c4_c1) << std::endl;
3701  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_c) << std::endl;
3702  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_e) << std::endl;
3703  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_b1) << std::endl;
3704  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_e_e1) << std::endl;
3705  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_c1_c2) << std::endl;
3706  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_s_c1) << std::endl;
3707  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_b1_b2) << std::endl;
3708  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_b1_e1) << std::endl;
3709  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_b2_e1) << std::endl;
3710  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c2) << std::endl;
3711  Xyce::dout() << " staticContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c1) << std::endl;
3712  Xyce::dout() << " dynamicContributions[admsNodeID_c1] = "
3713  <<dynamicContributions[admsNodeID_c1].val() << std::endl;
3714  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_noi_e1) << std::endl;
3715  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c1) << std::endl;
3716  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c4) << std::endl;
3717  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c4_c1) << std::endl;
3718  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_c) << std::endl;
3719  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_e) << std::endl;
3720  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_b1) << std::endl;
3721  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_e_e1) << std::endl;
3722  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c1_c2) << std::endl;
3723  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_s_c1) << std::endl;
3724  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b1_b2) << std::endl;
3725  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b1_e1) << std::endl;
3726  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b2_e1) << std::endl;
3727  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c2) << std::endl;
3728  Xyce::dout() << " dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c1) << std::endl;
3729  Xyce::dout() << " Jdxp_static[admsNodeID_c1] = "
3730  <<Jdxp_static[admsNodeID_c1] << std::endl;
3731  Xyce::dout() << " Jdxp_dynamic[admsNodeID_c1] = "
3732  <<Jdxp_dynamic[admsNodeID_c1] << std::endl;
3733  Xyce::dout() << " staticContributions[admsNodeID_noi] = "
3734  <<staticContributions[admsNodeID_noi].val() << std::endl;
3735  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_noi_e1) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_noi_e1) << std::endl;
3736  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_c3_c1) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_c3_c1) << std::endl;
3737  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_c3_c4) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_c3_c4) << std::endl;
3738  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_c4_c1) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_c4_c1) << std::endl;
3739  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_b_c) << std::endl;
3740  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_b_e) << std::endl;
3741  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_b_b1) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_b_b1) << std::endl;
3742  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_e_e1) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_e_e1) << std::endl;
3743  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_c1_c2) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_c1_c2) << std::endl;
3744  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_s_c1) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_s_c1) << std::endl;
3745  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_b1_b2) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_b1_b2) << std::endl;
3746  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_b1_e1) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_b1_e1) << std::endl;
3747  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_b2_e1) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_b2_e1) << std::endl;
3748  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c2) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c2) << std::endl;
3749  Xyce::dout() << " staticContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c1) = " <<staticContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c1) << std::endl;
3750  Xyce::dout() << " dynamicContributions[admsNodeID_noi] = "
3751  <<dynamicContributions[admsNodeID_noi].val() << std::endl;
3752  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_noi_e1) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_noi_e1) << std::endl;
3753  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_c3_c1) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_c3_c1) << std::endl;
3754  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_c3_c4) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_c3_c4) << std::endl;
3755  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_c4_c1) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_c4_c1) << std::endl;
3756  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b_c) << std::endl;
3757  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b_e) << std::endl;
3758  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b_b1) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b_b1) << std::endl;
3759  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_e_e1) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_e_e1) << std::endl;
3760  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_c1_c2) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_c1_c2) << std::endl;
3761  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_s_c1) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_s_c1) << std::endl;
3762  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b1_b2) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b1_b2) << std::endl;
3763  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b1_e1) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b1_e1) << std::endl;
3764  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b2_e1) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b2_e1) << std::endl;
3765  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c2) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c2) << std::endl;
3766  Xyce::dout() << " dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c1) = " <<dynamicContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c1) << std::endl;
3767  Xyce::dout() << " Jdxp_static[admsNodeID_noi] = "
3768  <<Jdxp_static[admsNodeID_noi] << std::endl;
3769  Xyce::dout() << " Jdxp_dynamic[admsNodeID_noi] = "
3770  <<Jdxp_dynamic[admsNodeID_noi] << std::endl;
3771 
3772  if (!origFlag)
3773  Xyce::dout() << "This step was limited by this device." << std::endl;
3774  }
3775 
3776  return true;
3777 }
3778 
3779 //-----------------------------------------------------------------------------
3780 // Function : Instance::loadDAEdFdx
3781 // Purpose :
3782 // Special Notes : Load the dFdx ("static jacobian") matrix
3783 // Scope : public
3784 // Creator : admsXml
3785 // Creation Date :
3786 //-----------------------------------------------------------------------------
3788 {
3789  bool bsuccess = true;
3790  Linear::Matrix * dFdxMatPtr = extData.dFdxMatrixPtr;
3791 
3792  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3793  {
3794  Xyce::dout() << subsection_divider << std::endl;
3795  Xyce::dout() << "ADMSbjt504va::Instance::loadDAEdFdx (" << getName() << "):" << std::endl;
3796  }
3798 
3799 
3800  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3801  {
3803  }
3805 
3806 
3807  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3808  {
3809  Xyce::dout() << " (*f_c1_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_c1].dx(admsProbeID_V_c1_c2)<< std::endl;
3810  }
3812 
3813 
3814  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3815  {
3817  }
3819 
3820 
3821  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3822  {
3823  Xyce::dout() << " (*f_c2_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_c2].dx(admsProbeID_V_c1_c2)<< std::endl;
3824  }
3826 
3827 
3828  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3829  {
3831  }
3833 
3834 
3835  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3836  {
3838  }
3840 
3841 
3842  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3843  {
3844  Xyce::dout() << " (*f_e1_Equ_c1_Node_Ptr) += " << -staticContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c1) +staticContributions[admsNodeID_e1].dx(admsProbeID_V_c1_c2)<< std::endl;
3845  }
3847 
3848 
3849  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3850  {
3851  Xyce::dout() << " (*f_e1_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_e1].dx(admsProbeID_V_c1_c2)<< std::endl;
3852  }
3854 
3855 
3856  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3857  {
3859  }
3861 
3862 
3863  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3864  {
3865  Xyce::dout() << " (*f_c2_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_c2].dx(admsProbeID_V_noi_e1) -staticContributions[admsNodeID_c2].dx(admsProbeID_V_b2_e1)<< std::endl;
3866  }
3868 
3869 
3870  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3871  {
3873  }
3875 
3876 
3877  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3878  {
3880  }
3882 
3883 
3884  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3885  {
3886  Xyce::dout() << " (*f_b1_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_b1].dx(admsProbeID_V_b2_e1) -staticContributions[admsNodeID_b1].dx(admsProbeID_V_b1_e1)<< std::endl;
3887  }
3888  (*f_e1_Equ_b1_Node_Ptr) += +staticContributions[admsNodeID_e1].dx(admsProbeID_V_b1_e1);
3889 
3890 
3891  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3892  {
3893  Xyce::dout() << " (*f_e1_Equ_b1_Node_Ptr) += " << +staticContributions[admsNodeID_e1].dx(admsProbeID_V_b1_e1)<< std::endl;
3894  }
3896 
3897 
3898  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3899  {
3901  }
3903 
3904 
3905  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3906  {
3907  Xyce::dout() << " (*f_b2_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_b2].dx(admsProbeID_V_noi_e1) -staticContributions[admsNodeID_b2].dx(admsProbeID_V_b2_e1)<< std::endl;
3908  }
3910 
3911 
3912  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3913  {
3915  }
3917 
3918 
3919  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3920  {
3921  Xyce::dout() << " (*f_b2_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_b2].dx(admsProbeID_V_c1_c2)<< std::endl;
3922  }
3923  (*f_b1_Equ_s_Node_Ptr) += +staticContributions[admsNodeID_b1].dx(admsProbeID_V_s_c1);
3924 
3925 
3926  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3927  {
3928  Xyce::dout() << " (*f_b1_Equ_s_Node_Ptr) += " << +staticContributions[admsNodeID_b1].dx(admsProbeID_V_s_c1)<< std::endl;
3929  }
3931 
3932 
3933  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3934  {
3936  }
3937  (*f_s_Equ_s_Node_Ptr) += +staticContributions[admsNodeID_s].dx(admsProbeID_V_s_c1);
3938 
3939 
3940  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3941  {
3942  Xyce::dout() << " (*f_s_Equ_s_Node_Ptr) += " << +staticContributions[admsNodeID_s].dx(admsProbeID_V_s_c1)<< std::endl;
3943  }
3945 
3946 
3947  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3948  {
3950  }
3952 
3953 
3954  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3955  {
3956  Xyce::dout() << " (*f_b1_Equ_c4_Node_Ptr) += " << -staticContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c4) +staticContributions[admsNodeID_b1].dx(admsProbeID_V_c4_c1)<< std::endl;
3957  }
3959 
3960 
3961  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3962  {
3963  Xyce::dout() << " (*f_s_Equ_c4_Node_Ptr) += " << -staticContributions[admsNodeID_s].dx(admsProbeID_V_c3_c4) +staticContributions[admsNodeID_s].dx(admsProbeID_V_c4_c1)<< std::endl;
3964  }
3966 
3967 
3968  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3969  {
3970  Xyce::dout() << " (*f_b1_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_b1].dx(admsProbeID_V_c1_c2)<< std::endl;
3971  }
3973 
3974 
3975  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3976  {
3977  Xyce::dout() << " (*f_s_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_s].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_s].dx(admsProbeID_V_c1_c2)<< std::endl;
3978  }
3980 
3981 
3982  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3983  {
3985  }
3987 
3988 
3989  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3990  {
3992  }
3994 
3995 
3996  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3997  {
3998  Xyce::dout() << " (*f_s_Equ_b1_Node_Ptr) += " << -staticContributions[admsNodeID_s].dx(admsProbeID_V_b_b1) +staticContributions[admsNodeID_s].dx(admsProbeID_V_b1_b2)<< std::endl;
3999  }
4000  (*f_b_Equ_s_Node_Ptr) += +staticContributions[admsNodeID_b].dx(admsProbeID_V_s_c1);
4001 
4002 
4003  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4004  {
4005  Xyce::dout() << " (*f_b_Equ_s_Node_Ptr) += " << +staticContributions[admsNodeID_b].dx(admsProbeID_V_s_c1)<< std::endl;
4006  }
4008 
4009 
4010  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4011  {
4013  }
4015 
4016 
4017  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4018  {
4019  Xyce::dout() << " (*f_b_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_b].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_b].dx(admsProbeID_V_c1_c2)<< std::endl;
4020  }
4022 
4023 
4024  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4025  {
4027  }
4028  (*f_b_Equ_e1_Node_Ptr) += -staticContributions[admsNodeID_b].dx(admsProbeID_V_b2_e1);
4029 
4030 
4031  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4032  {
4033  Xyce::dout() << " (*f_b_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_b].dx(admsProbeID_V_b2_e1)<< std::endl;
4034  }
4035  (*f_s_Equ_e1_Node_Ptr) += -staticContributions[admsNodeID_s].dx(admsProbeID_V_b2_e1);
4036 
4037 
4038  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4039  {
4040  Xyce::dout() << " (*f_s_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_s].dx(admsProbeID_V_b2_e1)<< std::endl;
4041  }
4043 
4044 
4045  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4046  {
4047  Xyce::dout() << " (*f_b_Equ_c3_Node_Ptr) += " << +staticContributions[admsNodeID_b].dx(admsProbeID_V_c3_c1) +staticContributions[admsNodeID_b].dx(admsProbeID_V_c3_c4)<< std::endl;
4048  }
4050 
4051 
4052  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4053  {
4054  Xyce::dout() << " (*f_b_Equ_c4_Node_Ptr) += " << +staticContributions[admsNodeID_b].dx(admsProbeID_V_c4_c1) -staticContributions[admsNodeID_b].dx(admsProbeID_V_c3_c4)<< std::endl;
4055  }
4057 
4058 
4059  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4060  {
4061  Xyce::dout() << " (*f_s_Equ_c3_Node_Ptr) += " << +staticContributions[admsNodeID_s].dx(admsProbeID_V_c3_c1) +staticContributions[admsNodeID_s].dx(admsProbeID_V_c3_c4)<< std::endl;
4062  }
4064 
4065 
4066  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4067  {
4068  Xyce::dout() << " (*f_b_Equ_b1_Node_Ptr) += " << -staticContributions[admsNodeID_b].dx(admsProbeID_V_b_b1) +staticContributions[admsNodeID_b].dx(admsProbeID_V_b1_b2)<< std::endl;
4069  }
4071 
4072 
4073  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4074  {
4075  Xyce::dout() << " (*f_b_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c) +staticContributions[admsNodeID_b].dx(admsProbeID_V_b_b1)<< std::endl;
4076  }
4078 
4079 
4080  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4081  {
4082  Xyce::dout() << " (*f_s_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_s].dx(admsProbeID_V_b_c) +staticContributions[admsNodeID_s].dx(admsProbeID_V_b_b1)<< std::endl;
4083  }
4084  (*f_b_Equ_c_Node_Ptr) += -staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c);
4085 
4086 
4087  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4088  {
4089  Xyce::dout() << " (*f_b_Equ_c_Node_Ptr) += " << -staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c)<< std::endl;
4090  }
4091  (*f_s_Equ_c_Node_Ptr) += -staticContributions[admsNodeID_s].dx(admsProbeID_V_b_c);
4092 
4093 
4094  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4095  {
4096  Xyce::dout() << " (*f_s_Equ_c_Node_Ptr) += " << -staticContributions[admsNodeID_s].dx(admsProbeID_V_b_c)<< std::endl;
4097  }
4098  (*f_c1_Equ_s_Node_Ptr) += +staticContributions[admsNodeID_c1].dx(admsProbeID_V_s_c1);
4099 
4100 
4101  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4102  {
4103  Xyce::dout() << " (*f_c1_Equ_s_Node_Ptr) += " << +staticContributions[admsNodeID_c1].dx(admsProbeID_V_s_c1)<< std::endl;
4104  }
4106 
4107 
4108  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4109  {
4110  Xyce::dout() << " (*f_b1_Equ_c3_Node_Ptr) += " << +staticContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c1) +staticContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c4)<< std::endl;
4111  }
4113 
4114 
4115  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4116  {
4117  Xyce::dout() << " (*f_b2_Equ_c3_Node_Ptr) += " << +staticContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c1) +staticContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c4)<< std::endl;
4118  }
4120 
4121 
4122  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4123  {
4124  Xyce::dout() << " (*f_b2_Equ_c4_Node_Ptr) += " << +staticContributions[admsNodeID_b2].dx(admsProbeID_V_c4_c1) -staticContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c4)<< std::endl;
4125  }
4127 
4128 
4129  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4130  {
4131  Xyce::dout() << " (*f_b1_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_c) +staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_b1)<< std::endl;
4132  }
4134 
4135 
4136  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4137  {
4138  Xyce::dout() << " (*f_b2_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_c) +staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_b1)<< std::endl;
4139  }
4141 
4142 
4143  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4144  {
4145  Xyce::dout() << " (*f_b2_Equ_b1_Node_Ptr) += " << +staticContributions[admsNodeID_b2].dx(admsProbeID_V_b1_b2) -staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_b1)<< std::endl;
4146  }
4147  (*f_b1_Equ_c_Node_Ptr) += -staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_c);
4148 
4149 
4150  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4151  {
4152  Xyce::dout() << " (*f_b1_Equ_c_Node_Ptr) += " << -staticContributions[admsNodeID_b1].dx(admsProbeID_V_b_c)<< std::endl;
4153  }
4154  (*f_b2_Equ_c_Node_Ptr) += -staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_c);
4155 
4156 
4157  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4158  {
4159  Xyce::dout() << " (*f_b2_Equ_c_Node_Ptr) += " << -staticContributions[admsNodeID_b2].dx(admsProbeID_V_b_c)<< std::endl;
4160  }
4162 
4163 
4164  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4165  {
4166  Xyce::dout() << " (*f_c2_Equ_c3_Node_Ptr) += " << +staticContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c1) +staticContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c4)<< std::endl;
4167  }
4169 
4170 
4171  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4172  {
4173  Xyce::dout() << " (*f_c2_Equ_c4_Node_Ptr) += " << +staticContributions[admsNodeID_c2].dx(admsProbeID_V_c4_c1) -staticContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c4)<< std::endl;
4174  }
4176 
4177 
4178  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4179  {
4180  Xyce::dout() << " (*f_c2_Equ_b1_Node_Ptr) += " << -staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_b1) +staticContributions[admsNodeID_c2].dx(admsProbeID_V_b1_b2)<< std::endl;
4181  }
4183 
4184 
4185  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4186  {
4187  Xyce::dout() << " (*f_c2_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_c) +staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_b1)<< std::endl;
4188  }
4189  (*f_c2_Equ_c_Node_Ptr) += -staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_c);
4190 
4191 
4192  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4193  {
4194  Xyce::dout() << " (*f_c2_Equ_c_Node_Ptr) += " << -staticContributions[admsNodeID_c2].dx(admsProbeID_V_b_c)<< std::endl;
4195  }
4196  (*f_e_Equ_e_Node_Ptr) += +staticContributions[admsNodeID_e].dx(admsProbeID_V_e_e1);
4197 
4198 
4199  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4200  {
4201  Xyce::dout() << " (*f_e_Equ_e_Node_Ptr) += " << +staticContributions[admsNodeID_e].dx(admsProbeID_V_e_e1)<< std::endl;
4202  }
4203  (*f_e_Equ_e1_Node_Ptr) += -staticContributions[admsNodeID_e].dx(admsProbeID_V_e_e1);
4204 
4205 
4206  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4207  {
4208  Xyce::dout() << " (*f_e_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_e].dx(admsProbeID_V_e_e1)<< std::endl;
4209  }
4210  (*f_e1_Equ_e_Node_Ptr) += +staticContributions[admsNodeID_e1].dx(admsProbeID_V_e_e1);
4211 
4212 
4213  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4214  {
4215  Xyce::dout() << " (*f_e1_Equ_e_Node_Ptr) += " << +staticContributions[admsNodeID_e1].dx(admsProbeID_V_e_e1)<< std::endl;
4216  }
4217  (*f_noi_Equ_noi_Node_Ptr) += +staticContributions[admsNodeID_noi].dx(admsProbeID_V_noi_e1);
4218 
4219 
4220  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4221  {
4222  Xyce::dout() << " (*f_noi_Equ_noi_Node_Ptr) += " << +staticContributions[admsNodeID_noi].dx(admsProbeID_V_noi_e1)<< std::endl;
4223  }
4225 
4226 
4227  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4228  {
4229  Xyce::dout() << " (*f_noi_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_noi].dx(admsProbeID_V_b2_e1) -staticContributions[admsNodeID_noi].dx(admsProbeID_V_noi_e1)<< std::endl;
4230  }
4231  (*f_e1_Equ_noi_Node_Ptr) += +staticContributions[admsNodeID_e1].dx(admsProbeID_V_noi_e1);
4232 
4233 
4234  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4235  {
4236  Xyce::dout() << " (*f_e1_Equ_noi_Node_Ptr) += " << +staticContributions[admsNodeID_e1].dx(admsProbeID_V_noi_e1)<< std::endl;
4237  }
4238  (*f_b2_Equ_noi_Node_Ptr) += +staticContributions[admsNodeID_b2].dx(admsProbeID_V_noi_e1);
4239 
4240 
4241  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4242  {
4243  Xyce::dout() << " (*f_b2_Equ_noi_Node_Ptr) += " << +staticContributions[admsNodeID_b2].dx(admsProbeID_V_noi_e1)<< std::endl;
4244  }
4245  (*f_c2_Equ_noi_Node_Ptr) += +staticContributions[admsNodeID_c2].dx(admsProbeID_V_noi_e1);
4246 
4247 
4248  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4249  {
4250  Xyce::dout() << " (*f_c2_Equ_noi_Node_Ptr) += " << +staticContributions[admsNodeID_c2].dx(admsProbeID_V_noi_e1)<< std::endl;
4251  }
4253 
4254 
4255  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4256  {
4257  Xyce::dout() << " (*f_c_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c) +staticContributions[admsNodeID_c].dx(admsProbeID_V_b_b1)<< std::endl;
4258  }
4259  (*f_c_Equ_c_Node_Ptr) += -staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c);
4260 
4261 
4262  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4263  {
4264  Xyce::dout() << " (*f_c_Equ_c_Node_Ptr) += " << -staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c)<< std::endl;
4265  }
4266  (*f_c3_Equ_s_Node_Ptr) += +staticContributions[admsNodeID_c3].dx(admsProbeID_V_s_c1);
4267 
4268 
4269  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4270  {
4271  Xyce::dout() << " (*f_c3_Equ_s_Node_Ptr) += " << +staticContributions[admsNodeID_c3].dx(admsProbeID_V_s_c1)<< std::endl;
4272  }
4274 
4275 
4276  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4277  {
4279  }
4281 
4282 
4283  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4284  {
4285  Xyce::dout() << " (*f_c3_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_c3].dx(admsProbeID_V_c1_c2)<< std::endl;
4286  }
4288 
4289 
4290  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4291  {
4293  }
4294  (*f_c3_Equ_e1_Node_Ptr) += -staticContributions[admsNodeID_c3].dx(admsProbeID_V_b2_e1);
4295 
4296 
4297  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4298  {
4299  Xyce::dout() << " (*f_c3_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_c3].dx(admsProbeID_V_b2_e1)<< std::endl;
4300  }
4302 
4303 
4304  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4305  {
4306  Xyce::dout() << " (*f_c3_Equ_c3_Node_Ptr) += " << +staticContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c1) +staticContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c4)<< std::endl;
4307  }
4309 
4310 
4311  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4312  {
4313  Xyce::dout() << " (*f_c3_Equ_c4_Node_Ptr) += " << +staticContributions[admsNodeID_c3].dx(admsProbeID_V_c4_c1) -staticContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c4)<< std::endl;
4314  }
4316 
4317 
4318  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4319  {
4320  Xyce::dout() << " (*f_c3_Equ_b1_Node_Ptr) += " << -staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_b1) +staticContributions[admsNodeID_c3].dx(admsProbeID_V_b1_b2)<< std::endl;
4321  }
4323 
4324 
4325  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4326  {
4327  Xyce::dout() << " (*f_c3_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_c) +staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_b1)<< std::endl;
4328  }
4329  (*f_c3_Equ_c_Node_Ptr) += -staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_c);
4330 
4331 
4332  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4333  {
4334  Xyce::dout() << " (*f_c3_Equ_c_Node_Ptr) += " << -staticContributions[admsNodeID_c3].dx(admsProbeID_V_b_c)<< std::endl;
4335  }
4337 
4338 
4339  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4340  {
4341  Xyce::dout() << " (*f_c_Equ_c3_Node_Ptr) += " << +staticContributions[admsNodeID_c].dx(admsProbeID_V_c3_c1) +staticContributions[admsNodeID_c].dx(admsProbeID_V_c3_c4)<< std::endl;
4342  }
4344 
4345 
4346  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4347  {
4348  Xyce::dout() << " (*f_c_Equ_c4_Node_Ptr) += " << +staticContributions[admsNodeID_c].dx(admsProbeID_V_c4_c1) -staticContributions[admsNodeID_c].dx(admsProbeID_V_c3_c4)<< std::endl;
4349  }
4351 
4352 
4353  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4354  {
4356  }
4358 
4359 
4360  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4361  {
4362  Xyce::dout() << " (*f_c_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_c].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_c].dx(admsProbeID_V_c1_c2)<< std::endl;
4363  }
4365 
4366 
4367  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4368  {
4369  Xyce::dout() << " (*f_c_Equ_b2_Node_Ptr) += " << -staticContributions[admsNodeID_c].dx(admsProbeID_V_b1_b2) +staticContributions[admsNodeID_c].dx(admsProbeID_V_b2_c2)<< std::endl;
4370  }
4372 
4373 
4374  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4375  {
4376  Xyce::dout() << " (*f_c_Equ_b1_Node_Ptr) += " << -staticContributions[admsNodeID_c].dx(admsProbeID_V_b_b1) +staticContributions[admsNodeID_c].dx(admsProbeID_V_b1_b2)<< std::endl;
4377  }
4379 
4380 
4381  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4382  {
4383  Xyce::dout() << " (*f_c4_Equ_c4_Node_Ptr) += " << -staticContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c4) +staticContributions[admsNodeID_c4].dx(admsProbeID_V_c4_c1)<< std::endl;
4384  }
4386 
4387 
4388  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4389  {
4391  }
4393 
4394 
4395  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4396  {
4397  Xyce::dout() << " (*f_c1_Equ_c4_Node_Ptr) += " << -staticContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c4) +staticContributions[admsNodeID_c1].dx(admsProbeID_V_c4_c1)<< std::endl;
4398  }
4400 
4401 
4402  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4403  {
4405  }
4406  (*f_c4_Equ_e1_Node_Ptr) += -staticContributions[admsNodeID_c4].dx(admsProbeID_V_b2_e1);
4407 
4408 
4409  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4410  {
4411  Xyce::dout() << " (*f_c4_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_c4].dx(admsProbeID_V_b2_e1)<< std::endl;
4412  }
4414 
4415 
4416  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4417  {
4418  Xyce::dout() << " (*f_c4_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_c4].dx(admsProbeID_V_c1_c2)<< std::endl;
4419  }
4421 
4422 
4423  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4424  {
4425  Xyce::dout() << " (*f_c4_Equ_b1_Node_Ptr) += " << -staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_b1) +staticContributions[admsNodeID_c4].dx(admsProbeID_V_b1_b2)<< std::endl;
4426  }
4428 
4429 
4430  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4431  {
4432  Xyce::dout() << " (*f_c4_Equ_c3_Node_Ptr) += " << +staticContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c1) +staticContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c4)<< std::endl;
4433  }
4434  (*f_c1_Equ_e1_Node_Ptr) += -staticContributions[admsNodeID_c1].dx(admsProbeID_V_b2_e1);
4435 
4436 
4437  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4438  {
4439  Xyce::dout() << " (*f_c1_Equ_e1_Node_Ptr) += " << -staticContributions[admsNodeID_c1].dx(admsProbeID_V_b2_e1)<< std::endl;
4440  }
4442 
4443 
4444  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4445  {
4446  Xyce::dout() << " (*f_c1_Equ_b1_Node_Ptr) += " << -staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_b1) +staticContributions[admsNodeID_c1].dx(admsProbeID_V_b1_b2)<< std::endl;
4447  }
4449 
4450 
4451  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4452  {
4453  Xyce::dout() << " (*f_c1_Equ_c3_Node_Ptr) += " << +staticContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c1) +staticContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c4)<< std::endl;
4454  }
4455  (*f_c4_Equ_s_Node_Ptr) += +staticContributions[admsNodeID_c4].dx(admsProbeID_V_s_c1);
4456 
4457 
4458  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4459  {
4460  Xyce::dout() << " (*f_c4_Equ_s_Node_Ptr) += " << +staticContributions[admsNodeID_c4].dx(admsProbeID_V_s_c1)<< std::endl;
4461  }
4463 
4464 
4465  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4466  {
4467  Xyce::dout() << " (*f_c4_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_c) +staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_b1)<< std::endl;
4468  }
4469  (*f_c4_Equ_c_Node_Ptr) += -staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_c);
4470 
4471 
4472  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4473  {
4474  Xyce::dout() << " (*f_c4_Equ_c_Node_Ptr) += " << -staticContributions[admsNodeID_c4].dx(admsProbeID_V_b_c)<< std::endl;
4475  }
4477 
4478 
4479  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4480  {
4481  Xyce::dout() << " (*f_c1_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_c) +staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_b1)<< std::endl;
4482  }
4483  (*f_c1_Equ_c_Node_Ptr) += -staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_c);
4484 
4485 
4486  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4487  {
4488  Xyce::dout() << " (*f_c1_Equ_c_Node_Ptr) += " << -staticContributions[admsNodeID_c1].dx(admsProbeID_V_b_c)<< std::endl;
4489  }
4491 
4492 
4493  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4494  {
4496  }
4498 
4499 
4500  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4501  {
4502  Xyce::dout() << " (*f_noi_Equ_c1_Node_Ptr) += " << -staticContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c1) +staticContributions[admsNodeID_noi].dx(admsProbeID_V_c1_c2)<< std::endl;
4503  }
4505 
4506 
4507  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4508  {
4509  Xyce::dout() << " (*f_noi_Equ_c2_Node_Ptr) += " << -staticContributions[admsNodeID_noi].dx(admsProbeID_V_b2_c2) -staticContributions[admsNodeID_noi].dx(admsProbeID_V_c1_c2)<< std::endl;
4510  }
4511 
4512 
4513  return bsuccess;
4514 }
4515 
4516 
4517 //-----------------------------------------------------------------------------
4518 // Function : Instance::loadDAEdQdx
4519 // Purpose :
4520 // Special Notes : Load the dQdx ("dynamic jacobian") matrix
4521 // Scope : public
4522 // Creator : admsXml
4523 // Creation Date :
4524 //-----------------------------------------------------------------------------
4526 {
4527  bool bsuccess = true;
4528  Linear::Matrix * dQdxMatPtr = extData.dQdxMatrixPtr;
4529 
4530  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4531  {
4532  Xyce::dout() << subsection_divider << std::endl;
4533  Xyce::dout() << "ADMSbjt504va::Instance::loadDAEdQdx (" << getName() << "):" << std::endl;
4534  }
4536 
4537 
4538  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4539  {
4541  }
4543 
4544 
4545  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4546  {
4547  Xyce::dout() << " (*q_c1_Equ_c2_Node_Ptr) += " << -dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b2_c2) -dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c1_c2)<< std::endl;
4548  }
4550 
4551 
4552  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4553  {
4555  }
4557 
4558 
4559  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4560  {
4561  Xyce::dout() << " (*q_c2_Equ_c2_Node_Ptr) += " << -dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b2_c2) -dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c1_c2)<< std::endl;
4562  }
4564 
4565 
4566  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4567  {
4569  }
4571 
4572 
4573  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4574  {
4576  }
4578 
4579 
4580  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4581  {
4583  }
4585 
4586 
4587  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4588  {
4589  Xyce::dout() << " (*q_e1_Equ_c2_Node_Ptr) += " << -dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b2_c2) -dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c1_c2)<< std::endl;
4590  }
4592 
4593 
4594  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4595  {
4597  }
4598  (*q_c2_Equ_e1_Node_Ptr) += -dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b2_e1);
4599 
4600 
4601  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4602  {
4603  Xyce::dout() << " (*q_c2_Equ_e1_Node_Ptr) += " << -dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b2_e1)<< std::endl;
4604  }
4606 
4607 
4608  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4609  {
4610  Xyce::dout() << " (*q_e1_Equ_e1_Node_Ptr) += " << -dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b1_e1) -dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b2_e1)<< std::endl;
4611  }
4613 
4614 
4615  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4616  {
4618  }
4620 
4621 
4622  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4623  {
4624  Xyce::dout() << " (*q_b1_Equ_e1_Node_Ptr) += " << -dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b2_e1) -dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b1_e1)<< std::endl;
4625  }
4627 
4628 
4629  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4630  {
4632  }
4634 
4635 
4636  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4637  {
4639  }
4640  (*q_b2_Equ_e1_Node_Ptr) += -dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b2_e1);
4641 
4642 
4643  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4644  {
4645  Xyce::dout() << " (*q_b2_Equ_e1_Node_Ptr) += " << -dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b2_e1)<< std::endl;
4646  }
4648 
4649 
4650  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4651  {
4653  }
4655 
4656 
4657  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4658  {
4659  Xyce::dout() << " (*q_b2_Equ_c2_Node_Ptr) += " << -dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b2_c2) -dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c1_c2)<< std::endl;
4660  }
4662 
4663 
4664  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4665  {
4667  }
4668  (*q_s_Equ_s_Node_Ptr) += +dynamicContributions[admsNodeID_s].dx(admsProbeID_V_s_c1);
4669 
4670 
4671  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4672  {
4673  Xyce::dout() << " (*q_s_Equ_s_Node_Ptr) += " << +dynamicContributions[admsNodeID_s].dx(admsProbeID_V_s_c1)<< std::endl;
4674  }
4675  (*q_s_Equ_c1_Node_Ptr) += -dynamicContributions[admsNodeID_s].dx(admsProbeID_V_s_c1);
4676 
4677 
4678  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4679  {
4680  Xyce::dout() << " (*q_s_Equ_c1_Node_Ptr) += " << -dynamicContributions[admsNodeID_s].dx(admsProbeID_V_s_c1)<< std::endl;
4681  }
4683 
4684 
4685  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4686  {
4687  Xyce::dout() << " (*q_b1_Equ_c4_Node_Ptr) += " << +dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c4_c1) -dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c4)<< std::endl;
4688  }
4690 
4691 
4692  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4693  {
4694  Xyce::dout() << " (*q_b1_Equ_c2_Node_Ptr) += " << -dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b2_c2) -dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c1_c2)<< std::endl;
4695  }
4697 
4698 
4699  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4700  {
4702  }
4703  (*q_b_Equ_s_Node_Ptr) += +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_s_c1);
4704 
4705 
4706  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4707  {
4708  Xyce::dout() << " (*q_b_Equ_s_Node_Ptr) += " << +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_s_c1)<< std::endl;
4709  }
4711 
4712 
4713  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4714  {
4716  }
4718 
4719 
4720  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4721  {
4722  Xyce::dout() << " (*q_b_Equ_c2_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b2_c2) -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c1_c2)<< std::endl;
4723  }
4725 
4726 
4727  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4728  {
4730  }
4731  (*q_b_Equ_e1_Node_Ptr) += -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b2_e1);
4732 
4733 
4734  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4735  {
4736  Xyce::dout() << " (*q_b_Equ_e1_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b2_e1)<< std::endl;
4737  }
4739 
4740 
4741  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4742  {
4743  Xyce::dout() << " (*q_b_Equ_c3_Node_Ptr) += " << +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c3_c1) +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c3_c4)<< std::endl;
4744  }
4746 
4747 
4748  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4749  {
4750  Xyce::dout() << " (*q_b_Equ_c4_Node_Ptr) += " << +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c4_c1) -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c3_c4)<< std::endl;
4751  }
4753 
4754 
4755  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4756  {
4757  Xyce::dout() << " (*q_b_Equ_b1_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_b1) +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b1_b2)<< std::endl;
4758  }
4760 
4761 
4762  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4763  {
4765  }
4766  (*q_b_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c);
4767 
4768 
4769  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4770  {
4771  Xyce::dout() << " (*q_b_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c)<< std::endl;
4772  }
4773  (*q_c1_Equ_s_Node_Ptr) += +dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_s_c1);
4774 
4775 
4776  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4777  {
4778  Xyce::dout() << " (*q_c1_Equ_s_Node_Ptr) += " << +dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_s_c1)<< std::endl;
4779  }
4781 
4782 
4783  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4784  {
4785  Xyce::dout() << " (*q_b1_Equ_c3_Node_Ptr) += " << +dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c1) +dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_c3_c4)<< std::endl;
4786  }
4788 
4789 
4790  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4791  {
4792  Xyce::dout() << " (*q_b2_Equ_c3_Node_Ptr) += " << +dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c1) +dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c4)<< std::endl;
4793  }
4795 
4796 
4797  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4798  {
4799  Xyce::dout() << " (*q_b2_Equ_c4_Node_Ptr) += " << +dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c4_c1) -dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_c3_c4)<< std::endl;
4800  }
4802 
4803 
4804  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4805  {
4806  Xyce::dout() << " (*q_b1_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_b1)<< std::endl;
4807  }
4809 
4810 
4811  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4812  {
4813  Xyce::dout() << " (*q_b2_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_b1)<< std::endl;
4814  }
4816 
4817 
4818  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4819  {
4820  Xyce::dout() << " (*q_b2_Equ_b1_Node_Ptr) += " << -dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_b1) +dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b1_b2)<< std::endl;
4821  }
4822  (*q_b1_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_c);
4823 
4824 
4825  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4826  {
4827  Xyce::dout() << " (*q_b1_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_b1].dx(admsProbeID_V_b_c)<< std::endl;
4828  }
4829  (*q_b2_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_c);
4830 
4831 
4832  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4833  {
4834  Xyce::dout() << " (*q_b2_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_b2].dx(admsProbeID_V_b_c)<< std::endl;
4835  }
4837 
4838 
4839  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4840  {
4841  Xyce::dout() << " (*q_c2_Equ_c3_Node_Ptr) += " << +dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c1) +dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c4)<< std::endl;
4842  }
4844 
4845 
4846  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4847  {
4848  Xyce::dout() << " (*q_c2_Equ_c4_Node_Ptr) += " << +dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c4_c1) -dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_c3_c4)<< std::endl;
4849  }
4851 
4852 
4853  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4854  {
4855  Xyce::dout() << " (*q_c2_Equ_b1_Node_Ptr) += " << -dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_b1) +dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b1_b2)<< std::endl;
4856  }
4858 
4859 
4860  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4861  {
4862  Xyce::dout() << " (*q_c2_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_b1)<< std::endl;
4863  }
4864  (*q_c2_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_c);
4865 
4866 
4867  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4868  {
4869  Xyce::dout() << " (*q_c2_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_c2].dx(admsProbeID_V_b_c)<< std::endl;
4870  }
4871  (*q_e_Equ_e_Node_Ptr) += -dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e);
4872 
4873 
4874  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4875  {
4876  Xyce::dout() << " (*q_e_Equ_e_Node_Ptr) += " << -dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e)<< std::endl;
4877  }
4879 
4880 
4881  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4882  {
4883  Xyce::dout() << " (*q_e1_Equ_c3_Node_Ptr) += " << +dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c1) +dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c4)<< std::endl;
4884  }
4886 
4887 
4888  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4889  {
4890  Xyce::dout() << " (*q_e1_Equ_c4_Node_Ptr) += " << +dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c4_c1) -dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_c3_c4)<< std::endl;
4891  }
4893 
4894 
4895  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4896  {
4897  Xyce::dout() << " (*q_e1_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_b1)<< std::endl;
4898  }
4899  (*q_e1_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_c);
4900 
4901 
4902  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4903  {
4904  Xyce::dout() << " (*q_e1_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_e1].dx(admsProbeID_V_b_c)<< std::endl;
4905  }
4906  (*q_b_Equ_e_Node_Ptr) += -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e);
4907 
4908 
4909  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4910  {
4911  Xyce::dout() << " (*q_b_Equ_e_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e)<< std::endl;
4912  }
4913  (*q_e_Equ_b_Node_Ptr) += +dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e);
4914 
4915 
4916  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4917  {
4918  Xyce::dout() << " (*q_e_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e)<< std::endl;
4919  }
4920  (*q_c_Equ_b_Node_Ptr) += +dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c);
4921 
4922 
4923  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4924  {
4925  Xyce::dout() << " (*q_c_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c)<< std::endl;
4926  }
4927  (*q_c_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c);
4928 
4929 
4930  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4931  {
4932  Xyce::dout() << " (*q_c_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c)<< std::endl;
4933  }
4934  (*q_c3_Equ_s_Node_Ptr) += +dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_s_c1);
4935 
4936 
4937  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4938  {
4939  Xyce::dout() << " (*q_c3_Equ_s_Node_Ptr) += " << +dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_s_c1)<< std::endl;
4940  }
4942 
4943 
4944  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4945  {
4947  }
4949 
4950 
4951  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4952  {
4953  Xyce::dout() << " (*q_c3_Equ_c2_Node_Ptr) += " << -dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b2_c2) -dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c1_c2)<< std::endl;
4954  }
4956 
4957 
4958  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4959  {
4961  }
4962  (*q_c3_Equ_e1_Node_Ptr) += -dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b2_e1);
4963 
4964 
4965  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4966  {
4967  Xyce::dout() << " (*q_c3_Equ_e1_Node_Ptr) += " << -dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b2_e1)<< std::endl;
4968  }
4970 
4971 
4972  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4973  {
4974  Xyce::dout() << " (*q_c3_Equ_c3_Node_Ptr) += " << +dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c1) +dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c4)<< std::endl;
4975  }
4977 
4978 
4979  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4980  {
4981  Xyce::dout() << " (*q_c3_Equ_c4_Node_Ptr) += " << +dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c4_c1) -dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_c3_c4)<< std::endl;
4982  }
4984 
4985 
4986  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4987  {
4988  Xyce::dout() << " (*q_c3_Equ_b1_Node_Ptr) += " << -dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_b1) +dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b1_b2)<< std::endl;
4989  }
4991 
4992 
4993  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
4994  {
4995  Xyce::dout() << " (*q_c3_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_b1)<< std::endl;
4996  }
4997  (*q_c3_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_c);
4998 
4999 
5000  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5001  {
5002  Xyce::dout() << " (*q_c3_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_c3].dx(admsProbeID_V_b_c)<< std::endl;
5003  }
5005 
5006 
5007  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5008  {
5009  Xyce::dout() << " (*q_c4_Equ_c4_Node_Ptr) += " << -dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c4) +dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c4_c1)<< std::endl;
5010  }
5012 
5013 
5014  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5015  {
5017  }
5019 
5020 
5021  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5022  {
5023  Xyce::dout() << " (*q_c1_Equ_c4_Node_Ptr) += " << -dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c4) +dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c4_c1)<< std::endl;
5024  }
5026 
5027 
5028  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5029  {
5031  }
5032  (*q_c4_Equ_e1_Node_Ptr) += -dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b2_e1);
5033 
5034 
5035  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5036  {
5037  Xyce::dout() << " (*q_c4_Equ_e1_Node_Ptr) += " << -dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b2_e1)<< std::endl;
5038  }
5040 
5041 
5042  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5043  {
5044  Xyce::dout() << " (*q_c4_Equ_c2_Node_Ptr) += " << -dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b2_c2) -dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c1_c2)<< std::endl;
5045  }
5047 
5048 
5049  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5050  {
5051  Xyce::dout() << " (*q_c4_Equ_b1_Node_Ptr) += " << -dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_b1) +dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b1_b2)<< std::endl;
5052  }
5054 
5055 
5056  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5057  {
5058  Xyce::dout() << " (*q_c4_Equ_c3_Node_Ptr) += " << +dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c1) +dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_c3_c4)<< std::endl;
5059  }
5060  (*q_c1_Equ_e1_Node_Ptr) += -dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b2_e1);
5061 
5062 
5063  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5064  {
5065  Xyce::dout() << " (*q_c1_Equ_e1_Node_Ptr) += " << -dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b2_e1)<< std::endl;
5066  }
5068 
5069 
5070  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5071  {
5072  Xyce::dout() << " (*q_c1_Equ_b1_Node_Ptr) += " << -dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_b1) +dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b1_b2)<< std::endl;
5073  }
5075 
5076 
5077  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5078  {
5079  Xyce::dout() << " (*q_c1_Equ_c3_Node_Ptr) += " << +dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c1) +dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_c3_c4)<< std::endl;
5080  }
5081  (*q_c4_Equ_s_Node_Ptr) += +dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_s_c1);
5082 
5083 
5084  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5085  {
5086  Xyce::dout() << " (*q_c4_Equ_s_Node_Ptr) += " << +dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_s_c1)<< std::endl;
5087  }
5089 
5090 
5091  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5092  {
5093  Xyce::dout() << " (*q_c4_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_b1)<< std::endl;
5094  }
5095  (*q_c4_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_c);
5096 
5097 
5098  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5099  {
5100  Xyce::dout() << " (*q_c4_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_c4].dx(admsProbeID_V_b_c)<< std::endl;
5101  }
5103 
5104 
5105  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5106  {
5107  Xyce::dout() << " (*q_c1_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_b1)<< std::endl;
5108  }
5109  (*q_c1_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_c);
5110 
5111 
5112  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
5113  {
5114  Xyce::dout() << " (*q_c1_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_c1].dx(admsProbeID_V_b_c)<< std::endl;
5115  }
5116 
5117 
5118  return bsuccess;
5119 }
5120 
5121 //-----------------------------------------------------------------------------
5122 // Function : Instance::updateTemperature
5123 // Purpose : Set temperature and update any parameters that depend on it
5124 // Special Notes : In Xyce ADMS, we'll simply copy the temperature, which is
5125 // in Kelvin, to our "admsTemperature" variable, which needs
5126 // to be in Celsius.
5127 // Scope : public
5128 // Creator : admsXml
5129 // Creation Date :
5130 //-----------------------------------------------------------------------------
5131 bool Instance::updateTemperature(const double & temperatureTemp)
5132 {
5133 
5134  admsTemperature = temperatureTemp;
5135  adms_vt_nom = adms_vt(temperatureTemp);
5136 
5137  return true;
5138 }
5139 
5140 // Class Model
5141 //-----------------------------------------------------------------------------
5142 // Function : Model::processParams
5143 // Purpose :
5144 // Special Notes :
5145 // Scope : public
5146 // Creator : admsXml
5147 // Creation Date :
5148 //-----------------------------------------------------------------------------
5150 {
5151 
5152  // Now we need to check that any parameters are within their ranges as
5153  // specified in the verilog:
5154 
5155  // Parameter LEVEL : [ 504, 505 [
5156  if ( (!((LEVEL >=504 && LEVEL <505 ))) )
5157  {
5158  UserError0(*this) << "ADMSbjt504va: Parameter LEVEL value " << LEVEL << " out of range [ 504, 505 [";
5159  }
5160 
5161  // Parameter TREF : [ (-273.0), (+inf) [
5162  if ( (!((TREF >=(-273.0)))) )
5163  {
5164  UserError0(*this) << "ADMSbjt504va: Parameter TREF value " << TREF << " out of range [ (-273.0), (+inf) [";
5165  }
5166 
5167  // Parameter EXMOD : [ 0, 2 ]
5168  if ( (!((EXMOD >=0 && EXMOD <=2 ))) )
5169  {
5170  UserError0(*this) << "ADMSbjt504va: Parameter EXMOD value " << EXMOD << " out of range [ 0, 2 ]";
5171  }
5172 
5173  // Parameter EXPHI : [ 0, 1 ]
5174  if ( (!((EXPHI >=0 && EXPHI <=1 ))) )
5175  {
5176  UserError0(*this) << "ADMSbjt504va: Parameter EXPHI value " << EXPHI << " out of range [ 0, 1 ]";
5177  }
5178 
5179  // Parameter EXAVL : [ 0, 1 ]
5180  if ( (!((EXAVL >=0 && EXAVL <=1 ))) )
5181  {
5182  UserError0(*this) << "ADMSbjt504va: Parameter EXAVL value " << EXAVL << " out of range [ 0, 1 ]";
5183  }
5184 
5185  // Parameter EXSUB : [ 0, 1 ]
5186  if ( (!((EXSUB >=0 && EXSUB <=1 ))) )
5187  {
5188  UserError0(*this) << "ADMSbjt504va: Parameter EXSUB value " << EXSUB << " out of range [ 0, 1 ]";
5189  }
5190 
5191  // Parameter IS : ] 0.0, (+inf) [
5192  if ( (!((IS >0.0))) )
5193  {
5194  UserError0(*this) << "ADMSbjt504va: Parameter IS value " << IS << " out of range ] 0.0, (+inf) [";
5195  }
5196 
5197  // Parameter IK : [ 1.0*1.0e-12, (+inf) [
5198  if ( (!((IK >=1.0*1.0e-12))) )
5199  {
5200  UserError0(*this) << "ADMSbjt504va: Parameter IK value " << IK << " out of range [ 1.0*1.0e-12, (+inf) [";
5201  }
5202 
5203  // Parameter VER : [ 0.01, (+inf) [
5204  if ( (!((VER >=0.01))) )
5205  {
5206  UserError0(*this) << "ADMSbjt504va: Parameter VER value " << VER << " out of range [ 0.01, (+inf) [";
5207  }
5208 
5209  // Parameter VEF : [ 0.01, (+inf) [
5210  if ( (!((VEF >=0.01))) )
5211  {
5212  UserError0(*this) << "ADMSbjt504va: Parameter VEF value " << VEF << " out of range [ 0.01, (+inf) [";
5213  }
5214 
5215  // Parameter BF : [ 0.1*1.0e-3, (+inf) [
5216  if ( (!((BF >=0.1*1.0e-3))) )
5217  {
5218  UserError0(*this) << "ADMSbjt504va: Parameter BF value " << BF << " out of range [ 0.1*1.0e-3, (+inf) [";
5219  }
5220 
5221  // Parameter IBF : [ 0.0, (+inf) [
5222  if ( (!((IBF >=0.0))) )
5223  {
5224  UserError0(*this) << "ADMSbjt504va: Parameter IBF value " << IBF << " out of range [ 0.0, (+inf) [";
5225  }
5226 
5227  // Parameter MLF : [ 0.1, (+inf) [
5228  if ( (!((MLF >=0.1))) )
5229  {
5230  UserError0(*this) << "ADMSbjt504va: Parameter MLF value " << MLF << " out of range [ 0.1, (+inf) [";
5231  }
5232 
5233  // Parameter XIBI : [ 0.0, 1.0 ]
5234  if ( (!((XIBI >=0.0 && XIBI <=1.0 ))) )
5235  {
5236  UserError0(*this) << "ADMSbjt504va: Parameter XIBI value " << XIBI << " out of range [ 0.0, 1.0 ]";
5237  }
5238 
5239  // Parameter IZEB : [ 0.0, (+inf) [
5240  if ( (!((IZEB >=0.0))) )
5241  {
5242  UserError0(*this) << "ADMSbjt504va: Parameter IZEB value " << IZEB << " out of range [ 0.0, (+inf) [";
5243  }
5244 
5245  // Parameter NZEB : [ 0.0, (+inf) [
5246  if ( (!((NZEB >=0.0))) )
5247  {
5248  UserError0(*this) << "ADMSbjt504va: Parameter NZEB value " << NZEB << " out of range [ 0.0, (+inf) [";
5249  }
5250 
5251  // Parameter BRI : [ 1.0e-4, (+inf) [
5252  if ( (!((BRI >=1.0e-4))) )
5253  {
5254  UserError0(*this) << "ADMSbjt504va: Parameter BRI value " << BRI << " out of range [ 1.0e-4, (+inf) [";
5255  }
5256 
5257  // Parameter IBR : [ 0.0, (+inf) [
5258  if ( (!((IBR >=0.0))) )
5259  {
5260  UserError0(*this) << "ADMSbjt504va: Parameter IBR value " << IBR << " out of range [ 0.0, (+inf) [";
5261  }
5262 
5263  // Parameter XEXT : [ 0.0, 1.0 ]
5264  if ( (!((XEXT >=0.0 && XEXT <=1.0 ))) )
5265  {
5266  UserError0(*this) << "ADMSbjt504va: Parameter XEXT value " << XEXT << " out of range [ 0.0, 1.0 ]";
5267  }
5268 
5269  // Parameter WAVL : [ 1.0*1.0e-9, (+inf) [
5270  if ( (!((WAVL >=1.0*1.0e-9))) )
5271  {
5272  UserError0(*this) << "ADMSbjt504va: Parameter WAVL value " << WAVL << " out of range [ 1.0*1.0e-9, (+inf) [";
5273  }
5274 
5275  // Parameter VAVL : [ 0.01, (+inf) [
5276  if ( (!((VAVL >=0.01))) )
5277  {
5278  UserError0(*this) << "ADMSbjt504va: Parameter VAVL value " << VAVL << " out of range [ 0.01, (+inf) [";
5279  }
5280 
5281  // Parameter SFH : [ 0.0, (+inf) [
5282  if ( (!((SFH >=0.0))) )
5283  {
5284  UserError0(*this) << "ADMSbjt504va: Parameter SFH value " << SFH << " out of range [ 0.0, (+inf) [";
5285  }
5286 
5287  // Parameter RE : [ 1.0*1.0e-3, (+inf) [
5288  if ( (!((RE >=1.0*1.0e-3))) )
5289  {
5290  UserError0(*this) << "ADMSbjt504va: Parameter RE value " << RE << " out of range [ 1.0*1.0e-3, (+inf) [";
5291  }
5292 
5293  // Parameter RBC : [ 1.0*1.0e-3, (+inf) [
5294  if ( (!((RBC >=1.0*1.0e-3))) )
5295  {
5296  UserError0(*this) << "ADMSbjt504va: Parameter RBC value " << RBC << " out of range [ 1.0*1.0e-3, (+inf) [";
5297  }
5298 
5299  // Parameter RBV : [ 1.0*1.0e-3, (+inf) [
5300  if ( (!((RBV >=1.0*1.0e-3))) )
5301  {
5302  UserError0(*this) << "ADMSbjt504va: Parameter RBV value " << RBV << " out of range [ 1.0*1.0e-3, (+inf) [";
5303  }
5304 
5305  // Parameter RCC : [ 1.0*1.0e-3, (+inf) [
5306  if ( (!((RCC >=1.0*1.0e-3))) )
5307  {
5308  UserError0(*this) << "ADMSbjt504va: Parameter RCC value " << RCC << " out of range [ 1.0*1.0e-3, (+inf) [";
5309  }
5310 
5311  // Parameter RCV : [ 1.0*1.0e-3, (+inf) [
5312  if ( (!((RCV >=1.0*1.0e-3))) )
5313  {
5314  UserError0(*this) << "ADMSbjt504va: Parameter RCV value " << RCV << " out of range [ 1.0*1.0e-3, (+inf) [";
5315  }
5316 
5317  // Parameter SCRCV : [ 1.0*1.0e-3, (+inf) [
5318  if ( (!((SCRCV >=1.0*1.0e-3))) )
5319  {
5320  UserError0(*this) << "ADMSbjt504va: Parameter SCRCV value " << SCRCV << " out of range [ 1.0*1.0e-3, (+inf) [";
5321  }
5322 
5323  // Parameter IHC : [ 1.0*1.0e-12, (+inf) [
5324  if ( (!((IHC >=1.0*1.0e-12))) )
5325  {
5326  UserError0(*this) << "ADMSbjt504va: Parameter IHC value " << IHC << " out of range [ 1.0*1.0e-12, (+inf) [";
5327  }
5328 
5329  // Parameter AXI : [ 0.02, (+inf) [
5330  if ( (!((AXI >=0.02))) )
5331  {
5332  UserError0(*this) << "ADMSbjt504va: Parameter AXI value " << AXI << " out of range [ 0.02, (+inf) [";
5333  }
5334 
5335  // Parameter CJE : [ 0.0, (+inf) [
5336  if ( (!((CJE >=0.0))) )
5337  {
5338  UserError0(*this) << "ADMSbjt504va: Parameter CJE value " << CJE << " out of range [ 0.0, (+inf) [";
5339  }
5340 
5341  // Parameter VDE : [ 0.05, (+inf) [
5342  if ( (!((VDE >=0.05))) )
5343  {
5344  UserError0(*this) << "ADMSbjt504va: Parameter VDE value " << VDE << " out of range [ 0.05, (+inf) [";
5345  }
5346 
5347  // Parameter PE : [ 0.01, 0.99 [
5348  if ( (!((PE >=0.01 && PE <0.99 ))) )
5349  {
5350  UserError0(*this) << "ADMSbjt504va: Parameter PE value " << PE << " out of range [ 0.01, 0.99 [";
5351  }
5352 
5353  // Parameter XCJE : [ 0.0, 1.0 ]
5354  if ( (!((XCJE >=0.0 && XCJE <=1.0 ))) )
5355  {
5356  UserError0(*this) << "ADMSbjt504va: Parameter XCJE value " << XCJE << " out of range [ 0.0, 1.0 ]";
5357  }
5358 
5359  // Parameter CBEO : [ 0.0, (+inf) [
5360  if ( (!((CBEO >=0.0))) )
5361  {
5362  UserError0(*this) << "ADMSbjt504va: Parameter CBEO value " << CBEO << " out of range [ 0.0, (+inf) [";
5363  }
5364 
5365  // Parameter CJC : [ 0.0, (+inf) [
5366  if ( (!((CJC >=0.0))) )
5367  {
5368  UserError0(*this) << "ADMSbjt504va: Parameter CJC value " << CJC << " out of range [ 0.0, (+inf) [";
5369  }
5370 
5371  // Parameter VDC : [ 0.05, (+inf) [
5372  if ( (!((VDC >=0.05))) )
5373  {
5374  UserError0(*this) << "ADMSbjt504va: Parameter VDC value " << VDC << " out of range [ 0.05, (+inf) [";
5375  }
5376 
5377  // Parameter PC : [ 0.01, 0.99 [
5378  if ( (!((PC >=0.01 && PC <0.99 ))) )
5379  {
5380  UserError0(*this) << "ADMSbjt504va: Parameter PC value " << PC << " out of range [ 0.01, 0.99 [";
5381  }
5382 
5383  // Parameter XP : [ 0.0, 0.99 [
5384  if ( (!((XP >=0.0 && XP <0.99 ))) )
5385  {
5386  UserError0(*this) << "ADMSbjt504va: Parameter XP value " << XP << " out of range [ 0.0, 0.99 [";
5387  }
5388 
5389  // Parameter MC : [ 0.0, 1.0 [
5390  if ( (!((MC >=0.0 && MC <1.0 ))) )
5391  {
5392  UserError0(*this) << "ADMSbjt504va: Parameter MC value " << MC << " out of range [ 0.0, 1.0 [";
5393  }
5394 
5395  // Parameter XCJC : [ 0.0, 1.0 ]
5396  if ( (!((XCJC >=0.0 && XCJC <=1.0 ))) )
5397  {
5398  UserError0(*this) << "ADMSbjt504va: Parameter XCJC value " << XCJC << " out of range [ 0.0, 1.0 ]";
5399  }
5400 
5401  // Parameter RCBLX : [ 0.0, (+inf) [
5402  if ( (!((RCBLX >=0.0))) )
5403  {
5404  UserError0(*this) << "ADMSbjt504va: Parameter RCBLX value " << RCBLX << " out of range [ 0.0, (+inf) [";
5405  }
5406 
5407  // Parameter RCBLI : [ 0.0, (+inf) [
5408  if ( (!((RCBLI >=0.0))) )
5409  {
5410  UserError0(*this) << "ADMSbjt504va: Parameter RCBLI value " << RCBLI << " out of range [ 0.0, (+inf) [";
5411  }
5412 
5413  // Parameter CBCO : [ 0.0, (+inf) [
5414  if ( (!((CBCO >=0.0))) )
5415  {
5416  UserError0(*this) << "ADMSbjt504va: Parameter CBCO value " << CBCO << " out of range [ 0.0, (+inf) [";
5417  }
5418 
5419  // Parameter MTAU : [ 0.1, (+inf) [
5420  if ( (!((MTAU >=0.1))) )
5421  {
5422  UserError0(*this) << "ADMSbjt504va: Parameter MTAU value " << MTAU << " out of range [ 0.1, (+inf) [";
5423  }
5424 
5425  // Parameter TAUE : [ 0.0, (+inf) [
5426  if ( (!((TAUE >=0.0))) )
5427  {
5428  UserError0(*this) << "ADMSbjt504va: Parameter TAUE value " << TAUE << " out of range [ 0.0, (+inf) [";
5429  }
5430 
5431  // Parameter TAUB : ] 0.0, (+inf) [
5432  if ( (!((TAUB >0.0))) )
5433  {
5434  UserError0(*this) << "ADMSbjt504va: Parameter TAUB value " << TAUB << " out of range ] 0.0, (+inf) [";
5435  }
5436 
5437  // Parameter TEPI : [ 0.0, (+inf) [
5438  if ( (!((TEPI >=0.0))) )
5439  {
5440  UserError0(*this) << "ADMSbjt504va: Parameter TEPI value " << TEPI << " out of range [ 0.0, (+inf) [";
5441  }
5442 
5443  // Parameter TAUR : [ 0.0, (+inf) [
5444  if ( (!((TAUR >=0.0))) )
5445  {
5446  UserError0(*this) << "ADMSbjt504va: Parameter TAUR value " << TAUR << " out of range [ 0.0, (+inf) [";
5447  }
5448 
5449  // Parameter XREC : [ 0.0, (+inf) [
5450  if ( (!((XREC >=0.0))) )
5451  {
5452  UserError0(*this) << "ADMSbjt504va: Parameter XREC value " << XREC << " out of range [ 0.0, (+inf) [";
5453  }
5454 
5455  // Parameter ACBL : [ 0.0, (+inf) [
5456  if ( (!((ACBL >=0.0))) )
5457  {
5458  UserError0(*this) << "ADMSbjt504va: Parameter ACBL value " << ACBL << " out of range [ 0.0, (+inf) [";
5459  }
5460 
5461  // Parameter VGB : [ 0.1, (+inf) [
5462  if ( (!((VGB >=0.1))) )
5463  {
5464  UserError0(*this) << "ADMSbjt504va: Parameter VGB value " << VGB << " out of range [ 0.1, (+inf) [";
5465  }
5466 
5467  // Parameter VGC : [ 0.1, (+inf) [
5468  if ( (!((VGC >=0.1))) )
5469  {
5470  UserError0(*this) << "ADMSbjt504va: Parameter VGC value " << VGC << " out of range [ 0.1, (+inf) [";
5471  }
5472 
5473  // Parameter VGJ : [ 0.1, (+inf) [
5474  if ( (!((VGJ >=0.1))) )
5475  {
5476  UserError0(*this) << "ADMSbjt504va: Parameter VGJ value " << VGJ << " out of range [ 0.1, (+inf) [";
5477  }
5478 
5479  // Parameter VGZEB : [ 0.1, (+inf) [
5480  if ( (!((VGZEB >=0.1))) )
5481  {
5482  UserError0(*this) << "ADMSbjt504va: Parameter VGZEB value " << VGZEB << " out of range [ 0.1, (+inf) [";
5483  }
5484 
5485  // Parameter AVGEB : ] (-inf) (+inf) [
5486 
5487  // Parameter TVGEB : [ 0.0, (+inf) [
5488  if ( (!((TVGEB >=0.0))) )
5489  {
5490  UserError0(*this) << "ADMSbjt504va: Parameter TVGEB value " << TVGEB << " out of range [ 0.0, (+inf) [";
5491  }
5492 
5493  // Parameter AF : [ 0.01, (+inf) [
5494  if ( (!((AF >=0.01))) )
5495  {
5496  UserError0(*this) << "ADMSbjt504va: Parameter AF value " << AF << " out of range [ 0.01, (+inf) [";
5497  }
5498 
5499  // Parameter KF : [ 0.0, (+inf) [
5500  if ( (!((KF >=0.0))) )
5501  {
5502  UserError0(*this) << "ADMSbjt504va: Parameter KF value " << KF << " out of range [ 0.0, (+inf) [";
5503  }
5504 
5505  // Parameter KFN : [ 0.0, (+inf) [
5506  if ( (!((KFN >=0.0))) )
5507  {
5508  UserError0(*this) << "ADMSbjt504va: Parameter KFN value " << KFN << " out of range [ 0.0, (+inf) [";
5509  }
5510 
5511  // Parameter KAVL : [ 0, 1 ]
5512  if ( (!((KAVL >=0 && KAVL <=1 ))) )
5513  {
5514  UserError0(*this) << "ADMSbjt504va: Parameter KAVL value " << KAVL << " out of range [ 0, 1 ]";
5515  }
5516 
5517  // Parameter ISS : [ 0.0, (+inf) [
5518  if ( (!((ISS >=0.0))) )
5519  {
5520  UserError0(*this) << "ADMSbjt504va: Parameter ISS value " << ISS << " out of range [ 0.0, (+inf) [";
5521  }
5522 
5523  // Parameter ICSS : ] (-inf) (+inf) [
5524 
5525  // Parameter IKS : [ 1.0*1.0e-12, (+inf) [
5526  if ( (!((IKS >=1.0*1.0e-12))) )
5527  {
5528  UserError0(*this) << "ADMSbjt504va: Parameter IKS value " << IKS << " out of range [ 1.0*1.0e-12, (+inf) [";
5529  }
5530 
5531  // Parameter CJS : [ 0, (+inf) [
5532  if ( (!((CJS >=0))) )
5533  {
5534  UserError0(*this) << "ADMSbjt504va: Parameter CJS value " << CJS << " out of range [ 0, (+inf) [";
5535  }
5536 
5537  // Parameter VDS : ] 0.05, (+inf) [
5538  if ( (!((VDS >0.05))) )
5539  {
5540  UserError0(*this) << "ADMSbjt504va: Parameter VDS value " << VDS << " out of range ] 0.05, (+inf) [";
5541  }
5542 
5543  // Parameter PS : ] 0.01, 0.99 [
5544  if ( (!((PS >0.01 && PS <0.99 ))) )
5545  {
5546  UserError0(*this) << "ADMSbjt504va: Parameter PS value " << PS << " out of range ] 0.01, 0.99 [";
5547  }
5548 
5549  // Parameter VGS : [ 0.1, (+inf) [
5550  if ( (!((VGS >=0.1))) )
5551  {
5552  UserError0(*this) << "ADMSbjt504va: Parameter VGS value " << VGS << " out of range [ 0.1, (+inf) [";
5553  }
5554 
5555  // Parameter MULT : ] 0.0, (+inf) [
5556  if ( (!((MULT >0.0))) )
5557  {
5558  UserError0(*this) << "ADMSbjt504va: Parameter MULT value " << MULT << " out of range ] 0.0, (+inf) [";
5559  }
5560 
5561  // Parameter TYPE : [ (-1), 1 ]
5562  if ( (!((TYPE >=(-1) && TYPE <=1 ))) )
5563  {
5564  UserError0(*this) << "ADMSbjt504va: Parameter TYPE value " << TYPE << " out of range [ (-1), 1 ]";
5565  }
5566 
5567  // Parameter GMIN : ] 0, 1e-10 ]
5568  if ( (!((GMIN >0 && GMIN <=1e-10 ))) )
5569  {
5570  UserError0(*this) << "ADMSbjt504va: Parameter GMIN value " << GMIN << " out of range ] 0, 1e-10 ]";
5571  }
5572 
5573 
5574  // and of course, this routine is where we should put the initial_model
5575  // stuff
5576  double RCCin_TM;
5577  double RCCex_TM;
5578  double Tk300;
5579  double ICSS_T;
5580  double ISS_T;
5581  double IZEB_T;
5582  double y;
5583  double tempx;
5584  double IBR_T;
5585  double IBF_T;
5586  double IK_T;
5587  double RCV_T;
5588  double RCCin_T;
5589  double RCCex_T;
5590  double RCCxx_T;
5591  double RBC_T;
5592  double RBV_T;
5593  double RE_T;
5594  double CJC_T;
5595  double CJCscaleINV;
5596  double CJCscale;
5597  double CJS_T;
5598  double CJE_T;
5599  double CJE_T_div_CJE;
5600  double UdsT;
5601  double UdcT;
5602  double UdeT;
5603  double lntN;
5604  double VdtINV;
5605  double VtrINV;
5606  double Vtr;
5607  double tN;
5608  double Tamb;
5609  double Vdt;
5610  double inv_VDE;
5611  double inv_VGZEB_Tr;
5612  double VGZEB_Tr;
5613  double dxa;
5614  double VGZEBOK;
5615  double Trk;
5616  double invMULT;
5617  double Bn;
5618  //Begin block initial_model
5619  {
5620  if ((TYPE==1))
5621  {
5622  An = 7.03e7;
5623  Bn = 1.23e8;
5624  }
5625  else
5626  {
5627  An = 1.58e8;
5628  Bn = 2.04e8;
5629  }
5630  Xext1 = (1.0-XEXT);
5631  CBEO_M = (CBEO*MULT);
5632  CBCO_M = (CBCO*MULT);
5633  invMULT = (1.0/MULT);
5634  SCRCV_M = (SCRCV*invMULT);
5635  KF_M = (KF*pow(MULT,(1.0-AF)));
5636  KFN_M = (KFN*pow(MULT,(1.0-((2.0*(MLF-1.0))+(AF*(2.0-MLF))))));
5637  pow2_2mPE = pow(2.0,(2.0-PE));
5638  pow2_PEm2 = (1.0/pow2_2mPE);
5639  Trk = (TREF+273.15);
5640  {
5641  //Block-local variables for block
5642  double dxa;
5643  //End of Block-local variables
5644  dxa = (((VGZEB+(((AVGEB*Trk)*Trk)/(Trk+TVGEB)))-0.05)/0.1);
5645  if (((VGZEB+(((AVGEB*Trk)*Trk)/(Trk+TVGEB)))<0.05))
5646  {
5647  VGZEBOK = (0.05+(0.1*log((1.0+exp(dxa)))));
5648  }
5649  else
5650  {
5651  VGZEBOK = ((VGZEB+(((AVGEB*Trk)*Trk)/(Trk+TVGEB)))+(0.1*log((1.0+exp((-dxa))))));
5652  }
5653  VGZEBOK = VGZEBOK;
5654  }
5655  VGZEB_Tr = VGZEB;
5656  inv_VGZEB_Tr = (1.0/VGZEB_Tr);
5657  inv_VDE = (1.0/VDE);
5658  Vdt = 0.0;
5659  Tk = ((admsModTemp+DTA)+Vdt);
5660  Tamb = (admsModTemp+DTA);
5661  tN = (Tk/Trk);
5662  Vt = (8.61708691805812512584e-5*Tk);
5663  Vtr = (8.61708691805812512584e-5*Trk);
5664  VtINV = (1.0/Vt);
5665  VtrINV = (1.0/Vtr);
5666  VdtINV = (VtINV-VtrINV);
5667  lntN = log(tN);
5668  {
5669  //Block-local variables for block
5670  double dxa;
5671  //End of Block-local variables
5672  dxa = (((VGZEBOK-(((AVGEB*Tk)*Tk)/(Tk+TVGEB)))-0.05)/0.1);
5673  if (((VGZEBOK-(((AVGEB*Tk)*Tk)/(Tk+TVGEB)))<0.05))
5674  {
5675  VGZEB_T = (0.05+(0.1*log((1.0+exp(dxa)))));
5676  }
5677  else
5678  {
5679  VGZEB_T = ((VGZEBOK-(((AVGEB*Tk)*Tk)/(Tk+TVGEB)))+(0.1*log((1.0+exp((-dxa))))));
5680  }
5681  VGZEB_T = VGZEB_T;
5682  }
5683  UdeT = (((((-3.0)*Vt)*log(tN))+(VDE*tN))+((1.0-tN)*VGB));
5684  {
5685  //Block-local variables for block
5686  double dxa;
5687  //End of Block-local variables
5688  dxa = ((0.05-UdeT)/Vt);
5689  if ((0.05<UdeT))
5690  {
5691  VDE_T = (UdeT+(Vt*log((1.0+exp(dxa)))));
5692  }
5693  else
5694  {
5695  VDE_T = (0.05+(Vt*log((1.0+exp((-dxa))))));
5696  }
5697  VDE_T = VDE_T;
5698  }
5699  UdcT = (((((-3.0)*Vt)*log(tN))+(VDC*tN))+((1.0-tN)*VGC));
5700  {
5701  //Block-local variables for block
5702  double dxa;
5703  //End of Block-local variables
5704  dxa = ((0.05-UdcT)/Vt);
5705  if ((0.05<UdcT))
5706  {
5707  VDC_T = (UdcT+(Vt*log((1.0+exp(dxa)))));
5708  }
5709  else
5710  {
5711  VDC_T = (0.05+(Vt*log((1.0+exp((-dxa))))));
5712  }
5713  VDC_T = VDC_T;
5714  }
5715  UdsT = (((((-3.0)*Vt)*log(tN))+(VDS*tN))+((1.0-tN)*VGS));
5716  {
5717  //Block-local variables for block
5718  double dxa;
5719  //End of Block-local variables
5720  dxa = ((0.05-UdsT)/Vt);
5721  if ((0.05<UdsT))
5722  {
5723  VDS_T = (UdsT+(Vt*log((1.0+exp(dxa)))));
5724  }
5725  else
5726  {
5727  VDS_T = (0.05+(Vt*log((1.0+exp((-dxa))))));
5728  }
5729  VDS_T = VDS_T;
5730  }
5731  inv_VDE_T = (1.0/VDE_T);
5732  CJE_T_div_CJE = pow((VDE*inv_VDE_T),PE);
5733  CJE_T = (CJE*CJE_T_div_CJE);
5734  CJS_T = (CJS*pow((VDS/VDS_T),PS));
5735  CJCscale = (((1.0-XP)*pow((VDC/VDC_T),PC))+XP);
5736  CJCscaleINV = (1.0/CJCscale);
5737  CJC_T = (CJC*CJCscale);
5738  XP_T = (XP*CJCscaleINV);
5739  RE_T = (RE*exp((lntN*AE)));
5740  RBV_T = (RBV*exp((lntN*(AB-AQBO))));
5741  RBC_T = (RBC*exp((lntN*AEX)));
5742  RCCxx_T = (RCC*exp((lntN*AC)));
5743  RCCex_T = (RCBLX*exp((lntN*ACBL)));
5744  RCCin_T = (RCBLI*exp((lntN*ACBL)));
5745  RCV_T = (RCV*exp((lntN*AEPI)));
5746  BF_T = ((BF*exp((lntN*((AE-AB)-AQBO))))*exp(((-DVGBF)*VdtINV)));
5747  BRI_T = (BRI*exp(((-DVGBR)*VdtINV)));
5748  IS_T = ((IS*exp((lntN*(((4.0-AB)-AQBO)+DAIS))))*exp(((-VGB)*VdtINV)));
5749  IK_T = (IK*exp((lntN*(1.0-AB))));
5750  IBF_T = ((IBF*exp((lntN*(6.0-(2.0*MLF)))))*exp((((-VGJ)*VdtINV)/MLF)));
5751  IBR_T = (((IBR*tN)*tN)*exp((((-VGC)*VdtINV)/2.0)));
5752  tempx = pow((VGZEB_T*inv_VGZEB_Tr),(-0.5));
5753  y = (1.0/CJE_T_div_CJE);
5754  nZEB_T = ((((((((NZEB*VGZEB_T)*VGZEB_T)*tempx)*y)*VDE)*inv_VDE_T)*inv_VGZEB_Tr)*inv_VGZEB_Tr);
5755  IZEB_T = (((((((IZEB*tempx)*VDE_T)*VDE_T)*inv_VDE)*inv_VDE)*CJE_T_div_CJE)*exp((NZEB-nZEB_T)));
5756  tempx = exp((lntN*AQBO));
5757  VEF_T = ((VEF*tempx)*CJCscaleINV);
5758  VER_T = ((VER*tempx)*y);
5759  ISS_T = ((ISS*exp((lntN*(4.0-AS))))*exp(((-VGS)*VdtINV)));
5760  ICSS_T = ((ICSS*exp((lntN*(3.5-(0.5*ASUB)))))*exp(((-VGS)*VdtINV)));
5761  if ((ISS_T>0.0))
5762  {
5763  IKS_T = (((IKS*exp((lntN*(1.0-AS))))*(IS_T/IS))*(ISS/ISS_T));
5764  }
5765  else
5766  {
5767  IKS_T = (IKS*exp((lntN*(1.0-AS))));
5768  }
5769  TAUE_T = ((TAUE*exp((lntN*(AB-2.0))))*exp(((-DVGTE)*VdtINV)));
5770  TAUB_T = (TAUB*exp((lntN*((AQBO+AB)-1.0))));
5771  TEPI_T = (TEPI*exp((lntN*(AEPI-1.0))));
5772  TAUR_T = ((TAUR*(TAUB_T+TEPI_T))/(TAUB+TEPI));
5773  Tk300 = (Tk-300.0);
5774  if ((Tk<525.0))
5775  {
5776  BnT = (Bn*((1.0+(7.2e-4*Tk300))-((1.6e-6*Tk300)*Tk300)));
5777  }
5778  else
5779  {
5780  BnT = (Bn*1.081);
5781  }
5782  DEG_T = (DEG*exp((lntN*AQBO)));
5783  IS_TM = (IS_T*MULT);
5784  IK_TM = (IK_T*MULT);
5785  IBF_TM = (IBF_T*MULT);
5786  IBR_TM = (IBR_T*MULT);
5787  IZEB_TM = (IZEB_T*MULT);
5788  IHC_M = (IHC*MULT);
5789  ISS_TM = (ISS_T*MULT);
5790  ICSS_TM = (ICSS_T*MULT);
5791  IKS_TM = (IKS_T*MULT);
5792  CJE_TM = (CJE_T*MULT);
5793  CJC_TM = (CJC_T*MULT);
5794  CJS_TM = (CJS_T*MULT);
5795  RE_TM = (RE_T*invMULT);
5796  RBC_TM = (RBC_T*invMULT);
5797  RBV_TM = (RBV_T*invMULT);
5798  RCCxx_TM = (RCCxx_T*invMULT);
5799  RCCex_TM = (RCCex_T*invMULT);
5800  RCCin_TM = (RCCin_T*invMULT);
5801  RCV_TM = (RCV_T*invMULT);
5802  if ((RCC>0.0))
5803  {
5804  GCCxx_TM = (1.0/RCCxx_TM);
5805  }
5806  else
5807  {
5808  GCCxx_TM = 0;
5809  }
5810  if ((RCBLX>0.0))
5811  {
5812  GCCex_TM = (1.0/RCCex_TM);
5813  }
5814  else
5815  {
5816  GCCex_TM = 0;
5817  }
5818  if ((RCBLI>0.0))
5819  {
5820  GCCin_TM = (1.0/RCCin_TM);
5821  }
5822  else
5823  {
5824  GCCin_TM = 0;
5825  }
5826  }
5827  // End block initial_model
5828 
5829 
5830  return true;
5831 }
5832 //----------------------------------------------------------------------------
5833 // Function : Model::processInstanceParams
5834 // Purpose :
5835 // Special Notes :
5836 // Scope : public
5837 // Creator :
5838 // Creation Date :
5839 //----------------------------------------------------------------------------
5841 {
5842 
5843  std::vector<Instance*>::iterator iter;
5844  std::vector<Instance*>::iterator first = instanceContainer.begin();
5845  std::vector<Instance*>::iterator last = instanceContainer.end();
5846 
5847  for (iter=first; iter!=last; ++iter)
5848  {
5849  (*iter)->processParams();
5850  }
5851 
5852  return true;
5853 }
5854 
5855 //-----------------------------------------------------------------------------
5856 // Function : Model::Model
5857 // Purpose : model block constructor
5858 // Special Notes :
5859 // Scope : public
5860 // Creator :
5861 // Creation Date :
5862 //-----------------------------------------------------------------------------
5864  const Configuration & configuration,
5865  const ModelBlock & model_block,
5866  const FactoryBlock & factory_block)
5867  : DeviceModel(model_block, configuration.getModelParameters(), factory_block),
5868  LEVEL(504),
5869  TREF(25.0),
5870  DTA(0.0),
5871  EXMOD(1),
5872  EXPHI(1),
5873  EXAVL(0),
5874  EXSUB(0),
5875  IS(22.0*1.0e-18),
5876  IK(0.1),
5877  VER(2.5),
5878  VEF(44.0),
5879  BF(215.0),
5880  IBF(2.7*1.0e-15),
5881  MLF(2.0),
5882  XIBI(0.0),
5883  IZEB(0.0),
5884  NZEB(22.0),
5885  BRI(7.0),
5886  IBR(1.0*1.0e-15),
5887  VLR(0.2),
5888  XEXT(0.63),
5889  WAVL(1.1*1.0e-6),
5890  VAVL(3.0),
5891  SFH(0.3),
5892  RE(5.0),
5893  RBC(23.0),
5894  RBV(18.0),
5895  RCC(12.0),
5896  RCV(150.0),
5897  SCRCV(1250.0),
5898  IHC(4.0*1.0e-3),
5899  AXI(0.3),
5900  CJE(73.0*1.0e-15),
5901  VDE(0.95),
5902  PE(0.4),
5903  XCJE(0.4),
5904  CBEO(0.0),
5905  CJC(78.0*1.0e-15),
5906  VDC(0.68),
5907  PC(0.5),
5908  XP(0.35),
5909  MC(0.5),
5910  XCJC(32.0*1.0e-3),
5911  RCBLX(0.0),
5912  RCBLI(0.0),
5913  CBCO(0.0),
5914  MTAU(1.0),
5915  TAUE(2.0*1.0e-12),
5916  TAUB(4.2*1.0e-12),
5917  TEPI(41.0*1.0e-12),
5918  TAUR(520.0*1.0e-12),
5919  DEG(0.0),
5920  XREC(0.0),
5921  AQBO(0.3),
5922  AE(0.0),
5923  AB(1.0),
5924  AEPI(2.5),
5925  AEX(0.62),
5926  AC(2.0),
5927  ACBL(2.0),
5928  DVGBF(50.0*1.0e-3),
5929  DVGBR(45.0*1.0e-3),
5930  VGB(1.17),
5931  VGC(1.18),
5932  VGJ(1.15),
5933  VGZEB(1.15),
5934  AVGEB(4.73e-4),
5935  TVGEB(636.0),
5936  DVGTE(0.05),
5937  DAIS(0.0),
5938  AF(2.0),
5939  KF(20.0*1.0e-12),
5940  KFN(20.0*1.0e-12),
5941  KAVL(0),
5942  ISS(48.0*1.0e-18),
5943  ICSS((-1.0)),
5944  IKS(250.0*1.0e-6),
5945  CJS(315.0*1.0e-15),
5946  VDS(0.62),
5947  PS(0.34),
5948  VGS(1.20),
5949  AS(1.58),
5950  ASUB(2.0),
5951  MULT(1.0),
5952  TYPE(1),
5953  GMIN(1.0e-13),
5954  An(0.0),
5955  Tk(0.0),
5956  Vt(0.0),
5957  VtINV(0.0),
5958  VDE_T(0.0),
5959  VDC_T(0.0),
5960  XP_T(0.0),
5961  BF_T(0.0),
5962  BRI_T(0.0),
5963  IS_T(0.0),
5964  VEF_T(0.0),
5965  VER_T(0.0),
5966  nZEB_T(0.0),
5967  pow2_2mPE(0.0),
5968  pow2_PEm2(0.0),
5969  inv_VDE_T(0.0),
5970  VGZEB_T(0.0),
5971  TAUE_T(0.0),
5972  TAUB_T(0.0),
5973  TEPI_T(0.0),
5974  TAUR_T(0.0),
5975  BnT(0.0),
5976  DEG_T(0.0),
5977  VDS_T(0.0),
5978  IKS_T(0.0),
5979  IS_TM(0.0),
5980  IK_TM(0.0),
5981  IBF_TM(0.0),
5982  IBR_TM(0.0),
5983  IHC_M(0.0),
5984  IZEB_TM(0.0),
5985  CJE_TM(0.0),
5986  CJC_TM(0.0),
5987  RE_TM(0.0),
5988  RBC_TM(0.0),
5989  RBV_TM(0.0),
5990  RCV_TM(0.0),
5991  SCRCV_M(0.0),
5992  RCCxx_TM(0.0),
5993  GCCxx_TM(0.0),
5994  GCCex_TM(0.0),
5995  GCCin_TM(0.0),
5996  KF_M(0.0),
5997  KFN_M(0.0),
5998  ISS_TM(0.0),
5999  ICSS_TM(0.0),
6000  IKS_TM(0.0),
6001  CJS_TM(0.0),
6002  Xext1(0.0),
6003  CBEO_M(0.0),
6004  CBCO_M(0.0)
6005 {
6006  // Set params to constant default values (from parTable):
6007  setDefaultParams();
6008 
6009  // Set params according to .model line and constant defaults from metadata:
6010  setModParams(model_block.params);
6011 
6012  // Set any non-constant parameter defaults:
6013  // Set any parameters that were not given and whose defaults depend on other
6014  // parameters:
6015 
6016 
6017  if (!given("XYCEADMSMODTEMP"))
6018  admsModTemp=getDeviceOptions().temp.getImmutableValue<double>();
6019 
6020  // Calculate any parameters specified as expressions:
6021 
6023 
6024  // set internal model type based on model card type
6025  if (getType() == "pnp" || getType() == "PNP")
6026  TYPE = -1;
6027 
6028  // calculate dependent (ie computed) params and check for errors:
6029  processParams();
6030 }
6031 
6032 //-----------------------------------------------------------------------------
6033 // Function : Model::~Model
6034 // Purpose : destructor
6035 // Special Notes :
6036 // Scope : public
6037 // Creator :
6038 // Creation Date :
6039 //-----------------------------------------------------------------------------
6041 {
6042  std::vector<Instance*>::iterator iterI;
6043  std::vector<Instance*>::iterator firstI = instanceContainer.begin ();
6044  std::vector<Instance*>::iterator lastI = instanceContainer.end ();
6045 
6046  // loop over instances:
6047  for (iterI = firstI; iterI != lastI; ++iterI)
6048  {
6049  delete (*iterI);
6050  }
6051 }
6052 
6053 //-----------------------------------------------------------------------------
6054 // Function : Model::printOutInstances
6055 // Purpose : debugging tool.
6056 // Special Notes :
6057 // Scope : public
6058 // Creator :
6059 // Creation Date :
6060 //-----------------------------------------------------------------------------
6061 std::ostream &Model::printOutInstances(std::ostream &os) const
6062 {
6063  std::vector<Instance*>::const_iterator iter;
6064  std::vector<Instance*>::const_iterator first = instanceContainer.begin();
6065  std::vector<Instance*>::const_iterator last = instanceContainer.end();
6066 
6067  int i;
6068  os << std::endl;
6069  os << " name model name Parameters" << std::endl;
6070  for (i=0, iter=first; iter!=last; ++iter, ++i)
6071  {
6072  os << " " << i << ": " << (*iter)->getName() << " ";
6073  os << getName();
6074 
6075  os << std::endl;
6076  os << "MULT = " << (*iter)->MULT << std::endl;
6077  os << std::endl;
6078  }
6079 
6080  os << std::endl;
6081 
6082  return os;
6083 }
6084 
6085 //-----------------------------------------------------------------------------
6086 // Function : Model::forEachInstance
6087 // Purpose :
6088 // Special Notes :
6089 // Scope : public
6090 // Creator : David Baur
6091 // Creation Date : 2/4/2014
6092 //-----------------------------------------------------------------------------
6093 /// Apply a device instance "op" to all instances associated with this
6094 /// model
6095 ///
6096 /// @param[in] op Operator to apply to all instances.
6097 ///
6098 ///
6099 void Model::forEachInstance(DeviceInstanceOp &op) const /* override */
6100 {
6101  for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
6102  op(*it);
6103 }
6104 
6105 Device *Traits::factory(const Configuration &configuration, const FactoryBlock &factory_block)
6106 {
6107  return new DeviceMaster<Traits>(configuration, factory_block, factory_block.solverState_, factory_block.deviceOptions_);
6108 }
6109 
6111 {
6113  .registerDevice("q", 504)
6114  .registerModelType("npn", 504)
6115  .registerModelType("pnp", 504);
6116 }
6117 
6118 
6119 
6120 #ifdef Xyce_ADMS_SENSITIVITIES
6121 //-----------------------------------------------------------------------------
6122 // Function : evaluateInitialInstance
6123 // Purpose : Evaluate the statements in the initial_instance block
6124 // Special Notes : specific for sensitivity use
6125 // Scope : public
6126 // Creator : admsXml
6127 // Creation Date :
6128 //-----------------------------------------------------------------------------
6129 void evaluateInitialInstance(
6130  // instance parameters
6131  // reals
6132  AdmsSensFadType & instancePar_MULT,
6133  bool instancePar_given_MULT,
6134  // instance variables
6135  // reals
6136  AdmsSensFadType & instanceVar_Izteb,
6137  AdmsSensFadType & instanceVar_qBI,
6138  AdmsSensFadType & instanceVar_Ir,
6139  AdmsSensFadType & instanceVar_If,
6140  AdmsSensFadType & instanceVar_Ib1,
6141  AdmsSensFadType & instanceVar_Ib1_s,
6142  AdmsSensFadType & instanceVar_Ib2,
6143  AdmsSensFadType & instanceVar_Ib3,
6144  AdmsSensFadType & instanceVar_Iex,
6145  AdmsSensFadType & instanceVar_XIex,
6146  AdmsSensFadType & instanceVar_Isub,
6147  AdmsSensFadType & instanceVar_XIsub,
6148  AdmsSensFadType & instanceVar_Rb2,
6149  AdmsSensFadType & instanceVar_Gem,
6150  AdmsSensFadType & instanceVar_eVb1b2,
6151  // model parameters
6152  // reals
6153  AdmsSensFadType & modelPar_TREF,
6154  bool modelPar_given_TREF,
6155  AdmsSensFadType & modelPar_DTA,
6156  bool modelPar_given_DTA,
6157  AdmsSensFadType & modelPar_IS,
6158  bool modelPar_given_IS,
6159  AdmsSensFadType & modelPar_IK,
6160  bool modelPar_given_IK,
6161  AdmsSensFadType & modelPar_VER,
6162  bool modelPar_given_VER,
6163  AdmsSensFadType & modelPar_VEF,
6164  bool modelPar_given_VEF,
6165  AdmsSensFadType & modelPar_BF,
6166  bool modelPar_given_BF,
6167  AdmsSensFadType & modelPar_IBF,
6168  bool modelPar_given_IBF,
6169  AdmsSensFadType & modelPar_MLF,
6170  bool modelPar_given_MLF,
6171  AdmsSensFadType & modelPar_XIBI,
6172  bool modelPar_given_XIBI,
6173  AdmsSensFadType & modelPar_IZEB,
6174  bool modelPar_given_IZEB,
6175  AdmsSensFadType & modelPar_NZEB,
6176  bool modelPar_given_NZEB,
6177  AdmsSensFadType & modelPar_BRI,
6178  bool modelPar_given_BRI,
6179  AdmsSensFadType & modelPar_IBR,
6180  bool modelPar_given_IBR,
6181  AdmsSensFadType & modelPar_VLR,
6182  bool modelPar_given_VLR,
6183  AdmsSensFadType & modelPar_XEXT,
6184  bool modelPar_given_XEXT,
6185  AdmsSensFadType & modelPar_WAVL,
6186  bool modelPar_given_WAVL,
6187  AdmsSensFadType & modelPar_VAVL,
6188  bool modelPar_given_VAVL,
6189  AdmsSensFadType & modelPar_SFH,
6190  bool modelPar_given_SFH,
6191  AdmsSensFadType & modelPar_RE,
6192  bool modelPar_given_RE,
6193  AdmsSensFadType & modelPar_RBC,
6194  bool modelPar_given_RBC,
6195  AdmsSensFadType & modelPar_RBV,
6196  bool modelPar_given_RBV,
6197  AdmsSensFadType & modelPar_RCC,
6198  bool modelPar_given_RCC,
6199  AdmsSensFadType & modelPar_RCV,
6200  bool modelPar_given_RCV,
6201  AdmsSensFadType & modelPar_SCRCV,
6202  bool modelPar_given_SCRCV,
6203  AdmsSensFadType & modelPar_IHC,
6204  bool modelPar_given_IHC,
6205  AdmsSensFadType & modelPar_AXI,
6206  bool modelPar_given_AXI,
6207  AdmsSensFadType & modelPar_CJE,
6208  bool modelPar_given_CJE,
6209  AdmsSensFadType & modelPar_VDE,
6210  bool modelPar_given_VDE,
6211  AdmsSensFadType & modelPar_PE,
6212  bool modelPar_given_PE,
6213  AdmsSensFadType & modelPar_XCJE,
6214  bool modelPar_given_XCJE,
6215  AdmsSensFadType & modelPar_CBEO,
6216  bool modelPar_given_CBEO,
6217  AdmsSensFadType & modelPar_CJC,
6218  bool modelPar_given_CJC,
6219  AdmsSensFadType & modelPar_VDC,
6220  bool modelPar_given_VDC,
6221  AdmsSensFadType & modelPar_PC,
6222  bool modelPar_given_PC,
6223  AdmsSensFadType & modelPar_XP,
6224  bool modelPar_given_XP,
6225  AdmsSensFadType & modelPar_MC,
6226  bool modelPar_given_MC,
6227  AdmsSensFadType & modelPar_XCJC,
6228  bool modelPar_given_XCJC,
6229  AdmsSensFadType & modelPar_RCBLX,
6230  bool modelPar_given_RCBLX,
6231  AdmsSensFadType & modelPar_RCBLI,
6232  bool modelPar_given_RCBLI,
6233  AdmsSensFadType & modelPar_CBCO,
6234  bool modelPar_given_CBCO,
6235  AdmsSensFadType & modelPar_MTAU,
6236  bool modelPar_given_MTAU,
6237  AdmsSensFadType & modelPar_TAUE,
6238  bool modelPar_given_TAUE,
6239  AdmsSensFadType & modelPar_TAUB,
6240  bool modelPar_given_TAUB,
6241  AdmsSensFadType & modelPar_TEPI,
6242  bool modelPar_given_TEPI,
6243  AdmsSensFadType & modelPar_TAUR,
6244  bool modelPar_given_TAUR,
6245  AdmsSensFadType & modelPar_DEG,
6246  bool modelPar_given_DEG,
6247  AdmsSensFadType & modelPar_XREC,
6248  bool modelPar_given_XREC,
6249  AdmsSensFadType & modelPar_AQBO,
6250  bool modelPar_given_AQBO,
6251  AdmsSensFadType & modelPar_AE,
6252  bool modelPar_given_AE,
6253  AdmsSensFadType & modelPar_AB,
6254  bool modelPar_given_AB,
6255  AdmsSensFadType & modelPar_AEPI,
6256  bool modelPar_given_AEPI,
6257  AdmsSensFadType & modelPar_AEX,
6258  bool modelPar_given_AEX,
6259  AdmsSensFadType & modelPar_AC,
6260  bool modelPar_given_AC,
6261  AdmsSensFadType & modelPar_ACBL,
6262  bool modelPar_given_ACBL,
6263  AdmsSensFadType & modelPar_DVGBF,
6264  bool modelPar_given_DVGBF,
6265  AdmsSensFadType & modelPar_DVGBR,
6266  bool modelPar_given_DVGBR,
6267  AdmsSensFadType & modelPar_VGB,
6268  bool modelPar_given_VGB,
6269  AdmsSensFadType & modelPar_VGC,
6270  bool modelPar_given_VGC,
6271  AdmsSensFadType & modelPar_VGJ,
6272  bool modelPar_given_VGJ,
6273  AdmsSensFadType & modelPar_VGZEB,
6274  bool modelPar_given_VGZEB,
6275  AdmsSensFadType & modelPar_AVGEB,
6276  bool modelPar_given_AVGEB,
6277  AdmsSensFadType & modelPar_TVGEB,
6278  bool modelPar_given_TVGEB,
6279  AdmsSensFadType & modelPar_DVGTE,
6280  bool modelPar_given_DVGTE,
6281  AdmsSensFadType & modelPar_DAIS,
6282  bool modelPar_given_DAIS,
6283  AdmsSensFadType & modelPar_AF,
6284  bool modelPar_given_AF,
6285  AdmsSensFadType & modelPar_KF,
6286  bool modelPar_given_KF,
6287  AdmsSensFadType & modelPar_KFN,
6288  bool modelPar_given_KFN,
6289  AdmsSensFadType & modelPar_ISS,
6290  bool modelPar_given_ISS,
6291  AdmsSensFadType & modelPar_ICSS,
6292  bool modelPar_given_ICSS,
6293  AdmsSensFadType & modelPar_IKS,
6294  bool modelPar_given_IKS,
6295  AdmsSensFadType & modelPar_CJS,
6296  bool modelPar_given_CJS,
6297  AdmsSensFadType & modelPar_VDS,
6298  bool modelPar_given_VDS,
6299  AdmsSensFadType & modelPar_PS,
6300  bool modelPar_given_PS,
6301  AdmsSensFadType & modelPar_VGS,
6302  bool modelPar_given_VGS,
6303  AdmsSensFadType & modelPar_AS,
6304  bool modelPar_given_AS,
6305  AdmsSensFadType & modelPar_ASUB,
6306  bool modelPar_given_ASUB,
6307  AdmsSensFadType & modelPar_MULT,
6308  bool modelPar_given_MULT,
6309  AdmsSensFadType & modelPar_GMIN,
6310  bool modelPar_given_GMIN,
6311  // non-reals (including hidden)
6312  int modelPar_LEVEL,
6313  bool modelPar_given_LEVEL,
6314  int modelPar_EXMOD,
6315  bool modelPar_given_EXMOD,
6316  int modelPar_EXPHI,
6317  bool modelPar_given_EXPHI,
6318  int modelPar_EXAVL,
6319  bool modelPar_given_EXAVL,
6320  int modelPar_EXSUB,
6321  bool modelPar_given_EXSUB,
6322  int modelPar_KAVL,
6323  bool modelPar_given_KAVL,
6324  int modelPar_TYPE,
6325  bool modelPar_given_TYPE// model variables
6326  ,
6327  // reals
6328  AdmsSensFadType & modelVar_An,
6329  AdmsSensFadType & modelVar_Tk,
6330  AdmsSensFadType & modelVar_Vt,
6331  AdmsSensFadType & modelVar_VtINV,
6332  AdmsSensFadType & modelVar_VDE_T,
6333  AdmsSensFadType & modelVar_VDC_T,
6334  AdmsSensFadType & modelVar_XP_T,
6335  AdmsSensFadType & modelVar_BF_T,
6336  AdmsSensFadType & modelVar_BRI_T,
6337  AdmsSensFadType & modelVar_IS_T,
6338  AdmsSensFadType & modelVar_VEF_T,
6339  AdmsSensFadType & modelVar_VER_T,
6340  AdmsSensFadType & modelVar_nZEB_T,
6341  AdmsSensFadType & modelVar_pow2_2mPE,
6342  AdmsSensFadType & modelVar_pow2_PEm2,
6343  AdmsSensFadType & modelVar_inv_VDE_T,
6344  AdmsSensFadType & modelVar_VGZEB_T,
6345  AdmsSensFadType & modelVar_TAUE_T,
6346  AdmsSensFadType & modelVar_TAUB_T,
6347  AdmsSensFadType & modelVar_TEPI_T,
6348  AdmsSensFadType & modelVar_TAUR_T,
6349  AdmsSensFadType & modelVar_BnT,
6350  AdmsSensFadType & modelVar_DEG_T,
6351  AdmsSensFadType & modelVar_VDS_T,
6352  AdmsSensFadType & modelVar_IKS_T,
6353  AdmsSensFadType & modelVar_IS_TM,
6354  AdmsSensFadType & modelVar_IK_TM,
6355  AdmsSensFadType & modelVar_IBF_TM,
6356  AdmsSensFadType & modelVar_IBR_TM,
6357  AdmsSensFadType & modelVar_IHC_M,
6358  AdmsSensFadType & modelVar_IZEB_TM,
6359  AdmsSensFadType & modelVar_CJE_TM,
6360  AdmsSensFadType & modelVar_CJC_TM,
6361  AdmsSensFadType & modelVar_RE_TM,
6362  AdmsSensFadType & modelVar_RBC_TM,
6363  AdmsSensFadType & modelVar_RBV_TM,
6364  AdmsSensFadType & modelVar_RCV_TM,
6365  AdmsSensFadType & modelVar_SCRCV_M,
6366  AdmsSensFadType & modelVar_RCCxx_TM,
6367  AdmsSensFadType & modelVar_GCCxx_TM,
6368  AdmsSensFadType & modelVar_GCCex_TM,
6369  AdmsSensFadType & modelVar_GCCin_TM,
6370  AdmsSensFadType & modelVar_KF_M,
6371  AdmsSensFadType & modelVar_KFN_M,
6372  AdmsSensFadType & modelVar_ISS_TM,
6373  AdmsSensFadType & modelVar_ICSS_TM,
6374  AdmsSensFadType & modelVar_IKS_TM,
6375  AdmsSensFadType & modelVar_CJS_TM,
6376  AdmsSensFadType & modelVar_Xext1,
6377  AdmsSensFadType & modelVar_CBEO_M,
6378  AdmsSensFadType & modelVar_CBCO_M,
6379  double admsTemperature, double adms_vt_nom)
6380 {
6381 }
6382 
6383 
6384 
6385 //-----------------------------------------------------------------------------
6386 // Function : evaluateInitialModel
6387 // Purpose : Evaluate the statements in the initial_model block
6388 // Special Notes : specific for sensitivity use
6389 // Scope : public
6390 // Creator : admsXml
6391 // Creation Date :
6392 //-----------------------------------------------------------------------------
6393 void evaluateInitialModel(
6394  // model parameters
6395  // reals
6396  AdmsSensFadType & modelPar_TREF,
6397  bool modelPar_given_TREF,
6398  AdmsSensFadType & modelPar_DTA,
6399  bool modelPar_given_DTA,
6400  AdmsSensFadType & modelPar_IS,
6401  bool modelPar_given_IS,
6402  AdmsSensFadType & modelPar_IK,
6403  bool modelPar_given_IK,
6404  AdmsSensFadType & modelPar_VER,
6405  bool modelPar_given_VER,
6406  AdmsSensFadType & modelPar_VEF,
6407  bool modelPar_given_VEF,
6408  AdmsSensFadType & modelPar_BF,
6409  bool modelPar_given_BF,
6410  AdmsSensFadType & modelPar_IBF,
6411  bool modelPar_given_IBF,
6412  AdmsSensFadType & modelPar_MLF,
6413  bool modelPar_given_MLF,
6414  AdmsSensFadType & modelPar_XIBI,
6415  bool modelPar_given_XIBI,
6416  AdmsSensFadType & modelPar_IZEB,
6417  bool modelPar_given_IZEB,
6418  AdmsSensFadType & modelPar_NZEB,
6419  bool modelPar_given_NZEB,
6420  AdmsSensFadType & modelPar_BRI,
6421  bool modelPar_given_BRI,
6422  AdmsSensFadType & modelPar_IBR,
6423  bool modelPar_given_IBR,
6424  AdmsSensFadType & modelPar_VLR,
6425  bool modelPar_given_VLR,
6426  AdmsSensFadType & modelPar_XEXT,
6427  bool modelPar_given_XEXT,
6428  AdmsSensFadType & modelPar_WAVL,
6429  bool modelPar_given_WAVL,
6430  AdmsSensFadType & modelPar_VAVL,
6431  bool modelPar_given_VAVL,
6432  AdmsSensFadType & modelPar_SFH,
6433  bool modelPar_given_SFH,
6434  AdmsSensFadType & modelPar_RE,
6435  bool modelPar_given_RE,
6436  AdmsSensFadType & modelPar_RBC,
6437  bool modelPar_given_RBC,
6438  AdmsSensFadType & modelPar_RBV,
6439  bool modelPar_given_RBV,
6440  AdmsSensFadType & modelPar_RCC,
6441  bool modelPar_given_RCC,
6442  AdmsSensFadType & modelPar_RCV,
6443  bool modelPar_given_RCV,
6444  AdmsSensFadType & modelPar_SCRCV,
6445  bool modelPar_given_SCRCV,
6446  AdmsSensFadType & modelPar_IHC,
6447  bool modelPar_given_IHC,
6448  AdmsSensFadType & modelPar_AXI,
6449  bool modelPar_given_AXI,
6450  AdmsSensFadType & modelPar_CJE,
6451  bool modelPar_given_CJE,
6452  AdmsSensFadType & modelPar_VDE,
6453  bool modelPar_given_VDE,
6454  AdmsSensFadType & modelPar_PE,
6455  bool modelPar_given_PE,
6456  AdmsSensFadType & modelPar_XCJE,
6457  bool modelPar_given_XCJE,
6458  AdmsSensFadType & modelPar_CBEO,
6459  bool modelPar_given_CBEO,
6460  AdmsSensFadType & modelPar_CJC,
6461  bool modelPar_given_CJC,
6462  AdmsSensFadType & modelPar_VDC,
6463  bool modelPar_given_VDC,
6464  AdmsSensFadType & modelPar_PC,
6465  bool modelPar_given_PC,
6466  AdmsSensFadType & modelPar_XP,
6467  bool modelPar_given_XP,
6468  AdmsSensFadType & modelPar_MC,
6469  bool modelPar_given_MC,
6470  AdmsSensFadType & modelPar_XCJC,
6471  bool modelPar_given_XCJC,
6472  AdmsSensFadType & modelPar_RCBLX,
6473  bool modelPar_given_RCBLX,
6474  AdmsSensFadType & modelPar_RCBLI,
6475  bool modelPar_given_RCBLI,
6476  AdmsSensFadType & modelPar_CBCO,
6477  bool modelPar_given_CBCO,
6478  AdmsSensFadType & modelPar_MTAU,
6479  bool modelPar_given_MTAU,
6480  AdmsSensFadType & modelPar_TAUE,
6481  bool modelPar_given_TAUE,
6482  AdmsSensFadType & modelPar_TAUB,
6483  bool modelPar_given_TAUB,
6484  AdmsSensFadType & modelPar_TEPI,
6485  bool modelPar_given_TEPI,
6486  AdmsSensFadType & modelPar_TAUR,
6487  bool modelPar_given_TAUR,
6488  AdmsSensFadType & modelPar_DEG,
6489  bool modelPar_given_DEG,
6490  AdmsSensFadType & modelPar_XREC,
6491  bool modelPar_given_XREC,
6492  AdmsSensFadType & modelPar_AQBO,
6493  bool modelPar_given_AQBO,
6494  AdmsSensFadType & modelPar_AE,
6495  bool modelPar_given_AE,
6496  AdmsSensFadType & modelPar_AB,
6497  bool modelPar_given_AB,
6498  AdmsSensFadType & modelPar_AEPI,
6499  bool modelPar_given_AEPI,
6500  AdmsSensFadType & modelPar_AEX,
6501  bool modelPar_given_AEX,
6502  AdmsSensFadType & modelPar_AC,
6503  bool modelPar_given_AC,
6504  AdmsSensFadType & modelPar_ACBL,
6505  bool modelPar_given_ACBL,
6506  AdmsSensFadType & modelPar_DVGBF,
6507  bool modelPar_given_DVGBF,
6508  AdmsSensFadType & modelPar_DVGBR,
6509  bool modelPar_given_DVGBR,
6510  AdmsSensFadType & modelPar_VGB,
6511  bool modelPar_given_VGB,
6512  AdmsSensFadType & modelPar_VGC,
6513  bool modelPar_given_VGC,
6514  AdmsSensFadType & modelPar_VGJ,
6515  bool modelPar_given_VGJ,
6516  AdmsSensFadType & modelPar_VGZEB,
6517  bool modelPar_given_VGZEB,
6518  AdmsSensFadType & modelPar_AVGEB,
6519  bool modelPar_given_AVGEB,
6520  AdmsSensFadType & modelPar_TVGEB,
6521  bool modelPar_given_TVGEB,
6522  AdmsSensFadType & modelPar_DVGTE,
6523  bool modelPar_given_DVGTE,
6524  AdmsSensFadType & modelPar_DAIS,
6525  bool modelPar_given_DAIS,
6526  AdmsSensFadType & modelPar_AF,
6527  bool modelPar_given_AF,
6528  AdmsSensFadType & modelPar_KF,
6529  bool modelPar_given_KF,
6530  AdmsSensFadType & modelPar_KFN,
6531  bool modelPar_given_KFN,
6532  AdmsSensFadType & modelPar_ISS,
6533  bool modelPar_given_ISS,
6534  AdmsSensFadType & modelPar_ICSS,
6535  bool modelPar_given_ICSS,
6536  AdmsSensFadType & modelPar_IKS,
6537  bool modelPar_given_IKS,
6538  AdmsSensFadType & modelPar_CJS,
6539  bool modelPar_given_CJS,
6540  AdmsSensFadType & modelPar_VDS,
6541  bool modelPar_given_VDS,
6542  AdmsSensFadType & modelPar_PS,
6543  bool modelPar_given_PS,
6544  AdmsSensFadType & modelPar_VGS,
6545  bool modelPar_given_VGS,
6546  AdmsSensFadType & modelPar_AS,
6547  bool modelPar_given_AS,
6548  AdmsSensFadType & modelPar_ASUB,
6549  bool modelPar_given_ASUB,
6550  AdmsSensFadType & modelPar_MULT,
6551  bool modelPar_given_MULT,
6552  AdmsSensFadType & modelPar_GMIN,
6553  bool modelPar_given_GMIN,
6554  // non-reals (including hidden)
6555  int modelPar_LEVEL,
6556  bool modelPar_given_LEVEL,
6557  int modelPar_EXMOD,
6558  bool modelPar_given_EXMOD,
6559  int modelPar_EXPHI,
6560  bool modelPar_given_EXPHI,
6561  int modelPar_EXAVL,
6562  bool modelPar_given_EXAVL,
6563  int modelPar_EXSUB,
6564  bool modelPar_given_EXSUB,
6565  int modelPar_KAVL,
6566  bool modelPar_given_KAVL,
6567  int modelPar_TYPE,
6568  bool modelPar_given_TYPE// model variables
6569  ,
6570  // reals
6571  AdmsSensFadType & modelVar_An,
6572  AdmsSensFadType & modelVar_Tk,
6573  AdmsSensFadType & modelVar_Vt,
6574  AdmsSensFadType & modelVar_VtINV,
6575  AdmsSensFadType & modelVar_VDE_T,
6576  AdmsSensFadType & modelVar_VDC_T,
6577  AdmsSensFadType & modelVar_XP_T,
6578  AdmsSensFadType & modelVar_BF_T,
6579  AdmsSensFadType & modelVar_BRI_T,
6580  AdmsSensFadType & modelVar_IS_T,
6581  AdmsSensFadType & modelVar_VEF_T,
6582  AdmsSensFadType & modelVar_VER_T,
6583  AdmsSensFadType & modelVar_nZEB_T,
6584  AdmsSensFadType & modelVar_pow2_2mPE,
6585  AdmsSensFadType & modelVar_pow2_PEm2,
6586  AdmsSensFadType & modelVar_inv_VDE_T,
6587  AdmsSensFadType & modelVar_VGZEB_T,
6588  AdmsSensFadType & modelVar_TAUE_T,
6589  AdmsSensFadType & modelVar_TAUB_T,
6590  AdmsSensFadType & modelVar_TEPI_T,
6591  AdmsSensFadType & modelVar_TAUR_T,
6592  AdmsSensFadType & modelVar_BnT,
6593  AdmsSensFadType & modelVar_DEG_T,
6594  AdmsSensFadType & modelVar_VDS_T,
6595  AdmsSensFadType & modelVar_IKS_T,
6596  AdmsSensFadType & modelVar_IS_TM,
6597  AdmsSensFadType & modelVar_IK_TM,
6598  AdmsSensFadType & modelVar_IBF_TM,
6599  AdmsSensFadType & modelVar_IBR_TM,
6600  AdmsSensFadType & modelVar_IHC_M,
6601  AdmsSensFadType & modelVar_IZEB_TM,
6602  AdmsSensFadType & modelVar_CJE_TM,
6603  AdmsSensFadType & modelVar_CJC_TM,
6604  AdmsSensFadType & modelVar_RE_TM,
6605  AdmsSensFadType & modelVar_RBC_TM,
6606  AdmsSensFadType & modelVar_RBV_TM,
6607  AdmsSensFadType & modelVar_RCV_TM,
6608  AdmsSensFadType & modelVar_SCRCV_M,
6609  AdmsSensFadType & modelVar_RCCxx_TM,
6610  AdmsSensFadType & modelVar_GCCxx_TM,
6611  AdmsSensFadType & modelVar_GCCex_TM,
6612  AdmsSensFadType & modelVar_GCCin_TM,
6613  AdmsSensFadType & modelVar_KF_M,
6614  AdmsSensFadType & modelVar_KFN_M,
6615  AdmsSensFadType & modelVar_ISS_TM,
6616  AdmsSensFadType & modelVar_ICSS_TM,
6617  AdmsSensFadType & modelVar_IKS_TM,
6618  AdmsSensFadType & modelVar_CJS_TM,
6619  AdmsSensFadType & modelVar_Xext1,
6620  AdmsSensFadType & modelVar_CBEO_M,
6621  AdmsSensFadType & modelVar_CBCO_M,
6622  double admsTemperature)
6623 {
6624  AdmsSensFadType RCCin_TM;
6625  AdmsSensFadType RCCex_TM;
6626  AdmsSensFadType Tk300;
6627  AdmsSensFadType ICSS_T;
6628  AdmsSensFadType ISS_T;
6629  AdmsSensFadType IZEB_T;
6630  AdmsSensFadType y;
6631  AdmsSensFadType tempx;
6632  AdmsSensFadType IBR_T;
6633  AdmsSensFadType IBF_T;
6634  AdmsSensFadType IK_T;
6635  AdmsSensFadType RCV_T;
6636  AdmsSensFadType RCCin_T;
6637  AdmsSensFadType RCCex_T;
6638  AdmsSensFadType RCCxx_T;
6639  AdmsSensFadType RBC_T;
6640  AdmsSensFadType RBV_T;
6641  AdmsSensFadType RE_T;
6642  AdmsSensFadType CJC_T;
6643  AdmsSensFadType CJCscaleINV;
6644  AdmsSensFadType CJCscale;
6645  AdmsSensFadType CJS_T;
6646  AdmsSensFadType CJE_T;
6647  AdmsSensFadType CJE_T_div_CJE;
6648  AdmsSensFadType UdsT;
6649  AdmsSensFadType UdcT;
6650  AdmsSensFadType UdeT;
6651  AdmsSensFadType lntN;
6652  AdmsSensFadType VdtINV;
6653  AdmsSensFadType VtrINV;
6654  AdmsSensFadType Vtr;
6655  AdmsSensFadType tN;
6656  AdmsSensFadType Tamb;
6657  double Vdt;
6658  AdmsSensFadType inv_VDE;
6659  AdmsSensFadType inv_VGZEB_Tr;
6660  AdmsSensFadType VGZEB_Tr;
6661  AdmsSensFadType dxa;
6662  AdmsSensFadType VGZEBOK;
6663  AdmsSensFadType Trk;
6664  AdmsSensFadType invMULT;
6665  double Bn;
6666  //Begin block initial_model
6667  {
6668  if ((modelPar_TYPE==1))
6669  {
6670  modelVar_An = 7.03e7;
6671  Bn = 1.23e8;
6672  }
6673  else
6674  {
6675  modelVar_An = 1.58e8;
6676  Bn = 2.04e8;
6677  }
6678  modelVar_Xext1 = (1.0-modelPar_XEXT);
6679  modelVar_CBEO_M = (modelPar_CBEO*modelPar_MULT);
6680  modelVar_CBCO_M = (modelPar_CBCO*modelPar_MULT);
6681  invMULT = (1.0/modelPar_MULT);
6682  modelVar_SCRCV_M = (modelPar_SCRCV*invMULT);
6683  modelVar_KF_M = (modelPar_KF*pow(modelPar_MULT,(1.0-modelPar_AF)));
6684  modelVar_KFN_M = (modelPar_KFN*pow(modelPar_MULT,(1.0-((2.0*(modelPar_MLF-1.0))+(modelPar_AF*(2.0-modelPar_MLF))))));
6685  modelVar_pow2_2mPE = pow(2.0,(2.0-modelPar_PE));
6686  modelVar_pow2_PEm2 = (1.0/modelVar_pow2_2mPE);
6687  Trk = (modelPar_TREF+273.15);
6688  {
6689  //Block-local variables for block
6690  AdmsSensFadType dxa;
6691  //End of Block-local variables
6692  dxa = (((modelPar_VGZEB+(((modelPar_AVGEB*Trk)*Trk)/(Trk+modelPar_TVGEB)))-0.05)/0.1);
6693  if (((modelPar_VGZEB+(((modelPar_AVGEB*Trk)*Trk)/(Trk+modelPar_TVGEB)))<0.05))
6694  {
6695  VGZEBOK = (0.05+(0.1*log((1.0+exp(dxa)))));
6696  }
6697  else
6698  {
6699  VGZEBOK = ((modelPar_VGZEB+(((modelPar_AVGEB*Trk)*Trk)/(Trk+modelPar_TVGEB)))+(0.1*log((1.0+exp((-dxa))))));
6700  }
6701  VGZEBOK = VGZEBOK;
6702  }
6703  VGZEB_Tr = modelPar_VGZEB;
6704  inv_VGZEB_Tr = (1.0/VGZEB_Tr);
6705  inv_VDE = (1.0/modelPar_VDE);
6706  Vdt = 0.0;
6707  modelVar_Tk = ((admsTemperature+modelPar_DTA)+Vdt);
6708  Tamb = (admsTemperature+modelPar_DTA);
6709  tN = (modelVar_Tk/Trk);
6710  modelVar_Vt = (8.61708691805812512584e-5*modelVar_Tk);
6711  Vtr = (8.61708691805812512584e-5*Trk);
6712  modelVar_VtINV = (1.0/modelVar_Vt);
6713  VtrINV = (1.0/Vtr);
6714  VdtINV = (modelVar_VtINV-VtrINV);
6715  lntN = log(tN);
6716  {
6717  //Block-local variables for block
6718  AdmsSensFadType dxa;
6719  //End of Block-local variables
6720  dxa = (((VGZEBOK-(((modelPar_AVGEB*modelVar_Tk)*modelVar_Tk)/(modelVar_Tk+modelPar_TVGEB)))-0.05)/0.1);
6721  if (((VGZEBOK-(((modelPar_AVGEB*modelVar_Tk)*modelVar_Tk)/(modelVar_Tk+modelPar_TVGEB)))<0.05))
6722  {
6723  modelVar_VGZEB_T = (0.05+(0.1*log((1.0+exp(dxa)))));
6724  }
6725  else
6726  {
6727  modelVar_VGZEB_T = ((VGZEBOK-(((modelPar_AVGEB*modelVar_Tk)*modelVar_Tk)/(modelVar_Tk+modelPar_TVGEB)))+(0.1*log((1.0+exp((-dxa))))));
6728  }
6729  modelVar_VGZEB_T = modelVar_VGZEB_T;
6730  }
6731  UdeT = (((((-3.0)*modelVar_Vt)*log(tN))+(modelPar_VDE*tN))+((1.0-tN)*modelPar_VGB));
6732  {
6733  //Block-local variables for block
6734  AdmsSensFadType dxa;
6735  //End of Block-local variables
6736  dxa = ((0.05-UdeT)/modelVar_Vt);
6737  if ((0.05<UdeT))
6738  {
6739  modelVar_VDE_T = (UdeT+(modelVar_Vt*log((1.0+exp(dxa)))));
6740  }
6741  else
6742  {
6743  modelVar_VDE_T = (0.05+(modelVar_Vt*log((1.0+exp((-dxa))))));
6744  }
6745  modelVar_VDE_T = modelVar_VDE_T;
6746  }
6747  UdcT = (((((-3.0)*modelVar_Vt)*log(tN))+(modelPar_VDC*tN))+((1.0-tN)*modelPar_VGC));
6748  {
6749  //Block-local variables for block
6750  AdmsSensFadType dxa;
6751  //End of Block-local variables
6752  dxa = ((0.05-UdcT)/modelVar_Vt);
6753  if ((0.05<UdcT))
6754  {
6755  modelVar_VDC_T = (UdcT+(modelVar_Vt*log((1.0+exp(dxa)))));
6756  }
6757  else
6758  {
6759  modelVar_VDC_T = (0.05+(modelVar_Vt*log((1.0+exp((-dxa))))));
6760  }
6761  modelVar_VDC_T = modelVar_VDC_T;
6762  }
6763  UdsT = (((((-3.0)*modelVar_Vt)*log(tN))+(modelPar_VDS*tN))+((1.0-tN)*modelPar_VGS));
6764  {
6765  //Block-local variables for block
6766  AdmsSensFadType dxa;
6767  //End of Block-local variables
6768  dxa = ((0.05-UdsT)/modelVar_Vt);
6769  if ((0.05<UdsT))
6770  {
6771  modelVar_VDS_T = (UdsT+(modelVar_Vt*log((1.0+exp(dxa)))));
6772  }
6773  else
6774  {
6775  modelVar_VDS_T = (0.05+(modelVar_Vt*log((1.0+exp((-dxa))))));
6776  }
6777  modelVar_VDS_T = modelVar_VDS_T;
6778  }
6779  modelVar_inv_VDE_T = (1.0/modelVar_VDE_T);
6780  CJE_T_div_CJE = pow((modelPar_VDE*modelVar_inv_VDE_T),modelPar_PE);
6781  CJE_T = (modelPar_CJE*CJE_T_div_CJE);
6782  CJS_T = (modelPar_CJS*pow((modelPar_VDS/modelVar_VDS_T),modelPar_PS));
6783  CJCscale = (((1.0-modelPar_XP)*pow((modelPar_VDC/modelVar_VDC_T),modelPar_PC))+modelPar_XP);
6784  CJCscaleINV = (1.0/CJCscale);
6785  CJC_T = (modelPar_CJC*CJCscale);
6786  modelVar_XP_T = (modelPar_XP*CJCscaleINV);
6787  RE_T = (modelPar_RE*exp((lntN*modelPar_AE)));
6788  RBV_T = (modelPar_RBV*exp((lntN*(modelPar_AB-modelPar_AQBO))));
6789  RBC_T = (modelPar_RBC*exp((lntN*modelPar_AEX)));
6790  RCCxx_T = (modelPar_RCC*exp((lntN*modelPar_AC)));
6791  RCCex_T = (modelPar_RCBLX*exp((lntN*modelPar_ACBL)));
6792  RCCin_T = (modelPar_RCBLI*exp((lntN*modelPar_ACBL)));
6793  RCV_T = (modelPar_RCV*exp((lntN*modelPar_AEPI)));
6794  modelVar_BF_T = ((modelPar_BF*exp((lntN*((modelPar_AE-modelPar_AB)-modelPar_AQBO))))*exp(((-modelPar_DVGBF)*VdtINV)));
6795  modelVar_BRI_T = (modelPar_BRI*exp(((-modelPar_DVGBR)*VdtINV)));
6796  modelVar_IS_T = ((modelPar_IS*exp((lntN*(((4.0-modelPar_AB)-modelPar_AQBO)+modelPar_DAIS))))*exp(((-modelPar_VGB)*VdtINV)));
6797  IK_T = (modelPar_IK*exp((lntN*(1.0-modelPar_AB))));
6798  IBF_T = ((modelPar_IBF*exp((lntN*(6.0-(2.0*modelPar_MLF)))))*exp((((-modelPar_VGJ)*VdtINV)/modelPar_MLF)));
6799  IBR_T = (((modelPar_IBR*tN)*tN)*exp((((-modelPar_VGC)*VdtINV)/2.0)));
6800  tempx = pow((modelVar_VGZEB_T*inv_VGZEB_Tr),(-0.5));
6801  y = (1.0/CJE_T_div_CJE);
6802  modelVar_nZEB_T = ((((((((modelPar_NZEB*modelVar_VGZEB_T)*modelVar_VGZEB_T)*tempx)*y)*modelPar_VDE)*modelVar_inv_VDE_T)*inv_VGZEB_Tr)*inv_VGZEB_Tr);
6803  IZEB_T = (((((((modelPar_IZEB*tempx)*modelVar_VDE_T)*modelVar_VDE_T)*inv_VDE)*inv_VDE)*CJE_T_div_CJE)*exp((modelPar_NZEB-modelVar_nZEB_T)));
6804  tempx = exp((lntN*modelPar_AQBO));
6805  modelVar_VEF_T = ((modelPar_VEF*tempx)*CJCscaleINV);
6806  modelVar_VER_T = ((modelPar_VER*tempx)*y);
6807  ISS_T = ((modelPar_ISS*exp((lntN*(4.0-modelPar_AS))))*exp(((-modelPar_VGS)*VdtINV)));
6808  ICSS_T = ((modelPar_ICSS*exp((lntN*(3.5-(0.5*modelPar_ASUB)))))*exp(((-modelPar_VGS)*VdtINV)));
6809  if ((ISS_T>0.0))
6810  {
6811  modelVar_IKS_T = (((modelPar_IKS*exp((lntN*(1.0-modelPar_AS))))*(modelVar_IS_T/modelPar_IS))*(modelPar_ISS/ISS_T));
6812  }
6813  else
6814  {
6815  modelVar_IKS_T = (modelPar_IKS*exp((lntN*(1.0-modelPar_AS))));
6816  }
6817  modelVar_TAUE_T = ((modelPar_TAUE*exp((lntN*(modelPar_AB-2.0))))*exp(((-modelPar_DVGTE)*VdtINV)));
6818  modelVar_TAUB_T = (modelPar_TAUB*exp((lntN*((modelPar_AQBO+modelPar_AB)-1.0))));
6819  modelVar_TEPI_T = (modelPar_TEPI*exp((lntN*(modelPar_AEPI-1.0))));
6820  modelVar_TAUR_T = ((modelPar_TAUR*(modelVar_TAUB_T+modelVar_TEPI_T))/(modelPar_TAUB+modelPar_TEPI));
6821  Tk300 = (modelVar_Tk-300.0);
6822  if ((modelVar_Tk<525.0))
6823  {
6824  modelVar_BnT = (Bn*((1.0+(7.2e-4*Tk300))-((1.6e-6*Tk300)*Tk300)));
6825  }
6826  else
6827  {
6828  modelVar_BnT = (Bn*1.081);
6829  }
6830  modelVar_DEG_T = (modelPar_DEG*exp((lntN*modelPar_AQBO)));
6831  modelVar_IS_TM = (modelVar_IS_T*modelPar_MULT);
6832  modelVar_IK_TM = (IK_T*modelPar_MULT);
6833  modelVar_IBF_TM = (IBF_T*modelPar_MULT);
6834  modelVar_IBR_TM = (IBR_T*modelPar_MULT);
6835  modelVar_IZEB_TM = (IZEB_T*modelPar_MULT);
6836  modelVar_IHC_M = (modelPar_IHC*modelPar_MULT);
6837  modelVar_ISS_TM = (ISS_T*modelPar_MULT);
6838  modelVar_ICSS_TM = (ICSS_T*modelPar_MULT);
6839  modelVar_IKS_TM = (modelVar_IKS_T*modelPar_MULT);
6840  modelVar_CJE_TM = (CJE_T*modelPar_MULT);
6841  modelVar_CJC_TM = (CJC_T*modelPar_MULT);
6842  modelVar_CJS_TM = (CJS_T*modelPar_MULT);
6843  modelVar_RE_TM = (RE_T*invMULT);
6844  modelVar_RBC_TM = (RBC_T*invMULT);
6845  modelVar_RBV_TM = (RBV_T*invMULT);
6846  modelVar_RCCxx_TM = (RCCxx_T*invMULT);
6847  RCCex_TM = (RCCex_T*invMULT);
6848  RCCin_TM = (RCCin_T*invMULT);
6849  modelVar_RCV_TM = (RCV_T*invMULT);
6850  if ((modelPar_RCC>0.0))
6851  {
6852  modelVar_GCCxx_TM = (1.0/modelVar_RCCxx_TM);
6853  }
6854  else
6855  {
6856  modelVar_GCCxx_TM = 0;
6857  }
6858  if ((modelPar_RCBLX>0.0))
6859  {
6860  modelVar_GCCex_TM = (1.0/RCCex_TM);
6861  }
6862  else
6863  {
6864  modelVar_GCCex_TM = 0;
6865  }
6866  if ((modelPar_RCBLI>0.0))
6867  {
6868  modelVar_GCCin_TM = (1.0/RCCin_TM);
6869  }
6870  else
6871  {
6872  modelVar_GCCin_TM = 0;
6873  }
6874  }
6875  // End block initial_model
6876 }
6877 
6878 
6879 
6880 //-----------------------------------------------------------------------------
6881 // Function : evaluateModelEquations
6882 // Purpose : Evaluate the main module block. Similar to
6883 // updateIntermediateVars, but takes all instance and model
6884 // parameters and variables as arguments instead of using
6885 // the ones stored in the objects.
6886 // Special Notes : specific for sensitivity use
6887 // Scope : public
6888 // Creator : admsXml
6889 // Creation Date :
6890 //-----------------------------------------------------------------------------
6891 void evaluateModelEquations(
6892  std::vector <double> & probeVars,
6893  // probe constants
6894  const int admsProbeID_V_noi_e1,
6895  const int admsProbeID_V_c3_c1,
6896  const int admsProbeID_V_c3_c4,
6897  const int admsProbeID_V_c4_c1,
6898  const int admsProbeID_V_b_c,
6899  const int admsProbeID_V_b_e,
6900  const int admsProbeID_V_b_b1,
6901  const int admsProbeID_V_e_e1,
6902  const int admsProbeID_V_c1_c2,
6903  const int admsProbeID_V_s_c1,
6904  const int admsProbeID_V_b1_b2,
6905  const int admsProbeID_V_b1_e1,
6906  const int admsProbeID_V_b2_e1,
6907  const int admsProbeID_V_b2_c2,
6908  const int admsProbeID_V_b2_c1,
6909  // node constants
6910  const int admsNodeID_c,
6911  const int admsNodeID_b,
6912  const int admsNodeID_e,
6913  const int admsNodeID_s,
6914  const int admsNodeID_e1,
6915  const int admsNodeID_b1,
6916  const int admsNodeID_b2,
6917  const int admsNodeID_c3,
6918  const int admsNodeID_c4,
6919  const int admsNodeID_c2,
6920  const int admsNodeID_c1,
6921  const int admsNodeID_noi,
6922  // instance parameters
6923  // reals
6924  AdmsSensFadType & instancePar_MULT,
6925  bool instancePar_given_MULT,
6926  // instance variables
6927  // reals
6928  AdmsSensFadType & instanceVar_Izteb,
6929  AdmsSensFadType & instanceVar_qBI,
6930  AdmsSensFadType & instanceVar_Ir,
6931  AdmsSensFadType & instanceVar_If,
6932  AdmsSensFadType & instanceVar_Ib1,
6933  AdmsSensFadType & instanceVar_Ib1_s,
6934  AdmsSensFadType & instanceVar_Ib2,
6935  AdmsSensFadType & instanceVar_Ib3,
6936  AdmsSensFadType & instanceVar_Iex,
6937  AdmsSensFadType & instanceVar_XIex,
6938  AdmsSensFadType & instanceVar_Isub,
6939  AdmsSensFadType & instanceVar_XIsub,
6940  AdmsSensFadType & instanceVar_Rb2,
6941  AdmsSensFadType & instanceVar_Gem,
6942  AdmsSensFadType & instanceVar_eVb1b2,
6943  // model parameters
6944  // reals
6945  AdmsSensFadType & modelPar_TREF,
6946  bool modelPar_given_TREF,
6947  AdmsSensFadType & modelPar_DTA,
6948  bool modelPar_given_DTA,
6949  AdmsSensFadType & modelPar_IS,
6950  bool modelPar_given_IS,
6951  AdmsSensFadType & modelPar_IK,
6952  bool modelPar_given_IK,
6953  AdmsSensFadType & modelPar_VER,
6954  bool modelPar_given_VER,
6955  AdmsSensFadType & modelPar_VEF,
6956  bool modelPar_given_VEF,
6957  AdmsSensFadType & modelPar_BF,
6958  bool modelPar_given_BF,
6959  AdmsSensFadType & modelPar_IBF,
6960  bool modelPar_given_IBF,
6961  AdmsSensFadType & modelPar_MLF,
6962  bool modelPar_given_MLF,
6963  AdmsSensFadType & modelPar_XIBI,
6964  bool modelPar_given_XIBI,
6965  AdmsSensFadType & modelPar_IZEB,
6966  bool modelPar_given_IZEB,
6967  AdmsSensFadType & modelPar_NZEB,
6968  bool modelPar_given_NZEB,
6969  AdmsSensFadType & modelPar_BRI,
6970  bool modelPar_given_BRI,
6971  AdmsSensFadType & modelPar_IBR,
6972  bool modelPar_given_IBR,
6973  AdmsSensFadType & modelPar_VLR,
6974  bool modelPar_given_VLR,
6975  AdmsSensFadType & modelPar_XEXT,
6976  bool modelPar_given_XEXT,
6977  AdmsSensFadType & modelPar_WAVL,
6978  bool modelPar_given_WAVL,
6979  AdmsSensFadType & modelPar_VAVL,
6980  bool modelPar_given_VAVL,
6981  AdmsSensFadType & modelPar_SFH,
6982  bool modelPar_given_SFH,
6983  AdmsSensFadType & modelPar_RE,
6984  bool modelPar_given_RE,
6985  AdmsSensFadType & modelPar_RBC,
6986  bool modelPar_given_RBC,
6987  AdmsSensFadType & modelPar_RBV,
6988  bool modelPar_given_RBV,
6989  AdmsSensFadType & modelPar_RCC,
6990  bool modelPar_given_RCC,
6991  AdmsSensFadType & modelPar_RCV,
6992  bool modelPar_given_RCV,
6993  AdmsSensFadType & modelPar_SCRCV,
6994  bool modelPar_given_SCRCV,
6995  AdmsSensFadType & modelPar_IHC,
6996  bool modelPar_given_IHC,
6997  AdmsSensFadType & modelPar_AXI,
6998  bool modelPar_given_AXI,
6999  AdmsSensFadType & modelPar_CJE,
7000  bool modelPar_given_CJE,
7001  AdmsSensFadType & modelPar_VDE,
7002  bool modelPar_given_VDE,
7003  AdmsSensFadType & modelPar_PE,
7004  bool modelPar_given_PE,
7005  AdmsSensFadType & modelPar_XCJE,
7006  bool modelPar_given_XCJE,
7007  AdmsSensFadType & modelPar_CBEO,
7008  bool modelPar_given_CBEO,
7009  AdmsSensFadType & modelPar_CJC,
7010  bool modelPar_given_CJC,
7011  AdmsSensFadType & modelPar_VDC,
7012  bool modelPar_given_VDC,
7013  AdmsSensFadType & modelPar_PC,
7014  bool modelPar_given_PC,
7015  AdmsSensFadType & modelPar_XP,
7016  bool modelPar_given_XP,
7017  AdmsSensFadType & modelPar_MC,
7018  bool modelPar_given_MC,
7019  AdmsSensFadType & modelPar_XCJC,
7020  bool modelPar_given_XCJC,
7021  AdmsSensFadType & modelPar_RCBLX,
7022  bool modelPar_given_RCBLX,
7023  AdmsSensFadType & modelPar_RCBLI,
7024  bool modelPar_given_RCBLI,
7025  AdmsSensFadType & modelPar_CBCO,
7026  bool modelPar_given_CBCO,
7027  AdmsSensFadType & modelPar_MTAU,
7028  bool modelPar_given_MTAU,
7029  AdmsSensFadType & modelPar_TAUE,
7030  bool modelPar_given_TAUE,
7031  AdmsSensFadType & modelPar_TAUB,
7032  bool modelPar_given_TAUB,
7033  AdmsSensFadType & modelPar_TEPI,
7034  bool modelPar_given_TEPI,
7035  AdmsSensFadType & modelPar_TAUR,
7036  bool modelPar_given_TAUR,
7037  AdmsSensFadType & modelPar_DEG,
7038  bool modelPar_given_DEG,
7039  AdmsSensFadType & modelPar_XREC,
7040  bool modelPar_given_XREC,
7041  AdmsSensFadType & modelPar_AQBO,
7042  bool modelPar_given_AQBO,
7043  AdmsSensFadType & modelPar_AE,
7044  bool modelPar_given_AE,
7045  AdmsSensFadType & modelPar_AB,
7046  bool modelPar_given_AB,
7047  AdmsSensFadType & modelPar_AEPI,
7048  bool modelPar_given_AEPI,
7049  AdmsSensFadType & modelPar_AEX,
7050  bool modelPar_given_AEX,
7051  AdmsSensFadType & modelPar_AC,
7052  bool modelPar_given_AC,
7053  AdmsSensFadType & modelPar_ACBL,
7054  bool modelPar_given_ACBL,
7055  AdmsSensFadType & modelPar_DVGBF,
7056  bool modelPar_given_DVGBF,
7057  AdmsSensFadType & modelPar_DVGBR,
7058  bool modelPar_given_DVGBR,
7059  AdmsSensFadType & modelPar_VGB,
7060  bool modelPar_given_VGB,
7061  AdmsSensFadType & modelPar_VGC,
7062  bool modelPar_given_VGC,
7063  AdmsSensFadType & modelPar_VGJ,
7064  bool modelPar_given_VGJ,
7065  AdmsSensFadType & modelPar_VGZEB,
7066  bool modelPar_given_VGZEB,
7067  AdmsSensFadType & modelPar_AVGEB,
7068  bool modelPar_given_AVGEB,
7069  AdmsSensFadType & modelPar_TVGEB,
7070  bool modelPar_given_TVGEB,
7071  AdmsSensFadType & modelPar_DVGTE,
7072  bool modelPar_given_DVGTE,
7073  AdmsSensFadType & modelPar_DAIS,
7074  bool modelPar_given_DAIS,
7075  AdmsSensFadType & modelPar_AF,
7076  bool modelPar_given_AF,
7077  AdmsSensFadType & modelPar_KF,
7078  bool modelPar_given_KF,
7079  AdmsSensFadType & modelPar_KFN,
7080  bool modelPar_given_KFN,
7081  AdmsSensFadType & modelPar_ISS,
7082  bool modelPar_given_ISS,
7083  AdmsSensFadType & modelPar_ICSS,
7084  bool modelPar_given_ICSS,
7085  AdmsSensFadType & modelPar_IKS,
7086  bool modelPar_given_IKS,
7087  AdmsSensFadType & modelPar_CJS,
7088  bool modelPar_given_CJS,
7089  AdmsSensFadType & modelPar_VDS,
7090  bool modelPar_given_VDS,
7091  AdmsSensFadType & modelPar_PS,
7092  bool modelPar_given_PS,
7093  AdmsSensFadType & modelPar_VGS,
7094  bool modelPar_given_VGS,
7095  AdmsSensFadType & modelPar_AS,
7096  bool modelPar_given_AS,
7097  AdmsSensFadType & modelPar_ASUB,
7098  bool modelPar_given_ASUB,
7099  AdmsSensFadType & modelPar_MULT,
7100  bool modelPar_given_MULT,
7101  AdmsSensFadType & modelPar_GMIN,
7102  bool modelPar_given_GMIN,
7103  // non-reals (including hidden)
7104  int modelPar_LEVEL,
7105  bool modelPar_given_LEVEL,
7106  int modelPar_EXMOD,
7107  bool modelPar_given_EXMOD,
7108  int modelPar_EXPHI,
7109  bool modelPar_given_EXPHI,
7110  int modelPar_EXAVL,
7111  bool modelPar_given_EXAVL,
7112  int modelPar_EXSUB,
7113  bool modelPar_given_EXSUB,
7114  int modelPar_KAVL,
7115  bool modelPar_given_KAVL,
7116  int modelPar_TYPE,
7117  bool modelPar_given_TYPE// model variables
7118  ,
7119  // reals
7120  AdmsSensFadType & modelVar_An,
7121  AdmsSensFadType & modelVar_Tk,
7122  AdmsSensFadType & modelVar_Vt,
7123  AdmsSensFadType & modelVar_VtINV,
7124  AdmsSensFadType & modelVar_VDE_T,
7125  AdmsSensFadType & modelVar_VDC_T,
7126  AdmsSensFadType & modelVar_XP_T,
7127  AdmsSensFadType & modelVar_BF_T,
7128  AdmsSensFadType & modelVar_BRI_T,
7129  AdmsSensFadType & modelVar_IS_T,
7130  AdmsSensFadType & modelVar_VEF_T,
7131  AdmsSensFadType & modelVar_VER_T,
7132  AdmsSensFadType & modelVar_nZEB_T,
7133  AdmsSensFadType & modelVar_pow2_2mPE,
7134  AdmsSensFadType & modelVar_pow2_PEm2,
7135  AdmsSensFadType & modelVar_inv_VDE_T,
7136  AdmsSensFadType & modelVar_VGZEB_T,
7137  AdmsSensFadType & modelVar_TAUE_T,
7138  AdmsSensFadType & modelVar_TAUB_T,
7139  AdmsSensFadType & modelVar_TEPI_T,
7140  AdmsSensFadType & modelVar_TAUR_T,
7141  AdmsSensFadType & modelVar_BnT,
7142  AdmsSensFadType & modelVar_DEG_T,
7143  AdmsSensFadType & modelVar_VDS_T,
7144  AdmsSensFadType & modelVar_IKS_T,
7145  AdmsSensFadType & modelVar_IS_TM,
7146  AdmsSensFadType & modelVar_IK_TM,
7147  AdmsSensFadType & modelVar_IBF_TM,
7148  AdmsSensFadType & modelVar_IBR_TM,
7149  AdmsSensFadType & modelVar_IHC_M,
7150  AdmsSensFadType & modelVar_IZEB_TM,
7151  AdmsSensFadType & modelVar_CJE_TM,
7152  AdmsSensFadType & modelVar_CJC_TM,
7153  AdmsSensFadType & modelVar_RE_TM,
7154  AdmsSensFadType & modelVar_RBC_TM,
7155  AdmsSensFadType & modelVar_RBV_TM,
7156  AdmsSensFadType & modelVar_RCV_TM,
7157  AdmsSensFadType & modelVar_SCRCV_M,
7158  AdmsSensFadType & modelVar_RCCxx_TM,
7159  AdmsSensFadType & modelVar_GCCxx_TM,
7160  AdmsSensFadType & modelVar_GCCex_TM,
7161  AdmsSensFadType & modelVar_GCCin_TM,
7162  AdmsSensFadType & modelVar_KF_M,
7163  AdmsSensFadType & modelVar_KFN_M,
7164  AdmsSensFadType & modelVar_ISS_TM,
7165  AdmsSensFadType & modelVar_ICSS_TM,
7166  AdmsSensFadType & modelVar_IKS_TM,
7167  AdmsSensFadType & modelVar_CJS_TM,
7168  AdmsSensFadType & modelVar_Xext1,
7169  AdmsSensFadType & modelVar_CBEO_M,
7170  AdmsSensFadType & modelVar_CBCO_M,
7171  // basic variables
7172  double admsTemperature, double adms_vt_nom, double gmin, std::vector <AdmsSensFadType> & staticContributions, std::vector <AdmsSensFadType> & dynamicContributions, const Instance & theInstance)
7173 {
7174 
7175  // Local variables
7176  AdmsSensFadType common;
7177  AdmsSensFadType powerREC;
7178  AdmsSensFadType powerRBC;
7179  AdmsSensFadType powerRCCxx;
7180  AdmsSensFadType powerRCCex;
7181  AdmsSensFadType powerRCCin;
7182  AdmsSensFadType powerRBV;
7183  AdmsSensFadType powerCCS;
7184  AdmsSensFadType powerFBCS;
7185  AdmsSensFadType powerFBC1fB1;
7186  AdmsSensFadType exponentFBC1fB2;
7187  AdmsSensFadType powerFBC1fB2;
7188  AdmsSensFadType powerEBSCS;
7189  AdmsSensFadType powerEBSC1f;
7190  AdmsSensFadType powerRBCS;
7191  AdmsSensFadType powerRBC1f;
7192  AdmsSensFadType powerExCS;
7193  AdmsSensFadType powerExC1f;
7194  AdmsSensFadType powerExCSMOD;
7195  AdmsSensFadType powerExC1fMOD;
7196  AdmsSensFadType powerSubsCS_B1S;
7197  AdmsSensFadType powerSubsCS_BS;
7198  AdmsSensFadType twoqIavl;
7199  AdmsSensFadType powerCCS_A;
7200  AdmsSensFadType Vb2c1;
7201  AdmsSensFadType Vb2c2;
7202  AdmsSensFadType Vb2e1;
7203  AdmsSensFadType Vb1e1;
7204  AdmsSensFadType Vb1b2;
7205  AdmsSensFadType Vsc1;
7206  AdmsSensFadType Vc1c2;
7207  AdmsSensFadType Vee1;
7208  AdmsSensFadType Vbb1;
7209  AdmsSensFadType Vbe;
7210  AdmsSensFadType Vbc;
7211  AdmsSensFadType Vc4c1;
7212  AdmsSensFadType Vc3c4;
7213  AdmsSensFadType Vb1c4;
7214  AdmsSensFadType Vcc3;
7215  AdmsSensFadType Vbc3;
7216  AdmsSensFadType Vsc4;
7217  AdmsSensFadType Vsc3;
7218  double expl;
7219  AdmsSensFadType eVb2c2;
7220  AdmsSensFadType eVb2e1;
7221  AdmsSensFadType eVb1e1;
7222  AdmsSensFadType eVb1c4;
7223  AdmsSensFadType eVbc3;
7224  AdmsSensFadType eVsc1;
7225  AdmsSensFadType eVsc3;
7226  AdmsSensFadType eVsc4;
7227  AdmsSensFadType eVbc3VDC;
7228  AdmsSensFadType eVb1c4VDC;
7229  AdmsSensFadType eVb2c2VDC;
7230  AdmsSensFadType eVb2c1VDC;
7231  AdmsSensFadType K0;
7232  AdmsSensFadType Kw;
7233  AdmsSensFadType pW;
7234  AdmsSensFadType Ec;
7235  AdmsSensFadType Ic1c2;
7236  AdmsSensFadType pav;
7237  AdmsSensFadType tmpV;
7238  AdmsSensFadType Vqs_th;
7239  AdmsSensFadType eps_VDC;
7240  AdmsSensFadType eps2;
7241  AdmsSensFadType x2;
7242  AdmsSensFadType Vqs;
7243  AdmsSensFadType Iqs;
7244  AdmsSensFadType Ic1c2_Iqs;
7245  AdmsSensFadType alpha1;
7246  AdmsSensFadType alpha;
7247  AdmsSensFadType vyi;
7248  AdmsSensFadType yi;
7249  AdmsSensFadType xi_w;
7250  AdmsSensFadType gp0;
7251  AdmsSensFadType gp0_help;
7252  AdmsSensFadType gp02;
7253  AdmsSensFadType sqr_arg;
7254  AdmsSensFadType p0star;
7255  AdmsSensFadType eVb2c2star;
7256  AdmsSensFadType B1;
7257  AdmsSensFadType B2;
7258  AdmsSensFadType Vxi0;
7259  AdmsSensFadType Vch;
7260  AdmsSensFadType Icap;
7261  AdmsSensFadType Icap_IHC;
7262  AdmsSensFadType Vfe;
7263  AdmsSensFadType a_VDE;
7264  AdmsSensFadType Vje;
7265  AdmsSensFadType E0BE;
7266  AdmsSensFadType Vte;
7267  AdmsSensFadType Vjunc;
7268  AdmsSensFadType bjc;
7269  AdmsSensFadType Vfc;
7270  AdmsSensFadType Vjc;
7271  AdmsSensFadType fI;
7272  AdmsSensFadType Vcv;
7273  AdmsSensFadType Vtc;
7274  AdmsSensFadType If0;
7275  AdmsSensFadType f1;
7276  AdmsSensFadType n0;
7277  AdmsSensFadType f2;
7278  AdmsSensFadType nB;
7279  AdmsSensFadType termE;
7280  AdmsSensFadType termC;
7281  AdmsSensFadType q0I;
7282  AdmsSensFadType q1I;
7283  AdmsSensFadType In;
7284  AdmsSensFadType Ibf0;
7285  AdmsSensFadType tmpExp;
7286  AdmsSensFadType eZEB;
7287  AdmsSensFadType x;
7288  AdmsSensFadType dE0BE;
7289  AdmsSensFadType edZEB;
7290  AdmsSensFadType DZEB;
7291  AdmsSensFadType g1;
7292  AdmsSensFadType g2;
7293  AdmsSensFadType nBex;
7294  AdmsSensFadType pWex;
7295  AdmsSensFadType Isf;
7296  AdmsSensFadType Xg1;
7297  AdmsSensFadType XnBex;
7298  AdmsSensFadType XIMex;
7299  AdmsSensFadType XIMsub;
7300  AdmsSensFadType Vex_bias;
7301  AdmsSensFadType Vex;
7302  AdmsSensFadType vdif;
7303  AdmsSensFadType VBex;
7304  AdmsSensFadType Fex;
7305  AdmsSensFadType q0Q;
7306  AdmsSensFadType q1Q;
7307  AdmsSensFadType qBQ;
7308  AdmsSensFadType Ib1b2;
7309  AdmsSensFadType Iavl;
7310  AdmsSensFadType dEdx0;
7311  AdmsSensFadType xd;
7312  AdmsSensFadType xi_w1;
7313  AdmsSensFadType Weff;
7314  AdmsSensFadType Wd;
7315  AdmsSensFadType Eav;
7316  AdmsSensFadType E0;
7317  AdmsSensFadType SHw;
7318  AdmsSensFadType Efi;
7319  AdmsSensFadType Ew;
7320  AdmsSensFadType Em;
7321  AdmsSensFadType EmEav_Em;
7322  AdmsSensFadType lambda;
7323  AdmsSensFadType Gmax;
7324  AdmsSensFadType Vb2c2star;
7325  AdmsSensFadType Qte;
7326  AdmsSensFadType Vje_s;
7327  AdmsSensFadType Qte_s;
7328  AdmsSensFadType Qtc;
7329  AdmsSensFadType Qb0;
7330  AdmsSensFadType Qbe_qs;
7331  AdmsSensFadType Qbc_qs;
7332  AdmsSensFadType a_VDC;
7333  AdmsSensFadType Vjcex;
7334  AdmsSensFadType Vtexv;
7335  AdmsSensFadType Qtex;
7336  AdmsSensFadType XVjcex;
7337  AdmsSensFadType XVtexv;
7338  AdmsSensFadType XQtex;
7339  AdmsSensFadType a_VDS;
7340  AdmsSensFadType Vfs;
7341  AdmsSensFadType Vjs;
7342  AdmsSensFadType Qts;
7343  AdmsSensFadType Qe0;
7344  AdmsSensFadType Qe;
7345  AdmsSensFadType Qepi0;
7346  AdmsSensFadType Qepi;
7347  AdmsSensFadType Qex;
7348  AdmsSensFadType XQex;
7349  AdmsSensFadType Xg2;
7350  AdmsSensFadType XpWex;
7351  AdmsSensFadType Qb1b2;
7352  AdmsSensFadType dVteVje;
7353  AdmsSensFadType Vb2e1Vfe;
7354  AdmsSensFadType dVjeVb2e1;
7355  AdmsSensFadType dVteVb2e1;
7356  AdmsSensFadType dQteVb2e1;
7357  AdmsSensFadType dn0Vb2e1;
7358  AdmsSensFadType dQbeVb2e1;
7359  AdmsSensFadType dQeVb2e1;
7360  AdmsSensFadType Qbc;
7361  AdmsSensFadType Qbe;
7362  AdmsSensFadType cor_exp_1;
7363  AdmsSensFadType cor_exp_2;
7364 
7365 
7366  // -- code converted from analog/code block
7367  {
7368  Vb2c1 = probeVars[admsProbeID_V_b2_c1];
7369 
7370  Vb2c2 = probeVars[admsProbeID_V_b2_c2];
7371 
7372  Vb2e1 = (modelPar_TYPE*(probeVars[admsProbeID_V_b2_e1]));
7373  Vb1e1 = probeVars[admsProbeID_V_b1_e1];
7374 
7375  Vb1b2 = probeVars[admsProbeID_V_b1_b2];
7376 
7377  Vsc1 = (modelPar_TYPE*(probeVars[admsProbeID_V_s_c1]));
7378  Vc1c2 = (modelPar_TYPE*(probeVars[admsProbeID_V_c1_c2]));
7379  Vee1 = (modelPar_TYPE*(probeVars[admsProbeID_V_e_e1]));
7380  Vbb1 = (modelPar_TYPE*(probeVars[admsProbeID_V_b_b1]));
7381  Vbe = (modelPar_TYPE*(probeVars[admsProbeID_V_b_e]));
7382  Vbc = (modelPar_TYPE*(probeVars[admsProbeID_V_b_c]));
7383  if ((modelPar_RCBLX>0.0))
7384  {
7385  if ((modelPar_RCBLI>0.0))
7386  {
7387  Vc4c1 = (modelPar_TYPE*(probeVars[admsProbeID_V_c4_c1]));
7388  Vc3c4 = (modelPar_TYPE*(probeVars[admsProbeID_V_c3_c4]));
7389  }
7390  else
7391  {
7392  Vc4c1 = 0;
7393  Vc3c4 = (modelPar_TYPE*(probeVars[admsProbeID_V_c3_c1]));
7394  }
7395  }
7396  else
7397  {
7398  if ((modelPar_RCBLI>0.0))
7399  {
7400  Vc4c1 = (modelPar_TYPE*(probeVars[admsProbeID_V_c4_c1]));
7401  Vc3c4 = 0;
7402  }
7403  else
7404  {
7405  Vc4c1 = 0;
7406  Vc3c4 = 0;
7407  }
7408  }
7409  Vb1c4 = (((Vb1b2+Vb2c2)-Vc1c2)-Vc4c1);
7410  Vcc3 = ((((-Vbc)+Vbb1)+Vb1c4)-Vc3c4);
7411  Vbc3 = (Vbc+Vcc3);
7412  Vsc4 = (Vsc1-Vc4c1);
7413  Vsc3 = (Vsc4-Vc3c4);
7414  if (((Vb2c2*modelVar_VtINV)<400.0))
7415  {
7416  eVb2c2 = exp((Vb2c2*modelVar_VtINV));
7417  }
7418  else
7419  {
7420  expl = exp(400.0);
7421  eVb2c2 = (expl*(1.0+((Vb2c2*modelVar_VtINV)-400.0)));
7422  }
7423  if (((Vb2e1*modelVar_VtINV)<400.0))
7424  {
7425  eVb2e1 = exp((Vb2e1*modelVar_VtINV));
7426  }
7427  else
7428  {
7429  expl = exp(400.0);
7430  eVb2e1 = (expl*(1.0+((Vb2e1*modelVar_VtINV)-400.0)));
7431  }
7432  if (((Vb1e1*modelVar_VtINV)<400.0))
7433  {
7434  eVb1e1 = exp((Vb1e1*modelVar_VtINV));
7435  }
7436  else
7437  {
7438  expl = exp(400.0);
7439  eVb1e1 = (expl*(1.0+((Vb1e1*modelVar_VtINV)-400.0)));
7440  }
7441  if (((Vb1c4*modelVar_VtINV)<400.0))
7442  {
7443  eVb1c4 = exp((Vb1c4*modelVar_VtINV));
7444  }
7445  else
7446  {
7447  expl = exp(400.0);
7448  eVb1c4 = (expl*(1.0+((Vb1c4*modelVar_VtINV)-400.0)));
7449  }
7450  if (((Vb1b2*modelVar_VtINV)<400.0))
7451  {
7452  instanceVar_eVb1b2 = exp((Vb1b2*modelVar_VtINV));
7453  }
7454  else
7455  {
7456  expl = exp(400.0);
7457  instanceVar_eVb1b2 = (expl*(1.0+((Vb1b2*modelVar_VtINV)-400.0)));
7458  }
7459  if (((Vbc3*modelVar_VtINV)<400.0))
7460  {
7461  eVbc3 = exp((Vbc3*modelVar_VtINV));
7462  }
7463  else
7464  {
7465  expl = exp(400.0);
7466  eVbc3 = (expl*(1.0+((Vbc3*modelVar_VtINV)-400.0)));
7467  }
7468  if (((Vsc1*modelVar_VtINV)<400.0))
7469  {
7470  eVsc1 = exp((Vsc1*modelVar_VtINV));
7471  }
7472  else
7473  {
7474  expl = exp(400.0);
7475  eVsc1 = (expl*(1.0+((Vsc1*modelVar_VtINV)-400.0)));
7476  }
7477  if (((Vsc3*modelVar_VtINV)<400.0))
7478  {
7479  eVsc3 = exp((Vsc3*modelVar_VtINV));
7480  }
7481  else
7482  {
7483  expl = exp(400.0);
7484  eVsc3 = (expl*(1.0+((Vsc3*modelVar_VtINV)-400.0)));
7485  }
7486  if (((Vsc4*modelVar_VtINV)<400.0))
7487  {
7488  eVsc4 = exp((Vsc4*modelVar_VtINV));
7489  }
7490  else
7491  {
7492  expl = exp(400.0);
7493  eVsc4 = (expl*(1.0+((Vsc4*modelVar_VtINV)-400.0)));
7494  }
7495  if ((((Vbc3-modelVar_VDC_T)*modelVar_VtINV)<400.0))
7496  {
7497  eVbc3VDC = exp(((Vbc3-modelVar_VDC_T)*modelVar_VtINV));
7498  }
7499  else
7500  {
7501  expl = exp(400.0);
7502  eVbc3VDC = (expl*(1.0+(((Vbc3-modelVar_VDC_T)*modelVar_VtINV)-400.0)));
7503  }
7504  if ((((Vb1c4-modelVar_VDC_T)*modelVar_VtINV)<400.0))
7505  {
7506  eVb1c4VDC = exp(((Vb1c4-modelVar_VDC_T)*modelVar_VtINV));
7507  }
7508  else
7509  {
7510  expl = exp(400.0);
7511  eVb1c4VDC = (expl*(1.0+(((Vb1c4-modelVar_VDC_T)*modelVar_VtINV)-400.0)));
7512  }
7513  if ((((Vb2c2-modelVar_VDC_T)*modelVar_VtINV)<400.0))
7514  {
7515  eVb2c2VDC = exp(((Vb2c2-modelVar_VDC_T)*modelVar_VtINV));
7516  }
7517  else
7518  {
7519  expl = exp(400.0);
7520  eVb2c2VDC = (expl*(1.0+(((Vb2c2-modelVar_VDC_T)*modelVar_VtINV)-400.0)));
7521  }
7522  if ((((Vb2c1-modelVar_VDC_T)*modelVar_VtINV)<400.0))
7523  {
7524  eVb2c1VDC = exp(((Vb2c1-modelVar_VDC_T)*modelVar_VtINV));
7525  }
7526  else
7527  {
7528  expl = exp(400.0);
7529  eVb2c1VDC = (expl*(1.0+(((Vb2c1-modelVar_VDC_T)*modelVar_VtINV)-400.0)));
7530  }
7531  K0 = sqrt((1.0+(4.0*eVb2c2VDC)));
7532  Kw = sqrt((1.0+(4.0*eVb2c1VDC)));
7533  pW = ((2.0*eVb2c1VDC)/(1.0+Kw));
7534  if ((pW<1.0e-40))
7535  {
7536  pW = 0;
7537  }
7538  Ec = (modelVar_Vt*((K0-Kw)-log(((K0+1.0)/(Kw+1.0)))));
7539  Ic1c2 = ((Ec+Vc1c2)/modelVar_RCV_TM);
7540  if ((Ic1c2>0.0))
7541  {
7542  if ((Vb2c1<100.0))
7543  {
7544  tmpV = Vb2c1;
7545  }
7546  else
7547  {
7548  tmpV = (100.0+log((1.0+(Vb2c1-100.0))));
7549  }
7550  tmpV = tmpV;
7551  Vqs_th = ((modelVar_VDC_T+((2.0*modelVar_Vt)*log(((((0.5*Ic1c2)*modelVar_RCV_TM)*modelVar_VtINV)+1.0))))-tmpV);
7552  eps_VDC = (0.2*modelVar_VDC_T);
7553  eps2 = (eps_VDC*eps_VDC);
7554  x2 = (Vqs_th*Vqs_th);
7555  if ((Vqs_th<0.0))
7556  {
7557  Vqs = ((0.5*eps2)/(sqrt((x2+eps2))-Vqs_th));
7558  }
7559  else
7560  {
7561  Vqs = (0.5*(sqrt((x2+eps2))+Vqs_th));
7562  }
7563  Vqs = Vqs;
7564  Iqs = ((Vqs*(Vqs+(modelVar_IHC_M*modelVar_SCRCV_M)))/(modelVar_SCRCV_M*(Vqs+(modelVar_IHC_M*modelVar_RCV_TM))));
7565  Ic1c2_Iqs = (Ic1c2/Iqs);
7566  {
7567  //Block-local variables for block
7568  AdmsSensFadType dxa;
7569  //End of Block-local variables
7570  dxa = ((Ic1c2_Iqs-1.0)/modelPar_AXI);
7571  if ((Ic1c2_Iqs<1.0))
7572  {
7573  alpha1 = (1.0+(modelPar_AXI*log((1.0+exp(dxa)))));
7574  }
7575  else
7576  {
7577  alpha1 = (Ic1c2_Iqs+(modelPar_AXI*log((1.0+exp((-dxa))))));
7578  }
7579  alpha1 = alpha1;
7580  }
7581  alpha = (alpha1/(1.0+(modelPar_AXI*log((1.0+exp(((-1.0)/modelPar_AXI)))))));
7582  vyi = (Vqs/(modelVar_IHC_M*modelVar_SCRCV_M));
7583  yi = ((1.0+sqrt((1.0+(((4.0*alpha)*vyi)*(1.0+vyi)))))/((2.0*alpha)*(1.0+vyi)));
7584  xi_w = (1.0-(yi/(1.0+(pW*yi))));
7585  gp0 = ((((0.5*Ic1c2)*modelVar_RCV_TM)*xi_w)*modelVar_VtINV);
7586  gp0_help = ((2.0*gp0)+(pW*((pW+gp0)+1.0)));
7587  gp02 = (0.5*(gp0-1.0));
7588  sqr_arg = ((gp02*gp02)+gp0_help);
7589  if ((gp0>=1.0))
7590  {
7591  p0star = (gp02+sqrt(sqr_arg));
7592  }
7593  else
7594  {
7595  p0star = (gp0_help/(sqrt(sqr_arg)-gp02));
7596  }
7597  if ((p0star<1.0e-40))
7598  {
7599  p0star = 0.0;
7600  }
7601  eVb2c2star = ((p0star*(p0star+1.0))*exp((modelVar_VDC_T*modelVar_VtINV)));
7602  B1 = ((0.5*modelVar_SCRCV_M)*(Ic1c2-modelVar_IHC_M));
7603  B2 = (((modelVar_SCRCV_M*modelVar_RCV_TM)*modelVar_IHC_M)*Ic1c2);
7604  Vxi0 = (B1+sqrt(((B1*B1)+B2)));
7605  Vch = (modelVar_VDC_T*(0.1+((2.0*Ic1c2)/(Ic1c2+Iqs))));
7606  Icap = ((modelVar_IHC_M*Ic1c2)/(modelVar_IHC_M+Ic1c2));
7607  Icap_IHC = (modelVar_IHC_M/(modelVar_IHC_M+Ic1c2));
7608  }
7609  else
7610  {
7611  Iqs = 0.0;
7612  p0star = ((2.0*eVb2c2VDC)/(1.0+K0));
7613  eVb2c2star = eVb2c2;
7614  if (((fabs(Vc1c2)<(1.0e-5*modelVar_Vt))||(fabs(Ec)<((1.0e-40*modelVar_Vt)*(K0+Kw)))))
7615  {
7616  pav = (0.5*(p0star+pW));
7617  xi_w = (pav/(pav+1.0));
7618  }
7619  else
7620  {
7621  xi_w = (Ec/((Ec+Vb2c2)-Vb2c1));
7622  }
7623  Vxi0 = Vc1c2;
7624  Vch = (0.1*modelVar_VDC_T);
7625  Icap = Ic1c2;
7626  Icap_IHC = (1.0-(Icap/modelVar_IHC_M));
7627  }
7628  Vfe = (modelVar_VDE_T*(1.0-pow(3.0,((-1.0)/modelPar_PE))));
7629  a_VDE = (0.1*modelVar_VDE_T);
7630  {
7631  //Block-local variables for block
7632  AdmsSensFadType dxa;
7633  //End of Block-local variables
7634  dxa = ((Vb2e1-Vfe)/a_VDE);
7635  if ((Vb2e1<Vfe))
7636  {
7637  Vje = (Vb2e1-(a_VDE*log((1.0+exp(dxa)))));
7638  }
7639  else
7640  {
7641  Vje = (Vfe-(a_VDE*log((1.0+exp((-dxa))))));
7642  }
7643  Vje = Vje;
7644  }
7645  E0BE = pow((1.0-(Vje*modelVar_inv_VDE_T)),(1.0-modelPar_PE));
7646  Vte = (((modelVar_VDE_T/(1.0-modelPar_PE))*(1.0-E0BE))+(3.0*(Vb2e1-Vje)));
7647  Vjunc = (Vb2c1+Vxi0);
7648  bjc = ((2.0-modelVar_XP_T)/(1.0-modelVar_XP_T));
7649  Vfc = (modelVar_VDC_T*(1.0-pow(bjc,((-1.0)/modelPar_PC))));
7650  {
7651  //Block-local variables for block
7652  AdmsSensFadType dxa;
7653  //End of Block-local variables
7654  dxa = ((Vjunc-Vfc)/Vch);
7655  if ((Vjunc<Vfc))
7656  {
7657  Vjc = (Vjunc-(Vch*log((1.0+exp(dxa)))));
7658  }
7659  else
7660  {
7661  Vjc = (Vfc-(Vch*log((1.0+exp((-dxa))))));
7662  }
7663  Vjc = Vjc;
7664  }
7665  fI = pow(Icap_IHC,modelPar_MC);
7666  Vcv = (((modelVar_VDC_T/(1.0-modelPar_PC))*(1.0-(fI*pow((1.0-(Vjc/modelVar_VDC_T)),(1.0-modelPar_PC)))))+((fI*bjc)*(Vjunc-Vjc)));
7667  Vtc = (((1.0-modelVar_XP_T)*Vcv)+(modelVar_XP_T*Vb2c1));
7668  If0 = ((4.0*modelVar_IS_TM)/modelVar_IK_TM);
7669  f1 = (If0*eVb2e1);
7670  n0 = (f1/(1.0+sqrt((1.0+f1))));
7671  f2 = (If0*eVb2c2star);
7672  nB = (f2/(1.0+sqrt((1.0+f2))));
7673  if ((modelPar_DEG==0.0))
7674  {
7675  q0I = ((1.0+(Vte/modelVar_VER_T))+(Vtc/modelVar_VEF_T));
7676  }
7677  else
7678  {
7679  termE = ((((Vte/modelVar_VER_T)+1.0)*modelVar_DEG_T)*modelVar_VtINV);
7680  termC = ((((-Vtc)/modelVar_VEF_T)*modelVar_DEG_T)*modelVar_VtINV);
7681  q0I = ((exp(termE)-exp(termC))/(exp((modelVar_DEG_T*modelVar_VtINV))-1.0));
7682  }
7683  eps2 = (0.1*0.1);
7684  x2 = (q0I*q0I);
7685  if ((q0I<0.0))
7686  {
7687  q1I = ((0.5*eps2)/(sqrt((x2+eps2))-q0I));
7688  }
7689  else
7690  {
7691  q1I = (0.5*(sqrt((x2+eps2))+q0I));
7692  }
7693  q1I = q1I;
7694  instanceVar_qBI = (q1I*(1.0+(0.5*(n0+nB))));
7695  instanceVar_Ir = (modelVar_IS_TM*eVb2c2star);
7696  instanceVar_If = (modelVar_IS_TM*eVb2e1);
7697  In = ((instanceVar_If-instanceVar_Ir)/instanceVar_qBI);
7698  Ibf0 = (modelVar_IS_TM/modelVar_BF_T);
7699  if ((modelPar_XREC==0.0))
7700  {
7701  instanceVar_Ib1 = (((1.0-modelPar_XIBI)*Ibf0)*(eVb2e1-1.0));
7702  }
7703  else
7704  {
7705  instanceVar_Ib1 = (((1.0-modelPar_XIBI)*Ibf0)*(((1.0-modelPar_XREC)*(eVb2e1-1.0))+((modelPar_XREC*((eVb2e1+eVb2c2star)-2.0))*(1.0+(Vtc/modelVar_VEF_T)))));
7706  }
7707  instanceVar_Ib1_s = ((modelPar_XIBI*Ibf0)*(eVb1e1-1.0));
7708  if ((((Vb2e1*modelVar_VtINV)/modelPar_MLF)<400.0))
7709  {
7710  tmpExp = exp(((Vb2e1*modelVar_VtINV)/modelPar_MLF));
7711  }
7712  else
7713  {
7714  expl = exp(400.0);
7715  tmpExp = (expl*(1.0+(((Vb2e1*modelVar_VtINV)/modelPar_MLF)-400.0)));
7716  }
7717  instanceVar_Ib2 = ((modelVar_IBF_TM*(tmpExp-1.0))+(modelPar_GMIN*Vb2e1));
7718  if ((((0.5*Vb1c4)*modelVar_VtINV)<400.0))
7719  {
7720  tmpExp = exp(((0.5*Vb1c4)*modelVar_VtINV));
7721  }
7722  else
7723  {
7724  expl = exp(400.0);
7725  tmpExp = (expl*(1.0+(((0.5*Vb1c4)*modelVar_VtINV)-400.0)));
7726  }
7727  instanceVar_Ib3 = (((modelVar_IBR_TM*(eVb1c4-1.0))/(tmpExp+exp(((0.5*modelPar_VLR)*modelVar_VtINV))))+(modelPar_GMIN*Vb1c4));
7728  if ((((modelPar_IZEB>0.0)&&(modelPar_NZEB>0.0))&&(Vb2e1<0)))
7729  {
7730  if (((modelVar_nZEB_T*(1-(modelVar_pow2_2mPE/(2.0*E0BE))))<400.0))
7731  {
7732  eZEB = exp((modelVar_nZEB_T*(1-(modelVar_pow2_2mPE/(2.0*E0BE)))));
7733  }
7734  else
7735  {
7736  expl = exp(400.0);
7737  eZEB = (expl*(1.0+((modelVar_nZEB_T*(1-(modelVar_pow2_2mPE/(2.0*E0BE))))-400.0)));
7738  }
7739  x = (Vb2e1*modelVar_inv_VDE_T);
7740  dE0BE = ((pow((-x),((-2.0)-modelPar_PE))*((modelPar_PE*((1-(modelPar_PE*modelPar_PE))-((3*x)*(modelPar_PE-1))))-(((6*x)*x)*((modelPar_PE-1)+x))))*0.16666666666666666667);
7741  if (((((Vb2e1*modelVar_pow2_2mPE)*modelVar_nZEB_T)/(modelVar_VGZEB_T*dE0BE))<400.0))
7742  {
7743  edZEB = exp((((Vb2e1*modelVar_pow2_2mPE)*modelVar_nZEB_T)/(modelVar_VGZEB_T*dE0BE)));
7744  }
7745  else
7746  {
7747  expl = exp(400.0);
7748  edZEB = (expl*(1.0+((((Vb2e1*modelVar_pow2_2mPE)*modelVar_nZEB_T)/(modelVar_VGZEB_T*dE0BE))-400.0)));
7749  }
7750  DZEB = ((-Vb2e1)-(((modelVar_VGZEB_T*dE0BE)*(1-edZEB))/(modelVar_pow2_2mPE*modelVar_nZEB_T)));
7751  instanceVar_Izteb = ((((((2.0*modelVar_IZEB_TM)*DZEB)*E0BE)*eZEB)*modelVar_inv_VDE_T)*modelVar_pow2_PEm2);
7752  }
7753  else
7754  {
7755  DZEB = 0;
7756  instanceVar_Izteb = 0;
7757  }
7758  g1 = (If0*eVb1c4);
7759  g2 = (4.0*eVb1c4VDC);
7760  nBex = ((g1-If0)/(1.0+sqrt((1.0+g1))));
7761  pWex = (g2/(1.0+sqrt((1.0+g2))));
7762  instanceVar_Iex = ((modelVar_IK_TM*nBex)/(2.0*modelVar_BRI_T));
7763  if ((modelPar_EXSUB==1.0))
7764  {
7765  instanceVar_Isub = (((2.0*modelVar_ISS_TM)*(eVb1c4-eVsc4))/(1.0+sqrt((1.0+((4.0*(modelVar_IS_TM/modelVar_IKS_TM))*eVb1c4)))));
7766  }
7767  else
7768  {
7769  instanceVar_Isub = (((2.0*modelVar_ISS_TM)*(eVb1c4-1.0))/(1.0+sqrt((1.0+((4.0*(modelVar_IS_TM/modelVar_IKS_TM))*eVb1c4)))));
7770  }
7771  if ((modelPar_ICSS<0.0))
7772  {
7773  Isf = (modelVar_ISS_TM*(eVsc1-1.0));
7774  }
7775  else
7776  {
7777  Isf = (modelVar_ICSS_TM*(eVsc1-1.0));
7778  }
7779  instanceVar_XIex = 0.0;
7780  instanceVar_XIsub = 0.0;
7781  if (((modelPar_EXMOD==1)||(modelPar_EXMOD==2)))
7782  {
7783  instanceVar_Iex = (instanceVar_Iex*modelVar_Xext1);
7784  instanceVar_Isub = (instanceVar_Isub*modelVar_Xext1);
7785  Xg1 = (If0*eVbc3);
7786  XnBex = ((Xg1-If0)/(1.0+sqrt((1.0+Xg1))));
7787  XIMex = ((((modelPar_XEXT*0.5)*modelVar_IK_TM)*XnBex)/modelVar_BRI_T);
7788  if ((modelPar_EXSUB==1.0))
7789  {
7790  XIMsub = ((((modelPar_XEXT*2.0)*modelVar_ISS_TM)*(eVbc3-eVsc3))/(1.0+sqrt((1.0+(((4.0*modelVar_IS_T)/modelVar_IKS_T)*eVbc3)))));
7791  }
7792  else
7793  {
7794  XIMsub = ((((modelPar_XEXT*2.0)*modelVar_ISS_TM)*(eVbc3-1.0))/(1.0+sqrt((1.0+(((4.0*modelVar_IS_T)/modelVar_IKS_T)*eVbc3)))));
7795  }
7796  if ((modelPar_EXMOD==1))
7797  {
7798  Vex_bias = ((modelPar_XEXT*((modelVar_IS_TM/modelVar_BRI_T)+modelVar_ISS_TM))*modelVar_RCCxx_TM);
7799  Vex = (modelVar_Vt*(2.0-log((Vex_bias*modelVar_VtINV))));
7800  vdif = (Vbc3-Vex);
7801  eps2 = (0.11*0.11);
7802  x2 = (vdif*vdif);
7803  if ((vdif<0.0))
7804  {
7805  VBex = ((0.5*eps2)/(sqrt((x2+eps2))-vdif));
7806  }
7807  else
7808  {
7809  VBex = (0.5*(sqrt((x2+eps2))+vdif));
7810  }
7811  VBex = VBex;
7812  Fex = (VBex/((Vex_bias+((XIMex+XIMsub)*modelVar_RCCxx_TM))+VBex));
7813  }
7814  else
7815  {
7816  Vex = 0.0;
7817  vdif = 0.0;
7818  VBex = 0.0;
7819  Fex = 1.0;
7820  }
7821  instanceVar_XIex = (Fex*XIMex);
7822  instanceVar_XIsub = (Fex*XIMsub);
7823  }
7824  else
7825  {
7826  Fex = 0;
7827  XnBex = 0;
7828  }
7829  q0Q = ((1.0+(Vte/modelVar_VER_T))+(Vtc/modelVar_VEF_T));
7830  eps2 = (0.1*0.1);
7831  x2 = (q0Q*q0Q);
7832  if ((q0Q<0.0))
7833  {
7834  q1Q = ((0.5*eps2)/(sqrt((x2+eps2))-q0Q));
7835  }
7836  else
7837  {
7838  q1Q = (0.5*(sqrt((x2+eps2))+q0Q));
7839  }
7840  q1Q = q1Q;
7841  qBQ = (q1Q*(1.0+(0.5*(n0+nB))));
7842  instanceVar_Rb2 = ((3.0*modelVar_RBV_TM)/qBQ);
7843  Ib1b2 = ((((2.0*modelVar_Vt)*(instanceVar_eVb1b2-1.0))+Vb1b2)/instanceVar_Rb2);
7844  Iavl = 0.0;
7845  instanceVar_Gem = 0.0;
7846  if (((Ic1c2>0.0)&&(Vb2c1<modelVar_VDC_T)))
7847  {
7848  dEdx0 = ((2.0*modelPar_VAVL)/(modelPar_WAVL*modelPar_WAVL));
7849  sqr_arg = ((modelVar_VDC_T-Vb2c1)/Icap_IHC);
7850  xd = sqrt(((2.0*sqr_arg)/dEdx0));
7851  if ((modelPar_EXAVL==0.0))
7852  {
7853  Weff = modelPar_WAVL;
7854  }
7855  else
7856  {
7857  xi_w1 = (1.0-(0.5*xi_w));
7858  Weff = ((modelPar_WAVL*xi_w1)*xi_w1);
7859  }
7860  Wd = ((xd*Weff)/sqrt(((xd*xd)+(Weff*Weff))));
7861  Eav = ((modelVar_VDC_T-Vb2c1)/Wd);
7862  E0 = (Eav+(((0.5*Wd)*dEdx0)*Icap_IHC));
7863  if ((modelPar_EXAVL==0))
7864  {
7865  Em = E0;
7866  }
7867  else
7868  {
7869  SHw = (1.0+((2.0*modelPar_SFH)*(1.0+(2.0*xi_w))));
7870  Efi = ((1.0+modelPar_SFH)/(1.0+(2.0*modelPar_SFH)));
7871  Ew = (Eav-(((0.5*Wd)*dEdx0)*(Efi-(Ic1c2/(modelVar_IHC_M*SHw)))));
7872  sqr_arg = (((Ew-E0)*(Ew-E0))+((((0.1*Eav)*Eav)*Icap)/modelVar_IHC_M));
7873  Em = (0.5*((Ew+E0)+sqrt(sqr_arg)));
7874  }
7875  EmEav_Em = ((Em-Eav)/Em);
7876  if ((fabs(EmEav_Em)>1.0e-7))
7877  {
7878  lambda = ((0.5*Wd)/EmEav_Em);
7879  instanceVar_Gem = ((((modelVar_An/modelVar_BnT)*Em)*lambda)*(exp(((-modelVar_BnT)/Em))-exp((((-modelVar_BnT)/Em)*(1.0+(Weff/lambda))))));
7880  }
7881  else
7882  {
7883  instanceVar_Gem = ((modelVar_An*Weff)*exp(((-modelVar_BnT)/Em)));
7884  }
7885  Gmax = (((modelVar_Vt/(Ic1c2*(modelVar_RBC_TM+instanceVar_Rb2)))+(instanceVar_qBI/modelVar_BF_T))+(modelVar_RE_TM/(modelVar_RBC_TM+instanceVar_Rb2)));
7886  Iavl = ((Ic1c2*instanceVar_Gem)/((instanceVar_Gem+(instanceVar_Gem/Gmax))+1.0));
7887  }
7888  if ((eVb2c2star>0.0))
7889  {
7890  Vb2c2star = (modelVar_Vt*log(eVb2c2star));
7891  }
7892  else
7893  {
7894  Vb2c2star = Vb2c2;
7895  }
7896  Qte = (((1.0-modelPar_XCJE)*modelVar_CJE_TM)*Vte);
7897  {
7898  //Block-local variables for block
7899  AdmsSensFadType dxa;
7900  //End of Block-local variables
7901  dxa = ((Vb1e1-Vfe)/a_VDE);
7902  if ((Vb1e1<Vfe))
7903  {
7904  Vje_s = (Vb1e1-(a_VDE*log((1.0+exp(dxa)))));
7905  }
7906  else
7907  {
7908  Vje_s = (Vfe-(a_VDE*log((1.0+exp((-dxa))))));
7909  }
7910  Vje_s = Vje_s;
7911  }
7912  Qte_s = ((modelPar_XCJE*modelVar_CJE_TM)*(((modelVar_VDE_T/(1.0-modelPar_PE))*(1.0-pow((1.0-(Vje_s*modelVar_inv_VDE_T)),(1.0-modelPar_PE))))+(3.0*(Vb1e1-Vje_s))));
7913  Qtc = ((modelPar_XCJC*modelVar_CJC_TM)*Vtc);
7914  Qb0 = (modelVar_TAUB_T*modelVar_IK_TM);
7915  Qbe_qs = (((0.5*Qb0)*n0)*q1Q);
7916  Qbc_qs = (((0.5*Qb0)*nB)*q1Q);
7917  a_VDC = (0.1*modelVar_VDC_T);
7918  {
7919  //Block-local variables for block
7920  AdmsSensFadType dxa;
7921  //End of Block-local variables
7922  dxa = ((Vb1c4-Vfc)/a_VDC);
7923  if ((Vb1c4<Vfc))
7924  {
7925  Vjcex = (Vb1c4-(a_VDC*log((1.0+exp(dxa)))));
7926  }
7927  else
7928  {
7929  Vjcex = (Vfc-(a_VDC*log((1.0+exp((-dxa))))));
7930  }
7931  Vjcex = Vjcex;
7932  }
7933  Vtexv = (((modelVar_VDC_T/(1.0-modelPar_PC))*(1.0-pow((1.0-(Vjcex/modelVar_VDC_T)),(1.0-modelPar_PC))))+(bjc*(Vb1c4-Vjcex)));
7934  Qtex = (((modelVar_CJC_TM*(((1.0-modelVar_XP_T)*Vtexv)+(modelVar_XP_T*Vb1c4)))*(1.0-modelPar_XCJC))*(1.0-modelPar_XEXT));
7935  {
7936  //Block-local variables for block
7937  AdmsSensFadType dxa;
7938  //End of Block-local variables
7939  dxa = ((Vbc3-Vfc)/a_VDC);
7940  if ((Vbc3<Vfc))
7941  {
7942  XVjcex = (Vbc3-(a_VDC*log((1.0+exp(dxa)))));
7943  }
7944  else
7945  {
7946  XVjcex = (Vfc-(a_VDC*log((1.0+exp((-dxa))))));
7947  }
7948  XVjcex = XVjcex;
7949  }
7950  XVtexv = (((modelVar_VDC_T/(1.0-modelPar_PC))*(1.0-pow((1.0-(XVjcex/modelVar_VDC_T)),(1.0-modelPar_PC))))+(bjc*(Vbc3-XVjcex)));
7951  XQtex = (((modelVar_CJC_TM*(((1.0-modelVar_XP_T)*XVtexv)+(modelVar_XP_T*Vbc3)))*(1.0-modelPar_XCJC))*modelPar_XEXT);
7952  a_VDS = (0.1*modelVar_VDS_T);
7953  Vfs = (modelVar_VDS_T*(1.0-pow(2.0,((-1.0)/modelPar_PS))));
7954  {
7955  //Block-local variables for block
7956  AdmsSensFadType dxa;
7957  //End of Block-local variables
7958  dxa = ((Vsc1-Vfs)/a_VDS);
7959  if ((Vsc1<Vfs))
7960  {
7961  Vjs = (Vsc1-(a_VDS*log((1.0+exp(dxa)))));
7962  }
7963  else
7964  {
7965  Vjs = (Vfs-(a_VDS*log((1.0+exp((-dxa))))));
7966  }
7967  Vjs = Vjs;
7968  }
7969  Qts = (modelVar_CJS_TM*(((modelVar_VDS_T/(1.0-modelPar_PS))*(1.0-pow((1.0-(Vjs/modelVar_VDS_T)),(1.0-modelPar_PS))))+(2.0*(Vsc1-Vjs))));
7970  Qe0 = ((modelVar_TAUE_T*modelVar_IK_TM)*pow((modelVar_IS_TM/modelVar_IK_TM),(1.0/modelPar_MTAU)));
7971  if (((Vb2e1/(modelPar_MTAU*modelVar_Vt))<400.0))
7972  {
7973  tmpExp = exp((Vb2e1/(modelPar_MTAU*modelVar_Vt)));
7974  }
7975  else
7976  {
7977  expl = exp(400.0);
7978  tmpExp = (expl*(1.0+((Vb2e1/(modelPar_MTAU*modelVar_Vt))-400.0)));
7979  }
7980  Qe = (Qe0*(tmpExp-1.0));
7981  Qepi0 = (((4.0*modelVar_TEPI_T)*modelVar_Vt)/modelVar_RCV_TM);
7982  Qepi = (((0.5*Qepi0)*xi_w)*((p0star+pW)+2.0));
7983  Qex = (((modelVar_TAUR_T*0.5)*((Qb0*nBex)+(Qepi0*pWex)))/(modelVar_TAUB_T+modelVar_TEPI_T));
7984  XQex = 0.0;
7985  if ((modelPar_EXMOD==1))
7986  {
7987  Qex = (Qex*(1.0-modelPar_XEXT));
7988  Xg2 = (4.0*eVbc3VDC);
7989  XpWex = (Xg2/(1.0+sqrt((1.0+Xg2))));
7990  XQex = (((((0.5*Fex)*modelPar_XEXT)*modelVar_TAUR_T)*((Qb0*XnBex)+(Qepi0*XpWex)))/(modelVar_TAUB_T+modelVar_TEPI_T));
7991  }
7992  Qb1b2 = 0.0;
7993  if ((modelPar_EXPHI==1))
7994  {
7995  dVteVje = (pow((1.0-(Vje*modelVar_inv_VDE_T)),(-modelPar_PE))-3.0);
7996  Vb2e1Vfe = ((Vb2e1-Vfe)/a_VDE);
7997  if ((Vb2e1Vfe<0.0))
7998  {
7999  dVjeVb2e1 = (1.0/(1.0+exp(Vb2e1Vfe)));
8000  }
8001  else
8002  {
8003  dVjeVb2e1 = (exp((-Vb2e1Vfe))/(1.0+exp((-Vb2e1Vfe))));
8004  }
8005  dVteVb2e1 = ((dVteVje*dVjeVb2e1)+3.0);
8006  dQteVb2e1 = (((1.0-modelPar_XCJE)*modelVar_CJE_TM)*dVteVb2e1);
8007  dn0Vb2e1 = (((If0*eVb2e1)*modelVar_VtINV)*(0.5/sqrt((1.0+f1))));
8008  dQbeVb2e1 = (((0.5*Qb0)*q1Q)*dn0Vb2e1);
8009  dQeVb2e1 = ((Qe+Qe0)/(modelPar_MTAU*modelVar_Vt));
8010  Qb1b2 = ((0.2*Vb1b2)*((dQteVb2e1+dQbeVb2e1)+dQeVb2e1));
8011  Qbc = ((Qbe_qs*0.33333333333333333333)+Qbc_qs);
8012  Qbe = ((2.0*Qbe_qs)*0.33333333333333333333);
8013  }
8014  else
8015  {
8016  Qbe = Qbe_qs;
8017  Qbc = Qbc_qs;
8018  }
8019  // I(c1,c2) <+ ((TYPE*Ic1c2))
8020  staticContributions[admsNodeID_c1] += (modelPar_TYPE*Ic1c2);
8021  staticContributions[admsNodeID_c2] -= (modelPar_TYPE*Ic1c2);
8022  // I(c2,e1) <+ ((TYPE*In))
8023  staticContributions[admsNodeID_c2] += (modelPar_TYPE*In);
8024  staticContributions[admsNodeID_e1] -= (modelPar_TYPE*In);
8025  // I(b1,e1) <+ ((TYPE*Ib1_s))
8026  staticContributions[admsNodeID_b1] += (modelPar_TYPE*instanceVar_Ib1_s);
8027  staticContributions[admsNodeID_e1] -= (modelPar_TYPE*instanceVar_Ib1_s);
8028  // I(b2,e1) <+ ((TYPE*((Ib1+Ib2)-Izteb)))
8029  staticContributions[admsNodeID_b2] += (modelPar_TYPE*((instanceVar_Ib1+instanceVar_Ib2)-instanceVar_Izteb));
8030  staticContributions[admsNodeID_e1] -= (modelPar_TYPE*((instanceVar_Ib1+instanceVar_Ib2)-instanceVar_Izteb));
8031  // I(b1,s) <+ ((TYPE*Isub))
8032  staticContributions[admsNodeID_b1] += (modelPar_TYPE*instanceVar_Isub);
8033  staticContributions[admsNodeID_s] -= (modelPar_TYPE*instanceVar_Isub);
8034  // I(b,s) <+ ((TYPE*XIsub))
8035  staticContributions[admsNodeID_b] += (modelPar_TYPE*instanceVar_XIsub);
8036  staticContributions[admsNodeID_s] -= (modelPar_TYPE*instanceVar_XIsub);
8037  // I(s,c1) <+ ((TYPE*Isf))
8038  staticContributions[admsNodeID_s] += (modelPar_TYPE*Isf);
8039  staticContributions[admsNodeID_c1] -= (modelPar_TYPE*Isf);
8040  // I(b1,b2) <+ ((TYPE*Ib1b2))
8041  staticContributions[admsNodeID_b1] += (modelPar_TYPE*Ib1b2);
8042  staticContributions[admsNodeID_b2] -= (modelPar_TYPE*Ib1b2);
8043  // I(b2,c2) <+ ((TYPE*((-1.0)*Iavl)))
8044  staticContributions[admsNodeID_b2] += (modelPar_TYPE*((-1.0)*Iavl));
8045  staticContributions[admsNodeID_c2] -= (modelPar_TYPE*((-1.0)*Iavl));
8046  // I(e,e1) <+ (((TYPE*Vee1)/RE_TM))
8047  staticContributions[admsNodeID_e] += ((modelPar_TYPE*Vee1)/modelVar_RE_TM);
8048  staticContributions[admsNodeID_e1] -= ((modelPar_TYPE*Vee1)/modelVar_RE_TM);
8049  // I(b,b1) <+ (((TYPE*Vbb1)/RBC_TM))
8050  staticContributions[admsNodeID_b] += ((modelPar_TYPE*Vbb1)/modelVar_RBC_TM);
8051  staticContributions[admsNodeID_b1] -= ((modelPar_TYPE*Vbb1)/modelVar_RBC_TM);
8052  // I(noi,e1) <+ (V(noi,e1))
8053  staticContributions[admsNodeID_noi] += (probeVars[admsProbeID_V_noi_e1]);
8054  staticContributions[admsNodeID_e1] -= (probeVars[admsProbeID_V_noi_e1]);
8055  cor_exp_1 = (sqrt((1.0+(2.0*instanceVar_Gem)))*(probeVars[admsProbeID_V_noi_e1]));
8056  // I(b2,e1) <+ (cor_exp_1)
8057  staticContributions[admsNodeID_b2] += cor_exp_1;
8058  staticContributions[admsNodeID_e1] -= cor_exp_1;
8059  cor_exp_2 = (((2.0+(2.0*instanceVar_Gem))/sqrt((1.0+(2.0*instanceVar_Gem))))*(probeVars[admsProbeID_V_noi_e1]));
8060  // I(e1,c2) <+ (cor_exp_2)
8061  staticContributions[admsNodeID_e1] += cor_exp_2;
8062  staticContributions[admsNodeID_c2] -= cor_exp_2;
8063  // I(b2,e1) <+ (ddt((TYPE*((Qte+Qbe)+Qe))))
8064  dynamicContributions[admsNodeID_b2] += ((modelPar_TYPE*((Qte+Qbe)+Qe)));
8065  dynamicContributions[admsNodeID_e1] -= ((modelPar_TYPE*((Qte+Qbe)+Qe)));
8066  // I(b1,e1) <+ (ddt((TYPE*Qte_s)))
8067  dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*Qte_s));
8068  dynamicContributions[admsNodeID_e1] -= ((modelPar_TYPE*Qte_s));
8069  // I(b2,c2) <+ (ddt((TYPE*((Qtc+Qbc)+Qepi))))
8070  dynamicContributions[admsNodeID_b2] += ((modelPar_TYPE*((Qtc+Qbc)+Qepi)));
8071  dynamicContributions[admsNodeID_c2] -= ((modelPar_TYPE*((Qtc+Qbc)+Qepi)));
8072  // I(s,c1) <+ (ddt((TYPE*Qts)))
8073  dynamicContributions[admsNodeID_s] += ((modelPar_TYPE*Qts));
8074  dynamicContributions[admsNodeID_c1] -= ((modelPar_TYPE*Qts));
8075  // I(b1,b2) <+ (ddt((TYPE*Qb1b2)))
8076  dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*Qb1b2));
8077  dynamicContributions[admsNodeID_b2] -= ((modelPar_TYPE*Qb1b2));
8078  // I(b,e) <+ (ddt(((TYPE*CBEO_M)*Vbe)))
8079  dynamicContributions[admsNodeID_b] += (((modelPar_TYPE*modelVar_CBEO_M)*Vbe));
8080  dynamicContributions[admsNodeID_e] -= (((modelPar_TYPE*modelVar_CBEO_M)*Vbe));
8081  // I(b,c) <+ (ddt(((TYPE*CBCO_M)*Vbc)))
8082  dynamicContributions[admsNodeID_b] += (((modelPar_TYPE*modelVar_CBCO_M)*Vbc));
8083  dynamicContributions[admsNodeID_c] -= (((modelPar_TYPE*modelVar_CBCO_M)*Vbc));
8084  }
8085  if ((modelPar_RCBLX>0.0))
8086  {
8087  // I(b,c3) <+ ((TYPE*XIex))
8088  staticContributions[admsNodeID_b] += (modelPar_TYPE*instanceVar_XIex);
8089  staticContributions[admsNodeID_c3] -= (modelPar_TYPE*instanceVar_XIex);
8090  // I(c,c3) <+ (((TYPE*Vcc3)*GCCxx_TM))
8091  staticContributions[admsNodeID_c] += ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8092  staticContributions[admsNodeID_c3] -= ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8093  // I(b,c3) <+ (ddt((TYPE*(XQtex+XQex))))
8094  dynamicContributions[admsNodeID_b] += ((modelPar_TYPE*(XQtex+XQex)));
8095  dynamicContributions[admsNodeID_c3] -= ((modelPar_TYPE*(XQtex+XQex)));
8096  if ((modelPar_RCBLI>0.0))
8097  {
8098  // I(c4,c1) <+ (((TYPE*Vc4c1)*GCCin_TM))
8099  staticContributions[admsNodeID_c4] += ((modelPar_TYPE*Vc4c1)*modelVar_GCCin_TM);
8100  staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vc4c1)*modelVar_GCCin_TM);
8101  // I(b1,c4) <+ ((TYPE*(Ib3+Iex)))
8102  staticContributions[admsNodeID_b1] += (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8103  staticContributions[admsNodeID_c4] -= (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8104  // I(c3,c4) <+ (((TYPE*Vc3c4)*GCCex_TM))
8105  staticContributions[admsNodeID_c3] += ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8106  staticContributions[admsNodeID_c4] -= ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8107  // I(b1,c4) <+ (ddt((TYPE*(Qtex+Qex))))
8108  dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*(Qtex+Qex)));
8109  dynamicContributions[admsNodeID_c4] -= ((modelPar_TYPE*(Qtex+Qex)));
8110  }
8111  else
8112  {
8113  // V(c4,c1) <+ (0.0)
8114  // do nothing at all
8115  // I(b1,c1) <+ ((TYPE*(Ib3+Iex)))
8116  staticContributions[admsNodeID_b1] += (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8117  staticContributions[admsNodeID_c1] -= (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8118  // I(b1,c1) <+ (ddt((TYPE*(Qtex+Qex))))
8119  dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*(Qtex+Qex)));
8120  dynamicContributions[admsNodeID_c1] -= ((modelPar_TYPE*(Qtex+Qex)));
8121  // I(c3,c1) <+ (((TYPE*Vc3c4)*GCCex_TM))
8122  staticContributions[admsNodeID_c3] += ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8123  staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8124  }
8125  }
8126  else
8127  {
8128  // V(c3,c4) <+ (0)
8129  // do nothing at all
8130  if ((modelPar_RCBLI>0.0))
8131  {
8132  // I(b,c4) <+ ((TYPE*XIex))
8133  staticContributions[admsNodeID_b] += (modelPar_TYPE*instanceVar_XIex);
8134  staticContributions[admsNodeID_c4] -= (modelPar_TYPE*instanceVar_XIex);
8135  // I(c,c4) <+ (((TYPE*Vcc3)*GCCxx_TM))
8136  staticContributions[admsNodeID_c] += ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8137  staticContributions[admsNodeID_c4] -= ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8138  // I(c4,c1) <+ (((TYPE*Vc4c1)*GCCin_TM))
8139  staticContributions[admsNodeID_c4] += ((modelPar_TYPE*Vc4c1)*modelVar_GCCin_TM);
8140  staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vc4c1)*modelVar_GCCin_TM);
8141  // I(b1,c4) <+ ((TYPE*(Ib3+Iex)))
8142  staticContributions[admsNodeID_b1] += (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8143  staticContributions[admsNodeID_c4] -= (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8144  // I(b1,c4) <+ (ddt((TYPE*(Qtex+Qex))))
8145  dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*(Qtex+Qex)));
8146  dynamicContributions[admsNodeID_c4] -= ((modelPar_TYPE*(Qtex+Qex)));
8147  // I(b,c4) <+ (ddt((TYPE*(XQtex+XQex))))
8148  dynamicContributions[admsNodeID_b] += ((modelPar_TYPE*(XQtex+XQex)));
8149  dynamicContributions[admsNodeID_c4] -= ((modelPar_TYPE*(XQtex+XQex)));
8150  }
8151  else
8152  {
8153  // I(b,c1) <+ ((TYPE*XIex))
8154  staticContributions[admsNodeID_b] += (modelPar_TYPE*instanceVar_XIex);
8155  staticContributions[admsNodeID_c1] -= (modelPar_TYPE*instanceVar_XIex);
8156  // I(c,c1) <+ (((TYPE*Vcc3)*GCCxx_TM))
8157  staticContributions[admsNodeID_c] += ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8158  staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8159  // V(c4,c1) <+ (0.0)
8160  // do nothing at all
8161  // I(b1,c1) <+ ((TYPE*(Ib3+Iex)))
8162  staticContributions[admsNodeID_b1] += (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8163  staticContributions[admsNodeID_c1] -= (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8164  // I(b1,c1) <+ (ddt((TYPE*(Qtex+Qex))))
8165  dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*(Qtex+Qex)));
8166  dynamicContributions[admsNodeID_c1] -= ((modelPar_TYPE*(Qtex+Qex)));
8167  // I(b,c1) <+ (ddt((TYPE*(XQtex+XQex))))
8168  dynamicContributions[admsNodeID_b] += ((modelPar_TYPE*(XQtex+XQex)));
8169  dynamicContributions[admsNodeID_c1] -= ((modelPar_TYPE*(XQtex+XQex)));
8170  // I(c3,c1) <+ (((TYPE*Vc3c4)*GCCex_TM))
8171  staticContributions[admsNodeID_c3] += ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8172  staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8173  }
8174  }
8175  {
8176  }
8177 }
8178 
8179 
8180 
8181 //-----------------------------------------------------------------------------
8182 // Function : InstanceSensitivity::operator()
8183 // Purpose : return sensitivity for a single instance parameter
8184 // Special Notes :
8185 // Scope : public
8186 // Creator : admsXml
8187 // Creation Date :
8188 //-----------------------------------------------------------------------------
8189 /// Compute sensitivity of a device instance's outputs to a specified instance
8190 /// parameter
8191 ///
8192 ///
8193 /// @param[in] entity The device entity that owns the parameter
8194 /// @param[in] name The unadorned parameter name specific to the entity
8195 /// @param[out] dfdp The derivative of the F vector with respect to the parameter
8196 /// @param[out] dqdp The derivative of the Q vector with respect to the parameter
8197 /// @param[out] dbdp The derivative of the B vector with respect to the parameter
8198 /// @param[out] Findices The indices into the F vector corresponding to the elements of dfdp
8199 /// @param[out] Qindices The indices into the Q vector corresponding to the elements of dfdp
8200 /// @param[out] Bindices The indices into the B vector corresponding to the elements of dfdp
8201 ///
8202 ///
8203 void InstanceSensitivity::operator()
8204  (
8205  const ParameterBase &entity,
8206  const std::string &name,
8207  std::vector<double> & dfdp,
8208  std::vector<double> & dqdp,
8209  std::vector<double> & dbdp,
8210  std::vector<int> & Findices,
8211  std::vector<int> & Qindices,
8212  std::vector<int> & Bindices
8213  ) const
8214 {
8215  const ParameterBase * e1 = &entity;
8216  const Instance & in = *(dynamic_cast<const Instance *> (e1));
8217  const Model & mod =in.model_;
8218 
8219  dfdp.resize(12+0);
8220  dqdp.resize(12+0);
8221  Findices.resize(12+0);
8222  Qindices.resize(12+0);
8223 
8224  std::vector <double> probeVars(15);
8225  std::vector <AdmsSensFadType> staticContributions(12+0);
8226  std::vector <AdmsSensFadType> dynamicContributions(12+0);
8227 
8228 
8229  // initialize contributions to zero (automatically sets derivatives to zero)
8230  for (int i=0; i < 12+0 ; ++i)
8231  {
8232  staticContributions[i]=0;
8233  dynamicContributions[i]=0;
8234  }
8235 
8236  // Copy out all the model parameters (doubles) into FAD types
8237  //reals
8238  AdmsSensFadType modelPar_TREF=mod.TREF;
8239  bool modelPar_given_TREF=mod.given("TREF");
8240  AdmsSensFadType modelPar_DTA=mod.DTA;
8241  bool modelPar_given_DTA=mod.given("DTA");
8242  AdmsSensFadType modelPar_IS=mod.IS;
8243  bool modelPar_given_IS=mod.given("IS");
8244  AdmsSensFadType modelPar_IK=mod.IK;
8245  bool modelPar_given_IK=mod.given("IK");
8246  AdmsSensFadType modelPar_VER=mod.VER;
8247  bool modelPar_given_VER=mod.given("VER");
8248  AdmsSensFadType modelPar_VEF=mod.VEF;
8249  bool modelPar_given_VEF=mod.given("VEF");
8250  AdmsSensFadType modelPar_BF=mod.BF;
8251  bool modelPar_given_BF=mod.given("BF");
8252  AdmsSensFadType modelPar_IBF=mod.IBF;
8253  bool modelPar_given_IBF=mod.given("IBF");
8254  AdmsSensFadType modelPar_MLF=mod.MLF;
8255  bool modelPar_given_MLF=mod.given("MLF");
8256  AdmsSensFadType modelPar_XIBI=mod.XIBI;
8257  bool modelPar_given_XIBI=mod.given("XIBI");
8258  AdmsSensFadType modelPar_IZEB=mod.IZEB;
8259  bool modelPar_given_IZEB=mod.given("IZEB");
8260  AdmsSensFadType modelPar_NZEB=mod.NZEB;
8261  bool modelPar_given_NZEB=mod.given("NZEB");
8262  AdmsSensFadType modelPar_BRI=mod.BRI;
8263  bool modelPar_given_BRI=mod.given("BRI");
8264  AdmsSensFadType modelPar_IBR=mod.IBR;
8265  bool modelPar_given_IBR=mod.given("IBR");
8266  AdmsSensFadType modelPar_VLR=mod.VLR;
8267  bool modelPar_given_VLR=mod.given("VLR");
8268  AdmsSensFadType modelPar_XEXT=mod.XEXT;
8269  bool modelPar_given_XEXT=mod.given("XEXT");
8270  AdmsSensFadType modelPar_WAVL=mod.WAVL;
8271  bool modelPar_given_WAVL=mod.given("WAVL");
8272  AdmsSensFadType modelPar_VAVL=mod.VAVL;
8273  bool modelPar_given_VAVL=mod.given("VAVL");
8274  AdmsSensFadType modelPar_SFH=mod.SFH;
8275  bool modelPar_given_SFH=mod.given("SFH");
8276  AdmsSensFadType modelPar_RE=mod.RE;
8277  bool modelPar_given_RE=mod.given("RE");
8278  AdmsSensFadType modelPar_RBC=mod.RBC;
8279  bool modelPar_given_RBC=mod.given("RBC");
8280  AdmsSensFadType modelPar_RBV=mod.RBV;
8281  bool modelPar_given_RBV=mod.given("RBV");
8282  AdmsSensFadType modelPar_RCC=mod.RCC;
8283  bool modelPar_given_RCC=mod.given("RCC");
8284  AdmsSensFadType modelPar_RCV=mod.RCV;
8285  bool modelPar_given_RCV=mod.given("RCV");
8286  AdmsSensFadType modelPar_SCRCV=mod.SCRCV;
8287  bool modelPar_given_SCRCV=mod.given("SCRCV");
8288  AdmsSensFadType modelPar_IHC=mod.IHC;
8289  bool modelPar_given_IHC=mod.given("IHC");
8290  AdmsSensFadType modelPar_AXI=mod.AXI;
8291  bool modelPar_given_AXI=mod.given("AXI");
8292  AdmsSensFadType modelPar_CJE=mod.CJE;
8293  bool modelPar_given_CJE=mod.given("CJE");
8294  AdmsSensFadType modelPar_VDE=mod.VDE;
8295  bool modelPar_given_VDE=mod.given("VDE");
8296  AdmsSensFadType modelPar_PE=mod.PE;
8297  bool modelPar_given_PE=mod.given("PE");
8298  AdmsSensFadType modelPar_XCJE=mod.XCJE;
8299  bool modelPar_given_XCJE=mod.given("XCJE");
8300  AdmsSensFadType modelPar_CBEO=mod.CBEO;
8301  bool modelPar_given_CBEO=mod.given("CBEO");
8302  AdmsSensFadType modelPar_CJC=mod.CJC;
8303  bool modelPar_given_CJC=mod.given("CJC");
8304  AdmsSensFadType modelPar_VDC=mod.VDC;
8305  bool modelPar_given_VDC=mod.given("VDC");
8306  AdmsSensFadType modelPar_PC=mod.PC;
8307  bool modelPar_given_PC=mod.given("PC");
8308  AdmsSensFadType modelPar_XP=mod.XP;
8309  bool modelPar_given_XP=mod.given("XP");
8310  AdmsSensFadType modelPar_MC=mod.MC;
8311  bool modelPar_given_MC=mod.given("MC");
8312  AdmsSensFadType modelPar_XCJC=mod.XCJC;
8313  bool modelPar_given_XCJC=mod.given("XCJC");
8314  AdmsSensFadType modelPar_RCBLX=mod.RCBLX;
8315  bool modelPar_given_RCBLX=mod.given("RCBLX");
8316  AdmsSensFadType modelPar_RCBLI=mod.RCBLI;
8317  bool modelPar_given_RCBLI=mod.given("RCBLI");
8318  AdmsSensFadType modelPar_CBCO=mod.CBCO;
8319  bool modelPar_given_CBCO=mod.given("CBCO");
8320  AdmsSensFadType modelPar_MTAU=mod.MTAU;
8321  bool modelPar_given_MTAU=mod.given("MTAU");
8322  AdmsSensFadType modelPar_TAUE=mod.TAUE;
8323  bool modelPar_given_TAUE=mod.given("TAUE");
8324  AdmsSensFadType modelPar_TAUB=mod.TAUB;
8325  bool modelPar_given_TAUB=mod.given("TAUB");
8326  AdmsSensFadType modelPar_TEPI=mod.TEPI;
8327  bool modelPar_given_TEPI=mod.given("TEPI");
8328  AdmsSensFadType modelPar_TAUR=mod.TAUR;
8329  bool modelPar_given_TAUR=mod.given("TAUR");
8330  AdmsSensFadType modelPar_DEG=mod.DEG;
8331  bool modelPar_given_DEG=mod.given("DEG");
8332  AdmsSensFadType modelPar_XREC=mod.XREC;
8333  bool modelPar_given_XREC=mod.given("XREC");
8334  AdmsSensFadType modelPar_AQBO=mod.AQBO;
8335  bool modelPar_given_AQBO=mod.given("AQBO");
8336  AdmsSensFadType modelPar_AE=mod.AE;
8337  bool modelPar_given_AE=mod.given("AE");
8338  AdmsSensFadType modelPar_AB=mod.AB;
8339  bool modelPar_given_AB=mod.given("AB");
8340  AdmsSensFadType modelPar_AEPI=mod.AEPI;
8341  bool modelPar_given_AEPI=mod.given("AEPI");
8342  AdmsSensFadType modelPar_AEX=mod.AEX;
8343  bool modelPar_given_AEX=mod.given("AEX");
8344  AdmsSensFadType modelPar_AC=mod.AC;
8345  bool modelPar_given_AC=mod.given("AC");
8346  AdmsSensFadType modelPar_ACBL=mod.ACBL;
8347  bool modelPar_given_ACBL=mod.given("ACBL");
8348  AdmsSensFadType modelPar_DVGBF=mod.DVGBF;
8349  bool modelPar_given_DVGBF=mod.given("DVGBF");
8350  AdmsSensFadType modelPar_DVGBR=mod.DVGBR;
8351  bool modelPar_given_DVGBR=mod.given("DVGBR");
8352  AdmsSensFadType modelPar_VGB=mod.VGB;
8353  bool modelPar_given_VGB=mod.given("VGB");
8354  AdmsSensFadType modelPar_VGC=mod.VGC;
8355  bool modelPar_given_VGC=mod.given("VGC");
8356  AdmsSensFadType modelPar_VGJ=mod.VGJ;
8357  bool modelPar_given_VGJ=mod.given("VGJ");
8358  AdmsSensFadType modelPar_VGZEB=mod.VGZEB;
8359  bool modelPar_given_VGZEB=mod.given("VGZEB");
8360  AdmsSensFadType modelPar_AVGEB=mod.AVGEB;
8361  bool modelPar_given_AVGEB=mod.given("AVGEB");
8362  AdmsSensFadType modelPar_TVGEB=mod.TVGEB;
8363  bool modelPar_given_TVGEB=mod.given("TVGEB");
8364  AdmsSensFadType modelPar_DVGTE=mod.DVGTE;
8365  bool modelPar_given_DVGTE=mod.given("DVGTE");
8366  AdmsSensFadType modelPar_DAIS=mod.DAIS;
8367  bool modelPar_given_DAIS=mod.given("DAIS");
8368  AdmsSensFadType modelPar_AF=mod.AF;
8369  bool modelPar_given_AF=mod.given("AF");
8370  AdmsSensFadType modelPar_KF=mod.KF;
8371  bool modelPar_given_KF=mod.given("KF");
8372  AdmsSensFadType modelPar_KFN=mod.KFN;
8373  bool modelPar_given_KFN=mod.given("KFN");
8374  AdmsSensFadType modelPar_ISS=mod.ISS;
8375  bool modelPar_given_ISS=mod.given("ISS");
8376  AdmsSensFadType modelPar_ICSS=mod.ICSS;
8377  bool modelPar_given_ICSS=mod.given("ICSS");
8378  AdmsSensFadType modelPar_IKS=mod.IKS;
8379  bool modelPar_given_IKS=mod.given("IKS");
8380  AdmsSensFadType modelPar_CJS=mod.CJS;
8381  bool modelPar_given_CJS=mod.given("CJS");
8382  AdmsSensFadType modelPar_VDS=mod.VDS;
8383  bool modelPar_given_VDS=mod.given("VDS");
8384  AdmsSensFadType modelPar_PS=mod.PS;
8385  bool modelPar_given_PS=mod.given("PS");
8386  AdmsSensFadType modelPar_VGS=mod.VGS;
8387  bool modelPar_given_VGS=mod.given("VGS");
8388  AdmsSensFadType modelPar_AS=mod.AS;
8389  bool modelPar_given_AS=mod.given("AS");
8390  AdmsSensFadType modelPar_ASUB=mod.ASUB;
8391  bool modelPar_given_ASUB=mod.given("ASUB");
8392  AdmsSensFadType modelPar_MULT=mod.MULT;
8393  bool modelPar_given_MULT=mod.given("MULT");
8394  AdmsSensFadType modelPar_GMIN=mod.GMIN;
8395  bool modelPar_given_GMIN=mod.given("GMIN");
8396 
8397 
8398  // hidden reals
8399 
8400 
8401  // non-reals (including hiddens)
8402  int modelPar_LEVEL=mod.LEVEL;
8403  bool modelPar_given_LEVEL=mod.given("LEVEL");
8404  int modelPar_EXMOD=mod.EXMOD;
8405  bool modelPar_given_EXMOD=mod.given("EXMOD");
8406  int modelPar_EXPHI=mod.EXPHI;
8407  bool modelPar_given_EXPHI=mod.given("EXPHI");
8408  int modelPar_EXAVL=mod.EXAVL;
8409  bool modelPar_given_EXAVL=mod.given("EXAVL");
8410  int modelPar_EXSUB=mod.EXSUB;
8411  bool modelPar_given_EXSUB=mod.given("EXSUB");
8412  int modelPar_KAVL=mod.KAVL;
8413  bool modelPar_given_KAVL=mod.given("KAVL");
8414  int modelPar_TYPE=mod.TYPE;
8415  bool modelPar_given_TYPE=mod.given("TYPE");
8416 
8417 
8418 
8419  // Copy out all the instance parameters (doubles) into FAD types
8420  // Keep a map so we can set the right one to the independent variable
8421  // We do this solely to avoid a big ugly "if/else" block just to find the
8422  // one parameter we're doing sensitivities on.
8423  unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> inParamMap;
8424 
8425  // reals
8426  AdmsSensFadType instancePar_MULT=in.MULT;
8427  bool instancePar_given_MULT=in.given("MULT");
8428  inParamMap["MULT"] = &instancePar_MULT;
8429 
8430 
8431  // Copy all the real hidden instance params into fad types
8432 
8433 
8434 
8435  // Copy all the non-real instance params into vars of their appropriate type:
8436 
8437 
8438  // Set the one parameter whose name was passed in to be the independent
8439  // variable for Sacado purposes. Since we stored variable pointers, this
8440  // makes sure that that ONE variable gets set right.
8441  // FIXME: make this check the name first, otherwise segfault on invalid name!
8442  inParamMap[name]->diff(0,1);
8443 
8444  //make local copies of all instance vars
8445  //reals
8446  AdmsSensFadType instanceVar_Izteb=in.Izteb;
8447  AdmsSensFadType instanceVar_qBI=in.qBI;
8448  AdmsSensFadType instanceVar_Ir=in.Ir;
8449  AdmsSensFadType instanceVar_If=in.If;
8450  AdmsSensFadType instanceVar_Ib1=in.Ib1;
8451  AdmsSensFadType instanceVar_Ib1_s=in.Ib1_s;
8452  AdmsSensFadType instanceVar_Ib2=in.Ib2;
8453  AdmsSensFadType instanceVar_Ib3=in.Ib3;
8454  AdmsSensFadType instanceVar_Iex=in.Iex;
8455  AdmsSensFadType instanceVar_XIex=in.XIex;
8456  AdmsSensFadType instanceVar_Isub=in.Isub;
8457  AdmsSensFadType instanceVar_XIsub=in.XIsub;
8458  AdmsSensFadType instanceVar_Rb2=in.Rb2;
8459  AdmsSensFadType instanceVar_Gem=in.Gem;
8460  AdmsSensFadType instanceVar_eVb1b2=in.eVb1b2;
8461 
8462 
8463  //non-reals
8464 
8465 
8466  //make local copies of all model vars
8467  //reals
8468  AdmsSensFadType modelVar_An=mod.An;
8469  AdmsSensFadType modelVar_Tk=mod.Tk;
8470  AdmsSensFadType modelVar_Vt=mod.Vt;
8471  AdmsSensFadType modelVar_VtINV=mod.VtINV;
8472  AdmsSensFadType modelVar_VDE_T=mod.VDE_T;
8473  AdmsSensFadType modelVar_VDC_T=mod.VDC_T;
8474  AdmsSensFadType modelVar_XP_T=mod.XP_T;
8475  AdmsSensFadType modelVar_BF_T=mod.BF_T;
8476  AdmsSensFadType modelVar_BRI_T=mod.BRI_T;
8477  AdmsSensFadType modelVar_IS_T=mod.IS_T;
8478  AdmsSensFadType modelVar_VEF_T=mod.VEF_T;
8479  AdmsSensFadType modelVar_VER_T=mod.VER_T;
8480  AdmsSensFadType modelVar_nZEB_T=mod.nZEB_T;
8481  AdmsSensFadType modelVar_pow2_2mPE=mod.pow2_2mPE;
8482  AdmsSensFadType modelVar_pow2_PEm2=mod.pow2_PEm2;
8483  AdmsSensFadType modelVar_inv_VDE_T=mod.inv_VDE_T;
8484  AdmsSensFadType modelVar_VGZEB_T=mod.VGZEB_T;
8485  AdmsSensFadType modelVar_TAUE_T=mod.TAUE_T;
8486  AdmsSensFadType modelVar_TAUB_T=mod.TAUB_T;
8487  AdmsSensFadType modelVar_TEPI_T=mod.TEPI_T;
8488  AdmsSensFadType modelVar_TAUR_T=mod.TAUR_T;
8489  AdmsSensFadType modelVar_BnT=mod.BnT;
8490  AdmsSensFadType modelVar_DEG_T=mod.DEG_T;
8491  AdmsSensFadType modelVar_VDS_T=mod.VDS_T;
8492  AdmsSensFadType modelVar_IKS_T=mod.IKS_T;
8493  AdmsSensFadType modelVar_IS_TM=mod.IS_TM;
8494  AdmsSensFadType modelVar_IK_TM=mod.IK_TM;
8495  AdmsSensFadType modelVar_IBF_TM=mod.IBF_TM;
8496  AdmsSensFadType modelVar_IBR_TM=mod.IBR_TM;
8497  AdmsSensFadType modelVar_IHC_M=mod.IHC_M;
8498  AdmsSensFadType modelVar_IZEB_TM=mod.IZEB_TM;
8499  AdmsSensFadType modelVar_CJE_TM=mod.CJE_TM;
8500  AdmsSensFadType modelVar_CJC_TM=mod.CJC_TM;
8501  AdmsSensFadType modelVar_RE_TM=mod.RE_TM;
8502  AdmsSensFadType modelVar_RBC_TM=mod.RBC_TM;
8503  AdmsSensFadType modelVar_RBV_TM=mod.RBV_TM;
8504  AdmsSensFadType modelVar_RCV_TM=mod.RCV_TM;
8505  AdmsSensFadType modelVar_SCRCV_M=mod.SCRCV_M;
8506  AdmsSensFadType modelVar_RCCxx_TM=mod.RCCxx_TM;
8507  AdmsSensFadType modelVar_GCCxx_TM=mod.GCCxx_TM;
8508  AdmsSensFadType modelVar_GCCex_TM=mod.GCCex_TM;
8509  AdmsSensFadType modelVar_GCCin_TM=mod.GCCin_TM;
8510  AdmsSensFadType modelVar_KF_M=mod.KF_M;
8511  AdmsSensFadType modelVar_KFN_M=mod.KFN_M;
8512  AdmsSensFadType modelVar_ISS_TM=mod.ISS_TM;
8513  AdmsSensFadType modelVar_ICSS_TM=mod.ICSS_TM;
8514  AdmsSensFadType modelVar_IKS_TM=mod.IKS_TM;
8515  AdmsSensFadType modelVar_CJS_TM=mod.CJS_TM;
8516  AdmsSensFadType modelVar_Xext1=mod.Xext1;
8517  AdmsSensFadType modelVar_CBEO_M=mod.CBEO_M;
8518  AdmsSensFadType modelVar_CBCO_M=mod.CBCO_M;
8519 
8520 
8521  // non-reals
8522 
8523 
8524 
8525  Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
8526 
8527  // extract solution variables and set as Fad independent variables.
8528 
8529  probeVars[in.admsProbeID_V_noi_e1] = (*solVectorPtr)[in.li_noi] - (*solVectorPtr)[in.li_e1];
8530  probeVars[in.admsProbeID_V_c3_c1] = (*solVectorPtr)[in.li_c3] - (*solVectorPtr)[in.li_c1];
8531  probeVars[in.admsProbeID_V_c3_c4] = (*solVectorPtr)[in.li_c3] - (*solVectorPtr)[in.li_c4];
8532  probeVars[in.admsProbeID_V_c4_c1] = (*solVectorPtr)[in.li_c4] - (*solVectorPtr)[in.li_c1];
8533  probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
8534  probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
8535  probeVars[in.admsProbeID_V_b_b1] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_b1];
8536  probeVars[in.admsProbeID_V_e_e1] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_e1];
8537  probeVars[in.admsProbeID_V_c1_c2] = (*solVectorPtr)[in.li_c1] - (*solVectorPtr)[in.li_c2];
8538  probeVars[in.admsProbeID_V_s_c1] = (*solVectorPtr)[in.li_s] - (*solVectorPtr)[in.li_c1];
8539  probeVars[in.admsProbeID_V_b1_b2] = (*solVectorPtr)[in.li_b1] - (*solVectorPtr)[in.li_b2];
8540  probeVars[in.admsProbeID_V_b1_e1] = (*solVectorPtr)[in.li_b1] - (*solVectorPtr)[in.li_e1];
8541  probeVars[in.admsProbeID_V_b2_e1] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_e1];
8542  probeVars[in.admsProbeID_V_b2_c2] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_c2];
8543  probeVars[in.admsProbeID_V_b2_c1] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_c1];
8544 
8545  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
8546  probeVars[in.admsProbeID_V_b1_b2] *= modelPar_TYPE;
8547  probeVars[in.admsProbeID_V_b1_e1] *= modelPar_TYPE;
8548  probeVars[in.admsProbeID_V_b2_c2] *= modelPar_TYPE;
8549  probeVars[in.admsProbeID_V_b2_c1] *= modelPar_TYPE;
8550 
8551 
8552  // Need to use processParams-like function to process the
8553  // initial_model and initial_instance blocks with the LOCAL copies of
8554  // instance and model vars, and local copies of instance and model
8555  // params.
8556  evaluateInitialModel(
8557  // model parameters
8558  // reals
8559  modelPar_TREF,
8560  modelPar_given_TREF,
8561  modelPar_DTA,
8562  modelPar_given_DTA,
8563  modelPar_IS,
8564  modelPar_given_IS,
8565  modelPar_IK,
8566  modelPar_given_IK,
8567  modelPar_VER,
8568  modelPar_given_VER,
8569  modelPar_VEF,
8570  modelPar_given_VEF,
8571  modelPar_BF,
8572  modelPar_given_BF,
8573  modelPar_IBF,
8574  modelPar_given_IBF,
8575  modelPar_MLF,
8576  modelPar_given_MLF,
8577  modelPar_XIBI,
8578  modelPar_given_XIBI,
8579  modelPar_IZEB,
8580  modelPar_given_IZEB,
8581  modelPar_NZEB,
8582  modelPar_given_NZEB,
8583  modelPar_BRI,
8584  modelPar_given_BRI,
8585  modelPar_IBR,
8586  modelPar_given_IBR,
8587  modelPar_VLR,
8588  modelPar_given_VLR,
8589  modelPar_XEXT,
8590  modelPar_given_XEXT,
8591  modelPar_WAVL,
8592  modelPar_given_WAVL,
8593  modelPar_VAVL,
8594  modelPar_given_VAVL,
8595  modelPar_SFH,
8596  modelPar_given_SFH,
8597  modelPar_RE,
8598  modelPar_given_RE,
8599  modelPar_RBC,
8600  modelPar_given_RBC,
8601  modelPar_RBV,
8602  modelPar_given_RBV,
8603  modelPar_RCC,
8604  modelPar_given_RCC,
8605  modelPar_RCV,
8606  modelPar_given_RCV,
8607  modelPar_SCRCV,
8608  modelPar_given_SCRCV,
8609  modelPar_IHC,
8610  modelPar_given_IHC,
8611  modelPar_AXI,
8612  modelPar_given_AXI,
8613  modelPar_CJE,
8614  modelPar_given_CJE,
8615  modelPar_VDE,
8616  modelPar_given_VDE,
8617  modelPar_PE,
8618  modelPar_given_PE,
8619  modelPar_XCJE,
8620  modelPar_given_XCJE,
8621  modelPar_CBEO,
8622  modelPar_given_CBEO,
8623  modelPar_CJC,
8624  modelPar_given_CJC,
8625  modelPar_VDC,
8626  modelPar_given_VDC,
8627  modelPar_PC,
8628  modelPar_given_PC,
8629  modelPar_XP,
8630  modelPar_given_XP,
8631  modelPar_MC,
8632  modelPar_given_MC,
8633  modelPar_XCJC,
8634  modelPar_given_XCJC,
8635  modelPar_RCBLX,
8636  modelPar_given_RCBLX,
8637  modelPar_RCBLI,
8638  modelPar_given_RCBLI,
8639  modelPar_CBCO,
8640  modelPar_given_CBCO,
8641  modelPar_MTAU,
8642  modelPar_given_MTAU,
8643  modelPar_TAUE,
8644  modelPar_given_TAUE,
8645  modelPar_TAUB,
8646  modelPar_given_TAUB,
8647  modelPar_TEPI,
8648  modelPar_given_TEPI,
8649  modelPar_TAUR,
8650  modelPar_given_TAUR,
8651  modelPar_DEG,
8652  modelPar_given_DEG,
8653  modelPar_XREC,
8654  modelPar_given_XREC,
8655  modelPar_AQBO,
8656  modelPar_given_AQBO,
8657  modelPar_AE,
8658  modelPar_given_AE,
8659  modelPar_AB,
8660  modelPar_given_AB,
8661  modelPar_AEPI,
8662  modelPar_given_AEPI,
8663  modelPar_AEX,
8664  modelPar_given_AEX,
8665  modelPar_AC,
8666  modelPar_given_AC,
8667  modelPar_ACBL,
8668  modelPar_given_ACBL,
8669  modelPar_DVGBF,
8670  modelPar_given_DVGBF,
8671  modelPar_DVGBR,
8672  modelPar_given_DVGBR,
8673  modelPar_VGB,
8674  modelPar_given_VGB,
8675  modelPar_VGC,
8676  modelPar_given_VGC,
8677  modelPar_VGJ,
8678  modelPar_given_VGJ,
8679  modelPar_VGZEB,
8680  modelPar_given_VGZEB,
8681  modelPar_AVGEB,
8682  modelPar_given_AVGEB,
8683  modelPar_TVGEB,
8684  modelPar_given_TVGEB,
8685  modelPar_DVGTE,
8686  modelPar_given_DVGTE,
8687  modelPar_DAIS,
8688  modelPar_given_DAIS,
8689  modelPar_AF,
8690  modelPar_given_AF,
8691  modelPar_KF,
8692  modelPar_given_KF,
8693  modelPar_KFN,
8694  modelPar_given_KFN,
8695  modelPar_ISS,
8696  modelPar_given_ISS,
8697  modelPar_ICSS,
8698  modelPar_given_ICSS,
8699  modelPar_IKS,
8700  modelPar_given_IKS,
8701  modelPar_CJS,
8702  modelPar_given_CJS,
8703  modelPar_VDS,
8704  modelPar_given_VDS,
8705  modelPar_PS,
8706  modelPar_given_PS,
8707  modelPar_VGS,
8708  modelPar_given_VGS,
8709  modelPar_AS,
8710  modelPar_given_AS,
8711  modelPar_ASUB,
8712  modelPar_given_ASUB,
8713  modelPar_MULT,
8714  modelPar_given_MULT,
8715  modelPar_GMIN,
8716  modelPar_given_GMIN,
8717  // non-reals (including hidden)
8718  modelPar_LEVEL,
8719  modelPar_given_LEVEL,
8720  modelPar_EXMOD,
8721  modelPar_given_EXMOD,
8722  modelPar_EXPHI,
8723  modelPar_given_EXPHI,
8724  modelPar_EXAVL,
8725  modelPar_given_EXAVL,
8726  modelPar_EXSUB,
8727  modelPar_given_EXSUB,
8728  modelPar_KAVL,
8729  modelPar_given_KAVL,
8730  modelPar_TYPE,
8731  modelPar_given_TYPE// model variables
8732  ,
8733  // reals
8734  modelVar_An,
8735  modelVar_Tk,
8736  modelVar_Vt,
8737  modelVar_VtINV,
8738  modelVar_VDE_T,
8739  modelVar_VDC_T,
8740  modelVar_XP_T,
8741  modelVar_BF_T,
8742  modelVar_BRI_T,
8743  modelVar_IS_T,
8744  modelVar_VEF_T,
8745  modelVar_VER_T,
8746  modelVar_nZEB_T,
8747  modelVar_pow2_2mPE,
8748  modelVar_pow2_PEm2,
8749  modelVar_inv_VDE_T,
8750  modelVar_VGZEB_T,
8751  modelVar_TAUE_T,
8752  modelVar_TAUB_T,
8753  modelVar_TEPI_T,
8754  modelVar_TAUR_T,
8755  modelVar_BnT,
8756  modelVar_DEG_T,
8757  modelVar_VDS_T,
8758  modelVar_IKS_T,
8759  modelVar_IS_TM,
8760  modelVar_IK_TM,
8761  modelVar_IBF_TM,
8762  modelVar_IBR_TM,
8763  modelVar_IHC_M,
8764  modelVar_IZEB_TM,
8765  modelVar_CJE_TM,
8766  modelVar_CJC_TM,
8767  modelVar_RE_TM,
8768  modelVar_RBC_TM,
8769  modelVar_RBV_TM,
8770  modelVar_RCV_TM,
8771  modelVar_SCRCV_M,
8772  modelVar_RCCxx_TM,
8773  modelVar_GCCxx_TM,
8774  modelVar_GCCex_TM,
8775  modelVar_GCCin_TM,
8776  modelVar_KF_M,
8777  modelVar_KFN_M,
8778  modelVar_ISS_TM,
8779  modelVar_ICSS_TM,
8780  modelVar_IKS_TM,
8781  modelVar_CJS_TM,
8782  modelVar_Xext1,
8783  modelVar_CBEO_M,
8784  modelVar_CBCO_M,
8785  mod.admsModTemp);
8786 
8787 
8788  // Now call the function that does the heavy lifting.
8789  evaluateModelEquations(
8790  probeVars,
8791  // probe constants
8792  in.admsProbeID_V_noi_e1,
8793  in.admsProbeID_V_c3_c1,
8794  in.admsProbeID_V_c3_c4,
8795  in.admsProbeID_V_c4_c1,
8796  in.admsProbeID_V_b_c,
8797  in.admsProbeID_V_b_e,
8798  in.admsProbeID_V_b_b1,
8799  in.admsProbeID_V_e_e1,
8800  in.admsProbeID_V_c1_c2,
8801  in.admsProbeID_V_s_c1,
8802  in.admsProbeID_V_b1_b2,
8803  in.admsProbeID_V_b1_e1,
8804  in.admsProbeID_V_b2_e1,
8805  in.admsProbeID_V_b2_c2,
8806  in.admsProbeID_V_b2_c1,
8807 
8808  // node constants
8809  in.admsNodeID_c,
8810  in.admsNodeID_b,
8811  in.admsNodeID_e,
8812  in.admsNodeID_s,
8813  in.admsNodeID_e1,
8814  in.admsNodeID_b1,
8815  in.admsNodeID_b2,
8816  in.admsNodeID_c3,
8817  in.admsNodeID_c4,
8818  in.admsNodeID_c2,
8819  in.admsNodeID_c1,
8820  in.admsNodeID_noi,
8821  // instance parameters
8822  // reals
8823  instancePar_MULT,
8824  instancePar_given_MULT,
8825  // instance variables
8826  // reals
8827  instanceVar_Izteb,
8828  instanceVar_qBI,
8829  instanceVar_Ir,
8830  instanceVar_If,
8831  instanceVar_Ib1,
8832  instanceVar_Ib1_s,
8833  instanceVar_Ib2,
8834  instanceVar_Ib3,
8835  instanceVar_Iex,
8836  instanceVar_XIex,
8837  instanceVar_Isub,
8838  instanceVar_XIsub,
8839  instanceVar_Rb2,
8840  instanceVar_Gem,
8841  instanceVar_eVb1b2,
8842  // model parameters
8843  // reals
8844  modelPar_TREF,
8845  modelPar_given_TREF,
8846  modelPar_DTA,
8847  modelPar_given_DTA,
8848  modelPar_IS,
8849  modelPar_given_IS,
8850  modelPar_IK,
8851  modelPar_given_IK,
8852  modelPar_VER,
8853  modelPar_given_VER,
8854  modelPar_VEF,
8855  modelPar_given_VEF,
8856  modelPar_BF,
8857  modelPar_given_BF,
8858  modelPar_IBF,
8859  modelPar_given_IBF,
8860  modelPar_MLF,
8861  modelPar_given_MLF,
8862  modelPar_XIBI,
8863  modelPar_given_XIBI,
8864  modelPar_IZEB,
8865  modelPar_given_IZEB,
8866  modelPar_NZEB,
8867  modelPar_given_NZEB,
8868  modelPar_BRI,
8869  modelPar_given_BRI,
8870  modelPar_IBR,
8871  modelPar_given_IBR,
8872  modelPar_VLR,
8873  modelPar_given_VLR,
8874  modelPar_XEXT,
8875  modelPar_given_XEXT,
8876  modelPar_WAVL,
8877  modelPar_given_WAVL,
8878  modelPar_VAVL,
8879  modelPar_given_VAVL,
8880  modelPar_SFH,
8881  modelPar_given_SFH,
8882  modelPar_RE,
8883  modelPar_given_RE,
8884  modelPar_RBC,
8885  modelPar_given_RBC,
8886  modelPar_RBV,
8887  modelPar_given_RBV,
8888  modelPar_RCC,
8889  modelPar_given_RCC,
8890  modelPar_RCV,
8891  modelPar_given_RCV,
8892  modelPar_SCRCV,
8893  modelPar_given_SCRCV,
8894  modelPar_IHC,
8895  modelPar_given_IHC,
8896  modelPar_AXI,
8897  modelPar_given_AXI,
8898  modelPar_CJE,
8899  modelPar_given_CJE,
8900  modelPar_VDE,
8901  modelPar_given_VDE,
8902  modelPar_PE,
8903  modelPar_given_PE,
8904  modelPar_XCJE,
8905  modelPar_given_XCJE,
8906  modelPar_CBEO,
8907  modelPar_given_CBEO,
8908  modelPar_CJC,
8909  modelPar_given_CJC,
8910  modelPar_VDC,
8911  modelPar_given_VDC,
8912  modelPar_PC,
8913  modelPar_given_PC,
8914  modelPar_XP,
8915  modelPar_given_XP,
8916  modelPar_MC,
8917  modelPar_given_MC,
8918  modelPar_XCJC,
8919  modelPar_given_XCJC,
8920  modelPar_RCBLX,
8921  modelPar_given_RCBLX,
8922  modelPar_RCBLI,
8923  modelPar_given_RCBLI,
8924  modelPar_CBCO,
8925  modelPar_given_CBCO,
8926  modelPar_MTAU,
8927  modelPar_given_MTAU,
8928  modelPar_TAUE,
8929  modelPar_given_TAUE,
8930  modelPar_TAUB,
8931  modelPar_given_TAUB,
8932  modelPar_TEPI,
8933  modelPar_given_TEPI,
8934  modelPar_TAUR,
8935  modelPar_given_TAUR,
8936  modelPar_DEG,
8937  modelPar_given_DEG,
8938  modelPar_XREC,
8939  modelPar_given_XREC,
8940  modelPar_AQBO,
8941  modelPar_given_AQBO,
8942  modelPar_AE,
8943  modelPar_given_AE,
8944  modelPar_AB,
8945  modelPar_given_AB,
8946  modelPar_AEPI,
8947  modelPar_given_AEPI,
8948  modelPar_AEX,
8949  modelPar_given_AEX,
8950  modelPar_AC,
8951  modelPar_given_AC,
8952  modelPar_ACBL,
8953  modelPar_given_ACBL,
8954  modelPar_DVGBF,
8955  modelPar_given_DVGBF,
8956  modelPar_DVGBR,
8957  modelPar_given_DVGBR,
8958  modelPar_VGB,
8959  modelPar_given_VGB,
8960  modelPar_VGC,
8961  modelPar_given_VGC,
8962  modelPar_VGJ,
8963  modelPar_given_VGJ,
8964  modelPar_VGZEB,
8965  modelPar_given_VGZEB,
8966  modelPar_AVGEB,
8967  modelPar_given_AVGEB,
8968  modelPar_TVGEB,
8969  modelPar_given_TVGEB,
8970  modelPar_DVGTE,
8971  modelPar_given_DVGTE,
8972  modelPar_DAIS,
8973  modelPar_given_DAIS,
8974  modelPar_AF,
8975  modelPar_given_AF,
8976  modelPar_KF,
8977  modelPar_given_KF,
8978  modelPar_KFN,
8979  modelPar_given_KFN,
8980  modelPar_ISS,
8981  modelPar_given_ISS,
8982  modelPar_ICSS,
8983  modelPar_given_ICSS,
8984  modelPar_IKS,
8985  modelPar_given_IKS,
8986  modelPar_CJS,
8987  modelPar_given_CJS,
8988  modelPar_VDS,
8989  modelPar_given_VDS,
8990  modelPar_PS,
8991  modelPar_given_PS,
8992  modelPar_VGS,
8993  modelPar_given_VGS,
8994  modelPar_AS,
8995  modelPar_given_AS,
8996  modelPar_ASUB,
8997  modelPar_given_ASUB,
8998  modelPar_MULT,
8999  modelPar_given_MULT,
9000  modelPar_GMIN,
9001  modelPar_given_GMIN,
9002  // non-reals (including hidden)
9003  modelPar_LEVEL,
9004  modelPar_given_LEVEL,
9005  modelPar_EXMOD,
9006  modelPar_given_EXMOD,
9007  modelPar_EXPHI,
9008  modelPar_given_EXPHI,
9009  modelPar_EXAVL,
9010  modelPar_given_EXAVL,
9011  modelPar_EXSUB,
9012  modelPar_given_EXSUB,
9013  modelPar_KAVL,
9014  modelPar_given_KAVL,
9015  modelPar_TYPE,
9016  modelPar_given_TYPE// model variables
9017  ,
9018  // reals
9019  modelVar_An,
9020  modelVar_Tk,
9021  modelVar_Vt,
9022  modelVar_VtINV,
9023  modelVar_VDE_T,
9024  modelVar_VDC_T,
9025  modelVar_XP_T,
9026  modelVar_BF_T,
9027  modelVar_BRI_T,
9028  modelVar_IS_T,
9029  modelVar_VEF_T,
9030  modelVar_VER_T,
9031  modelVar_nZEB_T,
9032  modelVar_pow2_2mPE,
9033  modelVar_pow2_PEm2,
9034  modelVar_inv_VDE_T,
9035  modelVar_VGZEB_T,
9036  modelVar_TAUE_T,
9037  modelVar_TAUB_T,
9038  modelVar_TEPI_T,
9039  modelVar_TAUR_T,
9040  modelVar_BnT,
9041  modelVar_DEG_T,
9042  modelVar_VDS_T,
9043  modelVar_IKS_T,
9044  modelVar_IS_TM,
9045  modelVar_IK_TM,
9046  modelVar_IBF_TM,
9047  modelVar_IBR_TM,
9048  modelVar_IHC_M,
9049  modelVar_IZEB_TM,
9050  modelVar_CJE_TM,
9051  modelVar_CJC_TM,
9052  modelVar_RE_TM,
9053  modelVar_RBC_TM,
9054  modelVar_RBV_TM,
9055  modelVar_RCV_TM,
9056  modelVar_SCRCV_M,
9057  modelVar_RCCxx_TM,
9058  modelVar_GCCxx_TM,
9059  modelVar_GCCex_TM,
9060  modelVar_GCCin_TM,
9061  modelVar_KF_M,
9062  modelVar_KFN_M,
9063  modelVar_ISS_TM,
9064  modelVar_ICSS_TM,
9065  modelVar_IKS_TM,
9066  modelVar_CJS_TM,
9067  modelVar_Xext1,
9068  modelVar_CBEO_M,
9069  modelVar_CBCO_M,
9070  in.admsTemperature,
9071  in.adms_vt_nom,
9072  in.getDeviceOptions().gmin,
9073  staticContributions,
9074  dynamicContributions,
9075  in);
9076 
9077 
9078  // We now have the F and Q vector stuff, populate the dependencies:
9079 
9080  dfdp[in.admsNodeID_c] += staticContributions[in.admsNodeID_c].dx(0);
9081  dqdp[in.admsNodeID_c] += dynamicContributions[in.admsNodeID_c].dx(0);
9082  Findices[in.admsNodeID_c] = in.li_c;
9083  Qindices[in.admsNodeID_c] = in.li_c;
9084  dfdp[in.admsNodeID_b] += staticContributions[in.admsNodeID_b].dx(0);
9085  dqdp[in.admsNodeID_b] += dynamicContributions[in.admsNodeID_b].dx(0);
9086  Findices[in.admsNodeID_b] = in.li_b;
9087  Qindices[in.admsNodeID_b] = in.li_b;
9088  dfdp[in.admsNodeID_e] += staticContributions[in.admsNodeID_e].dx(0);
9089  dqdp[in.admsNodeID_e] += dynamicContributions[in.admsNodeID_e].dx(0);
9090  Findices[in.admsNodeID_e] = in.li_e;
9091  Qindices[in.admsNodeID_e] = in.li_e;
9092  dfdp[in.admsNodeID_s] += staticContributions[in.admsNodeID_s].dx(0);
9093  dqdp[in.admsNodeID_s] += dynamicContributions[in.admsNodeID_s].dx(0);
9094  Findices[in.admsNodeID_s] = in.li_s;
9095  Qindices[in.admsNodeID_s] = in.li_s;
9096  dfdp[in.admsNodeID_e1] += staticContributions[in.admsNodeID_e1].dx(0);
9097  dqdp[in.admsNodeID_e1] += dynamicContributions[in.admsNodeID_e1].dx(0);
9098  Findices[in.admsNodeID_e1] = in.li_e1;
9099  Qindices[in.admsNodeID_e1] = in.li_e1;
9100  dfdp[in.admsNodeID_b1] += staticContributions[in.admsNodeID_b1].dx(0);
9101  dqdp[in.admsNodeID_b1] += dynamicContributions[in.admsNodeID_b1].dx(0);
9102  Findices[in.admsNodeID_b1] = in.li_b1;
9103  Qindices[in.admsNodeID_b1] = in.li_b1;
9104  dfdp[in.admsNodeID_b2] += staticContributions[in.admsNodeID_b2].dx(0);
9105  dqdp[in.admsNodeID_b2] += dynamicContributions[in.admsNodeID_b2].dx(0);
9106  Findices[in.admsNodeID_b2] = in.li_b2;
9107  Qindices[in.admsNodeID_b2] = in.li_b2;
9108  dfdp[in.admsNodeID_c3] += staticContributions[in.admsNodeID_c3].dx(0);
9109  dqdp[in.admsNodeID_c3] += dynamicContributions[in.admsNodeID_c3].dx(0);
9110  Findices[in.admsNodeID_c3] = in.li_c3;
9111  Qindices[in.admsNodeID_c3] = in.li_c3;
9112  dfdp[in.admsNodeID_c4] += staticContributions[in.admsNodeID_c4].dx(0);
9113  dqdp[in.admsNodeID_c4] += dynamicContributions[in.admsNodeID_c4].dx(0);
9114  Findices[in.admsNodeID_c4] = in.li_c4;
9115  Qindices[in.admsNodeID_c4] = in.li_c4;
9116  dfdp[in.admsNodeID_c2] += staticContributions[in.admsNodeID_c2].dx(0);
9117  dqdp[in.admsNodeID_c2] += dynamicContributions[in.admsNodeID_c2].dx(0);
9118  Findices[in.admsNodeID_c2] = in.li_c2;
9119  Qindices[in.admsNodeID_c2] = in.li_c2;
9120  dfdp[in.admsNodeID_c1] += staticContributions[in.admsNodeID_c1].dx(0);
9121  dqdp[in.admsNodeID_c1] += dynamicContributions[in.admsNodeID_c1].dx(0);
9122  Findices[in.admsNodeID_c1] = in.li_c1;
9123  Qindices[in.admsNodeID_c1] = in.li_c1;
9124  dfdp[in.admsNodeID_noi] += staticContributions[in.admsNodeID_noi].dx(0);
9125  dqdp[in.admsNodeID_noi] += dynamicContributions[in.admsNodeID_noi].dx(0);
9126  Findices[in.admsNodeID_noi] = in.li_noi;
9127  Qindices[in.admsNodeID_noi] = in.li_noi;
9128 
9129 
9130 }
9131 
9132 //-----------------------------------------------------------------------------
9133 // Function : ModelSensitivity::operator()
9134 // Purpose : return sensitivity for a single model parameter
9135 // Special Notes :
9136 // Scope : public
9137 // Creator : admsXml
9138 // Creation Date :
9139 //-----------------------------------------------------------------------------
9140 /// Compute sensitivity to a specified model
9141 /// parameter of all device instances of that model's outputs
9142 ///
9143 ///
9144 /// @param[in] entity The device entity that owns the parameter
9145 /// @param[in] name The unadorned parameter name specific to the entity
9146 /// @param[out] dfdp The derivative of the F vector with respect to the parameter
9147 /// @param[out] dqdp The derivative of the Q vector with respect to the parameter
9148 /// @param[out] dbdp The derivative of the B vector with respect to the parameter
9149 /// @param[out] Findices The indices into the F vector corresponding to the elements of dfdp
9150 /// @param[out] Qindices The indices into the Q vector corresponding to the elements of dfdp
9151 /// @param[out] Bindices The indices into the B vector corresponding to the elements of dfdp
9152 ///
9153 ///
9154 void ModelSensitivity::operator()
9155  (
9156  const ParameterBase &entity,
9157  const std::string &name,
9158  std::vector<double> & dfdp,
9159  std::vector<double> & dqdp,
9160  std::vector<double> & dbdp,
9161  std::vector<int> & Findices,
9162  std::vector<int> & Qindices,
9163  std::vector<int> & Bindices
9164  ) const
9165 {
9166  const ParameterBase * e1 = &entity;
9167  const Model & mod = *(dynamic_cast<const Model *> (e1));
9168  int sizeInstance = mod.instanceContainer.size();
9169 
9170  dfdp.resize((12+0)*sizeInstance);
9171  dqdp.resize((12+0)*sizeInstance);
9172  Findices.resize((12+0)*sizeInstance);
9173  Qindices.resize((12+0)*sizeInstance);
9174 
9175  std::vector <double> probeVars(15);
9176  std::vector <AdmsSensFadType> staticContributions(12+0);
9177  std::vector <AdmsSensFadType> dynamicContributions(12+0);
9178 
9179 
9180  // Copy out all the model parameters (doubles) into FAD types
9181  // Keep a map so we can set the right one to the independent variable
9182  // We do this solely to avoid a big ugly "if/else" block just to find the
9183  // one parameter we're doing sensitivities on.
9184  unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> modParamMap;
9185 
9186  // reals
9187  AdmsSensFadType modelPar_TREF=mod.TREF;
9188  bool modelPar_given_TREF=mod.given("TREF");
9189  modParamMap["TREF"] = &modelPar_TREF;
9190  AdmsSensFadType modelPar_DTA=mod.DTA;
9191  bool modelPar_given_DTA=mod.given("DTA");
9192  modParamMap["DTA"] = &modelPar_DTA;
9193  AdmsSensFadType modelPar_IS=mod.IS;
9194  bool modelPar_given_IS=mod.given("IS");
9195  modParamMap["IS"] = &modelPar_IS;
9196  AdmsSensFadType modelPar_IK=mod.IK;
9197  bool modelPar_given_IK=mod.given("IK");
9198  modParamMap["IK"] = &modelPar_IK;
9199  AdmsSensFadType modelPar_VER=mod.VER;
9200  bool modelPar_given_VER=mod.given("VER");
9201  modParamMap["VER"] = &modelPar_VER;
9202  AdmsSensFadType modelPar_VEF=mod.VEF;
9203  bool modelPar_given_VEF=mod.given("VEF");
9204  modParamMap["VEF"] = &modelPar_VEF;
9205  AdmsSensFadType modelPar_BF=mod.BF;
9206  bool modelPar_given_BF=mod.given("BF");
9207  modParamMap["BF"] = &modelPar_BF;
9208  AdmsSensFadType modelPar_IBF=mod.IBF;
9209  bool modelPar_given_IBF=mod.given("IBF");
9210  modParamMap["IBF"] = &modelPar_IBF;
9211  AdmsSensFadType modelPar_MLF=mod.MLF;
9212  bool modelPar_given_MLF=mod.given("MLF");
9213  modParamMap["MLF"] = &modelPar_MLF;
9214  AdmsSensFadType modelPar_XIBI=mod.XIBI;
9215  bool modelPar_given_XIBI=mod.given("XIBI");
9216  modParamMap["XIBI"] = &modelPar_XIBI;
9217  AdmsSensFadType modelPar_IZEB=mod.IZEB;
9218  bool modelPar_given_IZEB=mod.given("IZEB");
9219  modParamMap["IZEB"] = &modelPar_IZEB;
9220  AdmsSensFadType modelPar_NZEB=mod.NZEB;
9221  bool modelPar_given_NZEB=mod.given("NZEB");
9222  modParamMap["NZEB"] = &modelPar_NZEB;
9223  AdmsSensFadType modelPar_BRI=mod.BRI;
9224  bool modelPar_given_BRI=mod.given("BRI");
9225  modParamMap["BRI"] = &modelPar_BRI;
9226  AdmsSensFadType modelPar_IBR=mod.IBR;
9227  bool modelPar_given_IBR=mod.given("IBR");
9228  modParamMap["IBR"] = &modelPar_IBR;
9229  AdmsSensFadType modelPar_VLR=mod.VLR;
9230  bool modelPar_given_VLR=mod.given("VLR");
9231  modParamMap["VLR"] = &modelPar_VLR;
9232  AdmsSensFadType modelPar_XEXT=mod.XEXT;
9233  bool modelPar_given_XEXT=mod.given("XEXT");
9234  modParamMap["XEXT"] = &modelPar_XEXT;
9235  AdmsSensFadType modelPar_WAVL=mod.WAVL;
9236  bool modelPar_given_WAVL=mod.given("WAVL");
9237  modParamMap["WAVL"] = &modelPar_WAVL;
9238  AdmsSensFadType modelPar_VAVL=mod.VAVL;
9239  bool modelPar_given_VAVL=mod.given("VAVL");
9240  modParamMap["VAVL"] = &modelPar_VAVL;
9241  AdmsSensFadType modelPar_SFH=mod.SFH;
9242  bool modelPar_given_SFH=mod.given("SFH");
9243  modParamMap["SFH"] = &modelPar_SFH;
9244  AdmsSensFadType modelPar_RE=mod.RE;
9245  bool modelPar_given_RE=mod.given("RE");
9246  modParamMap["RE"] = &modelPar_RE;
9247  AdmsSensFadType modelPar_RBC=mod.RBC;
9248  bool modelPar_given_RBC=mod.given("RBC");
9249  modParamMap["RBC"] = &modelPar_RBC;
9250  AdmsSensFadType modelPar_RBV=mod.RBV;
9251  bool modelPar_given_RBV=mod.given("RBV");
9252  modParamMap["RBV"] = &modelPar_RBV;
9253  AdmsSensFadType modelPar_RCC=mod.RCC;
9254  bool modelPar_given_RCC=mod.given("RCC");
9255  modParamMap["RCC"] = &modelPar_RCC;
9256  AdmsSensFadType modelPar_RCV=mod.RCV;
9257  bool modelPar_given_RCV=mod.given("RCV");
9258  modParamMap["RCV"] = &modelPar_RCV;
9259  AdmsSensFadType modelPar_SCRCV=mod.SCRCV;
9260  bool modelPar_given_SCRCV=mod.given("SCRCV");
9261  modParamMap["SCRCV"] = &modelPar_SCRCV;
9262  AdmsSensFadType modelPar_IHC=mod.IHC;
9263  bool modelPar_given_IHC=mod.given("IHC");
9264  modParamMap["IHC"] = &modelPar_IHC;
9265  AdmsSensFadType modelPar_AXI=mod.AXI;
9266  bool modelPar_given_AXI=mod.given("AXI");
9267  modParamMap["AXI"] = &modelPar_AXI;
9268  AdmsSensFadType modelPar_CJE=mod.CJE;
9269  bool modelPar_given_CJE=mod.given("CJE");
9270  modParamMap["CJE"] = &modelPar_CJE;
9271  AdmsSensFadType modelPar_VDE=mod.VDE;
9272  bool modelPar_given_VDE=mod.given("VDE");
9273  modParamMap["VDE"] = &modelPar_VDE;
9274  AdmsSensFadType modelPar_PE=mod.PE;
9275  bool modelPar_given_PE=mod.given("PE");
9276  modParamMap["PE"] = &modelPar_PE;
9277  AdmsSensFadType modelPar_XCJE=mod.XCJE;
9278  bool modelPar_given_XCJE=mod.given("XCJE");
9279  modParamMap["XCJE"] = &modelPar_XCJE;
9280  AdmsSensFadType modelPar_CBEO=mod.CBEO;
9281  bool modelPar_given_CBEO=mod.given("CBEO");
9282  modParamMap["CBEO"] = &modelPar_CBEO;
9283  AdmsSensFadType modelPar_CJC=mod.CJC;
9284  bool modelPar_given_CJC=mod.given("CJC");
9285  modParamMap["CJC"] = &modelPar_CJC;
9286  AdmsSensFadType modelPar_VDC=mod.VDC;
9287  bool modelPar_given_VDC=mod.given("VDC");
9288  modParamMap["VDC"] = &modelPar_VDC;
9289  AdmsSensFadType modelPar_PC=mod.PC;
9290  bool modelPar_given_PC=mod.given("PC");
9291  modParamMap["PC"] = &modelPar_PC;
9292  AdmsSensFadType modelPar_XP=mod.XP;
9293  bool modelPar_given_XP=mod.given("XP");
9294  modParamMap["XP"] = &modelPar_XP;
9295  AdmsSensFadType modelPar_MC=mod.MC;
9296  bool modelPar_given_MC=mod.given("MC");
9297  modParamMap["MC"] = &modelPar_MC;
9298  AdmsSensFadType modelPar_XCJC=mod.XCJC;
9299  bool modelPar_given_XCJC=mod.given("XCJC");
9300  modParamMap["XCJC"] = &modelPar_XCJC;
9301  AdmsSensFadType modelPar_RCBLX=mod.RCBLX;
9302  bool modelPar_given_RCBLX=mod.given("RCBLX");
9303  modParamMap["RCBLX"] = &modelPar_RCBLX;
9304  AdmsSensFadType modelPar_RCBLI=mod.RCBLI;
9305  bool modelPar_given_RCBLI=mod.given("RCBLI");
9306  modParamMap["RCBLI"] = &modelPar_RCBLI;
9307  AdmsSensFadType modelPar_CBCO=mod.CBCO;
9308  bool modelPar_given_CBCO=mod.given("CBCO");
9309  modParamMap["CBCO"] = &modelPar_CBCO;
9310  AdmsSensFadType modelPar_MTAU=mod.MTAU;
9311  bool modelPar_given_MTAU=mod.given("MTAU");
9312  modParamMap["MTAU"] = &modelPar_MTAU;
9313  AdmsSensFadType modelPar_TAUE=mod.TAUE;
9314  bool modelPar_given_TAUE=mod.given("TAUE");
9315  modParamMap["TAUE"] = &modelPar_TAUE;
9316  AdmsSensFadType modelPar_TAUB=mod.TAUB;
9317  bool modelPar_given_TAUB=mod.given("TAUB");
9318  modParamMap["TAUB"] = &modelPar_TAUB;
9319  AdmsSensFadType modelPar_TEPI=mod.TEPI;
9320  bool modelPar_given_TEPI=mod.given("TEPI");
9321  modParamMap["TEPI"] = &modelPar_TEPI;
9322  AdmsSensFadType modelPar_TAUR=mod.TAUR;
9323  bool modelPar_given_TAUR=mod.given("TAUR");
9324  modParamMap["TAUR"] = &modelPar_TAUR;
9325  AdmsSensFadType modelPar_DEG=mod.DEG;
9326  bool modelPar_given_DEG=mod.given("DEG");
9327  modParamMap["DEG"] = &modelPar_DEG;
9328  AdmsSensFadType modelPar_XREC=mod.XREC;
9329  bool modelPar_given_XREC=mod.given("XREC");
9330  modParamMap["XREC"] = &modelPar_XREC;
9331  AdmsSensFadType modelPar_AQBO=mod.AQBO;
9332  bool modelPar_given_AQBO=mod.given("AQBO");
9333  modParamMap["AQBO"] = &modelPar_AQBO;
9334  AdmsSensFadType modelPar_AE=mod.AE;
9335  bool modelPar_given_AE=mod.given("AE");
9336  modParamMap["AE"] = &modelPar_AE;
9337  AdmsSensFadType modelPar_AB=mod.AB;
9338  bool modelPar_given_AB=mod.given("AB");
9339  modParamMap["AB"] = &modelPar_AB;
9340  AdmsSensFadType modelPar_AEPI=mod.AEPI;
9341  bool modelPar_given_AEPI=mod.given("AEPI");
9342  modParamMap["AEPI"] = &modelPar_AEPI;
9343  AdmsSensFadType modelPar_AEX=mod.AEX;
9344  bool modelPar_given_AEX=mod.given("AEX");
9345  modParamMap["AEX"] = &modelPar_AEX;
9346  AdmsSensFadType modelPar_AC=mod.AC;
9347  bool modelPar_given_AC=mod.given("AC");
9348  modParamMap["AC"] = &modelPar_AC;
9349  AdmsSensFadType modelPar_ACBL=mod.ACBL;
9350  bool modelPar_given_ACBL=mod.given("ACBL");
9351  modParamMap["ACBL"] = &modelPar_ACBL;
9352  AdmsSensFadType modelPar_DVGBF=mod.DVGBF;
9353  bool modelPar_given_DVGBF=mod.given("DVGBF");
9354  modParamMap["DVGBF"] = &modelPar_DVGBF;
9355  AdmsSensFadType modelPar_DVGBR=mod.DVGBR;
9356  bool modelPar_given_DVGBR=mod.given("DVGBR");
9357  modParamMap["DVGBR"] = &modelPar_DVGBR;
9358  AdmsSensFadType modelPar_VGB=mod.VGB;
9359  bool modelPar_given_VGB=mod.given("VGB");
9360  modParamMap["VGB"] = &modelPar_VGB;
9361  AdmsSensFadType modelPar_VGC=mod.VGC;
9362  bool modelPar_given_VGC=mod.given("VGC");
9363  modParamMap["VGC"] = &modelPar_VGC;
9364  AdmsSensFadType modelPar_VGJ=mod.VGJ;
9365  bool modelPar_given_VGJ=mod.given("VGJ");
9366  modParamMap["VGJ"] = &modelPar_VGJ;
9367  AdmsSensFadType modelPar_VGZEB=mod.VGZEB;
9368  bool modelPar_given_VGZEB=mod.given("VGZEB");
9369  modParamMap["VGZEB"] = &modelPar_VGZEB;
9370  AdmsSensFadType modelPar_AVGEB=mod.AVGEB;
9371  bool modelPar_given_AVGEB=mod.given("AVGEB");
9372  modParamMap["AVGEB"] = &modelPar_AVGEB;
9373  AdmsSensFadType modelPar_TVGEB=mod.TVGEB;
9374  bool modelPar_given_TVGEB=mod.given("TVGEB");
9375  modParamMap["TVGEB"] = &modelPar_TVGEB;
9376  AdmsSensFadType modelPar_DVGTE=mod.DVGTE;
9377  bool modelPar_given_DVGTE=mod.given("DVGTE");
9378  modParamMap["DVGTE"] = &modelPar_DVGTE;
9379  AdmsSensFadType modelPar_DAIS=mod.DAIS;
9380  bool modelPar_given_DAIS=mod.given("DAIS");
9381  modParamMap["DAIS"] = &modelPar_DAIS;
9382  AdmsSensFadType modelPar_AF=mod.AF;
9383  bool modelPar_given_AF=mod.given("AF");
9384  modParamMap["AF"] = &modelPar_AF;
9385  AdmsSensFadType modelPar_KF=mod.KF;
9386  bool modelPar_given_KF=mod.given("KF");
9387  modParamMap["KF"] = &modelPar_KF;
9388  AdmsSensFadType modelPar_KFN=mod.KFN;
9389  bool modelPar_given_KFN=mod.given("KFN");
9390  modParamMap["KFN"] = &modelPar_KFN;
9391  AdmsSensFadType modelPar_ISS=mod.ISS;
9392  bool modelPar_given_ISS=mod.given("ISS");
9393  modParamMap["ISS"] = &modelPar_ISS;
9394  AdmsSensFadType modelPar_ICSS=mod.ICSS;
9395  bool modelPar_given_ICSS=mod.given("ICSS");
9396  modParamMap["ICSS"] = &modelPar_ICSS;
9397  AdmsSensFadType modelPar_IKS=mod.IKS;
9398  bool modelPar_given_IKS=mod.given("IKS");
9399  modParamMap["IKS"] = &modelPar_IKS;
9400  AdmsSensFadType modelPar_CJS=mod.CJS;
9401  bool modelPar_given_CJS=mod.given("CJS");
9402  modParamMap["CJS"] = &modelPar_CJS;
9403  AdmsSensFadType modelPar_VDS=mod.VDS;
9404  bool modelPar_given_VDS=mod.given("VDS");
9405  modParamMap["VDS"] = &modelPar_VDS;
9406  AdmsSensFadType modelPar_PS=mod.PS;
9407  bool modelPar_given_PS=mod.given("PS");
9408  modParamMap["PS"] = &modelPar_PS;
9409  AdmsSensFadType modelPar_VGS=mod.VGS;
9410  bool modelPar_given_VGS=mod.given("VGS");
9411  modParamMap["VGS"] = &modelPar_VGS;
9412  AdmsSensFadType modelPar_AS=mod.AS;
9413  bool modelPar_given_AS=mod.given("AS");
9414  modParamMap["AS"] = &modelPar_AS;
9415  AdmsSensFadType modelPar_ASUB=mod.ASUB;
9416  bool modelPar_given_ASUB=mod.given("ASUB");
9417  modParamMap["ASUB"] = &modelPar_ASUB;
9418  AdmsSensFadType modelPar_MULT=mod.MULT;
9419  bool modelPar_given_MULT=mod.given("MULT");
9420  modParamMap["MULT"] = &modelPar_MULT;
9421  AdmsSensFadType modelPar_GMIN=mod.GMIN;
9422  bool modelPar_given_GMIN=mod.given("GMIN");
9423  modParamMap["GMIN"] = &modelPar_GMIN;
9424 
9425 
9426  // hidden reals
9427 
9428 
9429  // non-reals (including hiddens)
9430  int modelPar_LEVEL=mod.LEVEL;
9431  bool modelPar_given_LEVEL=mod.given("LEVEL");
9432  int modelPar_EXMOD=mod.EXMOD;
9433  bool modelPar_given_EXMOD=mod.given("EXMOD");
9434  int modelPar_EXPHI=mod.EXPHI;
9435  bool modelPar_given_EXPHI=mod.given("EXPHI");
9436  int modelPar_EXAVL=mod.EXAVL;
9437  bool modelPar_given_EXAVL=mod.given("EXAVL");
9438  int modelPar_EXSUB=mod.EXSUB;
9439  bool modelPar_given_EXSUB=mod.given("EXSUB");
9440  int modelPar_KAVL=mod.KAVL;
9441  bool modelPar_given_KAVL=mod.given("KAVL");
9442  int modelPar_TYPE=mod.TYPE;
9443  bool modelPar_given_TYPE=mod.given("TYPE");
9444 
9445 
9446  // Set the one parameter whose name was passed in to be the independent
9447  // variable for Sacado purposes. Since we stored variable pointers, this
9448  // makes sure that that ONE variable gets set right.
9449  // FIXME: make this check name for presence first! Segfault on invalid.
9450  modParamMap[name]->diff(0,1);
9451 
9452  //make local copies of all model vars
9453  //reals
9454  AdmsSensFadType modelVar_An=mod.An;
9455  AdmsSensFadType modelVar_Tk=mod.Tk;
9456  AdmsSensFadType modelVar_Vt=mod.Vt;
9457  AdmsSensFadType modelVar_VtINV=mod.VtINV;
9458  AdmsSensFadType modelVar_VDE_T=mod.VDE_T;
9459  AdmsSensFadType modelVar_VDC_T=mod.VDC_T;
9460  AdmsSensFadType modelVar_XP_T=mod.XP_T;
9461  AdmsSensFadType modelVar_BF_T=mod.BF_T;
9462  AdmsSensFadType modelVar_BRI_T=mod.BRI_T;
9463  AdmsSensFadType modelVar_IS_T=mod.IS_T;
9464  AdmsSensFadType modelVar_VEF_T=mod.VEF_T;
9465  AdmsSensFadType modelVar_VER_T=mod.VER_T;
9466  AdmsSensFadType modelVar_nZEB_T=mod.nZEB_T;
9467  AdmsSensFadType modelVar_pow2_2mPE=mod.pow2_2mPE;
9468  AdmsSensFadType modelVar_pow2_PEm2=mod.pow2_PEm2;
9469  AdmsSensFadType modelVar_inv_VDE_T=mod.inv_VDE_T;
9470  AdmsSensFadType modelVar_VGZEB_T=mod.VGZEB_T;
9471  AdmsSensFadType modelVar_TAUE_T=mod.TAUE_T;
9472  AdmsSensFadType modelVar_TAUB_T=mod.TAUB_T;
9473  AdmsSensFadType modelVar_TEPI_T=mod.TEPI_T;
9474  AdmsSensFadType modelVar_TAUR_T=mod.TAUR_T;
9475  AdmsSensFadType modelVar_BnT=mod.BnT;
9476  AdmsSensFadType modelVar_DEG_T=mod.DEG_T;
9477  AdmsSensFadType modelVar_VDS_T=mod.VDS_T;
9478  AdmsSensFadType modelVar_IKS_T=mod.IKS_T;
9479  AdmsSensFadType modelVar_IS_TM=mod.IS_TM;
9480  AdmsSensFadType modelVar_IK_TM=mod.IK_TM;
9481  AdmsSensFadType modelVar_IBF_TM=mod.IBF_TM;
9482  AdmsSensFadType modelVar_IBR_TM=mod.IBR_TM;
9483  AdmsSensFadType modelVar_IHC_M=mod.IHC_M;
9484  AdmsSensFadType modelVar_IZEB_TM=mod.IZEB_TM;
9485  AdmsSensFadType modelVar_CJE_TM=mod.CJE_TM;
9486  AdmsSensFadType modelVar_CJC_TM=mod.CJC_TM;
9487  AdmsSensFadType modelVar_RE_TM=mod.RE_TM;
9488  AdmsSensFadType modelVar_RBC_TM=mod.RBC_TM;
9489  AdmsSensFadType modelVar_RBV_TM=mod.RBV_TM;
9490  AdmsSensFadType modelVar_RCV_TM=mod.RCV_TM;
9491  AdmsSensFadType modelVar_SCRCV_M=mod.SCRCV_M;
9492  AdmsSensFadType modelVar_RCCxx_TM=mod.RCCxx_TM;
9493  AdmsSensFadType modelVar_GCCxx_TM=mod.GCCxx_TM;
9494  AdmsSensFadType modelVar_GCCex_TM=mod.GCCex_TM;
9495  AdmsSensFadType modelVar_GCCin_TM=mod.GCCin_TM;
9496  AdmsSensFadType modelVar_KF_M=mod.KF_M;
9497  AdmsSensFadType modelVar_KFN_M=mod.KFN_M;
9498  AdmsSensFadType modelVar_ISS_TM=mod.ISS_TM;
9499  AdmsSensFadType modelVar_ICSS_TM=mod.ICSS_TM;
9500  AdmsSensFadType modelVar_IKS_TM=mod.IKS_TM;
9501  AdmsSensFadType modelVar_CJS_TM=mod.CJS_TM;
9502  AdmsSensFadType modelVar_Xext1=mod.Xext1;
9503  AdmsSensFadType modelVar_CBEO_M=mod.CBEO_M;
9504  AdmsSensFadType modelVar_CBCO_M=mod.CBCO_M;
9505 
9506 
9507  // non-reals
9508 
9509  // Need to use processParams-like function to process the
9510  // initial_model block with the LOCAL copies of
9511  // model vars, and local copies of model
9512  // params.
9513  evaluateInitialModel(
9514  // model parameters
9515  // reals
9516  modelPar_TREF,
9517  modelPar_given_TREF,
9518  modelPar_DTA,
9519  modelPar_given_DTA,
9520  modelPar_IS,
9521  modelPar_given_IS,
9522  modelPar_IK,
9523  modelPar_given_IK,
9524  modelPar_VER,
9525  modelPar_given_VER,
9526  modelPar_VEF,
9527  modelPar_given_VEF,
9528  modelPar_BF,
9529  modelPar_given_BF,
9530  modelPar_IBF,
9531  modelPar_given_IBF,
9532  modelPar_MLF,
9533  modelPar_given_MLF,
9534  modelPar_XIBI,
9535  modelPar_given_XIBI,
9536  modelPar_IZEB,
9537  modelPar_given_IZEB,
9538  modelPar_NZEB,
9539  modelPar_given_NZEB,
9540  modelPar_BRI,
9541  modelPar_given_BRI,
9542  modelPar_IBR,
9543  modelPar_given_IBR,
9544  modelPar_VLR,
9545  modelPar_given_VLR,
9546  modelPar_XEXT,
9547  modelPar_given_XEXT,
9548  modelPar_WAVL,
9549  modelPar_given_WAVL,
9550  modelPar_VAVL,
9551  modelPar_given_VAVL,
9552  modelPar_SFH,
9553  modelPar_given_SFH,
9554  modelPar_RE,
9555  modelPar_given_RE,
9556  modelPar_RBC,
9557  modelPar_given_RBC,
9558  modelPar_RBV,
9559  modelPar_given_RBV,
9560  modelPar_RCC,
9561  modelPar_given_RCC,
9562  modelPar_RCV,
9563  modelPar_given_RCV,
9564  modelPar_SCRCV,
9565  modelPar_given_SCRCV,
9566  modelPar_IHC,
9567  modelPar_given_IHC,
9568  modelPar_AXI,
9569  modelPar_given_AXI,
9570  modelPar_CJE,
9571  modelPar_given_CJE,
9572  modelPar_VDE,
9573  modelPar_given_VDE,
9574  modelPar_PE,
9575  modelPar_given_PE,
9576  modelPar_XCJE,
9577  modelPar_given_XCJE,
9578  modelPar_CBEO,
9579  modelPar_given_CBEO,
9580  modelPar_CJC,
9581  modelPar_given_CJC,
9582  modelPar_VDC,
9583  modelPar_given_VDC,
9584  modelPar_PC,
9585  modelPar_given_PC,
9586  modelPar_XP,
9587  modelPar_given_XP,
9588  modelPar_MC,
9589  modelPar_given_MC,
9590  modelPar_XCJC,
9591  modelPar_given_XCJC,
9592  modelPar_RCBLX,
9593  modelPar_given_RCBLX,
9594  modelPar_RCBLI,
9595  modelPar_given_RCBLI,
9596  modelPar_CBCO,
9597  modelPar_given_CBCO,
9598  modelPar_MTAU,
9599  modelPar_given_MTAU,
9600  modelPar_TAUE,
9601  modelPar_given_TAUE,
9602  modelPar_TAUB,
9603  modelPar_given_TAUB,
9604  modelPar_TEPI,
9605  modelPar_given_TEPI,
9606  modelPar_TAUR,
9607  modelPar_given_TAUR,
9608  modelPar_DEG,
9609  modelPar_given_DEG,
9610  modelPar_XREC,
9611  modelPar_given_XREC,
9612  modelPar_AQBO,
9613  modelPar_given_AQBO,
9614  modelPar_AE,
9615  modelPar_given_AE,
9616  modelPar_AB,
9617  modelPar_given_AB,
9618  modelPar_AEPI,
9619  modelPar_given_AEPI,
9620  modelPar_AEX,
9621  modelPar_given_AEX,
9622  modelPar_AC,
9623  modelPar_given_AC,
9624  modelPar_ACBL,
9625  modelPar_given_ACBL,
9626  modelPar_DVGBF,
9627  modelPar_given_DVGBF,
9628  modelPar_DVGBR,
9629  modelPar_given_DVGBR,
9630  modelPar_VGB,
9631  modelPar_given_VGB,
9632  modelPar_VGC,
9633  modelPar_given_VGC,
9634  modelPar_VGJ,
9635  modelPar_given_VGJ,
9636  modelPar_VGZEB,
9637  modelPar_given_VGZEB,
9638  modelPar_AVGEB,
9639  modelPar_given_AVGEB,
9640  modelPar_TVGEB,
9641  modelPar_given_TVGEB,
9642  modelPar_DVGTE,
9643  modelPar_given_DVGTE,
9644  modelPar_DAIS,
9645  modelPar_given_DAIS,
9646  modelPar_AF,
9647  modelPar_given_AF,
9648  modelPar_KF,
9649  modelPar_given_KF,
9650  modelPar_KFN,
9651  modelPar_given_KFN,
9652  modelPar_ISS,
9653  modelPar_given_ISS,
9654  modelPar_ICSS,
9655  modelPar_given_ICSS,
9656  modelPar_IKS,
9657  modelPar_given_IKS,
9658  modelPar_CJS,
9659  modelPar_given_CJS,
9660  modelPar_VDS,
9661  modelPar_given_VDS,
9662  modelPar_PS,
9663  modelPar_given_PS,
9664  modelPar_VGS,
9665  modelPar_given_VGS,
9666  modelPar_AS,
9667  modelPar_given_AS,
9668  modelPar_ASUB,
9669  modelPar_given_ASUB,
9670  modelPar_MULT,
9671  modelPar_given_MULT,
9672  modelPar_GMIN,
9673  modelPar_given_GMIN,
9674  // non-reals (including hidden)
9675  modelPar_LEVEL,
9676  modelPar_given_LEVEL,
9677  modelPar_EXMOD,
9678  modelPar_given_EXMOD,
9679  modelPar_EXPHI,
9680  modelPar_given_EXPHI,
9681  modelPar_EXAVL,
9682  modelPar_given_EXAVL,
9683  modelPar_EXSUB,
9684  modelPar_given_EXSUB,
9685  modelPar_KAVL,
9686  modelPar_given_KAVL,
9687  modelPar_TYPE,
9688  modelPar_given_TYPE// model variables
9689  ,
9690  // reals
9691  modelVar_An,
9692  modelVar_Tk,
9693  modelVar_Vt,
9694  modelVar_VtINV,
9695  modelVar_VDE_T,
9696  modelVar_VDC_T,
9697  modelVar_XP_T,
9698  modelVar_BF_T,
9699  modelVar_BRI_T,
9700  modelVar_IS_T,
9701  modelVar_VEF_T,
9702  modelVar_VER_T,
9703  modelVar_nZEB_T,
9704  modelVar_pow2_2mPE,
9705  modelVar_pow2_PEm2,
9706  modelVar_inv_VDE_T,
9707  modelVar_VGZEB_T,
9708  modelVar_TAUE_T,
9709  modelVar_TAUB_T,
9710  modelVar_TEPI_T,
9711  modelVar_TAUR_T,
9712  modelVar_BnT,
9713  modelVar_DEG_T,
9714  modelVar_VDS_T,
9715  modelVar_IKS_T,
9716  modelVar_IS_TM,
9717  modelVar_IK_TM,
9718  modelVar_IBF_TM,
9719  modelVar_IBR_TM,
9720  modelVar_IHC_M,
9721  modelVar_IZEB_TM,
9722  modelVar_CJE_TM,
9723  modelVar_CJC_TM,
9724  modelVar_RE_TM,
9725  modelVar_RBC_TM,
9726  modelVar_RBV_TM,
9727  modelVar_RCV_TM,
9728  modelVar_SCRCV_M,
9729  modelVar_RCCxx_TM,
9730  modelVar_GCCxx_TM,
9731  modelVar_GCCex_TM,
9732  modelVar_GCCin_TM,
9733  modelVar_KF_M,
9734  modelVar_KFN_M,
9735  modelVar_ISS_TM,
9736  modelVar_ICSS_TM,
9737  modelVar_IKS_TM,
9738  modelVar_CJS_TM,
9739  modelVar_Xext1,
9740  modelVar_CBEO_M,
9741  modelVar_CBCO_M,
9742  mod.admsModTemp);
9743 
9744 
9745 
9746  // Now loop over all instances and do the deed
9747  int inst=0;
9748  for (std::vector<Instance*>::const_iterator in_it=mod.instanceContainer.begin(); in_it != mod.instanceContainer.end(); ++in_it,++inst)
9749  {
9750 
9751  Instance & in=*(*in_it);
9752  // initialize contributions to zero (automatically sets derivatives to zero)
9753  for (int i=0; i < 12+0 ; ++i)
9754  {
9755  staticContributions[i]=0;
9756  dynamicContributions[i]=0;
9757  }
9758 
9759 
9760 
9761  // Copy out all the instance parameters (doubles) into FAD types
9762  // reals
9763  AdmsSensFadType instancePar_MULT=in.MULT;
9764  bool instancePar_given_MULT=in.given("MULT");
9765 
9766 
9767  // real hidden instance
9768 
9769 
9770  // Copy all the non-real instance params into vars of their appropriate type:
9771 
9772 
9773 
9774 
9775  // If there are any instance parameters that were not given, and have
9776  // corresponding model params, copy the model param into the instance.
9777  // This was already done by the instance constructor, but we do it again
9778  // because now we're propagating derivatives, and the user could be trying
9779  // to get sensitivity to the model parameter.
9780  if (!(in.given("MULT")))
9781  {
9782  instancePar_MULT = modelPar_MULT;
9783  }
9784 
9785 
9786  //make local copies of all instance vars
9787  //reals
9788  AdmsSensFadType instanceVar_Izteb=in.Izteb;
9789  AdmsSensFadType instanceVar_qBI=in.qBI;
9790  AdmsSensFadType instanceVar_Ir=in.Ir;
9791  AdmsSensFadType instanceVar_If=in.If;
9792  AdmsSensFadType instanceVar_Ib1=in.Ib1;
9793  AdmsSensFadType instanceVar_Ib1_s=in.Ib1_s;
9794  AdmsSensFadType instanceVar_Ib2=in.Ib2;
9795  AdmsSensFadType instanceVar_Ib3=in.Ib3;
9796  AdmsSensFadType instanceVar_Iex=in.Iex;
9797  AdmsSensFadType instanceVar_XIex=in.XIex;
9798  AdmsSensFadType instanceVar_Isub=in.Isub;
9799  AdmsSensFadType instanceVar_XIsub=in.XIsub;
9800  AdmsSensFadType instanceVar_Rb2=in.Rb2;
9801  AdmsSensFadType instanceVar_Gem=in.Gem;
9802  AdmsSensFadType instanceVar_eVb1b2=in.eVb1b2;
9803 
9804 
9805  //non-reals
9806 
9807 
9808 
9809  Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
9810 
9811  // extract solution variables and set as Fad independent variables.
9812  probeVars[in.admsProbeID_V_noi_e1] = (*solVectorPtr)[in.li_noi] - (*solVectorPtr)[in.li_e1];
9813  probeVars[in.admsProbeID_V_c3_c1] = (*solVectorPtr)[in.li_c3] - (*solVectorPtr)[in.li_c1];
9814  probeVars[in.admsProbeID_V_c3_c4] = (*solVectorPtr)[in.li_c3] - (*solVectorPtr)[in.li_c4];
9815  probeVars[in.admsProbeID_V_c4_c1] = (*solVectorPtr)[in.li_c4] - (*solVectorPtr)[in.li_c1];
9816  probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
9817  probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
9818  probeVars[in.admsProbeID_V_b_b1] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_b1];
9819  probeVars[in.admsProbeID_V_e_e1] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_e1];
9820  probeVars[in.admsProbeID_V_c1_c2] = (*solVectorPtr)[in.li_c1] - (*solVectorPtr)[in.li_c2];
9821  probeVars[in.admsProbeID_V_s_c1] = (*solVectorPtr)[in.li_s] - (*solVectorPtr)[in.li_c1];
9822  probeVars[in.admsProbeID_V_b1_b2] = (*solVectorPtr)[in.li_b1] - (*solVectorPtr)[in.li_b2];
9823  probeVars[in.admsProbeID_V_b1_e1] = (*solVectorPtr)[in.li_b1] - (*solVectorPtr)[in.li_e1];
9824  probeVars[in.admsProbeID_V_b2_e1] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_e1];
9825  probeVars[in.admsProbeID_V_b2_c2] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_c2];
9826  probeVars[in.admsProbeID_V_b2_c1] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_c1];
9827 
9828  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
9829  probeVars[in.admsProbeID_V_b1_b2] *= modelPar_TYPE;
9830  probeVars[in.admsProbeID_V_b1_e1] *= modelPar_TYPE;
9831  probeVars[in.admsProbeID_V_b2_c2] *= modelPar_TYPE;
9832  probeVars[in.admsProbeID_V_b2_c1] *= modelPar_TYPE;
9833 
9834 
9835 
9836  // Now call the function that does the heavy lifting.
9837 
9838  evaluateModelEquations(
9839  probeVars,
9840  // probe constants
9841  in.admsProbeID_V_noi_e1,
9842  in.admsProbeID_V_c3_c1,
9843  in.admsProbeID_V_c3_c4,
9844  in.admsProbeID_V_c4_c1,
9845  in.admsProbeID_V_b_c,
9846  in.admsProbeID_V_b_e,
9847  in.admsProbeID_V_b_b1,
9848  in.admsProbeID_V_e_e1,
9849  in.admsProbeID_V_c1_c2,
9850  in.admsProbeID_V_s_c1,
9851  in.admsProbeID_V_b1_b2,
9852  in.admsProbeID_V_b1_e1,
9853  in.admsProbeID_V_b2_e1,
9854  in.admsProbeID_V_b2_c2,
9855  in.admsProbeID_V_b2_c1,
9856 
9857  // node constants
9858  in.admsNodeID_c,
9859  in.admsNodeID_b,
9860  in.admsNodeID_e,
9861  in.admsNodeID_s,
9862  in.admsNodeID_e1,
9863  in.admsNodeID_b1,
9864  in.admsNodeID_b2,
9865  in.admsNodeID_c3,
9866  in.admsNodeID_c4,
9867  in.admsNodeID_c2,
9868  in.admsNodeID_c1,
9869  in.admsNodeID_noi,
9870  // instance parameters
9871  // reals
9872  instancePar_MULT,
9873  instancePar_given_MULT,
9874  // instance variables
9875  // reals
9876  instanceVar_Izteb,
9877  instanceVar_qBI,
9878  instanceVar_Ir,
9879  instanceVar_If,
9880  instanceVar_Ib1,
9881  instanceVar_Ib1_s,
9882  instanceVar_Ib2,
9883  instanceVar_Ib3,
9884  instanceVar_Iex,
9885  instanceVar_XIex,
9886  instanceVar_Isub,
9887  instanceVar_XIsub,
9888  instanceVar_Rb2,
9889  instanceVar_Gem,
9890  instanceVar_eVb1b2,
9891  // model parameters
9892  // reals
9893  modelPar_TREF,
9894  modelPar_given_TREF,
9895  modelPar_DTA,
9896  modelPar_given_DTA,
9897  modelPar_IS,
9898  modelPar_given_IS,
9899  modelPar_IK,
9900  modelPar_given_IK,
9901  modelPar_VER,
9902  modelPar_given_VER,
9903  modelPar_VEF,
9904  modelPar_given_VEF,
9905  modelPar_BF,
9906  modelPar_given_BF,
9907  modelPar_IBF,
9908  modelPar_given_IBF,
9909  modelPar_MLF,
9910  modelPar_given_MLF,
9911  modelPar_XIBI,
9912  modelPar_given_XIBI,
9913  modelPar_IZEB,
9914  modelPar_given_IZEB,
9915  modelPar_NZEB,
9916  modelPar_given_NZEB,
9917  modelPar_BRI,
9918  modelPar_given_BRI,
9919  modelPar_IBR,
9920  modelPar_given_IBR,
9921  modelPar_VLR,
9922  modelPar_given_VLR,
9923  modelPar_XEXT,
9924  modelPar_given_XEXT,
9925  modelPar_WAVL,
9926  modelPar_given_WAVL,
9927  modelPar_VAVL,
9928  modelPar_given_VAVL,
9929  modelPar_SFH,
9930  modelPar_given_SFH,
9931  modelPar_RE,
9932  modelPar_given_RE,
9933  modelPar_RBC,
9934  modelPar_given_RBC,
9935  modelPar_RBV,
9936  modelPar_given_RBV,
9937  modelPar_RCC,
9938  modelPar_given_RCC,
9939  modelPar_RCV,
9940  modelPar_given_RCV,
9941  modelPar_SCRCV,
9942  modelPar_given_SCRCV,
9943  modelPar_IHC,
9944  modelPar_given_IHC,
9945  modelPar_AXI,
9946  modelPar_given_AXI,
9947  modelPar_CJE,
9948  modelPar_given_CJE,
9949  modelPar_VDE,
9950  modelPar_given_VDE,
9951  modelPar_PE,
9952  modelPar_given_PE,
9953  modelPar_XCJE,
9954  modelPar_given_XCJE,
9955  modelPar_CBEO,
9956  modelPar_given_CBEO,
9957  modelPar_CJC,
9958  modelPar_given_CJC,
9959  modelPar_VDC,
9960  modelPar_given_VDC,
9961  modelPar_PC,
9962  modelPar_given_PC,
9963  modelPar_XP,
9964  modelPar_given_XP,
9965  modelPar_MC,
9966  modelPar_given_MC,
9967  modelPar_XCJC,
9968  modelPar_given_XCJC,
9969  modelPar_RCBLX,
9970  modelPar_given_RCBLX,
9971  modelPar_RCBLI,
9972  modelPar_given_RCBLI,
9973  modelPar_CBCO,
9974  modelPar_given_CBCO,
9975  modelPar_MTAU,
9976  modelPar_given_MTAU,
9977  modelPar_TAUE,
9978  modelPar_given_TAUE,
9979  modelPar_TAUB,
9980  modelPar_given_TAUB,
9981  modelPar_TEPI,
9982  modelPar_given_TEPI,
9983  modelPar_TAUR,
9984  modelPar_given_TAUR,
9985  modelPar_DEG,
9986  modelPar_given_DEG,
9987  modelPar_XREC,
9988  modelPar_given_XREC,
9989  modelPar_AQBO,
9990  modelPar_given_AQBO,
9991  modelPar_AE,
9992  modelPar_given_AE,
9993  modelPar_AB,
9994  modelPar_given_AB,
9995  modelPar_AEPI,
9996  modelPar_given_AEPI,
9997  modelPar_AEX,
9998  modelPar_given_AEX,
9999  modelPar_AC,
10000  modelPar_given_AC,
10001  modelPar_ACBL,
10002  modelPar_given_ACBL,
10003  modelPar_DVGBF,
10004  modelPar_given_DVGBF,
10005  modelPar_DVGBR,
10006  modelPar_given_DVGBR,
10007  modelPar_VGB,
10008  modelPar_given_VGB,
10009  modelPar_VGC,
10010  modelPar_given_VGC,
10011  modelPar_VGJ,
10012  modelPar_given_VGJ,
10013  modelPar_VGZEB,
10014  modelPar_given_VGZEB,
10015  modelPar_AVGEB,
10016  modelPar_given_AVGEB,
10017  modelPar_TVGEB,
10018  modelPar_given_TVGEB,
10019  modelPar_DVGTE,
10020  modelPar_given_DVGTE,
10021  modelPar_DAIS,
10022  modelPar_given_DAIS,
10023  modelPar_AF,
10024  modelPar_given_AF,
10025  modelPar_KF,
10026  modelPar_given_KF,
10027  modelPar_KFN,
10028  modelPar_given_KFN,
10029  modelPar_ISS,
10030  modelPar_given_ISS,
10031  modelPar_ICSS,
10032  modelPar_given_ICSS,
10033  modelPar_IKS,
10034  modelPar_given_IKS,
10035  modelPar_CJS,
10036  modelPar_given_CJS,
10037  modelPar_VDS,
10038  modelPar_given_VDS,
10039  modelPar_PS,
10040  modelPar_given_PS,
10041  modelPar_VGS,
10042  modelPar_given_VGS,
10043  modelPar_AS,
10044  modelPar_given_AS,
10045  modelPar_ASUB,
10046  modelPar_given_ASUB,
10047  modelPar_MULT,
10048  modelPar_given_MULT,
10049  modelPar_GMIN,
10050  modelPar_given_GMIN,
10051  // non-reals (including hidden)
10052  modelPar_LEVEL,
10053  modelPar_given_LEVEL,
10054  modelPar_EXMOD,
10055  modelPar_given_EXMOD,
10056  modelPar_EXPHI,
10057  modelPar_given_EXPHI,
10058  modelPar_EXAVL,
10059  modelPar_given_EXAVL,
10060  modelPar_EXSUB,
10061  modelPar_given_EXSUB,
10062  modelPar_KAVL,
10063  modelPar_given_KAVL,
10064  modelPar_TYPE,
10065  modelPar_given_TYPE// model variables
10066  ,
10067  // reals
10068  modelVar_An,
10069  modelVar_Tk,
10070  modelVar_Vt,
10071  modelVar_VtINV,
10072  modelVar_VDE_T,
10073  modelVar_VDC_T,
10074  modelVar_XP_T,
10075  modelVar_BF_T,
10076  modelVar_BRI_T,
10077  modelVar_IS_T,
10078  modelVar_VEF_T,
10079  modelVar_VER_T,
10080  modelVar_nZEB_T,
10081  modelVar_pow2_2mPE,
10082  modelVar_pow2_PEm2,
10083  modelVar_inv_VDE_T,
10084  modelVar_VGZEB_T,
10085  modelVar_TAUE_T,
10086  modelVar_TAUB_T,
10087  modelVar_TEPI_T,
10088  modelVar_TAUR_T,
10089  modelVar_BnT,
10090  modelVar_DEG_T,
10091  modelVar_VDS_T,
10092  modelVar_IKS_T,
10093  modelVar_IS_TM,
10094  modelVar_IK_TM,
10095  modelVar_IBF_TM,
10096  modelVar_IBR_TM,
10097  modelVar_IHC_M,
10098  modelVar_IZEB_TM,
10099  modelVar_CJE_TM,
10100  modelVar_CJC_TM,
10101  modelVar_RE_TM,
10102  modelVar_RBC_TM,
10103  modelVar_RBV_TM,
10104  modelVar_RCV_TM,
10105  modelVar_SCRCV_M,
10106  modelVar_RCCxx_TM,
10107  modelVar_GCCxx_TM,
10108  modelVar_GCCex_TM,
10109  modelVar_GCCin_TM,
10110  modelVar_KF_M,
10111  modelVar_KFN_M,
10112  modelVar_ISS_TM,
10113  modelVar_ICSS_TM,
10114  modelVar_IKS_TM,
10115  modelVar_CJS_TM,
10116  modelVar_Xext1,
10117  modelVar_CBEO_M,
10118  modelVar_CBCO_M,
10119  in.admsTemperature,
10120  in.adms_vt_nom,
10121  in.getDeviceOptions().gmin,
10122  staticContributions,
10123  dynamicContributions,
10124  in);
10125 
10126 
10127  // We now have the F and Q vector stuff, populate the dependencies:
10128 
10129  dfdp[in.admsNodeID_c+inst*(12+0)] += staticContributions[in.admsNodeID_c].dx(0);
10130  dqdp[in.admsNodeID_c+inst*(12+0)] += dynamicContributions[in.admsNodeID_c].dx(0);
10131  Findices[in.admsNodeID_c+inst*(12+0)] = in.li_c;
10132  Qindices[in.admsNodeID_c+inst*(12+0)] = in.li_c;
10133  dfdp[in.admsNodeID_b+inst*(12+0)] += staticContributions[in.admsNodeID_b].dx(0);
10134  dqdp[in.admsNodeID_b+inst*(12+0)] += dynamicContributions[in.admsNodeID_b].dx(0);
10135  Findices[in.admsNodeID_b+inst*(12+0)] = in.li_b;
10136  Qindices[in.admsNodeID_b+inst*(12+0)] = in.li_b;
10137  dfdp[in.admsNodeID_e+inst*(12+0)] += staticContributions[in.admsNodeID_e].dx(0);
10138  dqdp[in.admsNodeID_e+inst*(12+0)] += dynamicContributions[in.admsNodeID_e].dx(0);
10139  Findices[in.admsNodeID_e+inst*(12+0)] = in.li_e;
10140  Qindices[in.admsNodeID_e+inst*(12+0)] = in.li_e;
10141  dfdp[in.admsNodeID_s+inst*(12+0)] += staticContributions[in.admsNodeID_s].dx(0);
10142  dqdp[in.admsNodeID_s+inst*(12+0)] += dynamicContributions[in.admsNodeID_s].dx(0);
10143  Findices[in.admsNodeID_s+inst*(12+0)] = in.li_s;
10144  Qindices[in.admsNodeID_s+inst*(12+0)] = in.li_s;
10145  dfdp[in.admsNodeID_e1+inst*(12+0)] += staticContributions[in.admsNodeID_e1].dx(0);
10146  dqdp[in.admsNodeID_e1+inst*(12+0)] += dynamicContributions[in.admsNodeID_e1].dx(0);
10147  Findices[in.admsNodeID_e1+inst*(12+0)] = in.li_e1;
10148  Qindices[in.admsNodeID_e1+inst*(12+0)] = in.li_e1;
10149  dfdp[in.admsNodeID_b1+inst*(12+0)] += staticContributions[in.admsNodeID_b1].dx(0);
10150  dqdp[in.admsNodeID_b1+inst*(12+0)] += dynamicContributions[in.admsNodeID_b1].dx(0);
10151  Findices[in.admsNodeID_b1+inst*(12+0)] = in.li_b1;
10152  Qindices[in.admsNodeID_b1+inst*(12+0)] = in.li_b1;
10153  dfdp[in.admsNodeID_b2+inst*(12+0)] += staticContributions[in.admsNodeID_b2].dx(0);
10154  dqdp[in.admsNodeID_b2+inst*(12+0)] += dynamicContributions[in.admsNodeID_b2].dx(0);
10155  Findices[in.admsNodeID_b2+inst*(12+0)] = in.li_b2;
10156  Qindices[in.admsNodeID_b2+inst*(12+0)] = in.li_b2;
10157  dfdp[in.admsNodeID_c3+inst*(12+0)] += staticContributions[in.admsNodeID_c3].dx(0);
10158  dqdp[in.admsNodeID_c3+inst*(12+0)] += dynamicContributions[in.admsNodeID_c3].dx(0);
10159  Findices[in.admsNodeID_c3+inst*(12+0)] = in.li_c3;
10160  Qindices[in.admsNodeID_c3+inst*(12+0)] = in.li_c3;
10161  dfdp[in.admsNodeID_c4+inst*(12+0)] += staticContributions[in.admsNodeID_c4].dx(0);
10162  dqdp[in.admsNodeID_c4+inst*(12+0)] += dynamicContributions[in.admsNodeID_c4].dx(0);
10163  Findices[in.admsNodeID_c4+inst*(12+0)] = in.li_c4;
10164  Qindices[in.admsNodeID_c4+inst*(12+0)] = in.li_c4;
10165  dfdp[in.admsNodeID_c2+inst*(12+0)] += staticContributions[in.admsNodeID_c2].dx(0);
10166  dqdp[in.admsNodeID_c2+inst*(12+0)] += dynamicContributions[in.admsNodeID_c2].dx(0);
10167  Findices[in.admsNodeID_c2+inst*(12+0)] = in.li_c2;
10168  Qindices[in.admsNodeID_c2+inst*(12+0)] = in.li_c2;
10169  dfdp[in.admsNodeID_c1+inst*(12+0)] += staticContributions[in.admsNodeID_c1].dx(0);
10170  dqdp[in.admsNodeID_c1+inst*(12+0)] += dynamicContributions[in.admsNodeID_c1].dx(0);
10171  Findices[in.admsNodeID_c1+inst*(12+0)] = in.li_c1;
10172  Qindices[in.admsNodeID_c1+inst*(12+0)] = in.li_c1;
10173  dfdp[in.admsNodeID_noi+inst*(12+0)] += staticContributions[in.admsNodeID_noi].dx(0);
10174  dqdp[in.admsNodeID_noi+inst*(12+0)] += dynamicContributions[in.admsNodeID_noi].dx(0);
10175  Findices[in.admsNodeID_noi+inst*(12+0)] = in.li_noi;
10176  Qindices[in.admsNodeID_noi+inst*(12+0)] = in.li_noi;
10177  }
10178 
10179 }
10180 
10181 #endif // Xyce_ADMS_SENSITIVITIES
10182 
10183 } // namespace ADMSbjt504va
10184 } // namespace Device
10185 } // namespace Xyce
const InstanceName & getName() const
std::vector< std::vector< int > > jacMap2
std::vector< AdmsFadType > staticContributions
ScalarT trunc_ev(ScalarT Val, ScalarT Vprev, ScalarT Vmin, ScalarT Vmax)
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
Linear::Vector * nextSolVectorPtr
virtual std::ostream & printOutInstances(std::ostream &os) const
bool given(const std::string &parameter_name) const
Linear::Vector * daeQVectorPtr
Pure virtual class to augment a linear system.
void addInternalNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
static T adms_vt(const T temp)
#define MC
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
const JacobianStamp & jacobianStamp() const
void registerStateLIDs(const LocalIdVector &staLIDVecRef)
Sacado::Fad::SFad< double, 1 > AdmsSensFadType
#define AssertLIDs(cmp)
RetScalarT Vt(Arg1ScalarT U, Arg2ScalarT Ud)
void jacStampMap_fixOrder(const JacobianStamp &stamp_parent, JacobianStamp &map2_parent, JacobianStamp &stamp, JacobianStamp &map2)
virtual void registerJacLIDs(const JacobianStamp &jacLIDVec)
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
bool processInstanceParams()
processInstanceParams
std::vector< Param > params
Parameters from the line.
void setParams(const std::vector< Param > &params)
const std::string & getName() const
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
const DeviceOptions & getDeviceOptions() const
Parameter is not to be documented.
Definition: N_DEV_Pars.h:72
const DeviceOptions & deviceOptions_
void registerJacLIDs(const JacobianStamp &jacLIDVec)
std::vector< std::vector< int > > JacobianStamp
Definition: N_DEV_fwd.h:196
Linear::Vector * nextStaVectorPtr
static Config< T > & addConfiguration()
Adds the device to the Xyce device configuration.
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
Model(const Configuration &configuration, const ModelBlock &model_block, const FactoryBlock &factory_block)
Class Configuration contains device configuration data.
void jacStampMap(const JacobianStamp &stamp_parent, IdVector &map_parent, JacobianStamp &map2_parent, JacobianStamp &stamp, IdVector &map, JacobianStamp &map2, int from, int to, int original_size)
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
std::vector< AdmsFadType > dynamicContributions
const SolverState & getSolverState() const
Sacado::Fad::SFad< double, 15 > AdmsFadType
static void loadModelParameters(ParametricData< Model > &model_parameters)
std::vector< AdmsFadType > probeVars
std::vector< std::vector< int > > jacStamp
Linear::Vector * currStaVectorPtr
Instance(const Configuration &configuration, const InstanceBlock &instance_block, Model &model, const FactoryBlock &factory_block)
Linear::Vector * daeFVectorPtr
const std::string & getType() const
ModelBlock represents a .MODEL line from the netlist.
Manages parameter binding for class C.
Definition: N_DEV_Pars.h:214
InstanceBlock represent a device instance line from the netlist.
Util::Param temp
operating temperature of ckt.
std::vector< Param > params
std::vector< Instance * > instanceContainer
Linear::Matrix * dQdxMatrixPtr
bool updateTemperature(const double &temp=-999.0)
void setModParams(const std::vector< Param > &params)
void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)