Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
N_TIA_MPDEInterface.h
Go to the documentation of this file.
1 
2 //-----------------------------------------------------------------------------
3 // Copyright Notice
4 //
5 // Copyright 2002 Sandia Corporation. Under the terms
6 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
7 // Government retains certain rights in this software.
8 //
9 // Xyce(TM) Parallel Electrical Simulator
10 // Copyright (C) 2002-2014 Sandia Corporation
11 //
12 // This program is free software: you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation, either version 3 of the License, or
15 // (at your option) any later version.
16 //
17 // This program is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 // You should have received a copy of the GNU General Public License
23 // along with this program. If not, see <http://www.gnu.org/licenses/>.
24 //-----------------------------------------------------------------------------
25 
26 //-----------------------------------------------------------------------------
27 // Filename : $RCSfile: N_TIA_MPDEInterface.h,v $
28 //
29 // Purpose : This file defines the time integration interface for MPDE
30 //
31 // Special Notes :
32 //
33 // Creator : Todd S. Coffey, 9214
34 //
35 // Creation Date : 03/24/04
36 //
37 // Revision Information:
38 // ---------------------
39 //
40 // Revision Number: $Revision: 1.26 $
41 //
42 // Revision Date : $Date: 2014/08/05 21:41:38 $
43 //
44 // Current Owner : $Author: dgbaur $
45 //-----------------------------------------------------------------------------
46 
47 #ifndef Xyce_TIME_MPDEINTERFACE_H
48 #define Xyce_TIME_MPDEINTERFACE_H
49 
50 // ---------- Standard Includes ----------
51 
52 // ---------- Xyce Includes ----------
53 #include <N_UTL_Xyce.h>
54 
55 #include <N_ANP_fwd.h>
56 #include <N_TIA_fwd.h>
57 #include <N_LAS_fwd.h>
58 
59 // ---------- Forward Declarations ----------
60 
61 
62 //-----------------------------------------------------------------------------
63 // Class : N_TIA_MPDEInterface
64 // Purpose : This is the interface for the time integrator that is
65 // : provided to the MPDE loader.
66 // Special Notes :
67 // Creator : Todd S. Coffey, 9214
68 // Creation Date : 03/24/04
69 //-----------------------------------------------------------------------------
71 {
72 public:
73 
74  // Default donstructor
76 
77  // Destructor
79 
80  // Execution functions:
81 
82  // Method to register the TIA parameters object.
83  bool registerTIAParams(const N_TIA_TIAParams & tiaParams_tmp);
84 
85  // Method to register the TIA Data Store object.
87 
88  // Method to register the TIA Control Alogrithm object.
89  bool registerTIAControl(N_ANP_AnalysisManager * tiaControl_tmp);
90  //
91  // Method to register the TIA StepErrorControl object.
93 
94  // Method to specify transient initial condition
95  bool setInitialCondition(N_LAS_Vector * initialConditionPtr);
96 
97  // Method to specify transient state initial condition
98  bool setStateInitialCondition(N_LAS_Vector *stateInitialConditionPtr);
99 
100  // Method to specify transient store initial condition
101  bool setStoreInitialCondition(N_LAS_Vector *storeInitialConditionPtr);
102 
103  // Method to specify transient Q initial condition
104  bool setQVectorInitialCondition(N_LAS_Vector *qVectorInitialConditionPtr);
105 
106  // Method to run DCOP
107  bool runDCOP();
108 
109  // Method to run transient without DCOP
110  bool runTransient();
111 
112  // Method to run transient with DCOP
113  bool runTransientWithDCOP();
114 
115  // Methods to take single time steps
116  void getTimeIntInfo(N_TIA_TimeIntInfo & tiInfo);
117  bool runStep(const N_TIA_TimeIntInfo & tiInfo, N_TIA_TwoLevelError & tlError);
118  void stepSuccess(Xyce::Analysis::CurrentMode analysis_type);
119 
120  // Method to return output solution (either from DCOP or transient)
121  N_LAS_Vector* getFinalSolution();
122 
123  // Method to return output state vector (either from DCOP or transient)
124  N_LAS_Vector* getStateFinalSolution();
125 
126  // Method to return output store vector (either from DCOP or transient)
127  N_LAS_Vector* getStoreFinalSolution();
128 
129  // Method to return output DAE Q vector
130  N_LAS_Vector* getQVectorFinalSolution();
131 
132  // Method to return output DAE Q vector history
133  N_LAS_Vector* getQVectorHistoryFinalSolution();
134 
135  // Method to re-initialize time integrator
136  bool reInitialize();
137 
138  // Accessor to the N_TIA_TIAParams object.
140 
141  bool setTIAParams(N_TIA_TIAParams& tiaParams);
142 
143 protected:
144 
145 private :
146 
147  // Pointer to DataStore
149 
150  // Pointer to TIAParams
152 
153  // Pointer to the Analysis Manager
155 
156  // Pointer to the TIA StepErrorControl object
158 
159 };
160 
161 //-----------------------------------------------------------------------------
162 // Function : N_TIA_MPDEInterface::getTIAParams
163 // Purpose : Accessor to the N_TIA_TIAParams object.
164 // Special Notes :
165 // Scope : public
166 // Creator : Todd Coffey, SNL
167 // Creation Date : 3/25/04
168 //-----------------------------------------------------------------------------
170 {
171  return tiaParams_;
172 }
173 
174 #endif // Xyce_TIME_MPDEINTERFACE_H
175