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