Xyce  6.1
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-2015 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.59 $
47 //
48 // Revision Date : $Date: 2015/07/02 21:29:41 $
49 //
50 // Current Owner : $Author: hkthorn $
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 #include <N_LAS_fwd.h>
62 
63 namespace Xyce {
64 namespace Device {
65 
66 //-----------------------------------------------------------------------------
67 // Class : ExternData
68 // Purpose : Container for references, pointers, etc. to data structures
69 // outside the device package. Mostly these are linear
70 // algebra objects like the Jacobian.
71 // Special Notes :
72 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
73 // Creation Date : 2/25/02
74 //-----------------------------------------------------------------------------
76 {
77 public:
79  : lasSysPtr(0),
80 
81  fVectorPtr(0),
82  JdxpVectorPtr(0),
83 
85 
86  Jdx2VectorPtr(0),
87  JTestMatrixPtr(0),
88 
89  Fdx2VectorPtr(0),
90  FTestMatrixPtr(0),
91  Qdx2VectorPtr(0),
92  QTestMatrixPtr(0),
93 
94  tmpdIdXPtr(0),
95  tmpdQdXPtr(0),
96 
97  bVecRealPtr(0),
98  bVecImagPtr(0),
99 
100  daeQVectorPtr(0),
101  daeFVectorPtr(0),
102  daeBVectorPtr(0),
103 
104  dFdxdVpVectorPtr(0),
105  dQdxdVpVectorPtr(0),
106  dQdxMatrixPtr(0),
107  dFdxMatrixPtr(0),
108 
109  currSolVectorPtr(0),
110  nextSolVectorPtr(0),
111  lastSolVectorPtr(0),
112 
113  currStaVectorPtr(0),
114  nextStaVectorPtr(0),
115  lastStaVectorPtr(0),
116 
117  currStoVectorPtr(0),
118  nextStoVectorPtr(0),
119  lastStoVectorPtr(0),
121 
131 
132  flagSolVectorPtr(0),
133 
134  perturbVectorPtr(0),
136  numJacFVectorPtr(0),
137  numJacQVectorPtr(0),
140 
142 
143  daeQVectorRawPtr(0),
144  daeFVectorRawPtr(0),
145  daeBVectorRawPtr(0),
159  bVecRealRawPtr(0),
160  bVecImagRawPtr(0),
161  initializeAllFlag(false)
162  {}
163 
164 public:
165  Linear::System * lasSysPtr;
166 
167  Linear::Vector * fVectorPtr;
168  Linear::Vector * JdxpVectorPtr;
169 
170  // voltlim DX vector:
171  Linear::Vector * dxVoltlimVectorPtr;
172 
173  // old DAE matrix
174  Linear::Vector * Jdx2VectorPtr;
175  Linear::Matrix * JTestMatrixPtr;
176 
177  // new DAE matrices
178  Linear::Vector * Fdx2VectorPtr;
179  Linear::Matrix * FTestMatrixPtr;
180  Linear::Vector * Qdx2VectorPtr;
181  Linear::Matrix * QTestMatrixPtr;
182 
183  Linear::Vector * tmpdIdXPtr;
184  Linear::Vector * tmpdQdXPtr;
185 
186  // DAE formulation vectors
187 
188 
189  Linear::Vector * bVecRealPtr;
190  Linear::Vector * bVecImagPtr;
191 
192  Linear::Vector * daeQVectorPtr;
193  Linear::Vector * daeFVectorPtr;
194  Linear::Vector * daeBVectorPtr;
195 
196  Linear::Vector * dFdxdVpVectorPtr;
197  Linear::Vector * dQdxdVpVectorPtr;
198 
199  // DAE formulation matrices
200  Linear::Matrix * dQdxMatrixPtr;
201  Linear::Matrix * dFdxMatrixPtr;
202 
203  Linear::Vector * currSolVectorPtr;
204  Linear::Vector * nextSolVectorPtr;
205  Linear::Vector * lastSolVectorPtr;
206 
207  Linear::Vector * currStaVectorPtr;
208  Linear::Vector * nextStaVectorPtr;
209  Linear::Vector * lastStaVectorPtr;
210 
211  Linear::Vector * currStoVectorPtr;
212  Linear::Vector * nextStoVectorPtr;
213  Linear::Vector * lastStoVectorPtr;
214  Linear::Vector * storeLeadCurrQCompPtr;
215 
216 
217  Linear::Vector * currLeadCurrFCompPtr;
218  Linear::Vector * currLeadCurrQCompPtr;
219  Linear::Vector * currJunctionVCompPtr;
220  Linear::Vector * nextLeadCurrFCompPtr;
221  Linear::Vector * nextLeadCurrQCompPtr;
222  Linear::Vector * nextJunctionVCompPtr;
223  Linear::Vector * lastLeadCurrFCompPtr;
224  Linear::Vector * lastLeadCurrQCompPtr;
225  Linear::Vector * lastJunctionVCompPtr;
226 
227  Linear::Vector * flagSolVectorPtr;
228 
229  Linear::Vector * perturbVectorPtr;
230  Linear::Vector * numJacRHSVectorPtr;
231  Linear::Vector * numJacFVectorPtr;
232  Linear::Vector * numJacQVectorPtr;
233  Linear::Vector * numJacLoadFlagPtr;
234 
235  Linear::Vector * nextStaDerivVectorPtr;
236 
237  Linear::Vector * deviceErrorWeightMask_;
238 
239  // raw pointers (to internal vector data):
245 
249 
253 
258 
268 
270 
271  double * bVecRealRawPtr;
272  double * bVecImagRawPtr;
273 
275 };
276 
277 } // namespace Device
278 } // namespace Xyce
279 
280 #endif
281 
Linear::Vector * lastStaVectorPtr
Linear::Vector * bVecImagPtr
Linear::System * lasSysPtr
Linear::Vector * currSolVectorPtr
Linear::Vector * nextLeadCurrFCompPtr
Linear::Vector * nextSolVectorPtr
Linear::Vector * nextLeadCurrQCompPtr
Linear::Vector * daeQVectorPtr
Linear::Vector * nextJunctionVCompPtr
Pure virtual class to augment a linear system.
Linear::Vector * Jdx2VectorPtr
Linear::Vector * perturbVectorPtr
Linear::Vector * dFdxdVpVectorPtr
Linear::Vector * numJacFVectorPtr
Linear::Vector * tmpdQdXPtr
Linear::Matrix * FTestMatrixPtr
Linear::Vector * tmpdIdXPtr
Linear::Vector * currJunctionVCompPtr
Linear::Vector * lastJunctionVCompPtr
Linear::Vector * dQdxdVpVectorPtr
Linear::Vector * Fdx2VectorPtr
Linear::Vector * lastSolVectorPtr
Linear::Vector * fVectorPtr
Linear::Vector * lastLeadCurrFCompPtr
Linear::Vector * JdxpVectorPtr
Linear::Vector * lastLeadCurrQCompPtr
Linear::Vector * lastStoVectorPtr
Linear::Vector * dxVoltlimVectorPtr
Linear::Vector * numJacRHSVectorPtr
Linear::Vector * deviceErrorWeightMask_
Linear::Vector * nextStaVectorPtr
Linear::Vector * currLeadCurrFCompPtr
Linear::Matrix * dFdxMatrixPtr
Linear::Vector * numJacLoadFlagPtr
Linear::Vector * daeBVectorPtr
Linear::Vector * storeLeadCurrQCompPtr
Linear::Vector * nextStoVectorPtr
Linear::Vector * currStaVectorPtr
Linear::Vector * daeFVectorPtr
Linear::Vector * bVecRealPtr
Linear::Vector * currStoVectorPtr
Linear::Vector * currLeadCurrQCompPtr
Linear::Matrix * JTestMatrixPtr
Linear::Matrix * QTestMatrixPtr
Linear::Matrix * dQdxMatrixPtr
Linear::Vector * numJacQVectorPtr
Linear::Vector * Qdx2VectorPtr
Linear::Vector * flagSolVectorPtr
Linear::Vector * nextStaDerivVectorPtr