Xyce  6.1
N_DEV_ADMSvbic.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_ADMSvbic.C,v $
28 //
29 // Purpose :
30 //
31 // Special Notes : Generated from verilog file vbic_3T_et_cf_Xyce_typed.vla 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 16:36:19
38 //
39 // Revision Information:
40 // ---------------------
41 //
42 // Revision Number: $Revision: 1.90.2.1 $
43 //
44 // Revision Date : $Date: 2015/04/02 18:20:09 $
45 //
46 // Current Owner : $Author: tvrusso $
47 //-------------------------------------------------------------------------
48 
49 #include <Xyce_config.h>
50 #include <N_DEV_ADMSvbic.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 ADMSvbic {
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, &ADMSvbic::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("DTEMP", static_cast<double>(0.0), &ADMSvbic::Instance::DTEMP)
95  .setUnit(U_NONE)
96  .setDescription("Device temperature (use 0.0 for ambient)")
97  .setAnalyticSensitivityAvailable(true)
98  .setSensitivityFunctor(&instSens);
99  p.addPar("M", static_cast<int>(1), &ADMSvbic::Instance::M)
100  .setUnit(U_NONE)
101  .setDescription("Number of devices in parallel");
102 
103 
104 }
105 
107 {
108  // Set up each parameter directly, using the up-cased variable name
109  // as the tag.
110 
111  // This kludge is to force us always to have a model parameter
112  // that the device manager can set to the temperature, even if we have
113  // no "TEMP".
114  p.addPar("XYCEADMSMODTEMP", 0.0, &ADMSvbic::Model::admsModTemp)
115  .setExpressionAccess(NO_DOC)
116  .setUnit(U_DEGK)
117  .setCategory(CAT_TEMP)
118  .setDescription("Internal-use parameter for setting device model temperature");
119  p.addPar("TNOM", static_cast<double>(27.0), &ADMSvbic::Model::TNOM)
120  .setUnit(U_DEGC)
121  .setDescription("Nominal temperature")
122  .setAnalyticSensitivityAvailable(true)
123  .setSensitivityFunctor(&modSens);
124  p.addPar("RCX", static_cast<double>(0.0), &ADMSvbic::Model::RCX)
125  .setExpressionAccess(ParameterType::MIN_RES)
126  .setUnit(U_OHM)
127  .setDescription("Extrinsic Collector resistance")
128  .setAnalyticSensitivityAvailable(true)
129  .setSensitivityFunctor(&modSens);
130  p.addPar("RCI", static_cast<double>(0.0), &ADMSvbic::Model::RCI)
131  .setExpressionAccess(ParameterType::MIN_RES)
132  .setUnit(U_OHM)
133  .setDescription("Intrinsic Collector resistance")
134  .setAnalyticSensitivityAvailable(true)
135  .setSensitivityFunctor(&modSens);
136  p.addPar("VO", static_cast<double>(0.0), &ADMSvbic::Model::VO)
137  .setUnit(U_VOLT)
138  .setDescription("Epi drift saturation voltage")
139  .setAnalyticSensitivityAvailable(true)
140  .setSensitivityFunctor(&modSens);
141  p.addPar("GAMM", static_cast<double>(0.0), &ADMSvbic::Model::GAMM)
142  .setUnit(U_NONE)
143  .setDescription("Epi doping parameter")
144  .setAnalyticSensitivityAvailable(true)
145  .setSensitivityFunctor(&modSens);
146  p.addPar("HRCF", static_cast<double>(0.0), &ADMSvbic::Model::HRCF)
147  .setUnit(U_NONE)
148  .setDescription("High current RC factor")
149  .setAnalyticSensitivityAvailable(true)
150  .setSensitivityFunctor(&modSens);
151  p.addPar("RBX", static_cast<double>(0.0), &ADMSvbic::Model::RBX)
152  .setExpressionAccess(ParameterType::MIN_RES)
153  .setUnit(U_OHM)
154  .setDescription("Extrinsic base resistance")
155  .setAnalyticSensitivityAvailable(true)
156  .setSensitivityFunctor(&modSens);
157  p.addPar("RBI", static_cast<double>(0.0), &ADMSvbic::Model::RBI)
158  .setExpressionAccess(ParameterType::MIN_RES)
159  .setUnit(U_OHM)
160  .setDescription("Intrinsic base resistance")
161  .setAnalyticSensitivityAvailable(true)
162  .setSensitivityFunctor(&modSens);
163  p.addPar("RE", static_cast<double>(0.0), &ADMSvbic::Model::RE)
164  .setExpressionAccess(ParameterType::MIN_RES)
165  .setUnit(U_OHM)
166  .setDescription("Emitter resistance")
167  .setAnalyticSensitivityAvailable(true)
168  .setSensitivityFunctor(&modSens);
169  p.addPar("RS", static_cast<double>(0.0), &ADMSvbic::Model::RS)
170  .setExpressionAccess(ParameterType::MIN_RES)
171  .setUnit(U_OHM)
172  .setDescription("Substrate resistance")
173  .setAnalyticSensitivityAvailable(true)
174  .setSensitivityFunctor(&modSens);
175  p.addPar("RBP", static_cast<double>(0.0), &ADMSvbic::Model::RBP)
176  .setExpressionAccess(ParameterType::MIN_RES)
177  .setUnit(U_OHM)
178  .setDescription("Parasitic base resistance")
179  .setAnalyticSensitivityAvailable(true)
180  .setSensitivityFunctor(&modSens);
181  p.addPar("IS", static_cast<double>(1.0e-16), &ADMSvbic::Model::IS)
182  .setUnit(U_AMP)
183  .setDescription("Transport saturation current")
184  .setAnalyticSensitivityAvailable(true)
185  .setSensitivityFunctor(&modSens);
186  p.addPar("NF", static_cast<double>(1.0), &ADMSvbic::Model::NF)
187  .setUnit(U_NONE)
188  .setDescription("Forward emission coefficient")
189  .setAnalyticSensitivityAvailable(true)
190  .setSensitivityFunctor(&modSens);
191  p.addPar("NR", static_cast<double>(1.0), &ADMSvbic::Model::NR)
192  .setUnit(U_NONE)
193  .setDescription("Reverse emission coefficient")
194  .setAnalyticSensitivityAvailable(true)
195  .setSensitivityFunctor(&modSens);
196  p.addPar("FC", static_cast<double>(0.9), &ADMSvbic::Model::FC)
197  .setUnit(U_NONE)
198  .setDescription("Forward-bias depletion capacitance limit")
199  .setAnalyticSensitivityAvailable(true)
200  .setSensitivityFunctor(&modSens);
201  p.addPar("CBEO", static_cast<double>(0.0), &ADMSvbic::Model::CBEO)
202  .setExpressionAccess(ParameterType::MIN_CAP)
203  .setUnit(U_FARAD)
204  .setDescription("Extrinsic B-E overlap capacitance")
205  .setAnalyticSensitivityAvailable(true)
206  .setSensitivityFunctor(&modSens);
207  p.addPar("CJE", static_cast<double>(0.0), &ADMSvbic::Model::CJE)
208  .setExpressionAccess(ParameterType::MIN_CAP)
209  .setUnit(U_FARAD)
210  .setDescription("B-E zero-bias capacitance")
211  .setAnalyticSensitivityAvailable(true)
212  .setSensitivityFunctor(&modSens);
213  p.addPar("PE", static_cast<double>(0.75), &ADMSvbic::Model::PE)
214  .setUnit(U_NONE)
215  .setDescription("B-E built-in potential")
216  .setAnalyticSensitivityAvailable(true)
217  .setSensitivityFunctor(&modSens);
218  p.addPar("ME", static_cast<double>(0.33), &ADMSvbic::Model::ME)
219  .setUnit(U_NONE)
220  .setDescription("B-E grading coefficient")
221  .setAnalyticSensitivityAvailable(true)
222  .setSensitivityFunctor(&modSens);
223  p.addPar("AJE", static_cast<double>((-0.5)), &ADMSvbic::Model::AJE)
224  .setUnit(U_NONE)
225  .setDescription("Base-Emitter capacitor smoothing factor")
226  .setAnalyticSensitivityAvailable(true)
227  .setSensitivityFunctor(&modSens);
228  p.addPar("CBCO", static_cast<double>(0.0), &ADMSvbic::Model::CBCO)
229  .setExpressionAccess(ParameterType::MIN_CAP)
230  .setUnit(U_FARAD)
231  .setDescription("Extrinsic B-C overlap capacitance")
232  .setAnalyticSensitivityAvailable(true)
233  .setSensitivityFunctor(&modSens);
234  p.addPar("CJC", static_cast<double>(0.0), &ADMSvbic::Model::CJC)
235  .setExpressionAccess(ParameterType::MIN_CAP)
236  .setUnit(U_FARAD)
237  .setDescription("B-C zero-bias capacitance")
238  .setAnalyticSensitivityAvailable(true)
239  .setSensitivityFunctor(&modSens);
240  p.addPar("QCO", static_cast<double>(0.0), &ADMSvbic::Model::QCO)
241  .setUnit(U_COULOMB)
242  .setDescription("Epi charge parameter")
243  .setAnalyticSensitivityAvailable(true)
244  .setSensitivityFunctor(&modSens);
245  p.addPar("CJEP", static_cast<double>(0.0), &ADMSvbic::Model::CJEP)
246  .setExpressionAccess(ParameterType::MIN_CAP)
247  .setUnit(U_FARAD)
248  .setDescription("S-E zero-bias capacitance")
249  .setAnalyticSensitivityAvailable(true)
250  .setSensitivityFunctor(&modSens);
251  p.addPar("PC", static_cast<double>(0.75), &ADMSvbic::Model::PC)
252  .setUnit(U_NONE)
253  .setDescription("B-C built-in potential")
254  .setAnalyticSensitivityAvailable(true)
255  .setSensitivityFunctor(&modSens);
256  p.addPar("MC", static_cast<double>(0.33), &ADMSvbic::Model::MC)
257  .setUnit(U_NONE)
258  .setDescription("B-C grading coefficient")
259  .setAnalyticSensitivityAvailable(true)
260  .setSensitivityFunctor(&modSens);
261  p.addPar("AJC", static_cast<double>((-0.5)), &ADMSvbic::Model::AJC)
262  .setUnit(U_NONE)
263  .setDescription("Base-Collector capacitor smoothing factor")
264  .setAnalyticSensitivityAvailable(true)
265  .setSensitivityFunctor(&modSens);
266  p.addPar("CJCP", static_cast<double>(0.0), &ADMSvbic::Model::CJCP)
267  .setExpressionAccess(ParameterType::MIN_CAP)
268  .setUnit(U_FARAD)
269  .setDescription("S-C zero-bias capacitance")
270  .setAnalyticSensitivityAvailable(true)
271  .setSensitivityFunctor(&modSens);
272  p.addPar("PS", static_cast<double>(0.75), &ADMSvbic::Model::PS)
273  .setUnit(U_NONE)
274  .setDescription("S-C built-in potential")
275  .setAnalyticSensitivityAvailable(true)
276  .setSensitivityFunctor(&modSens);
277  p.addPar("MS", static_cast<double>(0.33), &ADMSvbic::Model::MS)
278  .setUnit(U_NONE)
279  .setDescription("S-C grading coefficient")
280  .setAnalyticSensitivityAvailable(true)
281  .setSensitivityFunctor(&modSens);
282  p.addPar("AJS", static_cast<double>((-0.5)), &ADMSvbic::Model::AJS)
283  .setUnit(U_NONE)
284  .setDescription("Substrate-collector capacitor smoothing factor (unused)")
285  .setAnalyticSensitivityAvailable(true)
286  .setSensitivityFunctor(&modSens);
287  p.addPar("IBEI", static_cast<double>(1.0e-18), &ADMSvbic::Model::IBEI)
288  .setUnit(U_AMP)
289  .setDescription("Ideal B-E saturation current")
290  .setAnalyticSensitivityAvailable(true)
291  .setSensitivityFunctor(&modSens);
292  p.addPar("WBE", static_cast<double>(1.0), &ADMSvbic::Model::WBE)
293  .setUnit(U_NONE)
294  .setDescription("Portion of Ibei from Vbei")
295  .setAnalyticSensitivityAvailable(true)
296  .setSensitivityFunctor(&modSens);
297  p.addPar("NEI", static_cast<double>(1.0), &ADMSvbic::Model::NEI)
298  .setUnit(U_NONE)
299  .setDescription("Ideal B-E emission coefficient")
300  .setAnalyticSensitivityAvailable(true)
301  .setSensitivityFunctor(&modSens);
302  p.addPar("IBEN", static_cast<double>(0.0), &ADMSvbic::Model::IBEN)
303  .setUnit(U_AMP)
304  .setDescription("Nonideal B-E saturation current")
305  .setAnalyticSensitivityAvailable(true)
306  .setSensitivityFunctor(&modSens);
307  p.addPar("NEN", static_cast<double>(2.0), &ADMSvbic::Model::NEN)
308  .setUnit(U_NONE)
309  .setDescription("Non-ideal B-E emission coefficient")
310  .setAnalyticSensitivityAvailable(true)
311  .setSensitivityFunctor(&modSens);
312  p.addPar("IBCI", static_cast<double>(1.0e-16), &ADMSvbic::Model::IBCI)
313  .setUnit(U_AMP)
314  .setDescription("Ideal B-C saturation current")
315  .setAnalyticSensitivityAvailable(true)
316  .setSensitivityFunctor(&modSens);
317  p.addPar("NCI", static_cast<double>(1.0), &ADMSvbic::Model::NCI)
318  .setUnit(U_NONE)
319  .setDescription("Ideal B-C emission coefficient")
320  .setAnalyticSensitivityAvailable(true)
321  .setSensitivityFunctor(&modSens);
322  p.addPar("IBCN", static_cast<double>(0.0), &ADMSvbic::Model::IBCN)
323  .setUnit(U_AMP)
324  .setDescription("Nonideal B-C saturation current")
325  .setAnalyticSensitivityAvailable(true)
326  .setSensitivityFunctor(&modSens);
327  p.addPar("NCN", static_cast<double>(2.0), &ADMSvbic::Model::NCN)
328  .setUnit(U_NONE)
329  .setDescription("Non-ideal B-C emission coefficient")
330  .setAnalyticSensitivityAvailable(true)
331  .setSensitivityFunctor(&modSens);
332  p.addPar("AVC1", static_cast<double>(0.0), &ADMSvbic::Model::AVC1)
333  .setUnit(U_VOLTM1)
334  .setDescription("B-C weak avalanche parameter")
335  .setAnalyticSensitivityAvailable(true)
336  .setSensitivityFunctor(&modSens);
337  p.addPar("AVC2", static_cast<double>(0.0), &ADMSvbic::Model::AVC2)
338  .setUnit(U_VOLTM1)
339  .setDescription("B-C weak avalanche parameter")
340  .setAnalyticSensitivityAvailable(true)
341  .setSensitivityFunctor(&modSens);
342  p.addPar("ISP", static_cast<double>(0.0), &ADMSvbic::Model::ISP)
343  .setUnit(U_AMP)
344  .setDescription("Parasitic transport saturation current")
345  .setAnalyticSensitivityAvailable(true)
346  .setSensitivityFunctor(&modSens);
347  p.addPar("WSP", static_cast<double>(1.0), &ADMSvbic::Model::WSP)
348  .setUnit(U_NONE)
349  .setDescription("Portion of Iccp from Vbep")
350  .setAnalyticSensitivityAvailable(true)
351  .setSensitivityFunctor(&modSens);
352  p.addPar("NFP", static_cast<double>(1.0), &ADMSvbic::Model::NFP)
353  .setUnit(U_NONE)
354  .setDescription("Parasitic forward emission coefficient")
355  .setAnalyticSensitivityAvailable(true)
356  .setSensitivityFunctor(&modSens);
357  p.addPar("IBEIP", static_cast<double>(0.0), &ADMSvbic::Model::IBEIP)
358  .setUnit(U_AMP)
359  .setDescription("Ideal parasitic B-E saturation current")
360  .setAnalyticSensitivityAvailable(true)
361  .setSensitivityFunctor(&modSens);
362  p.addPar("IBENP", static_cast<double>(0.0), &ADMSvbic::Model::IBENP)
363  .setUnit(U_AMP)
364  .setDescription("Nonideal parasitic B-E saturation current")
365  .setAnalyticSensitivityAvailable(true)
366  .setSensitivityFunctor(&modSens);
367  p.addPar("IBCIP", static_cast<double>(0.0), &ADMSvbic::Model::IBCIP)
368  .setUnit(U_AMP)
369  .setDescription("Ideal parasitic B-C saturation current")
370  .setAnalyticSensitivityAvailable(true)
371  .setSensitivityFunctor(&modSens);
372  p.addPar("NCIP", static_cast<double>(1.0), &ADMSvbic::Model::NCIP)
373  .setUnit(U_NONE)
374  .setDescription("Ideal parasitic B-C emission coefficient")
375  .setAnalyticSensitivityAvailable(true)
376  .setSensitivityFunctor(&modSens);
377  p.addPar("IBCNP", static_cast<double>(0.0), &ADMSvbic::Model::IBCNP)
378  .setUnit(U_AMP)
379  .setDescription("Nonideal parasitic B-C saturation current")
380  .setAnalyticSensitivityAvailable(true)
381  .setSensitivityFunctor(&modSens);
382  p.addPar("NCNP", static_cast<double>(2.0), &ADMSvbic::Model::NCNP)
383  .setUnit(U_NONE)
384  .setDescription("Non-ideal parasitic B-C emission coefficient")
385  .setAnalyticSensitivityAvailable(true)
386  .setSensitivityFunctor(&modSens);
387  p.addPar("VEF", static_cast<double>(0.0), &ADMSvbic::Model::VEF)
388  .setUnit(U_VOLT)
389  .setDescription("Forward Early voltage")
390  .setAnalyticSensitivityAvailable(true)
391  .setSensitivityFunctor(&modSens);
392  p.addPar("VER", static_cast<double>(0.0), &ADMSvbic::Model::VER)
393  .setUnit(U_VOLT)
394  .setDescription("Reverse Early voltage")
395  .setAnalyticSensitivityAvailable(true)
396  .setSensitivityFunctor(&modSens);
397  p.addPar("IKF", static_cast<double>(0.0), &ADMSvbic::Model::IKF)
398  .setUnit(U_AMP)
399  .setDescription("Forward knee current")
400  .setAnalyticSensitivityAvailable(true)
401  .setSensitivityFunctor(&modSens);
402  p.addPar("IKR", static_cast<double>(0.0), &ADMSvbic::Model::IKR)
403  .setUnit(U_AMP)
404  .setDescription("Reverse knee current")
405  .setAnalyticSensitivityAvailable(true)
406  .setSensitivityFunctor(&modSens);
407  p.addPar("IKP", static_cast<double>(0.0), &ADMSvbic::Model::IKP)
408  .setUnit(U_AMP)
409  .setDescription("Parasitic knee current")
410  .setAnalyticSensitivityAvailable(true)
411  .setSensitivityFunctor(&modSens);
412  p.addPar("TF", static_cast<double>(0.0), &ADMSvbic::Model::TF)
413  .setUnit(U_SECOND)
414  .setDescription("Forward transit time")
415  .setAnalyticSensitivityAvailable(true)
416  .setSensitivityFunctor(&modSens);
417  p.addPar("QTF", static_cast<double>(0.0), &ADMSvbic::Model::QTF)
418  .setUnit(U_NONE)
419  .setDescription("Variation of tf with base width modulation")
420  .setAnalyticSensitivityAvailable(true)
421  .setSensitivityFunctor(&modSens);
422  p.addPar("XTF", static_cast<double>(0.0), &ADMSvbic::Model::XTF)
423  .setUnit(U_NONE)
424  .setDescription("Coefficient of tf with bias dependence")
425  .setAnalyticSensitivityAvailable(true)
426  .setSensitivityFunctor(&modSens);
427  p.addPar("VTF", static_cast<double>(0.0), &ADMSvbic::Model::VTF)
428  .setUnit(U_NONE)
429  .setDescription("Coefficient of tf dependence on Vbc")
430  .setAnalyticSensitivityAvailable(true)
431  .setSensitivityFunctor(&modSens);
432  p.addPar("ITF", static_cast<double>(0.0), &ADMSvbic::Model::ITF)
433  .setUnit(U_NONE)
434  .setDescription("Coefficient of tf dependence on Ic")
435  .setAnalyticSensitivityAvailable(true)
436  .setSensitivityFunctor(&modSens);
437  p.addPar("TR", static_cast<double>(0.0), &ADMSvbic::Model::TR)
438  .setUnit(U_NONE)
439  .setDescription("Reverse transit time")
440  .setAnalyticSensitivityAvailable(true)
441  .setSensitivityFunctor(&modSens);
442  p.addPar("TD", static_cast<double>(0.0), &ADMSvbic::Model::TD)
443  .setUnit(U_NONE)
444  .setDescription("Forward excess-phase delay time (unused in this version)")
445  .setAnalyticSensitivityAvailable(true)
446  .setSensitivityFunctor(&modSens);
447  p.addPar("KFN", static_cast<double>(0.0), &ADMSvbic::Model::KFN)
448  .setUnit(U_NONE)
449  .setDescription("B-E flicker (1/f) noise coefficient (unused)")
450  .setAnalyticSensitivityAvailable(true)
451  .setSensitivityFunctor(&modSens);
452  p.addPar("AFN", static_cast<double>(1.0), &ADMSvbic::Model::AFN)
453  .setUnit(U_NONE)
454  .setDescription("Base-Emitter Flicker Noise coefficient (unused)")
455  .setAnalyticSensitivityAvailable(true)
456  .setSensitivityFunctor(&modSens);
457  p.addPar("BFN", static_cast<double>(1.0), &ADMSvbic::Model::BFN)
458  .setUnit(U_NONE)
459  .setDescription("B-E flicker noise dependence (unused)")
460  .setAnalyticSensitivityAvailable(true)
461  .setSensitivityFunctor(&modSens);
462  p.addPar("XRE", static_cast<double>(0), &ADMSvbic::Model::XRE)
463  .setUnit(U_NONE)
464  .setDescription("Temperature exponent of re")
465  .setAnalyticSensitivityAvailable(true)
466  .setSensitivityFunctor(&modSens);
467  p.addPar("XRBI", static_cast<double>(0), &ADMSvbic::Model::XRBI)
468  .setUnit(U_NONE)
469  .setDescription("")
470  .setAnalyticSensitivityAvailable(true)
471  .setSensitivityFunctor(&modSens);
472  p.addPar("XRCI", static_cast<double>(0), &ADMSvbic::Model::XRCI)
473  .setUnit(U_NONE)
474  .setDescription("")
475  .setAnalyticSensitivityAvailable(true)
476  .setSensitivityFunctor(&modSens);
477  p.addPar("XRS", static_cast<double>(0), &ADMSvbic::Model::XRS)
478  .setUnit(U_NONE)
479  .setDescription("Temperature exponent of rs")
480  .setAnalyticSensitivityAvailable(true)
481  .setSensitivityFunctor(&modSens);
482  p.addPar("XVO", static_cast<double>(0), &ADMSvbic::Model::XVO)
483  .setUnit(U_NONE)
484  .setDescription("Temperature exponent of vo")
485  .setAnalyticSensitivityAvailable(true)
486  .setSensitivityFunctor(&modSens);
487  p.addPar("EA", static_cast<double>(1.12), &ADMSvbic::Model::EA)
488  .setUnit(U_EV)
489  .setDescription("Activation energy for IS")
490  .setAnalyticSensitivityAvailable(true)
491  .setSensitivityFunctor(&modSens);
492  p.addPar("EAIE", static_cast<double>(1.12), &ADMSvbic::Model::EAIE)
493  .setUnit(U_EV)
494  .setDescription("Activation energy for IBEI")
495  .setAnalyticSensitivityAvailable(true)
496  .setSensitivityFunctor(&modSens);
497  p.addPar("EAIC", static_cast<double>(1.12), &ADMSvbic::Model::EAIC)
498  .setUnit(U_EV)
499  .setDescription("Activation energy for IBCI")
500  .setAnalyticSensitivityAvailable(true)
501  .setSensitivityFunctor(&modSens);
502  p.addPar("EAIS", static_cast<double>(1.12), &ADMSvbic::Model::EAIS)
503  .setUnit(U_EV)
504  .setDescription("Activation energy for IBCIP")
505  .setAnalyticSensitivityAvailable(true)
506  .setSensitivityFunctor(&modSens);
507  p.addPar("EANE", static_cast<double>(1.12), &ADMSvbic::Model::EANE)
508  .setUnit(U_EV)
509  .setDescription("Activation energy for IBEN")
510  .setAnalyticSensitivityAvailable(true)
511  .setSensitivityFunctor(&modSens);
512  p.addPar("EANC", static_cast<double>(1.12), &ADMSvbic::Model::EANC)
513  .setUnit(U_EV)
514  .setDescription("Activation energy for IBCN")
515  .setAnalyticSensitivityAvailable(true)
516  .setSensitivityFunctor(&modSens);
517  p.addPar("EANS", static_cast<double>(1.12), &ADMSvbic::Model::EANS)
518  .setUnit(U_EV)
519  .setDescription("Activation energy for IBCNP")
520  .setAnalyticSensitivityAvailable(true)
521  .setSensitivityFunctor(&modSens);
522  p.addPar("XIS", static_cast<double>(3.0), &ADMSvbic::Model::XIS)
523  .setUnit(U_NONE)
524  .setDescription("Temperature exponent of IS")
525  .setAnalyticSensitivityAvailable(true)
526  .setSensitivityFunctor(&modSens);
527  p.addPar("XII", static_cast<double>(3.0), &ADMSvbic::Model::XII)
528  .setUnit(U_NONE)
529  .setDescription("Temperature exponent of Ibei, Ibci, Ibeip, and Ibcip")
530  .setAnalyticSensitivityAvailable(true)
531  .setSensitivityFunctor(&modSens);
532  p.addPar("XIN", static_cast<double>(3.0), &ADMSvbic::Model::XIN)
533  .setUnit(U_NONE)
534  .setDescription("Temperature exponent of Iben, Ibcn, Ibenp, and Ibcnp")
535  .setAnalyticSensitivityAvailable(true)
536  .setSensitivityFunctor(&modSens);
537  p.addPar("TNF", static_cast<double>(0.0), &ADMSvbic::Model::TNF)
538  .setUnit(U_NONE)
539  .setDescription("Temperature coefficient of Nf")
540  .setAnalyticSensitivityAvailable(true)
541  .setSensitivityFunctor(&modSens);
542  p.addPar("TAVC", static_cast<double>(0.0), &ADMSvbic::Model::TAVC)
543  .setUnit(U_NONE)
544  .setDescription("Temperature coefficient of Avc2")
545  .setAnalyticSensitivityAvailable(true)
546  .setSensitivityFunctor(&modSens);
547  p.addPar("RTH", static_cast<double>(0.0), &ADMSvbic::Model::RTH)
548  .setUnit(U_OHM)
549  .setDescription("Thermal resistance, must be given for self-heating")
550  .setAnalyticSensitivityAvailable(true)
551  .setSensitivityFunctor(&modSens);
552  p.addPar("CTH", static_cast<double>(0.0), &ADMSvbic::Model::CTH)
553  .setUnit(U_FARAD)
554  .setDescription("Thermal capacitance")
555  .setAnalyticSensitivityAvailable(true)
556  .setSensitivityFunctor(&modSens);
557  p.addPar("VRT", static_cast<double>(0.0), &ADMSvbic::Model::VRT)
558  .setUnit(U_NONE)
559  .setDescription("")
560  .setAnalyticSensitivityAvailable(true)
561  .setSensitivityFunctor(&modSens);
562  p.addPar("ART", static_cast<double>(0.1), &ADMSvbic::Model::ART)
563  .setUnit(U_NONE)
564  .setDescription("")
565  .setAnalyticSensitivityAvailable(true)
566  .setSensitivityFunctor(&modSens);
567  p.addPar("CCSO", static_cast<double>(0.0), &ADMSvbic::Model::CCSO)
568  .setUnit(U_NONE)
569  .setDescription("(unused)")
570  .setAnalyticSensitivityAvailable(true)
571  .setSensitivityFunctor(&modSens);
572  p.addPar("QBM", static_cast<double>(0.0), &ADMSvbic::Model::QBM)
573  .setUnit(U_NONE)
574  .setDescription("")
575  .setAnalyticSensitivityAvailable(true)
576  .setSensitivityFunctor(&modSens);
577  p.addPar("NKF", static_cast<double>(0.5), &ADMSvbic::Model::NKF)
578  .setUnit(U_NONE)
579  .setDescription("")
580  .setAnalyticSensitivityAvailable(true)
581  .setSensitivityFunctor(&modSens);
582  p.addPar("XIKF", static_cast<double>(0), &ADMSvbic::Model::XIKF)
583  .setUnit(U_NONE)
584  .setDescription("")
585  .setAnalyticSensitivityAvailable(true)
586  .setSensitivityFunctor(&modSens);
587  p.addPar("XRCX", static_cast<double>(0), &ADMSvbic::Model::XRCX)
588  .setUnit(U_NONE)
589  .setDescription("")
590  .setAnalyticSensitivityAvailable(true)
591  .setSensitivityFunctor(&modSens);
592  p.addPar("XRBX", static_cast<double>(0), &ADMSvbic::Model::XRBX)
593  .setUnit(U_NONE)
594  .setDescription("")
595  .setAnalyticSensitivityAvailable(true)
596  .setSensitivityFunctor(&modSens);
597  p.addPar("XRBP", static_cast<double>(0), &ADMSvbic::Model::XRBP)
598  .setUnit(U_NONE)
599  .setDescription("")
600  .setAnalyticSensitivityAvailable(true)
601  .setSensitivityFunctor(&modSens);
602  p.addPar("ISRR", static_cast<double>(1.0), &ADMSvbic::Model::ISRR)
603  .setUnit(U_NONE)
604  .setDescription("Saturation current for reverse operation")
605  .setAnalyticSensitivityAvailable(true)
606  .setSensitivityFunctor(&modSens);
607  p.addPar("XISR", static_cast<double>(0.0), &ADMSvbic::Model::XISR)
608  .setUnit(U_NONE)
609  .setDescription("Temperature exponent of ISRR")
610  .setAnalyticSensitivityAvailable(true)
611  .setSensitivityFunctor(&modSens);
612  p.addPar("DEAR", static_cast<double>(0.0), &ADMSvbic::Model::DEAR)
613  .setUnit(U_NONE)
614  .setDescription("Activation energy for ISRR")
615  .setAnalyticSensitivityAvailable(true)
616  .setSensitivityFunctor(&modSens);
617  p.addPar("EAP", static_cast<double>(1.12), &ADMSvbic::Model::EAP)
618  .setUnit(U_NONE)
619  .setDescription("Activation energy for ISP")
620  .setAnalyticSensitivityAvailable(true)
621  .setSensitivityFunctor(&modSens);
622  p.addPar("VBBE", static_cast<double>(0.0), &ADMSvbic::Model::VBBE)
623  .setUnit(U_NONE)
624  .setDescription("")
625  .setAnalyticSensitivityAvailable(true)
626  .setSensitivityFunctor(&modSens);
627  p.addPar("NBBE", static_cast<double>(1.0), &ADMSvbic::Model::NBBE)
628  .setUnit(U_NONE)
629  .setDescription("")
630  .setAnalyticSensitivityAvailable(true)
631  .setSensitivityFunctor(&modSens);
632  p.addPar("IBBE", static_cast<double>(1.0e-6), &ADMSvbic::Model::IBBE)
633  .setUnit(U_NONE)
634  .setDescription("")
635  .setAnalyticSensitivityAvailable(true)
636  .setSensitivityFunctor(&modSens);
637  p.addPar("TVBBE1", static_cast<double>(0.0), &ADMSvbic::Model::TVBBE1)
638  .setUnit(U_NONE)
639  .setDescription("")
640  .setAnalyticSensitivityAvailable(true)
641  .setSensitivityFunctor(&modSens);
642  p.addPar("TVBBE2", static_cast<double>(0.0), &ADMSvbic::Model::TVBBE2)
643  .setUnit(U_NONE)
644  .setDescription("")
645  .setAnalyticSensitivityAvailable(true)
646  .setSensitivityFunctor(&modSens);
647  p.addPar("TNBBE", static_cast<double>(0.0), &ADMSvbic::Model::TNBBE)
648  .setUnit(U_NONE)
649  .setDescription("")
650  .setAnalyticSensitivityAvailable(true)
651  .setSensitivityFunctor(&modSens);
652  p.addPar("EBBE", static_cast<double>(0.0), &ADMSvbic::Model::EBBE)
653  .setUnit(U_NONE)
654  .setDescription("(unused)")
655  .setAnalyticSensitivityAvailable(true)
656  .setSensitivityFunctor(&modSens);
657  p.addPar("DTEMP", static_cast<double>(0.0), &ADMSvbic::Model::DTEMP)
658  .setUnit(U_NONE)
659  .setDescription("Device temperature (use 0.0 for ambient)")
660  .setAnalyticSensitivityAvailable(true)
661  .setSensitivityFunctor(&modSens);
662  p.addPar("VERS", static_cast<double>(1.2), &ADMSvbic::Model::VERS)
663  .setUnit(U_NONE)
664  .setDescription("Version of this VBIC model")
665  .setAnalyticSensitivityAvailable(true)
666  .setSensitivityFunctor(&modSens);
667  p.addPar("VREV", static_cast<double>(0.0), &ADMSvbic::Model::VREV)
668  .setUnit(U_NONE)
669  .setDescription("")
670  .setAnalyticSensitivityAvailable(true)
671  .setSensitivityFunctor(&modSens);
672  //Hidden parameter dtype
673 
674 }
675 
676 //-----------------------------------------------------------------------------
677 // Function : Instance::processParams
678 // Purpose :
679 // Special Notes :
680 // Scope : public
681 // Creator : admsXml
682 // Creation Date :
683 //-----------------------------------------------------------------------------
685 {
686  // Now we need to check that any parameters are within their ranges as
687  // specified in the verilog:
688 
689  // Parameter M : [ 1, (+inf) [
690  if ( (!((M >=1))) )
691  {
692  UserError0(*this) << "ADMSvbic: Parameter M value " << M << " out of range [ 1, (+inf) [";
693  }
694 
695 
696  // this seems a little stupid, but verilog models that use $temperature
697  // don't also use a defined parameter "Temp", and count on $temperature
698  // to be the one the simulator wants:
699 
701 
702  // and of course, this routine is where we should put the initial_instance
703  // stuff
704 
705 
706  return true;
707 }
708 
709 //-----------------------------------------------------------------------------
710 // Function : Instance::Instance
711 // Purpose : "instance block" constructor
712 // Special Notes :
713 // Scope : public
714 // Creator : admsXml
715 // Creation Date :
716 //-----------------------------------------------------------------------------
717 
719  const Configuration & configuration,
720  const InstanceBlock & instance_block,
721  Model & model,
722  const FactoryBlock & factory_block)
723  : DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
724  model_(model),
725  DTEMP(0.0),
726  M(1),
727  li_c(-1),
728  li_b(-1),
729  li_e(-1),
730  li_dt(-1),
731  li_cx(-1),
732  li_ci(-1),
733  li_bx(-1),
734  li_bi(-1),
735  li_ei(-1),
736  li_bp(-1),
737  f_bi_Equ_bi_Node_Ptr(0),
738  f_bi_Equ_ei_Node_Ptr(0),
739  f_ei_Equ_bi_Node_Ptr(0),
740  f_ei_Equ_ei_Node_Ptr(0),
741  f_bi_Equ_dt_Node_Ptr(0),
742  f_ei_Equ_dt_Node_Ptr(0),
743  f_bx_Equ_bx_Node_Ptr(0),
744  f_bx_Equ_ei_Node_Ptr(0),
745  f_ei_Equ_bx_Node_Ptr(0),
746  f_bx_Equ_dt_Node_Ptr(0),
747  f_ci_Equ_bi_Node_Ptr(0),
748  f_ci_Equ_ci_Node_Ptr(0),
749  f_ei_Equ_ci_Node_Ptr(0),
750  f_ci_Equ_ei_Node_Ptr(0),
751  f_ci_Equ_dt_Node_Ptr(0),
752  f_bi_Equ_ci_Node_Ptr(0),
753  f_bx_Equ_bp_Node_Ptr(0),
754  f_bp_Equ_bx_Node_Ptr(0),
755  f_bp_Equ_bp_Node_Ptr(0),
756  f_bp_Equ_dt_Node_Ptr(0),
757  f_c_Equ_dt_Node_Ptr(0),
758  f_cx_Equ_dt_Node_Ptr(0),
759  f_c_Equ_c_Node_Ptr(0),
760  f_c_Equ_cx_Node_Ptr(0),
761  f_cx_Equ_c_Node_Ptr(0),
762  f_cx_Equ_cx_Node_Ptr(0),
763  f_cx_Equ_bi_Node_Ptr(0),
764  f_ci_Equ_cx_Node_Ptr(0),
765  f_cx_Equ_ci_Node_Ptr(0),
766  f_b_Equ_dt_Node_Ptr(0),
767  f_b_Equ_b_Node_Ptr(0),
768  f_b_Equ_bx_Node_Ptr(0),
769  f_bx_Equ_b_Node_Ptr(0),
770  f_bx_Equ_bi_Node_Ptr(0),
771  f_bx_Equ_ci_Node_Ptr(0),
772  f_bi_Equ_bx_Node_Ptr(0),
773  f_e_Equ_dt_Node_Ptr(0),
774  f_e_Equ_e_Node_Ptr(0),
775  f_e_Equ_ei_Node_Ptr(0),
776  f_ei_Equ_e_Node_Ptr(0),
777  f_bp_Equ_bi_Node_Ptr(0),
778  f_bp_Equ_ci_Node_Ptr(0),
779  f_cx_Equ_bx_Node_Ptr(0),
780  f_cx_Equ_bp_Node_Ptr(0),
781  f_bp_Equ_cx_Node_Ptr(0),
782  f_bi_Equ_cx_Node_Ptr(0),
783  f_b_Equ_e_Node_Ptr(0),
784  f_e_Equ_b_Node_Ptr(0),
785  f_b_Equ_c_Node_Ptr(0),
786  f_c_Equ_b_Node_Ptr(0),
787  f_dt_Equ_dt_Node_Ptr(0),
788  f_dt_Equ_bp_Node_Ptr(0),
789  f_dt_Equ_cx_Node_Ptr(0),
790  f_dt_Equ_e_Node_Ptr(0),
791  f_dt_Equ_ei_Node_Ptr(0),
792  f_dt_Equ_bx_Node_Ptr(0),
793  f_dt_Equ_bi_Node_Ptr(0),
794  f_dt_Equ_b_Node_Ptr(0),
795  f_dt_Equ_ci_Node_Ptr(0),
796  f_dt_Equ_c_Node_Ptr(0),
797  q_bi_Equ_bi_Node_Ptr(0),
798  q_bi_Equ_ei_Node_Ptr(0),
799  q_ei_Equ_bi_Node_Ptr(0),
800  q_ei_Equ_ei_Node_Ptr(0),
801  q_bi_Equ_dt_Node_Ptr(0),
802  q_ei_Equ_dt_Node_Ptr(0),
803  q_bx_Equ_bx_Node_Ptr(0),
804  q_bx_Equ_ei_Node_Ptr(0),
805  q_ei_Equ_bx_Node_Ptr(0),
806  q_bx_Equ_dt_Node_Ptr(0),
807  q_ci_Equ_bi_Node_Ptr(0),
808  q_ci_Equ_ci_Node_Ptr(0),
809  q_ei_Equ_ci_Node_Ptr(0),
810  q_ci_Equ_ei_Node_Ptr(0),
811  q_ci_Equ_dt_Node_Ptr(0),
812  q_bi_Equ_ci_Node_Ptr(0),
813  q_bx_Equ_bp_Node_Ptr(0),
814  q_bp_Equ_bx_Node_Ptr(0),
815  q_bp_Equ_bp_Node_Ptr(0),
816  q_bp_Equ_dt_Node_Ptr(0),
817  q_c_Equ_dt_Node_Ptr(0),
818  q_cx_Equ_dt_Node_Ptr(0),
819  q_c_Equ_c_Node_Ptr(0),
820  q_c_Equ_cx_Node_Ptr(0),
821  q_cx_Equ_c_Node_Ptr(0),
822  q_cx_Equ_cx_Node_Ptr(0),
823  q_cx_Equ_bi_Node_Ptr(0),
824  q_ci_Equ_cx_Node_Ptr(0),
825  q_cx_Equ_ci_Node_Ptr(0),
826  q_b_Equ_dt_Node_Ptr(0),
827  q_b_Equ_b_Node_Ptr(0),
828  q_b_Equ_bx_Node_Ptr(0),
829  q_bx_Equ_b_Node_Ptr(0),
830  q_bx_Equ_bi_Node_Ptr(0),
831  q_bx_Equ_ci_Node_Ptr(0),
832  q_bi_Equ_bx_Node_Ptr(0),
833  q_e_Equ_dt_Node_Ptr(0),
834  q_e_Equ_e_Node_Ptr(0),
835  q_e_Equ_ei_Node_Ptr(0),
836  q_ei_Equ_e_Node_Ptr(0),
837  q_bp_Equ_bi_Node_Ptr(0),
838  q_bp_Equ_ci_Node_Ptr(0),
839  q_cx_Equ_bx_Node_Ptr(0),
840  q_cx_Equ_bp_Node_Ptr(0),
841  q_bp_Equ_cx_Node_Ptr(0),
842  q_bi_Equ_cx_Node_Ptr(0),
843  q_b_Equ_e_Node_Ptr(0),
844  q_e_Equ_b_Node_Ptr(0),
845  q_b_Equ_c_Node_Ptr(0),
846  q_c_Equ_b_Node_Ptr(0),
847  q_dt_Equ_dt_Node_Ptr(0),
848  q_dt_Equ_bp_Node_Ptr(0),
849  q_dt_Equ_cx_Node_Ptr(0),
850  q_dt_Equ_e_Node_Ptr(0),
851  q_dt_Equ_ei_Node_Ptr(0),
852  q_dt_Equ_bx_Node_Ptr(0),
853  q_dt_Equ_bi_Node_Ptr(0),
854  q_dt_Equ_b_Node_Ptr(0),
855  q_dt_Equ_ci_Node_Ptr(0),
856  q_dt_Equ_c_Node_Ptr(0),
857  admsTemperature(getDeviceOptions().temp.getImmutableValue<double>()),
858  externalNodeMode(false)
859 
860 {
861  numIntVars = 6 + 0;
862  numExtVars = 4;
863 
864 
865  // Right now, we only have state for limited probes...
866  numStateVars = 7;
867 
868  // Manually inserted code:
869  devConMap.resize(4);
870  devConMap[0] = 1;
871  devConMap[1] = 1;
872  devConMap[2] = 1;
873  devConMap[3] = 2;
874 
875  if ( instance_block.numExtVars > 4)
876  {
877  numExtVars = instance_block.numExtVars;
878  externalNodeMode = true;
879  numIntVars -= numExtVars-4;
880  devConMap.resize(numExtVars);
881  for (int i1=4; i1<numExtVars; ++i1)
882  devConMap[i1]=1;
883  }
884  // End manually inserted code
885 
886  // Set up jacobian stamp:
887 
888  if (jacStamp.empty())
889  {
890  jacStamp.resize(10);
891  jacStamp[admsNodeID_c].resize(4);
896  jacStamp[admsNodeID_b].resize(5);
902  jacStamp[admsNodeID_e].resize(4);
907  jacStamp[admsNodeID_dt].resize(10);
918  jacStamp[admsNodeID_cx].resize(7);
926  jacStamp[admsNodeID_ci].resize(5);
932  jacStamp[admsNodeID_bx].resize(7);
940  jacStamp[admsNodeID_bi].resize(6);
947  jacStamp[admsNodeID_ei].resize(6);
954  jacStamp[admsNodeID_bp].resize(6);
961 
962 
963  // This is really not strictly necessary when not mapping away nodes,
964  // but makes life easier when we get to registerJacLIDs. This block
965  // simply makes a map that leaves everything in place. Later, when we
966  // start making nodes go away, we will need to modify this.
967 
968  int mapSize = jacStamp.size();
969  jacMap.clear();
970  jacMap2.clear();
971  jacMap.resize(mapSize);
972  jacMap2.resize(mapSize);
973  for (int i=0;i<mapSize;++i)
974  {
975  int rowSize=jacStamp[i].size();
976  jacMap[i]=i;
977  jacMap2[i].resize(rowSize);
978  for (int j=0;j<rowSize;++j)
979  {
980  jacMap2[i][j] = j;
981  }
982  }
983 
984  }
985 
986 
988  setParams(instance_block.params);
989  // set any non-constant parameter defaults
990 
991  // copy any model variables that have associated instance variables, but
992  // are only given in the model card:
993  if (!(given("DTEMP")))
994  {
995  DTEMP = model_.DTEMP;
996  }
997 
998 
999 
1000  // Set any parameters that were not given and whose defaults depend on other
1001  // parameters:
1002 
1003 
1004  // Real bogosity here...
1005  if (!given("XYCEADMSINSTTEMP"))
1006  admsInstTemp=getDeviceOptions().temp.getImmutableValue<double>();
1007 
1008  //calculate any parameters specified as expressions
1010 
1011  // calculate dependent (i.e. computed params) and check for errors.
1012  processParams();
1013  collapseNodes();
1014 
1015  // Manually added code
1016  // there are always ci and bi, but the others could be mapped away.
1017  int numExist = ((collapseNode_cx)?0:1) + ((collapseNode_bx)?0:1) + ((collapseNode_ei)?0:1) + 2;
1018 
1019  if (externalNodeMode && (numExtVars != 4+numExist))
1020  {
1021  DevelFatal0(*this) << "Instance " << getName() << " has wrong number of external nodes!"
1022  << " If you specify any internal nodes as external, you must set all that exist. ";
1023  }
1024  // End manually added code
1025 }
1026 
1027 //-----------------------------------------------------------------------------
1028 // Function : Instance::collapseNodes
1029 // Purpose : function to handle collapsing of nodes
1030 // Special Notes :
1031 // Scope : public
1032 // Creator : admsXml
1033 // Creation Date :
1034 //-----------------------------------------------------------------------------
1036 {double slTF;
1037  double IITF;
1038  double IVTF;
1039  double IHRCF;
1040  double IIKP;
1041  double IIKR;
1042  double IVER;
1043  double IVEF;
1044  double Tini;
1045  double tVCrit;
1046  collapseNode_cx = false;
1047  collapseNode_bx = false;
1048  collapseNode_ei = false;
1049  tVCrit = (adms_vt(admsTemperature)*log((adms_vt(admsTemperature)/(1.41421356237309504880*(model_.IS)))));
1050 
1051  Tini = (2.731500e+02+(model_.TNOM));
1052 
1053  IVEF = (((model_.VEF)>0.0)?(1.0/(model_.VEF)):0.0);
1054 
1055  IVER = (((model_.VER)>0.0)?(1.0/(model_.VER)):0.0);
1056 
1057  IIKR = (((model_.IKR)>0.0)?(1.0/(model_.IKR)):0.0);
1058 
1059  IIKP = (((model_.IKP)>0.0)?(1.0/(model_.IKP)):0.0);
1060 
1061  IHRCF = (((model_.HRCF)>0.0)?(1.0/(model_.HRCF)):0.0);
1062 
1063  IVTF = (((model_.VTF)>0.0)?(1.0/(model_.VTF)):0.0);
1064 
1065  IITF = (((model_.ITF)>0.0)?(1.0/(model_.ITF)):0.0);
1066 
1067  slTF = (((model_.ITF)>0.0)?0.0:1.0);
1068 
1069  if (!(((model_.RCX)>0)))
1070  {
1071  collapseNode_cx = true;
1072 
1073  }
1074 
1075  if (!(((model_.RBX)>0)))
1076  {
1077  collapseNode_bx = true;
1078 
1079  }
1080 
1081  if (!(((model_.RE)>0)))
1082  {
1083  collapseNode_ei = true;
1084 
1085  }
1086 
1087 
1088 
1089  // Map away any unneeded internal nodes:
1090  // temporary stamps and maps
1091  std::vector< std::vector<int> > tempStamp;
1092  std::vector<int> tempMap;
1093  std::vector< std::vector<int> > tempMap2;
1094 
1095  int OriginalSize = jacMap.size();
1096 
1097  // If the columns of the jacstamp are not in ascending order then
1098  // jacStampMap will do bogus things. Our ADMS back-end doesn't guarantee
1099  // in-order jacStamps. So we reorder (through the maps)
1100  jacStampMap_fixOrder(jacStamp,jacMap2,tempStamp,tempMap2);
1101  jacStamp=tempStamp; jacMap2=tempMap2;
1102 
1103  if (collapseNode_cx)
1104  {
1105  tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1107  tempStamp, tempMap, tempMap2,
1109  OriginalSize);
1110  // now move the new stuff into the old place
1111  jacStamp = tempStamp; jacMap = tempMap; jacMap2 = tempMap2;
1112  numIntVars--;
1113  }
1114  if (collapseNode_bx)
1115  {
1116  tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1118  tempStamp, tempMap, tempMap2,
1120  OriginalSize);
1121  // now move the new stuff into the old place
1122  jacStamp = tempStamp; jacMap = tempMap; jacMap2 = tempMap2;
1123  numIntVars--;
1124  }
1125  if (collapseNode_ei)
1126  {
1127  tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1129  tempStamp, tempMap, tempMap2,
1131  OriginalSize);
1132  // now move the new stuff into the old place
1133  jacStamp = tempStamp; jacMap = tempMap; jacMap2 = tempMap2;
1134  numIntVars--;
1135  }
1136 }
1137 
1138 //-----------------------------------------------------------------------------
1139 // Function : Instance::~Instance
1140 // Purpose : destructor
1141 // Special Notes :
1142 // Scope : public
1143 // Creator : admsXml
1144 // Creation Date :
1145 //-----------------------------------------------------------------------------
1147 {
1148 }
1149 
1150 //-----------------------------------------------------------------------------
1151 // Function : Instance::registerLIDs
1152 // Purpose : function for registering, and setting up, local ID's.
1153 // Special Notes :
1154 // Scope : public
1155 // Creator : admsXml
1156 // Creation Date :
1157 //-----------------------------------------------------------------------------
1158 void Instance::registerLIDs( const LocalIdVector & intLIDVecRef,
1159  const LocalIdVector & extLIDVecRef)
1160 {
1161  AssertLIDs(intLIDVecRef.size() == numIntVars);
1162  AssertLIDs(extLIDVecRef.size() == numExtVars);
1163 
1164  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1165  {
1166  Xyce::dout() << std::endl << section_divider << std::endl
1167  << "In ADMSvbic::Instance::register LIDs\n\n"
1168  << "name = " << getName() << std::endl
1169  << "number of internal variables: " << numIntVars << std::endl
1170  << "number of external variables: " << numExtVars << std::endl;
1171  }
1172 
1173  // copy over the global ID lists.
1174  intLIDVec = intLIDVecRef;
1175  extLIDVec = extLIDVecRef;
1176 
1177  // Now use these lists to obtain the indices into the linear algebra
1178  // entities. This assumes an order.
1179  int i=0;
1180  li_c = extLIDVecRef[i++];
1181  li_b = extLIDVecRef[i++];
1182  li_e = extLIDVecRef[i++];
1183  li_dt = extLIDVecRef[i++];
1184 
1185  // Manually modified code
1186  int j=0;
1187  if (!collapseNode_cx)
1188  {
1189  if (externalNodeMode)
1190  li_cx = extLIDVecRef[i++];
1191  else
1192  li_cx = intLIDVecRef[j++];
1193  }
1194  else
1195  li_cx = li_c;
1196  if (externalNodeMode)
1197  li_ci = extLIDVecRef[i++];
1198  else
1199  li_ci = intLIDVecRef[j++];
1200 
1201  if (!collapseNode_bx)
1202  {
1203  if (externalNodeMode)
1204  li_bx = extLIDVecRef[i++];
1205  else
1206  li_bx = intLIDVecRef[j++];
1207  }
1208  else
1209  li_bx = li_b;
1210  if (externalNodeMode)
1211  li_bi = extLIDVecRef[i++];
1212  else
1213  li_bi = intLIDVecRef[j++];
1214  if (!collapseNode_ei)
1215  {
1216  if (externalNodeMode)
1217  li_ei = extLIDVecRef[i++];
1218  else
1219  li_ei = intLIDVecRef[j++];
1220  }
1221  else
1222  li_ei = li_e;
1223  li_bp = intLIDVecRef[j++];
1224  // End manually modified code
1225 
1226  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1227  {
1228  Xyce::dout() << "\nSolution and RHS variables:\n";
1229  Xyce::dout() << "\nli_c = " << li_c << std::endl;
1230  Xyce::dout() << "\nli_b = " << li_b << std::endl;
1231  Xyce::dout() << "\nli_e = " << li_e << std::endl;
1232  Xyce::dout() << "\nli_dt = " << li_dt << std::endl;
1233  Xyce::dout() << "\nli_cx = " << li_cx << std::endl;
1234  Xyce::dout() << "\nli_ci = " << li_ci << std::endl;
1235  Xyce::dout() << "\nli_bx = " << li_bx << std::endl;
1236  Xyce::dout() << "\nli_bi = " << li_bi << std::endl;
1237  Xyce::dout() << "\nli_ei = " << li_ei << std::endl;
1238  Xyce::dout() << "\nli_bp = " << li_bp << std::endl;
1239 
1240  Xyce::dout() << "\nEnd of ADMSvbic::Instance::register LIDs\n";
1241  Xyce::dout() << section_divider << std::endl;
1242  }
1243 }
1244 
1245 //-----------------------------------------------------------------------------
1246 // Function : Instance::loadNodeSymbols
1247 // Purpose :
1248 // Special Notes :
1249 // Scope : public
1250 // Creator : admsXml
1251 // Creation Date :
1252 //-----------------------------------------------------------------------------
1253 void Instance::loadNodeSymbols(Util::SymbolTable &symbol_table) const
1254 {
1255  if (!collapseNode_cx)
1256  {
1257  addInternalNode(symbol_table, li_cx, getName(), "cx");
1258  }
1259  addInternalNode(symbol_table, li_ci, getName(), "ci");
1260  if (!collapseNode_bx)
1261  {
1262  addInternalNode(symbol_table, li_bx, getName(), "bx");
1263  }
1264  addInternalNode(symbol_table, li_bi, getName(), "bi");
1265  if (!collapseNode_ei)
1266  {
1267  addInternalNode(symbol_table, li_ei, getName(), "ei");
1268  }
1269  addInternalNode(symbol_table, li_bp, getName(), "bp");
1270 }
1271 
1272 //-----------------------------------------------------------------------------
1273 //-----------------------------------------------------------------------------
1274 // Function : Instance::registerStateLIDs
1275 // Purpose :
1276 // Special Notes :
1277 // Scope : public
1278 // Creator : admsXml
1279 // Creation Date :
1280 //-----------------------------------------------------------------------------
1281 void Instance::registerStateLIDs( const LocalIdVector & staLIDVecRef)
1282 {
1283  AssertLIDs(staLIDVecRef.size() == numStateVars);
1284 
1285  int numSta = staLIDVecRef.size();
1286  if (numSta > 0)
1287  {
1288  int i=0;
1289  staLIDVec = staLIDVecRef;
1290 
1298  }
1299 }
1300 
1301 //-----------------------------------------------------------------------------
1302 // Function : Instance::jacobianStamp
1303 // Purpose :
1304 // Special Notes : In initial version, we won't support mapping away nodes
1305 // Scope : public
1306 // Creator : admsXml
1307 // Creation Date :
1308 //-----------------------------------------------------------------------------
1310 {
1311  return jacStamp;
1312 }
1313 
1314 //-----------------------------------------------------------------------------
1315 // Function : Instance::registerJacLIDs
1316 // Purpose : Create Offset variables used for referencing jacobian
1317 // elements
1318 // Special Notes :
1319 // Scope : public
1320 // Creator : admsXml
1321 // Creation Date :
1322 //-----------------------------------------------------------------------------
1324 {
1326  std::vector<int> & map=jacMap;
1327  std::vector< std::vector<int> > & map2=jacMap2;
1328 
1329 
1330  // do nothing, we won't use the jac lids anymore, we'll use pointers
1331 
1332 }
1333 
1334 //-----------------------------------------------------------------------------
1335 // Function : Instance::setupPointers
1336 // Purpose : Create pointer variables used for referencing jacobian
1337 // elements
1338 // Special Notes :
1339 // Scope : public
1340 // Creator : admsXml
1341 // Creation Date :
1342 //-----------------------------------------------------------------------------
1344 {
1345 
1346  Linear::Matrix * dFdxMatPtr = extData.dFdxMatrixPtr;
1347  Linear::Matrix * dQdxMatPtr = extData.dQdxMatrixPtr;
1348  f_c_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_dt);
1349  q_c_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_dt);
1350  f_c_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_c);
1351  q_c_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_c);
1352  f_c_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_cx);
1353  q_c_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_cx);
1354  f_c_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_c,li_b);
1355  q_c_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_c,li_b);
1356  f_b_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_dt);
1357  q_b_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_dt);
1358  f_b_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_b);
1359  q_b_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_b);
1360  f_b_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_bx);
1361  q_b_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_bx);
1362  f_b_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_e);
1363  q_b_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_e);
1364  f_b_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_b,li_c);
1365  q_b_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_b,li_c);
1366  f_e_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_dt);
1367  q_e_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_dt);
1368  f_e_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_e);
1369  q_e_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_e);
1370  f_e_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_ei);
1371  q_e_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_ei);
1372  f_e_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_e,li_b);
1373  q_e_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_e,li_b);
1374  f_dt_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_dt);
1375  q_dt_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_dt);
1376  f_dt_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_bp);
1377  q_dt_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_bp);
1378  f_dt_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_cx);
1379  q_dt_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_cx);
1380  f_dt_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_e);
1381  q_dt_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_e);
1382  f_dt_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_ei);
1383  q_dt_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_ei);
1384  f_dt_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_bx);
1385  q_dt_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_bx);
1386  f_dt_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_bi);
1387  q_dt_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_bi);
1388  f_dt_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_b);
1389  q_dt_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_b);
1390  f_dt_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_ci);
1391  q_dt_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_ci);
1392  f_dt_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_dt,li_c);
1393  q_dt_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_dt,li_c);
1394  f_cx_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_dt);
1395  q_cx_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_dt);
1396  f_cx_Equ_c_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_c);
1397  q_cx_Equ_c_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_c);
1398  f_cx_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_cx);
1399  q_cx_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_cx);
1400  f_cx_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_bi);
1401  q_cx_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_bi);
1402  f_cx_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_ci);
1403  q_cx_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_ci);
1404  f_cx_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_bx);
1405  q_cx_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_bx);
1406  f_cx_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_cx,li_bp);
1407  q_cx_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_cx,li_bp);
1408  f_ci_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_bi);
1409  q_ci_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_bi);
1410  f_ci_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_ci);
1411  q_ci_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_ci);
1412  f_ci_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_ei);
1413  q_ci_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_ei);
1414  f_ci_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_dt);
1415  q_ci_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_dt);
1416  f_ci_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ci,li_cx);
1417  q_ci_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ci,li_cx);
1418  f_bx_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_bx);
1419  q_bx_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_bx);
1420  f_bx_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_ei);
1421  q_bx_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_ei);
1422  f_bx_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_dt);
1423  q_bx_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_dt);
1424  f_bx_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_bp);
1425  q_bx_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_bp);
1426  f_bx_Equ_b_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_b);
1427  q_bx_Equ_b_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_b);
1428  f_bx_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_bi);
1429  q_bx_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_bi);
1430  f_bx_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bx,li_ci);
1431  q_bx_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bx,li_ci);
1432  f_bi_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_bi);
1433  q_bi_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_bi);
1434  f_bi_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_ei);
1435  q_bi_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_ei);
1436  f_bi_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_dt);
1437  q_bi_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_dt);
1438  f_bi_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_ci);
1439  q_bi_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_ci);
1440  f_bi_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_bx);
1441  q_bi_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_bx);
1442  f_bi_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bi,li_cx);
1443  q_bi_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bi,li_cx);
1444  f_ei_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_bi);
1445  q_ei_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_bi);
1446  f_ei_Equ_ei_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_ei);
1447  q_ei_Equ_ei_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_ei);
1448  f_ei_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_dt);
1449  q_ei_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_dt);
1450  f_ei_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_bx);
1451  q_ei_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_bx);
1452  f_ei_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_ci);
1453  q_ei_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_ci);
1454  f_ei_Equ_e_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_ei,li_e);
1455  q_ei_Equ_e_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_ei,li_e);
1456  f_bp_Equ_bx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_bx);
1457  q_bp_Equ_bx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_bx);
1458  f_bp_Equ_bp_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_bp);
1459  q_bp_Equ_bp_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_bp);
1460  f_bp_Equ_dt_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_dt);
1461  q_bp_Equ_dt_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_dt);
1462  f_bp_Equ_bi_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_bi);
1463  q_bp_Equ_bi_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_bi);
1464  f_bp_Equ_ci_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_ci);
1465  q_bp_Equ_ci_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_ci);
1466  f_bp_Equ_cx_Node_Ptr = dFdxMatPtr->returnRawEntryPointer(li_bp,li_cx);
1467  q_bp_Equ_cx_Node_Ptr = dQdxMatPtr->returnRawEntryPointer(li_bp,li_cx);
1468 
1469 
1470 }
1471 
1472 // RHS load functions
1473 
1474 //-----------------------------------------------------------------------------
1475 // Function : Instance::loadDAEFVector
1476 // Purpose : load F vector (static contributions) for one instance for
1477 // NEW DAE formulation
1478 // Special Notes :
1479 // Scope : public
1480 // Creator : admsXml
1481 // Creation Date :
1482 //-----------------------------------------------------------------------------
1484 {
1485 
1486  bool bsuccess=true;
1487 
1499  {
1500  double *dFdxdVp = extData.dFdxdVpVectorRawPtr;
1501  dFdxdVp[li_c] += Jdxp_static[admsNodeID_c];
1502  dFdxdVp[li_b] += Jdxp_static[admsNodeID_b];
1503  dFdxdVp[li_e] += Jdxp_static[admsNodeID_e];
1504  dFdxdVp[li_dt] += Jdxp_static[admsNodeID_dt];
1505  dFdxdVp[li_cx] += Jdxp_static[admsNodeID_cx];
1506  dFdxdVp[li_ci] += Jdxp_static[admsNodeID_ci];
1507  dFdxdVp[li_bx] += Jdxp_static[admsNodeID_bx];
1508  dFdxdVp[li_bi] += Jdxp_static[admsNodeID_bi];
1509  dFdxdVp[li_ei] += Jdxp_static[admsNodeID_ei];
1510  dFdxdVp[li_bp] += Jdxp_static[admsNodeID_bp];
1511 
1512  }
1513 
1514  return bsuccess;
1515 }
1516 
1517 //-----------------------------------------------------------------------------
1518 // Function : Instance::loadDAEQVector
1519 // Purpose : load Q vector (dynamic contributions) for one instance for
1520 // NEW DAE formulation
1521 // Special Notes :
1522 // Scope : public
1523 // Creator : admsXml
1524 // Creation Date :
1525 //-----------------------------------------------------------------------------
1527 {
1539  {
1540  double *dQdxdVp = extData.dQdxdVpVectorRawPtr;
1541  dQdxdVp[li_c] += Jdxp_dynamic[admsNodeID_c];
1542  dQdxdVp[li_b] += Jdxp_dynamic[admsNodeID_b];
1543  dQdxdVp[li_e] += Jdxp_dynamic[admsNodeID_e];
1544  dQdxdVp[li_dt] += Jdxp_dynamic[admsNodeID_dt];
1545  dQdxdVp[li_cx] += Jdxp_dynamic[admsNodeID_cx];
1546  dQdxdVp[li_ci] += Jdxp_dynamic[admsNodeID_ci];
1547  dQdxdVp[li_bx] += Jdxp_dynamic[admsNodeID_bx];
1548  dQdxdVp[li_bi] += Jdxp_dynamic[admsNodeID_bi];
1549  dQdxdVp[li_ei] += Jdxp_dynamic[admsNodeID_ei];
1550  dQdxdVp[li_bp] += Jdxp_dynamic[admsNodeID_bp];
1551  }
1552 
1553  return true;
1554 }
1555 
1556 
1557 //-----------------------------------------------------------------------------
1558 // Function : Instance::updatePrimaryState
1559 // Purpose :
1560 // Special Notes : In this initial implementation, does little more than
1561 // call updateIntermediateVars()
1562 // Scope : public
1563 // Creator : admsXml
1564 // Creation Date :
1565 //-----------------------------------------------------------------------------
1567 {
1568  bool bsuccess = true;
1569 
1570  bsuccess = updateIntermediateVars();
1571 
1572  // if old DAE were implemented, we'd save dynamic contributions as state
1573  // here.
1574 
1575  double * staVec = extData.nextStaVectorRawPtr;
1576  // Also need to save limited voltage drops
1577  // This formulation assumes that we have *always* written the
1578  // limited voltages back into the probeVars[] array.
1579 
1587 
1588  return bsuccess;
1589 }
1590 
1591 //-----------------------------------------------------------------------------
1592 // Function : Instance::updateSecondaryState
1593 // Purpose :
1594 // Special Notes : In this initial implementation, does nothing
1595 // Scope : public
1596 // Creator : admsXml
1597 // Creation Date :
1598 //-----------------------------------------------------------------------------
1600 {
1601  bool bsuccess = true;
1602 
1603  // were old DAE implemented, we'd pull dynamic contribution derivatives
1604  // out of state.
1605 
1606  return bsuccess;
1607 }
1608 
1609 //-----------------------------------------------------------------------------
1610 // Function : Instance::updateIntermediateVars
1611 // Purpose : update intermediate variables for one vbic instance
1612 // Special Notes :
1613 // Scope : public
1614 // Creator : admsXml
1615 // Creation Date :
1616 //-----------------------------------------------------------------------------
1618 {
1619 
1620  bool bsuccess=true;
1621  Linear::Vector * solVectorPtr = extData.nextSolVectorPtr;
1622 
1623  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
1624  {
1625  Xyce::dout() << std::endl << subsection_divider << std::endl;
1626  Xyce::dout() << " In ADMSvbic::Instance::updateIntermediateVars\n\n";
1627  Xyce::dout() << " name = " << getName() << std::endl;
1628  }
1629 
1630  // Local variables
1631  AdmsFadType Qcth;
1632  AdmsFadType Irth;
1633  AdmsFadType Ith;
1634  AdmsFadType Qbco;
1635  AdmsFadType Qbeo;
1636  AdmsFadType Qbep;
1637  AdmsFadType Qbcx;
1638  AdmsFadType Qbc;
1639  AdmsFadType Qbex;
1640  AdmsFadType Qbe;
1641  AdmsFadType tff;
1642  AdmsFadType tff_exparg;
1643  AdmsFadType mIf;
1644  AdmsFadType rIf;
1645  AdmsFadType sgIf;
1646  AdmsFadType Irbp;
1647  AdmsFadType Ire;
1648  AdmsFadType Irbi;
1649  AdmsFadType Irbx;
1650  AdmsFadType Irci;
1651  AdmsFadType derf;
1652  AdmsFadType Iohm;
1653  AdmsFadType rKp1;
1654  AdmsFadType Kbcx;
1655  AdmsFadType Kbci;
1656  AdmsFadType expx_vbcx;
1657  AdmsFadType argx_vbcx;
1658  AdmsFadType Ircx;
1659  AdmsFadType Ibc;
1660  AdmsFadType Igc;
1661  AdmsFadType avalf;
1662  AdmsFadType avalf_exparg;
1663  AdmsFadType Ibep;
1664  AdmsFadType expn_vbep;
1665  AdmsFadType argn_vbep;
1666  AdmsFadType Ibcj;
1667  AdmsFadType expn_vbci;
1668  AdmsFadType argn_vbci;
1669  AdmsFadType Ibex;
1670  AdmsFadType Ibe;
1671  AdmsFadType expx_vbei;
1672  AdmsFadType argx_vbei;
1673  AdmsFadType expn_vbei;
1674  AdmsFadType argn_vbei;
1675  AdmsFadType argi_vbex;
1676  AdmsFadType expi_vbex;
1677  AdmsFadType argn_vbex;
1678  AdmsFadType expn_vbex;
1679  AdmsFadType argx_vbex;
1680  AdmsFadType expx_vbex;
1681  AdmsFadType qbp;
1682  AdmsFadType q2p;
1683  AdmsFadType Ifp;
1684  AdmsFadType expx_vbci;
1685  AdmsFadType argx_vbci;
1686  AdmsFadType expi_vbep;
1687  AdmsFadType argi_vbep;
1688  AdmsFadType Itzf;
1689  AdmsFadType Itzr;
1690  AdmsFadType qb;
1691  AdmsFadType q2;
1692  AdmsFadType q1;
1693  AdmsFadType q1z;
1694  AdmsFadType Iri;
1695  AdmsFadType expi_vbci;
1696  AdmsFadType argi_vbci;
1697  AdmsFadType Ifi;
1698  AdmsFadType expi_vbei;
1699  AdmsFadType argi_vbei;
1700  AdmsFadType qdbep;
1701  AdmsFadType qhi_vbep;
1702  AdmsFadType qlo_vbep;
1703  AdmsFadType dvh_vbep;
1704  AdmsFadType ql_vbep;
1705  AdmsFadType cl_vbep;
1706  AdmsFadType sel_vbep;
1707  AdmsFadType vl_vbep;
1708  AdmsFadType vnl_vbep;
1709  AdmsFadType vn_vbep;
1710  AdmsFadType mv_vbep;
1711  AdmsFadType dv_vbep;
1712  AdmsFadType qdbc;
1713  AdmsFadType qhi_vbci;
1714  AdmsFadType qlo_vbci;
1715  AdmsFadType dvh_vbci;
1716  AdmsFadType ql_vbci;
1717  AdmsFadType cl_vbci;
1718  AdmsFadType cmx;
1719  AdmsFadType crt;
1720  AdmsFadType sel_vbci;
1721  AdmsFadType vl_vbci;
1722  AdmsFadType vnl_vbci;
1723  AdmsFadType vn_vbci;
1724  AdmsFadType qlo0;
1725  AdmsFadType vnl0;
1726  AdmsFadType vn0;
1727  AdmsFadType mv_vbci;
1728  AdmsFadType dv_vbci;
1729  AdmsFadType qdbex;
1730  AdmsFadType qhi_vbex;
1731  AdmsFadType qlo_vbex;
1732  AdmsFadType dvh_vbex;
1733  AdmsFadType vl_vbex;
1734  AdmsFadType mv_vbex;
1735  AdmsFadType dv_vbex;
1736  AdmsFadType qdbe;
1737  AdmsFadType qhi_vbei;
1738  AdmsFadType qlo_vbei;
1739  double pwq;
1740  AdmsFadType dvh_vbei;
1741  AdmsFadType vl_vbei;
1742  AdmsFadType mv_vbei;
1743  AdmsFadType dv_vbei;
1744  AdmsFadType q0;
1745  AdmsFadType vl0;
1746  AdmsFadType mv0;
1747  AdmsFadType dv0;
1748  double slTF;
1749  double IITF;
1750  double IVTF;
1751  double IHRCF;
1752  AdmsFadType IVO;
1753  double IIKP;
1754  double IIKR;
1755  AdmsFadType IIKF;
1756  double IVER;
1757  double IVEF;
1758  AdmsFadType EBBEatT;
1759  AdmsFadType VOatT;
1760  AdmsFadType GAMMatT;
1761  AdmsFadType CJCPatT;
1762  AdmsFadType CJEPatT;
1763  AdmsFadType CJCatT;
1764  AdmsFadType CJEatT;
1765  AdmsFadType PSatT;
1766  AdmsFadType PCatT;
1767  AdmsFadType PEatT;
1768  AdmsFadType psiin;
1769  AdmsFadType psiio;
1770  AdmsFadType NBBEatT;
1771  AdmsFadType VBBEatT;
1772  AdmsFadType AVC2atT;
1773  AdmsFadType NRatT;
1774  AdmsFadType NFatT;
1775  AdmsFadType IBCNPatT;
1776  AdmsFadType IBCIPatT;
1777  AdmsFadType IBENPatT;
1778  AdmsFadType IBEIPatT;
1779  AdmsFadType IBCNatT;
1780  AdmsFadType IBCIatT;
1781  AdmsFadType IBENatT;
1782  AdmsFadType IBEIatT;
1783  AdmsFadType ISPatT;
1784  AdmsFadType ISRRatT;
1785  AdmsFadType ISatT;
1786  AdmsFadType RBPatT;
1787  AdmsFadType RSatT;
1788  AdmsFadType REatT;
1789  AdmsFadType RBIatT;
1790  AdmsFadType RBXatT;
1791  AdmsFadType RCIatT;
1792  AdmsFadType RCXatT;
1793  AdmsFadType IKFatT;
1794  AdmsFadType dT;
1795  AdmsFadType rT;
1796  AdmsFadType Vtv;
1797  AdmsFadType Tdev;
1798  double Tini;
1799  AdmsFadType Vcei;
1800  AdmsFadType Vbc;
1801  AdmsFadType Vrbp;
1802  AdmsFadType Vre;
1803  AdmsFadType Vrbx;
1804  AdmsFadType Vrbi;
1805  AdmsFadType Vrci;
1806  AdmsFadType Vrcx;
1807  AdmsFadType Vbe;
1808  AdmsFadType Vrth;
1809  AdmsFadType Vbep;
1810  AdmsFadType Vbcx;
1811  AdmsFadType Vbex;
1812  AdmsFadType Vbci;
1813  AdmsFadType Vbei;
1814  double tVCrit;
1815  // temporary variables for limiting
1816  double Vbe_orig,Vbe_limited,Vbe_old;
1817  double Vrth_orig,Vrth_limited,Vrth_old;
1818  double Vbep_orig,Vbep_limited,Vbep_old;
1819  double Vbcx_orig,Vbcx_limited,Vbcx_old;
1820  double Vbex_orig,Vbex_limited,Vbex_old;
1821  double Vbci_orig,Vbci_limited,Vbci_old;
1822  double Vbei_orig,Vbei_limited,Vbei_old;
1823 
1824 
1825  // set the sizes of the Fad arrays:
1826 
1827  if (probeVars.size() != (15))
1828  {
1829  probeVars.resize(15);
1830  staticContributions.resize(10+0);
1831  dynamicContributions.resize(10+0);
1832  probeDiffs.resize(15,0.0);
1833  Jdxp_static.resize(10+0);
1834  Jdxp_dynamic.resize(10+0);
1835  }
1836 
1837  // initialize contributions to zero (automatically sets derivatives to zero)
1838  for (int i=0; i < 10+0 ; ++i)
1839  {
1840  staticContributions[i]=0;
1841  dynamicContributions[i]=0;
1842  Jdxp_static[i]=0;
1843  Jdxp_dynamic[i]=0;
1844  }
1845 
1846  for (int i=0; i < 15 ; ++i)
1847  {
1848  probeDiffs[i] = 0.0;
1849  }
1850  // extract solution variables and set as Fad independent variables.
1851 
1852  probeVars[admsProbeID_V_ci_ei] = (*solVectorPtr)[li_ci] - (*solVectorPtr)[li_ei];
1854 
1855  probeVars[admsProbeID_V_b_c] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_c];
1857 
1858  probeVars[admsProbeID_V_bp_cx] = (*solVectorPtr)[li_bp] - (*solVectorPtr)[li_cx];
1860 
1861  probeVars[admsProbeID_V_e_ei] = (*solVectorPtr)[li_e] - (*solVectorPtr)[li_ei];
1863 
1864  probeVars[admsProbeID_V_b_bx] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_bx];
1866 
1867  probeVars[admsProbeID_V_bx_bi] = (*solVectorPtr)[li_bx] - (*solVectorPtr)[li_bi];
1869 
1870  probeVars[admsProbeID_V_cx_ci] = (*solVectorPtr)[li_cx] - (*solVectorPtr)[li_ci];
1872 
1873  probeVars[admsProbeID_V_c_cx] = (*solVectorPtr)[li_c] - (*solVectorPtr)[li_cx];
1875 
1876  probeVars[admsProbeID_V_b_e] = (*solVectorPtr)[li_b] - (*solVectorPtr)[li_e];
1878 
1879  probeVars[admsProbeID_V_dt_GND] = (*solVectorPtr)[li_dt];
1881 
1882  probeVars[admsProbeID_V_bx_bp] = (*solVectorPtr)[li_bx] - (*solVectorPtr)[li_bp];
1884 
1885  probeVars[admsProbeID_V_bi_cx] = (*solVectorPtr)[li_bi] - (*solVectorPtr)[li_cx];
1887 
1888  probeVars[admsProbeID_V_bx_ei] = (*solVectorPtr)[li_bx] - (*solVectorPtr)[li_ei];
1890 
1891  probeVars[admsProbeID_V_bi_ci] = (*solVectorPtr)[li_bi] - (*solVectorPtr)[li_ci];
1893 
1894  probeVars[admsProbeID_V_bi_ei] = (*solVectorPtr)[li_bi] - (*solVectorPtr)[li_ei];
1896 
1897 
1898  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
1905 
1906  // Copy probes into limiting vars
1907  Vbe_orig = Vbe_limited = probeVars[admsProbeID_V_b_e].val();
1909  Vrth_orig = Vrth_limited = probeVars[admsProbeID_V_dt_GND].val();
1911  Vbep_orig = Vbep_limited = probeVars[admsProbeID_V_bx_bp].val();
1913  Vbcx_orig = Vbcx_limited = probeVars[admsProbeID_V_bi_cx].val();
1915  Vbex_orig = Vbex_limited = probeVars[admsProbeID_V_bx_ei].val();
1917  Vbci_orig = Vbci_limited = probeVars[admsProbeID_V_bi_ci].val();
1919  Vbei_orig = Vbei_limited = probeVars[admsProbeID_V_bi_ei].val();
1921 
1922  origFlag = true;
1923 
1924  // code manually moved from below, because we need it earlier than predicted by adms
1925  tVCrit = (adms_vt(admsTemperature)*log((adms_vt(admsTemperature)/(1.41421356237309504880*(model_.IS)))));
1926 
1927  if (getSolverState().newtonIter == 0)
1928  {
1929 
1931  {
1932  // manually inserted code:
1934  {
1935  Linear::Vector * flagSolVectorPtr = (extData.flagSolVectorPtr);
1936  if ((*flagSolVectorPtr)[li_e] == 0 ||
1937  (*flagSolVectorPtr)[li_ei] == 0 ||
1938  (*flagSolVectorPtr)[li_b] == 0 ||
1939  (*flagSolVectorPtr)[li_bi] == 0 ||
1940  (*flagSolVectorPtr)[li_bx] == 0 ||
1941  (*flagSolVectorPtr)[li_bp] == 0 ||
1942  (*flagSolVectorPtr)[li_c] == 0 ||
1943  (*flagSolVectorPtr)[li_ci] == 0 ||
1944  (*flagSolVectorPtr)[li_cx] == 0 ||
1945  (*flagSolVectorPtr)[li_dt] == 0 )
1946  {
1947  Vbci_limited = Vbcx_limited = Vbep_limited = 0;
1948  Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
1949  Vrth_limited = 0;
1950  origFlag = false;
1951  }
1952  }
1953  else
1954  {
1955  Vbci_limited = Vbcx_limited = Vbep_limited = 0;
1956  Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
1957  Vrth_limited = 0;
1958  origFlag = false;
1959  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) > 0 && getSolverState().debugTimeFlag)
1960  {
1961  Xyce::dout() << " Setting device initial condition to Base-Emitter drop=tVCrit (" << tVCrit << ")"<<std::endl;
1962  }
1963  }
1964  }
1965  // end manually inserted code
1966 
1967  if (!(getSolverState().dcopFlag)||(getSolverState().locaEnabledFlag && getSolverState().dcopFlag))
1968  {
1976  }
1977  else
1978  {
1979  Vbe_old = Vbe_limited;
1980  Vrth_old = Vrth_limited;
1981  Vbep_old = Vbep_limited;
1982  Vbcx_old = Vbcx_limited;
1983  Vbex_old = Vbex_limited;
1984  Vbci_old = Vbci_limited;
1985  Vbei_old = Vbei_limited;
1986  }
1987  }
1988  else
1989  {
1997  }
1998 
1999  // -- code converted from analog/code block
2000  // manually moved to above, we need it earlier than this:
2001  //tVCrit = (adms_vt(admsTemperature)*log((adms_vt(admsTemperature)/(1.41421356237309504880*(model_.IS)))));
2002 
2003 
2004  //Vbei = ($limit(V(bi,ei),"typedpnjlim_new",$vt(),tVCrit,dtype));
2006  {
2007  int icheck=0;
2008  Vbei_limited = devSupport.pnjlim_new(Vbei_limited,Vbei_old,adms_vt_nom,tVCrit,&icheck);
2009  if (icheck == 1)
2010  origFlag = false;
2011  if (!origFlag)
2012  {
2013  probeDiffs[admsProbeID_V_bi_ei] = Vbei_limited - Vbei_orig;
2015  }
2016  }
2018 
2019 
2020 
2021  //Vbci = ($limit(V(bi,ci),"typedpnjlim_new",$vt(),tVCrit,dtype));
2022  if (getDeviceOptions().voltageLimiterFlag)
2023  {
2024  int icheck=0;
2025  Vbci_limited = devSupport.pnjlim_new(Vbci_limited,Vbci_old,adms_vt_nom,tVCrit,&icheck);
2026  if (icheck == 1)
2027  origFlag = false;
2028  if (!origFlag)
2029  {
2030  probeDiffs[admsProbeID_V_bi_ci] = Vbci_limited - Vbci_orig;
2032  }
2033  }
2035 
2036 
2037 
2038  //Vbex = ($limit(V(bx,ei),"typedpnjlim_new",$vt(),tVCrit,dtype));
2039  if (getDeviceOptions().voltageLimiterFlag)
2040  {
2041  int icheck=0;
2042  Vbex_limited = devSupport.pnjlim_new(Vbex_limited,Vbex_old,adms_vt_nom,tVCrit,&icheck);
2043  if (icheck == 1)
2044  origFlag = false;
2045  if (!origFlag)
2046  {
2047  probeDiffs[admsProbeID_V_bx_ei] = Vbex_limited - Vbex_orig;
2049  }
2050  }
2052 
2053 
2054 
2055  //Vbcx = ($limit(V(bi,cx),"typedpnjlim_new",$vt(),tVCrit,dtype));
2056  if (getDeviceOptions().voltageLimiterFlag)
2057  {
2058  int icheck=0;
2059  Vbcx_limited = devSupport.pnjlim_new(Vbcx_limited,Vbcx_old,adms_vt_nom,tVCrit,&icheck);
2060  if (icheck == 1)
2061  origFlag = false;
2062  if (!origFlag)
2063  {
2064  probeDiffs[admsProbeID_V_bi_cx] = Vbcx_limited - Vbcx_orig;
2066  }
2067  }
2069 
2070 
2071 
2072  //Vbep = ($limit(V(bx,bp),"typedpnjlim_new",$vt(),tVCrit,dtype));
2073  if (getDeviceOptions().voltageLimiterFlag)
2074  {
2075  int icheck=0;
2076  Vbep_limited = devSupport.pnjlim_new(Vbep_limited,Vbep_old,adms_vt_nom,tVCrit,&icheck);
2077  if (icheck == 1)
2078  origFlag = false;
2079  if (!origFlag)
2080  {
2081  probeDiffs[admsProbeID_V_bx_bp] = Vbep_limited - Vbep_orig;
2083  }
2084  }
2086 
2087 
2088 
2089  //Vrth = ($limit(V(dt,GND),"limRTH"));
2090  if (getDeviceOptions().voltageLimiterFlag)
2091  {
2092  int icheck=0;
2093  Vrth_limited = AnalogFunctions::limRTH(Vrth_limited,Vrth_old);
2094  if (Vrth_limited != Vrth_orig)
2095  {
2096  icheck=1;
2097  }
2098  if (icheck == 1)
2099  origFlag = false;
2100  if (!origFlag)
2101  {
2102  probeDiffs[admsProbeID_V_dt_GND] = Vrth_limited - Vrth_orig;
2104  }
2105  }
2107 
2108 
2109 
2110  //Vbe = ($limit(V(b,e),"typeddummy",$vt(),tVCrit,dtype));
2111  if (getDeviceOptions().voltageLimiterFlag)
2112  {
2113  int icheck=0;
2114  // dummy limiting for initialization purposes
2115  if (icheck == 1)
2116  origFlag = false;
2117  if (!origFlag)
2118  {
2119  probeDiffs[admsProbeID_V_b_e] = Vbe_limited - Vbe_orig;
2121  }
2122  }
2124 
2125  Vrcx = ((model_.dtype)*(probeVars[admsProbeID_V_c_cx]));
2126  Vrci = ((model_.dtype)*(probeVars[admsProbeID_V_cx_ci]));
2127  Vrbi = ((model_.dtype)*(probeVars[admsProbeID_V_bx_bi]));
2128  Vrbx = ((model_.dtype)*(probeVars[admsProbeID_V_b_bx]));
2130  Vrbp = ((model_.dtype)*(probeVars[admsProbeID_V_bp_cx]));
2131  Vbc = ((model_.dtype)*(probeVars[admsProbeID_V_b_c]));
2132  Vcei = ((model_.dtype)*(probeVars[admsProbeID_V_ci_ei]));
2133  Tini = (2.731500e+02+(model_.TNOM));
2134  Tdev = ((admsTemperature+DTEMP)+Vrth);
2135  Vtv = ((1.380662e-23*Tdev)/1.602189e-19);
2136  rT = (Tdev/Tini);
2137  dT = (Tdev-Tini);
2138  IKFatT = ((model_.IKF)*pow(rT,(model_.XIKF)));
2139  RCXatT = ((model_.RCX)*pow(rT,(model_.XRCX)));
2140  RCIatT = ((model_.RCI)*pow(rT,(model_.XRCI)));
2141  RBXatT = ((model_.RBX)*pow(rT,(model_.XRBX)));
2142  RBIatT = ((model_.RBI)*pow(rT,(model_.XRBI)));
2143  REatT = ((model_.RE)*pow(rT,(model_.XRE)));
2144  RSatT = ((model_.RS)*pow(rT,(model_.XRS)));
2145  RBPatT = ((model_.RBP)*pow(rT,(model_.XRBP)));
2146  ISatT = ((model_.IS)*pow((pow(rT,(model_.XIS))*exp((((-(model_.EA))*(1.0-rT))/Vtv))),(1.0/(model_.NF))));
2147  ISRRatT = ((model_.ISRR)*pow((pow(rT,(model_.XISR))*exp((((-(model_.DEAR))*(1.0-rT))/Vtv))),(1.0/(model_.NR))));
2148  ISPatT = ((model_.ISP)*pow((pow(rT,(model_.XIS))*exp((((-(model_.EAP))*(1.0-rT))/Vtv))),(1.0/(model_.NFP))));
2149  IBEIatT = ((model_.IBEI)*pow((pow(rT,(model_.XII))*exp((((-(model_.EAIE))*(1.0-rT))/Vtv))),(1.0/(model_.NEI))));
2150  IBENatT = ((model_.IBEN)*pow((pow(rT,(model_.XIN))*exp((((-(model_.EANE))*(1.0-rT))/Vtv))),(1.0/(model_.NEN))));
2151  IBCIatT = ((model_.IBCI)*pow((pow(rT,(model_.XII))*exp((((-(model_.EAIC))*(1.0-rT))/Vtv))),(1.0/(model_.NCI))));
2152  IBCNatT = ((model_.IBCN)*pow((pow(rT,(model_.XIN))*exp((((-(model_.EANC))*(1.0-rT))/Vtv))),(1.0/(model_.NCN))));
2153  IBEIPatT = ((model_.IBEIP)*pow((pow(rT,(model_.XII))*exp((((-(model_.EAIC))*(1.0-rT))/Vtv))),(1.0/(model_.NCI))));
2154  IBENPatT = ((model_.IBENP)*pow((pow(rT,(model_.XIN))*exp((((-(model_.EANC))*(1.0-rT))/Vtv))),(1.0/(model_.NCN))));
2155  IBCIPatT = ((model_.IBCIP)*pow((pow(rT,(model_.XII))*exp((((-(model_.EAIS))*(1.0-rT))/Vtv))),(1.0/(model_.NCIP))));
2156  IBCNPatT = ((model_.IBCNP)*pow((pow(rT,(model_.XIN))*exp((((-(model_.EANS))*(1.0-rT))/Vtv))),(1.0/(model_.NCNP))));
2157  NFatT = ((model_.NF)*(1.0+(dT*(model_.TNF))));
2158  NRatT = ((model_.NR)*(1.0+(dT*(model_.TNF))));
2159  AVC2atT = ((model_.AVC2)*(1.0+(dT*(model_.TAVC))));
2160  VBBEatT = ((model_.VBBE)*(1.0+(dT*((model_.TVBBE1)+(dT*(model_.TVBBE2))))));
2161  NBBEatT = ((model_.NBBE)*(1.0+(dT*(model_.TNBBE))));
2162  psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(model_.PE))*rT)/Vtv))-exp(((((-0.5)*(model_.PE))*rT)/Vtv)))));
2163  psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((model_.EAIE)*(rT-1.0)));
2164  PEatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2165  psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(model_.PC))*rT)/Vtv))-exp(((((-0.5)*(model_.PC))*rT)/Vtv)))));
2166  psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((model_.EAIC)*(rT-1.0)));
2167  PCatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2168  psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(model_.PS))*rT)/Vtv))-exp(((((-0.5)*(model_.PS))*rT)/Vtv)))));
2169  psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((model_.EAIS)*(rT-1.0)));
2170  PSatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2171  CJEatT = ((model_.CJE)*pow(((model_.PE)/PEatT),(model_.ME)));
2172  CJCatT = ((model_.CJC)*pow(((model_.PC)/PCatT),(model_.MC)));
2173  CJEPatT = ((model_.CJEP)*pow(((model_.PC)/PCatT),(model_.MC)));
2174  CJCPatT = ((model_.CJCP)*pow(((model_.PS)/PSatT),(model_.MS)));
2175  GAMMatT = (((model_.GAMM)*pow(rT,(model_.XIS)))*exp((((-(model_.EA))*(1.0-rT))/Vtv)));
2176  VOatT = ((model_.VO)*pow(rT,(model_.XVO)));
2177  EBBEatT = exp(((-VBBEatT)/(NBBEatT*Vtv)));
2178  IVEF = (((model_.VEF)>0.0)?(1.0/(model_.VEF)):0.0);
2179  IVER = (((model_.VER)>0.0)?(1.0/(model_.VER)):0.0);
2180  IIKF = 0.0;
2181  if (((model_.IKF)>0.0))
2182  {
2183  IIKF = (1.0/IKFatT);
2184  }
2185  IIKR = (((model_.IKR)>0.0)?(1.0/(model_.IKR)):0.0);
2186  IIKP = (((model_.IKP)>0.0)?(1.0/(model_.IKP)):0.0);
2187  IVO = 0.0;
2188  if (((model_.VO)>0.0))
2189  {
2190  IVO = (1.0/VOatT);
2191  }
2192  IHRCF = (((model_.HRCF)>0.0)?(1.0/(model_.HRCF)):0.0);
2193  IVTF = (((model_.VTF)>0.0)?(1.0/(model_.VTF)):0.0);
2194  IITF = (((model_.ITF)>0.0)?(1.0/(model_.ITF)):0.0);
2195  slTF = (((model_.ITF)>0.0)?0.0:1.0);
2196  dv0 = ((-PEatT)*(model_.FC));
2197  if (((model_.AJE)<=0.0))
2198  {
2199  dvh_vbei = (Vbei+dv0);
2200  if ((dvh_vbei>0.0))
2201  {
2202  pwq = pow((1.0-(model_.FC)),((-1.0)-(model_.ME)));
2203  qlo_vbei = ((PEatT*(1.0-((pwq*(1.0-(model_.FC)))*(1.0-(model_.FC)))))/(1.0-(model_.ME)));
2204  qhi_vbei = ((dvh_vbei*((1.0-(model_.FC))+(((0.5*(model_.ME))*dvh_vbei)/PEatT)))*pwq);
2205  }
2206  else
2207  {
2208  qlo_vbei = ((PEatT*(1.0-pow((1.0-(Vbei/PEatT)),(1.0-(model_.ME)))))/(1.0-(model_.ME)));
2209  qhi_vbei = 0.0;
2210  }
2211  qdbe = (qlo_vbei+qhi_vbei);
2212  }
2213  else
2214  {
2215  mv0 = sqrt(((dv0*dv0)+((4*(model_.AJE))*(model_.AJE))));
2216  vl0 = ((-0.5)*(dv0+mv0));
2217  q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-(model_.ME))))/(1.0-(model_.ME)));
2218  dv_vbei = (Vbei+dv0);
2219  mv_vbei = sqrt(((dv_vbei*dv_vbei)+((4*(model_.AJE))*(model_.AJE))));
2220  vl_vbei = ((0.5*(dv_vbei-mv_vbei))-dv0);
2221  qlo_vbei = (((-PEatT)*pow((1.0-(vl_vbei/PEatT)),(1.0-(model_.ME))))/(1.0-(model_.ME)));
2222  qdbe = ((qlo_vbei+(pow((1.0-(model_.FC)),(-(model_.ME)))*((Vbei-vl_vbei)+vl0)))-q0);
2223  }
2224  dv0 = ((-PEatT)*(model_.FC));
2225  if (((model_.AJE)<=0.0))
2226  {
2227  dvh_vbex = (Vbex+dv0);
2228  if ((dvh_vbex>0.0))
2229  {
2230  pwq = pow((1.0-(model_.FC)),((-1.0)-(model_.ME)));
2231  qlo_vbex = ((PEatT*(1.0-((pwq*(1.0-(model_.FC)))*(1.0-(model_.FC)))))/(1.0-(model_.ME)));
2232  qhi_vbex = ((dvh_vbex*((1.0-(model_.FC))+(((0.5*(model_.ME))*dvh_vbex)/PEatT)))*pwq);
2233  }
2234  else
2235  {
2236  qlo_vbex = ((PEatT*(1.0-pow((1.0-(Vbex/PEatT)),(1.0-(model_.ME)))))/(1.0-(model_.ME)));
2237  qhi_vbex = 0.0;
2238  }
2239  qdbex = (qlo_vbex+qhi_vbex);
2240  }
2241  else
2242  {
2243  mv0 = sqrt(((dv0*dv0)+((4*(model_.AJE))*(model_.AJE))));
2244  vl0 = ((-0.5)*(dv0+mv0));
2245  q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-(model_.ME))))/(1.0-(model_.ME)));
2246  dv_vbex = (Vbex+dv0);
2247  mv_vbex = sqrt(((dv_vbex*dv_vbex)+((4*(model_.AJE))*(model_.AJE))));
2248  vl_vbex = ((0.5*(dv_vbex-mv_vbex))-dv0);
2249  qlo_vbex = (((-PEatT)*pow((1.0-(vl_vbex/PEatT)),(1.0-(model_.ME))))/(1.0-(model_.ME)));
2250  qdbex = ((qlo_vbex+(pow((1.0-(model_.FC)),(-(model_.ME)))*((Vbex-vl_vbex)+vl0)))-q0);
2251  }
2252  dv0 = ((-PCatT)*(model_.FC));
2253  if (((model_.AJC)<=0.0))
2254  {
2255  dvh_vbci = (Vbci+dv0);
2256  if ((dvh_vbci>0.0))
2257  {
2258  pwq = pow((1.0-(model_.FC)),((-1.0)-(model_.MC)));
2259  qlo_vbci = ((PCatT*(1.0-((pwq*(1.0-(model_.FC)))*(1.0-(model_.FC)))))/(1.0-(model_.MC)));
2260  qhi_vbci = ((dvh_vbci*((1.0-(model_.FC))+(((0.5*(model_.MC))*dvh_vbci)/PCatT)))*pwq);
2261  }
2262  else
2263  {
2264  if ((((model_.VRT)>0.0)&&(Vbci<(-(model_.VRT)))))
2265  {
2266  qlo_vbci = ((PCatT*(1.0-(pow((1.0+((model_.VRT)/PCatT)),(1.0-(model_.MC)))*(1.0-(((1.0-(model_.MC))*(Vbci+(model_.VRT)))/(PCatT+(model_.VRT)))))))/(1.0-(model_.MC)));
2267  }
2268  else
2269  {
2270  qlo_vbci = ((PCatT*(1.0-pow((1.0-(Vbci/PCatT)),(1.0-(model_.MC)))))/(1.0-(model_.MC)));
2271  }
2272  qhi_vbci = 0.0;
2273  }
2274  qdbc = (qlo_vbci+qhi_vbci);
2275  }
2276  else
2277  {
2278  if ((((model_.VRT)>0.0)&&((model_.ART)>0.0)))
2279  {
2280  vn0 = (((model_.VRT)+dv0)/((model_.VRT)-dv0));
2281  vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*(model_.AJC))*(model_.AJC))))+sqrt((((vn0+1.0)*(vn0+1))+((4*(model_.ART))*(model_.ART))))));
2282  vl0 = (0.5*(((vnl0*((model_.VRT)-dv0))-(model_.VRT))-dv0));
2283  qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-(model_.MC)))))/(1.0-(model_.MC)));
2284  vn_vbci = ((((2*Vbci)+(model_.VRT))+dv0)/((model_.VRT)-dv0));
2285  vnl_vbci = ((2.0*vn_vbci)/(sqrt((((vn_vbci-1.0)*(vn_vbci-1))+((4*(model_.AJC))*(model_.AJC))))+sqrt((((vn_vbci+1.0)*(vn_vbci+1))+((4*(model_.ART))*(model_.ART))))));
2286  vl_vbci = (0.5*(((vnl_vbci*((model_.VRT)-dv0))-(model_.VRT))-dv0));
2287  qlo_vbci = ((PCatT*(1.0-pow((1.0-(vl_vbci/PCatT)),(1.0-(model_.MC)))))/(1.0-(model_.MC)));
2288  sel_vbci = (0.5*(vnl_vbci+1.0));
2289  crt = pow((1.0+((model_.VRT)/PCatT)),(-(model_.MC)));
2290  cmx = pow((1.0+(dv0/PCatT)),(-(model_.MC)));
2291  cl_vbci = (((1.0-sel_vbci)*crt)+(sel_vbci*cmx));
2292  ql_vbci = (((Vbci-vl_vbci)+vl0)*cl_vbci);
2293  qdbc = ((ql_vbci+qlo_vbci)-qlo0);
2294  }
2295  else
2296  {
2297  mv0 = sqrt(((dv0*dv0)+((4*(model_.AJC))*(model_.AJC))));
2298  vl0 = ((-0.5)*(dv0+mv0));
2299  q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-(model_.MC))))/(1.0-(model_.MC)));
2300  dv_vbci = (Vbci+dv0);
2301  mv_vbci = sqrt(((dv_vbci*dv_vbci)+((4*(model_.AJC))*(model_.AJC))));
2302  vl_vbci = ((0.5*(dv_vbci-mv_vbci))-dv0);
2303  qlo_vbci = (((-PCatT)*pow((1.0-(vl_vbci/PCatT)),(1.0-(model_.MC))))/(1.0-(model_.MC)));
2304  qdbc = ((qlo_vbci+(pow((1.0-(model_.FC)),(-(model_.MC)))*((Vbci-vl_vbci)+vl0)))-q0);
2305  }
2306  }
2307  dv0 = ((-PCatT)*(model_.FC));
2308  if (((model_.AJC)<=0.0))
2309  {
2310  dvh_vbep = (Vbep+dv0);
2311  if ((dvh_vbep>0.0))
2312  {
2313  pwq = pow((1.0-(model_.FC)),((-1.0)-(model_.MC)));
2314  qlo_vbep = ((PCatT*(1.0-((pwq*(1.0-(model_.FC)))*(1.0-(model_.FC)))))/(1.0-(model_.MC)));
2315  qhi_vbep = ((dvh_vbep*((1.0-(model_.FC))+(((0.5*(model_.MC))*dvh_vbep)/PCatT)))*pwq);
2316  }
2317  else
2318  {
2319  if ((((model_.VRT)>0.0)&&(Vbep<(-(model_.VRT)))))
2320  {
2321  qlo_vbep = ((PCatT*(1.0-(pow((1.0+((model_.VRT)/PCatT)),(1.0-(model_.MC)))*(1.0-(((1.0-(model_.MC))*(Vbep+(model_.VRT)))/(PCatT+(model_.VRT)))))))/(1.0-(model_.MC)));
2322  }
2323  else
2324  {
2325  qlo_vbep = ((PCatT*(1.0-pow((1.0-(Vbep/PCatT)),(1.0-(model_.MC)))))/(1.0-(model_.MC)));
2326  }
2327  qhi_vbep = 0.0;
2328  }
2329  qdbep = (qlo_vbep+qhi_vbep);
2330  }
2331  else
2332  {
2333  if ((((model_.VRT)>0.0)&&((model_.ART)>0.0)))
2334  {
2335  vn0 = (((model_.VRT)+dv0)/((model_.VRT)-dv0));
2336  vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*(model_.AJC))*(model_.AJC))))+sqrt((((vn0+1.0)*(vn0+1))+((4*(model_.ART))*(model_.ART))))));
2337  vl0 = (0.5*(((vnl0*((model_.VRT)-dv0))-(model_.VRT))-dv0));
2338  qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-(model_.MC)))))/(1.0-(model_.MC)));
2339  vn_vbep = ((((2*Vbep)+(model_.VRT))+dv0)/((model_.VRT)-dv0));
2340  vnl_vbep = ((2.0*vn_vbep)/(sqrt((((vn_vbep-1.0)*(vn_vbep-1))+((4*(model_.AJC))*(model_.AJC))))+sqrt((((vn_vbep+1.0)*(vn_vbep+1))+((4*(model_.ART))*(model_.ART))))));
2341  vl_vbep = (0.5*(((vnl_vbep*((model_.VRT)-dv0))-(model_.VRT))-dv0));
2342  qlo_vbep = ((PCatT*(1.0-pow((1.0-(vl_vbep/PCatT)),(1.0-(model_.MC)))))/(1.0-(model_.MC)));
2343  sel_vbep = (0.5*(vnl_vbep+1.0));
2344  crt = pow((1.0+((model_.VRT)/PCatT)),(-(model_.MC)));
2345  cmx = pow((1.0+(dv0/PCatT)),(-(model_.MC)));
2346  cl_vbep = (((1.0-sel_vbep)*crt)+(sel_vbep*cmx));
2347  ql_vbep = (((Vbep-vl_vbep)+vl0)*cl_vbep);
2348  qdbep = ((ql_vbep+qlo_vbep)-qlo0);
2349  }
2350  else
2351  {
2352  mv0 = sqrt(((dv0*dv0)+((4*(model_.AJC))*(model_.AJC))));
2353  vl0 = ((-0.5)*(dv0+mv0));
2354  q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-(model_.MC))))/(1.0-(model_.MC)));
2355  dv_vbep = (Vbep+dv0);
2356  mv_vbep = sqrt(((dv_vbep*dv_vbep)+((4*(model_.AJC))*(model_.AJC))));
2357  vl_vbep = ((0.5*(dv_vbep-mv_vbep))-dv0);
2358  qlo_vbep = (((-PCatT)*pow((1.0-(vl_vbep/PCatT)),(1.0-(model_.MC))))/(1.0-(model_.MC)));
2359  qdbep = ((qlo_vbep+(pow((1.0-(model_.FC)),(-(model_.MC)))*((Vbep-vl_vbep)+vl0)))-q0);
2360  }
2361  }
2362  argi_vbei = (Vbei/(NFatT*Vtv));
2363  expi_vbei = limexp<AdmsFadType>(argi_vbei);
2364  Ifi = (ISatT*(expi_vbei-1.0));
2365  argi_vbci = (Vbci/(NRatT*Vtv));
2366  expi_vbci = limexp<AdmsFadType>(argi_vbci);
2367  Iri = ((ISatT*ISRRatT)*(expi_vbci-1.0));
2368  q1z = ((1.0+(qdbe*IVER))+(qdbc*IVEF));
2369  q1 = ((0.5*((sqrt((((q1z-1.0e-4)*(q1z-1.0e-4))+1.0e-8))+q1z)-1.0e-4))+1.0e-4);
2370  q2 = ((Ifi*IIKF)+(Iri*IIKR));
2371  if ((q2>0))
2372  {
2373  if (((model_.QBM)<0.5))
2374  {
2375  qb = (0.5*(q1+pow((pow(q1,(1.0/(model_.NKF)))+(4.0*q2)),(model_.NKF))));
2376  }
2377  else
2378  {
2379  qb = ((0.5*q1)*(1.0+pow((1.0+(4.0*q2)),(model_.NKF))));
2380  }
2381  }
2382  else
2383  {
2384  qb = q1;
2385  }
2386  Itzr = (Iri/qb);
2387  Itzf = (Ifi/qb);
2388  if (((model_.ISP)>0.0))
2389  {
2390  argi_vbep = (Vbep/((model_.NFP)*Vtv));
2391  expi_vbep = limexp<AdmsFadType>(argi_vbep);
2392  argx_vbci = (Vbci/((model_.NFP)*Vtv));
2393  expx_vbci = limexp<AdmsFadType>(argx_vbci);
2394  Ifp = (ISPatT*((((model_.WSP)*expi_vbep)+((1.0-(model_.WSP))*expx_vbci))-1.0));
2395  q2p = (Ifp*IIKP);
2396  qbp = (0.5*(1.0+sqrt((1.0+(4.0*q2p)))));
2397  }
2398  else
2399  {
2400  Ifp = 0.0;
2401  qbp = 1.0;
2402  }
2403  if (((model_.WBE)==1.0))
2404  {
2405  argi_vbei = (Vbei/((model_.NEI)*Vtv));
2406  expi_vbei = limexp<AdmsFadType>(argi_vbei);
2407  argn_vbei = (Vbei/((model_.NEN)*Vtv));
2408  expn_vbei = limexp<AdmsFadType>(argn_vbei);
2409  if (((model_.VBBE)>0.0))
2410  {
2411  argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
2412  expx_vbei = limexp<AdmsFadType>(argx_vbei);
2413  Ibe = (((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-((model_.IBBE)*(expx_vbei-EBBEatT)));
2414  }
2415  else
2416  {
2417  Ibe = ((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)));
2418  }
2419  Ibex = 0.0;
2420  }
2421  else
2422  {
2423  if (((model_.WBE)==0.0))
2424  {
2425  Ibe = 0.0;
2426  argi_vbex = (Vbex/((model_.NEI)*Vtv));
2427  expi_vbex = limexp<AdmsFadType>(argi_vbex);
2428  argn_vbex = (Vbex/((model_.NEN)*Vtv));
2429  expn_vbex = limexp<AdmsFadType>(argn_vbex);
2430  if (((model_.VBBE)>0.0))
2431  {
2432  argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
2433  expx_vbex = limexp<AdmsFadType>(argx_vbex);
2434  Ibex = (((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-((model_.IBBE)*(expx_vbex-EBBEatT)));
2435  }
2436  else
2437  {
2438  Ibex = ((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)));
2439  }
2440  }
2441  else
2442  {
2443  argi_vbei = (Vbei/((model_.NEI)*Vtv));
2444  expi_vbei = limexp<AdmsFadType>(argi_vbei);
2445  argn_vbei = (Vbei/((model_.NEN)*Vtv));
2446  expn_vbei = limexp<AdmsFadType>(argn_vbei);
2447  if (((model_.VBBE)>0.0))
2448  {
2449  argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
2450  expx_vbei = limexp<AdmsFadType>(argx_vbei);
2451  Ibe = ((model_.WBE)*(((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-((model_.IBBE)*(expx_vbei-EBBEatT))));
2452  }
2453  else
2454  {
2455  Ibe = ((model_.WBE)*((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0))));
2456  }
2457  argi_vbex = (Vbex/((model_.NEI)*Vtv));
2458  expi_vbex = limexp<AdmsFadType>(argi_vbex);
2459  argn_vbex = (Vbex/((model_.NEN)*Vtv));
2460  expn_vbex = limexp<AdmsFadType>(argn_vbex);
2461  if (((model_.VBBE)>0.0))
2462  {
2463  argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
2464  expx_vbex = limexp<AdmsFadType>(argx_vbex);
2465  Ibex = ((1.0-(model_.WBE))*(((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-((model_.IBBE)*(expx_vbex-EBBEatT))));
2466  }
2467  else
2468  {
2469  Ibex = ((1.0-(model_.WBE))*((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0))));
2470  }
2471  }
2472  }
2473  argi_vbci = (Vbci/((model_.NCI)*Vtv));
2474  expi_vbci = limexp<AdmsFadType>(argi_vbci);
2475  argn_vbci = (Vbci/((model_.NCN)*Vtv));
2476  expn_vbci = limexp<AdmsFadType>(argn_vbci);
2477  Ibcj = ((IBCIatT*(expi_vbci-1.0))+(IBCNatT*(expn_vbci-1.0)));
2478  if ((((model_.IBEIP)>0.0)||((model_.IBENP)>0.0)))
2479  {
2480  argi_vbep = (Vbep/((model_.NCI)*Vtv));
2481  expi_vbep = limexp<AdmsFadType>(argi_vbep);
2482  argn_vbep = (Vbep/((model_.NCN)*Vtv));
2483  expn_vbep = limexp<AdmsFadType>(argn_vbep);
2484  Ibep = ((IBEIPatT*(expi_vbep-1.0))+(IBENPatT*(expn_vbep-1.0)));
2485  }
2486  else
2487  {
2488  Ibep = 0.0;
2489  }
2490  if (((model_.AVC1)>0.0))
2491  {
2492  vl_vbci = (0.5*(sqrt((((PCatT-Vbci)*(PCatT-Vbci))+0.01))+(PCatT-Vbci)));
2493  avalf_exparg = ((-AVC2atT)*pow(vl_vbci,((model_.MC)-1.0)));
2494  avalf = (((model_.AVC1)*vl_vbci)*limexp<AdmsFadType>(avalf_exparg));
2495  Igc = (((Itzf-Itzr)-Ibcj)*avalf);
2496  }
2497  else
2498  {
2499  Igc = 0.0;
2500  }
2501  Ibc = (Ibcj-Igc);
2502  if (((model_.RCX)>0.0))
2503  {
2504  Ircx = (Vrcx/RCXatT);
2505  }
2506  else
2507  {
2508  Ircx = 0.0;
2509  }
2510  argi_vbci = (Vbci/Vtv);
2511  expi_vbci = limexp<AdmsFadType>(argi_vbci);
2512  argx_vbcx = (Vbcx/Vtv);
2513  expx_vbcx = limexp<AdmsFadType>(argx_vbcx);
2514  Kbci = sqrt((1.0+(GAMMatT*expi_vbci)));
2515  Kbcx = sqrt((1.0+(GAMMatT*expx_vbcx)));
2516  if (((model_.RCI)>0.0))
2517  {
2518  rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
2519  Iohm = ((Vrci+(Vtv*((Kbci-Kbcx)-log(rKp1))))/RCIatT);
2520  derf = (((IVO*RCIatT)*Iohm)/(1.0+(((0.5*IVO)*IHRCF)*sqrt(((Vrci*Vrci)+0.01)))));
2521  Irci = (Iohm/sqrt((1+(derf*derf))));
2522  }
2523  else
2524  {
2525  Irci = 0.0;
2526  }
2527  if (((model_.RBX)>0.0))
2528  {
2529  Irbx = (Vrbx/RBXatT);
2530  }
2531  else
2532  {
2533  Irbx = 0.0;
2534  }
2535  if (((model_.RBI)>0.0))
2536  {
2537  Irbi = ((Vrbi*qb)/RBIatT);
2538  }
2539  else
2540  {
2541  Irbi = 0.0;
2542  }
2543  if (((model_.RE)>0.0))
2544  {
2545  Ire = (Vre/REatT);
2546  }
2547  else
2548  {
2549  Ire = 0.0;
2550  }
2551  if (((model_.RBP)>0.0))
2552  {
2553  Irbp = ((Vrbp*qbp)/RBPatT);
2554  }
2555  else
2556  {
2557  Irbp = 0.0;
2558  }
2559  sgIf = ((Ifi>0.0)?1.0:0.0);
2560  rIf = ((Ifi*sgIf)*IITF);
2561  mIf = (rIf/(rIf+1.0));
2562  tff_exparg = ((Vbci*IVTF)/1.44);
2563  tff = (((model_.TF)*(1.0+((model_.QTF)*q1)))*(1.0+((((model_.XTF)*limexp<AdmsFadType>(tff_exparg))*(slTF+(mIf*mIf)))*sgIf)));
2564  Qbe = (((CJEatT*qdbe)*(model_.WBE))+((tff*Ifi)/qb));
2565  Qbex = ((CJEatT*qdbex)*(1.0-(model_.WBE)));
2566  Qbc = (((CJCatT*qdbc)+((model_.TR)*Iri))+((model_.QCO)*Kbci));
2567  Qbcx = ((model_.QCO)*Kbcx);
2568  Qbep = ((CJEPatT*qdbep)+((model_.TR)*Ifp));
2569  Qbeo = (Vbe*(model_.CBEO));
2570  Qbco = (Vbc*(model_.CBCO));
2571  Ith = (-(((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itzf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp)));
2572  if (((model_.RTH)>0.0))
2573  {
2574  Irth = (Vrth/(model_.RTH));
2575  }
2576  else
2577  {
2578  Irth = 0.0;
2579  }
2580  Qcth = (Vrth*(model_.CTH));
2581  // I(bi,ei) <+ (((M*dtype)*(Ibe+($simparam("gmin")*Vbei))))
2582  {
2583  AdmsFadType contribTemp;
2584  contribTemp= ((M*(model_.dtype))*(Ibe+(getDeviceOptions().gmin*Vbei)));
2585  staticContributions[admsNodeID_bi] += contribTemp;
2586  staticContributions[admsNodeID_ei] -= contribTemp;
2587 
2590  }
2591  // I(bx,ei) <+ (((M*dtype)*(Ibex+($simparam("gmin")*Vbex))))
2592  {
2593  AdmsFadType contribTemp;
2594  contribTemp= ((M*(model_.dtype))*(Ibex+(getDeviceOptions().gmin*Vbex)));
2595  staticContributions[admsNodeID_bx] += contribTemp;
2596  staticContributions[admsNodeID_ei] -= contribTemp;
2597 
2600  }
2601  // I(ci,ei) <+ (((M*dtype)*Itzf))
2602  {
2603  AdmsFadType contribTemp;
2604  contribTemp= ((M*(model_.dtype))*Itzf);
2605  staticContributions[admsNodeID_ci] += contribTemp;
2606  staticContributions[admsNodeID_ei] -= contribTemp;
2607 
2610  }
2611  // I(ei,ci) <+ (((M*dtype)*Itzr))
2612  {
2613  AdmsFadType contribTemp;
2614  contribTemp= ((M*(model_.dtype))*Itzr);
2615  staticContributions[admsNodeID_ei] += contribTemp;
2616  staticContributions[admsNodeID_ci] -= contribTemp;
2617 
2620  }
2621  // I(bi,ci) <+ (((M*dtype)*(Ibc+($simparam("gmin")*Vbci))))
2622  {
2623  AdmsFadType contribTemp;
2624  contribTemp= ((M*(model_.dtype))*(Ibc+(getDeviceOptions().gmin*Vbci)));
2625  staticContributions[admsNodeID_bi] += contribTemp;
2626  staticContributions[admsNodeID_ci] -= contribTemp;
2627 
2630  }
2631  // I(bx,bp) <+ (((M*dtype)*(Ibep+($simparam("gmin")*Vbep))))
2632  {
2633  AdmsFadType contribTemp;
2634  contribTemp= ((M*(model_.dtype))*(Ibep+(getDeviceOptions().gmin*Vbep)));
2635  staticContributions[admsNodeID_bx] += contribTemp;
2636  staticContributions[admsNodeID_bp] -= contribTemp;
2637 
2640  }
2641  if (((model_.RCX)>0))
2642  {
2643  // I(c,cx) <+ (((M*dtype)*Ircx))
2644  {
2645  AdmsFadType contribTemp;
2646  contribTemp= ((M*(model_.dtype))*Ircx);
2647  staticContributions[admsNodeID_c] += contribTemp;
2648  staticContributions[admsNodeID_cx] -= contribTemp;
2649 
2652  }
2653  }
2654  else
2655  {
2656  // V(c,cx) <+ (0.0)
2657  // do nothing at all
2658  }
2659  // I(cx,ci) <+ (((M*dtype)*(Irci+($simparam("gmin")*Vrci))))
2660  {
2661  AdmsFadType contribTemp;
2662  contribTemp= ((M*(model_.dtype))*(Irci+(getDeviceOptions().gmin*Vrci)));
2663  staticContributions[admsNodeID_cx] += contribTemp;
2664  staticContributions[admsNodeID_ci] -= contribTemp;
2665 
2668  }
2669  if (((model_.RBX)>0))
2670  {
2671  // I(b,bx) <+ (((M*dtype)*Irbx))
2672  {
2673  AdmsFadType contribTemp;
2674  contribTemp= ((M*(model_.dtype))*Irbx);
2675  staticContributions[admsNodeID_b] += contribTemp;
2676  staticContributions[admsNodeID_bx] -= contribTemp;
2677 
2680  }
2681  }
2682  else
2683  {
2684  // V(b,bx) <+ (0.0)
2685  // do nothing at all
2686  }
2687  // I(bx,bi) <+ (((M*dtype)*Irbi))
2688  {
2689  AdmsFadType contribTemp;
2690  contribTemp= ((M*(model_.dtype))*Irbi);
2691  staticContributions[admsNodeID_bx] += contribTemp;
2692  staticContributions[admsNodeID_bi] -= contribTemp;
2693 
2696  }
2697  if (((model_.RE)>0))
2698  {
2699  // I(e,ei) <+ (((M*dtype)*Ire))
2700  {
2701  AdmsFadType contribTemp;
2702  contribTemp= ((M*(model_.dtype))*Ire);
2703  staticContributions[admsNodeID_e] += contribTemp;
2704  staticContributions[admsNodeID_ei] -= contribTemp;
2705 
2708  }
2709  }
2710  else
2711  {
2712  // V(e,ei) <+ (0.0)
2713  // do nothing at all
2714  }
2715  // I(bp,cx) <+ (((M*dtype)*Irbp))
2716  {
2717  AdmsFadType contribTemp;
2718  contribTemp= ((M*(model_.dtype))*Irbp);
2719  staticContributions[admsNodeID_bp] += contribTemp;
2720  staticContributions[admsNodeID_cx] -= contribTemp;
2721 
2724  }
2725  // I(bi,ei) <+ (((M*dtype)*ddt(Qbe)))
2726  {
2727  AdmsFadType contribTemp;
2728  contribTemp= ((M*(model_.dtype))*(Qbe));
2729  dynamicContributions[admsNodeID_bi] += contribTemp;
2730  dynamicContributions[admsNodeID_ei] -= contribTemp;
2731 
2734  }
2735  // I(bx,ei) <+ (((M*dtype)*ddt(Qbex)))
2736  {
2737  AdmsFadType contribTemp;
2738  contribTemp= ((M*(model_.dtype))*(Qbex));
2739  dynamicContributions[admsNodeID_bx] += contribTemp;
2740  dynamicContributions[admsNodeID_ei] -= contribTemp;
2741 
2744  }
2745  // I(bi,ci) <+ (((M*dtype)*ddt(Qbc)))
2746  {
2747  AdmsFadType contribTemp;
2748  contribTemp= ((M*(model_.dtype))*(Qbc));
2749  dynamicContributions[admsNodeID_bi] += contribTemp;
2750  dynamicContributions[admsNodeID_ci] -= contribTemp;
2751 
2754  }
2755  // I(bi,cx) <+ (((M*dtype)*ddt(Qbcx)))
2756  {
2757  AdmsFadType contribTemp;
2758  contribTemp= ((M*(model_.dtype))*(Qbcx));
2759  dynamicContributions[admsNodeID_bi] += contribTemp;
2760  dynamicContributions[admsNodeID_cx] -= contribTemp;
2761 
2764  }
2765  // I(bx,bp) <+ (((M*dtype)*ddt(Qbep)))
2766  {
2767  AdmsFadType contribTemp;
2768  contribTemp= ((M*(model_.dtype))*(Qbep));
2769  dynamicContributions[admsNodeID_bx] += contribTemp;
2770  dynamicContributions[admsNodeID_bp] -= contribTemp;
2771 
2774  }
2775  // I(b,e) <+ (((M*dtype)*ddt(Qbeo)))
2776  {
2777  AdmsFadType contribTemp;
2778  contribTemp= ((M*(model_.dtype))*(Qbeo));
2779  dynamicContributions[admsNodeID_b] += contribTemp;
2780  dynamicContributions[admsNodeID_e] -= contribTemp;
2781 
2784  }
2785  // I(b,c) <+ (((M*dtype)*ddt(Qbco)))
2786  dynamicContributions[admsNodeID_b] += ((M*(model_.dtype))*(Qbco));
2787  dynamicContributions[admsNodeID_c] -= ((M*(model_.dtype))*(Qbco));
2788  // I(dt,GND) <+ (Irth)
2789  {
2790  AdmsFadType contribTemp;
2791  contribTemp= Irth;
2792  staticContributions[admsNodeID_dt] += contribTemp;
2793 
2795  }
2796  // I(dt,GND) <+ (Ith)
2797  {
2798  AdmsFadType contribTemp;
2799  contribTemp= Ith;
2800  staticContributions[admsNodeID_dt] += contribTemp;
2801 
2803  }
2804  // I(dt,GND) <+ (ddt(Qcth))
2805  {
2806  AdmsFadType contribTemp;
2807  contribTemp= (Qcth);
2808  dynamicContributions[admsNodeID_dt] += contribTemp;
2809 
2811  }
2812 
2813 
2814  // -- endcode converted from analog/code block
2815  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
2816  {
2817  Xyce::dout() << " probeVars[admsProbeID_V_ci_ei] = "
2818  <<probeVars[admsProbeID_V_ci_ei].val() << std::endl;
2819  Xyce::dout() << " probeVars[admsProbeID_V_b_c] = "
2820  <<probeVars[admsProbeID_V_b_c].val() << std::endl;
2821  Xyce::dout() << " probeVars[admsProbeID_V_bp_cx] = "
2822  <<probeVars[admsProbeID_V_bp_cx].val() << std::endl;
2823  Xyce::dout() << " probeVars[admsProbeID_V_e_ei] = "
2824  <<probeVars[admsProbeID_V_e_ei].val() << std::endl;
2825  Xyce::dout() << " probeVars[admsProbeID_V_b_bx] = "
2826  <<probeVars[admsProbeID_V_b_bx].val() << std::endl;
2827  Xyce::dout() << " probeVars[admsProbeID_V_bx_bi] = "
2828  <<probeVars[admsProbeID_V_bx_bi].val() << std::endl;
2829  Xyce::dout() << " probeVars[admsProbeID_V_cx_ci] = "
2830  <<probeVars[admsProbeID_V_cx_ci].val() << std::endl;
2831  Xyce::dout() << " probeVars[admsProbeID_V_c_cx] = "
2832  <<probeVars[admsProbeID_V_c_cx].val() << std::endl;
2833  Xyce::dout() << " probeVars[admsProbeID_V_b_e] = "
2834  <<probeVars[admsProbeID_V_b_e].val() << std::endl;
2835  Xyce::dout() << " probeVars[admsProbeID_V_dt_GND] = "
2836  <<probeVars[admsProbeID_V_dt_GND].val() << std::endl;
2837  Xyce::dout() << " probeVars[admsProbeID_V_bx_bp] = "
2838  <<probeVars[admsProbeID_V_bx_bp].val() << std::endl;
2839  Xyce::dout() << " probeVars[admsProbeID_V_bi_cx] = "
2840  <<probeVars[admsProbeID_V_bi_cx].val() << std::endl;
2841  Xyce::dout() << " probeVars[admsProbeID_V_bx_ei] = "
2842  <<probeVars[admsProbeID_V_bx_ei].val() << std::endl;
2843  Xyce::dout() << " probeVars[admsProbeID_V_bi_ci] = "
2844  <<probeVars[admsProbeID_V_bi_ci].val() << std::endl;
2845  Xyce::dout() << " probeVars[admsProbeID_V_bi_ei] = "
2846  <<probeVars[admsProbeID_V_bi_ei].val() << std::endl;
2847  Xyce::dout() << " staticContributions[admsNodeID_c] = "
2848  <<staticContributions[admsNodeID_c].val() << std::endl;
2849  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
2850  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_c) << std::endl;
2851  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
2852  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) << std::endl;
2853  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) << std::endl;
2854  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
2855  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
2856  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) << std::endl;
2857  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_b_e) << std::endl;
2858  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_dt_GND) << std::endl;
2859  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bp) << std::endl;
2860  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_cx) << std::endl;
2861  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_ei) << std::endl;
2862  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) << std::endl;
2863  Xyce::dout() << " staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_c].dx(admsProbeID_V_bi_ei) << std::endl;
2864  Xyce::dout() << " dynamicContributions[admsNodeID_c] = "
2865  <<dynamicContributions[admsNodeID_c].val() << std::endl;
2866  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
2867  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c) << std::endl;
2868  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
2869  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) << std::endl;
2870  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) << std::endl;
2871  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
2872  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
2873  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) << std::endl;
2874  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_e) << std::endl;
2875  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_dt_GND) << std::endl;
2876  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bp) << std::endl;
2877  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_cx) << std::endl;
2878  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_ei) << std::endl;
2879  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ci) << std::endl;
2880  Xyce::dout() << " dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bi_ei) << std::endl;
2881  Xyce::dout() << " Jdxp_static[admsNodeID_c] = "
2882  <<Jdxp_static[admsNodeID_c] << std::endl;
2883  Xyce::dout() << " Jdxp_dynamic[admsNodeID_c] = "
2884  <<Jdxp_dynamic[admsNodeID_c] << std::endl;
2885  Xyce::dout() << " staticContributions[admsNodeID_b] = "
2886  <<staticContributions[admsNodeID_b].val() << std::endl;
2887  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
2888  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_c) << std::endl;
2889  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
2890  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) << std::endl;
2891  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) << std::endl;
2892  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
2893  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
2894  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) << std::endl;
2895  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_b_e) << std::endl;
2896  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_dt_GND) << std::endl;
2897  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bp) << std::endl;
2898  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_cx) << std::endl;
2899  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_ei) << std::endl;
2900  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) << std::endl;
2901  Xyce::dout() << " staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_b].dx(admsProbeID_V_bi_ei) << std::endl;
2902  Xyce::dout() << " dynamicContributions[admsNodeID_b] = "
2903  <<dynamicContributions[admsNodeID_b].val() << std::endl;
2904  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
2905  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) << std::endl;
2906  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
2907  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) << std::endl;
2908  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) << std::endl;
2909  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
2910  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
2911  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) << std::endl;
2912  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e) << std::endl;
2913  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_dt_GND) << std::endl;
2914  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bp) << std::endl;
2915  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_cx) << std::endl;
2916  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_ei) << std::endl;
2917  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ci) << std::endl;
2918  Xyce::dout() << " dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bi_ei) << std::endl;
2919  Xyce::dout() << " Jdxp_static[admsNodeID_b] = "
2920  <<Jdxp_static[admsNodeID_b] << std::endl;
2921  Xyce::dout() << " Jdxp_dynamic[admsNodeID_b] = "
2922  <<Jdxp_dynamic[admsNodeID_b] << std::endl;
2923  Xyce::dout() << " staticContributions[admsNodeID_e] = "
2924  <<staticContributions[admsNodeID_e].val() << std::endl;
2925  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
2926  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_c) << std::endl;
2927  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
2928  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) << std::endl;
2929  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) << std::endl;
2930  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
2931  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
2932  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) << std::endl;
2933  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_b_e) << std::endl;
2934  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_dt_GND) << std::endl;
2935  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bp) << std::endl;
2936  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_cx) << std::endl;
2937  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_ei) << std::endl;
2938  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) << std::endl;
2939  Xyce::dout() << " staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_e].dx(admsProbeID_V_bi_ei) << std::endl;
2940  Xyce::dout() << " dynamicContributions[admsNodeID_e] = "
2941  <<dynamicContributions[admsNodeID_e].val() << std::endl;
2942  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
2943  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_c) << std::endl;
2944  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
2945  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) << std::endl;
2946  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) << std::endl;
2947  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
2948  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
2949  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) << std::endl;
2950  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e) << std::endl;
2951  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_dt_GND) << std::endl;
2952  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bp) << std::endl;
2953  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_cx) << std::endl;
2954  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_ei) << std::endl;
2955  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ci) << std::endl;
2956  Xyce::dout() << " dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bi_ei) << std::endl;
2957  Xyce::dout() << " Jdxp_static[admsNodeID_e] = "
2958  <<Jdxp_static[admsNodeID_e] << std::endl;
2959  Xyce::dout() << " Jdxp_dynamic[admsNodeID_e] = "
2960  <<Jdxp_dynamic[admsNodeID_e] << std::endl;
2961  Xyce::dout() << " staticContributions[admsNodeID_dt] = "
2962  <<staticContributions[admsNodeID_dt].val() << std::endl;
2963  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) << std::endl;
2964  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_c) << std::endl;
2965  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) << std::endl;
2966  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei) << std::endl;
2967  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx) << std::endl;
2968  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) << std::endl;
2969  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) << std::endl;
2970  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx) << std::endl;
2971  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_e) << std::endl;
2972  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_dt_GND) << std::endl;
2973  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) << std::endl;
2974  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_cx) << std::endl;
2975  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_ei) << std::endl;
2976  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ci) << std::endl;
2977  Xyce::dout() << " staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ei) << std::endl;
2978  Xyce::dout() << " dynamicContributions[admsNodeID_dt] = "
2979  <<dynamicContributions[admsNodeID_dt].val() << std::endl;
2980  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) << std::endl;
2981  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_c) << std::endl;
2982  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) << std::endl;
2983  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei) << std::endl;
2984  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx) << std::endl;
2985  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) << std::endl;
2986  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) << std::endl;
2987  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx) << std::endl;
2988  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_b_e) << std::endl;
2989  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_dt_GND) << std::endl;
2990  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) << std::endl;
2991  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_cx) << std::endl;
2992  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bx_ei) << std::endl;
2993  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ci) << std::endl;
2994  Xyce::dout() << " dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_bi_ei) << std::endl;
2995  Xyce::dout() << " Jdxp_static[admsNodeID_dt] = "
2996  <<Jdxp_static[admsNodeID_dt] << std::endl;
2997  Xyce::dout() << " Jdxp_dynamic[admsNodeID_dt] = "
2998  <<Jdxp_dynamic[admsNodeID_dt] << std::endl;
2999  Xyce::dout() << " staticContributions[admsNodeID_cx] = "
3000  <<staticContributions[admsNodeID_cx].val() << std::endl;
3001  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
3002  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) << std::endl;
3003  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) << std::endl;
3004  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_e_ei) << std::endl;
3005  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_bx) << std::endl;
3006  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) << std::endl;
3007  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
3008  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx) << std::endl;
3009  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_e) << std::endl;
3010  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_dt_GND) << std::endl;
3011  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp) << std::endl;
3012  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx) << std::endl;
3013  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_ei) << std::endl;
3014  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) << std::endl;
3015  Xyce::dout() << " staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei) << std::endl;
3016  Xyce::dout() << " dynamicContributions[admsNodeID_cx] = "
3017  <<dynamicContributions[admsNodeID_cx].val() << std::endl;
3018  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
3019  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_c) << std::endl;
3020  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) << std::endl;
3021  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_e_ei) << std::endl;
3022  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_bx) << std::endl;
3023  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) << std::endl;
3024  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
3025  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx) << std::endl;
3026  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_b_e) << std::endl;
3027  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_dt_GND) << std::endl;
3028  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp) << std::endl;
3029  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx) << std::endl;
3030  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bx_ei) << std::endl;
3031  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) << std::endl;
3032  Xyce::dout() << " dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ei) << std::endl;
3033  Xyce::dout() << " Jdxp_static[admsNodeID_cx] = "
3034  <<Jdxp_static[admsNodeID_cx] << std::endl;
3035  Xyce::dout() << " Jdxp_dynamic[admsNodeID_cx] = "
3036  <<Jdxp_dynamic[admsNodeID_cx] << std::endl;
3037  Xyce::dout() << " staticContributions[admsNodeID_ci] = "
3038  <<staticContributions[admsNodeID_ci].val() << std::endl;
3039  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
3040  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) << std::endl;
3041  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) << std::endl;
3042  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_e_ei) << std::endl;
3043  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_bx) << std::endl;
3044  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) << std::endl;
3045  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
3046  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_c_cx) << std::endl;
3047  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_e) << std::endl;
3048  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_dt_GND) << std::endl;
3049  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp) << std::endl;
3050  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx) << std::endl;
3051  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) << std::endl;
3052  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) << std::endl;
3053  Xyce::dout() << " staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei) << std::endl;
3054  Xyce::dout() << " dynamicContributions[admsNodeID_ci] = "
3055  <<dynamicContributions[admsNodeID_ci].val() << std::endl;
3056  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
3057  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_c) << std::endl;
3058  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) << std::endl;
3059  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_e_ei) << std::endl;
3060  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_bx) << std::endl;
3061  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) << std::endl;
3062  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
3063  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_c_cx) << std::endl;
3064  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_b_e) << std::endl;
3065  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_dt_GND) << std::endl;
3066  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bp) << std::endl;
3067  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx) << std::endl;
3068  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bx_ei) << std::endl;
3069  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci) << std::endl;
3070  Xyce::dout() << " dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei) << std::endl;
3071  Xyce::dout() << " Jdxp_static[admsNodeID_ci] = "
3072  <<Jdxp_static[admsNodeID_ci] << std::endl;
3073  Xyce::dout() << " Jdxp_dynamic[admsNodeID_ci] = "
3074  <<Jdxp_dynamic[admsNodeID_ci] << std::endl;
3075  Xyce::dout() << " staticContributions[admsNodeID_bx] = "
3076  <<staticContributions[admsNodeID_bx].val() << std::endl;
3077  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) << std::endl;
3078  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_c) << std::endl;
3079  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) << std::endl;
3080  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_e_ei) << std::endl;
3081  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx) << std::endl;
3082  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) << std::endl;
3083  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) << std::endl;
3084  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx) << std::endl;
3085  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_e) << std::endl;
3086  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_dt_GND) << std::endl;
3087  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) << std::endl;
3088  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_cx) << std::endl;
3089  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei) << std::endl;
3090  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci) << std::endl;
3091  Xyce::dout() << " staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) << std::endl;
3092  Xyce::dout() << " dynamicContributions[admsNodeID_bx] = "
3093  <<dynamicContributions[admsNodeID_bx].val() << std::endl;
3094  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) << std::endl;
3095  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_c) << std::endl;
3096  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) << std::endl;
3097  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_e_ei) << std::endl;
3098  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx) << std::endl;
3099  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) << std::endl;
3100  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) << std::endl;
3101  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_c_cx) << std::endl;
3102  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_b_e) << std::endl;
3103  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_dt_GND) << std::endl;
3104  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) << std::endl;
3105  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_cx) << std::endl;
3106  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei) << std::endl;
3107  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci) << std::endl;
3108  Xyce::dout() << " dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) << std::endl;
3109  Xyce::dout() << " Jdxp_static[admsNodeID_bx] = "
3110  <<Jdxp_static[admsNodeID_bx] << std::endl;
3111  Xyce::dout() << " Jdxp_dynamic[admsNodeID_bx] = "
3112  <<Jdxp_dynamic[admsNodeID_bx] << std::endl;
3113  Xyce::dout() << " staticContributions[admsNodeID_bi] = "
3114  <<staticContributions[admsNodeID_bi].val() << std::endl;
3115  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
3116  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) << std::endl;
3117  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) << std::endl;
3118  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_e_ei) << std::endl;
3119  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_bx) << std::endl;
3120  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) << std::endl;
3121  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
3122  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_c_cx) << std::endl;
3123  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_e) << std::endl;
3124  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_dt_GND) << std::endl;
3125  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp) << std::endl;
3126  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx) << std::endl;
3127  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) << std::endl;
3128  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) << std::endl;
3129  Xyce::dout() << " staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei) << std::endl;
3130  Xyce::dout() << " dynamicContributions[admsNodeID_bi] = "
3131  <<dynamicContributions[admsNodeID_bi].val() << std::endl;
3132  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
3133  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_c) << std::endl;
3134  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) << std::endl;
3135  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_e_ei) << std::endl;
3136  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_bx) << std::endl;
3137  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) << std::endl;
3138  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
3139  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_c_cx) << std::endl;
3140  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_b_e) << std::endl;
3141  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_dt_GND) << std::endl;
3142  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bp) << std::endl;
3143  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx) << std::endl;
3144  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bx_ei) << std::endl;
3145  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci) << std::endl;
3146  Xyce::dout() << " dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei) << std::endl;
3147  Xyce::dout() << " Jdxp_static[admsNodeID_bi] = "
3148  <<Jdxp_static[admsNodeID_bi] << std::endl;
3149  Xyce::dout() << " Jdxp_dynamic[admsNodeID_bi] = "
3150  <<Jdxp_dynamic[admsNodeID_bi] << std::endl;
3151  Xyce::dout() << " staticContributions[admsNodeID_ei] = "
3152  <<staticContributions[admsNodeID_ei].val() << std::endl;
3153  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
3154  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) << std::endl;
3155  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) << std::endl;
3156  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei) << std::endl;
3157  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_bx) << std::endl;
3158  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) << std::endl;
3159  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
3160  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_c_cx) << std::endl;
3161  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_e) << std::endl;
3162  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_dt_GND) << std::endl;
3163  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp) << std::endl;
3164  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx) << std::endl;
3165  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) << std::endl;
3166  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) << std::endl;
3167  Xyce::dout() << " staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) << std::endl;
3168  Xyce::dout() << " dynamicContributions[admsNodeID_ei] = "
3169  <<dynamicContributions[admsNodeID_ei].val() << std::endl;
3170  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
3171  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_c) << std::endl;
3172  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) << std::endl;
3173  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei) << std::endl;
3174  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_bx) << std::endl;
3175  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) << std::endl;
3176  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
3177  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_c_cx) << std::endl;
3178  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_b_e) << std::endl;
3179  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_dt_GND) << std::endl;
3180  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bp) << std::endl;
3181  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_cx) << std::endl;
3182  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) << std::endl;
3183  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) << std::endl;
3184  Xyce::dout() << " dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) << std::endl;
3185  Xyce::dout() << " Jdxp_static[admsNodeID_ei] = "
3186  <<Jdxp_static[admsNodeID_ei] << std::endl;
3187  Xyce::dout() << " Jdxp_dynamic[admsNodeID_ei] = "
3188  <<Jdxp_dynamic[admsNodeID_ei] << std::endl;
3189  Xyce::dout() << " staticContributions[admsNodeID_bp] = "
3190  <<staticContributions[admsNodeID_bp].val() << std::endl;
3191  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) << std::endl;
3192  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_c) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_c) << std::endl;
3193  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) << std::endl;
3194  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_e_ei) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_e_ei) << std::endl;
3195  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_bx) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_bx) << std::endl;
3196  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) << std::endl;
3197  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) << std::endl;
3198  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_c_cx) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_c_cx) << std::endl;
3199  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_e) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_b_e) << std::endl;
3200  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_dt_GND) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_dt_GND) << std::endl;
3201  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp) << std::endl;
3202  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_cx) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_cx) << std::endl;
3203  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) << std::endl;
3204  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) << std::endl;
3205  Xyce::dout() << " staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei) = " <<staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei) << std::endl;
3206  Xyce::dout() << " dynamicContributions[admsNodeID_bp] = "
3207  <<dynamicContributions[admsNodeID_bp].val() << std::endl;
3208  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) << std::endl;
3209  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_c) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_c) << std::endl;
3210  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) << std::endl;
3211  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_e_ei) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_e_ei) << std::endl;
3212  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_bx) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_bx) << std::endl;
3213  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) << std::endl;
3214  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) << std::endl;
3215  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_c_cx) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_c_cx) << std::endl;
3216  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_e) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_b_e) << std::endl;
3217  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_dt_GND) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_dt_GND) << std::endl;
3218  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp) << std::endl;
3219  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_cx) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_cx) << std::endl;
3220  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_ei) << std::endl;
3221  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci) << std::endl;
3222  Xyce::dout() << " dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei) = " <<dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ei) << std::endl;
3223  Xyce::dout() << " Jdxp_static[admsNodeID_bp] = "
3224  <<Jdxp_static[admsNodeID_bp] << std::endl;
3225  Xyce::dout() << " Jdxp_dynamic[admsNodeID_bp] = "
3226  <<Jdxp_dynamic[admsNodeID_bp] << std::endl;
3227 
3228  if (!origFlag)
3229  {
3230  Xyce::dout() << "This step was limited by this device." << std::endl;
3231  Xyce::dout() << " Vbei_limited = " << Vbei_limited << " _orig = " << Vbei_orig << " diff = " << Vbei_limited - Vbei_orig << std::endl;
3232  Xyce::dout() << " Vbci_limited = " << Vbci_limited << " _orig = " << Vbci_orig << " diff = " << Vbci_limited - Vbci_orig << std::endl;
3233  Xyce::dout() << " Vbex_limited = " << Vbex_limited << " _orig = " << Vbex_orig << " diff = " << Vbex_limited - Vbex_orig << std::endl;
3234  Xyce::dout() << " Vbcx_limited = " << Vbcx_limited << " _orig = " << Vbcx_orig << " diff = " << Vbcx_limited - Vbcx_orig << std::endl;
3235  Xyce::dout() << " Vbep_limited = " << Vbep_limited << " _orig = " << Vbep_orig << " diff = " << Vbep_limited - Vbep_orig << std::endl;
3236  Xyce::dout() << " Vrth_limited = " << Vrth_limited << " _orig = " << Vrth_orig << " diff = " << Vrth_limited - Vrth_orig << std::endl;
3237  }
3238  }
3239 
3240  return true;
3241 }
3242 
3243 //-----------------------------------------------------------------------------
3244 // Function : Instance::loadDAEdFdx
3245 // Purpose :
3246 // Special Notes : Load the dFdx ("static jacobian") matrix
3247 // Scope : public
3248 // Creator : admsXml
3249 // Creation Date :
3250 //-----------------------------------------------------------------------------
3252 {
3253  bool bsuccess = true;
3254  Linear::Matrix * dFdxMatPtr = extData.dFdxMatrixPtr;
3255 
3256  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3257  {
3258  Xyce::dout() << subsection_divider << std::endl;
3259  Xyce::dout() << "ADMSvbic::Instance::loadDAEdFdx (" << getName() << "):" << std::endl;
3260  }
3262 
3263 
3264  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3265  {
3267  }
3268  (*f_bi_Equ_ei_Node_Ptr) += -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei);
3269 
3270 
3271  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3272  {
3273  Xyce::dout() << " (*f_bi_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei)<< std::endl;
3274  }
3276 
3277 
3278  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3279  {
3280  Xyce::dout() << " (*f_ei_Equ_bi_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci) +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei)<< std::endl;
3281  }
3283 
3284 
3285  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3286  {
3288  }
3289  (*f_bi_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_bi].dx(admsProbeID_V_dt_GND);
3290 
3291 
3292  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3293  {
3294  Xyce::dout() << " (*f_bi_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_bi].dx(admsProbeID_V_dt_GND)<< std::endl;
3295  }
3296  (*f_ei_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_ei].dx(admsProbeID_V_dt_GND);
3297 
3298 
3299  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3300  {
3301  Xyce::dout() << " (*f_ei_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_dt_GND)<< std::endl;
3302  }
3304 
3305 
3306  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3307  {
3309  }
3311 
3312 
3313  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3314  {
3315  Xyce::dout() << " (*f_bx_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ei) -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei)<< std::endl;
3316  }
3317  (*f_ei_Equ_bx_Node_Ptr) += +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei);
3318 
3319 
3320  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3321  {
3322  Xyce::dout() << " (*f_ei_Equ_bx_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei)<< std::endl;
3323  }
3324  (*f_bx_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_bx].dx(admsProbeID_V_dt_GND);
3325 
3326 
3327  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3328  {
3329  Xyce::dout() << " (*f_bx_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_bx].dx(admsProbeID_V_dt_GND)<< std::endl;
3330  }
3332 
3333 
3334  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3335  {
3337  }
3339 
3340 
3341  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3342  {
3343  Xyce::dout() << " (*f_ci_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci)<< std::endl;
3344  }
3345  (*f_ei_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci);
3346 
3347 
3348  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3349  {
3350  Xyce::dout() << " (*f_ei_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci)<< std::endl;
3351  }
3352  (*f_ci_Equ_ei_Node_Ptr) += -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei);
3353 
3354 
3355  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3356  {
3357  Xyce::dout() << " (*f_ci_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ei)<< std::endl;
3358  }
3359  (*f_ci_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_ci].dx(admsProbeID_V_dt_GND);
3360 
3361 
3362  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3363  {
3364  Xyce::dout() << " (*f_ci_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_V_dt_GND)<< std::endl;
3365  }
3366  (*f_bi_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci);
3367 
3368 
3369  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3370  {
3371  Xyce::dout() << " (*f_bi_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci)<< std::endl;
3372  }
3373  (*f_bx_Equ_bp_Node_Ptr) += -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp);
3374 
3375 
3376  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3377  {
3378  Xyce::dout() << " (*f_bx_Equ_bp_Node_Ptr) += " << -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp)<< std::endl;
3379  }
3380  (*f_bp_Equ_bx_Node_Ptr) += +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp);
3381 
3382 
3383  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3384  {
3385  Xyce::dout() << " (*f_bp_Equ_bx_Node_Ptr) += " << +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp)<< std::endl;
3386  }
3388 
3389 
3390  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3391  {
3392  Xyce::dout() << " (*f_bp_Equ_bp_Node_Ptr) += " << +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp)<< std::endl;
3393  }
3394  (*f_bp_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_bp].dx(admsProbeID_V_dt_GND);
3395 
3396 
3397  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3398  {
3399  Xyce::dout() << " (*f_bp_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_bp].dx(admsProbeID_V_dt_GND)<< std::endl;
3400  }
3401  (*f_c_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_c].dx(admsProbeID_V_dt_GND);
3402 
3403 
3404  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3405  {
3406  Xyce::dout() << " (*f_c_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_c].dx(admsProbeID_V_dt_GND)<< std::endl;
3407  }
3408  (*f_cx_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_cx].dx(admsProbeID_V_dt_GND);
3409 
3410 
3411  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3412  {
3413  Xyce::dout() << " (*f_cx_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_V_dt_GND)<< std::endl;
3414  }
3415  (*f_c_Equ_c_Node_Ptr) += +staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx);
3416 
3417 
3418  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3419  {
3420  Xyce::dout() << " (*f_c_Equ_c_Node_Ptr) += " << +staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx)<< std::endl;
3421  }
3422  (*f_c_Equ_cx_Node_Ptr) += -staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx);
3423 
3424 
3425  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3426  {
3427  Xyce::dout() << " (*f_c_Equ_cx_Node_Ptr) += " << -staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx)<< std::endl;
3428  }
3429  (*f_cx_Equ_c_Node_Ptr) += +staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx);
3430 
3431 
3432  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3433  {
3434  Xyce::dout() << " (*f_cx_Equ_c_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_cx)<< std::endl;
3435  }
3437 
3438 
3439  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3440  {
3442  }
3444 
3445 
3446  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3447  {
3448  Xyce::dout() << " (*f_cx_Equ_bi_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci) +staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx)<< std::endl;
3449  }
3451 
3452 
3453  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3454  {
3455  Xyce::dout() << " (*f_ci_Equ_cx_Node_Ptr) += " << +staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) -staticContributions[admsNodeID_ci].dx(admsProbeID_V_bi_cx)<< std::endl;
3456  }
3458 
3459 
3460  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3461  {
3462  Xyce::dout() << " (*f_cx_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) -staticContributions[admsNodeID_cx].dx(admsProbeID_V_bi_ci)<< std::endl;
3463  }
3464  (*f_b_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_b].dx(admsProbeID_V_dt_GND);
3465 
3466 
3467  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3468  {
3469  Xyce::dout() << " (*f_b_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_b].dx(admsProbeID_V_dt_GND)<< std::endl;
3470  }
3471  (*f_b_Equ_b_Node_Ptr) += +staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx);
3472 
3473 
3474  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3475  {
3476  Xyce::dout() << " (*f_b_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx)<< std::endl;
3477  }
3478  (*f_b_Equ_bx_Node_Ptr) += -staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx);
3479 
3480 
3481  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3482  {
3483  Xyce::dout() << " (*f_b_Equ_bx_Node_Ptr) += " << -staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx)<< std::endl;
3484  }
3485  (*f_bx_Equ_b_Node_Ptr) += +staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx);
3486 
3487 
3488  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3489  {
3490  Xyce::dout() << " (*f_bx_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_bx].dx(admsProbeID_V_b_bx)<< std::endl;
3491  }
3493 
3494 
3495  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3496  {
3498  }
3499  (*f_bx_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci);
3500 
3501 
3502  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3503  {
3504  Xyce::dout() << " (*f_bx_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci)<< std::endl;
3505  }
3506  (*f_bi_Equ_bx_Node_Ptr) += +staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi);
3507 
3508 
3509  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3510  {
3511  Xyce::dout() << " (*f_bi_Equ_bx_Node_Ptr) += " << +staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi)<< std::endl;
3512  }
3513  (*f_e_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_e].dx(admsProbeID_V_dt_GND);
3514 
3515 
3516  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3517  {
3518  Xyce::dout() << " (*f_e_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_e].dx(admsProbeID_V_dt_GND)<< std::endl;
3519  }
3520  (*f_e_Equ_e_Node_Ptr) += +staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei);
3521 
3522 
3523  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3524  {
3525  Xyce::dout() << " (*f_e_Equ_e_Node_Ptr) += " << +staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei)<< std::endl;
3526  }
3527  (*f_e_Equ_ei_Node_Ptr) += -staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei);
3528 
3529 
3530  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3531  {
3532  Xyce::dout() << " (*f_e_Equ_ei_Node_Ptr) += " << -staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei)<< std::endl;
3533  }
3534  (*f_ei_Equ_e_Node_Ptr) += +staticContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei);
3535 
3536 
3537  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3538  {
3539  Xyce::dout() << " (*f_ei_Equ_e_Node_Ptr) += " << +staticContributions[admsNodeID_ei].dx(admsProbeID_V_e_ei)<< std::endl;
3540  }
3541  (*f_bp_Equ_bi_Node_Ptr) += +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci);
3542 
3543 
3544  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3545  {
3546  Xyce::dout() << " (*f_bp_Equ_bi_Node_Ptr) += " << +staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci)<< std::endl;
3547  }
3548  (*f_bp_Equ_ci_Node_Ptr) += -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci);
3549 
3550 
3551  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3552  {
3553  Xyce::dout() << " (*f_bp_Equ_ci_Node_Ptr) += " << -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci)<< std::endl;
3554  }
3555  (*f_cx_Equ_bx_Node_Ptr) += +staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp);
3556 
3557 
3558  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3559  {
3560  Xyce::dout() << " (*f_cx_Equ_bx_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp)<< std::endl;
3561  }
3563 
3564 
3565  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3566  {
3567  Xyce::dout() << " (*f_cx_Equ_bp_Node_Ptr) += " << +staticContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) -staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bp)<< std::endl;
3568  }
3569  (*f_bp_Equ_cx_Node_Ptr) += -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx);
3570 
3571 
3572  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3573  {
3574  Xyce::dout() << " (*f_bp_Equ_cx_Node_Ptr) += " << -staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx)<< std::endl;
3575  }
3576  (*f_dt_Equ_dt_Node_Ptr) += +staticContributions[admsNodeID_dt].dx(admsProbeID_V_dt_GND);
3577 
3578 
3579  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3580  {
3581  Xyce::dout() << " (*f_dt_Equ_dt_Node_Ptr) += " << +staticContributions[admsNodeID_dt].dx(admsProbeID_V_dt_GND)<< std::endl;
3582  }
3584 
3585 
3586  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3587  {
3588  Xyce::dout() << " (*f_dt_Equ_bp_Node_Ptr) += " << -staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bp) +staticContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx)<< std::endl;
3589  }
3591 
3592 
3593  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3594  {
3596  }
3597  (*f_dt_Equ_e_Node_Ptr) += +staticContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei);
3598 
3599 
3600  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3601  {
3602  Xyce::dout() << " (*f_dt_Equ_e_Node_Ptr) += " << +staticContributions[admsNodeID_dt].dx(admsProbeID_V_e_ei)<< std::endl;
3603  }
3605 
3606 
3607  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3608  {
3610  }
3612 
3613 
3614  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3615  {
3617  }
3619 
3620 
3621  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3622  {
3624  }
3625  (*f_dt_Equ_b_Node_Ptr) += +staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx);
3626 
3627 
3628  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3629  {
3630  Xyce::dout() << " (*f_dt_Equ_b_Node_Ptr) += " << +staticContributions[admsNodeID_dt].dx(admsProbeID_V_b_bx)<< std::endl;
3631  }
3633 
3634 
3635  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3636  {
3638  }
3639  (*f_dt_Equ_c_Node_Ptr) += +staticContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx);
3640 
3641 
3642  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3643  {
3644  Xyce::dout() << " (*f_dt_Equ_c_Node_Ptr) += " << +staticContributions[admsNodeID_dt].dx(admsProbeID_V_c_cx)<< std::endl;
3645  }
3646 
3647 
3648  return bsuccess;
3649 }
3650 
3651 
3652 //-----------------------------------------------------------------------------
3653 // Function : Instance::loadDAEdQdx
3654 // Purpose :
3655 // Special Notes : Load the dQdx ("dynamic jacobian") matrix
3656 // Scope : public
3657 // Creator : admsXml
3658 // Creation Date :
3659 //-----------------------------------------------------------------------------
3661 {
3662  bool bsuccess = true;
3663  Linear::Matrix * dQdxMatPtr = extData.dQdxMatrixPtr;
3664 
3665  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3666  {
3667  Xyce::dout() << subsection_divider << std::endl;
3668  Xyce::dout() << "ADMSvbic::Instance::loadDAEdQdx (" << getName() << "):" << std::endl;
3669  }
3671 
3672 
3673  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3674  {
3676  }
3677  (*q_bi_Equ_ei_Node_Ptr) += -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei);
3678 
3679 
3680  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3681  {
3682  Xyce::dout() << " (*q_bi_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ei)<< std::endl;
3683  }
3685 
3686 
3687  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3688  {
3689  Xyce::dout() << " (*q_ei_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei) +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci)<< std::endl;
3690  }
3692 
3693 
3694  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3695  {
3696  Xyce::dout() << " (*q_ei_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei) -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ei)<< std::endl;
3697  }
3698  (*q_bi_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_dt_GND);
3699 
3700 
3701  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3702  {
3703  Xyce::dout() << " (*q_bi_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_dt_GND)<< std::endl;
3704  }
3705  (*q_ei_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_dt_GND);
3706 
3707 
3708  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3709  {
3710  Xyce::dout() << " (*q_ei_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_dt_GND)<< std::endl;
3711  }
3713 
3714 
3715  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3716  {
3717  Xyce::dout() << " (*q_bx_Equ_bx_Node_Ptr) += " << +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp) +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei)<< std::endl;
3718  }
3719  (*q_bx_Equ_ei_Node_Ptr) += -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei);
3720 
3721 
3722  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3723  {
3724  Xyce::dout() << " (*q_bx_Equ_ei_Node_Ptr) += " << -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_ei)<< std::endl;
3725  }
3726  (*q_ei_Equ_bx_Node_Ptr) += +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei);
3727 
3728 
3729  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3730  {
3731  Xyce::dout() << " (*q_ei_Equ_bx_Node_Ptr) += " << +dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bx_ei)<< std::endl;
3732  }
3733  (*q_bx_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_dt_GND);
3734 
3735 
3736  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3737  {
3738  Xyce::dout() << " (*q_bx_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_dt_GND)<< std::endl;
3739  }
3740  (*q_ci_Equ_bi_Node_Ptr) += +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci);
3741 
3742 
3743  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3744  {
3745  Xyce::dout() << " (*q_ci_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci)<< std::endl;
3746  }
3747  (*q_ci_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci);
3748 
3749 
3750  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3751  {
3752  Xyce::dout() << " (*q_ci_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_bi_ci)<< std::endl;
3753  }
3754  (*q_ei_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci);
3755 
3756 
3757  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3758  {
3759  Xyce::dout() << " (*q_ei_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_ei].dx(admsProbeID_V_bi_ci)<< std::endl;
3760  }
3761  (*q_ci_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_dt_GND);
3762 
3763 
3764  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3765  {
3766  Xyce::dout() << " (*q_ci_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_ci].dx(admsProbeID_V_dt_GND)<< std::endl;
3767  }
3768  (*q_bi_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci);
3769 
3770 
3771  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3772  {
3773  Xyce::dout() << " (*q_bi_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_ci)<< std::endl;
3774  }
3775  (*q_bx_Equ_bp_Node_Ptr) += -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp);
3776 
3777 
3778  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3779  {
3780  Xyce::dout() << " (*q_bx_Equ_bp_Node_Ptr) += " << -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bp)<< std::endl;
3781  }
3782  (*q_bp_Equ_bx_Node_Ptr) += +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp);
3783 
3784 
3785  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3786  {
3787  Xyce::dout() << " (*q_bp_Equ_bx_Node_Ptr) += " << +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp)<< std::endl;
3788  }
3789  (*q_bp_Equ_bp_Node_Ptr) += -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp);
3790 
3791 
3792  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3793  {
3794  Xyce::dout() << " (*q_bp_Equ_bp_Node_Ptr) += " << -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bp)<< std::endl;
3795  }
3796  (*q_bp_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_dt_GND);
3797 
3798 
3799  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3800  {
3801  Xyce::dout() << " (*q_bp_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_dt_GND)<< std::endl;
3802  }
3803  (*q_cx_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_dt_GND);
3804 
3805 
3806  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3807  {
3808  Xyce::dout() << " (*q_cx_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_dt_GND)<< std::endl;
3809  }
3810  (*q_c_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c);
3811 
3812 
3813  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3814  {
3815  Xyce::dout() << " (*q_c_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c)<< std::endl;
3816  }
3817  (*q_cx_Equ_cx_Node_Ptr) += -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx);
3818 
3819 
3820  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3821  {
3822  Xyce::dout() << " (*q_cx_Equ_cx_Node_Ptr) += " << -dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx)<< std::endl;
3823  }
3824  (*q_cx_Equ_bi_Node_Ptr) += +dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx);
3825 
3826 
3827  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3828  {
3829  Xyce::dout() << " (*q_cx_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_cx].dx(admsProbeID_V_bi_cx)<< std::endl;
3830  }
3832 
3833 
3834  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3835  {
3836  Xyce::dout() << " (*q_b_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c) +dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e)<< std::endl;
3837  }
3838  (*q_bx_Equ_bi_Node_Ptr) += +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci);
3839 
3840 
3841  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3842  {
3843  Xyce::dout() << " (*q_bx_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci)<< std::endl;
3844  }
3845  (*q_bx_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci);
3846 
3847 
3848  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3849  {
3850  Xyce::dout() << " (*q_bx_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_bx].dx(admsProbeID_V_bi_ci)<< std::endl;
3851  }
3852  (*q_e_Equ_e_Node_Ptr) += -dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e);
3853 
3854 
3855  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3856  {
3857  Xyce::dout() << " (*q_e_Equ_e_Node_Ptr) += " << -dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e)<< std::endl;
3858  }
3859  (*q_bp_Equ_bi_Node_Ptr) += +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci);
3860 
3861 
3862  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3863  {
3864  Xyce::dout() << " (*q_bp_Equ_bi_Node_Ptr) += " << +dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci)<< std::endl;
3865  }
3866  (*q_bp_Equ_ci_Node_Ptr) += -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci);
3867 
3868 
3869  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3870  {
3871  Xyce::dout() << " (*q_bp_Equ_ci_Node_Ptr) += " << -dynamicContributions[admsNodeID_bp].dx(admsProbeID_V_bi_ci)<< std::endl;
3872  }
3873  (*q_bi_Equ_cx_Node_Ptr) += -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx);
3874 
3875 
3876  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3877  {
3878  Xyce::dout() << " (*q_bi_Equ_cx_Node_Ptr) += " << -dynamicContributions[admsNodeID_bi].dx(admsProbeID_V_bi_cx)<< std::endl;
3879  }
3880  (*q_b_Equ_e_Node_Ptr) += -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e);
3881 
3882 
3883  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3884  {
3885  Xyce::dout() << " (*q_b_Equ_e_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_e)<< std::endl;
3886  }
3887  (*q_e_Equ_b_Node_Ptr) += +dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e);
3888 
3889 
3890  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3891  {
3892  Xyce::dout() << " (*q_e_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_e)<< std::endl;
3893  }
3894  (*q_b_Equ_c_Node_Ptr) += -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c);
3895 
3896 
3897  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3898  {
3899  Xyce::dout() << " (*q_b_Equ_c_Node_Ptr) += " << -dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_c)<< std::endl;
3900  }
3901  (*q_c_Equ_b_Node_Ptr) += +dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c);
3902 
3903 
3904  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3905  {
3906  Xyce::dout() << " (*q_c_Equ_b_Node_Ptr) += " << +dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_c)<< std::endl;
3907  }
3908  (*q_dt_Equ_dt_Node_Ptr) += +dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_dt_GND);
3909 
3910 
3911  if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) && getSolverState().debugTimeFlag)
3912  {
3913  Xyce::dout() << " (*q_dt_Equ_dt_Node_Ptr) += " << +dynamicContributions[admsNodeID_dt].dx(admsProbeID_V_dt_GND)<< std::endl;
3914  }
3915 
3916 
3917  return bsuccess;
3918 }
3919 
3920 //-----------------------------------------------------------------------------
3921 // Function : Instance::updateTemperature
3922 // Purpose : Set temperature and update any parameters that depend on it
3923 // Special Notes : In Xyce ADMS, we'll simply copy the temperature, which is
3924 // in Kelvin, to our "admsTemperature" variable, which needs
3925 // to be in Celsius.
3926 // Scope : public
3927 // Creator : admsXml
3928 // Creation Date :
3929 //-----------------------------------------------------------------------------
3930 bool Instance::updateTemperature(const double & temperatureTemp)
3931 {
3932 
3933  admsTemperature = temperatureTemp;
3934  adms_vt_nom = adms_vt(temperatureTemp);
3935 
3936  return true;
3937 }
3938 
3939 // Class Model
3940 //-----------------------------------------------------------------------------
3941 // Function : Model::processParams
3942 // Purpose :
3943 // Special Notes :
3944 // Scope : public
3945 // Creator : admsXml
3946 // Creation Date :
3947 //-----------------------------------------------------------------------------
3949 {
3950 
3951  // Now we need to check that any parameters are within their ranges as
3952  // specified in the verilog:
3953 
3954  // Parameter RCX : [ 0.0, (+inf) [
3955  if ( (!((RCX >=0.0))) )
3956  {
3957  UserError0(*this) << "ADMSvbic: Parameter RCX value " << RCX << " out of range [ 0.0, (+inf) [";
3958  }
3959 
3960  // Parameter RCI : [ 0.0, (+inf) [
3961  if ( (!((RCI >=0.0))) )
3962  {
3963  UserError0(*this) << "ADMSvbic: Parameter RCI value " << RCI << " out of range [ 0.0, (+inf) [";
3964  }
3965 
3966  // Parameter VO : [ 0.0, (+inf) [
3967  if ( (!((VO >=0.0))) )
3968  {
3969  UserError0(*this) << "ADMSvbic: Parameter VO value " << VO << " out of range [ 0.0, (+inf) [";
3970  }
3971 
3972  // Parameter GAMM : [ 0.0, (+inf) [
3973  if ( (!((GAMM >=0.0))) )
3974  {
3975  UserError0(*this) << "ADMSvbic: Parameter GAMM value " << GAMM << " out of range [ 0.0, (+inf) [";
3976  }
3977 
3978  // Parameter HRCF : [ 0.0, (+inf) [
3979  if ( (!((HRCF >=0.0))) )
3980  {
3981  UserError0(*this) << "ADMSvbic: Parameter HRCF value " << HRCF << " out of range [ 0.0, (+inf) [";
3982  }
3983 
3984  // Parameter RBX : [ 0.0, (+inf) [
3985  if ( (!((RBX >=0.0))) )
3986  {
3987  UserError0(*this) << "ADMSvbic: Parameter RBX value " << RBX << " out of range [ 0.0, (+inf) [";
3988  }
3989 
3990  // Parameter RBI : [ 0.0, (+inf) [
3991  if ( (!((RBI >=0.0))) )
3992  {
3993  UserError0(*this) << "ADMSvbic: Parameter RBI value " << RBI << " out of range [ 0.0, (+inf) [";
3994  }
3995 
3996  // Parameter RE : [ 0.0, (+inf) [
3997  if ( (!((RE >=0.0))) )
3998  {
3999  UserError0(*this) << "ADMSvbic: Parameter RE value " << RE << " out of range [ 0.0, (+inf) [";
4000  }
4001 
4002  // Parameter RS : [ 0.0, (+inf) [
4003  if ( (!((RS >=0.0))) )
4004  {
4005  UserError0(*this) << "ADMSvbic: Parameter RS value " << RS << " out of range [ 0.0, (+inf) [";
4006  }
4007 
4008  // Parameter RBP : [ 0.0, (+inf) [
4009  if ( (!((RBP >=0.0))) )
4010  {
4011  UserError0(*this) << "ADMSvbic: Parameter RBP value " << RBP << " out of range [ 0.0, (+inf) [";
4012  }
4013 
4014  // Parameter IS : ] 0.0, (+inf) [
4015  if ( (!((IS >0.0))) )
4016  {
4017  UserError0(*this) << "ADMSvbic: Parameter IS value " << IS << " out of range ] 0.0, (+inf) [";
4018  }
4019 
4020  // Parameter NF : ] 0.0, (+inf) [
4021  if ( (!((NF >0.0))) )
4022  {
4023  UserError0(*this) << "ADMSvbic: Parameter NF value " << NF << " out of range ] 0.0, (+inf) [";
4024  }
4025 
4026  // Parameter NR : ] 0.0, (+inf) [
4027  if ( (!((NR >0.0))) )
4028  {
4029  UserError0(*this) << "ADMSvbic: Parameter NR value " << NR << " out of range ] 0.0, (+inf) [";
4030  }
4031 
4032  // Parameter FC : [ 0.0, 1.0 [
4033  if ( (!((FC >=0.0 && FC <1.0 ))) )
4034  {
4035  UserError0(*this) << "ADMSvbic: Parameter FC value " << FC << " out of range [ 0.0, 1.0 [";
4036  }
4037 
4038  // Parameter CBEO : [ 0.0, (+inf) [
4039  if ( (!((CBEO >=0.0))) )
4040  {
4041  UserError0(*this) << "ADMSvbic: Parameter CBEO value " << CBEO << " out of range [ 0.0, (+inf) [";
4042  }
4043 
4044  // Parameter CJE : [ 0.0, (+inf) [
4045  if ( (!((CJE >=0.0))) )
4046  {
4047  UserError0(*this) << "ADMSvbic: Parameter CJE value " << CJE << " out of range [ 0.0, (+inf) [";
4048  }
4049 
4050  // Parameter PE : ] 0.0, (+inf) [
4051  if ( (!((PE >0.0))) )
4052  {
4053  UserError0(*this) << "ADMSvbic: Parameter PE value " << PE << " out of range ] 0.0, (+inf) [";
4054  }
4055 
4056  // Parameter ME : ] 0.0, 1.0 ]
4057  if ( (!((ME >0.0 && ME <=1.0 ))) )
4058  {
4059  UserError0(*this) << "ADMSvbic: Parameter ME value " << ME << " out of range ] 0.0, 1.0 ]";
4060  }
4061 
4062  // Parameter CBCO : [ 0.0, (+inf) [
4063  if ( (!((CBCO >=0.0))) )
4064  {
4065  UserError0(*this) << "ADMSvbic: Parameter CBCO value " << CBCO << " out of range [ 0.0, (+inf) [";
4066  }
4067 
4068  // Parameter CJC : [ 0.0, (+inf) [
4069  if ( (!((CJC >=0.0))) )
4070  {
4071  UserError0(*this) << "ADMSvbic: Parameter CJC value " << CJC << " out of range [ 0.0, (+inf) [";
4072  }
4073 
4074  // Parameter QCO : [ 0.0, (+inf) [
4075  if ( (!((QCO >=0.0))) )
4076  {
4077  UserError0(*this) << "ADMSvbic: Parameter QCO value " << QCO << " out of range [ 0.0, (+inf) [";
4078  }
4079 
4080  // Parameter CJEP : [ 0.0, (+inf) [
4081  if ( (!((CJEP >=0.0))) )
4082  {
4083  UserError0(*this) << "ADMSvbic: Parameter CJEP value " << CJEP << " out of range [ 0.0, (+inf) [";
4084  }
4085 
4086  // Parameter PC : ] 0.0, (+inf) [
4087  if ( (!((PC >0.0))) )
4088  {
4089  UserError0(*this) << "ADMSvbic: Parameter PC value " << PC << " out of range ] 0.0, (+inf) [";
4090  }
4091 
4092  // Parameter MC : ] 0.0, 1.0 ]
4093  if ( (!((MC >0.0 && MC <=1.0 ))) )
4094  {
4095  UserError0(*this) << "ADMSvbic: Parameter MC value " << MC << " out of range ] 0.0, 1.0 ]";
4096  }
4097 
4098  // Parameter CJCP : [ 0.0, (+inf) [
4099  if ( (!((CJCP >=0.0))) )
4100  {
4101  UserError0(*this) << "ADMSvbic: Parameter CJCP value " << CJCP << " out of range [ 0.0, (+inf) [";
4102  }
4103 
4104  // Parameter PS : ] 0.0, (+inf) [
4105  if ( (!((PS >0.0))) )
4106  {
4107  UserError0(*this) << "ADMSvbic: Parameter PS value " << PS << " out of range ] 0.0, (+inf) [";
4108  }
4109 
4110  // Parameter MS : ] 0.0, 1.0 ]
4111  if ( (!((MS >0.0 && MS <=1.0 ))) )
4112  {
4113  UserError0(*this) << "ADMSvbic: Parameter MS value " << MS << " out of range ] 0.0, 1.0 ]";
4114  }
4115 
4116  // Parameter IBEI : ] 0.0, (+inf) [
4117  if ( (!((IBEI >0.0))) )
4118  {
4119  UserError0(*this) << "ADMSvbic: Parameter IBEI value " << IBEI << " out of range ] 0.0, (+inf) [";
4120  }
4121 
4122  // Parameter WBE : [ 0.0, 1.0 ]
4123  if ( (!((WBE >=0.0 && WBE <=1.0 ))) )
4124  {
4125  UserError0(*this) << "ADMSvbic: Parameter WBE value " << WBE << " out of range [ 0.0, 1.0 ]";
4126  }
4127 
4128  // Parameter NEI : ] 0.0, (+inf) [
4129  if ( (!((NEI >0.0))) )
4130  {
4131  UserError0(*this) << "ADMSvbic: Parameter NEI value " << NEI << " out of range ] 0.0, (+inf) [";
4132  }
4133 
4134  // Parameter IBEN : [ 0.0, (+inf) [
4135  if ( (!((IBEN >=0.0))) )
4136  {
4137  UserError0(*this) << "ADMSvbic: Parameter IBEN value " << IBEN << " out of range [ 0.0, (+inf) [";
4138  }
4139 
4140  // Parameter NEN : ] 0.0, (+inf) [
4141  if ( (!((NEN >0.0))) )
4142  {
4143  UserError0(*this) << "ADMSvbic: Parameter NEN value " << NEN << " out of range ] 0.0, (+inf) [";
4144  }
4145 
4146  // Parameter IBCI : ] 0.0, (+inf) [
4147  if ( (!((IBCI >0.0))) )
4148  {
4149  UserError0(*this) << "ADMSvbic: Parameter IBCI value " << IBCI << " out of range ] 0.0, (+inf) [";
4150  }
4151 
4152  // Parameter NCI : ] 0.0, (+inf) [
4153  if ( (!((NCI >0.0))) )
4154  {
4155  UserError0(*this) << "ADMSvbic: Parameter NCI value " << NCI << " out of range ] 0.0, (+inf) [";
4156  }
4157 
4158  // Parameter IBCN : [ 0.0, (+inf) [
4159  if ( (!((IBCN >=0.0))) )
4160  {
4161  UserError0(*this) << "ADMSvbic: Parameter IBCN value " << IBCN << " out of range [ 0.0, (+inf) [";
4162  }
4163 
4164  // Parameter NCN : ] 0.0, (+inf) [
4165  if ( (!((NCN >0.0))) )
4166  {
4167  UserError0(*this) << "ADMSvbic: Parameter NCN value " << NCN << " out of range ] 0.0, (+inf) [";
4168  }
4169 
4170  // Parameter AVC1 : [ 0.0, (+inf) [
4171  if ( (!((AVC1 >=0.0))) )
4172  {
4173  UserError0(*this) << "ADMSvbic: Parameter AVC1 value " << AVC1 << " out of range [ 0.0, (+inf) [";
4174  }
4175 
4176  // Parameter AVC2 : [ 0.0, (+inf) [
4177  if ( (!((AVC2 >=0.0))) )
4178  {
4179  UserError0(*this) << "ADMSvbic: Parameter AVC2 value " << AVC2 << " out of range [ 0.0, (+inf) [";
4180  }
4181 
4182  // Parameter ISP : [ 0.0, (+inf) [
4183  if ( (!((ISP >=0.0))) )
4184  {
4185  UserError0(*this) << "ADMSvbic: Parameter ISP value " << ISP << " out of range [ 0.0, (+inf) [";
4186  }
4187 
4188  // Parameter WSP : [ 0.0, 1.0 ]
4189  if ( (!((WSP >=0.0 && WSP <=1.0 ))) )
4190  {
4191  UserError0(*this) << "ADMSvbic: Parameter WSP value " << WSP << " out of range [ 0.0, 1.0 ]";
4192  }
4193 
4194  // Parameter NFP : ] 0.0, (+inf) [
4195  if ( (!((NFP >0.0))) )
4196  {
4197  UserError0(*this) << "ADMSvbic: Parameter NFP value " << NFP << " out of range ] 0.0, (+inf) [";
4198  }
4199 
4200  // Parameter IBEIP : [ 0.0, (+inf) [
4201  if ( (!((IBEIP >=0.0))) )
4202  {
4203  UserError0(*this) << "ADMSvbic: Parameter IBEIP value " << IBEIP << " out of range [ 0.0, (+inf) [";
4204  }
4205 
4206  // Parameter IBENP : [ 0.0, (+inf) [
4207  if ( (!((IBENP >=0.0))) )
4208  {
4209  UserError0(*this) << "ADMSvbic: Parameter IBENP value " << IBENP << " out of range [ 0.0, (+inf) [";
4210  }
4211 
4212  // Parameter IBCIP : [ 0.0, (+inf) [
4213  if ( (!((IBCIP >=0.0))) )
4214  {
4215  UserError0(*this) << "ADMSvbic: Parameter IBCIP value " << IBCIP << " out of range [ 0.0, (+inf) [";
4216  }
4217 
4218  // Parameter NCIP : ] 0.0, (+inf) [
4219  if ( (!((NCIP >0.0))) )
4220  {
4221  UserError0(*this) << "ADMSvbic: Parameter NCIP value " << NCIP << " out of range ] 0.0, (+inf) [";
4222  }
4223 
4224  // Parameter IBCNP : [ 0.0, (+inf) [
4225  if ( (!((IBCNP >=0.0))) )
4226  {
4227  UserError0(*this) << "ADMSvbic: Parameter IBCNP value " << IBCNP << " out of range [ 0.0, (+inf) [";
4228  }
4229 
4230  // Parameter NCNP : ] 0.0, (+inf) [
4231  if ( (!((NCNP >0.0))) )
4232  {
4233  UserError0(*this) << "ADMSvbic: Parameter NCNP value " << NCNP << " out of range ] 0.0, (+inf) [";
4234  }
4235 
4236  // Parameter VEF : [ 0.0, (+inf) [
4237  if ( (!((VEF >=0.0))) )
4238  {
4239  UserError0(*this) << "ADMSvbic: Parameter VEF value " << VEF << " out of range [ 0.0, (+inf) [";
4240  }
4241 
4242  // Parameter VER : [ 0.0, (+inf) [
4243  if ( (!((VER >=0.0))) )
4244  {
4245  UserError0(*this) << "ADMSvbic: Parameter VER value " << VER << " out of range [ 0.0, (+inf) [";
4246  }
4247 
4248  // Parameter IKF : [ 0.0, (+inf) [
4249  if ( (!((IKF >=0.0))) )
4250  {
4251  UserError0(*this) << "ADMSvbic: Parameter IKF value " << IKF << " out of range [ 0.0, (+inf) [";
4252  }
4253 
4254  // Parameter IKR : [ 0.0, (+inf) [
4255  if ( (!((IKR >=0.0))) )
4256  {
4257  UserError0(*this) << "ADMSvbic: Parameter IKR value " << IKR << " out of range [ 0.0, (+inf) [";
4258  }
4259 
4260  // Parameter IKP : [ 0.0, (+inf) [
4261  if ( (!((IKP >=0.0))) )
4262  {
4263  UserError0(*this) << "ADMSvbic: Parameter IKP value " << IKP << " out of range [ 0.0, (+inf) [";
4264  }
4265 
4266  // Parameter TF : [ 0.0, (+inf) [
4267  if ( (!((TF >=0.0))) )
4268  {
4269  UserError0(*this) << "ADMSvbic: Parameter TF value " << TF << " out of range [ 0.0, (+inf) [";
4270  }
4271 
4272  // Parameter QTF : [ 0.0, (+inf) [
4273  if ( (!((QTF >=0.0))) )
4274  {
4275  UserError0(*this) << "ADMSvbic: Parameter QTF value " << QTF << " out of range [ 0.0, (+inf) [";
4276  }
4277 
4278  // Parameter XTF : [ 0.0, (+inf) [
4279  if ( (!((XTF >=0.0))) )
4280  {
4281  UserError0(*this) << "ADMSvbic: Parameter XTF value " << XTF << " out of range [ 0.0, (+inf) [";
4282  }
4283 
4284  // Parameter VTF : [ 0.0, (+inf) [
4285  if ( (!((VTF >=0.0))) )
4286  {
4287  UserError0(*this) << "ADMSvbic: Parameter VTF value " << VTF << " out of range [ 0.0, (+inf) [";
4288  }
4289 
4290  // Parameter ITF : [ 0.0, (+inf) [
4291  if ( (!((ITF >=0.0))) )
4292  {
4293  UserError0(*this) << "ADMSvbic: Parameter ITF value " << ITF << " out of range [ 0.0, (+inf) [";
4294  }
4295 
4296  // Parameter TR : [ 0.0, (+inf) [
4297  if ( (!((TR >=0.0))) )
4298  {
4299  UserError0(*this) << "ADMSvbic: Parameter TR value " << TR << " out of range [ 0.0, (+inf) [";
4300  }
4301 
4302  // Parameter TD : [ 0.0, (+inf) [
4303  if ( (!((TD >=0.0))) )
4304  {
4305  UserError0(*this) << "ADMSvbic: Parameter TD value " << TD << " out of range [ 0.0, (+inf) [";
4306  }
4307 
4308  // Parameter KFN : [ 0.0, (+inf) [
4309  if ( (!((KFN >=0.0))) )
4310  {
4311  UserError0(*this) << "ADMSvbic: Parameter KFN value " << KFN << " out of range [ 0.0, (+inf) [";
4312  }
4313 
4314  // Parameter AFN : ] 0.0, (+inf) [
4315  if ( (!((AFN >0.0))) )
4316  {
4317  UserError0(*this) << "ADMSvbic: Parameter AFN value " << AFN << " out of range ] 0.0, (+inf) [";
4318  }
4319 
4320  // Parameter BFN : ] 0.0, (+inf) [
4321  if ( (!((BFN >0.0))) )
4322  {
4323  UserError0(*this) << "ADMSvbic: Parameter BFN value " << BFN << " out of range ] 0.0, (+inf) [";
4324  }
4325 
4326  // Parameter RTH : [ 0.0, (+inf) [
4327  if ( (!((RTH >=0.0))) )
4328  {
4329  UserError0(*this) << "ADMSvbic: Parameter RTH value " << RTH << " out of range [ 0.0, (+inf) [";
4330  }
4331 
4332  // Parameter CTH : [ 0.0, (+inf) [
4333  if ( (!((CTH >=0.0))) )
4334  {
4335  UserError0(*this) << "ADMSvbic: Parameter CTH value " << CTH << " out of range [ 0.0, (+inf) [";
4336  }
4337 
4338  // Parameter VRT : [ 0.0, (+inf) [
4339  if ( (!((VRT >=0.0))) )
4340  {
4341  UserError0(*this) << "ADMSvbic: Parameter VRT value " << VRT << " out of range [ 0.0, (+inf) [";
4342  }
4343 
4344  // Parameter ART : ] 0.0, (+inf) [
4345  if ( (!((ART >0.0))) )
4346  {
4347  UserError0(*this) << "ADMSvbic: Parameter ART value " << ART << " out of range ] 0.0, (+inf) [";
4348  }
4349 
4350  // Parameter CCSO : [ 0.0, (+inf) [
4351  if ( (!((CCSO >=0.0))) )
4352  {
4353  UserError0(*this) << "ADMSvbic: Parameter CCSO value " << CCSO << " out of range [ 0.0, (+inf) [";
4354  }
4355 
4356  // Parameter NKF : ] 0.0, (+inf) [
4357  if ( (!((NKF >0.0))) )
4358  {
4359  UserError0(*this) << "ADMSvbic: Parameter NKF value " << NKF << " out of range ] 0.0, (+inf) [";
4360  }
4361 
4362  // Parameter ISRR : ] 0.0, (+inf) [
4363  if ( (!((ISRR >0.0))) )
4364  {
4365  UserError0(*this) << "ADMSvbic: Parameter ISRR value " << ISRR << " out of range ] 0.0, (+inf) [";
4366  }
4367 
4368  // Parameter NBBE : ] 0.0, (+inf) [
4369  if ( (!((NBBE >0.0))) )
4370  {
4371  UserError0(*this) << "ADMSvbic: Parameter NBBE value " << NBBE << " out of range ] 0.0, (+inf) [";
4372  }
4373 
4374  // Parameter dtype : [ (-1), 1 ][ 0, 0 ]
4375  if ( (!((dtype >=(-1) && dtype <=1 )) || (dtype >=0 && dtype <=0 )) )
4376  {
4377  UserError0(*this) << "ADMSvbic: Parameter dtype value " << dtype << " out of range [ (-1), 1 ] or in excluded range [ 0, 0 ]";
4378  }
4379 
4380 
4381  // and of course, this routine is where we should put the initial_model
4382  // stuff
4383 
4384 
4385  return true;
4386 }
4387 //----------------------------------------------------------------------------
4388 // Function : Model::processInstanceParams
4389 // Purpose :
4390 // Special Notes :
4391 // Scope : public
4392 // Creator :
4393 // Creation Date :
4394 //----------------------------------------------------------------------------
4396 {
4397 
4398  std::vector<Instance*>::iterator iter;
4399  std::vector<Instance*>::iterator first = instanceContainer.begin();
4400  std::vector<Instance*>::iterator last = instanceContainer.end();
4401 
4402  for (iter=first; iter!=last; ++iter)
4403  {
4404  (*iter)->processParams();
4405  }
4406 
4407  return true;
4408 }
4409 
4410 //-----------------------------------------------------------------------------
4411 // Function : Model::Model
4412 // Purpose : model block constructor
4413 // Special Notes :
4414 // Scope : public
4415 // Creator :
4416 // Creation Date :
4417 //-----------------------------------------------------------------------------
4419  const Configuration & configuration,
4420  const ModelBlock & model_block,
4421  const FactoryBlock & factory_block)
4422  : DeviceModel(model_block, configuration.getModelParameters(), factory_block),
4423  TNOM(27.0),
4424  RCX(0.0),
4425  RCI(0.0),
4426  VO(0.0),
4427  GAMM(0.0),
4428  HRCF(0.0),
4429  RBX(0.0),
4430  RBI(0.0),
4431  RE(0.0),
4432  RS(0.0),
4433  RBP(0.0),
4434  IS(1.0e-16),
4435  NF(1.0),
4436  NR(1.0),
4437  FC(0.9),
4438  CBEO(0.0),
4439  CJE(0.0),
4440  PE(0.75),
4441  ME(0.33),
4442  AJE((-0.5)),
4443  CBCO(0.0),
4444  CJC(0.0),
4445  QCO(0.0),
4446  CJEP(0.0),
4447  PC(0.75),
4448  MC(0.33),
4449  AJC((-0.5)),
4450  CJCP(0.0),
4451  PS(0.75),
4452  MS(0.33),
4453  AJS((-0.5)),
4454  IBEI(1.0e-18),
4455  WBE(1.0),
4456  NEI(1.0),
4457  IBEN(0.0),
4458  NEN(2.0),
4459  IBCI(1.0e-16),
4460  NCI(1.0),
4461  IBCN(0.0),
4462  NCN(2.0),
4463  AVC1(0.0),
4464  AVC2(0.0),
4465  ISP(0.0),
4466  WSP(1.0),
4467  NFP(1.0),
4468  IBEIP(0.0),
4469  IBENP(0.0),
4470  IBCIP(0.0),
4471  NCIP(1.0),
4472  IBCNP(0.0),
4473  NCNP(2.0),
4474  VEF(0.0),
4475  VER(0.0),
4476  IKF(0.0),
4477  IKR(0.0),
4478  IKP(0.0),
4479  TF(0.0),
4480  QTF(0.0),
4481  XTF(0.0),
4482  VTF(0.0),
4483  ITF(0.0),
4484  TR(0.0),
4485  TD(0.0),
4486  KFN(0.0),
4487  AFN(1.0),
4488  BFN(1.0),
4489  XRE(0),
4490  XRBI(0),
4491  XRCI(0),
4492  XRS(0),
4493  XVO(0),
4494  EA(1.12),
4495  EAIE(1.12),
4496  EAIC(1.12),
4497  EAIS(1.12),
4498  EANE(1.12),
4499  EANC(1.12),
4500  EANS(1.12),
4501  XIS(3.0),
4502  XII(3.0),
4503  XIN(3.0),
4504  TNF(0.0),
4505  TAVC(0.0),
4506  RTH(0.0),
4507  CTH(0.0),
4508  VRT(0.0),
4509  ART(0.1),
4510  CCSO(0.0),
4511  QBM(0.0),
4512  NKF(0.5),
4513  XIKF(0),
4514  XRCX(0),
4515  XRBX(0),
4516  XRBP(0),
4517  ISRR(1.0),
4518  XISR(0.0),
4519  DEAR(0.0),
4520  EAP(1.12),
4521  VBBE(0.0),
4522  NBBE(1.0),
4523  IBBE(1.0e-6),
4524  TVBBE1(0.0),
4525  TVBBE2(0.0),
4526  TNBBE(0.0),
4527  EBBE(0.0),
4528  DTEMP(0.0),
4529  VERS(1.2),
4530  VREV(0.0),
4531  dtype(1)
4532 {
4533  // Set params to constant default values (from parTable):
4534  setDefaultParams();
4535 
4536  // Set params according to .model line and constant defaults from metadata:
4537  setModParams(model_block.params);
4538 
4539  // Set any non-constant parameter defaults:
4540  // Set any parameters that were not given and whose defaults depend on other
4541  // parameters:
4542 
4543 
4544  if (!given("XYCEADMSMODTEMP"))
4545  admsModTemp=getDeviceOptions().temp.getImmutableValue<double>();
4546 
4547  // Fix the TNOM parameter that has "helpfully" been converted to Kelvin
4548  // by the DeviceEntity class
4549 
4550  if (given("TNOM"))
4551  TNOM -= CONSTCtoK;
4552 
4553  // Calculate any parameters specified as expressions:
4554 
4556 
4557  // calculate dependent (ie computed) params and check for errors:
4558  //Manually inserted these two lines:
4559  if (getType() == "pnp" || getType() == "PNP")
4560  dtype = -1;
4561 
4562  processParams();
4563 }
4564 
4565 //-----------------------------------------------------------------------------
4566 // Function : Model::~Model
4567 // Purpose : destructor
4568 // Special Notes :
4569 // Scope : public
4570 // Creator :
4571 // Creation Date :
4572 //-----------------------------------------------------------------------------
4574 {
4575  std::vector<Instance*>::iterator iterI;
4576  std::vector<Instance*>::iterator firstI = instanceContainer.begin ();
4577  std::vector<Instance*>::iterator lastI = instanceContainer.end ();
4578 
4579  // loop over instances:
4580  for (iterI = firstI; iterI != lastI; ++iterI)
4581  {
4582  delete (*iterI);
4583  }
4584 }
4585 
4586 //-----------------------------------------------------------------------------
4587 // Function : Model::printOutInstances
4588 // Purpose : debugging tool.
4589 // Special Notes :
4590 // Scope : public
4591 // Creator :
4592 // Creation Date :
4593 //-----------------------------------------------------------------------------
4594 std::ostream &Model::printOutInstances(std::ostream &os) const
4595 {
4596  std::vector<Instance*>::const_iterator iter;
4597  std::vector<Instance*>::const_iterator first = instanceContainer.begin();
4598  std::vector<Instance*>::const_iterator last = instanceContainer.end();
4599 
4600  int i;
4601  os << std::endl;
4602  os << " name model name Parameters" << std::endl;
4603  for (i=0, iter=first; iter!=last; ++iter, ++i)
4604  {
4605  os << " " << i << ": " << (*iter)->getName() << " ";
4606  os << getName();
4607 
4608  os << std::endl;
4609  os << "DTEMP = " << (*iter)->DTEMP << std::endl;
4610  os << "M = " << (*iter)->M << std::endl;
4611  os << std::endl;
4612  }
4613 
4614  os << std::endl;
4615 
4616  return os;
4617 }
4618 
4619 //-----------------------------------------------------------------------------
4620 // Function : Model::forEachInstance
4621 // Purpose :
4622 // Special Notes :
4623 // Scope : public
4624 // Creator : David Baur
4625 // Creation Date : 2/4/2014
4626 //-----------------------------------------------------------------------------
4627 /// Apply a device instance "op" to all instances associated with this
4628 /// model
4629 ///
4630 /// @param[in] op Operator to apply to all instances.
4631 ///
4632 ///
4633 void Model::forEachInstance(DeviceInstanceOp &op) const /* override */
4634 {
4635  for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
4636  op(*it);
4637 }
4638 
4639 Device *Traits::factory(const Configuration &configuration, const FactoryBlock &factory_block)
4640 {
4641  return new DeviceMaster<Traits>(configuration, factory_block, factory_block.solverState_, factory_block.deviceOptions_);
4642 }
4643 
4645 {
4647  .registerDevice("q", 10)
4648  .registerModelType("npn", 10)
4649  .registerModelType("pnp", 10);
4650 }
4651 
4652 
4653 
4654 //-----------------------------------------------------------------------------
4655 // Function : evaluateInitialInstance
4656 // Purpose : Evaluate the statements in the initial_instance block
4657 // Special Notes : specific for sensitivity use
4658 // Scope : public
4659 // Creator : admsXml
4660 // Creation Date :
4661 //-----------------------------------------------------------------------------
4663  // instance parameters
4664  // reals
4665  AdmsSensFadType & instancePar_DTEMP,
4666  bool instancePar_given_DTEMP,
4667  // non-reals(including hidden)
4668  int instancePar_M,
4669  bool instancePar_given_M,
4670  // model parameters
4671  // reals
4672  AdmsSensFadType & modelPar_TNOM,
4673  bool modelPar_given_TNOM,
4674  AdmsSensFadType & modelPar_RCX,
4675  bool modelPar_given_RCX,
4676  AdmsSensFadType & modelPar_RCI,
4677  bool modelPar_given_RCI,
4678  AdmsSensFadType & modelPar_VO,
4679  bool modelPar_given_VO,
4680  AdmsSensFadType & modelPar_GAMM,
4681  bool modelPar_given_GAMM,
4682  AdmsSensFadType & modelPar_HRCF,
4683  bool modelPar_given_HRCF,
4684  AdmsSensFadType & modelPar_RBX,
4685  bool modelPar_given_RBX,
4686  AdmsSensFadType & modelPar_RBI,
4687  bool modelPar_given_RBI,
4688  AdmsSensFadType & modelPar_RE,
4689  bool modelPar_given_RE,
4690  AdmsSensFadType & modelPar_RS,
4691  bool modelPar_given_RS,
4692  AdmsSensFadType & modelPar_RBP,
4693  bool modelPar_given_RBP,
4694  AdmsSensFadType & modelPar_IS,
4695  bool modelPar_given_IS,
4696  AdmsSensFadType & modelPar_NF,
4697  bool modelPar_given_NF,
4698  AdmsSensFadType & modelPar_NR,
4699  bool modelPar_given_NR,
4700  AdmsSensFadType & modelPar_FC,
4701  bool modelPar_given_FC,
4702  AdmsSensFadType & modelPar_CBEO,
4703  bool modelPar_given_CBEO,
4704  AdmsSensFadType & modelPar_CJE,
4705  bool modelPar_given_CJE,
4706  AdmsSensFadType & modelPar_PE,
4707  bool modelPar_given_PE,
4708  AdmsSensFadType & modelPar_ME,
4709  bool modelPar_given_ME,
4710  AdmsSensFadType & modelPar_AJE,
4711  bool modelPar_given_AJE,
4712  AdmsSensFadType & modelPar_CBCO,
4713  bool modelPar_given_CBCO,
4714  AdmsSensFadType & modelPar_CJC,
4715  bool modelPar_given_CJC,
4716  AdmsSensFadType & modelPar_QCO,
4717  bool modelPar_given_QCO,
4718  AdmsSensFadType & modelPar_CJEP,
4719  bool modelPar_given_CJEP,
4720  AdmsSensFadType & modelPar_PC,
4721  bool modelPar_given_PC,
4722  AdmsSensFadType & modelPar_MC,
4723  bool modelPar_given_MC,
4724  AdmsSensFadType & modelPar_AJC,
4725  bool modelPar_given_AJC,
4726  AdmsSensFadType & modelPar_CJCP,
4727  bool modelPar_given_CJCP,
4728  AdmsSensFadType & modelPar_PS,
4729  bool modelPar_given_PS,
4730  AdmsSensFadType & modelPar_MS,
4731  bool modelPar_given_MS,
4732  AdmsSensFadType & modelPar_AJS,
4733  bool modelPar_given_AJS,
4734  AdmsSensFadType & modelPar_IBEI,
4735  bool modelPar_given_IBEI,
4736  AdmsSensFadType & modelPar_WBE,
4737  bool modelPar_given_WBE,
4738  AdmsSensFadType & modelPar_NEI,
4739  bool modelPar_given_NEI,
4740  AdmsSensFadType & modelPar_IBEN,
4741  bool modelPar_given_IBEN,
4742  AdmsSensFadType & modelPar_NEN,
4743  bool modelPar_given_NEN,
4744  AdmsSensFadType & modelPar_IBCI,
4745  bool modelPar_given_IBCI,
4746  AdmsSensFadType & modelPar_NCI,
4747  bool modelPar_given_NCI,
4748  AdmsSensFadType & modelPar_IBCN,
4749  bool modelPar_given_IBCN,
4750  AdmsSensFadType & modelPar_NCN,
4751  bool modelPar_given_NCN,
4752  AdmsSensFadType & modelPar_AVC1,
4753  bool modelPar_given_AVC1,
4754  AdmsSensFadType & modelPar_AVC2,
4755  bool modelPar_given_AVC2,
4756  AdmsSensFadType & modelPar_ISP,
4757  bool modelPar_given_ISP,
4758  AdmsSensFadType & modelPar_WSP,
4759  bool modelPar_given_WSP,
4760  AdmsSensFadType & modelPar_NFP,
4761  bool modelPar_given_NFP,
4762  AdmsSensFadType & modelPar_IBEIP,
4763  bool modelPar_given_IBEIP,
4764  AdmsSensFadType & modelPar_IBENP,
4765  bool modelPar_given_IBENP,
4766  AdmsSensFadType & modelPar_IBCIP,
4767  bool modelPar_given_IBCIP,
4768  AdmsSensFadType & modelPar_NCIP,
4769  bool modelPar_given_NCIP,
4770  AdmsSensFadType & modelPar_IBCNP,
4771  bool modelPar_given_IBCNP,
4772  AdmsSensFadType & modelPar_NCNP,
4773  bool modelPar_given_NCNP,
4774  AdmsSensFadType & modelPar_VEF,
4775  bool modelPar_given_VEF,
4776  AdmsSensFadType & modelPar_VER,
4777  bool modelPar_given_VER,
4778  AdmsSensFadType & modelPar_IKF,
4779  bool modelPar_given_IKF,
4780  AdmsSensFadType & modelPar_IKR,
4781  bool modelPar_given_IKR,
4782  AdmsSensFadType & modelPar_IKP,
4783  bool modelPar_given_IKP,
4784  AdmsSensFadType & modelPar_TF,
4785  bool modelPar_given_TF,
4786  AdmsSensFadType & modelPar_QTF,
4787  bool modelPar_given_QTF,
4788  AdmsSensFadType & modelPar_XTF,
4789  bool modelPar_given_XTF,
4790  AdmsSensFadType & modelPar_VTF,
4791  bool modelPar_given_VTF,
4792  AdmsSensFadType & modelPar_ITF,
4793  bool modelPar_given_ITF,
4794  AdmsSensFadType & modelPar_TR,
4795  bool modelPar_given_TR,
4796  AdmsSensFadType & modelPar_TD,
4797  bool modelPar_given_TD,
4798  AdmsSensFadType & modelPar_KFN,
4799  bool modelPar_given_KFN,
4800  AdmsSensFadType & modelPar_AFN,
4801  bool modelPar_given_AFN,
4802  AdmsSensFadType & modelPar_BFN,
4803  bool modelPar_given_BFN,
4804  AdmsSensFadType & modelPar_XRE,
4805  bool modelPar_given_XRE,
4806  AdmsSensFadType & modelPar_XRBI,
4807  bool modelPar_given_XRBI,
4808  AdmsSensFadType & modelPar_XRCI,
4809  bool modelPar_given_XRCI,
4810  AdmsSensFadType & modelPar_XRS,
4811  bool modelPar_given_XRS,
4812  AdmsSensFadType & modelPar_XVO,
4813  bool modelPar_given_XVO,
4814  AdmsSensFadType & modelPar_EA,
4815  bool modelPar_given_EA,
4816  AdmsSensFadType & modelPar_EAIE,
4817  bool modelPar_given_EAIE,
4818  AdmsSensFadType & modelPar_EAIC,
4819  bool modelPar_given_EAIC,
4820  AdmsSensFadType & modelPar_EAIS,
4821  bool modelPar_given_EAIS,
4822  AdmsSensFadType & modelPar_EANE,
4823  bool modelPar_given_EANE,
4824  AdmsSensFadType & modelPar_EANC,
4825  bool modelPar_given_EANC,
4826  AdmsSensFadType & modelPar_EANS,
4827  bool modelPar_given_EANS,
4828  AdmsSensFadType & modelPar_XIS,
4829  bool modelPar_given_XIS,
4830  AdmsSensFadType & modelPar_XII,
4831  bool modelPar_given_XII,
4832  AdmsSensFadType & modelPar_XIN,
4833  bool modelPar_given_XIN,
4834  AdmsSensFadType & modelPar_TNF,
4835  bool modelPar_given_TNF,
4836  AdmsSensFadType & modelPar_TAVC,
4837  bool modelPar_given_TAVC,
4838  AdmsSensFadType & modelPar_RTH,
4839  bool modelPar_given_RTH,
4840  AdmsSensFadType & modelPar_CTH,
4841  bool modelPar_given_CTH,
4842  AdmsSensFadType & modelPar_VRT,
4843  bool modelPar_given_VRT,
4844  AdmsSensFadType & modelPar_ART,
4845  bool modelPar_given_ART,
4846  AdmsSensFadType & modelPar_CCSO,
4847  bool modelPar_given_CCSO,
4848  AdmsSensFadType & modelPar_QBM,
4849  bool modelPar_given_QBM,
4850  AdmsSensFadType & modelPar_NKF,
4851  bool modelPar_given_NKF,
4852  AdmsSensFadType & modelPar_XIKF,
4853  bool modelPar_given_XIKF,
4854  AdmsSensFadType & modelPar_XRCX,
4855  bool modelPar_given_XRCX,
4856  AdmsSensFadType & modelPar_XRBX,
4857  bool modelPar_given_XRBX,
4858  AdmsSensFadType & modelPar_XRBP,
4859  bool modelPar_given_XRBP,
4860  AdmsSensFadType & modelPar_ISRR,
4861  bool modelPar_given_ISRR,
4862  AdmsSensFadType & modelPar_XISR,
4863  bool modelPar_given_XISR,
4864  AdmsSensFadType & modelPar_DEAR,
4865  bool modelPar_given_DEAR,
4866  AdmsSensFadType & modelPar_EAP,
4867  bool modelPar_given_EAP,
4868  AdmsSensFadType & modelPar_VBBE,
4869  bool modelPar_given_VBBE,
4870  AdmsSensFadType & modelPar_NBBE,
4871  bool modelPar_given_NBBE,
4872  AdmsSensFadType & modelPar_IBBE,
4873  bool modelPar_given_IBBE,
4874  AdmsSensFadType & modelPar_TVBBE1,
4875  bool modelPar_given_TVBBE1,
4876  AdmsSensFadType & modelPar_TVBBE2,
4877  bool modelPar_given_TVBBE2,
4878  AdmsSensFadType & modelPar_TNBBE,
4879  bool modelPar_given_TNBBE,
4880  AdmsSensFadType & modelPar_EBBE,
4881  bool modelPar_given_EBBE,
4882  AdmsSensFadType & modelPar_DTEMP,
4883  bool modelPar_given_DTEMP,
4884  AdmsSensFadType & modelPar_VERS,
4885  bool modelPar_given_VERS,
4886  AdmsSensFadType & modelPar_VREV,
4887  bool modelPar_given_VREV,
4888  // non-reals (including hidden)
4889  int modelPar_dtype,
4890  double admsTemperature, double adms_vt_nom)
4891 {
4892 }
4893 
4894 
4895 
4896 //-----------------------------------------------------------------------------
4897 // Function : evaluateInitialModel
4898 // Purpose : Evaluate the statements in the initial_model block
4899 // Special Notes : specific for sensitivity use
4900 // Scope : public
4901 // Creator : admsXml
4902 // Creation Date :
4903 //-----------------------------------------------------------------------------
4905  // model parameters
4906  // reals
4907  AdmsSensFadType & modelPar_TNOM,
4908  bool modelPar_given_TNOM,
4909  AdmsSensFadType & modelPar_RCX,
4910  bool modelPar_given_RCX,
4911  AdmsSensFadType & modelPar_RCI,
4912  bool modelPar_given_RCI,
4913  AdmsSensFadType & modelPar_VO,
4914  bool modelPar_given_VO,
4915  AdmsSensFadType & modelPar_GAMM,
4916  bool modelPar_given_GAMM,
4917  AdmsSensFadType & modelPar_HRCF,
4918  bool modelPar_given_HRCF,
4919  AdmsSensFadType & modelPar_RBX,
4920  bool modelPar_given_RBX,
4921  AdmsSensFadType & modelPar_RBI,
4922  bool modelPar_given_RBI,
4923  AdmsSensFadType & modelPar_RE,
4924  bool modelPar_given_RE,
4925  AdmsSensFadType & modelPar_RS,
4926  bool modelPar_given_RS,
4927  AdmsSensFadType & modelPar_RBP,
4928  bool modelPar_given_RBP,
4929  AdmsSensFadType & modelPar_IS,
4930  bool modelPar_given_IS,
4931  AdmsSensFadType & modelPar_NF,
4932  bool modelPar_given_NF,
4933  AdmsSensFadType & modelPar_NR,
4934  bool modelPar_given_NR,
4935  AdmsSensFadType & modelPar_FC,
4936  bool modelPar_given_FC,
4937  AdmsSensFadType & modelPar_CBEO,
4938  bool modelPar_given_CBEO,
4939  AdmsSensFadType & modelPar_CJE,
4940  bool modelPar_given_CJE,
4941  AdmsSensFadType & modelPar_PE,
4942  bool modelPar_given_PE,
4943  AdmsSensFadType & modelPar_ME,
4944  bool modelPar_given_ME,
4945  AdmsSensFadType & modelPar_AJE,
4946  bool modelPar_given_AJE,
4947  AdmsSensFadType & modelPar_CBCO,
4948  bool modelPar_given_CBCO,
4949  AdmsSensFadType & modelPar_CJC,
4950  bool modelPar_given_CJC,
4951  AdmsSensFadType & modelPar_QCO,
4952  bool modelPar_given_QCO,
4953  AdmsSensFadType & modelPar_CJEP,
4954  bool modelPar_given_CJEP,
4955  AdmsSensFadType & modelPar_PC,
4956  bool modelPar_given_PC,
4957  AdmsSensFadType & modelPar_MC,
4958  bool modelPar_given_MC,
4959  AdmsSensFadType & modelPar_AJC,
4960  bool modelPar_given_AJC,
4961  AdmsSensFadType & modelPar_CJCP,
4962  bool modelPar_given_CJCP,
4963  AdmsSensFadType & modelPar_PS,
4964  bool modelPar_given_PS,
4965  AdmsSensFadType & modelPar_MS,
4966  bool modelPar_given_MS,
4967  AdmsSensFadType & modelPar_AJS,
4968  bool modelPar_given_AJS,
4969  AdmsSensFadType & modelPar_IBEI,
4970  bool modelPar_given_IBEI,
4971  AdmsSensFadType & modelPar_WBE,
4972  bool modelPar_given_WBE,
4973  AdmsSensFadType & modelPar_NEI,
4974  bool modelPar_given_NEI,
4975  AdmsSensFadType & modelPar_IBEN,
4976  bool modelPar_given_IBEN,
4977  AdmsSensFadType & modelPar_NEN,
4978  bool modelPar_given_NEN,
4979  AdmsSensFadType & modelPar_IBCI,
4980  bool modelPar_given_IBCI,
4981  AdmsSensFadType & modelPar_NCI,
4982  bool modelPar_given_NCI,
4983  AdmsSensFadType & modelPar_IBCN,
4984  bool modelPar_given_IBCN,
4985  AdmsSensFadType & modelPar_NCN,
4986  bool modelPar_given_NCN,
4987  AdmsSensFadType & modelPar_AVC1,
4988  bool modelPar_given_AVC1,
4989  AdmsSensFadType & modelPar_AVC2,
4990  bool modelPar_given_AVC2,
4991  AdmsSensFadType & modelPar_ISP,
4992  bool modelPar_given_ISP,
4993  AdmsSensFadType & modelPar_WSP,
4994  bool modelPar_given_WSP,
4995  AdmsSensFadType & modelPar_NFP,
4996  bool modelPar_given_NFP,
4997  AdmsSensFadType & modelPar_IBEIP,
4998  bool modelPar_given_IBEIP,
4999  AdmsSensFadType & modelPar_IBENP,
5000  bool modelPar_given_IBENP,
5001  AdmsSensFadType & modelPar_IBCIP,
5002  bool modelPar_given_IBCIP,
5003  AdmsSensFadType & modelPar_NCIP,
5004  bool modelPar_given_NCIP,
5005  AdmsSensFadType & modelPar_IBCNP,
5006  bool modelPar_given_IBCNP,
5007  AdmsSensFadType & modelPar_NCNP,
5008  bool modelPar_given_NCNP,
5009  AdmsSensFadType & modelPar_VEF,
5010  bool modelPar_given_VEF,
5011  AdmsSensFadType & modelPar_VER,
5012  bool modelPar_given_VER,
5013  AdmsSensFadType & modelPar_IKF,
5014  bool modelPar_given_IKF,
5015  AdmsSensFadType & modelPar_IKR,
5016  bool modelPar_given_IKR,
5017  AdmsSensFadType & modelPar_IKP,
5018  bool modelPar_given_IKP,
5019  AdmsSensFadType & modelPar_TF,
5020  bool modelPar_given_TF,
5021  AdmsSensFadType & modelPar_QTF,
5022  bool modelPar_given_QTF,
5023  AdmsSensFadType & modelPar_XTF,
5024  bool modelPar_given_XTF,
5025  AdmsSensFadType & modelPar_VTF,
5026  bool modelPar_given_VTF,
5027  AdmsSensFadType & modelPar_ITF,
5028  bool modelPar_given_ITF,
5029  AdmsSensFadType & modelPar_TR,
5030  bool modelPar_given_TR,
5031  AdmsSensFadType & modelPar_TD,
5032  bool modelPar_given_TD,
5033  AdmsSensFadType & modelPar_KFN,
5034  bool modelPar_given_KFN,
5035  AdmsSensFadType & modelPar_AFN,
5036  bool modelPar_given_AFN,
5037  AdmsSensFadType & modelPar_BFN,
5038  bool modelPar_given_BFN,
5039  AdmsSensFadType & modelPar_XRE,
5040  bool modelPar_given_XRE,
5041  AdmsSensFadType & modelPar_XRBI,
5042  bool modelPar_given_XRBI,
5043  AdmsSensFadType & modelPar_XRCI,
5044  bool modelPar_given_XRCI,
5045  AdmsSensFadType & modelPar_XRS,
5046  bool modelPar_given_XRS,
5047  AdmsSensFadType & modelPar_XVO,
5048  bool modelPar_given_XVO,
5049  AdmsSensFadType & modelPar_EA,
5050  bool modelPar_given_EA,
5051  AdmsSensFadType & modelPar_EAIE,
5052  bool modelPar_given_EAIE,
5053  AdmsSensFadType & modelPar_EAIC,
5054  bool modelPar_given_EAIC,
5055  AdmsSensFadType & modelPar_EAIS,
5056  bool modelPar_given_EAIS,
5057  AdmsSensFadType & modelPar_EANE,
5058  bool modelPar_given_EANE,
5059  AdmsSensFadType & modelPar_EANC,
5060  bool modelPar_given_EANC,
5061  AdmsSensFadType & modelPar_EANS,
5062  bool modelPar_given_EANS,
5063  AdmsSensFadType & modelPar_XIS,
5064  bool modelPar_given_XIS,
5065  AdmsSensFadType & modelPar_XII,
5066  bool modelPar_given_XII,
5067  AdmsSensFadType & modelPar_XIN,
5068  bool modelPar_given_XIN,
5069  AdmsSensFadType & modelPar_TNF,
5070  bool modelPar_given_TNF,
5071  AdmsSensFadType & modelPar_TAVC,
5072  bool modelPar_given_TAVC,
5073  AdmsSensFadType & modelPar_RTH,
5074  bool modelPar_given_RTH,
5075  AdmsSensFadType & modelPar_CTH,
5076  bool modelPar_given_CTH,
5077  AdmsSensFadType & modelPar_VRT,
5078  bool modelPar_given_VRT,
5079  AdmsSensFadType & modelPar_ART,
5080  bool modelPar_given_ART,
5081  AdmsSensFadType & modelPar_CCSO,
5082  bool modelPar_given_CCSO,
5083  AdmsSensFadType & modelPar_QBM,
5084  bool modelPar_given_QBM,
5085  AdmsSensFadType & modelPar_NKF,
5086  bool modelPar_given_NKF,
5087  AdmsSensFadType & modelPar_XIKF,
5088  bool modelPar_given_XIKF,
5089  AdmsSensFadType & modelPar_XRCX,
5090  bool modelPar_given_XRCX,
5091  AdmsSensFadType & modelPar_XRBX,
5092  bool modelPar_given_XRBX,
5093  AdmsSensFadType & modelPar_XRBP,
5094  bool modelPar_given_XRBP,
5095  AdmsSensFadType & modelPar_ISRR,
5096  bool modelPar_given_ISRR,
5097  AdmsSensFadType & modelPar_XISR,
5098  bool modelPar_given_XISR,
5099  AdmsSensFadType & modelPar_DEAR,
5100  bool modelPar_given_DEAR,
5101  AdmsSensFadType & modelPar_EAP,
5102  bool modelPar_given_EAP,
5103  AdmsSensFadType & modelPar_VBBE,
5104  bool modelPar_given_VBBE,
5105  AdmsSensFadType & modelPar_NBBE,
5106  bool modelPar_given_NBBE,
5107  AdmsSensFadType & modelPar_IBBE,
5108  bool modelPar_given_IBBE,
5109  AdmsSensFadType & modelPar_TVBBE1,
5110  bool modelPar_given_TVBBE1,
5111  AdmsSensFadType & modelPar_TVBBE2,
5112  bool modelPar_given_TVBBE2,
5113  AdmsSensFadType & modelPar_TNBBE,
5114  bool modelPar_given_TNBBE,
5115  AdmsSensFadType & modelPar_EBBE,
5116  bool modelPar_given_EBBE,
5117  AdmsSensFadType & modelPar_DTEMP,
5118  bool modelPar_given_DTEMP,
5119  AdmsSensFadType & modelPar_VERS,
5120  bool modelPar_given_VERS,
5121  AdmsSensFadType & modelPar_VREV,
5122  bool modelPar_given_VREV,
5123  // non-reals (including hidden)
5124  int modelPar_dtype,
5125  double admsTemperature)
5126 {
5127 }
5128 
5129 
5130 
5131 //-----------------------------------------------------------------------------
5132 // Function : evaluateModelEquations
5133 // Purpose : Evaluate the main module block. Similar to
5134 // updateIntermediateVars, but takes all instance and model
5135 // parameters and variables as arguments instead of using
5136 // the ones stored in the objects.
5137 // Special Notes : specific for sensitivity use
5138 // Scope : public
5139 // Creator : admsXml
5140 // Creation Date :
5141 //-----------------------------------------------------------------------------
5143  std::vector <double> & probeVars,
5144  // probe constants
5145  const int admsProbeID_V_ci_ei,
5146  const int admsProbeID_V_b_c,
5147  const int admsProbeID_V_bp_cx,
5148  const int admsProbeID_V_e_ei,
5149  const int admsProbeID_V_b_bx,
5150  const int admsProbeID_V_bx_bi,
5151  const int admsProbeID_V_cx_ci,
5152  const int admsProbeID_V_c_cx,
5153  const int admsProbeID_V_b_e,
5154  const int admsProbeID_V_dt_GND,
5155  const int admsProbeID_V_bx_bp,
5156  const int admsProbeID_V_bi_cx,
5157  const int admsProbeID_V_bx_ei,
5158  const int admsProbeID_V_bi_ci,
5159  const int admsProbeID_V_bi_ei,
5160  // node constants
5161  const int admsNodeID_c,
5162  const int admsNodeID_b,
5163  const int admsNodeID_e,
5164  const int admsNodeID_dt,
5165  const int admsNodeID_cx,
5166  const int admsNodeID_ci,
5167  const int admsNodeID_bx,
5168  const int admsNodeID_bi,
5169  const int admsNodeID_ei,
5170  const int admsNodeID_bp,
5171  // instance parameters
5172  // reals
5173  AdmsSensFadType & instancePar_DTEMP,
5174  bool instancePar_given_DTEMP,
5175  // non-reals(including hidden)
5176  int instancePar_M,
5177  bool instancePar_given_M,
5178  // model parameters
5179  // reals
5180  AdmsSensFadType & modelPar_TNOM,
5181  bool modelPar_given_TNOM,
5182  AdmsSensFadType & modelPar_RCX,
5183  bool modelPar_given_RCX,
5184  AdmsSensFadType & modelPar_RCI,
5185  bool modelPar_given_RCI,
5186  AdmsSensFadType & modelPar_VO,
5187  bool modelPar_given_VO,
5188  AdmsSensFadType & modelPar_GAMM,
5189  bool modelPar_given_GAMM,
5190  AdmsSensFadType & modelPar_HRCF,
5191  bool modelPar_given_HRCF,
5192  AdmsSensFadType & modelPar_RBX,
5193  bool modelPar_given_RBX,
5194  AdmsSensFadType & modelPar_RBI,
5195  bool modelPar_given_RBI,
5196  AdmsSensFadType & modelPar_RE,
5197  bool modelPar_given_RE,
5198  AdmsSensFadType & modelPar_RS,
5199  bool modelPar_given_RS,
5200  AdmsSensFadType & modelPar_RBP,
5201  bool modelPar_given_RBP,
5202  AdmsSensFadType & modelPar_IS,
5203  bool modelPar_given_IS,
5204  AdmsSensFadType & modelPar_NF,
5205  bool modelPar_given_NF,
5206  AdmsSensFadType & modelPar_NR,
5207  bool modelPar_given_NR,
5208  AdmsSensFadType & modelPar_FC,
5209  bool modelPar_given_FC,
5210  AdmsSensFadType & modelPar_CBEO,
5211  bool modelPar_given_CBEO,
5212  AdmsSensFadType & modelPar_CJE,
5213  bool modelPar_given_CJE,
5214  AdmsSensFadType & modelPar_PE,
5215  bool modelPar_given_PE,
5216  AdmsSensFadType & modelPar_ME,
5217  bool modelPar_given_ME,
5218  AdmsSensFadType & modelPar_AJE,
5219  bool modelPar_given_AJE,
5220  AdmsSensFadType & modelPar_CBCO,
5221  bool modelPar_given_CBCO,
5222  AdmsSensFadType & modelPar_CJC,
5223  bool modelPar_given_CJC,
5224  AdmsSensFadType & modelPar_QCO,
5225  bool modelPar_given_QCO,
5226  AdmsSensFadType & modelPar_CJEP,
5227  bool modelPar_given_CJEP,
5228  AdmsSensFadType & modelPar_PC,
5229  bool modelPar_given_PC,
5230  AdmsSensFadType & modelPar_MC,
5231  bool modelPar_given_MC,
5232  AdmsSensFadType & modelPar_AJC,
5233  bool modelPar_given_AJC,
5234  AdmsSensFadType & modelPar_CJCP,
5235  bool modelPar_given_CJCP,
5236  AdmsSensFadType & modelPar_PS,
5237  bool modelPar_given_PS,
5238  AdmsSensFadType & modelPar_MS,
5239  bool modelPar_given_MS,
5240  AdmsSensFadType & modelPar_AJS,
5241  bool modelPar_given_AJS,
5242  AdmsSensFadType & modelPar_IBEI,
5243  bool modelPar_given_IBEI,
5244  AdmsSensFadType & modelPar_WBE,
5245  bool modelPar_given_WBE,
5246  AdmsSensFadType & modelPar_NEI,
5247  bool modelPar_given_NEI,
5248  AdmsSensFadType & modelPar_IBEN,
5249  bool modelPar_given_IBEN,
5250  AdmsSensFadType & modelPar_NEN,
5251  bool modelPar_given_NEN,
5252  AdmsSensFadType & modelPar_IBCI,
5253  bool modelPar_given_IBCI,
5254  AdmsSensFadType & modelPar_NCI,
5255  bool modelPar_given_NCI,
5256  AdmsSensFadType & modelPar_IBCN,
5257  bool modelPar_given_IBCN,
5258  AdmsSensFadType & modelPar_NCN,
5259  bool modelPar_given_NCN,
5260  AdmsSensFadType & modelPar_AVC1,
5261  bool modelPar_given_AVC1,
5262  AdmsSensFadType & modelPar_AVC2,
5263  bool modelPar_given_AVC2,
5264  AdmsSensFadType & modelPar_ISP,
5265  bool modelPar_given_ISP,
5266  AdmsSensFadType & modelPar_WSP,
5267  bool modelPar_given_WSP,
5268  AdmsSensFadType & modelPar_NFP,
5269  bool modelPar_given_NFP,
5270  AdmsSensFadType & modelPar_IBEIP,
5271  bool modelPar_given_IBEIP,
5272  AdmsSensFadType & modelPar_IBENP,
5273  bool modelPar_given_IBENP,
5274  AdmsSensFadType & modelPar_IBCIP,
5275  bool modelPar_given_IBCIP,
5276  AdmsSensFadType & modelPar_NCIP,
5277  bool modelPar_given_NCIP,
5278  AdmsSensFadType & modelPar_IBCNP,
5279  bool modelPar_given_IBCNP,
5280  AdmsSensFadType & modelPar_NCNP,
5281  bool modelPar_given_NCNP,
5282  AdmsSensFadType & modelPar_VEF,
5283  bool modelPar_given_VEF,
5284  AdmsSensFadType & modelPar_VER,
5285  bool modelPar_given_VER,
5286  AdmsSensFadType & modelPar_IKF,
5287  bool modelPar_given_IKF,
5288  AdmsSensFadType & modelPar_IKR,
5289  bool modelPar_given_IKR,
5290  AdmsSensFadType & modelPar_IKP,
5291  bool modelPar_given_IKP,
5292  AdmsSensFadType & modelPar_TF,
5293  bool modelPar_given_TF,
5294  AdmsSensFadType & modelPar_QTF,
5295  bool modelPar_given_QTF,
5296  AdmsSensFadType & modelPar_XTF,
5297  bool modelPar_given_XTF,
5298  AdmsSensFadType & modelPar_VTF,
5299  bool modelPar_given_VTF,
5300  AdmsSensFadType & modelPar_ITF,
5301  bool modelPar_given_ITF,
5302  AdmsSensFadType & modelPar_TR,
5303  bool modelPar_given_TR,
5304  AdmsSensFadType & modelPar_TD,
5305  bool modelPar_given_TD,
5306  AdmsSensFadType & modelPar_KFN,
5307  bool modelPar_given_KFN,
5308  AdmsSensFadType & modelPar_AFN,
5309  bool modelPar_given_AFN,
5310  AdmsSensFadType & modelPar_BFN,
5311  bool modelPar_given_BFN,
5312  AdmsSensFadType & modelPar_XRE,
5313  bool modelPar_given_XRE,
5314  AdmsSensFadType & modelPar_XRBI,
5315  bool modelPar_given_XRBI,
5316  AdmsSensFadType & modelPar_XRCI,
5317  bool modelPar_given_XRCI,
5318  AdmsSensFadType & modelPar_XRS,
5319  bool modelPar_given_XRS,
5320  AdmsSensFadType & modelPar_XVO,
5321  bool modelPar_given_XVO,
5322  AdmsSensFadType & modelPar_EA,
5323  bool modelPar_given_EA,
5324  AdmsSensFadType & modelPar_EAIE,
5325  bool modelPar_given_EAIE,
5326  AdmsSensFadType & modelPar_EAIC,
5327  bool modelPar_given_EAIC,
5328  AdmsSensFadType & modelPar_EAIS,
5329  bool modelPar_given_EAIS,
5330  AdmsSensFadType & modelPar_EANE,
5331  bool modelPar_given_EANE,
5332  AdmsSensFadType & modelPar_EANC,
5333  bool modelPar_given_EANC,
5334  AdmsSensFadType & modelPar_EANS,
5335  bool modelPar_given_EANS,
5336  AdmsSensFadType & modelPar_XIS,
5337  bool modelPar_given_XIS,
5338  AdmsSensFadType & modelPar_XII,
5339  bool modelPar_given_XII,
5340  AdmsSensFadType & modelPar_XIN,
5341  bool modelPar_given_XIN,
5342  AdmsSensFadType & modelPar_TNF,
5343  bool modelPar_given_TNF,
5344  AdmsSensFadType & modelPar_TAVC,
5345  bool modelPar_given_TAVC,
5346  AdmsSensFadType & modelPar_RTH,
5347  bool modelPar_given_RTH,
5348  AdmsSensFadType & modelPar_CTH,
5349  bool modelPar_given_CTH,
5350  AdmsSensFadType & modelPar_VRT,
5351  bool modelPar_given_VRT,
5352  AdmsSensFadType & modelPar_ART,
5353  bool modelPar_given_ART,
5354  AdmsSensFadType & modelPar_CCSO,
5355  bool modelPar_given_CCSO,
5356  AdmsSensFadType & modelPar_QBM,
5357  bool modelPar_given_QBM,
5358  AdmsSensFadType & modelPar_NKF,
5359  bool modelPar_given_NKF,
5360  AdmsSensFadType & modelPar_XIKF,
5361  bool modelPar_given_XIKF,
5362  AdmsSensFadType & modelPar_XRCX,
5363  bool modelPar_given_XRCX,
5364  AdmsSensFadType & modelPar_XRBX,
5365  bool modelPar_given_XRBX,
5366  AdmsSensFadType & modelPar_XRBP,
5367  bool modelPar_given_XRBP,
5368  AdmsSensFadType & modelPar_ISRR,
5369  bool modelPar_given_ISRR,
5370  AdmsSensFadType & modelPar_XISR,
5371  bool modelPar_given_XISR,
5372  AdmsSensFadType & modelPar_DEAR,
5373  bool modelPar_given_DEAR,
5374  AdmsSensFadType & modelPar_EAP,
5375  bool modelPar_given_EAP,
5376  AdmsSensFadType & modelPar_VBBE,
5377  bool modelPar_given_VBBE,
5378  AdmsSensFadType & modelPar_NBBE,
5379  bool modelPar_given_NBBE,
5380  AdmsSensFadType & modelPar_IBBE,
5381  bool modelPar_given_IBBE,
5382  AdmsSensFadType & modelPar_TVBBE1,
5383  bool modelPar_given_TVBBE1,
5384  AdmsSensFadType & modelPar_TVBBE2,
5385  bool modelPar_given_TVBBE2,
5386  AdmsSensFadType & modelPar_TNBBE,
5387  bool modelPar_given_TNBBE,
5388  AdmsSensFadType & modelPar_EBBE,
5389  bool modelPar_given_EBBE,
5390  AdmsSensFadType & modelPar_DTEMP,
5391  bool modelPar_given_DTEMP,
5392  AdmsSensFadType & modelPar_VERS,
5393  bool modelPar_given_VERS,
5394  AdmsSensFadType & modelPar_VREV,
5395  bool modelPar_given_VREV,
5396  // non-reals (including hidden)
5397  int modelPar_dtype,
5398  // basic variables
5399  double admsTemperature, double adms_vt_nom, double gmin, std::vector <AdmsSensFadType> & staticContributions, std::vector <AdmsSensFadType> & dynamicContributions, const Instance & theInstance)
5400 {
5401 
5402  // Local variables
5403  AdmsSensFadType Qcth;
5404  AdmsSensFadType Irth;
5405  AdmsSensFadType Ith;
5406  AdmsSensFadType Qbco;
5407  AdmsSensFadType Qbeo;
5408  AdmsSensFadType Qbep;
5409  AdmsSensFadType Qbcx;
5410  AdmsSensFadType Qbc;
5411  AdmsSensFadType Qbex;
5412  AdmsSensFadType Qbe;
5413  AdmsSensFadType tff;
5414  AdmsSensFadType tff_exparg;
5415  AdmsSensFadType mIf;
5416  AdmsSensFadType rIf;
5417  AdmsSensFadType sgIf;
5418  AdmsSensFadType Irbp;
5419  AdmsSensFadType Ire;
5420  AdmsSensFadType Irbi;
5421  AdmsSensFadType Irbx;
5422  AdmsSensFadType Irci;
5423  AdmsSensFadType derf;
5424  AdmsSensFadType Iohm;
5425  AdmsSensFadType rKp1;
5426  AdmsSensFadType Kbcx;
5427  AdmsSensFadType Kbci;
5428  AdmsSensFadType expx_vbcx;
5429  AdmsSensFadType argx_vbcx;
5430  AdmsSensFadType Ircx;
5431  AdmsSensFadType Ibc;
5432  AdmsSensFadType Igc;
5433  AdmsSensFadType avalf;
5434  AdmsSensFadType avalf_exparg;
5435  AdmsSensFadType Ibep;
5436  AdmsSensFadType expn_vbep;
5437  AdmsSensFadType argn_vbep;
5438  AdmsSensFadType Ibcj;
5439  AdmsSensFadType expn_vbci;
5440  AdmsSensFadType argn_vbci;
5441  AdmsSensFadType Ibex;
5442  AdmsSensFadType Ibe;
5443  AdmsSensFadType expx_vbei;
5444  AdmsSensFadType argx_vbei;
5445  AdmsSensFadType expn_vbei;
5446  AdmsSensFadType argn_vbei;
5447  AdmsSensFadType argi_vbex;
5448  AdmsSensFadType expi_vbex;
5449  AdmsSensFadType argn_vbex;
5450  AdmsSensFadType expn_vbex;
5451  AdmsSensFadType argx_vbex;
5452  AdmsSensFadType expx_vbex;
5453  AdmsSensFadType qbp;
5454  AdmsSensFadType q2p;
5455  AdmsSensFadType Ifp;
5456  AdmsSensFadType expx_vbci;
5457  AdmsSensFadType argx_vbci;
5458  AdmsSensFadType expi_vbep;
5459  AdmsSensFadType argi_vbep;
5460  AdmsSensFadType Itzf;
5461  AdmsSensFadType Itzr;
5462  AdmsSensFadType qb;
5463  AdmsSensFadType q2;
5464  AdmsSensFadType q1;
5465  AdmsSensFadType q1z;
5466  AdmsSensFadType Iri;
5467  AdmsSensFadType expi_vbci;
5468  AdmsSensFadType argi_vbci;
5469  AdmsSensFadType Ifi;
5470  AdmsSensFadType expi_vbei;
5471  AdmsSensFadType argi_vbei;
5472  AdmsSensFadType qdbep;
5473  AdmsSensFadType qhi_vbep;
5474  AdmsSensFadType qlo_vbep;
5475  AdmsSensFadType dvh_vbep;
5476  AdmsSensFadType ql_vbep;
5477  AdmsSensFadType cl_vbep;
5478  AdmsSensFadType sel_vbep;
5479  AdmsSensFadType vl_vbep;
5480  AdmsSensFadType vnl_vbep;
5481  AdmsSensFadType vn_vbep;
5482  AdmsSensFadType mv_vbep;
5483  AdmsSensFadType dv_vbep;
5484  AdmsSensFadType qdbc;
5485  AdmsSensFadType qhi_vbci;
5486  AdmsSensFadType qlo_vbci;
5487  AdmsSensFadType dvh_vbci;
5488  AdmsSensFadType ql_vbci;
5489  AdmsSensFadType cl_vbci;
5490  AdmsSensFadType cmx;
5491  AdmsSensFadType crt;
5492  AdmsSensFadType sel_vbci;
5493  AdmsSensFadType vl_vbci;
5494  AdmsSensFadType vnl_vbci;
5495  AdmsSensFadType vn_vbci;
5496  AdmsSensFadType qlo0;
5497  AdmsSensFadType vnl0;
5498  AdmsSensFadType vn0;
5499  AdmsSensFadType mv_vbci;
5500  AdmsSensFadType dv_vbci;
5501  AdmsSensFadType qdbex;
5502  AdmsSensFadType qhi_vbex;
5503  AdmsSensFadType qlo_vbex;
5504  AdmsSensFadType dvh_vbex;
5505  AdmsSensFadType vl_vbex;
5506  AdmsSensFadType mv_vbex;
5507  AdmsSensFadType dv_vbex;
5508  AdmsSensFadType qdbe;
5509  AdmsSensFadType qhi_vbei;
5510  AdmsSensFadType qlo_vbei;
5511  AdmsSensFadType pwq;
5512  AdmsSensFadType dvh_vbei;
5513  AdmsSensFadType vl_vbei;
5514  AdmsSensFadType mv_vbei;
5515  AdmsSensFadType dv_vbei;
5516  AdmsSensFadType q0;
5517  AdmsSensFadType vl0;
5518  AdmsSensFadType mv0;
5519  AdmsSensFadType dv0;
5520  AdmsSensFadType slTF;
5521  AdmsSensFadType IITF;
5522  AdmsSensFadType IVTF;
5523  AdmsSensFadType IHRCF;
5524  AdmsSensFadType IVO;
5525  AdmsSensFadType IIKP;
5526  AdmsSensFadType IIKR;
5527  AdmsSensFadType IIKF;
5528  AdmsSensFadType IVER;
5529  AdmsSensFadType IVEF;
5530  AdmsSensFadType EBBEatT;
5531  AdmsSensFadType VOatT;
5532  AdmsSensFadType GAMMatT;
5533  AdmsSensFadType CJCPatT;
5534  AdmsSensFadType CJEPatT;
5535  AdmsSensFadType CJCatT;
5536  AdmsSensFadType CJEatT;
5537  AdmsSensFadType PSatT;
5538  AdmsSensFadType PCatT;
5539  AdmsSensFadType PEatT;
5540  AdmsSensFadType psiin;
5541  AdmsSensFadType psiio;
5542  AdmsSensFadType NBBEatT;
5543  AdmsSensFadType VBBEatT;
5544  AdmsSensFadType AVC2atT;
5545  AdmsSensFadType NRatT;
5546  AdmsSensFadType NFatT;
5547  AdmsSensFadType IBCNPatT;
5548  AdmsSensFadType IBCIPatT;
5549  AdmsSensFadType IBENPatT;
5550  AdmsSensFadType IBEIPatT;
5551  AdmsSensFadType IBCNatT;
5552  AdmsSensFadType IBCIatT;
5553  AdmsSensFadType IBENatT;
5554  AdmsSensFadType IBEIatT;
5555  AdmsSensFadType ISPatT;
5556  AdmsSensFadType ISRRatT;
5557  AdmsSensFadType ISatT;
5558  AdmsSensFadType RBPatT;
5559  AdmsSensFadType RSatT;
5560  AdmsSensFadType REatT;
5561  AdmsSensFadType RBIatT;
5562  AdmsSensFadType RBXatT;
5563  AdmsSensFadType RCIatT;
5564  AdmsSensFadType RCXatT;
5565  AdmsSensFadType IKFatT;
5566  AdmsSensFadType dT;
5567  AdmsSensFadType rT;
5568  AdmsSensFadType Vtv;
5569  AdmsSensFadType Tdev;
5570  AdmsSensFadType Tini;
5571  AdmsSensFadType Vcei;
5572  AdmsSensFadType Vbc;
5573  AdmsSensFadType Vrbp;
5574  AdmsSensFadType Vre;
5575  AdmsSensFadType Vrbx;
5576  AdmsSensFadType Vrbi;
5577  AdmsSensFadType Vrci;
5578  AdmsSensFadType Vrcx;
5579  AdmsSensFadType Vbe;
5580  double Vrth;
5581  AdmsSensFadType Vbep;
5582  AdmsSensFadType Vbcx;
5583  AdmsSensFadType Vbex;
5584  AdmsSensFadType Vbci;
5585  AdmsSensFadType Vbei;
5586  AdmsSensFadType tVCrit;
5587 
5588 
5589  // -- code converted from analog/code block
5590  tVCrit = (adms_vt(admsTemperature)*log((adms_vt(admsTemperature)/(1.41421356237309504880*modelPar_IS))));
5591  Vbei = probeVars[admsProbeID_V_bi_ei];
5592 
5593  Vbci = probeVars[admsProbeID_V_bi_ci];
5594 
5595  Vbex = probeVars[admsProbeID_V_bx_ei];
5596 
5597  Vbcx = probeVars[admsProbeID_V_bi_cx];
5598 
5599  Vbep = probeVars[admsProbeID_V_bx_bp];
5600 
5601  Vrth = probeVars[admsProbeID_V_dt_GND];
5602 
5603  Vbe = probeVars[admsProbeID_V_b_e];
5604 
5605  Vrcx = (modelPar_dtype*(probeVars[admsProbeID_V_c_cx]));
5606  Vrci = (modelPar_dtype*(probeVars[admsProbeID_V_cx_ci]));
5607  Vrbi = (modelPar_dtype*(probeVars[admsProbeID_V_bx_bi]));
5608  Vrbx = (modelPar_dtype*(probeVars[admsProbeID_V_b_bx]));
5609  Vre = (modelPar_dtype*(probeVars[admsProbeID_V_e_ei]));
5610  Vrbp = (modelPar_dtype*(probeVars[admsProbeID_V_bp_cx]));
5611  Vbc = (modelPar_dtype*(probeVars[admsProbeID_V_b_c]));
5612  Vcei = (modelPar_dtype*(probeVars[admsProbeID_V_ci_ei]));
5613  Tini = (2.731500e+02+modelPar_TNOM);
5614  Tdev = ((admsTemperature+instancePar_DTEMP)+Vrth);
5615  Vtv = ((1.380662e-23*Tdev)/1.602189e-19);
5616  rT = (Tdev/Tini);
5617  dT = (Tdev-Tini);
5618  IKFatT = (modelPar_IKF*pow(rT,modelPar_XIKF));
5619  RCXatT = (modelPar_RCX*pow(rT,modelPar_XRCX));
5620  RCIatT = (modelPar_RCI*pow(rT,modelPar_XRCI));
5621  RBXatT = (modelPar_RBX*pow(rT,modelPar_XRBX));
5622  RBIatT = (modelPar_RBI*pow(rT,modelPar_XRBI));
5623  REatT = (modelPar_RE*pow(rT,modelPar_XRE));
5624  RSatT = (modelPar_RS*pow(rT,modelPar_XRS));
5625  RBPatT = (modelPar_RBP*pow(rT,modelPar_XRBP));
5626  ISatT = (modelPar_IS*pow((pow(rT,modelPar_XIS)*exp((((-modelPar_EA)*(1.0-rT))/Vtv))),(1.0/modelPar_NF)));
5627  ISRRatT = (modelPar_ISRR*pow((pow(rT,modelPar_XISR)*exp((((-modelPar_DEAR)*(1.0-rT))/Vtv))),(1.0/modelPar_NR)));
5628  ISPatT = (modelPar_ISP*pow((pow(rT,modelPar_XIS)*exp((((-modelPar_EAP)*(1.0-rT))/Vtv))),(1.0/modelPar_NFP)));
5629  IBEIatT = (modelPar_IBEI*pow((pow(rT,modelPar_XII)*exp((((-modelPar_EAIE)*(1.0-rT))/Vtv))),(1.0/modelPar_NEI)));
5630  IBENatT = (modelPar_IBEN*pow((pow(rT,modelPar_XIN)*exp((((-modelPar_EANE)*(1.0-rT))/Vtv))),(1.0/modelPar_NEN)));
5631  IBCIatT = (modelPar_IBCI*pow((pow(rT,modelPar_XII)*exp((((-modelPar_EAIC)*(1.0-rT))/Vtv))),(1.0/modelPar_NCI)));
5632  IBCNatT = (modelPar_IBCN*pow((pow(rT,modelPar_XIN)*exp((((-modelPar_EANC)*(1.0-rT))/Vtv))),(1.0/modelPar_NCN)));
5633  IBEIPatT = (modelPar_IBEIP*pow((pow(rT,modelPar_XII)*exp((((-modelPar_EAIC)*(1.0-rT))/Vtv))),(1.0/modelPar_NCI)));
5634  IBENPatT = (modelPar_IBENP*pow((pow(rT,modelPar_XIN)*exp((((-modelPar_EANC)*(1.0-rT))/Vtv))),(1.0/modelPar_NCN)));
5635  IBCIPatT = (modelPar_IBCIP*pow((pow(rT,modelPar_XII)*exp((((-modelPar_EAIS)*(1.0-rT))/Vtv))),(1.0/modelPar_NCIP)));
5636  IBCNPatT = (modelPar_IBCNP*pow((pow(rT,modelPar_XIN)*exp((((-modelPar_EANS)*(1.0-rT))/Vtv))),(1.0/modelPar_NCNP)));
5637  NFatT = (modelPar_NF*(1.0+(dT*modelPar_TNF)));
5638  NRatT = (modelPar_NR*(1.0+(dT*modelPar_TNF)));
5639  AVC2atT = (modelPar_AVC2*(1.0+(dT*modelPar_TAVC)));
5640  VBBEatT = (modelPar_VBBE*(1.0+(dT*(modelPar_TVBBE1+(dT*modelPar_TVBBE2)))));
5641  NBBEatT = (modelPar_NBBE*(1.0+(dT*modelPar_TNBBE)));
5642  psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*modelPar_PE)*rT)/Vtv))-exp(((((-0.5)*modelPar_PE)*rT)/Vtv)))));
5643  psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-(modelPar_EAIE*(rT-1.0)));
5644  PEatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
5645  psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*modelPar_PC)*rT)/Vtv))-exp(((((-0.5)*modelPar_PC)*rT)/Vtv)))));
5646  psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-(modelPar_EAIC*(rT-1.0)));
5647  PCatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
5648  psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*modelPar_PS)*rT)/Vtv))-exp(((((-0.5)*modelPar_PS)*rT)/Vtv)))));
5649  psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-(modelPar_EAIS*(rT-1.0)));
5650  PSatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
5651  CJEatT = (modelPar_CJE*pow((modelPar_PE/PEatT),modelPar_ME));
5652  CJCatT = (modelPar_CJC*pow((modelPar_PC/PCatT),modelPar_MC));
5653  CJEPatT = (modelPar_CJEP*pow((modelPar_PC/PCatT),modelPar_MC));
5654  CJCPatT = (modelPar_CJCP*pow((modelPar_PS/PSatT),modelPar_MS));
5655  GAMMatT = ((modelPar_GAMM*pow(rT,modelPar_XIS))*exp((((-modelPar_EA)*(1.0-rT))/Vtv)));
5656  VOatT = (modelPar_VO*pow(rT,modelPar_XVO));
5657  EBBEatT = exp(((-VBBEatT)/(NBBEatT*Vtv)));
5658  IVEF = adms_ternary_op<AdmsSensFadType>((modelPar_VEF>0.0),(1.0/modelPar_VEF),0.0);
5659  IVER = adms_ternary_op<AdmsSensFadType>((modelPar_VER>0.0),(1.0/modelPar_VER),0.0);
5660  IIKF = 0.0;
5661  if ((modelPar_IKF>0.0))
5662  {
5663  IIKF = (1.0/IKFatT);
5664  }
5665  IIKR = adms_ternary_op<AdmsSensFadType>((modelPar_IKR>0.0),(1.0/modelPar_IKR),0.0);
5666  IIKP = adms_ternary_op<AdmsSensFadType>((modelPar_IKP>0.0),(1.0/modelPar_IKP),0.0);
5667  IVO = 0.0;
5668  if ((modelPar_VO>0.0))
5669  {
5670  IVO = (1.0/VOatT);
5671  }
5672  IHRCF = adms_ternary_op<AdmsSensFadType>((modelPar_HRCF>0.0),(1.0/modelPar_HRCF),0.0);
5673  IVTF = adms_ternary_op<AdmsSensFadType>((modelPar_VTF>0.0),(1.0/modelPar_VTF),0.0);
5674  IITF = adms_ternary_op<AdmsSensFadType>((modelPar_ITF>0.0),(1.0/modelPar_ITF),0.0);
5675  slTF = ((modelPar_ITF>0.0)?0.0:1.0);
5676  dv0 = ((-PEatT)*modelPar_FC);
5677  if ((modelPar_AJE<=0.0))
5678  {
5679  dvh_vbei = (Vbei+dv0);
5680  if ((dvh_vbei>0.0))
5681  {
5682  pwq = pow((1.0-modelPar_FC),((-1.0)-modelPar_ME));
5683  qlo_vbei = ((PEatT*(1.0-((pwq*(1.0-modelPar_FC))*(1.0-modelPar_FC))))/(1.0-modelPar_ME));
5684  qhi_vbei = ((dvh_vbei*((1.0-modelPar_FC)+(((0.5*modelPar_ME)*dvh_vbei)/PEatT)))*pwq);
5685  }
5686  else
5687  {
5688  qlo_vbei = ((PEatT*(1.0-pow((1.0-(Vbei/PEatT)),(1.0-modelPar_ME))))/(1.0-modelPar_ME));
5689  qhi_vbei = 0.0;
5690  }
5691  qdbe = (qlo_vbei+qhi_vbei);
5692  }
5693  else
5694  {
5695  mv0 = sqrt(((dv0*dv0)+((4*modelPar_AJE)*modelPar_AJE)));
5696  vl0 = ((-0.5)*(dv0+mv0));
5697  q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-modelPar_ME)))/(1.0-modelPar_ME));
5698  dv_vbei = (Vbei+dv0);
5699  mv_vbei = sqrt(((dv_vbei*dv_vbei)+((4*modelPar_AJE)*modelPar_AJE)));
5700  vl_vbei = ((0.5*(dv_vbei-mv_vbei))-dv0);
5701  qlo_vbei = (((-PEatT)*pow((1.0-(vl_vbei/PEatT)),(1.0-modelPar_ME)))/(1.0-modelPar_ME));
5702  qdbe = ((qlo_vbei+(pow((1.0-modelPar_FC),(-modelPar_ME))*((Vbei-vl_vbei)+vl0)))-q0);
5703  }
5704  dv0 = ((-PEatT)*modelPar_FC);
5705  if ((modelPar_AJE<=0.0))
5706  {
5707  dvh_vbex = (Vbex+dv0);
5708  if ((dvh_vbex>0.0))
5709  {
5710  pwq = pow((1.0-modelPar_FC),((-1.0)-modelPar_ME));
5711  qlo_vbex = ((PEatT*(1.0-((pwq*(1.0-modelPar_FC))*(1.0-modelPar_FC))))/(1.0-modelPar_ME));
5712  qhi_vbex = ((dvh_vbex*((1.0-modelPar_FC)+(((0.5*modelPar_ME)*dvh_vbex)/PEatT)))*pwq);
5713  }
5714  else
5715  {
5716  qlo_vbex = ((PEatT*(1.0-pow((1.0-(Vbex/PEatT)),(1.0-modelPar_ME))))/(1.0-modelPar_ME));
5717  qhi_vbex = 0.0;
5718  }
5719  qdbex = (qlo_vbex+qhi_vbex);
5720  }
5721  else
5722  {
5723  mv0 = sqrt(((dv0*dv0)+((4*modelPar_AJE)*modelPar_AJE)));
5724  vl0 = ((-0.5)*(dv0+mv0));
5725  q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-modelPar_ME)))/(1.0-modelPar_ME));
5726  dv_vbex = (Vbex+dv0);
5727  mv_vbex = sqrt(((dv_vbex*dv_vbex)+((4*modelPar_AJE)*modelPar_AJE)));
5728  vl_vbex = ((0.5*(dv_vbex-mv_vbex))-dv0);
5729  qlo_vbex = (((-PEatT)*pow((1.0-(vl_vbex/PEatT)),(1.0-modelPar_ME)))/(1.0-modelPar_ME));
5730  qdbex = ((qlo_vbex+(pow((1.0-modelPar_FC),(-modelPar_ME))*((Vbex-vl_vbex)+vl0)))-q0);
5731  }
5732  dv0 = ((-PCatT)*modelPar_FC);
5733  if ((modelPar_AJC<=0.0))
5734  {
5735  dvh_vbci = (Vbci+dv0);
5736  if ((dvh_vbci>0.0))
5737  {
5738  pwq = pow((1.0-modelPar_FC),((-1.0)-modelPar_MC));
5739  qlo_vbci = ((PCatT*(1.0-((pwq*(1.0-modelPar_FC))*(1.0-modelPar_FC))))/(1.0-modelPar_MC));
5740  qhi_vbci = ((dvh_vbci*((1.0-modelPar_FC)+(((0.5*modelPar_MC)*dvh_vbci)/PCatT)))*pwq);
5741  }
5742  else
5743  {
5744  if (((modelPar_VRT>0.0)&&(Vbci<(-modelPar_VRT))))
5745  {
5746  qlo_vbci = ((PCatT*(1.0-(pow((1.0+(modelPar_VRT/PCatT)),(1.0-modelPar_MC))*(1.0-(((1.0-modelPar_MC)*(Vbci+modelPar_VRT))/(PCatT+modelPar_VRT))))))/(1.0-modelPar_MC));
5747  }
5748  else
5749  {
5750  qlo_vbci = ((PCatT*(1.0-pow((1.0-(Vbci/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
5751  }
5752  qhi_vbci = 0.0;
5753  }
5754  qdbc = (qlo_vbci+qhi_vbci);
5755  }
5756  else
5757  {
5758  if (((modelPar_VRT>0.0)&&(modelPar_ART>0.0)))
5759  {
5760  vn0 = ((modelPar_VRT+dv0)/(modelPar_VRT-dv0));
5761  vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*modelPar_AJC)*modelPar_AJC)))+sqrt((((vn0+1.0)*(vn0+1))+((4*modelPar_ART)*modelPar_ART)))));
5762  vl0 = (0.5*(((vnl0*(modelPar_VRT-dv0))-modelPar_VRT)-dv0));
5763  qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
5764  vn_vbci = ((((2*Vbci)+modelPar_VRT)+dv0)/(modelPar_VRT-dv0));
5765  vnl_vbci = ((2.0*vn_vbci)/(sqrt((((vn_vbci-1.0)*(vn_vbci-1))+((4*modelPar_AJC)*modelPar_AJC)))+sqrt((((vn_vbci+1.0)*(vn_vbci+1))+((4*modelPar_ART)*modelPar_ART)))));
5766  vl_vbci = (0.5*(((vnl_vbci*(modelPar_VRT-dv0))-modelPar_VRT)-dv0));
5767  qlo_vbci = ((PCatT*(1.0-pow((1.0-(vl_vbci/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
5768  sel_vbci = (0.5*(vnl_vbci+1.0));
5769  crt = pow((1.0+(modelPar_VRT/PCatT)),(-modelPar_MC));
5770  cmx = pow((1.0+(dv0/PCatT)),(-modelPar_MC));
5771  cl_vbci = (((1.0-sel_vbci)*crt)+(sel_vbci*cmx));
5772  ql_vbci = (((Vbci-vl_vbci)+vl0)*cl_vbci);
5773  qdbc = ((ql_vbci+qlo_vbci)-qlo0);
5774  }
5775  else
5776  {
5777  mv0 = sqrt(((dv0*dv0)+((4*modelPar_AJC)*modelPar_AJC)));
5778  vl0 = ((-0.5)*(dv0+mv0));
5779  q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-modelPar_MC)))/(1.0-modelPar_MC));
5780  dv_vbci = (Vbci+dv0);
5781  mv_vbci = sqrt(((dv_vbci*dv_vbci)+((4*modelPar_AJC)*modelPar_AJC)));
5782  vl_vbci = ((0.5*(dv_vbci-mv_vbci))-dv0);
5783  qlo_vbci = (((-PCatT)*pow((1.0-(vl_vbci/PCatT)),(1.0-modelPar_MC)))/(1.0-modelPar_MC));
5784  qdbc = ((qlo_vbci+(pow((1.0-modelPar_FC),(-modelPar_MC))*((Vbci-vl_vbci)+vl0)))-q0);
5785  }
5786  }
5787  dv0 = ((-PCatT)*modelPar_FC);
5788  if ((modelPar_AJC<=0.0))
5789  {
5790  dvh_vbep = (Vbep+dv0);
5791  if ((dvh_vbep>0.0))
5792  {
5793  pwq = pow((1.0-modelPar_FC),((-1.0)-modelPar_MC));
5794  qlo_vbep = ((PCatT*(1.0-((pwq*(1.0-modelPar_FC))*(1.0-modelPar_FC))))/(1.0-modelPar_MC));
5795  qhi_vbep = ((dvh_vbep*((1.0-modelPar_FC)+(((0.5*modelPar_MC)*dvh_vbep)/PCatT)))*pwq);
5796  }
5797  else
5798  {
5799  if (((modelPar_VRT>0.0)&&(Vbep<(-modelPar_VRT))))
5800  {
5801  qlo_vbep = ((PCatT*(1.0-(pow((1.0+(modelPar_VRT/PCatT)),(1.0-modelPar_MC))*(1.0-(((1.0-modelPar_MC)*(Vbep+modelPar_VRT))/(PCatT+modelPar_VRT))))))/(1.0-modelPar_MC));
5802  }
5803  else
5804  {
5805  qlo_vbep = ((PCatT*(1.0-pow((1.0-(Vbep/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
5806  }
5807  qhi_vbep = 0.0;
5808  }
5809  qdbep = (qlo_vbep+qhi_vbep);
5810  }
5811  else
5812  {
5813  if (((modelPar_VRT>0.0)&&(modelPar_ART>0.0)))
5814  {
5815  vn0 = ((modelPar_VRT+dv0)/(modelPar_VRT-dv0));
5816  vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*modelPar_AJC)*modelPar_AJC)))+sqrt((((vn0+1.0)*(vn0+1))+((4*modelPar_ART)*modelPar_ART)))));
5817  vl0 = (0.5*(((vnl0*(modelPar_VRT-dv0))-modelPar_VRT)-dv0));
5818  qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
5819  vn_vbep = ((((2*Vbep)+modelPar_VRT)+dv0)/(modelPar_VRT-dv0));
5820  vnl_vbep = ((2.0*vn_vbep)/(sqrt((((vn_vbep-1.0)*(vn_vbep-1))+((4*modelPar_AJC)*modelPar_AJC)))+sqrt((((vn_vbep+1.0)*(vn_vbep+1))+((4*modelPar_ART)*modelPar_ART)))));
5821  vl_vbep = (0.5*(((vnl_vbep*(modelPar_VRT-dv0))-modelPar_VRT)-dv0));
5822  qlo_vbep = ((PCatT*(1.0-pow((1.0-(vl_vbep/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
5823  sel_vbep = (0.5*(vnl_vbep+1.0));
5824  crt = pow((1.0+(modelPar_VRT/PCatT)),(-modelPar_MC));
5825  cmx = pow((1.0+(dv0/PCatT)),(-modelPar_MC));
5826  cl_vbep = (((1.0-sel_vbep)*crt)+(sel_vbep*cmx));
5827  ql_vbep = (((Vbep-vl_vbep)+vl0)*cl_vbep);
5828  qdbep = ((ql_vbep+qlo_vbep)-qlo0);
5829  }
5830  else
5831  {
5832  mv0 = sqrt(((dv0*dv0)+((4*modelPar_AJC)*modelPar_AJC)));
5833  vl0 = ((-0.5)*(dv0+mv0));
5834  q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-modelPar_MC)))/(1.0-modelPar_MC));
5835  dv_vbep = (Vbep+dv0);
5836  mv_vbep = sqrt(((dv_vbep*dv_vbep)+((4*modelPar_AJC)*modelPar_AJC)));
5837  vl_vbep = ((0.5*(dv_vbep-mv_vbep))-dv0);
5838  qlo_vbep = (((-PCatT)*pow((1.0-(vl_vbep/PCatT)),(1.0-modelPar_MC)))/(1.0-modelPar_MC));
5839  qdbep = ((qlo_vbep+(pow((1.0-modelPar_FC),(-modelPar_MC))*((Vbep-vl_vbep)+vl0)))-q0);
5840  }
5841  }
5842  argi_vbei = (Vbei/(NFatT*Vtv));
5843  expi_vbei = limexp<AdmsSensFadType>(argi_vbei);
5844  Ifi = (ISatT*(expi_vbei-1.0));
5845  argi_vbci = (Vbci/(NRatT*Vtv));
5846  expi_vbci = limexp<AdmsSensFadType>(argi_vbci);
5847  Iri = ((ISatT*ISRRatT)*(expi_vbci-1.0));
5848  q1z = ((1.0+(qdbe*IVER))+(qdbc*IVEF));
5849  q1 = ((0.5*((sqrt((((q1z-1.0e-4)*(q1z-1.0e-4))+1.0e-8))+q1z)-1.0e-4))+1.0e-4);
5850  q2 = ((Ifi*IIKF)+(Iri*IIKR));
5851  if ((q2>0))
5852  {
5853  if ((modelPar_QBM<0.5))
5854  {
5855  qb = (0.5*(q1+pow((pow(q1,(1.0/modelPar_NKF))+(4.0*q2)),modelPar_NKF)));
5856  }
5857  else
5858  {
5859  qb = ((0.5*q1)*(1.0+pow((1.0+(4.0*q2)),modelPar_NKF)));
5860  }
5861  }
5862  else
5863  {
5864  qb = q1;
5865  }
5866  Itzr = (Iri/qb);
5867  Itzf = (Ifi/qb);
5868  if ((modelPar_ISP>0.0))
5869  {
5870  argi_vbep = (Vbep/(modelPar_NFP*Vtv));
5871  expi_vbep = limexp<AdmsSensFadType>(argi_vbep);
5872  argx_vbci = (Vbci/(modelPar_NFP*Vtv));
5873  expx_vbci = limexp<AdmsSensFadType>(argx_vbci);
5874  Ifp = (ISPatT*(((modelPar_WSP*expi_vbep)+((1.0-modelPar_WSP)*expx_vbci))-1.0));
5875  q2p = (Ifp*IIKP);
5876  qbp = (0.5*(1.0+sqrt((1.0+(4.0*q2p)))));
5877  }
5878  else
5879  {
5880  Ifp = 0.0;
5881  qbp = 1.0;
5882  }
5883  if ((modelPar_WBE==1.0))
5884  {
5885  argi_vbei = (Vbei/(modelPar_NEI*Vtv));
5886  expi_vbei = limexp<AdmsSensFadType>(argi_vbei);
5887  argn_vbei = (Vbei/(modelPar_NEN*Vtv));
5888  expn_vbei = limexp<AdmsSensFadType>(argn_vbei);
5889  if ((modelPar_VBBE>0.0))
5890  {
5891  argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
5892  expx_vbei = limexp<AdmsSensFadType>(argx_vbei);
5893  Ibe = (((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-(modelPar_IBBE*(expx_vbei-EBBEatT)));
5894  }
5895  else
5896  {
5897  Ibe = ((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)));
5898  }
5899  Ibex = 0.0;
5900  }
5901  else
5902  {
5903  if ((modelPar_WBE==0.0))
5904  {
5905  Ibe = 0.0;
5906  argi_vbex = (Vbex/(modelPar_NEI*Vtv));
5907  expi_vbex = limexp<AdmsSensFadType>(argi_vbex);
5908  argn_vbex = (Vbex/(modelPar_NEN*Vtv));
5909  expn_vbex = limexp<AdmsSensFadType>(argn_vbex);
5910  if ((modelPar_VBBE>0.0))
5911  {
5912  argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
5913  expx_vbex = limexp<AdmsSensFadType>(argx_vbex);
5914  Ibex = (((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-(modelPar_IBBE*(expx_vbex-EBBEatT)));
5915  }
5916  else
5917  {
5918  Ibex = ((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)));
5919  }
5920  }
5921  else
5922  {
5923  argi_vbei = (Vbei/(modelPar_NEI*Vtv));
5924  expi_vbei = limexp<AdmsSensFadType>(argi_vbei);
5925  argn_vbei = (Vbei/(modelPar_NEN*Vtv));
5926  expn_vbei = limexp<AdmsSensFadType>(argn_vbei);
5927  if ((modelPar_VBBE>0.0))
5928  {
5929  argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
5930  expx_vbei = limexp<AdmsSensFadType>(argx_vbei);
5931  Ibe = (modelPar_WBE*(((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-(modelPar_IBBE*(expx_vbei-EBBEatT))));
5932  }
5933  else
5934  {
5935  Ibe = (modelPar_WBE*((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0))));
5936  }
5937  argi_vbex = (Vbex/(modelPar_NEI*Vtv));
5938  expi_vbex = limexp<AdmsSensFadType>(argi_vbex);
5939  argn_vbex = (Vbex/(modelPar_NEN*Vtv));
5940  expn_vbex = limexp<AdmsSensFadType>(argn_vbex);
5941  if ((modelPar_VBBE>0.0))
5942  {
5943  argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
5944  expx_vbex = limexp<AdmsSensFadType>(argx_vbex);
5945  Ibex = ((1.0-modelPar_WBE)*(((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-(modelPar_IBBE*(expx_vbex-EBBEatT))));
5946  }
5947  else
5948  {
5949  Ibex = ((1.0-modelPar_WBE)*((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0))));
5950  }
5951  }
5952  }
5953  argi_vbci = (Vbci/(modelPar_NCI*Vtv));
5954  expi_vbci = limexp<AdmsSensFadType>(argi_vbci);
5955  argn_vbci = (Vbci/(modelPar_NCN*Vtv));
5956  expn_vbci = limexp<AdmsSensFadType>(argn_vbci);
5957  Ibcj = ((IBCIatT*(expi_vbci-1.0))+(IBCNatT*(expn_vbci-1.0)));
5958  if (((modelPar_IBEIP>0.0)||(modelPar_IBENP>0.0)))
5959  {
5960  argi_vbep = (Vbep/(modelPar_NCI*Vtv));
5961  expi_vbep = limexp<AdmsSensFadType>(argi_vbep);
5962  argn_vbep = (Vbep/(modelPar_NCN*Vtv));
5963  expn_vbep = limexp<AdmsSensFadType>(argn_vbep);
5964  Ibep = ((IBEIPatT*(expi_vbep-1.0))+(IBENPatT*(expn_vbep-1.0)));
5965  }
5966  else
5967  {
5968  Ibep = 0.0;
5969  }
5970  if ((modelPar_AVC1>0.0))
5971  {
5972  vl_vbci = (0.5*(sqrt((((PCatT-Vbci)*(PCatT-Vbci))+0.01))+(PCatT-Vbci)));
5973  avalf_exparg = ((-AVC2atT)*pow(vl_vbci,(modelPar_MC-1.0)));
5974  avalf = ((modelPar_AVC1*vl_vbci)*limexp<AdmsSensFadType>(avalf_exparg));
5975  Igc = (((Itzf-Itzr)-Ibcj)*avalf);
5976  }
5977  else
5978  {
5979  Igc = 0.0;
5980  }
5981  Ibc = (Ibcj-Igc);
5982  if ((modelPar_RCX>0.0))
5983  {
5984  Ircx = (Vrcx/RCXatT);
5985  }
5986  else
5987  {
5988  Ircx = 0.0;
5989  }
5990  argi_vbci = (Vbci/Vtv);
5991  expi_vbci = limexp<AdmsSensFadType>(argi_vbci);
5992  argx_vbcx = (Vbcx/Vtv);
5993  expx_vbcx = limexp<AdmsSensFadType>(argx_vbcx);
5994  Kbci = sqrt((1.0+(GAMMatT*expi_vbci)));
5995  Kbcx = sqrt((1.0+(GAMMatT*expx_vbcx)));
5996  if ((modelPar_RCI>0.0))
5997  {
5998  rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
5999  Iohm = ((Vrci+(Vtv*((Kbci-Kbcx)-log(rKp1))))/RCIatT);
6000  derf = (((IVO*RCIatT)*Iohm)/(1.0+(((0.5*IVO)*IHRCF)*sqrt(((Vrci*Vrci)+0.01)))));
6001  Irci = (Iohm/sqrt((1+(derf*derf))));
6002  }
6003  else
6004  {
6005  Irci = 0.0;
6006  }
6007  if ((modelPar_RBX>0.0))
6008  {
6009  Irbx = (Vrbx/RBXatT);
6010  }
6011  else
6012  {
6013  Irbx = 0.0;
6014  }
6015  if ((modelPar_RBI>0.0))
6016  {
6017  Irbi = ((Vrbi*qb)/RBIatT);
6018  }
6019  else
6020  {
6021  Irbi = 0.0;
6022  }
6023  if ((modelPar_RE>0.0))
6024  {
6025  Ire = (Vre/REatT);
6026  }
6027  else
6028  {
6029  Ire = 0.0;
6030  }
6031  if ((modelPar_RBP>0.0))
6032  {
6033  Irbp = ((Vrbp*qbp)/RBPatT);
6034  }
6035  else
6036  {
6037  Irbp = 0.0;
6038  }
6039  sgIf = ((Ifi>0.0)?1.0:0.0);
6040  rIf = ((Ifi*sgIf)*IITF);
6041  mIf = (rIf/(rIf+1.0));
6042  tff_exparg = ((Vbci*IVTF)/1.44);
6043  tff = ((modelPar_TF*(1.0+(modelPar_QTF*q1)))*(1.0+(((modelPar_XTF*limexp<AdmsSensFadType>(tff_exparg))*(slTF+(mIf*mIf)))*sgIf)));
6044  Qbe = (((CJEatT*qdbe)*modelPar_WBE)+((tff*Ifi)/qb));
6045  Qbex = ((CJEatT*qdbex)*(1.0-modelPar_WBE));
6046  Qbc = (((CJCatT*qdbc)+(modelPar_TR*Iri))+(modelPar_QCO*Kbci));
6047  Qbcx = (modelPar_QCO*Kbcx);
6048  Qbep = ((CJEPatT*qdbep)+(modelPar_TR*Ifp));
6049  Qbeo = (Vbe*modelPar_CBEO);
6050  Qbco = (Vbc*modelPar_CBCO);
6051  Ith = (-(((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itzf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp)));
6052  if ((modelPar_RTH>0.0))
6053  {
6054  Irth = (Vrth/modelPar_RTH);
6055  }
6056  else
6057  {
6058  Irth = 0.0;
6059  }
6060  Qcth = (Vrth*modelPar_CTH);
6061  // I(bi,ei) <+ (((M*dtype)*(Ibe+($simparam("gmin")*Vbei))))
6062  staticContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Ibe+(gmin*Vbei)));
6063  staticContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*(Ibe+(gmin*Vbei)));
6064  // I(bx,ei) <+ (((M*dtype)*(Ibex+($simparam("gmin")*Vbex))))
6065  staticContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*(Ibex+(gmin*Vbex)));
6066  staticContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*(Ibex+(gmin*Vbex)));
6067  // I(ci,ei) <+ (((M*dtype)*Itzf))
6068  staticContributions[admsNodeID_ci] += ((instancePar_M*modelPar_dtype)*Itzf);
6069  staticContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*Itzf);
6070  // I(ei,ci) <+ (((M*dtype)*Itzr))
6071  staticContributions[admsNodeID_ei] += ((instancePar_M*modelPar_dtype)*Itzr);
6072  staticContributions[admsNodeID_ci] -= ((instancePar_M*modelPar_dtype)*Itzr);
6073  // I(bi,ci) <+ (((M*dtype)*(Ibc+($simparam("gmin")*Vbci))))
6074  staticContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Ibc+(gmin*Vbci)));
6075  staticContributions[admsNodeID_ci] -= ((instancePar_M*modelPar_dtype)*(Ibc+(gmin*Vbci)));
6076  // I(bx,bp) <+ (((M*dtype)*(Ibep+($simparam("gmin")*Vbep))))
6077  staticContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*(Ibep+(gmin*Vbep)));
6078  staticContributions[admsNodeID_bp] -= ((instancePar_M*modelPar_dtype)*(Ibep+(gmin*Vbep)));
6079  if ((modelPar_RCX>0))
6080  {
6081  // I(c,cx) <+ (((M*dtype)*Ircx))
6082  staticContributions[admsNodeID_c] += ((instancePar_M*modelPar_dtype)*Ircx);
6083  staticContributions[admsNodeID_cx] -= ((instancePar_M*modelPar_dtype)*Ircx);
6084  }
6085  else
6086  {
6087  // V(c,cx) <+ (0.0)
6088  // do nothing at all
6089  }
6090  // I(cx,ci) <+ (((M*dtype)*(Irci+($simparam("gmin")*Vrci))))
6091  staticContributions[admsNodeID_cx] += ((instancePar_M*modelPar_dtype)*(Irci+(gmin*Vrci)));
6092  staticContributions[admsNodeID_ci] -= ((instancePar_M*modelPar_dtype)*(Irci+(gmin*Vrci)));
6093  if ((modelPar_RBX>0))
6094  {
6095  // I(b,bx) <+ (((M*dtype)*Irbx))
6096  staticContributions[admsNodeID_b] += ((instancePar_M*modelPar_dtype)*Irbx);
6097  staticContributions[admsNodeID_bx] -= ((instancePar_M*modelPar_dtype)*Irbx);
6098  }
6099  else
6100  {
6101  // V(b,bx) <+ (0.0)
6102  // do nothing at all
6103  }
6104  // I(bx,bi) <+ (((M*dtype)*Irbi))
6105  staticContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*Irbi);
6106  staticContributions[admsNodeID_bi] -= ((instancePar_M*modelPar_dtype)*Irbi);
6107  if ((modelPar_RE>0))
6108  {
6109  // I(e,ei) <+ (((M*dtype)*Ire))
6110  staticContributions[admsNodeID_e] += ((instancePar_M*modelPar_dtype)*Ire);
6111  staticContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*Ire);
6112  }
6113  else
6114  {
6115  // V(e,ei) <+ (0.0)
6116  // do nothing at all
6117  }
6118  // I(bp,cx) <+ (((M*dtype)*Irbp))
6119  staticContributions[admsNodeID_bp] += ((instancePar_M*modelPar_dtype)*Irbp);
6120  staticContributions[admsNodeID_cx] -= ((instancePar_M*modelPar_dtype)*Irbp);
6121  // I(bi,ei) <+ (((M*dtype)*ddt(Qbe)))
6122  dynamicContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Qbe));
6123  dynamicContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*(Qbe));
6124  // I(bx,ei) <+ (((M*dtype)*ddt(Qbex)))
6125  dynamicContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*(Qbex));
6126  dynamicContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*(Qbex));
6127  // I(bi,ci) <+ (((M*dtype)*ddt(Qbc)))
6128  dynamicContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Qbc));
6129  dynamicContributions[admsNodeID_ci] -= ((instancePar_M*modelPar_dtype)*(Qbc));
6130  // I(bi,cx) <+ (((M*dtype)*ddt(Qbcx)))
6131  dynamicContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Qbcx));
6132  dynamicContributions[admsNodeID_cx] -= ((instancePar_M*modelPar_dtype)*(Qbcx));
6133  // I(bx,bp) <+ (((M*dtype)*ddt(Qbep)))
6134  dynamicContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*(Qbep));
6135  dynamicContributions[admsNodeID_bp] -= ((instancePar_M*modelPar_dtype)*(Qbep));
6136  // I(b,e) <+ (((M*dtype)*ddt(Qbeo)))
6137  dynamicContributions[admsNodeID_b] += ((instancePar_M*modelPar_dtype)*(Qbeo));
6138  dynamicContributions[admsNodeID_e] -= ((instancePar_M*modelPar_dtype)*(Qbeo));
6139  // I(b,c) <+ (((M*dtype)*ddt(Qbco)))
6140  dynamicContributions[admsNodeID_b] += ((instancePar_M*modelPar_dtype)*(Qbco));
6141  dynamicContributions[admsNodeID_c] -= ((instancePar_M*modelPar_dtype)*(Qbco));
6142  // I(dt,GND) <+ (Irth)
6143  staticContributions[admsNodeID_dt] += Irth;
6144  // I(dt,GND) <+ (Ith)
6145  staticContributions[admsNodeID_dt] += Ith;
6146  // I(dt,GND) <+ (ddt(Qcth))
6147  dynamicContributions[admsNodeID_dt] += (Qcth);
6148 }
6149 
6150 
6151 
6152 //-----------------------------------------------------------------------------
6153 // Function : InstanceSensitivity::operator()
6154 // Purpose : return sensitivity for a single instance parameter
6155 // Special Notes :
6156 // Scope : public
6157 // Creator : admsXml
6158 // Creation Date :
6159 //-----------------------------------------------------------------------------
6160 /// Compute sensitivity of a device instance's outputs to a specified instance
6161 /// parameter
6162 ///
6163 ///
6164 /// @param[in] entity The device entity that owns the parameter
6165 /// @param[in] name The unadorned parameter name specific to the entity
6166 /// @param[out] dfdp The derivative of the F vector with respect to the parameter
6167 /// @param[out] dqdp The derivative of the Q vector with respect to the parameter
6168 /// @param[out] dbdp The derivative of the B vector with respect to the parameter
6169 /// @param[out] Findices The indices into the F vector corresponding to the elements of dfdp
6170 /// @param[out] Qindices The indices into the Q vector corresponding to the elements of dfdp
6171 /// @param[out] Bindices The indices into the B vector corresponding to the elements of dfdp
6172 ///
6173 ///
6174 void InstanceSensitivity::operator()
6175  (
6176  const ParameterBase &entity,
6177  const std::string &name,
6178  std::vector<double> & dfdp,
6179  std::vector<double> & dqdp,
6180  std::vector<double> & dbdp,
6181  std::vector<int> & Findices,
6182  std::vector<int> & Qindices,
6183  std::vector<int> & Bindices
6184  ) const
6185 {
6186  const ParameterBase * e1 = &entity;
6187  const Instance & in = *(dynamic_cast<const Instance *> (e1));
6188  const Model & mod =in.model_;
6189 
6190  dfdp.resize(10+0);
6191  dqdp.resize(10+0);
6192  Findices.resize(10+0);
6193  Qindices.resize(10+0);
6194 
6195  std::vector <double> probeVars(15);
6196  std::vector <AdmsSensFadType> staticContributions(10+0);
6197  std::vector <AdmsSensFadType> dynamicContributions(10+0);
6198 
6199 
6200  // initialize contributions to zero (automatically sets derivatives to zero)
6201  for (int i=0; i < 10+0 ; ++i)
6202  {
6203  staticContributions[i]=0;
6204  dynamicContributions[i]=0;
6205  }
6206 
6207  // Copy out all the model parameters (doubles) into FAD types
6208  //reals
6209  AdmsSensFadType modelPar_TNOM=mod.TNOM;
6210  bool modelPar_given_TNOM=mod.given("TNOM");
6211  AdmsSensFadType modelPar_RCX=mod.RCX;
6212  bool modelPar_given_RCX=mod.given("RCX");
6213  AdmsSensFadType modelPar_RCI=mod.RCI;
6214  bool modelPar_given_RCI=mod.given("RCI");
6215  AdmsSensFadType modelPar_VO=mod.VO;
6216  bool modelPar_given_VO=mod.given("VO");
6217  AdmsSensFadType modelPar_GAMM=mod.GAMM;
6218  bool modelPar_given_GAMM=mod.given("GAMM");
6219  AdmsSensFadType modelPar_HRCF=mod.HRCF;
6220  bool modelPar_given_HRCF=mod.given("HRCF");
6221  AdmsSensFadType modelPar_RBX=mod.RBX;
6222  bool modelPar_given_RBX=mod.given("RBX");
6223  AdmsSensFadType modelPar_RBI=mod.RBI;
6224  bool modelPar_given_RBI=mod.given("RBI");
6225  AdmsSensFadType modelPar_RE=mod.RE;
6226  bool modelPar_given_RE=mod.given("RE");
6227  AdmsSensFadType modelPar_RS=mod.RS;
6228  bool modelPar_given_RS=mod.given("RS");
6229  AdmsSensFadType modelPar_RBP=mod.RBP;
6230  bool modelPar_given_RBP=mod.given("RBP");
6231  AdmsSensFadType modelPar_IS=mod.IS;
6232  bool modelPar_given_IS=mod.given("IS");
6233  AdmsSensFadType modelPar_NF=mod.NF;
6234  bool modelPar_given_NF=mod.given("NF");
6235  AdmsSensFadType modelPar_NR=mod.NR;
6236  bool modelPar_given_NR=mod.given("NR");
6237  AdmsSensFadType modelPar_FC=mod.FC;
6238  bool modelPar_given_FC=mod.given("FC");
6239  AdmsSensFadType modelPar_CBEO=mod.CBEO;
6240  bool modelPar_given_CBEO=mod.given("CBEO");
6241  AdmsSensFadType modelPar_CJE=mod.CJE;
6242  bool modelPar_given_CJE=mod.given("CJE");
6243  AdmsSensFadType modelPar_PE=mod.PE;
6244  bool modelPar_given_PE=mod.given("PE");
6245  AdmsSensFadType modelPar_ME=mod.ME;
6246  bool modelPar_given_ME=mod.given("ME");
6247  AdmsSensFadType modelPar_AJE=mod.AJE;
6248  bool modelPar_given_AJE=mod.given("AJE");
6249  AdmsSensFadType modelPar_CBCO=mod.CBCO;
6250  bool modelPar_given_CBCO=mod.given("CBCO");
6251  AdmsSensFadType modelPar_CJC=mod.CJC;
6252  bool modelPar_given_CJC=mod.given("CJC");
6253  AdmsSensFadType modelPar_QCO=mod.QCO;
6254  bool modelPar_given_QCO=mod.given("QCO");
6255  AdmsSensFadType modelPar_CJEP=mod.CJEP;
6256  bool modelPar_given_CJEP=mod.given("CJEP");
6257  AdmsSensFadType modelPar_PC=mod.PC;
6258  bool modelPar_given_PC=mod.given("PC");
6259  AdmsSensFadType modelPar_MC=mod.MC;
6260  bool modelPar_given_MC=mod.given("MC");
6261  AdmsSensFadType modelPar_AJC=mod.AJC;
6262  bool modelPar_given_AJC=mod.given("AJC");
6263  AdmsSensFadType modelPar_CJCP=mod.CJCP;
6264  bool modelPar_given_CJCP=mod.given("CJCP");
6265  AdmsSensFadType modelPar_PS=mod.PS;
6266  bool modelPar_given_PS=mod.given("PS");
6267  AdmsSensFadType modelPar_MS=mod.MS;
6268  bool modelPar_given_MS=mod.given("MS");
6269  AdmsSensFadType modelPar_AJS=mod.AJS;
6270  bool modelPar_given_AJS=mod.given("AJS");
6271  AdmsSensFadType modelPar_IBEI=mod.IBEI;
6272  bool modelPar_given_IBEI=mod.given("IBEI");
6273  AdmsSensFadType modelPar_WBE=mod.WBE;
6274  bool modelPar_given_WBE=mod.given("WBE");
6275  AdmsSensFadType modelPar_NEI=mod.NEI;
6276  bool modelPar_given_NEI=mod.given("NEI");
6277  AdmsSensFadType modelPar_IBEN=mod.IBEN;
6278  bool modelPar_given_IBEN=mod.given("IBEN");
6279  AdmsSensFadType modelPar_NEN=mod.NEN;
6280  bool modelPar_given_NEN=mod.given("NEN");
6281  AdmsSensFadType modelPar_IBCI=mod.IBCI;
6282  bool modelPar_given_IBCI=mod.given("IBCI");
6283  AdmsSensFadType modelPar_NCI=mod.NCI;
6284  bool modelPar_given_NCI=mod.given("NCI");
6285  AdmsSensFadType modelPar_IBCN=mod.IBCN;
6286  bool modelPar_given_IBCN=mod.given("IBCN");
6287  AdmsSensFadType modelPar_NCN=mod.NCN;
6288  bool modelPar_given_NCN=mod.given("NCN");
6289  AdmsSensFadType modelPar_AVC1=mod.AVC1;
6290  bool modelPar_given_AVC1=mod.given("AVC1");
6291  AdmsSensFadType modelPar_AVC2=mod.AVC2;
6292  bool modelPar_given_AVC2=mod.given("AVC2");
6293  AdmsSensFadType modelPar_ISP=mod.ISP;
6294  bool modelPar_given_ISP=mod.given("ISP");
6295  AdmsSensFadType modelPar_WSP=mod.WSP;
6296  bool modelPar_given_WSP=mod.given("WSP");
6297  AdmsSensFadType modelPar_NFP=mod.NFP;
6298  bool modelPar_given_NFP=mod.given("NFP");
6299  AdmsSensFadType modelPar_IBEIP=mod.IBEIP;
6300  bool modelPar_given_IBEIP=mod.given("IBEIP");
6301  AdmsSensFadType modelPar_IBENP=mod.IBENP;
6302  bool modelPar_given_IBENP=mod.given("IBENP");
6303  AdmsSensFadType modelPar_IBCIP=mod.IBCIP;
6304  bool modelPar_given_IBCIP=mod.given("IBCIP");
6305  AdmsSensFadType modelPar_NCIP=mod.NCIP;
6306  bool modelPar_given_NCIP=mod.given("NCIP");
6307  AdmsSensFadType modelPar_IBCNP=mod.IBCNP;
6308  bool modelPar_given_IBCNP=mod.given("IBCNP");
6309  AdmsSensFadType modelPar_NCNP=mod.NCNP;
6310  bool modelPar_given_NCNP=mod.given("NCNP");
6311  AdmsSensFadType modelPar_VEF=mod.VEF;
6312  bool modelPar_given_VEF=mod.given("VEF");
6313  AdmsSensFadType modelPar_VER=mod.VER;
6314  bool modelPar_given_VER=mod.given("VER");
6315  AdmsSensFadType modelPar_IKF=mod.IKF;
6316  bool modelPar_given_IKF=mod.given("IKF");
6317  AdmsSensFadType modelPar_IKR=mod.IKR;
6318  bool modelPar_given_IKR=mod.given("IKR");
6319  AdmsSensFadType modelPar_IKP=mod.IKP;
6320  bool modelPar_given_IKP=mod.given("IKP");
6321  AdmsSensFadType modelPar_TF=mod.TF;
6322  bool modelPar_given_TF=mod.given("TF");
6323  AdmsSensFadType modelPar_QTF=mod.QTF;
6324  bool modelPar_given_QTF=mod.given("QTF");
6325  AdmsSensFadType modelPar_XTF=mod.XTF;
6326  bool modelPar_given_XTF=mod.given("XTF");
6327  AdmsSensFadType modelPar_VTF=mod.VTF;
6328  bool modelPar_given_VTF=mod.given("VTF");
6329  AdmsSensFadType modelPar_ITF=mod.ITF;
6330  bool modelPar_given_ITF=mod.given("ITF");
6331  AdmsSensFadType modelPar_TR=mod.TR;
6332  bool modelPar_given_TR=mod.given("TR");
6333  AdmsSensFadType modelPar_TD=mod.TD;
6334  bool modelPar_given_TD=mod.given("TD");
6335  AdmsSensFadType modelPar_KFN=mod.KFN;
6336  bool modelPar_given_KFN=mod.given("KFN");
6337  AdmsSensFadType modelPar_AFN=mod.AFN;
6338  bool modelPar_given_AFN=mod.given("AFN");
6339  AdmsSensFadType modelPar_BFN=mod.BFN;
6340  bool modelPar_given_BFN=mod.given("BFN");
6341  AdmsSensFadType modelPar_XRE=mod.XRE;
6342  bool modelPar_given_XRE=mod.given("XRE");
6343  AdmsSensFadType modelPar_XRBI=mod.XRBI;
6344  bool modelPar_given_XRBI=mod.given("XRBI");
6345  AdmsSensFadType modelPar_XRCI=mod.XRCI;
6346  bool modelPar_given_XRCI=mod.given("XRCI");
6347  AdmsSensFadType modelPar_XRS=mod.XRS;
6348  bool modelPar_given_XRS=mod.given("XRS");
6349  AdmsSensFadType modelPar_XVO=mod.XVO;
6350  bool modelPar_given_XVO=mod.given("XVO");
6351  AdmsSensFadType modelPar_EA=mod.EA;
6352  bool modelPar_given_EA=mod.given("EA");
6353  AdmsSensFadType modelPar_EAIE=mod.EAIE;
6354  bool modelPar_given_EAIE=mod.given("EAIE");
6355  AdmsSensFadType modelPar_EAIC=mod.EAIC;
6356  bool modelPar_given_EAIC=mod.given("EAIC");
6357  AdmsSensFadType modelPar_EAIS=mod.EAIS;
6358  bool modelPar_given_EAIS=mod.given("EAIS");
6359  AdmsSensFadType modelPar_EANE=mod.EANE;
6360  bool modelPar_given_EANE=mod.given("EANE");
6361  AdmsSensFadType modelPar_EANC=mod.EANC;
6362  bool modelPar_given_EANC=mod.given("EANC");
6363  AdmsSensFadType modelPar_EANS=mod.EANS;
6364  bool modelPar_given_EANS=mod.given("EANS");
6365  AdmsSensFadType modelPar_XIS=mod.XIS;
6366  bool modelPar_given_XIS=mod.given("XIS");
6367  AdmsSensFadType modelPar_XII=mod.XII;
6368  bool modelPar_given_XII=mod.given("XII");
6369  AdmsSensFadType modelPar_XIN=mod.XIN;
6370  bool modelPar_given_XIN=mod.given("XIN");
6371  AdmsSensFadType modelPar_TNF=mod.TNF;
6372  bool modelPar_given_TNF=mod.given("TNF");
6373  AdmsSensFadType modelPar_TAVC=mod.TAVC;
6374  bool modelPar_given_TAVC=mod.given("TAVC");
6375  AdmsSensFadType modelPar_RTH=mod.RTH;
6376  bool modelPar_given_RTH=mod.given("RTH");
6377  AdmsSensFadType modelPar_CTH=mod.CTH;
6378  bool modelPar_given_CTH=mod.given("CTH");
6379  AdmsSensFadType modelPar_VRT=mod.VRT;
6380  bool modelPar_given_VRT=mod.given("VRT");
6381  AdmsSensFadType modelPar_ART=mod.ART;
6382  bool modelPar_given_ART=mod.given("ART");
6383  AdmsSensFadType modelPar_CCSO=mod.CCSO;
6384  bool modelPar_given_CCSO=mod.given("CCSO");
6385  AdmsSensFadType modelPar_QBM=mod.QBM;
6386  bool modelPar_given_QBM=mod.given("QBM");
6387  AdmsSensFadType modelPar_NKF=mod.NKF;
6388  bool modelPar_given_NKF=mod.given("NKF");
6389  AdmsSensFadType modelPar_XIKF=mod.XIKF;
6390  bool modelPar_given_XIKF=mod.given("XIKF");
6391  AdmsSensFadType modelPar_XRCX=mod.XRCX;
6392  bool modelPar_given_XRCX=mod.given("XRCX");
6393  AdmsSensFadType modelPar_XRBX=mod.XRBX;
6394  bool modelPar_given_XRBX=mod.given("XRBX");
6395  AdmsSensFadType modelPar_XRBP=mod.XRBP;
6396  bool modelPar_given_XRBP=mod.given("XRBP");
6397  AdmsSensFadType modelPar_ISRR=mod.ISRR;
6398  bool modelPar_given_ISRR=mod.given("ISRR");
6399  AdmsSensFadType modelPar_XISR=mod.XISR;
6400  bool modelPar_given_XISR=mod.given("XISR");
6401  AdmsSensFadType modelPar_DEAR=mod.DEAR;
6402  bool modelPar_given_DEAR=mod.given("DEAR");
6403  AdmsSensFadType modelPar_EAP=mod.EAP;
6404  bool modelPar_given_EAP=mod.given("EAP");
6405  AdmsSensFadType modelPar_VBBE=mod.VBBE;
6406  bool modelPar_given_VBBE=mod.given("VBBE");
6407  AdmsSensFadType modelPar_NBBE=mod.NBBE;
6408  bool modelPar_given_NBBE=mod.given("NBBE");
6409  AdmsSensFadType modelPar_IBBE=mod.IBBE;
6410  bool modelPar_given_IBBE=mod.given("IBBE");
6411  AdmsSensFadType modelPar_TVBBE1=mod.TVBBE1;
6412  bool modelPar_given_TVBBE1=mod.given("TVBBE1");
6413  AdmsSensFadType modelPar_TVBBE2=mod.TVBBE2;
6414  bool modelPar_given_TVBBE2=mod.given("TVBBE2");
6415  AdmsSensFadType modelPar_TNBBE=mod.TNBBE;
6416  bool modelPar_given_TNBBE=mod.given("TNBBE");
6417  AdmsSensFadType modelPar_EBBE=mod.EBBE;
6418  bool modelPar_given_EBBE=mod.given("EBBE");
6419  AdmsSensFadType modelPar_DTEMP=mod.DTEMP;
6420  bool modelPar_given_DTEMP=mod.given("DTEMP");
6421  AdmsSensFadType modelPar_VERS=mod.VERS;
6422  bool modelPar_given_VERS=mod.given("VERS");
6423  AdmsSensFadType modelPar_VREV=mod.VREV;
6424  bool modelPar_given_VREV=mod.given("VREV");
6425 
6426 
6427  // hidden reals
6428 
6429 
6430  // non-reals (including hiddens)
6431  int modelPar_dtype=mod.dtype;
6432 
6433 
6434 
6435  // Copy out all the instance parameters (doubles) into FAD types
6436  // Keep a map so we can set the right one to the independent variable
6437  // We do this solely to avoid a big ugly "if/else" block just to find the
6438  // one parameter we're doing sensitivities on.
6439  unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> inParamMap;
6440 
6441  // reals
6442  AdmsSensFadType instancePar_DTEMP=in.DTEMP;
6443  bool instancePar_given_DTEMP=in.given("DTEMP");
6444  inParamMap["DTEMP"] = &instancePar_DTEMP;
6445 
6446 
6447  // Copy all the real hidden instance params into fad types
6448 
6449 
6450 
6451  // Copy all the non-real instance params into vars of their appropriate type:
6452  int instancePar_M=in.M;
6453  bool instancePar_given_M=in.given("M");
6454 
6455 
6456  // Set the one parameter whose name was passed in to be the independent
6457  // variable for Sacado purposes. Since we stored variable pointers, this
6458  // makes sure that that ONE variable gets set right.
6459  // FIXME: make this check the name first, otherwise segfault on invalid name!
6460  inParamMap[name]->diff(0,1);
6461 
6462  //make local copies of all instance vars
6463  //reals
6464 
6465 
6466  //non-reals
6467 
6468 
6469  //make local copies of all model vars
6470  //reals
6471 
6472 
6473  // non-reals
6474 
6475 
6476 
6477  Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
6478 
6479  // extract solution variables and set as Fad independent variables.
6480 
6481  probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
6482  probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
6483  probeVars[in.admsProbeID_V_bp_cx] = (*solVectorPtr)[in.li_bp] - (*solVectorPtr)[in.li_cx];
6484  probeVars[in.admsProbeID_V_e_ei] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_ei];
6485  probeVars[in.admsProbeID_V_b_bx] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_bx];
6486  probeVars[in.admsProbeID_V_bx_bi] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bi];
6487  probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
6488  probeVars[in.admsProbeID_V_c_cx] = (*solVectorPtr)[in.li_c] - (*solVectorPtr)[in.li_cx];
6489  probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
6490  probeVars[in.admsProbeID_V_dt_GND] = (*solVectorPtr)[in.li_dt];
6491  probeVars[in.admsProbeID_V_bx_bp] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bp];
6492  probeVars[in.admsProbeID_V_bi_cx] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_cx];
6493  probeVars[in.admsProbeID_V_bx_ei] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_ei];
6494  probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
6495  probeVars[in.admsProbeID_V_bi_ei] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ei];
6496 
6497  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
6498  probeVars[in.admsProbeID_V_b_e] *= modelPar_dtype;
6499  probeVars[in.admsProbeID_V_bx_bp] *= modelPar_dtype;
6500  probeVars[in.admsProbeID_V_bi_cx] *= modelPar_dtype;
6501  probeVars[in.admsProbeID_V_bx_ei] *= modelPar_dtype;
6502  probeVars[in.admsProbeID_V_bi_ci] *= modelPar_dtype;
6503  probeVars[in.admsProbeID_V_bi_ei] *= modelPar_dtype;
6504 
6505 
6506 
6507  // Now call the function that does the heavy lifting.
6509  probeVars,
6510  // probe constants
6512  in.admsProbeID_V_b_c,
6514  in.admsProbeID_V_e_ei,
6515  in.admsProbeID_V_b_bx,
6518  in.admsProbeID_V_c_cx,
6519  in.admsProbeID_V_b_e,
6526 
6527  // node constants
6528  in.admsNodeID_c,
6529  in.admsNodeID_b,
6530  in.admsNodeID_e,
6531  in.admsNodeID_dt,
6532  in.admsNodeID_cx,
6533  in.admsNodeID_ci,
6534  in.admsNodeID_bx,
6535  in.admsNodeID_bi,
6536  in.admsNodeID_ei,
6537  in.admsNodeID_bp,
6538  // instance parameters
6539  // reals
6540  instancePar_DTEMP,
6541  instancePar_given_DTEMP,
6542  // non-reals(including hidden)
6543  instancePar_M,
6544  instancePar_given_M,
6545  // model parameters
6546  // reals
6547  modelPar_TNOM,
6548  modelPar_given_TNOM,
6549  modelPar_RCX,
6550  modelPar_given_RCX,
6551  modelPar_RCI,
6552  modelPar_given_RCI,
6553  modelPar_VO,
6554  modelPar_given_VO,
6555  modelPar_GAMM,
6556  modelPar_given_GAMM,
6557  modelPar_HRCF,
6558  modelPar_given_HRCF,
6559  modelPar_RBX,
6560  modelPar_given_RBX,
6561  modelPar_RBI,
6562  modelPar_given_RBI,
6563  modelPar_RE,
6564  modelPar_given_RE,
6565  modelPar_RS,
6566  modelPar_given_RS,
6567  modelPar_RBP,
6568  modelPar_given_RBP,
6569  modelPar_IS,
6570  modelPar_given_IS,
6571  modelPar_NF,
6572  modelPar_given_NF,
6573  modelPar_NR,
6574  modelPar_given_NR,
6575  modelPar_FC,
6576  modelPar_given_FC,
6577  modelPar_CBEO,
6578  modelPar_given_CBEO,
6579  modelPar_CJE,
6580  modelPar_given_CJE,
6581  modelPar_PE,
6582  modelPar_given_PE,
6583  modelPar_ME,
6584  modelPar_given_ME,
6585  modelPar_AJE,
6586  modelPar_given_AJE,
6587  modelPar_CBCO,
6588  modelPar_given_CBCO,
6589  modelPar_CJC,
6590  modelPar_given_CJC,
6591  modelPar_QCO,
6592  modelPar_given_QCO,
6593  modelPar_CJEP,
6594  modelPar_given_CJEP,
6595  modelPar_PC,
6596  modelPar_given_PC,
6597  modelPar_MC,
6598  modelPar_given_MC,
6599  modelPar_AJC,
6600  modelPar_given_AJC,
6601  modelPar_CJCP,
6602  modelPar_given_CJCP,
6603  modelPar_PS,
6604  modelPar_given_PS,
6605  modelPar_MS,
6606  modelPar_given_MS,
6607  modelPar_AJS,
6608  modelPar_given_AJS,
6609  modelPar_IBEI,
6610  modelPar_given_IBEI,
6611  modelPar_WBE,
6612  modelPar_given_WBE,
6613  modelPar_NEI,
6614  modelPar_given_NEI,
6615  modelPar_IBEN,
6616  modelPar_given_IBEN,
6617  modelPar_NEN,
6618  modelPar_given_NEN,
6619  modelPar_IBCI,
6620  modelPar_given_IBCI,
6621  modelPar_NCI,
6622  modelPar_given_NCI,
6623  modelPar_IBCN,
6624  modelPar_given_IBCN,
6625  modelPar_NCN,
6626  modelPar_given_NCN,
6627  modelPar_AVC1,
6628  modelPar_given_AVC1,
6629  modelPar_AVC2,
6630  modelPar_given_AVC2,
6631  modelPar_ISP,
6632  modelPar_given_ISP,
6633  modelPar_WSP,
6634  modelPar_given_WSP,
6635  modelPar_NFP,
6636  modelPar_given_NFP,
6637  modelPar_IBEIP,
6638  modelPar_given_IBEIP,
6639  modelPar_IBENP,
6640  modelPar_given_IBENP,
6641  modelPar_IBCIP,
6642  modelPar_given_IBCIP,
6643  modelPar_NCIP,
6644  modelPar_given_NCIP,
6645  modelPar_IBCNP,
6646  modelPar_given_IBCNP,
6647  modelPar_NCNP,
6648  modelPar_given_NCNP,
6649  modelPar_VEF,
6650  modelPar_given_VEF,
6651  modelPar_VER,
6652  modelPar_given_VER,
6653  modelPar_IKF,
6654  modelPar_given_IKF,
6655  modelPar_IKR,
6656  modelPar_given_IKR,
6657  modelPar_IKP,
6658  modelPar_given_IKP,
6659  modelPar_TF,
6660  modelPar_given_TF,
6661  modelPar_QTF,
6662  modelPar_given_QTF,
6663  modelPar_XTF,
6664  modelPar_given_XTF,
6665  modelPar_VTF,
6666  modelPar_given_VTF,
6667  modelPar_ITF,
6668  modelPar_given_ITF,
6669  modelPar_TR,
6670  modelPar_given_TR,
6671  modelPar_TD,
6672  modelPar_given_TD,
6673  modelPar_KFN,
6674  modelPar_given_KFN,
6675  modelPar_AFN,
6676  modelPar_given_AFN,
6677  modelPar_BFN,
6678  modelPar_given_BFN,
6679  modelPar_XRE,
6680  modelPar_given_XRE,
6681  modelPar_XRBI,
6682  modelPar_given_XRBI,
6683  modelPar_XRCI,
6684  modelPar_given_XRCI,
6685  modelPar_XRS,
6686  modelPar_given_XRS,
6687  modelPar_XVO,
6688  modelPar_given_XVO,
6689  modelPar_EA,
6690  modelPar_given_EA,
6691  modelPar_EAIE,
6692  modelPar_given_EAIE,
6693  modelPar_EAIC,
6694  modelPar_given_EAIC,
6695  modelPar_EAIS,
6696  modelPar_given_EAIS,
6697  modelPar_EANE,
6698  modelPar_given_EANE,
6699  modelPar_EANC,
6700  modelPar_given_EANC,
6701  modelPar_EANS,
6702  modelPar_given_EANS,
6703  modelPar_XIS,
6704  modelPar_given_XIS,
6705  modelPar_XII,
6706  modelPar_given_XII,
6707  modelPar_XIN,
6708  modelPar_given_XIN,
6709  modelPar_TNF,
6710  modelPar_given_TNF,
6711  modelPar_TAVC,
6712  modelPar_given_TAVC,
6713  modelPar_RTH,
6714  modelPar_given_RTH,
6715  modelPar_CTH,
6716  modelPar_given_CTH,
6717  modelPar_VRT,
6718  modelPar_given_VRT,
6719  modelPar_ART,
6720  modelPar_given_ART,
6721  modelPar_CCSO,
6722  modelPar_given_CCSO,
6723  modelPar_QBM,
6724  modelPar_given_QBM,
6725  modelPar_NKF,
6726  modelPar_given_NKF,
6727  modelPar_XIKF,
6728  modelPar_given_XIKF,
6729  modelPar_XRCX,
6730  modelPar_given_XRCX,
6731  modelPar_XRBX,
6732  modelPar_given_XRBX,
6733  modelPar_XRBP,
6734  modelPar_given_XRBP,
6735  modelPar_ISRR,
6736  modelPar_given_ISRR,
6737  modelPar_XISR,
6738  modelPar_given_XISR,
6739  modelPar_DEAR,
6740  modelPar_given_DEAR,
6741  modelPar_EAP,
6742  modelPar_given_EAP,
6743  modelPar_VBBE,
6744  modelPar_given_VBBE,
6745  modelPar_NBBE,
6746  modelPar_given_NBBE,
6747  modelPar_IBBE,
6748  modelPar_given_IBBE,
6749  modelPar_TVBBE1,
6750  modelPar_given_TVBBE1,
6751  modelPar_TVBBE2,
6752  modelPar_given_TVBBE2,
6753  modelPar_TNBBE,
6754  modelPar_given_TNBBE,
6755  modelPar_EBBE,
6756  modelPar_given_EBBE,
6757  modelPar_DTEMP,
6758  modelPar_given_DTEMP,
6759  modelPar_VERS,
6760  modelPar_given_VERS,
6761  modelPar_VREV,
6762  modelPar_given_VREV,
6763  // non-reals (including hidden)
6764  modelPar_dtype,
6765  in.admsTemperature,
6766  in.adms_vt_nom,
6767  in.getDeviceOptions().gmin,
6768  staticContributions,
6769  dynamicContributions,
6770  in);
6771 
6772 
6773  // We now have the F and Q vector stuff, populate the dependencies:
6774 
6775  dfdp[in.admsNodeID_c] += staticContributions[in.admsNodeID_c].dx(0);
6776  dqdp[in.admsNodeID_c] += dynamicContributions[in.admsNodeID_c].dx(0);
6777  Findices[in.admsNodeID_c] = in.li_c;
6778  Qindices[in.admsNodeID_c] = in.li_c;
6779  dfdp[in.admsNodeID_b] += staticContributions[in.admsNodeID_b].dx(0);
6780  dqdp[in.admsNodeID_b] += dynamicContributions[in.admsNodeID_b].dx(0);
6781  Findices[in.admsNodeID_b] = in.li_b;
6782  Qindices[in.admsNodeID_b] = in.li_b;
6783  dfdp[in.admsNodeID_e] += staticContributions[in.admsNodeID_e].dx(0);
6784  dqdp[in.admsNodeID_e] += dynamicContributions[in.admsNodeID_e].dx(0);
6785  Findices[in.admsNodeID_e] = in.li_e;
6786  Qindices[in.admsNodeID_e] = in.li_e;
6787  dfdp[in.admsNodeID_dt] += staticContributions[in.admsNodeID_dt].dx(0);
6788  dqdp[in.admsNodeID_dt] += dynamicContributions[in.admsNodeID_dt].dx(0);
6789  Findices[in.admsNodeID_dt] = in.li_dt;
6790  Qindices[in.admsNodeID_dt] = in.li_dt;
6791  dfdp[in.admsNodeID_cx] += staticContributions[in.admsNodeID_cx].dx(0);
6792  dqdp[in.admsNodeID_cx] += dynamicContributions[in.admsNodeID_cx].dx(0);
6793  Findices[in.admsNodeID_cx] = in.li_cx;
6794  Qindices[in.admsNodeID_cx] = in.li_cx;
6795  dfdp[in.admsNodeID_ci] += staticContributions[in.admsNodeID_ci].dx(0);
6796  dqdp[in.admsNodeID_ci] += dynamicContributions[in.admsNodeID_ci].dx(0);
6797  Findices[in.admsNodeID_ci] = in.li_ci;
6798  Qindices[in.admsNodeID_ci] = in.li_ci;
6799  dfdp[in.admsNodeID_bx] += staticContributions[in.admsNodeID_bx].dx(0);
6800  dqdp[in.admsNodeID_bx] += dynamicContributions[in.admsNodeID_bx].dx(0);
6801  Findices[in.admsNodeID_bx] = in.li_bx;
6802  Qindices[in.admsNodeID_bx] = in.li_bx;
6803  dfdp[in.admsNodeID_bi] += staticContributions[in.admsNodeID_bi].dx(0);
6804  dqdp[in.admsNodeID_bi] += dynamicContributions[in.admsNodeID_bi].dx(0);
6805  Findices[in.admsNodeID_bi] = in.li_bi;
6806  Qindices[in.admsNodeID_bi] = in.li_bi;
6807  dfdp[in.admsNodeID_ei] += staticContributions[in.admsNodeID_ei].dx(0);
6808  dqdp[in.admsNodeID_ei] += dynamicContributions[in.admsNodeID_ei].dx(0);
6809  Findices[in.admsNodeID_ei] = in.li_ei;
6810  Qindices[in.admsNodeID_ei] = in.li_ei;
6811  dfdp[in.admsNodeID_bp] += staticContributions[in.admsNodeID_bp].dx(0);
6812  dqdp[in.admsNodeID_bp] += dynamicContributions[in.admsNodeID_bp].dx(0);
6813  Findices[in.admsNodeID_bp] = in.li_bp;
6814  Qindices[in.admsNodeID_bp] = in.li_bp;
6815 
6816 
6817 }
6818 
6819 //-----------------------------------------------------------------------------
6820 // Function : ModelSensitivity::operator()
6821 // Purpose : return sensitivity for a single model parameter
6822 // Special Notes :
6823 // Scope : public
6824 // Creator : admsXml
6825 // Creation Date :
6826 //-----------------------------------------------------------------------------
6827 /// Compute sensitivity to a specified model
6828 /// parameter of all device instances of that model's outputs
6829 ///
6830 ///
6831 /// @param[in] entity The device entity that owns the parameter
6832 /// @param[in] name The unadorned parameter name specific to the entity
6833 /// @param[out] dfdp The derivative of the F vector with respect to the parameter
6834 /// @param[out] dqdp The derivative of the Q vector with respect to the parameter
6835 /// @param[out] dbdp The derivative of the B vector with respect to the parameter
6836 /// @param[out] Findices The indices into the F vector corresponding to the elements of dfdp
6837 /// @param[out] Qindices The indices into the Q vector corresponding to the elements of dfdp
6838 /// @param[out] Bindices The indices into the B vector corresponding to the elements of dfdp
6839 ///
6840 ///
6841 void ModelSensitivity::operator()
6842  (
6843  const ParameterBase &entity,
6844  const std::string &name,
6845  std::vector<double> & dfdp,
6846  std::vector<double> & dqdp,
6847  std::vector<double> & dbdp,
6848  std::vector<int> & Findices,
6849  std::vector<int> & Qindices,
6850  std::vector<int> & Bindices
6851  ) const
6852 {
6853  const ParameterBase * e1 = &entity;
6854  const Model & mod = *(dynamic_cast<const Model *> (e1));
6855  int sizeInstance = mod.instanceContainer.size();
6856 
6857  dfdp.resize((10+0)*sizeInstance);
6858  dqdp.resize((10+0)*sizeInstance);
6859  Findices.resize((10+0)*sizeInstance);
6860  Qindices.resize((10+0)*sizeInstance);
6861 
6862  std::vector <double> probeVars(15);
6863  std::vector <AdmsSensFadType> staticContributions(10+0);
6864  std::vector <AdmsSensFadType> dynamicContributions(10+0);
6865 
6866 
6867  // Copy out all the model parameters (doubles) into FAD types
6868  // Keep a map so we can set the right one to the independent variable
6869  // We do this solely to avoid a big ugly "if/else" block just to find the
6870  // one parameter we're doing sensitivities on.
6871  unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> modParamMap;
6872 
6873  // reals
6874  AdmsSensFadType modelPar_TNOM=mod.TNOM;
6875  bool modelPar_given_TNOM=mod.given("TNOM");
6876  modParamMap["TNOM"] = &modelPar_TNOM;
6877  AdmsSensFadType modelPar_RCX=mod.RCX;
6878  bool modelPar_given_RCX=mod.given("RCX");
6879  modParamMap["RCX"] = &modelPar_RCX;
6880  AdmsSensFadType modelPar_RCI=mod.RCI;
6881  bool modelPar_given_RCI=mod.given("RCI");
6882  modParamMap["RCI"] = &modelPar_RCI;
6883  AdmsSensFadType modelPar_VO=mod.VO;
6884  bool modelPar_given_VO=mod.given("VO");
6885  modParamMap["VO"] = &modelPar_VO;
6886  AdmsSensFadType modelPar_GAMM=mod.GAMM;
6887  bool modelPar_given_GAMM=mod.given("GAMM");
6888  modParamMap["GAMM"] = &modelPar_GAMM;
6889  AdmsSensFadType modelPar_HRCF=mod.HRCF;
6890  bool modelPar_given_HRCF=mod.given("HRCF");
6891  modParamMap["HRCF"] = &modelPar_HRCF;
6892  AdmsSensFadType modelPar_RBX=mod.RBX;
6893  bool modelPar_given_RBX=mod.given("RBX");
6894  modParamMap["RBX"] = &modelPar_RBX;
6895  AdmsSensFadType modelPar_RBI=mod.RBI;
6896  bool modelPar_given_RBI=mod.given("RBI");
6897  modParamMap["RBI"] = &modelPar_RBI;
6898  AdmsSensFadType modelPar_RE=mod.RE;
6899  bool modelPar_given_RE=mod.given("RE");
6900  modParamMap["RE"] = &modelPar_RE;
6901  AdmsSensFadType modelPar_RS=mod.RS;
6902  bool modelPar_given_RS=mod.given("RS");
6903  modParamMap["RS"] = &modelPar_RS;
6904  AdmsSensFadType modelPar_RBP=mod.RBP;
6905  bool modelPar_given_RBP=mod.given("RBP");
6906  modParamMap["RBP"] = &modelPar_RBP;
6907  AdmsSensFadType modelPar_IS=mod.IS;
6908  bool modelPar_given_IS=mod.given("IS");
6909  modParamMap["IS"] = &modelPar_IS;
6910  AdmsSensFadType modelPar_NF=mod.NF;
6911  bool modelPar_given_NF=mod.given("NF");
6912  modParamMap["NF"] = &modelPar_NF;
6913  AdmsSensFadType modelPar_NR=mod.NR;
6914  bool modelPar_given_NR=mod.given("NR");
6915  modParamMap["NR"] = &modelPar_NR;
6916  AdmsSensFadType modelPar_FC=mod.FC;
6917  bool modelPar_given_FC=mod.given("FC");
6918  modParamMap["FC"] = &modelPar_FC;
6919  AdmsSensFadType modelPar_CBEO=mod.CBEO;
6920  bool modelPar_given_CBEO=mod.given("CBEO");
6921  modParamMap["CBEO"] = &modelPar_CBEO;
6922  AdmsSensFadType modelPar_CJE=mod.CJE;
6923  bool modelPar_given_CJE=mod.given("CJE");
6924  modParamMap["CJE"] = &modelPar_CJE;
6925  AdmsSensFadType modelPar_PE=mod.PE;
6926  bool modelPar_given_PE=mod.given("PE");
6927  modParamMap["PE"] = &modelPar_PE;
6928  AdmsSensFadType modelPar_ME=mod.ME;
6929  bool modelPar_given_ME=mod.given("ME");
6930  modParamMap["ME"] = &modelPar_ME;
6931  AdmsSensFadType modelPar_AJE=mod.AJE;
6932  bool modelPar_given_AJE=mod.given("AJE");
6933  modParamMap["AJE"] = &modelPar_AJE;
6934  AdmsSensFadType modelPar_CBCO=mod.CBCO;
6935  bool modelPar_given_CBCO=mod.given("CBCO");
6936  modParamMap["CBCO"] = &modelPar_CBCO;
6937  AdmsSensFadType modelPar_CJC=mod.CJC;
6938  bool modelPar_given_CJC=mod.given("CJC");
6939  modParamMap["CJC"] = &modelPar_CJC;
6940  AdmsSensFadType modelPar_QCO=mod.QCO;
6941  bool modelPar_given_QCO=mod.given("QCO");
6942  modParamMap["QCO"] = &modelPar_QCO;
6943  AdmsSensFadType modelPar_CJEP=mod.CJEP;
6944  bool modelPar_given_CJEP=mod.given("CJEP");
6945  modParamMap["CJEP"] = &modelPar_CJEP;
6946  AdmsSensFadType modelPar_PC=mod.PC;
6947  bool modelPar_given_PC=mod.given("PC");
6948  modParamMap["PC"] = &modelPar_PC;
6949  AdmsSensFadType modelPar_MC=mod.MC;
6950  bool modelPar_given_MC=mod.given("MC");
6951  modParamMap["MC"] = &modelPar_MC;
6952  AdmsSensFadType modelPar_AJC=mod.AJC;
6953  bool modelPar_given_AJC=mod.given("AJC");
6954  modParamMap["AJC"] = &modelPar_AJC;
6955  AdmsSensFadType modelPar_CJCP=mod.CJCP;
6956  bool modelPar_given_CJCP=mod.given("CJCP");
6957  modParamMap["CJCP"] = &modelPar_CJCP;
6958  AdmsSensFadType modelPar_PS=mod.PS;
6959  bool modelPar_given_PS=mod.given("PS");
6960  modParamMap["PS"] = &modelPar_PS;
6961  AdmsSensFadType modelPar_MS=mod.MS;
6962  bool modelPar_given_MS=mod.given("MS");
6963  modParamMap["MS"] = &modelPar_MS;
6964  AdmsSensFadType modelPar_AJS=mod.AJS;
6965  bool modelPar_given_AJS=mod.given("AJS");
6966  modParamMap["AJS"] = &modelPar_AJS;
6967  AdmsSensFadType modelPar_IBEI=mod.IBEI;
6968  bool modelPar_given_IBEI=mod.given("IBEI");
6969  modParamMap["IBEI"] = &modelPar_IBEI;
6970  AdmsSensFadType modelPar_WBE=mod.WBE;
6971  bool modelPar_given_WBE=mod.given("WBE");
6972  modParamMap["WBE"] = &modelPar_WBE;
6973  AdmsSensFadType modelPar_NEI=mod.NEI;
6974  bool modelPar_given_NEI=mod.given("NEI");
6975  modParamMap["NEI"] = &modelPar_NEI;
6976  AdmsSensFadType modelPar_IBEN=mod.IBEN;
6977  bool modelPar_given_IBEN=mod.given("IBEN");
6978  modParamMap["IBEN"] = &modelPar_IBEN;
6979  AdmsSensFadType modelPar_NEN=mod.NEN;
6980  bool modelPar_given_NEN=mod.given("NEN");
6981  modParamMap["NEN"] = &modelPar_NEN;
6982  AdmsSensFadType modelPar_IBCI=mod.IBCI;
6983  bool modelPar_given_IBCI=mod.given("IBCI");
6984  modParamMap["IBCI"] = &modelPar_IBCI;
6985  AdmsSensFadType modelPar_NCI=mod.NCI;
6986  bool modelPar_given_NCI=mod.given("NCI");
6987  modParamMap["NCI"] = &modelPar_NCI;
6988  AdmsSensFadType modelPar_IBCN=mod.IBCN;
6989  bool modelPar_given_IBCN=mod.given("IBCN");
6990  modParamMap["IBCN"] = &modelPar_IBCN;
6991  AdmsSensFadType modelPar_NCN=mod.NCN;
6992  bool modelPar_given_NCN=mod.given("NCN");
6993  modParamMap["NCN"] = &modelPar_NCN;
6994  AdmsSensFadType modelPar_AVC1=mod.AVC1;
6995  bool modelPar_given_AVC1=mod.given("AVC1");
6996  modParamMap["AVC1"] = &modelPar_AVC1;
6997  AdmsSensFadType modelPar_AVC2=mod.AVC2;
6998  bool modelPar_given_AVC2=mod.given("AVC2");
6999  modParamMap["AVC2"] = &modelPar_AVC2;
7000  AdmsSensFadType modelPar_ISP=mod.ISP;
7001  bool modelPar_given_ISP=mod.given("ISP");
7002  modParamMap["ISP"] = &modelPar_ISP;
7003  AdmsSensFadType modelPar_WSP=mod.WSP;
7004  bool modelPar_given_WSP=mod.given("WSP");
7005  modParamMap["WSP"] = &modelPar_WSP;
7006  AdmsSensFadType modelPar_NFP=mod.NFP;
7007  bool modelPar_given_NFP=mod.given("NFP");
7008  modParamMap["NFP"] = &modelPar_NFP;
7009  AdmsSensFadType modelPar_IBEIP=mod.IBEIP;
7010  bool modelPar_given_IBEIP=mod.given("IBEIP");
7011  modParamMap["IBEIP"] = &modelPar_IBEIP;
7012  AdmsSensFadType modelPar_IBENP=mod.IBENP;
7013  bool modelPar_given_IBENP=mod.given("IBENP");
7014  modParamMap["IBENP"] = &modelPar_IBENP;
7015  AdmsSensFadType modelPar_IBCIP=mod.IBCIP;
7016  bool modelPar_given_IBCIP=mod.given("IBCIP");
7017  modParamMap["IBCIP"] = &modelPar_IBCIP;
7018  AdmsSensFadType modelPar_NCIP=mod.NCIP;
7019  bool modelPar_given_NCIP=mod.given("NCIP");
7020  modParamMap["NCIP"] = &modelPar_NCIP;
7021  AdmsSensFadType modelPar_IBCNP=mod.IBCNP;
7022  bool modelPar_given_IBCNP=mod.given("IBCNP");
7023  modParamMap["IBCNP"] = &modelPar_IBCNP;
7024  AdmsSensFadType modelPar_NCNP=mod.NCNP;
7025  bool modelPar_given_NCNP=mod.given("NCNP");
7026  modParamMap["NCNP"] = &modelPar_NCNP;
7027  AdmsSensFadType modelPar_VEF=mod.VEF;
7028  bool modelPar_given_VEF=mod.given("VEF");
7029  modParamMap["VEF"] = &modelPar_VEF;
7030  AdmsSensFadType modelPar_VER=mod.VER;
7031  bool modelPar_given_VER=mod.given("VER");
7032  modParamMap["VER"] = &modelPar_VER;
7033  AdmsSensFadType modelPar_IKF=mod.IKF;
7034  bool modelPar_given_IKF=mod.given("IKF");
7035  modParamMap["IKF"] = &modelPar_IKF;
7036  AdmsSensFadType modelPar_IKR=mod.IKR;
7037  bool modelPar_given_IKR=mod.given("IKR");
7038  modParamMap["IKR"] = &modelPar_IKR;
7039  AdmsSensFadType modelPar_IKP=mod.IKP;
7040  bool modelPar_given_IKP=mod.given("IKP");
7041  modParamMap["IKP"] = &modelPar_IKP;
7042  AdmsSensFadType modelPar_TF=mod.TF;
7043  bool modelPar_given_TF=mod.given("TF");
7044  modParamMap["TF"] = &modelPar_TF;
7045  AdmsSensFadType modelPar_QTF=mod.QTF;
7046  bool modelPar_given_QTF=mod.given("QTF");
7047  modParamMap["QTF"] = &modelPar_QTF;
7048  AdmsSensFadType modelPar_XTF=mod.XTF;
7049  bool modelPar_given_XTF=mod.given("XTF");
7050  modParamMap["XTF"] = &modelPar_XTF;
7051  AdmsSensFadType modelPar_VTF=mod.VTF;
7052  bool modelPar_given_VTF=mod.given("VTF");
7053  modParamMap["VTF"] = &modelPar_VTF;
7054  AdmsSensFadType modelPar_ITF=mod.ITF;
7055  bool modelPar_given_ITF=mod.given("ITF");
7056  modParamMap["ITF"] = &modelPar_ITF;
7057  AdmsSensFadType modelPar_TR=mod.TR;
7058  bool modelPar_given_TR=mod.given("TR");
7059  modParamMap["TR"] = &modelPar_TR;
7060  AdmsSensFadType modelPar_TD=mod.TD;
7061  bool modelPar_given_TD=mod.given("TD");
7062  modParamMap["TD"] = &modelPar_TD;
7063  AdmsSensFadType modelPar_KFN=mod.KFN;
7064  bool modelPar_given_KFN=mod.given("KFN");
7065  modParamMap["KFN"] = &modelPar_KFN;
7066  AdmsSensFadType modelPar_AFN=mod.AFN;
7067  bool modelPar_given_AFN=mod.given("AFN");
7068  modParamMap["AFN"] = &modelPar_AFN;
7069  AdmsSensFadType modelPar_BFN=mod.BFN;
7070  bool modelPar_given_BFN=mod.given("BFN");
7071  modParamMap["BFN"] = &modelPar_BFN;
7072  AdmsSensFadType modelPar_XRE=mod.XRE;
7073  bool modelPar_given_XRE=mod.given("XRE");
7074  modParamMap["XRE"] = &modelPar_XRE;
7075  AdmsSensFadType modelPar_XRBI=mod.XRBI;
7076  bool modelPar_given_XRBI=mod.given("XRBI");
7077  modParamMap["XRBI"] = &modelPar_XRBI;
7078  AdmsSensFadType modelPar_XRCI=mod.XRCI;
7079  bool modelPar_given_XRCI=mod.given("XRCI");
7080  modParamMap["XRCI"] = &modelPar_XRCI;
7081  AdmsSensFadType modelPar_XRS=mod.XRS;
7082  bool modelPar_given_XRS=mod.given("XRS");
7083  modParamMap["XRS"] = &modelPar_XRS;
7084  AdmsSensFadType modelPar_XVO=mod.XVO;
7085  bool modelPar_given_XVO=mod.given("XVO");
7086  modParamMap["XVO"] = &modelPar_XVO;
7087  AdmsSensFadType modelPar_EA=mod.EA;
7088  bool modelPar_given_EA=mod.given("EA");
7089  modParamMap["EA"] = &modelPar_EA;
7090  AdmsSensFadType modelPar_EAIE=mod.EAIE;
7091  bool modelPar_given_EAIE=mod.given("EAIE");
7092  modParamMap["EAIE"] = &modelPar_EAIE;
7093  AdmsSensFadType modelPar_EAIC=mod.EAIC;
7094  bool modelPar_given_EAIC=mod.given("EAIC");
7095  modParamMap["EAIC"] = &modelPar_EAIC;
7096  AdmsSensFadType modelPar_EAIS=mod.EAIS;
7097  bool modelPar_given_EAIS=mod.given("EAIS");
7098  modParamMap["EAIS"] = &modelPar_EAIS;
7099  AdmsSensFadType modelPar_EANE=mod.EANE;
7100  bool modelPar_given_EANE=mod.given("EANE");
7101  modParamMap["EANE"] = &modelPar_EANE;
7102  AdmsSensFadType modelPar_EANC=mod.EANC;
7103  bool modelPar_given_EANC=mod.given("EANC");
7104  modParamMap["EANC"] = &modelPar_EANC;
7105  AdmsSensFadType modelPar_EANS=mod.EANS;
7106  bool modelPar_given_EANS=mod.given("EANS");
7107  modParamMap["EANS"] = &modelPar_EANS;
7108  AdmsSensFadType modelPar_XIS=mod.XIS;
7109  bool modelPar_given_XIS=mod.given("XIS");
7110  modParamMap["XIS"] = &modelPar_XIS;
7111  AdmsSensFadType modelPar_XII=mod.XII;
7112  bool modelPar_given_XII=mod.given("XII");
7113  modParamMap["XII"] = &modelPar_XII;
7114  AdmsSensFadType modelPar_XIN=mod.XIN;
7115  bool modelPar_given_XIN=mod.given("XIN");
7116  modParamMap["XIN"] = &modelPar_XIN;
7117  AdmsSensFadType modelPar_TNF=mod.TNF;
7118  bool modelPar_given_TNF=mod.given("TNF");
7119  modParamMap["TNF"] = &modelPar_TNF;
7120  AdmsSensFadType modelPar_TAVC=mod.TAVC;
7121  bool modelPar_given_TAVC=mod.given("TAVC");
7122  modParamMap["TAVC"] = &modelPar_TAVC;
7123  AdmsSensFadType modelPar_RTH=mod.RTH;
7124  bool modelPar_given_RTH=mod.given("RTH");
7125  modParamMap["RTH"] = &modelPar_RTH;
7126  AdmsSensFadType modelPar_CTH=mod.CTH;
7127  bool modelPar_given_CTH=mod.given("CTH");
7128  modParamMap["CTH"] = &modelPar_CTH;
7129  AdmsSensFadType modelPar_VRT=mod.VRT;
7130  bool modelPar_given_VRT=mod.given("VRT");
7131  modParamMap["VRT"] = &modelPar_VRT;
7132  AdmsSensFadType modelPar_ART=mod.ART;
7133  bool modelPar_given_ART=mod.given("ART");
7134  modParamMap["ART"] = &modelPar_ART;
7135  AdmsSensFadType modelPar_CCSO=mod.CCSO;
7136  bool modelPar_given_CCSO=mod.given("CCSO");
7137  modParamMap["CCSO"] = &modelPar_CCSO;
7138  AdmsSensFadType modelPar_QBM=mod.QBM;
7139  bool modelPar_given_QBM=mod.given("QBM");
7140  modParamMap["QBM"] = &modelPar_QBM;
7141  AdmsSensFadType modelPar_NKF=mod.NKF;
7142  bool modelPar_given_NKF=mod.given("NKF");
7143  modParamMap["NKF"] = &modelPar_NKF;
7144  AdmsSensFadType modelPar_XIKF=mod.XIKF;
7145  bool modelPar_given_XIKF=mod.given("XIKF");
7146  modParamMap["XIKF"] = &modelPar_XIKF;
7147  AdmsSensFadType modelPar_XRCX=mod.XRCX;
7148  bool modelPar_given_XRCX=mod.given("XRCX");
7149  modParamMap["XRCX"] = &modelPar_XRCX;
7150  AdmsSensFadType modelPar_XRBX=mod.XRBX;
7151  bool modelPar_given_XRBX=mod.given("XRBX");
7152  modParamMap["XRBX"] = &modelPar_XRBX;
7153  AdmsSensFadType modelPar_XRBP=mod.XRBP;
7154  bool modelPar_given_XRBP=mod.given("XRBP");
7155  modParamMap["XRBP"] = &modelPar_XRBP;
7156  AdmsSensFadType modelPar_ISRR=mod.ISRR;
7157  bool modelPar_given_ISRR=mod.given("ISRR");
7158  modParamMap["ISRR"] = &modelPar_ISRR;
7159  AdmsSensFadType modelPar_XISR=mod.XISR;
7160  bool modelPar_given_XISR=mod.given("XISR");
7161  modParamMap["XISR"] = &modelPar_XISR;
7162  AdmsSensFadType modelPar_DEAR=mod.DEAR;
7163  bool modelPar_given_DEAR=mod.given("DEAR");
7164  modParamMap["DEAR"] = &modelPar_DEAR;
7165  AdmsSensFadType modelPar_EAP=mod.EAP;
7166  bool modelPar_given_EAP=mod.given("EAP");
7167  modParamMap["EAP"] = &modelPar_EAP;
7168  AdmsSensFadType modelPar_VBBE=mod.VBBE;
7169  bool modelPar_given_VBBE=mod.given("VBBE");
7170  modParamMap["VBBE"] = &modelPar_VBBE;
7171  AdmsSensFadType modelPar_NBBE=mod.NBBE;
7172  bool modelPar_given_NBBE=mod.given("NBBE");
7173  modParamMap["NBBE"] = &modelPar_NBBE;
7174  AdmsSensFadType modelPar_IBBE=mod.IBBE;
7175  bool modelPar_given_IBBE=mod.given("IBBE");
7176  modParamMap["IBBE"] = &modelPar_IBBE;
7177  AdmsSensFadType modelPar_TVBBE1=mod.TVBBE1;
7178  bool modelPar_given_TVBBE1=mod.given("TVBBE1");
7179  modParamMap["TVBBE1"] = &modelPar_TVBBE1;
7180  AdmsSensFadType modelPar_TVBBE2=mod.TVBBE2;
7181  bool modelPar_given_TVBBE2=mod.given("TVBBE2");
7182  modParamMap["TVBBE2"] = &modelPar_TVBBE2;
7183  AdmsSensFadType modelPar_TNBBE=mod.TNBBE;
7184  bool modelPar_given_TNBBE=mod.given("TNBBE");
7185  modParamMap["TNBBE"] = &modelPar_TNBBE;
7186  AdmsSensFadType modelPar_EBBE=mod.EBBE;
7187  bool modelPar_given_EBBE=mod.given("EBBE");
7188  modParamMap["EBBE"] = &modelPar_EBBE;
7189  AdmsSensFadType modelPar_DTEMP=mod.DTEMP;
7190  bool modelPar_given_DTEMP=mod.given("DTEMP");
7191  modParamMap["DTEMP"] = &modelPar_DTEMP;
7192  AdmsSensFadType modelPar_VERS=mod.VERS;
7193  bool modelPar_given_VERS=mod.given("VERS");
7194  modParamMap["VERS"] = &modelPar_VERS;
7195  AdmsSensFadType modelPar_VREV=mod.VREV;
7196  bool modelPar_given_VREV=mod.given("VREV");
7197  modParamMap["VREV"] = &modelPar_VREV;
7198 
7199 
7200  // hidden reals
7201 
7202 
7203  // non-reals (including hiddens)
7204  int modelPar_dtype=mod.dtype;
7205 
7206 
7207  // Set the one parameter whose name was passed in to be the independent
7208  // variable for Sacado purposes. Since we stored variable pointers, this
7209  // makes sure that that ONE variable gets set right.
7210  // FIXME: make this check name for presence first! Segfault on invalid.
7211  modParamMap[name]->diff(0,1);
7212 
7213  //make local copies of all model vars
7214  //reals
7215 
7216 
7217  // non-reals
7218 
7219 
7220 
7221  // Now loop over all instances and do the deed
7222  int inst=0;
7223  for (std::vector<Instance*>::const_iterator in_it=mod.instanceContainer.begin(); in_it != mod.instanceContainer.end(); ++in_it,++inst)
7224  {
7225 
7226  Instance & in=*(*in_it);
7227  // initialize contributions to zero (automatically sets derivatives to zero)
7228  for (int i=0; i < 10+0 ; ++i)
7229  {
7230  staticContributions[i]=0;
7231  dynamicContributions[i]=0;
7232  }
7233 
7234 
7235 
7236  // Copy out all the instance parameters (doubles) into FAD types
7237  // reals
7238  AdmsSensFadType instancePar_DTEMP=in.DTEMP;
7239  bool instancePar_given_DTEMP=in.given("DTEMP");
7240 
7241 
7242  // real hidden instance
7243 
7244 
7245  // Copy all the non-real instance params into vars of their appropriate type:
7246  int instancePar_M=in.M;
7247  bool instancePar_given_M=in.given("M");
7248 
7249 
7250 
7251 
7252  // If there are any instance parameters that were not given, and have
7253  // corresponding model params, copy the model param into the instance.
7254  // This was already done by the instance constructor, but we do it again
7255  // because now we're propagating derivatives, and the user could be trying
7256  // to get sensitivity to the model parameter.
7257  if (!(in.given("DTEMP")))
7258  {
7259  instancePar_DTEMP = modelPar_DTEMP;
7260  }
7261 
7262 
7263  //make local copies of all instance vars
7264  //reals
7265 
7266 
7267  //non-reals
7268 
7269 
7270 
7271  Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
7272 
7273  // extract solution variables and set as Fad independent variables.
7274  probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
7275  probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
7276  probeVars[in.admsProbeID_V_bp_cx] = (*solVectorPtr)[in.li_bp] - (*solVectorPtr)[in.li_cx];
7277  probeVars[in.admsProbeID_V_e_ei] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_ei];
7278  probeVars[in.admsProbeID_V_b_bx] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_bx];
7279  probeVars[in.admsProbeID_V_bx_bi] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bi];
7280  probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
7281  probeVars[in.admsProbeID_V_c_cx] = (*solVectorPtr)[in.li_c] - (*solVectorPtr)[in.li_cx];
7282  probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
7283  probeVars[in.admsProbeID_V_dt_GND] = (*solVectorPtr)[in.li_dt];
7284  probeVars[in.admsProbeID_V_bx_bp] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bp];
7285  probeVars[in.admsProbeID_V_bi_cx] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_cx];
7286  probeVars[in.admsProbeID_V_bx_ei] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_ei];
7287  probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
7288  probeVars[in.admsProbeID_V_bi_ei] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ei];
7289 
7290  // pre-multiply any "typed" probes (i.e. those limited with "typedpnjlim")
7291  probeVars[in.admsProbeID_V_b_e] *= modelPar_dtype;
7292  probeVars[in.admsProbeID_V_bx_bp] *= modelPar_dtype;
7293  probeVars[in.admsProbeID_V_bi_cx] *= modelPar_dtype;
7294  probeVars[in.admsProbeID_V_bx_ei] *= modelPar_dtype;
7295  probeVars[in.admsProbeID_V_bi_ci] *= modelPar_dtype;
7296  probeVars[in.admsProbeID_V_bi_ei] *= modelPar_dtype;
7297 
7298 
7299 
7300  // Now call the function that does the heavy lifting.
7301 
7303  probeVars,
7304  // probe constants
7306  in.admsProbeID_V_b_c,
7308  in.admsProbeID_V_e_ei,
7309  in.admsProbeID_V_b_bx,
7312  in.admsProbeID_V_c_cx,
7313  in.admsProbeID_V_b_e,
7320 
7321  // node constants
7322  in.admsNodeID_c,
7323  in.admsNodeID_b,
7324  in.admsNodeID_e,
7325  in.admsNodeID_dt,
7326  in.admsNodeID_cx,
7327  in.admsNodeID_ci,
7328  in.admsNodeID_bx,
7329  in.admsNodeID_bi,
7330  in.admsNodeID_ei,
7331  in.admsNodeID_bp,
7332  // instance parameters
7333  // reals
7334  instancePar_DTEMP,
7335  instancePar_given_DTEMP,
7336  // non-reals(including hidden)
7337  instancePar_M,
7338  instancePar_given_M,
7339  // model parameters
7340  // reals
7341  modelPar_TNOM,
7342  modelPar_given_TNOM,
7343  modelPar_RCX,
7344  modelPar_given_RCX,
7345  modelPar_RCI,
7346  modelPar_given_RCI,
7347  modelPar_VO,
7348  modelPar_given_VO,
7349  modelPar_GAMM,
7350  modelPar_given_GAMM,
7351  modelPar_HRCF,
7352  modelPar_given_HRCF,
7353  modelPar_RBX,
7354  modelPar_given_RBX,
7355  modelPar_RBI,
7356  modelPar_given_RBI,
7357  modelPar_RE,
7358  modelPar_given_RE,
7359  modelPar_RS,
7360  modelPar_given_RS,
7361  modelPar_RBP,
7362  modelPar_given_RBP,
7363  modelPar_IS,
7364  modelPar_given_IS,
7365  modelPar_NF,
7366  modelPar_given_NF,
7367  modelPar_NR,
7368  modelPar_given_NR,
7369  modelPar_FC,
7370  modelPar_given_FC,
7371  modelPar_CBEO,
7372  modelPar_given_CBEO,
7373  modelPar_CJE,
7374  modelPar_given_CJE,
7375  modelPar_PE,
7376  modelPar_given_PE,
7377  modelPar_ME,
7378  modelPar_given_ME,
7379  modelPar_AJE,
7380  modelPar_given_AJE,
7381  modelPar_CBCO,
7382  modelPar_given_CBCO,
7383  modelPar_CJC,
7384  modelPar_given_CJC,
7385  modelPar_QCO,
7386  modelPar_given_QCO,
7387  modelPar_CJEP,
7388  modelPar_given_CJEP,
7389  modelPar_PC,
7390  modelPar_given_PC,
7391  modelPar_MC,
7392  modelPar_given_MC,
7393  modelPar_AJC,
7394  modelPar_given_AJC,
7395  modelPar_CJCP,
7396  modelPar_given_CJCP,
7397  modelPar_PS,
7398  modelPar_given_PS,
7399  modelPar_MS,
7400  modelPar_given_MS,
7401  modelPar_AJS,
7402  modelPar_given_AJS,
7403  modelPar_IBEI,
7404  modelPar_given_IBEI,
7405  modelPar_WBE,
7406  modelPar_given_WBE,
7407  modelPar_NEI,
7408  modelPar_given_NEI,
7409  modelPar_IBEN,
7410  modelPar_given_IBEN,
7411  modelPar_NEN,
7412  modelPar_given_NEN,
7413  modelPar_IBCI,
7414  modelPar_given_IBCI,
7415  modelPar_NCI,
7416  modelPar_given_NCI,
7417  modelPar_IBCN,
7418  modelPar_given_IBCN,
7419  modelPar_NCN,
7420  modelPar_given_NCN,
7421  modelPar_AVC1,
7422  modelPar_given_AVC1,
7423  modelPar_AVC2,
7424  modelPar_given_AVC2,
7425  modelPar_ISP,
7426  modelPar_given_ISP,
7427  modelPar_WSP,
7428  modelPar_given_WSP,
7429  modelPar_NFP,
7430  modelPar_given_NFP,
7431  modelPar_IBEIP,
7432  modelPar_given_IBEIP,
7433  modelPar_IBENP,
7434  modelPar_given_IBENP,
7435  modelPar_IBCIP,
7436  modelPar_given_IBCIP,
7437  modelPar_NCIP,
7438  modelPar_given_NCIP,
7439  modelPar_IBCNP,
7440  modelPar_given_IBCNP,
7441  modelPar_NCNP,
7442  modelPar_given_NCNP,
7443  modelPar_VEF,
7444  modelPar_given_VEF,
7445  modelPar_VER,
7446  modelPar_given_VER,
7447  modelPar_IKF,
7448  modelPar_given_IKF,
7449  modelPar_IKR,
7450  modelPar_given_IKR,
7451  modelPar_IKP,
7452  modelPar_given_IKP,
7453  modelPar_TF,
7454  modelPar_given_TF,
7455  modelPar_QTF,
7456  modelPar_given_QTF,
7457  modelPar_XTF,
7458  modelPar_given_XTF,
7459  modelPar_VTF,
7460  modelPar_given_VTF,
7461  modelPar_ITF,
7462  modelPar_given_ITF,
7463  modelPar_TR,
7464  modelPar_given_TR,
7465  modelPar_TD,
7466  modelPar_given_TD,
7467  modelPar_KFN,
7468  modelPar_given_KFN,
7469  modelPar_AFN,
7470  modelPar_given_AFN,
7471  modelPar_BFN,
7472  modelPar_given_BFN,
7473  modelPar_XRE,
7474  modelPar_given_XRE,
7475  modelPar_XRBI,
7476  modelPar_given_XRBI,
7477  modelPar_XRCI,
7478  modelPar_given_XRCI,
7479  modelPar_XRS,
7480  modelPar_given_XRS,
7481  modelPar_XVO,
7482  modelPar_given_XVO,
7483  modelPar_EA,
7484  modelPar_given_EA,
7485  modelPar_EAIE,
7486  modelPar_given_EAIE,
7487  modelPar_EAIC,
7488  modelPar_given_EAIC,
7489  modelPar_EAIS,
7490  modelPar_given_EAIS,
7491  modelPar_EANE,
7492  modelPar_given_EANE,
7493  modelPar_EANC,
7494  modelPar_given_EANC,
7495  modelPar_EANS,
7496  modelPar_given_EANS,
7497  modelPar_XIS,
7498  modelPar_given_XIS,
7499  modelPar_XII,
7500  modelPar_given_XII,
7501  modelPar_XIN,
7502  modelPar_given_XIN,
7503  modelPar_TNF,
7504  modelPar_given_TNF,
7505  modelPar_TAVC,
7506  modelPar_given_TAVC,
7507  modelPar_RTH,
7508  modelPar_given_RTH,
7509  modelPar_CTH,
7510  modelPar_given_CTH,
7511  modelPar_VRT,
7512  modelPar_given_VRT,
7513  modelPar_ART,
7514  modelPar_given_ART,
7515  modelPar_CCSO,
7516  modelPar_given_CCSO,
7517  modelPar_QBM,
7518  modelPar_given_QBM,
7519  modelPar_NKF,
7520  modelPar_given_NKF,
7521  modelPar_XIKF,
7522  modelPar_given_XIKF,
7523  modelPar_XRCX,
7524  modelPar_given_XRCX,
7525  modelPar_XRBX,
7526  modelPar_given_XRBX,
7527  modelPar_XRBP,
7528  modelPar_given_XRBP,
7529  modelPar_ISRR,
7530  modelPar_given_ISRR,
7531  modelPar_XISR,
7532  modelPar_given_XISR,
7533  modelPar_DEAR,
7534  modelPar_given_DEAR,
7535  modelPar_EAP,
7536  modelPar_given_EAP,
7537  modelPar_VBBE,
7538  modelPar_given_VBBE,
7539  modelPar_NBBE,
7540  modelPar_given_NBBE,
7541  modelPar_IBBE,
7542  modelPar_given_IBBE,
7543  modelPar_TVBBE1,
7544  modelPar_given_TVBBE1,
7545  modelPar_TVBBE2,
7546  modelPar_given_TVBBE2,
7547  modelPar_TNBBE,
7548  modelPar_given_TNBBE,
7549  modelPar_EBBE,
7550  modelPar_given_EBBE,
7551  modelPar_DTEMP,
7552  modelPar_given_DTEMP,
7553  modelPar_VERS,
7554  modelPar_given_VERS,
7555  modelPar_VREV,
7556  modelPar_given_VREV,
7557  // non-reals (including hidden)
7558  modelPar_dtype,
7559  in.admsTemperature,
7560  in.adms_vt_nom,
7561  in.getDeviceOptions().gmin,
7562  staticContributions,
7563  dynamicContributions,
7564  in);
7565 
7566 
7567  // We now have the F and Q vector stuff, populate the dependencies:
7568 
7569  dfdp[in.admsNodeID_c+inst*(10+0)] += staticContributions[in.admsNodeID_c].dx(0);
7570  dqdp[in.admsNodeID_c+inst*(10+0)] += dynamicContributions[in.admsNodeID_c].dx(0);
7571  Findices[in.admsNodeID_c+inst*(10+0)] = in.li_c;
7572  Qindices[in.admsNodeID_c+inst*(10+0)] = in.li_c;
7573  dfdp[in.admsNodeID_b+inst*(10+0)] += staticContributions[in.admsNodeID_b].dx(0);
7574  dqdp[in.admsNodeID_b+inst*(10+0)] += dynamicContributions[in.admsNodeID_b].dx(0);
7575  Findices[in.admsNodeID_b+inst*(10+0)] = in.li_b;
7576  Qindices[in.admsNodeID_b+inst*(10+0)] = in.li_b;
7577  dfdp[in.admsNodeID_e+inst*(10+0)] += staticContributions[in.admsNodeID_e].dx(0);
7578  dqdp[in.admsNodeID_e+inst*(10+0)] += dynamicContributions[in.admsNodeID_e].dx(0);
7579  Findices[in.admsNodeID_e+inst*(10+0)] = in.li_e;
7580  Qindices[in.admsNodeID_e+inst*(10+0)] = in.li_e;
7581  dfdp[in.admsNodeID_dt+inst*(10+0)] += staticContributions[in.admsNodeID_dt].dx(0);
7582  dqdp[in.admsNodeID_dt+inst*(10+0)] += dynamicContributions[in.admsNodeID_dt].dx(0);
7583  Findices[in.admsNodeID_dt+inst*(10+0)] = in.li_dt;
7584  Qindices[in.admsNodeID_dt+inst*(10+0)] = in.li_dt;
7585  dfdp[in.admsNodeID_cx+inst*(10+0)] += staticContributions[in.admsNodeID_cx].dx(0);
7586  dqdp[in.admsNodeID_cx+inst*(10+0)] += dynamicContributions[in.admsNodeID_cx].dx(0);
7587  Findices[in.admsNodeID_cx+inst*(10+0)] = in.li_cx;
7588  Qindices[in.admsNodeID_cx+inst*(10+0)] = in.li_cx;
7589  dfdp[in.admsNodeID_ci+inst*(10+0)] += staticContributions[in.admsNodeID_ci].dx(0);
7590  dqdp[in.admsNodeID_ci+inst*(10+0)] += dynamicContributions[in.admsNodeID_ci].dx(0);
7591  Findices[in.admsNodeID_ci+inst*(10+0)] = in.li_ci;
7592  Qindices[in.admsNodeID_ci+inst*(10+0)] = in.li_ci;
7593  dfdp[in.admsNodeID_bx+inst*(10+0)] += staticContributions[in.admsNodeID_bx].dx(0);
7594  dqdp[in.admsNodeID_bx+inst*(10+0)] += dynamicContributions[in.admsNodeID_bx].dx(0);
7595  Findices[in.admsNodeID_bx+inst*(10+0)] = in.li_bx;
7596  Qindices[in.admsNodeID_bx+inst*(10+0)] = in.li_bx;
7597  dfdp[in.admsNodeID_bi+inst*(10+0)] += staticContributions[in.admsNodeID_bi].dx(0);
7598  dqdp[in.admsNodeID_bi+inst*(10+0)] += dynamicContributions[in.admsNodeID_bi].dx(0);
7599  Findices[in.admsNodeID_bi+inst*(10+0)] = in.li_bi;
7600  Qindices[in.admsNodeID_bi+inst*(10+0)] = in.li_bi;
7601  dfdp[in.admsNodeID_ei+inst*(10+0)] += staticContributions[in.admsNodeID_ei].dx(0);
7602  dqdp[in.admsNodeID_ei+inst*(10+0)] += dynamicContributions[in.admsNodeID_ei].dx(0);
7603  Findices[in.admsNodeID_ei+inst*(10+0)] = in.li_ei;
7604  Qindices[in.admsNodeID_ei+inst*(10+0)] = in.li_ei;
7605  dfdp[in.admsNodeID_bp+inst*(10+0)] += staticContributions[in.admsNodeID_bp].dx(0);
7606  dqdp[in.admsNodeID_bp+inst*(10+0)] += dynamicContributions[in.admsNodeID_bp].dx(0);
7607  Findices[in.admsNodeID_bp+inst*(10+0)] = in.li_bp;
7608  Qindices[in.admsNodeID_bp+inst*(10+0)] = in.li_bp;
7609  }
7610 
7611 }
7612 
7613 } // namespace ADMSvbic
7614 } // namespace Device
7615 } // namespace Xyce
const InstanceName & getName() const
static T adms_vt(const T temp)
std::vector< double > Jdxp_dynamic
void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)
const SolverState & solverState_
Descriptor & addPar(const char *parName, T default_value, T U::*varPtr)
Adds the parameter description to the parameter map.
Definition: N_DEV_Pars.h:1429
#define CONSTCtoK
Definition: N_DEV_Const.h:52
double pnjlim_new(double vnew, double vold, double vt, double vcrit, int *icheck)
Linear::Vector * nextSolVectorPtr
bool processParams()
processParams
bool given(const std::string &parameter_name) const
Linear::Vector * daeQVectorPtr
static InstanceSensitivity instSens
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)
#define MC
static ModelSensitivity modSens
Base class for all parameters.
Definition: N_DEV_Pars.h:169
#define AssertLIDs(cmp)
Parameter is subject to being set to minimum junction capacitance.
Definition: N_DEV_Pars.h:71
void jacStampMap_fixOrder(const JacobianStamp &stamp_parent, JacobianStamp &map2_parent, JacobianStamp &stamp, JacobianStamp &map2)
virtual void registerJacLIDs(const JacobianStamp &jacLIDVec)
Parameter is subject to being set to minimum lead resistance.
Definition: N_DEV_Pars.h:70
std::vector< AdmsFadType > staticContributions
static void loadModelParameters(ParametricData< Model > &model_parameters)
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
Instance(const Configuration &configuration, const InstanceBlock &instance_block, Model &model, const FactoryBlock &factory_block)
std::vector< Param > params
Parameters from the line.
std::vector< std::vector< int > > jacMap2
void setParams(const std::vector< Param > &params)
void evaluateInitialInstance(AdmsSensFadType &instancePar_DTEMP, bool instancePar_given_DTEMP, int instancePar_M, bool instancePar_given_M, AdmsSensFadType &modelPar_TNOM, bool modelPar_given_TNOM, AdmsSensFadType &modelPar_RCX, bool modelPar_given_RCX, AdmsSensFadType &modelPar_RCI, bool modelPar_given_RCI, AdmsSensFadType &modelPar_VO, bool modelPar_given_VO, AdmsSensFadType &modelPar_GAMM, bool modelPar_given_GAMM, AdmsSensFadType &modelPar_HRCF, bool modelPar_given_HRCF, AdmsSensFadType &modelPar_RBX, bool modelPar_given_RBX, AdmsSensFadType &modelPar_RBI, bool modelPar_given_RBI, AdmsSensFadType &modelPar_RE, bool modelPar_given_RE, AdmsSensFadType &modelPar_RS, bool modelPar_given_RS, AdmsSensFadType &modelPar_RBP, bool modelPar_given_RBP, AdmsSensFadType &modelPar_IS, bool modelPar_given_IS, AdmsSensFadType &modelPar_NF, bool modelPar_given_NF, AdmsSensFadType &modelPar_NR, bool modelPar_given_NR, AdmsSensFadType &modelPar_FC, bool modelPar_given_FC, AdmsSensFadType &modelPar_CBEO, bool modelPar_given_CBEO, AdmsSensFadType &modelPar_CJE, bool modelPar_given_CJE, AdmsSensFadType &modelPar_PE, bool modelPar_given_PE, AdmsSensFadType &modelPar_ME, bool modelPar_given_ME, AdmsSensFadType &modelPar_AJE, bool modelPar_given_AJE, AdmsSensFadType &modelPar_CBCO, bool modelPar_given_CBCO, AdmsSensFadType &modelPar_CJC, bool modelPar_given_CJC, AdmsSensFadType &modelPar_QCO, bool modelPar_given_QCO, AdmsSensFadType &modelPar_CJEP, bool modelPar_given_CJEP, AdmsSensFadType &modelPar_PC, bool modelPar_given_PC, AdmsSensFadType &modelPar_MC, bool modelPar_given_MC, AdmsSensFadType &modelPar_AJC, bool modelPar_given_AJC, AdmsSensFadType &modelPar_CJCP, bool modelPar_given_CJCP, AdmsSensFadType &modelPar_PS, bool modelPar_given_PS, AdmsSensFadType &modelPar_MS, bool modelPar_given_MS, AdmsSensFadType &modelPar_AJS, bool modelPar_given_AJS, AdmsSensFadType &modelPar_IBEI, bool modelPar_given_IBEI, AdmsSensFadType &modelPar_WBE, bool modelPar_given_WBE, AdmsSensFadType &modelPar_NEI, bool modelPar_given_NEI, AdmsSensFadType &modelPar_IBEN, bool modelPar_given_IBEN, AdmsSensFadType &modelPar_NEN, bool modelPar_given_NEN, AdmsSensFadType &modelPar_IBCI, bool modelPar_given_IBCI, AdmsSensFadType &modelPar_NCI, bool modelPar_given_NCI, AdmsSensFadType &modelPar_IBCN, bool modelPar_given_IBCN, AdmsSensFadType &modelPar_NCN, bool modelPar_given_NCN, AdmsSensFadType &modelPar_AVC1, bool modelPar_given_AVC1, AdmsSensFadType &modelPar_AVC2, bool modelPar_given_AVC2, AdmsSensFadType &modelPar_ISP, bool modelPar_given_ISP, AdmsSensFadType &modelPar_WSP, bool modelPar_given_WSP, AdmsSensFadType &modelPar_NFP, bool modelPar_given_NFP, AdmsSensFadType &modelPar_IBEIP, bool modelPar_given_IBEIP, AdmsSensFadType &modelPar_IBENP, bool modelPar_given_IBENP, AdmsSensFadType &modelPar_IBCIP, bool modelPar_given_IBCIP, AdmsSensFadType &modelPar_NCIP, bool modelPar_given_NCIP, AdmsSensFadType &modelPar_IBCNP, bool modelPar_given_IBCNP, AdmsSensFadType &modelPar_NCNP, bool modelPar_given_NCNP, AdmsSensFadType &modelPar_VEF, bool modelPar_given_VEF, AdmsSensFadType &modelPar_VER, bool modelPar_given_VER, AdmsSensFadType &modelPar_IKF, bool modelPar_given_IKF, AdmsSensFadType &modelPar_IKR, bool modelPar_given_IKR, AdmsSensFadType &modelPar_IKP, bool modelPar_given_IKP, AdmsSensFadType &modelPar_TF, bool modelPar_given_TF, AdmsSensFadType &modelPar_QTF, bool modelPar_given_QTF, AdmsSensFadType &modelPar_XTF, bool modelPar_given_XTF, AdmsSensFadType &modelPar_VTF, bool modelPar_given_VTF, AdmsSensFadType &modelPar_ITF, bool modelPar_given_ITF, AdmsSensFadType &modelPar_TR, bool modelPar_given_TR, AdmsSensFadType &modelPar_TD, bool modelPar_given_TD, AdmsSensFadType &modelPar_KFN, bool modelPar_given_KFN, AdmsSensFadType &modelPar_AFN, bool modelPar_given_AFN, AdmsSensFadType &modelPar_BFN, bool modelPar_given_BFN, AdmsSensFadType &modelPar_XRE, bool modelPar_given_XRE, AdmsSensFadType &modelPar_XRBI, bool modelPar_given_XRBI, AdmsSensFadType &modelPar_XRCI, bool modelPar_given_XRCI, AdmsSensFadType &modelPar_XRS, bool modelPar_given_XRS, AdmsSensFadType &modelPar_XVO, bool modelPar_given_XVO, AdmsSensFadType &modelPar_EA, bool modelPar_given_EA, AdmsSensFadType &modelPar_EAIE, bool modelPar_given_EAIE, AdmsSensFadType &modelPar_EAIC, bool modelPar_given_EAIC, AdmsSensFadType &modelPar_EAIS, bool modelPar_given_EAIS, AdmsSensFadType &modelPar_EANE, bool modelPar_given_EANE, AdmsSensFadType &modelPar_EANC, bool modelPar_given_EANC, AdmsSensFadType &modelPar_EANS, bool modelPar_given_EANS, AdmsSensFadType &modelPar_XIS, bool modelPar_given_XIS, AdmsSensFadType &modelPar_XII, bool modelPar_given_XII, AdmsSensFadType &modelPar_XIN, bool modelPar_given_XIN, AdmsSensFadType &modelPar_TNF, bool modelPar_given_TNF, AdmsSensFadType &modelPar_TAVC, bool modelPar_given_TAVC, AdmsSensFadType &modelPar_RTH, bool modelPar_given_RTH, AdmsSensFadType &modelPar_CTH, bool modelPar_given_CTH, AdmsSensFadType &modelPar_VRT, bool modelPar_given_VRT, AdmsSensFadType &modelPar_ART, bool modelPar_given_ART, AdmsSensFadType &modelPar_CCSO, bool modelPar_given_CCSO, AdmsSensFadType &modelPar_QBM, bool modelPar_given_QBM, AdmsSensFadType &modelPar_NKF, bool modelPar_given_NKF, AdmsSensFadType &modelPar_XIKF, bool modelPar_given_XIKF, AdmsSensFadType &modelPar_XRCX, bool modelPar_given_XRCX, AdmsSensFadType &modelPar_XRBX, bool modelPar_given_XRBX, AdmsSensFadType &modelPar_XRBP, bool modelPar_given_XRBP, AdmsSensFadType &modelPar_ISRR, bool modelPar_given_ISRR, AdmsSensFadType &modelPar_XISR, bool modelPar_given_XISR, AdmsSensFadType &modelPar_DEAR, bool modelPar_given_DEAR, AdmsSensFadType &modelPar_EAP, bool modelPar_given_EAP, AdmsSensFadType &modelPar_VBBE, bool modelPar_given_VBBE, AdmsSensFadType &modelPar_NBBE, bool modelPar_given_NBBE, AdmsSensFadType &modelPar_IBBE, bool modelPar_given_IBBE, AdmsSensFadType &modelPar_TVBBE1, bool modelPar_given_TVBBE1, AdmsSensFadType &modelPar_TVBBE2, bool modelPar_given_TVBBE2, AdmsSensFadType &modelPar_TNBBE, bool modelPar_given_TNBBE, AdmsSensFadType &modelPar_EBBE, bool modelPar_given_EBBE, AdmsSensFadType &modelPar_DTEMP, bool modelPar_given_DTEMP, AdmsSensFadType &modelPar_VERS, bool modelPar_given_VERS, AdmsSensFadType &modelPar_VREV, bool modelPar_given_VREV, int modelPar_dtype, double admsTemperature)
const std::string & getName() const
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
Sacado::Fad::SFad< double, 1 > AdmsSensFadType
void registerJacLIDs(const JacobianStamp &jacLIDVec)
const DeviceOptions & getDeviceOptions() const
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
Parameter is not to be documented.
Definition: N_DEV_Pars.h:72
const DeviceOptions & deviceOptions_
std::vector< std::vector< int > > JacobianStamp
Definition: N_DEV_fwd.h:185
Linear::Vector * nextStaVectorPtr
static Config< T > & addConfiguration()
Adds the device to the Xyce device configuration.
Model(const Configuration &configuration, const ModelBlock &model_block, const FactoryBlock &factory_block)
Linear::Matrix * dFdxMatrixPtr
ScalarT limRTH(ScalarT orig, ScalarT old)
The Device class is an interface for device implementations.
Definition: N_DEV_Device.h:101
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
IdVector LocalIdVector
Definition: N_DEV_fwd.h:187
std::vector< double > probeDiffs
Sacado::Fad::SFad< double, 15 > AdmsFadType
std::vector< AdmsFadType > probeVars
Class Configuration contains device configuration data.
bool processInstanceParams()
processInstanceParams
const JacobianStamp & jacobianStamp() const
std::vector< double > Jdxp_static
#define M
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)
const SolverState & getSolverState() const
std::vector< Instance * > instanceContainer
void registerStateLIDs(const LocalIdVector &staLIDVecRef)
virtual std::ostream & printOutInstances(std::ostream &os) const
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
Linear::Vector * currStaVectorPtr
Linear::Vector * daeFVectorPtr
const std::string & getType() const
std::vector< AdmsFadType > dynamicContributions
#define RS
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
bool updateTemperature(const double &temp=-999.0)
Linear::Matrix * dQdxMatrixPtr
Linear::Vector * flagSolVectorPtr
std::vector< std::vector< int > > jacStamp
void setModParams(const std::vector< Param > &params)
void evaluateModelEquations(std::vector< double > &probeVars, const int admsProbeID_V_ci_ei, const int admsProbeID_V_b_c, const int admsProbeID_V_bp_cx, const int admsProbeID_V_e_ei, const int admsProbeID_V_b_bx, const int admsProbeID_V_bx_bi, const int admsProbeID_V_cx_ci, const int admsProbeID_V_c_cx, const int admsProbeID_V_b_e, const int admsProbeID_V_dt_GND, const int admsProbeID_V_bx_bp, const int admsProbeID_V_bi_cx, const int admsProbeID_V_bx_ei, const int admsProbeID_V_bi_ci, const int admsProbeID_V_bi_ei, const int admsNodeID_c, const int admsNodeID_b, const int admsNodeID_e, const int admsNodeID_dt, const int admsNodeID_cx, const int admsNodeID_ci, const int admsNodeID_bx, const int admsNodeID_bi, const int admsNodeID_ei, const int admsNodeID_bp, AdmsSensFadType &instancePar_DTEMP, bool instancePar_given_DTEMP, int instancePar_M, bool instancePar_given_M, AdmsSensFadType &modelPar_TNOM, bool modelPar_given_TNOM, AdmsSensFadType &modelPar_RCX, bool modelPar_given_RCX, AdmsSensFadType &modelPar_RCI, bool modelPar_given_RCI, AdmsSensFadType &modelPar_VO, bool modelPar_given_VO, AdmsSensFadType &modelPar_GAMM, bool modelPar_given_GAMM, AdmsSensFadType &modelPar_HRCF, bool modelPar_given_HRCF, AdmsSensFadType &modelPar_RBX, bool modelPar_given_RBX, AdmsSensFadType &modelPar_RBI, bool modelPar_given_RBI, AdmsSensFadType &modelPar_RE, bool modelPar_given_RE, AdmsSensFadType &modelPar_RS, bool modelPar_given_RS, AdmsSensFadType &modelPar_RBP, bool modelPar_given_RBP, AdmsSensFadType &modelPar_IS, bool modelPar_given_IS, AdmsSensFadType &modelPar_NF, bool modelPar_given_NF, AdmsSensFadType &modelPar_NR, bool modelPar_given_NR, AdmsSensFadType &modelPar_FC, bool modelPar_given_FC, AdmsSensFadType &modelPar_CBEO, bool modelPar_given_CBEO, AdmsSensFadType &modelPar_CJE, bool modelPar_given_CJE, AdmsSensFadType &modelPar_PE, bool modelPar_given_PE, AdmsSensFadType &modelPar_ME, bool modelPar_given_ME, AdmsSensFadType &modelPar_AJE, bool modelPar_given_AJE, AdmsSensFadType &modelPar_CBCO, bool modelPar_given_CBCO, AdmsSensFadType &modelPar_CJC, bool modelPar_given_CJC, AdmsSensFadType &modelPar_QCO, bool modelPar_given_QCO, AdmsSensFadType &modelPar_CJEP, bool modelPar_given_CJEP, AdmsSensFadType &modelPar_PC, bool modelPar_given_PC, AdmsSensFadType &modelPar_MC, bool modelPar_given_MC, AdmsSensFadType &modelPar_AJC, bool modelPar_given_AJC, AdmsSensFadType &modelPar_CJCP, bool modelPar_given_CJCP, AdmsSensFadType &modelPar_PS, bool modelPar_given_PS, AdmsSensFadType &modelPar_MS, bool modelPar_given_MS, AdmsSensFadType &modelPar_AJS, bool modelPar_given_AJS, AdmsSensFadType &modelPar_IBEI, bool modelPar_given_IBEI, AdmsSensFadType &modelPar_WBE, bool modelPar_given_WBE, AdmsSensFadType &modelPar_NEI, bool modelPar_given_NEI, AdmsSensFadType &modelPar_IBEN, bool modelPar_given_IBEN, AdmsSensFadType &modelPar_NEN, bool modelPar_given_NEN, AdmsSensFadType &modelPar_IBCI, bool modelPar_given_IBCI, AdmsSensFadType &modelPar_NCI, bool modelPar_given_NCI, AdmsSensFadType &modelPar_IBCN, bool modelPar_given_IBCN, AdmsSensFadType &modelPar_NCN, bool modelPar_given_NCN, AdmsSensFadType &modelPar_AVC1, bool modelPar_given_AVC1, AdmsSensFadType &modelPar_AVC2, bool modelPar_given_AVC2, AdmsSensFadType &modelPar_ISP, bool modelPar_given_ISP, AdmsSensFadType &modelPar_WSP, bool modelPar_given_WSP, AdmsSensFadType &modelPar_NFP, bool modelPar_given_NFP, AdmsSensFadType &modelPar_IBEIP, bool modelPar_given_IBEIP, AdmsSensFadType &modelPar_IBENP, bool modelPar_given_IBENP, AdmsSensFadType &modelPar_IBCIP, bool modelPar_given_IBCIP, AdmsSensFadType &modelPar_NCIP, bool modelPar_given_NCIP, AdmsSensFadType &modelPar_IBCNP, bool modelPar_given_IBCNP, AdmsSensFadType &modelPar_NCNP, bool modelPar_given_NCNP, AdmsSensFadType &modelPar_VEF, bool modelPar_given_VEF, AdmsSensFadType &modelPar_VER, bool modelPar_given_VER, AdmsSensFadType &modelPar_IKF, bool modelPar_given_IKF, AdmsSensFadType &modelPar_IKR, bool modelPar_given_IKR, AdmsSensFadType &modelPar_IKP, bool modelPar_given_IKP, AdmsSensFadType &modelPar_TF, bool modelPar_given_TF, AdmsSensFadType &modelPar_QTF, bool modelPar_given_QTF, AdmsSensFadType &modelPar_XTF, bool modelPar_given_XTF, AdmsSensFadType &modelPar_VTF, bool modelPar_given_VTF, AdmsSensFadType &modelPar_ITF, bool modelPar_given_ITF, AdmsSensFadType &modelPar_TR, bool modelPar_given_TR, AdmsSensFadType &modelPar_TD, bool modelPar_given_TD, AdmsSensFadType &modelPar_KFN, bool modelPar_given_KFN, AdmsSensFadType &modelPar_AFN, bool modelPar_given_AFN, AdmsSensFadType &modelPar_BFN, bool modelPar_given_BFN, AdmsSensFadType &modelPar_XRE, bool modelPar_given_XRE, AdmsSensFadType &modelPar_XRBI, bool modelPar_given_XRBI, AdmsSensFadType &modelPar_XRCI, bool modelPar_given_XRCI, AdmsSensFadType &modelPar_XRS, bool modelPar_given_XRS, AdmsSensFadType &modelPar_XVO, bool modelPar_given_XVO, AdmsSensFadType &modelPar_EA, bool modelPar_given_EA, AdmsSensFadType &modelPar_EAIE, bool modelPar_given_EAIE, AdmsSensFadType &modelPar_EAIC, bool modelPar_given_EAIC, AdmsSensFadType &modelPar_EAIS, bool modelPar_given_EAIS, AdmsSensFadType &modelPar_EANE, bool modelPar_given_EANE, AdmsSensFadType &modelPar_EANC, bool modelPar_given_EANC, AdmsSensFadType &modelPar_EANS, bool modelPar_given_EANS, AdmsSensFadType &modelPar_XIS, bool modelPar_given_XIS, AdmsSensFadType &modelPar_XII, bool modelPar_given_XII, AdmsSensFadType &modelPar_XIN, bool modelPar_given_XIN, AdmsSensFadType &modelPar_TNF, bool modelPar_given_TNF, AdmsSensFadType &modelPar_TAVC, bool modelPar_given_TAVC, AdmsSensFadType &modelPar_RTH, bool modelPar_given_RTH, AdmsSensFadType &modelPar_CTH, bool modelPar_given_CTH, AdmsSensFadType &modelPar_VRT, bool modelPar_given_VRT, AdmsSensFadType &modelPar_ART, bool modelPar_given_ART, AdmsSensFadType &modelPar_CCSO, bool modelPar_given_CCSO, AdmsSensFadType &modelPar_QBM, bool modelPar_given_QBM, AdmsSensFadType &modelPar_NKF, bool modelPar_given_NKF, AdmsSensFadType &modelPar_XIKF, bool modelPar_given_XIKF, AdmsSensFadType &modelPar_XRCX, bool modelPar_given_XRCX, AdmsSensFadType &modelPar_XRBX, bool modelPar_given_XRBX, AdmsSensFadType &modelPar_XRBP, bool modelPar_given_XRBP, AdmsSensFadType &modelPar_ISRR, bool modelPar_given_ISRR, AdmsSensFadType &modelPar_XISR, bool modelPar_given_XISR, AdmsSensFadType &modelPar_DEAR, bool modelPar_given_DEAR, AdmsSensFadType &modelPar_EAP, bool modelPar_given_EAP, AdmsSensFadType &modelPar_VBBE, bool modelPar_given_VBBE, AdmsSensFadType &modelPar_NBBE, bool modelPar_given_NBBE, AdmsSensFadType &modelPar_IBBE, bool modelPar_given_IBBE, AdmsSensFadType &modelPar_TVBBE1, bool modelPar_given_TVBBE1, AdmsSensFadType &modelPar_TVBBE2, bool modelPar_given_TVBBE2, AdmsSensFadType &modelPar_TNBBE, bool modelPar_given_TNBBE, AdmsSensFadType &modelPar_EBBE, bool modelPar_given_EBBE, AdmsSensFadType &modelPar_DTEMP, bool modelPar_given_DTEMP, AdmsSensFadType &modelPar_VERS, bool modelPar_given_VERS, AdmsSensFadType &modelPar_VREV, bool modelPar_given_VREV, int modelPar_dtype, double admsTemperature, double adms_vt_nom, double gmin, std::vector< AdmsSensFadType > &staticContributions, std::vector< AdmsSensFadType > &dynamicContributions, const Instance &theInstance)
void evaluateInitialModel(AdmsSensFadType &modelPar_TNOM, bool modelPar_given_TNOM, AdmsSensFadType &modelPar_RCX, bool modelPar_given_RCX, AdmsSensFadType &modelPar_RCI, bool modelPar_given_RCI, AdmsSensFadType &modelPar_VO, bool modelPar_given_VO, AdmsSensFadType &modelPar_GAMM, bool modelPar_given_GAMM, AdmsSensFadType &modelPar_HRCF, bool modelPar_given_HRCF, AdmsSensFadType &modelPar_RBX, bool modelPar_given_RBX, AdmsSensFadType &modelPar_RBI, bool modelPar_given_RBI, AdmsSensFadType &modelPar_RE, bool modelPar_given_RE, AdmsSensFadType &modelPar_RS, bool modelPar_given_RS, AdmsSensFadType &modelPar_RBP, bool modelPar_given_RBP, AdmsSensFadType &modelPar_IS, bool modelPar_given_IS, AdmsSensFadType &modelPar_NF, bool modelPar_given_NF, AdmsSensFadType &modelPar_NR, bool modelPar_given_NR, AdmsSensFadType &modelPar_FC, bool modelPar_given_FC, AdmsSensFadType &modelPar_CBEO, bool modelPar_given_CBEO, AdmsSensFadType &modelPar_CJE, bool modelPar_given_CJE, AdmsSensFadType &modelPar_PE, bool modelPar_given_PE, AdmsSensFadType &modelPar_ME, bool modelPar_given_ME, AdmsSensFadType &modelPar_AJE, bool modelPar_given_AJE, AdmsSensFadType &modelPar_CBCO, bool modelPar_given_CBCO, AdmsSensFadType &modelPar_CJC, bool modelPar_given_CJC, AdmsSensFadType &modelPar_QCO, bool modelPar_given_QCO, AdmsSensFadType &modelPar_CJEP, bool modelPar_given_CJEP, AdmsSensFadType &modelPar_PC, bool modelPar_given_PC, AdmsSensFadType &modelPar_MC, bool modelPar_given_MC, AdmsSensFadType &modelPar_AJC, bool modelPar_given_AJC, AdmsSensFadType &modelPar_CJCP, bool modelPar_given_CJCP, AdmsSensFadType &modelPar_PS, bool modelPar_given_PS, AdmsSensFadType &modelPar_MS, bool modelPar_given_MS, AdmsSensFadType &modelPar_AJS, bool modelPar_given_AJS, AdmsSensFadType &modelPar_IBEI, bool modelPar_given_IBEI, AdmsSensFadType &modelPar_WBE, bool modelPar_given_WBE, AdmsSensFadType &modelPar_NEI, bool modelPar_given_NEI, AdmsSensFadType &modelPar_IBEN, bool modelPar_given_IBEN, AdmsSensFadType &modelPar_NEN, bool modelPar_given_NEN, AdmsSensFadType &modelPar_IBCI, bool modelPar_given_IBCI, AdmsSensFadType &modelPar_NCI, bool modelPar_given_NCI, AdmsSensFadType &modelPar_IBCN, bool modelPar_given_IBCN, AdmsSensFadType &modelPar_NCN, bool modelPar_given_NCN, AdmsSensFadType &modelPar_AVC1, bool modelPar_given_AVC1, AdmsSensFadType &modelPar_AVC2, bool modelPar_given_AVC2, AdmsSensFadType &modelPar_ISP, bool modelPar_given_ISP, AdmsSensFadType &modelPar_WSP, bool modelPar_given_WSP, AdmsSensFadType &modelPar_NFP, bool modelPar_given_NFP, AdmsSensFadType &modelPar_IBEIP, bool modelPar_given_IBEIP, AdmsSensFadType &modelPar_IBENP, bool modelPar_given_IBENP, AdmsSensFadType &modelPar_IBCIP, bool modelPar_given_IBCIP, AdmsSensFadType &modelPar_NCIP, bool modelPar_given_NCIP, AdmsSensFadType &modelPar_IBCNP, bool modelPar_given_IBCNP, AdmsSensFadType &modelPar_NCNP, bool modelPar_given_NCNP, AdmsSensFadType &modelPar_VEF, bool modelPar_given_VEF, AdmsSensFadType &modelPar_VER, bool modelPar_given_VER, AdmsSensFadType &modelPar_IKF, bool modelPar_given_IKF, AdmsSensFadType &modelPar_IKR, bool modelPar_given_IKR, AdmsSensFadType &modelPar_IKP, bool modelPar_given_IKP, AdmsSensFadType &modelPar_TF, bool modelPar_given_TF, AdmsSensFadType &modelPar_QTF, bool modelPar_given_QTF, AdmsSensFadType &modelPar_XTF, bool modelPar_given_XTF, AdmsSensFadType &modelPar_VTF, bool modelPar_given_VTF, AdmsSensFadType &modelPar_ITF, bool modelPar_given_ITF, AdmsSensFadType &modelPar_TR, bool modelPar_given_TR, AdmsSensFadType &modelPar_TD, bool modelPar_given_TD, AdmsSensFadType &modelPar_KFN, bool modelPar_given_KFN, AdmsSensFadType &modelPar_AFN, bool modelPar_given_AFN, AdmsSensFadType &modelPar_BFN, bool modelPar_given_BFN, AdmsSensFadType &modelPar_XRE, bool modelPar_given_XRE, AdmsSensFadType &modelPar_XRBI, bool modelPar_given_XRBI, AdmsSensFadType &modelPar_XRCI, bool modelPar_given_XRCI, AdmsSensFadType &modelPar_XRS, bool modelPar_given_XRS, AdmsSensFadType &modelPar_XVO, bool modelPar_given_XVO, AdmsSensFadType &modelPar_EA, bool modelPar_given_EA, AdmsSensFadType &modelPar_EAIE, bool modelPar_given_EAIE, AdmsSensFadType &modelPar_EAIC, bool modelPar_given_EAIC, AdmsSensFadType &modelPar_EAIS, bool modelPar_given_EAIS, AdmsSensFadType &modelPar_EANE, bool modelPar_given_EANE, AdmsSensFadType &modelPar_EANC, bool modelPar_given_EANC, AdmsSensFadType &modelPar_EANS, bool modelPar_given_EANS, AdmsSensFadType &modelPar_XIS, bool modelPar_given_XIS, AdmsSensFadType &modelPar_XII, bool modelPar_given_XII, AdmsSensFadType &modelPar_XIN, bool modelPar_given_XIN, AdmsSensFadType &modelPar_TNF, bool modelPar_given_TNF, AdmsSensFadType &modelPar_TAVC, bool modelPar_given_TAVC, AdmsSensFadType &modelPar_RTH, bool modelPar_given_RTH, AdmsSensFadType &modelPar_CTH, bool modelPar_given_CTH, AdmsSensFadType &modelPar_VRT, bool modelPar_given_VRT, AdmsSensFadType &modelPar_ART, bool modelPar_given_ART, AdmsSensFadType &modelPar_CCSO, bool modelPar_given_CCSO, AdmsSensFadType &modelPar_QBM, bool modelPar_given_QBM, AdmsSensFadType &modelPar_NKF, bool modelPar_given_NKF, AdmsSensFadType &modelPar_XIKF, bool modelPar_given_XIKF, AdmsSensFadType &modelPar_XRCX, bool modelPar_given_XRCX, AdmsSensFadType &modelPar_XRBX, bool modelPar_given_XRBX, AdmsSensFadType &modelPar_XRBP, bool modelPar_given_XRBP, AdmsSensFadType &modelPar_ISRR, bool modelPar_given_ISRR, AdmsSensFadType &modelPar_XISR, bool modelPar_given_XISR, AdmsSensFadType &modelPar_DEAR, bool modelPar_given_DEAR, AdmsSensFadType &modelPar_EAP, bool modelPar_given_EAP, AdmsSensFadType &modelPar_VBBE, bool modelPar_given_VBBE, AdmsSensFadType &modelPar_NBBE, bool modelPar_given_NBBE, AdmsSensFadType &modelPar_IBBE, bool modelPar_given_IBBE, AdmsSensFadType &modelPar_TVBBE1, bool modelPar_given_TVBBE1, AdmsSensFadType &modelPar_TVBBE2, bool modelPar_given_TVBBE2, AdmsSensFadType &modelPar_TNBBE, bool modelPar_given_TNBBE, AdmsSensFadType &modelPar_EBBE, bool modelPar_given_EBBE, AdmsSensFadType &modelPar_DTEMP, bool modelPar_given_DTEMP, AdmsSensFadType &modelPar_VERS, bool modelPar_given_VERS, AdmsSensFadType &modelPar_VREV, bool modelPar_given_VREV, int modelPar_dtype, double admsTemperature)