Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
N_DEV_ExternData.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // Copyright Notice
3 //
4 // Copyright 2002 Sandia Corporation. Under the terms
5 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
6 // Government retains certain rights in this software.
7 //
8 // Xyce(TM) Parallel Electrical Simulator
9 // Copyright (C) 2002-2014 Sandia Corporation
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program. If not, see <http://www.gnu.org/licenses/>.
23 //-----------------------------------------------------------------------------
24 
25 //-----------------------------------------------------------------------------
26 // Filename : $RCSfile: N_DEV_ExternData.h,v $
27 //
28 // Purpose : This class is a container class for holding pointers,
29 // references, etc., to external linear solver data
30 // structures. Occasionally, it will hold pointers
31 // to other things, but that is not the primary intention.
32 //
33 // In general, stuff that goes into this class should
34 // be stuff needed by more than one device instance type.
35 //
36 //
37 // Special Notes :
38 //
39 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
40 //
41 // Creation Date : 02/28/00
42 //
43 // Revision Information:
44 // ---------------------
45 //
46 // Revision Number: $Revision: 1.51 $
47 //
48 // Revision Date : $Date: 2014/05/12 16:20:13 $
49 //
50 // Current Owner : $Author: erkeite $
51 //-----------------------------------------------------------------------------
52 
53 
54 #ifndef Xyce_N_DEV_ExternData_h
55 #define Xyce_N_DEV_ExternData_h
56 
57 #include <map>
58 #include <vector>
59 
60 #include <N_DEV_fwd.h>
61 
62 // ---------- Forward Declarations ----------
63 class N_LAS_Matrix;
64 class N_LAS_MultiVector;
65 class N_LAS_Vector;
66 class N_LAS_System;
67 
68 namespace Xyce {
69 namespace Device {
70 
71 //-----------------------------------------------------------------------------
72 // Class : ExternData
73 // Purpose : Container for references, pointers, etc. to data structures
74 // outside the device package. Mostly these are linear
75 // algebra objects like the Jacobian.
76 // Special Notes :
77 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
78 // Creation Date : 2/25/02
79 //-----------------------------------------------------------------------------
81 {
82 public:
84  lasSysPtr(0),
85 
86  fVectorPtr(0),
87  JdxpVectorPtr(0),
88 
89 #ifdef Xyce_DEBUG_VOLTLIM
90  dxVoltlimVectorPtr(0),
91 
92  JTestMatrixPtr(0),
93  Jdx2VectorPtr(0),
94 
95  FTestMatrixPtr(0),
96  Fdx2VectorPtr(0),
97  QTestMatrixPtr(0),
98  Qdx2VectorPtr(0),
99 #endif
100  tmpdIdXPtr(0),
101  tmpdQdXPtr(0),
102  daeQVectorPtr(0),
103  daeFVectorPtr(0),
104  daeBVectorPtr(0),
105 
106  bVecRealPtr(0),
107  bVecImagPtr(0),
108 
109  dFdxdVpVectorPtr(0),
110  dQdxdVpVectorPtr(0),
111  dQdxMatrixPtr(0),
112  dFdxMatrixPtr(0),
113 
114  currSolVectorPtr(0),
115  nextSolVectorPtr(0),
116  lastSolVectorPtr(0),
117 
118  currStaVectorPtr(0),
119  nextStaVectorPtr(0),
120  lastStaVectorPtr(0),
121 
122  currStoVectorPtr(0),
123  nextStoVectorPtr(0),
124  lastStoVectorPtr(0),
126  flagSolVectorPtr(0),
127 
128  perturbVectorPtr(0),
130  numJacFVectorPtr(0),
131  numJacQVectorPtr(0),
134 
136 
137  daeQVectorRawPtr(0),
138  daeFVectorRawPtr(0),
139  daeBVectorRawPtr(0),
153  bVecRealRawPtr(0),
154  bVecImagRawPtr(0),
155  initializeAllFlag(false)
156  {}
157 
158 public:
159  N_LAS_System * lasSysPtr;
160 
161  N_LAS_Vector * fVectorPtr;
162  N_LAS_Vector * JdxpVectorPtr;
163 
164 #ifdef Xyce_DEBUG_VOLTLIM
165  // voltlim DX vector:
166  N_LAS_Vector * dxVoltlimVectorPtr;
167 
168  // old DAE matrix
169  N_LAS_Vector * Jdx2VectorPtr;
170  N_LAS_Matrix * JTestMatrixPtr;
171 
172  // new DAE matrices
173  N_LAS_Vector * Fdx2VectorPtr;
174  N_LAS_Matrix * FTestMatrixPtr;
175  N_LAS_Vector * Qdx2VectorPtr;
176  N_LAS_Matrix * QTestMatrixPtr;
177 #endif
178  N_LAS_Vector * tmpdIdXPtr;
179  N_LAS_Vector * tmpdQdXPtr;
180 
181  // DAE formulation vectors
182 
183 
184  N_LAS_Vector * bVecRealPtr;
185  N_LAS_Vector * bVecImagPtr;
186 
187  N_LAS_Vector * daeQVectorPtr;
188  N_LAS_Vector * daeFVectorPtr;
189  N_LAS_Vector * daeBVectorPtr;
190 
191  N_LAS_Vector * dFdxdVpVectorPtr;
192  N_LAS_Vector * dQdxdVpVectorPtr;
193 
194  // DAE formulation matrices
195  N_LAS_Matrix * dQdxMatrixPtr;
196  N_LAS_Matrix * dFdxMatrixPtr;
197 
198  N_LAS_Vector * currSolVectorPtr;
199  N_LAS_Vector * nextSolVectorPtr;
200  N_LAS_Vector * lastSolVectorPtr;
201 
202  N_LAS_Vector * currStaVectorPtr;
203  N_LAS_Vector * nextStaVectorPtr;
204  N_LAS_Vector * lastStaVectorPtr;
205 
206  N_LAS_Vector * currStoVectorPtr;
207  N_LAS_Vector * nextStoVectorPtr;
208  N_LAS_Vector * lastStoVectorPtr;
209  N_LAS_Vector * storeLeadCurrQCompPtr;
210 
211  N_LAS_Vector * flagSolVectorPtr;
212 
213  N_LAS_Vector * perturbVectorPtr;
214  N_LAS_Vector * numJacRHSVectorPtr;
215  N_LAS_Vector * numJacFVectorPtr;
216  N_LAS_Vector * numJacQVectorPtr;
217  N_LAS_Vector * numJacLoadFlagPtr;
218 
219  N_LAS_Vector * nextStaDerivVectorPtr;
220 
221  N_LAS_Vector * deviceMaskVectorPtr;
222 
223  // raw pointers (to internal vector data):
229 
233 
237 
242 
244 
245  double * bVecRealRawPtr;
246  double * bVecImagRawPtr;
247 
249 };
250 
251 } // namespace Device
252 } // namespace Xyce
253 
255 
256 #endif
257