46 #include <Xyce_config.h>
55 #include <N_UTL_Expression.h>
56 #include <N_UTL_FeatureTest.h>
57 #include <N_UTL_Diagnostic.h>
71 : isPDESystem_(false),
73 startingTimeStep_(0.0),
84 blockAnalysisFlag_(false),
85 doubleDCOPEnabled(false),
89 ltraTimeHistorySize_(0),
90 ltraDoCompact_(false),
93 sweepSourceResetFlag(false),
94 beginIntegrationFlag_(true),
102 locaEnabledFlag (false),
103 externalStateFlag_(false),
104 externalInitJctFlag_(false),
105 continuationStepNumber (0),
106 firstContinuationParam (true),
107 firstSolveComplete (false),
110 debugTimeFlag (false),
112 bjtArtParameterFlag_(false),
115 chargeHomotopy_(false),
116 PDEcontinuationFlag_(false),
117 artParameterFlag_(false),
120 sizeParameterFlag_(false),
150 os << section_divider << std::endl;
151 os <<
" Device Package Solver State:" << std::endl;
153 os <<
" pdt = " << ss.
pdt_ << std::endl;
156 os <<
" currTime = " << ss.
currTime_ << std::endl;
157 os <<
" finalTime = " << ss.
finalTime_ << std::endl;
159 os <<
" bpTol = " << ss.
bpTol_ << std::endl;
163 os <<
" usedOrder = " << ss.
usedOrder_ << std::endl;
165 os <<
" mpdeOnFlag = ";
168 os <<
"yes" << std::endl;
174 os <<
"no" << std::endl;
181 os <<
" newtonIter = " << ss.
newtonIter << std::endl;
183 os <<
" firstContinuationParam = ";
185 else os <<
"no" << std::endl;
187 os <<
" firstSolveComplete = ";
189 else os <<
"no" << std::endl;
191 os <<
" initTranFlag = " << (ss.
initTranFlag_ ?
"yes" :
"no") << std::endl;
194 os <<
" dcopFlag = ";
195 if (ss.
dcopFlag) os <<
"yes" << std::endl;
196 else os <<
"no" << std::endl;
198 os <<
" inputOPFlag = ";
200 else os <<
"no" << std::endl;
202 os <<
" transientFlag = ";
204 else os <<
"no" << std::endl;
206 os <<
" dcsweepFlag = ";
208 else os <<
"no" << std::endl;
210 os <<
" tranopFlag = ";
212 else os <<
"no" << std::endl;
214 os <<
" acopFlag = ";
215 if (ss.
acopFlag) os <<
"yes" << std::endl;
216 else os <<
"no" << std::endl;
218 os <<
" isPDESystem_ = ";
220 else os <<
"no" << std::endl;
222 os <<
" locaEnabledFlag = ";
224 else os <<
"no" << std::endl;
226 os <<
" initJctFlag = " << (ss.
initJctFlag_ ?
"yes" :
"no") << std::endl;
227 os <<
" initFixFlag = ";
229 else os <<
"no" << std::endl;
231 os <<
" sweepSourceResetFlag = ";
233 else os <<
"no" << std::endl;
235 os <<
" debugTimeFlag = ";
237 else os <<
"no" << std::endl;
239 os << section_divider << std::endl;
293 bool all_devices_converged,
297 bool bsuccess =
true;
399 && !all_devices_converged
422 if (isActive(Diag::DEVICE_SOLVER_STATE) && solver_state.
debugTimeFlag)
424 dout() << solver_state;
bool getTransientFlag() const
double pdt_
Previous delta time alpha/dt (Many devices)
double currTimeStep_
Region, BJT, Digital, ThermalResistor, ROM, Charon, Others.
bool initTranFlag_
RxnSet, TRA, LTRA, ACC, MOSFET, BJT, true only on very first(t=0) time step.
bool getDoubleDCOPEnabled() const
Pure virtual class to augment a linear system.
int continuationStepNumber
void initializeHomotopyBlockSize(int numBlocks)
double lastTimeStep_
BJT, Others.
std::vector< double > gainScale_
MOSFET Devices, ArtificialParameters.
double startingTimeStep_
SourceData devices.
double partialTimeDeriv() const
size_t ltraTimeIndex_
LTRA, DeviceMgr::acceptStep()
const AnalysisBase & getAnalysisObject() const
Nonlinear::TwoLevelNewtonMode twoLevelNewtonCouplingMode
const Util::BreakPointLess & getBreakPointLess() const
bool firstContinuationParam
double finalTime_
Analysis final time, SourceData devices.
TimeIntg::StepErrorControl & getStepErrorControl()
bool blockAnalysisFlag_
Source devices, BJTDW, This indicates an MPDE/HB run. This is true during both IC and MPDE/HB phase...
bool getBeginningIntegrationFlag() const
bool getTranOPFlag() const
double bpTol_
Break point tolerance, SourceData devices, Neuron devices.
bool beginIntegrationFlag_
BJT, true if 1st time step out of breakpoint (incl. t=0)
bool getInputOPFlag() const
bool setupSolverInfo(SolverState &solver_state, const Analysis::AnalysisManager &analysis_manager, bool all_devices_converged, const DeviceOptions &device_options, const Nonlinear::NonLinInfo &nonlinear_info)
virtual bool getDCOPFlag() const =0
bool getSweepSourceResetFlag() const
bool getInitTranFlag() const
bool firstContinuationParam
int timeStepNumber_
Memristor, LTRA, TRA, testing if debug or jacobian for testing.
bool mpdeOnFlag_
MPDE phase of MPDE problem (ie not initial condition)
TwoLevelNewtonMode twoLevelNewtonCouplingMode
int getStepNumber() const
size_t ltraTimeHistorySize_
LTRA, this looks like c code array sizing.
bool externalInitJctFlag_
bool sweepSourceResetFlag
std::vector< double > ltraTimePoints_
LTRA.
TimeIntg::WorkingIntegrationMethod & getWorkingIntegrationMethod()
bool isPDESystem_
true if circuit includes a PDE device
double acceptedTime_
DeviceMgr::acceptStep(), DAC (for habanero)
bool getDCSweepFlag() const
int getDoubleDCOPStep() const
double currTime_
DeviceEntity for expression time, breakpoints DeviceMgr for dependent parameters, breakpoints...
bool initJctFlag_
true if on the first newton step of the first dcop solve of the first .STEP iteration. BJT, JFET, Diode, MOSFET, SW, Extern
double currFastTime_
Source devices,.
std::ostream & operator<<(std::ostream &os, const Configuration &configuration)