Xyce  6.1
N_DEV_ADMSbjt504va.h
Go to the documentation of this file.
1 
2 // -*-c++-*-
3 //-----------------------------------------------------------------------------
4 // Copyright Notice
5 //
6 // Copyright 2002 Sandia Corporation. Under the terms
7 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
8 // Government retains certain rights in this software.
9 //
10 // Xyce(TM) Parallel Electrical Simulator
11 // Copyright (C) 2002-2015 Sandia Corporation
12 //
13 // This program is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // This program is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU General Public License for more details.
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with this program. If not, see <http://www.gnu.org/licenses/>.
25 //-----------------------------------------------------------------------------
26 
27 //-----------------------------------------------------------------------------
28 // Filename : $RCSfile: N_DEV_ADMSbjt504va.h,v $
29 //
30 // Purpose :
31 //
32 // Special Notes : Generated from verilog file bjt504.va with ADMS
33 // interface for Xyce 6.1.0
34 // DO NOT EDIT THIS FILE DIRECTLY! It may be overwritten!
35 //
36 // Creator : admsXml-2.3.4
37 //
38 // Creation Date : Wed, 04 Mar 2015 17:09:29
39 //
40 // Revision Information:
41 // ---------------------
42 //
43 // Revision Number: $Revision: 1.6.2.1 $
44 //
45 // Revision Date : $Date: 2015/04/02 18:20:08 $
46 //
47 // Current Owner : $Author: tvrusso $
48 //-----------------------------------------------------------------------------
49 #ifndef Xyce_N_DEV_ADMSbjt504va_h
50 #define Xyce_N_DEV_ADMSbjt504va_h
51 
52 
53 #include <Sacado.hpp>
54 
55 #include <N_DEV_Configuration.h>
56 #include <N_DEV_Const.h>
57 #include <N_DEV_DeviceBlock.h>
58 #include <N_DEV_DeviceInstance.h>
59 #include <N_DEV_DeviceModel.h>
60 #include <N_DEV_BJT.h>
61 
62 
63 namespace Xyce {
64 namespace Device {
65 namespace ADMSbjt504va {
66 
67 // This typedef is for our automatic differentiation:
68 typedef Sacado::Fad::SFad<double,15> AdmsFadType;
69 typedef Sacado::Fad::SFad<double,1> AdmsSensFadType;
70 
71 class Model;
72 class Instance;
74 
75 //-----------------------------------------------------------------------------
76 // Class : InstanceSensitivity
77 //
78 // Purpose : This class is a functor for sensitivity
79 //
80 // Special Notes :
81 // Creator :
82 // Creation Date :
83 //-----------------------------------------------------------------------------
85 {
86 public:
88  baseSensitivity() {};
89 
90  virtual ~InstanceSensitivity() {};
91 
92  virtual void operator()(
93  const ParameterBase &entity,
94  const std::string &param,
95  std::vector<double> & dfdp,
96  std::vector<double> & dqdp,
97  std::vector<double> & dbdp,
98  std::vector<int> & Findices,
99  std::vector<int> & Qindices,
100  std::vector<int> & Bindices
101  ) const ;
102 };
103 
105 
106 
107 //-----------------------------------------------------------------------------
108 // Class : ModelSensitivity
109 //
110 // Purpose : This class is a functor for sensitivity
111 //
112 // Special Notes :
113 // Creator :
114 // Creation Date :
115 //-----------------------------------------------------------------------------
117 {
118 public:
120  baseSensitivity() {};
121 
122  virtual ~ModelSensitivity() {};
123 
124  virtual void operator()(
125  const ParameterBase &entity,
126  const std::string &param,
127  std::vector<double> & dfdp,
128  std::vector<double> & dqdp,
129  std::vector<double> & dbdp,
130  std::vector<int> & Findices,
131  std::vector<int> & Qindices,
132  std::vector<int> & Bindices
133  ) const ;
134 };
135 
137 
138 // general purpose free functions
139 // thermal voltage at kelvin temperature temp)
140 template <typename T> static inline T adms_vt(const T temp) {return(CONSTKoverQ*temp);};
141 
142 // Figure out how to template this shiznit!
143 //-----------------------------------------------------------------------------
144 
145 
146 template<typename Tin>
147 static Tin adms_ternary_op(const bool cond, const Tin &ifTrue, const Tin &ifFalse)
148 {
149  if (cond)
150  return ifTrue;
151  else
152  return ifFalse;
153 }
154 
155 template<typename Tin>
156 static Tin adms_ternary_op(const bool cond, const Tin &ifTrue, const double &ifFalse)
157 {
158  if (cond)
159  return ifTrue;
160  else
161  return Tin(ifFalse);
162 }
163 
164 template<typename Tin>
165 static Tin adms_ternary_op(const bool cond, const double &ifTrue, const Tin &ifFalse)
166 {
167  if (cond)
168  return Tin(ifTrue);
169  else
170  return ifFalse;
171 }
172 
173 
174 
175 
176 
177 //-----------------------------------------------------------------------------
178 // Free functions used by sensitivity
179 //
180 //-----------------------------------------------------------------------------
182  std::vector <double> & probeVars,
183  // probe constants
184  const int admsProbeID_V_noi_e1,
185  const int admsProbeID_V_c3_c1,
186  const int admsProbeID_V_c3_c4,
187  const int admsProbeID_V_c4_c1,
188  const int admsProbeID_V_b_c,
189  const int admsProbeID_V_b_e,
190  const int admsProbeID_V_b_b1,
191  const int admsProbeID_V_e_e1,
192  const int admsProbeID_V_c1_c2,
193  const int admsProbeID_V_s_c1,
194  const int admsProbeID_V_b1_b2,
195  const int admsProbeID_V_b1_e1,
196  const int admsProbeID_V_b2_e1,
197  const int admsProbeID_V_b2_c2,
198  const int admsProbeID_V_b2_c1,
199  // node constants
200  const int admsNodeID_c,
201  const int admsNodeID_b,
202  const int admsNodeID_e,
203  const int admsNodeID_s,
204  const int admsNodeID_e1,
205  const int admsNodeID_b1,
206  const int admsNodeID_b2,
207  const int admsNodeID_c3,
208  const int admsNodeID_c4,
209  const int admsNodeID_c2,
210  const int admsNodeID_c1,
211  const int admsNodeID_noi,
212  // instance parameters
213  // reals
214  AdmsSensFadType & instancePar_MULT,
215  bool instancePar_given_MULT,
216  // instance variables
217  // reals
218  AdmsSensFadType & instanceVar_Izteb,
219  AdmsSensFadType & instanceVar_qBI,
220  AdmsSensFadType & instanceVar_Ir,
221  AdmsSensFadType & instanceVar_If,
222  AdmsSensFadType & instanceVar_Ib1,
223  AdmsSensFadType & instanceVar_Ib1_s,
224  AdmsSensFadType & instanceVar_Ib2,
225  AdmsSensFadType & instanceVar_Ib3,
226  AdmsSensFadType & instanceVar_Iex,
227  AdmsSensFadType & instanceVar_XIex,
228  AdmsSensFadType & instanceVar_Isub,
229  AdmsSensFadType & instanceVar_XIsub,
230  AdmsSensFadType & instanceVar_Rb2,
231  AdmsSensFadType & instanceVar_Gem,
232  AdmsSensFadType & instanceVar_eVb1b2,
233  // model parameters
234  // reals
235  AdmsSensFadType & modelPar_TREF,
236  bool modelPar_given_TREF,
237  AdmsSensFadType & modelPar_DTA,
238  bool modelPar_given_DTA,
239  AdmsSensFadType & modelPar_IS,
240  bool modelPar_given_IS,
241  AdmsSensFadType & modelPar_IK,
242  bool modelPar_given_IK,
243  AdmsSensFadType & modelPar_VER,
244  bool modelPar_given_VER,
245  AdmsSensFadType & modelPar_VEF,
246  bool modelPar_given_VEF,
247  AdmsSensFadType & modelPar_BF,
248  bool modelPar_given_BF,
249  AdmsSensFadType & modelPar_IBF,
250  bool modelPar_given_IBF,
251  AdmsSensFadType & modelPar_MLF,
252  bool modelPar_given_MLF,
253  AdmsSensFadType & modelPar_XIBI,
254  bool modelPar_given_XIBI,
255  AdmsSensFadType & modelPar_IZEB,
256  bool modelPar_given_IZEB,
257  AdmsSensFadType & modelPar_NZEB,
258  bool modelPar_given_NZEB,
259  AdmsSensFadType & modelPar_BRI,
260  bool modelPar_given_BRI,
261  AdmsSensFadType & modelPar_IBR,
262  bool modelPar_given_IBR,
263  AdmsSensFadType & modelPar_VLR,
264  bool modelPar_given_VLR,
265  AdmsSensFadType & modelPar_XEXT,
266  bool modelPar_given_XEXT,
267  AdmsSensFadType & modelPar_WAVL,
268  bool modelPar_given_WAVL,
269  AdmsSensFadType & modelPar_VAVL,
270  bool modelPar_given_VAVL,
271  AdmsSensFadType & modelPar_SFH,
272  bool modelPar_given_SFH,
273  AdmsSensFadType & modelPar_RE,
274  bool modelPar_given_RE,
275  AdmsSensFadType & modelPar_RBC,
276  bool modelPar_given_RBC,
277  AdmsSensFadType & modelPar_RBV,
278  bool modelPar_given_RBV,
279  AdmsSensFadType & modelPar_RCC,
280  bool modelPar_given_RCC,
281  AdmsSensFadType & modelPar_RCV,
282  bool modelPar_given_RCV,
283  AdmsSensFadType & modelPar_SCRCV,
284  bool modelPar_given_SCRCV,
285  AdmsSensFadType & modelPar_IHC,
286  bool modelPar_given_IHC,
287  AdmsSensFadType & modelPar_AXI,
288  bool modelPar_given_AXI,
289  AdmsSensFadType & modelPar_CJE,
290  bool modelPar_given_CJE,
291  AdmsSensFadType & modelPar_VDE,
292  bool modelPar_given_VDE,
293  AdmsSensFadType & modelPar_PE,
294  bool modelPar_given_PE,
295  AdmsSensFadType & modelPar_XCJE,
296  bool modelPar_given_XCJE,
297  AdmsSensFadType & modelPar_CBEO,
298  bool modelPar_given_CBEO,
299  AdmsSensFadType & modelPar_CJC,
300  bool modelPar_given_CJC,
301  AdmsSensFadType & modelPar_VDC,
302  bool modelPar_given_VDC,
303  AdmsSensFadType & modelPar_PC,
304  bool modelPar_given_PC,
305  AdmsSensFadType & modelPar_XP,
306  bool modelPar_given_XP,
307  AdmsSensFadType & modelPar_MC,
308  bool modelPar_given_MC,
309  AdmsSensFadType & modelPar_XCJC,
310  bool modelPar_given_XCJC,
311  AdmsSensFadType & modelPar_RCBLX,
312  bool modelPar_given_RCBLX,
313  AdmsSensFadType & modelPar_RCBLI,
314  bool modelPar_given_RCBLI,
315  AdmsSensFadType & modelPar_CBCO,
316  bool modelPar_given_CBCO,
317  AdmsSensFadType & modelPar_MTAU,
318  bool modelPar_given_MTAU,
319  AdmsSensFadType & modelPar_TAUE,
320  bool modelPar_given_TAUE,
321  AdmsSensFadType & modelPar_TAUB,
322  bool modelPar_given_TAUB,
323  AdmsSensFadType & modelPar_TEPI,
324  bool modelPar_given_TEPI,
325  AdmsSensFadType & modelPar_TAUR,
326  bool modelPar_given_TAUR,
327  AdmsSensFadType & modelPar_DEG,
328  bool modelPar_given_DEG,
329  AdmsSensFadType & modelPar_XREC,
330  bool modelPar_given_XREC,
331  AdmsSensFadType & modelPar_AQBO,
332  bool modelPar_given_AQBO,
333  AdmsSensFadType & modelPar_AE,
334  bool modelPar_given_AE,
335  AdmsSensFadType & modelPar_AB,
336  bool modelPar_given_AB,
337  AdmsSensFadType & modelPar_AEPI,
338  bool modelPar_given_AEPI,
339  AdmsSensFadType & modelPar_AEX,
340  bool modelPar_given_AEX,
341  AdmsSensFadType & modelPar_AC,
342  bool modelPar_given_AC,
343  AdmsSensFadType & modelPar_ACBL,
344  bool modelPar_given_ACBL,
345  AdmsSensFadType & modelPar_DVGBF,
346  bool modelPar_given_DVGBF,
347  AdmsSensFadType & modelPar_DVGBR,
348  bool modelPar_given_DVGBR,
349  AdmsSensFadType & modelPar_VGB,
350  bool modelPar_given_VGB,
351  AdmsSensFadType & modelPar_VGC,
352  bool modelPar_given_VGC,
353  AdmsSensFadType & modelPar_VGJ,
354  bool modelPar_given_VGJ,
355  AdmsSensFadType & modelPar_VGZEB,
356  bool modelPar_given_VGZEB,
357  AdmsSensFadType & modelPar_AVGEB,
358  bool modelPar_given_AVGEB,
359  AdmsSensFadType & modelPar_TVGEB,
360  bool modelPar_given_TVGEB,
361  AdmsSensFadType & modelPar_DVGTE,
362  bool modelPar_given_DVGTE,
363  AdmsSensFadType & modelPar_DAIS,
364  bool modelPar_given_DAIS,
365  AdmsSensFadType & modelPar_AF,
366  bool modelPar_given_AF,
367  AdmsSensFadType & modelPar_KF,
368  bool modelPar_given_KF,
369  AdmsSensFadType & modelPar_KFN,
370  bool modelPar_given_KFN,
371  AdmsSensFadType & modelPar_ISS,
372  bool modelPar_given_ISS,
373  AdmsSensFadType & modelPar_ICSS,
374  bool modelPar_given_ICSS,
375  AdmsSensFadType & modelPar_IKS,
376  bool modelPar_given_IKS,
377  AdmsSensFadType & modelPar_CJS,
378  bool modelPar_given_CJS,
379  AdmsSensFadType & modelPar_VDS,
380  bool modelPar_given_VDS,
381  AdmsSensFadType & modelPar_PS,
382  bool modelPar_given_PS,
383  AdmsSensFadType & modelPar_VGS,
384  bool modelPar_given_VGS,
385  AdmsSensFadType & modelPar_AS,
386  bool modelPar_given_AS,
387  AdmsSensFadType & modelPar_ASUB,
388  bool modelPar_given_ASUB,
389  AdmsSensFadType & modelPar_MULT,
390  bool modelPar_given_MULT,
391  AdmsSensFadType & modelPar_GMIN,
392  bool modelPar_given_GMIN,
393  // non-reals (including hidden)
394  int modelPar_LEVEL,
395  bool modelPar_given_LEVEL,
396  int modelPar_EXMOD,
397  bool modelPar_given_EXMOD,
398  int modelPar_EXPHI,
399  bool modelPar_given_EXPHI,
400  int modelPar_EXAVL,
401  bool modelPar_given_EXAVL,
402  int modelPar_EXSUB,
403  bool modelPar_given_EXSUB,
404  int modelPar_KAVL,
405  bool modelPar_given_KAVL,
406  int modelPar_TYPE,
407  bool modelPar_given_TYPE// model variables
408  ,
409  // reals
410  AdmsSensFadType & modelVar_An,
411  AdmsSensFadType & modelVar_Tk,
412  AdmsSensFadType & modelVar_Vt,
413  AdmsSensFadType & modelVar_VtINV,
414  AdmsSensFadType & modelVar_VDE_T,
415  AdmsSensFadType & modelVar_VDC_T,
416  AdmsSensFadType & modelVar_XP_T,
417  AdmsSensFadType & modelVar_BF_T,
418  AdmsSensFadType & modelVar_BRI_T,
419  AdmsSensFadType & modelVar_IS_T,
420  AdmsSensFadType & modelVar_VEF_T,
421  AdmsSensFadType & modelVar_VER_T,
422  AdmsSensFadType & modelVar_nZEB_T,
423  AdmsSensFadType & modelVar_pow2_2mPE,
424  AdmsSensFadType & modelVar_pow2_PEm2,
425  AdmsSensFadType & modelVar_inv_VDE_T,
426  AdmsSensFadType & modelVar_VGZEB_T,
427  AdmsSensFadType & modelVar_TAUE_T,
428  AdmsSensFadType & modelVar_TAUB_T,
429  AdmsSensFadType & modelVar_TEPI_T,
430  AdmsSensFadType & modelVar_TAUR_T,
431  AdmsSensFadType & modelVar_BnT,
432  AdmsSensFadType & modelVar_DEG_T,
433  AdmsSensFadType & modelVar_VDS_T,
434  AdmsSensFadType & modelVar_IKS_T,
435  AdmsSensFadType & modelVar_IS_TM,
436  AdmsSensFadType & modelVar_IK_TM,
437  AdmsSensFadType & modelVar_IBF_TM,
438  AdmsSensFadType & modelVar_IBR_TM,
439  AdmsSensFadType & modelVar_IHC_M,
440  AdmsSensFadType & modelVar_IZEB_TM,
441  AdmsSensFadType & modelVar_CJE_TM,
442  AdmsSensFadType & modelVar_CJC_TM,
443  AdmsSensFadType & modelVar_RE_TM,
444  AdmsSensFadType & modelVar_RBC_TM,
445  AdmsSensFadType & modelVar_RBV_TM,
446  AdmsSensFadType & modelVar_RCV_TM,
447  AdmsSensFadType & modelVar_SCRCV_M,
448  AdmsSensFadType & modelVar_RCCxx_TM,
449  AdmsSensFadType & modelVar_GCCxx_TM,
450  AdmsSensFadType & modelVar_GCCex_TM,
451  AdmsSensFadType & modelVar_GCCin_TM,
452  AdmsSensFadType & modelVar_KF_M,
453  AdmsSensFadType & modelVar_KFN_M,
454  AdmsSensFadType & modelVar_ISS_TM,
455  AdmsSensFadType & modelVar_ICSS_TM,
456  AdmsSensFadType & modelVar_IKS_TM,
457  AdmsSensFadType & modelVar_CJS_TM,
458  AdmsSensFadType & modelVar_Xext1,
459  AdmsSensFadType & modelVar_CBEO_M,
460  AdmsSensFadType & modelVar_CBCO_M,
461  // basic variables
462  double admsTemperature, double adms_vt_nom, double gmin, std::vector <AdmsSensFadType> & staticContributions, std::vector <AdmsSensFadType> & dynamicContributions, const Instance & theInstance);
463 
465  // instance parameters
466  // reals
467  AdmsSensFadType & instancePar_MULT,
468  bool instancePar_given_MULT,
469  // instance variables
470  // reals
471  AdmsSensFadType & instanceVar_Izteb,
472  AdmsSensFadType & instanceVar_qBI,
473  AdmsSensFadType & instanceVar_Ir,
474  AdmsSensFadType & instanceVar_If,
475  AdmsSensFadType & instanceVar_Ib1,
476  AdmsSensFadType & instanceVar_Ib1_s,
477  AdmsSensFadType & instanceVar_Ib2,
478  AdmsSensFadType & instanceVar_Ib3,
479  AdmsSensFadType & instanceVar_Iex,
480  AdmsSensFadType & instanceVar_XIex,
481  AdmsSensFadType & instanceVar_Isub,
482  AdmsSensFadType & instanceVar_XIsub,
483  AdmsSensFadType & instanceVar_Rb2,
484  AdmsSensFadType & instanceVar_Gem,
485  AdmsSensFadType & instanceVar_eVb1b2,
486  // model parameters
487  // reals
488  AdmsSensFadType & modelPar_TREF,
489  bool modelPar_given_TREF,
490  AdmsSensFadType & modelPar_DTA,
491  bool modelPar_given_DTA,
492  AdmsSensFadType & modelPar_IS,
493  bool modelPar_given_IS,
494  AdmsSensFadType & modelPar_IK,
495  bool modelPar_given_IK,
496  AdmsSensFadType & modelPar_VER,
497  bool modelPar_given_VER,
498  AdmsSensFadType & modelPar_VEF,
499  bool modelPar_given_VEF,
500  AdmsSensFadType & modelPar_BF,
501  bool modelPar_given_BF,
502  AdmsSensFadType & modelPar_IBF,
503  bool modelPar_given_IBF,
504  AdmsSensFadType & modelPar_MLF,
505  bool modelPar_given_MLF,
506  AdmsSensFadType & modelPar_XIBI,
507  bool modelPar_given_XIBI,
508  AdmsSensFadType & modelPar_IZEB,
509  bool modelPar_given_IZEB,
510  AdmsSensFadType & modelPar_NZEB,
511  bool modelPar_given_NZEB,
512  AdmsSensFadType & modelPar_BRI,
513  bool modelPar_given_BRI,
514  AdmsSensFadType & modelPar_IBR,
515  bool modelPar_given_IBR,
516  AdmsSensFadType & modelPar_VLR,
517  bool modelPar_given_VLR,
518  AdmsSensFadType & modelPar_XEXT,
519  bool modelPar_given_XEXT,
520  AdmsSensFadType & modelPar_WAVL,
521  bool modelPar_given_WAVL,
522  AdmsSensFadType & modelPar_VAVL,
523  bool modelPar_given_VAVL,
524  AdmsSensFadType & modelPar_SFH,
525  bool modelPar_given_SFH,
526  AdmsSensFadType & modelPar_RE,
527  bool modelPar_given_RE,
528  AdmsSensFadType & modelPar_RBC,
529  bool modelPar_given_RBC,
530  AdmsSensFadType & modelPar_RBV,
531  bool modelPar_given_RBV,
532  AdmsSensFadType & modelPar_RCC,
533  bool modelPar_given_RCC,
534  AdmsSensFadType & modelPar_RCV,
535  bool modelPar_given_RCV,
536  AdmsSensFadType & modelPar_SCRCV,
537  bool modelPar_given_SCRCV,
538  AdmsSensFadType & modelPar_IHC,
539  bool modelPar_given_IHC,
540  AdmsSensFadType & modelPar_AXI,
541  bool modelPar_given_AXI,
542  AdmsSensFadType & modelPar_CJE,
543  bool modelPar_given_CJE,
544  AdmsSensFadType & modelPar_VDE,
545  bool modelPar_given_VDE,
546  AdmsSensFadType & modelPar_PE,
547  bool modelPar_given_PE,
548  AdmsSensFadType & modelPar_XCJE,
549  bool modelPar_given_XCJE,
550  AdmsSensFadType & modelPar_CBEO,
551  bool modelPar_given_CBEO,
552  AdmsSensFadType & modelPar_CJC,
553  bool modelPar_given_CJC,
554  AdmsSensFadType & modelPar_VDC,
555  bool modelPar_given_VDC,
556  AdmsSensFadType & modelPar_PC,
557  bool modelPar_given_PC,
558  AdmsSensFadType & modelPar_XP,
559  bool modelPar_given_XP,
560  AdmsSensFadType & modelPar_MC,
561  bool modelPar_given_MC,
562  AdmsSensFadType & modelPar_XCJC,
563  bool modelPar_given_XCJC,
564  AdmsSensFadType & modelPar_RCBLX,
565  bool modelPar_given_RCBLX,
566  AdmsSensFadType & modelPar_RCBLI,
567  bool modelPar_given_RCBLI,
568  AdmsSensFadType & modelPar_CBCO,
569  bool modelPar_given_CBCO,
570  AdmsSensFadType & modelPar_MTAU,
571  bool modelPar_given_MTAU,
572  AdmsSensFadType & modelPar_TAUE,
573  bool modelPar_given_TAUE,
574  AdmsSensFadType & modelPar_TAUB,
575  bool modelPar_given_TAUB,
576  AdmsSensFadType & modelPar_TEPI,
577  bool modelPar_given_TEPI,
578  AdmsSensFadType & modelPar_TAUR,
579  bool modelPar_given_TAUR,
580  AdmsSensFadType & modelPar_DEG,
581  bool modelPar_given_DEG,
582  AdmsSensFadType & modelPar_XREC,
583  bool modelPar_given_XREC,
584  AdmsSensFadType & modelPar_AQBO,
585  bool modelPar_given_AQBO,
586  AdmsSensFadType & modelPar_AE,
587  bool modelPar_given_AE,
588  AdmsSensFadType & modelPar_AB,
589  bool modelPar_given_AB,
590  AdmsSensFadType & modelPar_AEPI,
591  bool modelPar_given_AEPI,
592  AdmsSensFadType & modelPar_AEX,
593  bool modelPar_given_AEX,
594  AdmsSensFadType & modelPar_AC,
595  bool modelPar_given_AC,
596  AdmsSensFadType & modelPar_ACBL,
597  bool modelPar_given_ACBL,
598  AdmsSensFadType & modelPar_DVGBF,
599  bool modelPar_given_DVGBF,
600  AdmsSensFadType & modelPar_DVGBR,
601  bool modelPar_given_DVGBR,
602  AdmsSensFadType & modelPar_VGB,
603  bool modelPar_given_VGB,
604  AdmsSensFadType & modelPar_VGC,
605  bool modelPar_given_VGC,
606  AdmsSensFadType & modelPar_VGJ,
607  bool modelPar_given_VGJ,
608  AdmsSensFadType & modelPar_VGZEB,
609  bool modelPar_given_VGZEB,
610  AdmsSensFadType & modelPar_AVGEB,
611  bool modelPar_given_AVGEB,
612  AdmsSensFadType & modelPar_TVGEB,
613  bool modelPar_given_TVGEB,
614  AdmsSensFadType & modelPar_DVGTE,
615  bool modelPar_given_DVGTE,
616  AdmsSensFadType & modelPar_DAIS,
617  bool modelPar_given_DAIS,
618  AdmsSensFadType & modelPar_AF,
619  bool modelPar_given_AF,
620  AdmsSensFadType & modelPar_KF,
621  bool modelPar_given_KF,
622  AdmsSensFadType & modelPar_KFN,
623  bool modelPar_given_KFN,
624  AdmsSensFadType & modelPar_ISS,
625  bool modelPar_given_ISS,
626  AdmsSensFadType & modelPar_ICSS,
627  bool modelPar_given_ICSS,
628  AdmsSensFadType & modelPar_IKS,
629  bool modelPar_given_IKS,
630  AdmsSensFadType & modelPar_CJS,
631  bool modelPar_given_CJS,
632  AdmsSensFadType & modelPar_VDS,
633  bool modelPar_given_VDS,
634  AdmsSensFadType & modelPar_PS,
635  bool modelPar_given_PS,
636  AdmsSensFadType & modelPar_VGS,
637  bool modelPar_given_VGS,
638  AdmsSensFadType & modelPar_AS,
639  bool modelPar_given_AS,
640  AdmsSensFadType & modelPar_ASUB,
641  bool modelPar_given_ASUB,
642  AdmsSensFadType & modelPar_MULT,
643  bool modelPar_given_MULT,
644  AdmsSensFadType & modelPar_GMIN,
645  bool modelPar_given_GMIN,
646  // non-reals (including hidden)
647  int modelPar_LEVEL,
648  bool modelPar_given_LEVEL,
649  int modelPar_EXMOD,
650  bool modelPar_given_EXMOD,
651  int modelPar_EXPHI,
652  bool modelPar_given_EXPHI,
653  int modelPar_EXAVL,
654  bool modelPar_given_EXAVL,
655  int modelPar_EXSUB,
656  bool modelPar_given_EXSUB,
657  int modelPar_KAVL,
658  bool modelPar_given_KAVL,
659  int modelPar_TYPE,
660  bool modelPar_given_TYPE// model variables
661  ,
662  // reals
663  AdmsSensFadType & modelVar_An,
664  AdmsSensFadType & modelVar_Tk,
665  AdmsSensFadType & modelVar_Vt,
666  AdmsSensFadType & modelVar_VtINV,
667  AdmsSensFadType & modelVar_VDE_T,
668  AdmsSensFadType & modelVar_VDC_T,
669  AdmsSensFadType & modelVar_XP_T,
670  AdmsSensFadType & modelVar_BF_T,
671  AdmsSensFadType & modelVar_BRI_T,
672  AdmsSensFadType & modelVar_IS_T,
673  AdmsSensFadType & modelVar_VEF_T,
674  AdmsSensFadType & modelVar_VER_T,
675  AdmsSensFadType & modelVar_nZEB_T,
676  AdmsSensFadType & modelVar_pow2_2mPE,
677  AdmsSensFadType & modelVar_pow2_PEm2,
678  AdmsSensFadType & modelVar_inv_VDE_T,
679  AdmsSensFadType & modelVar_VGZEB_T,
680  AdmsSensFadType & modelVar_TAUE_T,
681  AdmsSensFadType & modelVar_TAUB_T,
682  AdmsSensFadType & modelVar_TEPI_T,
683  AdmsSensFadType & modelVar_TAUR_T,
684  AdmsSensFadType & modelVar_BnT,
685  AdmsSensFadType & modelVar_DEG_T,
686  AdmsSensFadType & modelVar_VDS_T,
687  AdmsSensFadType & modelVar_IKS_T,
688  AdmsSensFadType & modelVar_IS_TM,
689  AdmsSensFadType & modelVar_IK_TM,
690  AdmsSensFadType & modelVar_IBF_TM,
691  AdmsSensFadType & modelVar_IBR_TM,
692  AdmsSensFadType & modelVar_IHC_M,
693  AdmsSensFadType & modelVar_IZEB_TM,
694  AdmsSensFadType & modelVar_CJE_TM,
695  AdmsSensFadType & modelVar_CJC_TM,
696  AdmsSensFadType & modelVar_RE_TM,
697  AdmsSensFadType & modelVar_RBC_TM,
698  AdmsSensFadType & modelVar_RBV_TM,
699  AdmsSensFadType & modelVar_RCV_TM,
700  AdmsSensFadType & modelVar_SCRCV_M,
701  AdmsSensFadType & modelVar_RCCxx_TM,
702  AdmsSensFadType & modelVar_GCCxx_TM,
703  AdmsSensFadType & modelVar_GCCex_TM,
704  AdmsSensFadType & modelVar_GCCin_TM,
705  AdmsSensFadType & modelVar_KF_M,
706  AdmsSensFadType & modelVar_KFN_M,
707  AdmsSensFadType & modelVar_ISS_TM,
708  AdmsSensFadType & modelVar_ICSS_TM,
709  AdmsSensFadType & modelVar_IKS_TM,
710  AdmsSensFadType & modelVar_CJS_TM,
711  AdmsSensFadType & modelVar_Xext1,
712  AdmsSensFadType & modelVar_CBEO_M,
713  AdmsSensFadType & modelVar_CBCO_M,
714  double admsTemperature);
715 
717  // model parameters
718  // reals
719  AdmsSensFadType & modelPar_TREF,
720  bool modelPar_given_TREF,
721  AdmsSensFadType & modelPar_DTA,
722  bool modelPar_given_DTA,
723  AdmsSensFadType & modelPar_IS,
724  bool modelPar_given_IS,
725  AdmsSensFadType & modelPar_IK,
726  bool modelPar_given_IK,
727  AdmsSensFadType & modelPar_VER,
728  bool modelPar_given_VER,
729  AdmsSensFadType & modelPar_VEF,
730  bool modelPar_given_VEF,
731  AdmsSensFadType & modelPar_BF,
732  bool modelPar_given_BF,
733  AdmsSensFadType & modelPar_IBF,
734  bool modelPar_given_IBF,
735  AdmsSensFadType & modelPar_MLF,
736  bool modelPar_given_MLF,
737  AdmsSensFadType & modelPar_XIBI,
738  bool modelPar_given_XIBI,
739  AdmsSensFadType & modelPar_IZEB,
740  bool modelPar_given_IZEB,
741  AdmsSensFadType & modelPar_NZEB,
742  bool modelPar_given_NZEB,
743  AdmsSensFadType & modelPar_BRI,
744  bool modelPar_given_BRI,
745  AdmsSensFadType & modelPar_IBR,
746  bool modelPar_given_IBR,
747  AdmsSensFadType & modelPar_VLR,
748  bool modelPar_given_VLR,
749  AdmsSensFadType & modelPar_XEXT,
750  bool modelPar_given_XEXT,
751  AdmsSensFadType & modelPar_WAVL,
752  bool modelPar_given_WAVL,
753  AdmsSensFadType & modelPar_VAVL,
754  bool modelPar_given_VAVL,
755  AdmsSensFadType & modelPar_SFH,
756  bool modelPar_given_SFH,
757  AdmsSensFadType & modelPar_RE,
758  bool modelPar_given_RE,
759  AdmsSensFadType & modelPar_RBC,
760  bool modelPar_given_RBC,
761  AdmsSensFadType & modelPar_RBV,
762  bool modelPar_given_RBV,
763  AdmsSensFadType & modelPar_RCC,
764  bool modelPar_given_RCC,
765  AdmsSensFadType & modelPar_RCV,
766  bool modelPar_given_RCV,
767  AdmsSensFadType & modelPar_SCRCV,
768  bool modelPar_given_SCRCV,
769  AdmsSensFadType & modelPar_IHC,
770  bool modelPar_given_IHC,
771  AdmsSensFadType & modelPar_AXI,
772  bool modelPar_given_AXI,
773  AdmsSensFadType & modelPar_CJE,
774  bool modelPar_given_CJE,
775  AdmsSensFadType & modelPar_VDE,
776  bool modelPar_given_VDE,
777  AdmsSensFadType & modelPar_PE,
778  bool modelPar_given_PE,
779  AdmsSensFadType & modelPar_XCJE,
780  bool modelPar_given_XCJE,
781  AdmsSensFadType & modelPar_CBEO,
782  bool modelPar_given_CBEO,
783  AdmsSensFadType & modelPar_CJC,
784  bool modelPar_given_CJC,
785  AdmsSensFadType & modelPar_VDC,
786  bool modelPar_given_VDC,
787  AdmsSensFadType & modelPar_PC,
788  bool modelPar_given_PC,
789  AdmsSensFadType & modelPar_XP,
790  bool modelPar_given_XP,
791  AdmsSensFadType & modelPar_MC,
792  bool modelPar_given_MC,
793  AdmsSensFadType & modelPar_XCJC,
794  bool modelPar_given_XCJC,
795  AdmsSensFadType & modelPar_RCBLX,
796  bool modelPar_given_RCBLX,
797  AdmsSensFadType & modelPar_RCBLI,
798  bool modelPar_given_RCBLI,
799  AdmsSensFadType & modelPar_CBCO,
800  bool modelPar_given_CBCO,
801  AdmsSensFadType & modelPar_MTAU,
802  bool modelPar_given_MTAU,
803  AdmsSensFadType & modelPar_TAUE,
804  bool modelPar_given_TAUE,
805  AdmsSensFadType & modelPar_TAUB,
806  bool modelPar_given_TAUB,
807  AdmsSensFadType & modelPar_TEPI,
808  bool modelPar_given_TEPI,
809  AdmsSensFadType & modelPar_TAUR,
810  bool modelPar_given_TAUR,
811  AdmsSensFadType & modelPar_DEG,
812  bool modelPar_given_DEG,
813  AdmsSensFadType & modelPar_XREC,
814  bool modelPar_given_XREC,
815  AdmsSensFadType & modelPar_AQBO,
816  bool modelPar_given_AQBO,
817  AdmsSensFadType & modelPar_AE,
818  bool modelPar_given_AE,
819  AdmsSensFadType & modelPar_AB,
820  bool modelPar_given_AB,
821  AdmsSensFadType & modelPar_AEPI,
822  bool modelPar_given_AEPI,
823  AdmsSensFadType & modelPar_AEX,
824  bool modelPar_given_AEX,
825  AdmsSensFadType & modelPar_AC,
826  bool modelPar_given_AC,
827  AdmsSensFadType & modelPar_ACBL,
828  bool modelPar_given_ACBL,
829  AdmsSensFadType & modelPar_DVGBF,
830  bool modelPar_given_DVGBF,
831  AdmsSensFadType & modelPar_DVGBR,
832  bool modelPar_given_DVGBR,
833  AdmsSensFadType & modelPar_VGB,
834  bool modelPar_given_VGB,
835  AdmsSensFadType & modelPar_VGC,
836  bool modelPar_given_VGC,
837  AdmsSensFadType & modelPar_VGJ,
838  bool modelPar_given_VGJ,
839  AdmsSensFadType & modelPar_VGZEB,
840  bool modelPar_given_VGZEB,
841  AdmsSensFadType & modelPar_AVGEB,
842  bool modelPar_given_AVGEB,
843  AdmsSensFadType & modelPar_TVGEB,
844  bool modelPar_given_TVGEB,
845  AdmsSensFadType & modelPar_DVGTE,
846  bool modelPar_given_DVGTE,
847  AdmsSensFadType & modelPar_DAIS,
848  bool modelPar_given_DAIS,
849  AdmsSensFadType & modelPar_AF,
850  bool modelPar_given_AF,
851  AdmsSensFadType & modelPar_KF,
852  bool modelPar_given_KF,
853  AdmsSensFadType & modelPar_KFN,
854  bool modelPar_given_KFN,
855  AdmsSensFadType & modelPar_ISS,
856  bool modelPar_given_ISS,
857  AdmsSensFadType & modelPar_ICSS,
858  bool modelPar_given_ICSS,
859  AdmsSensFadType & modelPar_IKS,
860  bool modelPar_given_IKS,
861  AdmsSensFadType & modelPar_CJS,
862  bool modelPar_given_CJS,
863  AdmsSensFadType & modelPar_VDS,
864  bool modelPar_given_VDS,
865  AdmsSensFadType & modelPar_PS,
866  bool modelPar_given_PS,
867  AdmsSensFadType & modelPar_VGS,
868  bool modelPar_given_VGS,
869  AdmsSensFadType & modelPar_AS,
870  bool modelPar_given_AS,
871  AdmsSensFadType & modelPar_ASUB,
872  bool modelPar_given_ASUB,
873  AdmsSensFadType & modelPar_MULT,
874  bool modelPar_given_MULT,
875  AdmsSensFadType & modelPar_GMIN,
876  bool modelPar_given_GMIN,
877  // non-reals (including hidden)
878  int modelPar_LEVEL,
879  bool modelPar_given_LEVEL,
880  int modelPar_EXMOD,
881  bool modelPar_given_EXMOD,
882  int modelPar_EXPHI,
883  bool modelPar_given_EXPHI,
884  int modelPar_EXAVL,
885  bool modelPar_given_EXAVL,
886  int modelPar_EXSUB,
887  bool modelPar_given_EXSUB,
888  int modelPar_KAVL,
889  bool modelPar_given_KAVL,
890  int modelPar_TYPE,
891  bool modelPar_given_TYPE// model variables
892  ,
893  // reals
894  AdmsSensFadType & modelVar_An,
895  AdmsSensFadType & modelVar_Tk,
896  AdmsSensFadType & modelVar_Vt,
897  AdmsSensFadType & modelVar_VtINV,
898  AdmsSensFadType & modelVar_VDE_T,
899  AdmsSensFadType & modelVar_VDC_T,
900  AdmsSensFadType & modelVar_XP_T,
901  AdmsSensFadType & modelVar_BF_T,
902  AdmsSensFadType & modelVar_BRI_T,
903  AdmsSensFadType & modelVar_IS_T,
904  AdmsSensFadType & modelVar_VEF_T,
905  AdmsSensFadType & modelVar_VER_T,
906  AdmsSensFadType & modelVar_nZEB_T,
907  AdmsSensFadType & modelVar_pow2_2mPE,
908  AdmsSensFadType & modelVar_pow2_PEm2,
909  AdmsSensFadType & modelVar_inv_VDE_T,
910  AdmsSensFadType & modelVar_VGZEB_T,
911  AdmsSensFadType & modelVar_TAUE_T,
912  AdmsSensFadType & modelVar_TAUB_T,
913  AdmsSensFadType & modelVar_TEPI_T,
914  AdmsSensFadType & modelVar_TAUR_T,
915  AdmsSensFadType & modelVar_BnT,
916  AdmsSensFadType & modelVar_DEG_T,
917  AdmsSensFadType & modelVar_VDS_T,
918  AdmsSensFadType & modelVar_IKS_T,
919  AdmsSensFadType & modelVar_IS_TM,
920  AdmsSensFadType & modelVar_IK_TM,
921  AdmsSensFadType & modelVar_IBF_TM,
922  AdmsSensFadType & modelVar_IBR_TM,
923  AdmsSensFadType & modelVar_IHC_M,
924  AdmsSensFadType & modelVar_IZEB_TM,
925  AdmsSensFadType & modelVar_CJE_TM,
926  AdmsSensFadType & modelVar_CJC_TM,
927  AdmsSensFadType & modelVar_RE_TM,
928  AdmsSensFadType & modelVar_RBC_TM,
929  AdmsSensFadType & modelVar_RBV_TM,
930  AdmsSensFadType & modelVar_RCV_TM,
931  AdmsSensFadType & modelVar_SCRCV_M,
932  AdmsSensFadType & modelVar_RCCxx_TM,
933  AdmsSensFadType & modelVar_GCCxx_TM,
934  AdmsSensFadType & modelVar_GCCex_TM,
935  AdmsSensFadType & modelVar_GCCin_TM,
936  AdmsSensFadType & modelVar_KF_M,
937  AdmsSensFadType & modelVar_KFN_M,
938  AdmsSensFadType & modelVar_ISS_TM,
939  AdmsSensFadType & modelVar_ICSS_TM,
940  AdmsSensFadType & modelVar_IKS_TM,
941  AdmsSensFadType & modelVar_CJS_TM,
942  AdmsSensFadType & modelVar_Xext1,
943  AdmsSensFadType & modelVar_CBEO_M,
944  AdmsSensFadType & modelVar_CBCO_M,
945  double admsTemperature);
946 
947 
948 
949 // Limited exponential --- NOT what verilog LRM says, but what qucs,
950 // ng-spice, and zspice do.
951 
952 template <typename T>
953 T limexp(const T &x)
954 {
955  if ((x) < 80.0)
956  return (exp(x));
957  else
958  return (exp(80.0)*(x-79.0));
959 }
960 
961 // Maybe this will do as a substitute for a sacado-provided "floor" and "ceil"?
962 // It is wrong to try to propagate the Sacado derivatives to the return
963 // value, as the floor and ceil functions have zero derivative w.r.t. any
964 // of the variables in the argument, except when X is an integer at which
965 // point the derivative is undefined.
966 template <typename T>
967 double ADMSfloor(const T & x)
968 {
969  return (floor(x.val()));
970 }
971 
972 template <typename T>
973 double ADMSceil(const T & x)
974 {
975  return (ceil(x.val()));
976 }
977 
978 
979 struct Traits: public DeviceTraits<Model, Instance, BJT::Traits>
980 {
981  static const char *name() {return "MEXTRAM 504.11.0";}
982  static const char *deviceTypeName() {return "q level 504";}
983 
984  static int numNodes() {return 4;}
985  static bool modelRequired() {return true;}
986  static bool isLinearDevice() {return false;}
987 
988  static Device *factory(const Configuration &configuration, const FactoryBlock &factory_block);
989  static void loadModelParameters(ParametricData<Model> &model_parameters);
990  static void loadInstanceParameters(ParametricData<Instance> &instance_parameters);
991 };
992 
993 //-----------------------------------------------------------------------------
994 // Class : Instance
995 
996 //
997 // Purpose : This class represents a single instance of the
998 // device. It mainly contains indices and pointers into
999 // the matrix equation (see the resistor instance class for
1000 // more details).
1001 //
1002 // Special Notes :
1003 // Creator :
1004 // Creation Date :
1005 //-----------------------------------------------------------------------------
1006 class Instance : public DeviceInstance
1007 {
1008  friend class ParametricData<Instance>;
1009  friend class Model;
1010  friend class InstanceSensitivity;
1011  friend class ModelSensitivity;
1012  friend class Traits;
1013 
1014 public:
1015  Instance(
1016  const Configuration & configuration,
1017  const InstanceBlock & instance_block,
1018  Model & model,
1019  const FactoryBlock & factory_block);
1020 
1021  ~Instance();
1022 
1023 private:
1024  Instance(const Instance &);
1025  Instance &operator=(const Instance &);
1026 
1027 public:
1028  void registerLIDs( const LocalIdVector & intLIDVecRef,
1029  const LocalIdVector & extLIDVecRef );
1030  void registerStateLIDs( const LocalIdVector & staLIDVecRef );
1031  void setupPointers();
1032 
1033  void loadNodeSymbols(Util::SymbolTable &symbol_table) const;
1034 
1035  const JacobianStamp & jacobianStamp() const;
1036  void registerJacLIDs( const JacobianStamp & jacLIDVec );
1037 
1038  bool processParams();
1039  bool updateTemperature ( const double & temp = -999.0 );
1040  bool updateIntermediateVars ();
1041  bool updatePrimaryState ();
1042  bool updateSecondaryState ();
1043 
1044  // load functions, residual:
1045  bool loadDAEQVector ();
1046  bool loadDAEFVector ();
1047 
1048  // load functions, Jacobian:
1049  bool loadDAEdQdx ();
1050  bool loadDAEdFdx ();
1051 
1052  void collapseNodes();
1053 
1054 private:
1055 
1056 public:
1057  // iterator reference to the bjt504va model which owns this instance.
1058  // Getters and setters
1060  {
1061  return model_;
1062  }
1063 
1064 private:
1065 
1066  Model & model_; //< Owning Model
1067  // Begin verilog Instance Variables
1068  // Instance Parameters
1069  double MULT;
1070  // Variables of global_instance scope
1071  AdmsFadType Izteb;
1072  AdmsFadType qBI;
1073  AdmsFadType Ir;
1074  AdmsFadType If;
1075  AdmsFadType Ib1;
1076  AdmsFadType Ib1_s;
1077  AdmsFadType Ib2;
1078  AdmsFadType Ib3;
1079  AdmsFadType Iex;
1080  AdmsFadType XIex;
1081  AdmsFadType Isub;
1082  AdmsFadType XIsub;
1083  AdmsFadType Rb2;
1084  AdmsFadType Gem;
1085  AdmsFadType eVb1b2;
1086  // end verilog Instance Variables=====
1087  // Nodal LID Variables
1088  int li_c;
1089  int li_b;
1090  int li_e;
1091  int li_s;
1092  int li_e1;
1093  int li_b1;
1094  int li_b2;
1095  int li_c3;
1096  int li_c4;
1097  int li_c2;
1098  int li_c1;
1099  int li_noi;
1100  // end Nodal LID Variables
1101  // Branch LID Variables
1102  // end Branch LID Variables
1103  // Jacobian pointers
1320  // end of Jacobian and pointers
1321  // node numbers
1322  static const int admsNodeID_c = 0;
1323  static const int admsNodeID_b = 1;
1324  static const int admsNodeID_e = 2;
1325  static const int admsNodeID_s = 3;
1326  static const int admsNodeID_e1 = 4;
1327  static const int admsNodeID_b1 = 5;
1328  static const int admsNodeID_b2 = 6;
1329  static const int admsNodeID_c3 = 7;
1330  static const int admsNodeID_c4 = 8;
1331  static const int admsNodeID_c2 = 9;
1332  static const int admsNodeID_c1 = 10;
1333  static const int admsNodeID_noi = 11;
1334  // end node numbers
1335  // Additional IDs for branch equations
1336  // end branch numbers
1337  // Probe numbers
1338  static const int admsProbeID_V_noi_e1 = 0;
1339  static const int admsProbeID_V_c3_c1 = 1;
1340  static const int admsProbeID_V_c3_c4 = 2;
1341  static const int admsProbeID_V_c4_c1 = 3;
1342  static const int admsProbeID_V_b_c = 4;
1343  static const int admsProbeID_V_b_e = 5;
1344  static const int admsProbeID_V_b_b1 = 6;
1345  static const int admsProbeID_V_e_e1 = 7;
1346  static const int admsProbeID_V_c1_c2 = 8;
1347  static const int admsProbeID_V_s_c1 = 9;
1348  static const int admsProbeID_V_b1_b2 = 10;
1349  static const int admsProbeID_V_b1_e1 = 11;
1350  static const int admsProbeID_V_b2_e1 = 12;
1351  static const int admsProbeID_V_b2_c2 = 13;
1352  static const int admsProbeID_V_b2_c1 = 14;
1353  // end probe numbers
1354  // State LIDs
1359  // end state LIDs
1360  // bools for collapsing nodes
1363  // Arrays to hold probes
1364  std::vector < AdmsFadType > probeVars;
1365  // Arrays to hold contributions
1366  // dynamic contributions are differentiated w.r.t time
1367  std::vector < AdmsFadType > staticContributions;
1368  std::vector < AdmsFadType > dynamicContributions;
1369 
1370  // This array stores the differences between original and limited variables.
1371  std::vector<double> probeDiffs;
1372  // These store the Jdxp's for F and Q, respectively
1373  std::vector<double> Jdxp_static;
1374  std::vector<double> Jdxp_dynamic;
1375 
1376  // this is what we'll use when any model uses $temperature. We'll
1377  // set it in updateTemperature, and initialize it to whatever
1378  // is in devOptions when the instance is constructed.
1380 
1381  // vt at $temperature;
1382  double adms_vt_nom;
1383 
1384 
1385  // This one is for the annoying bogus "XyceADMSInstTemp" parameter
1386  // that we need so we can set it from the device manager when there's no
1387  // "TEMP" parameter to use
1389 
1390 
1391  std::vector< std::vector<int> > jacStamp;
1392  std::vector<int> jacMap;
1393  std::vector< std::vector<int> > jacMap2;
1394 };
1395 
1396 
1397 
1398 namespace AnalogFunctions
1399 {
1400 
1401 // Analog Function trunc_ev
1402 template<typename ScalarT> ScalarT trunc_ev(ScalarT Val, ScalarT Vprev, ScalarT Vmin, ScalarT Vmax)
1403 {
1404 
1405 
1406  ScalarT trunc_ev;
1407  ScalarT result;
1408  {
1409  result = Val;
1410  if ((Val>Vmax))
1411  {
1412  if ((Vprev>(Vmax-0.05)))
1413  {
1414  if (((Val-Vprev)>0.05))
1415  {
1416  result = (Vprev+0.05);
1417  }
1418  }
1419  else
1420  {
1421  result = Vmax;
1422  }
1423  }
1424  else
1425  {
1426  if ((Val<Vmin))
1427  {
1428  if ((Vprev<(0.9*Vmin)))
1429  {
1430  if ((Val<((1.5*Vprev)+(0.10*Vmin))))
1431  {
1432  result = ((1.5*Vprev)+(0.10*Vmin));
1433  }
1434  }
1435  else
1436  {
1437  result = Vmin;
1438  }
1439  }
1440  }
1441  trunc_ev = result;
1442  }
1443  return(trunc_ev);
1444 }
1445 
1446 }
1447 
1448 
1449 //-----------------------------------------------------------------------------
1450 // Class : Model
1451 
1452 // Purpose :
1453 // Special Notes :
1454 // Creator :
1455 // Creation Date :
1456 //-----------------------------------------------------------------------------
1457 class Model : public DeviceModel
1458 {
1459  typedef std::vector<Instance *> InstanceVector;
1460 
1461  friend class ParametricData<Model>;
1462  friend class Instance;
1463  friend class InstanceSensitivity;
1464  friend class ModelSensitivity;
1465  friend class Traits;
1466 
1467 public:
1468  Model(
1469  const Configuration & configuration,
1470  const ModelBlock & model_block,
1471  const FactoryBlock & factory_block);
1472 
1473  ~Model();
1474 
1475 private:
1476  Model(const Model &);
1477  Model &operator=(const Model &);
1478 
1479 public:
1480  virtual void forEachInstance(DeviceInstanceOp &op) const /* override */;
1481  virtual std::ostream &printOutInstances(std::ostream &os) const;
1482  bool processParams();
1483  bool processInstanceParams();
1484 
1485 private:
1486 
1487 public:
1488  void addInstance(Instance *instance)
1489  {
1490  instanceContainer.push_back(instance);
1491  }
1492 
1493 private:
1494  std::vector<Instance*> instanceContainer;
1495 
1496 private:
1497 
1498  // This one is for the annoying bogus "XyceADMSInstTemp" parameter
1499  // that we need so we can set it from the device manager when there's no
1500  // "TEMP" model parameter to use
1501  double admsModTemp;
1502  // Begin verilog Model Variables
1503  // Model Parameters
1504  int LEVEL;
1505  double TREF;
1506  double DTA;
1507  int EXMOD;
1508  int EXPHI;
1509  int EXAVL;
1510  int EXSUB;
1511  double IS;
1512  double IK;
1513  double VER;
1514  double VEF;
1515  double BF;
1516  double IBF;
1517  double MLF;
1518  double XIBI;
1519  double IZEB;
1520  double NZEB;
1521  double BRI;
1522  double IBR;
1523  double VLR;
1524  double XEXT;
1525  double WAVL;
1526  double VAVL;
1527  double SFH;
1528  double RE;
1529  double RBC;
1530  double RBV;
1531  double RCC;
1532  double RCV;
1533  double SCRCV;
1534  double IHC;
1535  double AXI;
1536  double CJE;
1537  double VDE;
1538  double PE;
1539  double XCJE;
1540  double CBEO;
1541  double CJC;
1542  double VDC;
1543  double PC;
1544  double XP;
1545  double MC;
1546  double XCJC;
1547  double RCBLX;
1548  double RCBLI;
1549  double CBCO;
1550  double MTAU;
1551  double TAUE;
1552  double TAUB;
1553  double TEPI;
1554  double TAUR;
1555  double DEG;
1556  double XREC;
1557  double AQBO;
1558  double AE;
1559  double AB;
1560  double AEPI;
1561  double AEX;
1562  double AC;
1563  double ACBL;
1564  double DVGBF;
1565  double DVGBR;
1566  double VGB;
1567  double VGC;
1568  double VGJ;
1569  double VGZEB;
1570  double AVGEB;
1571  double TVGEB;
1572  double DVGTE;
1573  double DAIS;
1574  double AF;
1575  double KF;
1576  double KFN;
1577  int KAVL;
1578  double ISS;
1579  double ICSS;
1580  double IKS;
1581  double CJS;
1582  double VDS;
1583  double PS;
1584  double VGS;
1585  double AS;
1586  double ASUB;
1587  double MULT;
1588  int TYPE;
1589  double GMIN;
1590  // Variables of global_model scope
1591  double An;
1592  double Tk;
1593  double Vt;
1594  double VtINV;
1595  double VDE_T;
1596  double VDC_T;
1597  double XP_T;
1598  double BF_T;
1599  double BRI_T;
1600  double IS_T;
1601  double VEF_T;
1602  double VER_T;
1603  double nZEB_T;
1604  double pow2_2mPE;
1605  double pow2_PEm2;
1606  double inv_VDE_T;
1607  double VGZEB_T;
1608  double TAUE_T;
1609  double TAUB_T;
1610  double TEPI_T;
1611  double TAUR_T;
1612  double BnT;
1613  double DEG_T;
1614  double VDS_T;
1615  double IKS_T;
1616  double IS_TM;
1617  double IK_TM;
1618  double IBF_TM;
1619  double IBR_TM;
1620  double IHC_M;
1621  double IZEB_TM;
1622  double CJE_TM;
1623  double CJC_TM;
1624  double RE_TM;
1625  double RBC_TM;
1626  double RBV_TM;
1627  double RCV_TM;
1628  double SCRCV_M;
1629  double RCCxx_TM;
1630  double GCCxx_TM;
1631  double GCCex_TM;
1632  double GCCin_TM;
1633  double KF_M;
1634  double KFN_M;
1635  double ISS_TM;
1636  double ICSS_TM;
1637  double IKS_TM;
1638  double CJS_TM;
1639  double Xext1;
1640  double CBEO_M;
1641  double CBCO_M;
1642  // end verilog model variables=====
1643 };
1644 
1645 void registerDevice();
1646 
1647 } // namespace ADMSbjt504va
1648 } // namespace Device
1649 } // namespace Xyce
1650 #endif //Xyce_N_DEV_ADMSbjt504va_h
std::vector< std::vector< int > > jacMap2
std::vector< Instance * > InstanceVector
std::vector< AdmsFadType > staticContributions
ScalarT trunc_ev(ScalarT Val, ScalarT Vprev, ScalarT Vmin, ScalarT Vmax)
virtual std::ostream & printOutInstances(std::ostream &os) const
Pure virtual class to augment a linear system.
static T adms_vt(const T temp)
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
const JacobianStamp & jacobianStamp() const
void registerStateLIDs(const LocalIdVector &staLIDVecRef)
Sacado::Fad::SFad< double, 1 > AdmsSensFadType
Base class for all parameters.
Definition: N_DEV_Pars.h:169
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
bool processInstanceParams()
processInstanceParams
Instance & operator=(const Instance &)
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
static ModelSensitivity modSens
void registerJacLIDs(const JacobianStamp &jacLIDVec)
std::vector< std::vector< int > > JacobianStamp
Definition: N_DEV_fwd.h:185
void evaluateInitialInstance(AdmsSensFadType &instancePar_MULT, bool instancePar_given_MULT, AdmsSensFadType &instanceVar_Izteb, AdmsSensFadType &instanceVar_qBI, AdmsSensFadType &instanceVar_Ir, AdmsSensFadType &instanceVar_If, AdmsSensFadType &instanceVar_Ib1, AdmsSensFadType &instanceVar_Ib1_s, AdmsSensFadType &instanceVar_Ib2, AdmsSensFadType &instanceVar_Ib3, AdmsSensFadType &instanceVar_Iex, AdmsSensFadType &instanceVar_XIex, AdmsSensFadType &instanceVar_Isub, AdmsSensFadType &instanceVar_XIsub, AdmsSensFadType &instanceVar_Rb2, AdmsSensFadType &instanceVar_Gem, AdmsSensFadType &instanceVar_eVb1b2, AdmsSensFadType &modelPar_TREF, bool modelPar_given_TREF, AdmsSensFadType &modelPar_DTA, bool modelPar_given_DTA, AdmsSensFadType &modelPar_IS, bool modelPar_given_IS, AdmsSensFadType &modelPar_IK, bool modelPar_given_IK, AdmsSensFadType &modelPar_VER, bool modelPar_given_VER, AdmsSensFadType &modelPar_VEF, bool modelPar_given_VEF, AdmsSensFadType &modelPar_BF, bool modelPar_given_BF, AdmsSensFadType &modelPar_IBF, bool modelPar_given_IBF, AdmsSensFadType &modelPar_MLF, bool modelPar_given_MLF, AdmsSensFadType &modelPar_XIBI, bool modelPar_given_XIBI, AdmsSensFadType &modelPar_IZEB, bool modelPar_given_IZEB, AdmsSensFadType &modelPar_NZEB, bool modelPar_given_NZEB, AdmsSensFadType &modelPar_BRI, bool modelPar_given_BRI, AdmsSensFadType &modelPar_IBR, bool modelPar_given_IBR, AdmsSensFadType &modelPar_VLR, bool modelPar_given_VLR, AdmsSensFadType &modelPar_XEXT, bool modelPar_given_XEXT, AdmsSensFadType &modelPar_WAVL, bool modelPar_given_WAVL, AdmsSensFadType &modelPar_VAVL, bool modelPar_given_VAVL, AdmsSensFadType &modelPar_SFH, bool modelPar_given_SFH, AdmsSensFadType &modelPar_RE, bool modelPar_given_RE, AdmsSensFadType &modelPar_RBC, bool modelPar_given_RBC, AdmsSensFadType &modelPar_RBV, bool modelPar_given_RBV, AdmsSensFadType &modelPar_RCC, bool modelPar_given_RCC, AdmsSensFadType &modelPar_RCV, bool modelPar_given_RCV, AdmsSensFadType &modelPar_SCRCV, bool modelPar_given_SCRCV, AdmsSensFadType &modelPar_IHC, bool modelPar_given_IHC, AdmsSensFadType &modelPar_AXI, bool modelPar_given_AXI, AdmsSensFadType &modelPar_CJE, bool modelPar_given_CJE, AdmsSensFadType &modelPar_VDE, bool modelPar_given_VDE, AdmsSensFadType &modelPar_PE, bool modelPar_given_PE, AdmsSensFadType &modelPar_XCJE, bool modelPar_given_XCJE, AdmsSensFadType &modelPar_CBEO, bool modelPar_given_CBEO, AdmsSensFadType &modelPar_CJC, bool modelPar_given_CJC, AdmsSensFadType &modelPar_VDC, bool modelPar_given_VDC, AdmsSensFadType &modelPar_PC, bool modelPar_given_PC, AdmsSensFadType &modelPar_XP, bool modelPar_given_XP, AdmsSensFadType &modelPar_MC, bool modelPar_given_MC, AdmsSensFadType &modelPar_XCJC, bool modelPar_given_XCJC, AdmsSensFadType &modelPar_RCBLX, bool modelPar_given_RCBLX, AdmsSensFadType &modelPar_RCBLI, bool modelPar_given_RCBLI, AdmsSensFadType &modelPar_CBCO, bool modelPar_given_CBCO, AdmsSensFadType &modelPar_MTAU, bool modelPar_given_MTAU, AdmsSensFadType &modelPar_TAUE, bool modelPar_given_TAUE, AdmsSensFadType &modelPar_TAUB, bool modelPar_given_TAUB, AdmsSensFadType &modelPar_TEPI, bool modelPar_given_TEPI, AdmsSensFadType &modelPar_TAUR, bool modelPar_given_TAUR, AdmsSensFadType &modelPar_DEG, bool modelPar_given_DEG, AdmsSensFadType &modelPar_XREC, bool modelPar_given_XREC, AdmsSensFadType &modelPar_AQBO, bool modelPar_given_AQBO, AdmsSensFadType &modelPar_AE, bool modelPar_given_AE, AdmsSensFadType &modelPar_AB, bool modelPar_given_AB, AdmsSensFadType &modelPar_AEPI, bool modelPar_given_AEPI, AdmsSensFadType &modelPar_AEX, bool modelPar_given_AEX, AdmsSensFadType &modelPar_AC, bool modelPar_given_AC, AdmsSensFadType &modelPar_ACBL, bool modelPar_given_ACBL, AdmsSensFadType &modelPar_DVGBF, bool modelPar_given_DVGBF, AdmsSensFadType &modelPar_DVGBR, bool modelPar_given_DVGBR, AdmsSensFadType &modelPar_VGB, bool modelPar_given_VGB, AdmsSensFadType &modelPar_VGC, bool modelPar_given_VGC, AdmsSensFadType &modelPar_VGJ, bool modelPar_given_VGJ, AdmsSensFadType &modelPar_VGZEB, bool modelPar_given_VGZEB, AdmsSensFadType &modelPar_AVGEB, bool modelPar_given_AVGEB, AdmsSensFadType &modelPar_TVGEB, bool modelPar_given_TVGEB, AdmsSensFadType &modelPar_DVGTE, bool modelPar_given_DVGTE, AdmsSensFadType &modelPar_DAIS, bool modelPar_given_DAIS, AdmsSensFadType &modelPar_AF, bool modelPar_given_AF, AdmsSensFadType &modelPar_KF, bool modelPar_given_KF, AdmsSensFadType &modelPar_KFN, bool modelPar_given_KFN, AdmsSensFadType &modelPar_ISS, bool modelPar_given_ISS, AdmsSensFadType &modelPar_ICSS, bool modelPar_given_ICSS, AdmsSensFadType &modelPar_IKS, bool modelPar_given_IKS, AdmsSensFadType &modelPar_CJS, bool modelPar_given_CJS, AdmsSensFadType &modelPar_VDS, bool modelPar_given_VDS, AdmsSensFadType &modelPar_PS, bool modelPar_given_PS, AdmsSensFadType &modelPar_VGS, bool modelPar_given_VGS, AdmsSensFadType &modelPar_AS, bool modelPar_given_AS, AdmsSensFadType &modelPar_ASUB, bool modelPar_given_ASUB, AdmsSensFadType &modelPar_MULT, bool modelPar_given_MULT, AdmsSensFadType &modelPar_GMIN, bool modelPar_given_GMIN, int modelPar_LEVEL, bool modelPar_given_LEVEL, int modelPar_EXMOD, bool modelPar_given_EXMOD, int modelPar_EXPHI, bool modelPar_given_EXPHI, int modelPar_EXAVL, bool modelPar_given_EXAVL, int modelPar_EXSUB, bool modelPar_given_EXSUB, int modelPar_KAVL, bool modelPar_given_KAVL, int modelPar_TYPE, bool modelPar_given_TYPE, AdmsSensFadType &modelVar_An, AdmsSensFadType &modelVar_Tk, AdmsSensFadType &modelVar_Vt, AdmsSensFadType &modelVar_VtINV, AdmsSensFadType &modelVar_VDE_T, AdmsSensFadType &modelVar_VDC_T, AdmsSensFadType &modelVar_XP_T, AdmsSensFadType &modelVar_BF_T, AdmsSensFadType &modelVar_BRI_T, AdmsSensFadType &modelVar_IS_T, AdmsSensFadType &modelVar_VEF_T, AdmsSensFadType &modelVar_VER_T, AdmsSensFadType &modelVar_nZEB_T, AdmsSensFadType &modelVar_pow2_2mPE, AdmsSensFadType &modelVar_pow2_PEm2, AdmsSensFadType &modelVar_inv_VDE_T, AdmsSensFadType &modelVar_VGZEB_T, AdmsSensFadType &modelVar_TAUE_T, AdmsSensFadType &modelVar_TAUB_T, AdmsSensFadType &modelVar_TEPI_T, AdmsSensFadType &modelVar_TAUR_T, AdmsSensFadType &modelVar_BnT, AdmsSensFadType &modelVar_DEG_T, AdmsSensFadType &modelVar_VDS_T, AdmsSensFadType &modelVar_IKS_T, AdmsSensFadType &modelVar_IS_TM, AdmsSensFadType &modelVar_IK_TM, AdmsSensFadType &modelVar_IBF_TM, AdmsSensFadType &modelVar_IBR_TM, AdmsSensFadType &modelVar_IHC_M, AdmsSensFadType &modelVar_IZEB_TM, AdmsSensFadType &modelVar_CJE_TM, AdmsSensFadType &modelVar_CJC_TM, AdmsSensFadType &modelVar_RE_TM, AdmsSensFadType &modelVar_RBC_TM, AdmsSensFadType &modelVar_RBV_TM, AdmsSensFadType &modelVar_RCV_TM, AdmsSensFadType &modelVar_SCRCV_M, AdmsSensFadType &modelVar_RCCxx_TM, AdmsSensFadType &modelVar_GCCxx_TM, AdmsSensFadType &modelVar_GCCex_TM, AdmsSensFadType &modelVar_GCCin_TM, AdmsSensFadType &modelVar_KF_M, AdmsSensFadType &modelVar_KFN_M, AdmsSensFadType &modelVar_ISS_TM, AdmsSensFadType &modelVar_ICSS_TM, AdmsSensFadType &modelVar_IKS_TM, AdmsSensFadType &modelVar_CJS_TM, AdmsSensFadType &modelVar_Xext1, AdmsSensFadType &modelVar_CBEO_M, AdmsSensFadType &modelVar_CBCO_M, double admsTemperature)
The Device class is an interface for device implementations.
Definition: N_DEV_Device.h:101
IdVector LocalIdVector
Definition: N_DEV_fwd.h:187
static InstanceSensitivity instSens
Model(const Configuration &configuration, const ModelBlock &model_block, const FactoryBlock &factory_block)
Class Configuration contains device configuration data.
virtual void operator()(const ParameterBase &entity, const std::string &param, std::vector< double > &dfdp, std::vector< double > &dqdp, std::vector< double > &dbdp, std::vector< int > &Findices, std::vector< int > &Qindices, std::vector< int > &Bindices) const
Compute sensitivity of a device instance's outputs to a specified instance parameter.
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
std::vector< AdmsFadType > dynamicContributions
Sacado::Fad::SFad< double, 15 > AdmsFadType
static void loadModelParameters(ParametricData< Model > &model_parameters)
std::vector< AdmsFadType > probeVars
std::vector< std::vector< int > > jacStamp
void addInstance(Instance *instance)
Instance(const Configuration &configuration, const InstanceBlock &instance_block, Model &model, const FactoryBlock &factory_block)
void evaluateModelEquations(std::vector< double > &probeVars, const int admsProbeID_V_noi_e1, const int admsProbeID_V_c3_c1, const int admsProbeID_V_c3_c4, const int admsProbeID_V_c4_c1, const int admsProbeID_V_b_c, const int admsProbeID_V_b_e, const int admsProbeID_V_b_b1, const int admsProbeID_V_e_e1, const int admsProbeID_V_c1_c2, const int admsProbeID_V_s_c1, const int admsProbeID_V_b1_b2, const int admsProbeID_V_b1_e1, const int admsProbeID_V_b2_e1, const int admsProbeID_V_b2_c2, const int admsProbeID_V_b2_c1, const int admsNodeID_c, const int admsNodeID_b, const int admsNodeID_e, const int admsNodeID_s, const int admsNodeID_e1, const int admsNodeID_b1, const int admsNodeID_b2, const int admsNodeID_c3, const int admsNodeID_c4, const int admsNodeID_c2, const int admsNodeID_c1, const int admsNodeID_noi, AdmsSensFadType &instancePar_MULT, bool instancePar_given_MULT, AdmsSensFadType &instanceVar_Izteb, AdmsSensFadType &instanceVar_qBI, AdmsSensFadType &instanceVar_Ir, AdmsSensFadType &instanceVar_If, AdmsSensFadType &instanceVar_Ib1, AdmsSensFadType &instanceVar_Ib1_s, AdmsSensFadType &instanceVar_Ib2, AdmsSensFadType &instanceVar_Ib3, AdmsSensFadType &instanceVar_Iex, AdmsSensFadType &instanceVar_XIex, AdmsSensFadType &instanceVar_Isub, AdmsSensFadType &instanceVar_XIsub, AdmsSensFadType &instanceVar_Rb2, AdmsSensFadType &instanceVar_Gem, AdmsSensFadType &instanceVar_eVb1b2, AdmsSensFadType &modelPar_TREF, bool modelPar_given_TREF, AdmsSensFadType &modelPar_DTA, bool modelPar_given_DTA, AdmsSensFadType &modelPar_IS, bool modelPar_given_IS, AdmsSensFadType &modelPar_IK, bool modelPar_given_IK, AdmsSensFadType &modelPar_VER, bool modelPar_given_VER, AdmsSensFadType &modelPar_VEF, bool modelPar_given_VEF, AdmsSensFadType &modelPar_BF, bool modelPar_given_BF, AdmsSensFadType &modelPar_IBF, bool modelPar_given_IBF, AdmsSensFadType &modelPar_MLF, bool modelPar_given_MLF, AdmsSensFadType &modelPar_XIBI, bool modelPar_given_XIBI, AdmsSensFadType &modelPar_IZEB, bool modelPar_given_IZEB, AdmsSensFadType &modelPar_NZEB, bool modelPar_given_NZEB, AdmsSensFadType &modelPar_BRI, bool modelPar_given_BRI, AdmsSensFadType &modelPar_IBR, bool modelPar_given_IBR, AdmsSensFadType &modelPar_VLR, bool modelPar_given_VLR, AdmsSensFadType &modelPar_XEXT, bool modelPar_given_XEXT, AdmsSensFadType &modelPar_WAVL, bool modelPar_given_WAVL, AdmsSensFadType &modelPar_VAVL, bool modelPar_given_VAVL, AdmsSensFadType &modelPar_SFH, bool modelPar_given_SFH, AdmsSensFadType &modelPar_RE, bool modelPar_given_RE, AdmsSensFadType &modelPar_RBC, bool modelPar_given_RBC, AdmsSensFadType &modelPar_RBV, bool modelPar_given_RBV, AdmsSensFadType &modelPar_RCC, bool modelPar_given_RCC, AdmsSensFadType &modelPar_RCV, bool modelPar_given_RCV, AdmsSensFadType &modelPar_SCRCV, bool modelPar_given_SCRCV, AdmsSensFadType &modelPar_IHC, bool modelPar_given_IHC, AdmsSensFadType &modelPar_AXI, bool modelPar_given_AXI, AdmsSensFadType &modelPar_CJE, bool modelPar_given_CJE, AdmsSensFadType &modelPar_VDE, bool modelPar_given_VDE, AdmsSensFadType &modelPar_PE, bool modelPar_given_PE, AdmsSensFadType &modelPar_XCJE, bool modelPar_given_XCJE, AdmsSensFadType &modelPar_CBEO, bool modelPar_given_CBEO, AdmsSensFadType &modelPar_CJC, bool modelPar_given_CJC, AdmsSensFadType &modelPar_VDC, bool modelPar_given_VDC, AdmsSensFadType &modelPar_PC, bool modelPar_given_PC, AdmsSensFadType &modelPar_XP, bool modelPar_given_XP, AdmsSensFadType &modelPar_MC, bool modelPar_given_MC, AdmsSensFadType &modelPar_XCJC, bool modelPar_given_XCJC, AdmsSensFadType &modelPar_RCBLX, bool modelPar_given_RCBLX, AdmsSensFadType &modelPar_RCBLI, bool modelPar_given_RCBLI, AdmsSensFadType &modelPar_CBCO, bool modelPar_given_CBCO, AdmsSensFadType &modelPar_MTAU, bool modelPar_given_MTAU, AdmsSensFadType &modelPar_TAUE, bool modelPar_given_TAUE, AdmsSensFadType &modelPar_TAUB, bool modelPar_given_TAUB, AdmsSensFadType &modelPar_TEPI, bool modelPar_given_TEPI, AdmsSensFadType &modelPar_TAUR, bool modelPar_given_TAUR, AdmsSensFadType &modelPar_DEG, bool modelPar_given_DEG, AdmsSensFadType &modelPar_XREC, bool modelPar_given_XREC, AdmsSensFadType &modelPar_AQBO, bool modelPar_given_AQBO, AdmsSensFadType &modelPar_AE, bool modelPar_given_AE, AdmsSensFadType &modelPar_AB, bool modelPar_given_AB, AdmsSensFadType &modelPar_AEPI, bool modelPar_given_AEPI, AdmsSensFadType &modelPar_AEX, bool modelPar_given_AEX, AdmsSensFadType &modelPar_AC, bool modelPar_given_AC, AdmsSensFadType &modelPar_ACBL, bool modelPar_given_ACBL, AdmsSensFadType &modelPar_DVGBF, bool modelPar_given_DVGBF, AdmsSensFadType &modelPar_DVGBR, bool modelPar_given_DVGBR, AdmsSensFadType &modelPar_VGB, bool modelPar_given_VGB, AdmsSensFadType &modelPar_VGC, bool modelPar_given_VGC, AdmsSensFadType &modelPar_VGJ, bool modelPar_given_VGJ, AdmsSensFadType &modelPar_VGZEB, bool modelPar_given_VGZEB, AdmsSensFadType &modelPar_AVGEB, bool modelPar_given_AVGEB, AdmsSensFadType &modelPar_TVGEB, bool modelPar_given_TVGEB, AdmsSensFadType &modelPar_DVGTE, bool modelPar_given_DVGTE, AdmsSensFadType &modelPar_DAIS, bool modelPar_given_DAIS, AdmsSensFadType &modelPar_AF, bool modelPar_given_AF, AdmsSensFadType &modelPar_KF, bool modelPar_given_KF, AdmsSensFadType &modelPar_KFN, bool modelPar_given_KFN, AdmsSensFadType &modelPar_ISS, bool modelPar_given_ISS, AdmsSensFadType &modelPar_ICSS, bool modelPar_given_ICSS, AdmsSensFadType &modelPar_IKS, bool modelPar_given_IKS, AdmsSensFadType &modelPar_CJS, bool modelPar_given_CJS, AdmsSensFadType &modelPar_VDS, bool modelPar_given_VDS, AdmsSensFadType &modelPar_PS, bool modelPar_given_PS, AdmsSensFadType &modelPar_VGS, bool modelPar_given_VGS, AdmsSensFadType &modelPar_AS, bool modelPar_given_AS, AdmsSensFadType &modelPar_ASUB, bool modelPar_given_ASUB, AdmsSensFadType &modelPar_MULT, bool modelPar_given_MULT, AdmsSensFadType &modelPar_GMIN, bool modelPar_given_GMIN, int modelPar_LEVEL, bool modelPar_given_LEVEL, int modelPar_EXMOD, bool modelPar_given_EXMOD, int modelPar_EXPHI, bool modelPar_given_EXPHI, int modelPar_EXAVL, bool modelPar_given_EXAVL, int modelPar_EXSUB, bool modelPar_given_EXSUB, int modelPar_KAVL, bool modelPar_given_KAVL, int modelPar_TYPE, bool modelPar_given_TYPE, AdmsSensFadType &modelVar_An, AdmsSensFadType &modelVar_Tk, AdmsSensFadType &modelVar_Vt, AdmsSensFadType &modelVar_VtINV, AdmsSensFadType &modelVar_VDE_T, AdmsSensFadType &modelVar_VDC_T, AdmsSensFadType &modelVar_XP_T, AdmsSensFadType &modelVar_BF_T, AdmsSensFadType &modelVar_BRI_T, AdmsSensFadType &modelVar_IS_T, AdmsSensFadType &modelVar_VEF_T, AdmsSensFadType &modelVar_VER_T, AdmsSensFadType &modelVar_nZEB_T, AdmsSensFadType &modelVar_pow2_2mPE, AdmsSensFadType &modelVar_pow2_PEm2, AdmsSensFadType &modelVar_inv_VDE_T, AdmsSensFadType &modelVar_VGZEB_T, AdmsSensFadType &modelVar_TAUE_T, AdmsSensFadType &modelVar_TAUB_T, AdmsSensFadType &modelVar_TEPI_T, AdmsSensFadType &modelVar_TAUR_T, AdmsSensFadType &modelVar_BnT, AdmsSensFadType &modelVar_DEG_T, AdmsSensFadType &modelVar_VDS_T, AdmsSensFadType &modelVar_IKS_T, AdmsSensFadType &modelVar_IS_TM, AdmsSensFadType &modelVar_IK_TM, AdmsSensFadType &modelVar_IBF_TM, AdmsSensFadType &modelVar_IBR_TM, AdmsSensFadType &modelVar_IHC_M, AdmsSensFadType &modelVar_IZEB_TM, AdmsSensFadType &modelVar_CJE_TM, AdmsSensFadType &modelVar_CJC_TM, AdmsSensFadType &modelVar_RE_TM, AdmsSensFadType &modelVar_RBC_TM, AdmsSensFadType &modelVar_RBV_TM, AdmsSensFadType &modelVar_RCV_TM, AdmsSensFadType &modelVar_SCRCV_M, AdmsSensFadType &modelVar_RCCxx_TM, AdmsSensFadType &modelVar_GCCxx_TM, AdmsSensFadType &modelVar_GCCex_TM, AdmsSensFadType &modelVar_GCCin_TM, AdmsSensFadType &modelVar_KF_M, AdmsSensFadType &modelVar_KFN_M, AdmsSensFadType &modelVar_ISS_TM, AdmsSensFadType &modelVar_ICSS_TM, AdmsSensFadType &modelVar_IKS_TM, AdmsSensFadType &modelVar_CJS_TM, AdmsSensFadType &modelVar_Xext1, AdmsSensFadType &modelVar_CBEO_M, AdmsSensFadType &modelVar_CBCO_M, double admsTemperature, double adms_vt_nom, double gmin, std::vector< AdmsSensFadType > &staticContributions, std::vector< AdmsSensFadType > &dynamicContributions, const Instance &theInstance)
#define CONSTKoverQ
Definition: N_DEV_Const.h:58
Base sensitivity functor.
Definition: N_DEV_Pars.h:148
void evaluateInitialModel(AdmsSensFadType &modelPar_TREF, bool modelPar_given_TREF, AdmsSensFadType &modelPar_DTA, bool modelPar_given_DTA, AdmsSensFadType &modelPar_IS, bool modelPar_given_IS, AdmsSensFadType &modelPar_IK, bool modelPar_given_IK, AdmsSensFadType &modelPar_VER, bool modelPar_given_VER, AdmsSensFadType &modelPar_VEF, bool modelPar_given_VEF, AdmsSensFadType &modelPar_BF, bool modelPar_given_BF, AdmsSensFadType &modelPar_IBF, bool modelPar_given_IBF, AdmsSensFadType &modelPar_MLF, bool modelPar_given_MLF, AdmsSensFadType &modelPar_XIBI, bool modelPar_given_XIBI, AdmsSensFadType &modelPar_IZEB, bool modelPar_given_IZEB, AdmsSensFadType &modelPar_NZEB, bool modelPar_given_NZEB, AdmsSensFadType &modelPar_BRI, bool modelPar_given_BRI, AdmsSensFadType &modelPar_IBR, bool modelPar_given_IBR, AdmsSensFadType &modelPar_VLR, bool modelPar_given_VLR, AdmsSensFadType &modelPar_XEXT, bool modelPar_given_XEXT, AdmsSensFadType &modelPar_WAVL, bool modelPar_given_WAVL, AdmsSensFadType &modelPar_VAVL, bool modelPar_given_VAVL, AdmsSensFadType &modelPar_SFH, bool modelPar_given_SFH, AdmsSensFadType &modelPar_RE, bool modelPar_given_RE, AdmsSensFadType &modelPar_RBC, bool modelPar_given_RBC, AdmsSensFadType &modelPar_RBV, bool modelPar_given_RBV, AdmsSensFadType &modelPar_RCC, bool modelPar_given_RCC, AdmsSensFadType &modelPar_RCV, bool modelPar_given_RCV, AdmsSensFadType &modelPar_SCRCV, bool modelPar_given_SCRCV, AdmsSensFadType &modelPar_IHC, bool modelPar_given_IHC, AdmsSensFadType &modelPar_AXI, bool modelPar_given_AXI, AdmsSensFadType &modelPar_CJE, bool modelPar_given_CJE, AdmsSensFadType &modelPar_VDE, bool modelPar_given_VDE, AdmsSensFadType &modelPar_PE, bool modelPar_given_PE, AdmsSensFadType &modelPar_XCJE, bool modelPar_given_XCJE, AdmsSensFadType &modelPar_CBEO, bool modelPar_given_CBEO, AdmsSensFadType &modelPar_CJC, bool modelPar_given_CJC, AdmsSensFadType &modelPar_VDC, bool modelPar_given_VDC, AdmsSensFadType &modelPar_PC, bool modelPar_given_PC, AdmsSensFadType &modelPar_XP, bool modelPar_given_XP, AdmsSensFadType &modelPar_MC, bool modelPar_given_MC, AdmsSensFadType &modelPar_XCJC, bool modelPar_given_XCJC, AdmsSensFadType &modelPar_RCBLX, bool modelPar_given_RCBLX, AdmsSensFadType &modelPar_RCBLI, bool modelPar_given_RCBLI, AdmsSensFadType &modelPar_CBCO, bool modelPar_given_CBCO, AdmsSensFadType &modelPar_MTAU, bool modelPar_given_MTAU, AdmsSensFadType &modelPar_TAUE, bool modelPar_given_TAUE, AdmsSensFadType &modelPar_TAUB, bool modelPar_given_TAUB, AdmsSensFadType &modelPar_TEPI, bool modelPar_given_TEPI, AdmsSensFadType &modelPar_TAUR, bool modelPar_given_TAUR, AdmsSensFadType &modelPar_DEG, bool modelPar_given_DEG, AdmsSensFadType &modelPar_XREC, bool modelPar_given_XREC, AdmsSensFadType &modelPar_AQBO, bool modelPar_given_AQBO, AdmsSensFadType &modelPar_AE, bool modelPar_given_AE, AdmsSensFadType &modelPar_AB, bool modelPar_given_AB, AdmsSensFadType &modelPar_AEPI, bool modelPar_given_AEPI, AdmsSensFadType &modelPar_AEX, bool modelPar_given_AEX, AdmsSensFadType &modelPar_AC, bool modelPar_given_AC, AdmsSensFadType &modelPar_ACBL, bool modelPar_given_ACBL, AdmsSensFadType &modelPar_DVGBF, bool modelPar_given_DVGBF, AdmsSensFadType &modelPar_DVGBR, bool modelPar_given_DVGBR, AdmsSensFadType &modelPar_VGB, bool modelPar_given_VGB, AdmsSensFadType &modelPar_VGC, bool modelPar_given_VGC, AdmsSensFadType &modelPar_VGJ, bool modelPar_given_VGJ, AdmsSensFadType &modelPar_VGZEB, bool modelPar_given_VGZEB, AdmsSensFadType &modelPar_AVGEB, bool modelPar_given_AVGEB, AdmsSensFadType &modelPar_TVGEB, bool modelPar_given_TVGEB, AdmsSensFadType &modelPar_DVGTE, bool modelPar_given_DVGTE, AdmsSensFadType &modelPar_DAIS, bool modelPar_given_DAIS, AdmsSensFadType &modelPar_AF, bool modelPar_given_AF, AdmsSensFadType &modelPar_KF, bool modelPar_given_KF, AdmsSensFadType &modelPar_KFN, bool modelPar_given_KFN, AdmsSensFadType &modelPar_ISS, bool modelPar_given_ISS, AdmsSensFadType &modelPar_ICSS, bool modelPar_given_ICSS, AdmsSensFadType &modelPar_IKS, bool modelPar_given_IKS, AdmsSensFadType &modelPar_CJS, bool modelPar_given_CJS, AdmsSensFadType &modelPar_VDS, bool modelPar_given_VDS, AdmsSensFadType &modelPar_PS, bool modelPar_given_PS, AdmsSensFadType &modelPar_VGS, bool modelPar_given_VGS, AdmsSensFadType &modelPar_AS, bool modelPar_given_AS, AdmsSensFadType &modelPar_ASUB, bool modelPar_given_ASUB, AdmsSensFadType &modelPar_MULT, bool modelPar_given_MULT, AdmsSensFadType &modelPar_GMIN, bool modelPar_given_GMIN, int modelPar_LEVEL, bool modelPar_given_LEVEL, int modelPar_EXMOD, bool modelPar_given_EXMOD, int modelPar_EXPHI, bool modelPar_given_EXPHI, int modelPar_EXAVL, bool modelPar_given_EXAVL, int modelPar_EXSUB, bool modelPar_given_EXSUB, int modelPar_KAVL, bool modelPar_given_KAVL, int modelPar_TYPE, bool modelPar_given_TYPE, AdmsSensFadType &modelVar_An, AdmsSensFadType &modelVar_Tk, AdmsSensFadType &modelVar_Vt, AdmsSensFadType &modelVar_VtINV, AdmsSensFadType &modelVar_VDE_T, AdmsSensFadType &modelVar_VDC_T, AdmsSensFadType &modelVar_XP_T, AdmsSensFadType &modelVar_BF_T, AdmsSensFadType &modelVar_BRI_T, AdmsSensFadType &modelVar_IS_T, AdmsSensFadType &modelVar_VEF_T, AdmsSensFadType &modelVar_VER_T, AdmsSensFadType &modelVar_nZEB_T, AdmsSensFadType &modelVar_pow2_2mPE, AdmsSensFadType &modelVar_pow2_PEm2, AdmsSensFadType &modelVar_inv_VDE_T, AdmsSensFadType &modelVar_VGZEB_T, AdmsSensFadType &modelVar_TAUE_T, AdmsSensFadType &modelVar_TAUB_T, AdmsSensFadType &modelVar_TEPI_T, AdmsSensFadType &modelVar_TAUR_T, AdmsSensFadType &modelVar_BnT, AdmsSensFadType &modelVar_DEG_T, AdmsSensFadType &modelVar_VDS_T, AdmsSensFadType &modelVar_IKS_T, AdmsSensFadType &modelVar_IS_TM, AdmsSensFadType &modelVar_IK_TM, AdmsSensFadType &modelVar_IBF_TM, AdmsSensFadType &modelVar_IBR_TM, AdmsSensFadType &modelVar_IHC_M, AdmsSensFadType &modelVar_IZEB_TM, AdmsSensFadType &modelVar_CJE_TM, AdmsSensFadType &modelVar_CJC_TM, AdmsSensFadType &modelVar_RE_TM, AdmsSensFadType &modelVar_RBC_TM, AdmsSensFadType &modelVar_RBV_TM, AdmsSensFadType &modelVar_RCV_TM, AdmsSensFadType &modelVar_SCRCV_M, AdmsSensFadType &modelVar_RCCxx_TM, AdmsSensFadType &modelVar_GCCxx_TM, AdmsSensFadType &modelVar_GCCex_TM, AdmsSensFadType &modelVar_GCCin_TM, AdmsSensFadType &modelVar_KF_M, AdmsSensFadType &modelVar_KFN_M, AdmsSensFadType &modelVar_ISS_TM, AdmsSensFadType &modelVar_ICSS_TM, AdmsSensFadType &modelVar_IKS_TM, AdmsSensFadType &modelVar_CJS_TM, AdmsSensFadType &modelVar_Xext1, AdmsSensFadType &modelVar_CBEO_M, AdmsSensFadType &modelVar_CBCO_M, double admsTemperature)
ModelBlock represents a .MODEL line from the netlist.
The DeviceTraits template describes the configuration of a device.
Manages parameter binding for class C.
Definition: N_DEV_Pars.h:214
InstanceBlock represent a device instance line from the netlist.
std::vector< Instance * > instanceContainer
virtual void operator()(const ParameterBase &entity, const std::string &param, std::vector< double > &dfdp, std::vector< double > &dqdp, std::vector< double > &dbdp, std::vector< int > &Findices, std::vector< int > &Qindices, std::vector< int > &Bindices) const
Compute sensitivity to a specified model parameter of all device instances of that model's outputs...
bool updateTemperature(const double &temp=-999.0)
Model & operator=(const Model &)
void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)
static Tin adms_ternary_op(const bool cond, const Tin &ifTrue, const Tin &ifFalse)