Xyce
6.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
N_TIA_TIAParams.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_TIA_TIAParams.h,v $
27
//
28
// Purpose : This file identifies the class associated with all user
29
// specified parameters which relate to the time integration
30
// algorithms and problem definition.
31
//
32
// Special Notes :
33
//
34
// Creator : Buddy Watts
35
//
36
// Creation Date : 6/1/00
37
//
38
// Revision Information:
39
// ---------------------
40
//
41
// Revision Number: $Revision: 1.80 $
42
//
43
// Revision Date : $Date: 2014/02/24 23:49:27 $
44
//
45
// Current Owner : $Author: tvrusso $
46
//-----------------------------------------------------------------------------
47
48
#ifndef Xyce_N_TIA_PARAMS_H
49
#define Xyce_N_TIA_PARAMS_H
50
51
#include <vector>
52
53
#include <N_UTL_Misc.h>
54
#include <N_UTL_fwd.h>
55
#include <N_IO_fwd.h>
56
57
class
N_TIA_DataStore
;
58
59
//-----------------------------------------------------------------------------
60
// Class : N_TIA_TIAParams::N_TIA_TIAParams
61
// Purpose : This is a class that sets up time integration information,
62
// associated with user related input only, that defines the
63
// problem setup.
64
// Special Notes :
65
// Creator : Buddy Watts, SNL
66
// Creation Date : 6/01/00
67
//-----------------------------------------------------------------------------
68
class
N_TIA_TIAParams
69
{
70
public
:
71
72
// tStart is the time at which printing starts.
73
double
tStart
;
74
bool
tStartGiven
;
75
76
// Beginning time for the time-integrator.
77
double
initialTime
;
78
79
// Last time step value.
80
double
finalTime
;
81
82
// Time step value at which to "pause" the simulation.
83
double
pauseTime
;
84
85
// flag used to indicate that a puase was specifically set at time zero
86
// and thus should not be ignored.
87
bool
pauseSetAtZero
;
88
89
// Initial time-step value.
90
double
userSpecified_startingTimeStep
;
91
92
// User-specified maximum time step.
93
double
maxTimeStep
;
94
bool
maxTimeStepGiven
;
95
96
// User-specified mininum number of steps between breakpoints
97
int
minTimeStepsBP
;
98
bool
minTimeStepsBPGiven
;
99
100
double
userSpecMinTimeStep
;
101
bool
userSpecMinTimeStepGiven
;
102
103
// The time-integrator will exit when it exceeds this time.
104
double
exitTime
;
105
106
// Constant time step-size integration flag.
107
bool
constantStepSize
;
108
109
// Flag to set if we are letting the devices impose a time step maximum
110
bool
useDeviceTimeStepMax
;
111
112
// error analysis option
113
int
errorAnalysisOption
;
114
115
// iteration count down to reset errorAnalysisOption to zero
116
int
errorAnalysisOptionResetIter
;
117
118
// Restarting integration from a steady-state solution flag.
119
bool
restartingIntegrationFromSSS
;
120
121
// No operating point flag, if true, the operating point calculation will
122
// be skipped
123
bool
NOOP
;
124
125
// Continue a paused calculation.
126
bool
resume
;
127
128
// Enable breakpoints flag.
129
bool
bpEnable
;
130
131
// This is the extent to which the time step is
132
// scaled coming out of a breakpoint.
133
double
restartTimeStepScale
;
134
135
136
//iteration count algorithm parameters
137
int
NLmin
;
138
int
NLmax
;
139
bool
TimeStepLimitedbyBP
;
140
double
delmax
;
141
bool
delmaxGiven
;
142
bool
timestepsReversal
;
143
bool
testFirstStep
;
144
145
// Time-integration method flag.
146
unsigned
int
integrationMethod
;
147
unsigned
int
sweepSteps
;
148
unsigned
int
solutionSize
;
149
unsigned
int
stateSize
;
150
151
bool
newBPStepping
;
152
bool
newLte
;
153
154
int
doubleDCOPStep
;
155
int
firstDCOPStep
;
156
int
lastDCOPStep
;
157
158
// The time-integrator will exit after taking this many steps.
159
int
exitStep
;
160
161
bool
doubleDCOPAll
;
162
163
// Error Tolerances:
164
165
// Relative error tolerance. This value should be selected to be 10^(-(m+1))
166
// where m is the desired number of significant digits in the solution.
167
double
relErrorTol
;
168
169
bool
relErrorTolGiven
;
170
171
// Absolute error tolerance. In general, this should be selected to be small
172
// enough such that any solution value smaller than this tolerance will be
173
// considered "insignificant".
174
double
absErrorTol
;
175
176
// Error acceptance tolerance.
177
double
errTolAcceptance
;
178
179
bool
scalarTolerances
;
180
181
// Vector containing user-specified time-integration break points.
182
//vector < double > userSpecBreakPoints;
183
184
// Debug Level
185
int
debugLevel
;
186
187
// NL solver "near convergence" flag.
188
bool
nlNearConvFlag
;
189
190
// NL solver "small update" flag.
191
bool
nlSmallUpdateFlag
;
192
193
// Jacobian limit - to prevent capacitive spiral of death!
194
bool
jacLimitFlag
;
195
double
jacLimit
;
196
197
// Maximum/Minimum order desired (BackwardDifferentiation15 specific)
198
int
maxOrder
;
199
int
minOrder
;
200
201
// flag for interpolating the MPDE output.
202
// Sometimes, the interpolation is the hard part.
203
bool
outputInterpMPDE
;
204
205
// Period of oscillation used by HB
206
// double freq;
207
std::vector<double>
freqs
;
208
bool
freqGiven
;
209
210
// double freq2;
211
// bool freq2Given;
212
213
// AC
214
std::string
type
;
215
double
np
;
216
double
fStart
;
217
double
fStop
;
218
219
// MOR
220
int
ROMsize
;
221
std::string
morMethod
;
222
bool
morSaveRedSys
;
223
bool
morCompOrigTF
;
224
bool
morCompRedTF
;
225
std::string
morCompType
;
226
int
morCompNP
;
227
double
morCompFStart
;
228
double
morCompFStop
;
229
double
morExpPoint
;
230
double
morScaleFactor
;
231
int
morScaleType
;
232
double
morScaleFactor1
;
233
int
morSparsificationType
;
234
235
// flag for interpolated output
236
bool
interpOutputFlag
;
237
238
// flag for conductance test
239
bool
condTestFlag
;
240
241
// flag to save timestpes in data store for later use
242
bool
saveTimeStepsFlag
;
243
244
// option to pass some non-linear solver failures
245
bool
passNLStall
;
246
247
// if we have rejected several time steps and are about to fail due to a
248
// time step too smal error, we'll go back and accept the step that had
249
// the minimum estimated error over tol if this flag is true.
250
// (set by the user in the netlist via .options timeint mintimesteprecovery=<int>)
251
int
minTimeStepRecoveryCounter
;
252
253
// if fastTests == true, then we'll consider voltages and currents
254
// below volAbsTol and currAbsTol to be converged in calculating the
255
// weights.
256
bool
fastTests
;
257
double
voltZeroTol
;
258
double
currZeroTol
;
259
260
// Xyce tracks how the last few timesteps have gone for error reporting
261
// if Xyce has to exit. This var specifies how many time steps (both
262
// passing and failing) to keep in its history. If it's zero, then
263
// history tracking is off.
264
int
historyTrackingDepth
;
265
266
// list of names for conductance test
267
std::list< std::string >
condTestDeviceNames
;
268
269
// commandline parser object
270
N_IO_CmdParse *
commandLine
;
271
272
protected
:
273
private
:
274
275
public
:
276
// Default constructor
277
N_TIA_TIAParams
(N_IO_CmdParse & cp);
278
279
// Destructor
280
~N_TIA_TIAParams
();
281
282
N_TIA_TIAParams
&
operator=
(
const
N_TIA_TIAParams
& right);
283
284
// Print out time-integration parameters.
285
void
printParams
(std::ostream &os,
int
analysis);
286
};
287
288
#endif // Xyce_N_TIA_TIAParams_H
src
TimeIntegrationPKG
include
N_TIA_TIAParams.h
Generated on Mon Mar 24 2014 10:54:41 for Xyce by
1.8.3.1