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