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