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.48.2.1 $
47 //
48 // Revision Date : $Date: 2014/02/26 20:16:30 $
49 //
50 // Current Owner : $Author: tvrusso $
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 #include <N_UTL_Xyce.h>
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 
105  bVecRealPtr(0),
106  bVecImagPtr(0),
107 
108  dFdxdVpVectorPtr(0),
109  dQdxdVpVectorPtr(0),
110  dQdxMatrixPtr(0),
111  dFdxMatrixPtr(0),
112 
113  currSolVectorPtr(0),
114  nextSolVectorPtr(0),
115  lastSolVectorPtr(0),
116 
117  currStaVectorPtr(0),
118  nextStaVectorPtr(0),
119  lastStaVectorPtr(0),
120 
121  currStoVectorPtr(0),
122  nextStoVectorPtr(0),
123  lastStoVectorPtr(0),
125  flagSolVectorPtr(0),
126 
127  perturbVectorPtr(0),
129  numJacFVectorPtr(0),
130  numJacQVectorPtr(0),
133 
135 
136  daeQVectorRawPtr(0),
137  daeFVectorRawPtr(0),
151  bVecRealRawPtr(0),
152  bVecImagRawPtr(0),
153  initializeAllFlag(false)
154  {}
155 
156 public:
157  N_LAS_System * lasSysPtr;
158 
159  N_LAS_Vector * fVectorPtr;
160  N_LAS_Vector * JdxpVectorPtr;
161 
162 #ifdef Xyce_DEBUG_VOLTLIM
163  // voltlim DX vector:
164  N_LAS_Vector * dxVoltlimVectorPtr;
165 
166  // old DAE matrix
167  N_LAS_Vector * Jdx2VectorPtr;
168  N_LAS_Matrix * JTestMatrixPtr;
169 
170  // new DAE matrices
171  N_LAS_Vector * Fdx2VectorPtr;
172  N_LAS_Matrix * FTestMatrixPtr;
173  N_LAS_Vector * Qdx2VectorPtr;
174  N_LAS_Matrix * QTestMatrixPtr;
175 #endif
176  N_LAS_Vector * tmpdIdXPtr;
177  N_LAS_Vector * tmpdQdXPtr;
178 
179  // DAE formulation vectors
180 
181 
182  N_LAS_Vector * bVecRealPtr;
183  N_LAS_Vector * bVecImagPtr;
184 
185  N_LAS_Vector * daeQVectorPtr;
186  N_LAS_Vector * daeFVectorPtr;
187 
188  N_LAS_Vector * dFdxdVpVectorPtr;
189  N_LAS_Vector * dQdxdVpVectorPtr;
190 
191  // DAE formulation matrices
192  N_LAS_Matrix * dQdxMatrixPtr;
193  N_LAS_Matrix * dFdxMatrixPtr;
194 
195  N_LAS_Vector * currSolVectorPtr;
196  N_LAS_Vector * nextSolVectorPtr;
197  N_LAS_Vector * lastSolVectorPtr;
198 
199  N_LAS_Vector * currStaVectorPtr;
200  N_LAS_Vector * nextStaVectorPtr;
201  N_LAS_Vector * lastStaVectorPtr;
202 
203  N_LAS_Vector * currStoVectorPtr;
204  N_LAS_Vector * nextStoVectorPtr;
205  N_LAS_Vector * lastStoVectorPtr;
206  N_LAS_Vector * storeLeadCurrQCompPtr;
207 
208  N_LAS_Vector * flagSolVectorPtr;
209 
210  N_LAS_Vector * perturbVectorPtr;
211  N_LAS_Vector * numJacRHSVectorPtr;
212  N_LAS_Vector * numJacFVectorPtr;
213  N_LAS_Vector * numJacQVectorPtr;
214  N_LAS_Vector * numJacLoadFlagPtr;
215 
216  N_LAS_Vector * nextStaDerivVectorPtr;
217 
218  N_LAS_Vector * deviceMaskVectorPtr;
219 
220  // raw pointers (to internal vector data):
225 
229 
233 
238 
240 
241  double * bVecRealRawPtr;
242  double * bVecImagRawPtr;
243 
245 };
246 
247 } // namespace Device
248 } // namespace Xyce
249 
251 
252 #endif
253