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.57.2.1 $
47 //
48 // Revision Date : $Date: 2015/04/02 18:20:09 $
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 
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  flagSolVectorPtr(0),
122 
132 
133  perturbVectorPtr(0),
135  numJacFVectorPtr(0),
136  numJacQVectorPtr(0),
139 
141 
142  daeQVectorRawPtr(0),
143  daeFVectorRawPtr(0),
144  daeBVectorRawPtr(0),
158  bVecRealRawPtr(0),
159  bVecImagRawPtr(0),
160  initializeAllFlag(false)
161  {}
162 
163 public:
164  Linear::System * lasSysPtr;
165 
166  Linear::Vector * fVectorPtr;
167  Linear::Vector * JdxpVectorPtr;
168 
169  // voltlim DX vector:
170  Linear::Vector * dxVoltlimVectorPtr;
171 
172  // old DAE matrix
173  Linear::Vector * Jdx2VectorPtr;
174  Linear::Matrix * JTestMatrixPtr;
175 
176  // new DAE matrices
177  Linear::Vector * Fdx2VectorPtr;
178  Linear::Matrix * FTestMatrixPtr;
179  Linear::Vector * Qdx2VectorPtr;
180  Linear::Matrix * QTestMatrixPtr;
181 
182  Linear::Vector * tmpdIdXPtr;
183  Linear::Vector * tmpdQdXPtr;
184 
185  // DAE formulation vectors
186 
187 
188  Linear::Vector * bVecRealPtr;
189  Linear::Vector * bVecImagPtr;
190 
191  Linear::Vector * daeQVectorPtr;
192  Linear::Vector * daeFVectorPtr;
193  Linear::Vector * daeBVectorPtr;
194 
195  Linear::Vector * dFdxdVpVectorPtr;
196  Linear::Vector * dQdxdVpVectorPtr;
197 
198  // DAE formulation matrices
199  Linear::Matrix * dQdxMatrixPtr;
200  Linear::Matrix * dFdxMatrixPtr;
201 
202  Linear::Vector * currSolVectorPtr;
203  Linear::Vector * nextSolVectorPtr;
204  Linear::Vector * lastSolVectorPtr;
205 
206  Linear::Vector * currStaVectorPtr;
207  Linear::Vector * nextStaVectorPtr;
208  Linear::Vector * lastStaVectorPtr;
209 
210  Linear::Vector * currStoVectorPtr;
211  Linear::Vector * nextStoVectorPtr;
212  Linear::Vector * lastStoVectorPtr;
213  Linear::Vector * storeLeadCurrQCompPtr;
214 
215 
216  Linear::Vector * currLeadCurrFCompPtr;
217  Linear::Vector * currLeadCurrQCompPtr;
218  Linear::Vector * currJunctionVCompPtr;
219  Linear::Vector * nextLeadCurrFCompPtr;
220  Linear::Vector * nextLeadCurrQCompPtr;
221  Linear::Vector * nextJunctionVCompPtr;
222  Linear::Vector * lastLeadCurrFCompPtr;
223  Linear::Vector * lastLeadCurrQCompPtr;
224  Linear::Vector * lastJunctionVCompPtr;
225 
226  Linear::Vector * flagSolVectorPtr;
227 
228  Linear::Vector * perturbVectorPtr;
229  Linear::Vector * numJacRHSVectorPtr;
230  Linear::Vector * numJacFVectorPtr;
231  Linear::Vector * numJacQVectorPtr;
232  Linear::Vector * numJacLoadFlagPtr;
233 
234  Linear::Vector * nextStaDerivVectorPtr;
235 
236  Linear::Vector * deviceErrorWeightMask_;
237 
238  // raw pointers (to internal vector data):
244 
248 
252 
257 
267 
269 
270  double * bVecRealRawPtr;
271  double * bVecImagRawPtr;
272 
274 };
275 
276 } // namespace Device
277 } // namespace Xyce
278 
279 #endif
280 
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