38 #include <Xyce_config.h>
45 #include <N_ERH_Message.h>
46 #include <N_IO_PkgOptionsMgr.h>
47 #include <N_IO_CmdParse.h>
50 #include <N_UTL_Diagnostic.h>
51 #include <N_UTL_FeatureTest.h>
52 #include <N_UTL_OptionBlock.h>
53 #include <N_UTL_Timer.h>
124 if (DEBUG_ANALYSIS && isActive(Diag::TIME_PARAMETERS))
126 Xyce::dout() << std::endl << std::endl;
127 Xyce::dout() << section_divider << std::endl;
128 Xyce::dout() <<
"Step::init" << std::endl;
152 bool integration_status =
true;
163 if (DEBUG_ANALYSIS && isActive(Diag::TIME_PARAMETERS))
167 Xyce::dout() <<
"Step Analysis # " << i<<
"\t";
168 Xyce::dout() << (*it);
186 *(analysisManager_.getDataStore()->currSolutionPtr),
187 *(analysisManager_.getDataStore()->currStatePtr),
188 *(analysisManager_.getDataStore()->currStorePtr),
189 *(analysisManager_.getDataStore()->currLeadCurrentPtr),
190 *(analysisManager_.getDataStore()->currLeadDeltaVPtr));
194 return integration_status;
254 class StepFactory :
public Factory<Step>
280 Linear::System & linear_system,
288 virtual ~StepFactory()
308 step->setAnalysisParams(*it);
328 void setStepAnalysisOptionBlock(
const Util::OptionBlock &option_block)
332 if ((*it).compareParamLists(option_block))
334 (*it) = option_block;
353 struct StepAnalysisReg :
public IO::PkgOptionsReg
356 StepFactory & factory)
360 bool operator()(
const Util::OptionBlock &option_block)
362 factory_.setStepAnalysisOptionBlock(option_block);
377 const std::string & netlist_filename,
378 IO::PkgOptionsMgr & options_manager,
380 Linear::System & linear_system,
383 StepFactory *factory =
new StepFactory(analysis_manager, linear_system, nonlinear_manager);
387 options_manager.submitRegistration(
"STEP", netlist_filename,
new StepAnalysisReg(*factory));
void outputResult(const Linear::Vector &currSolutionPtr, const Linear::Vector &currStatePtr, const Linear::Vector &currStorePtr, const Linear::Vector &lead_current_vector, const Linear::Vector &junction_voltage_vector)
virtual bool doProcessFailedStep()
Pure virtual class to augment a linear system.
bool updateSweepParams(Loader::Loader &loader, int step_count, std::vector< SweepParam >::iterator begin, std::vector< SweepParam >::iterator end, bool overrideOriginal=false)
AnalysisBase & childAnalysis_
Nonlinear::Manager & nonlinearManager_
double finalTime
End time for simulation.
SweepVector stepSweepVector_
virtual bool doProcessSuccessfulStep()
virtual const TimeIntg::TIAParams & getTIAParams() const =0
void setStepSweepVector(const Analysis::SweepVector &sweep_vector)
virtual bool getDCOPFlag() const
bool registerStepFactory(const std::string &netlist_filename, IO::PkgOptionsMgr &options_manager, AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager)
std::vector< Util::OptionBlock > stepSweepAnalysisOptionBlock_
Linear::System & linearSystem_
void setSweepSourceResetFlag(bool ssrf)
SweepParam parseSweepParams(Util::ParamList::const_iterator first, Util::ParamList::const_iterator last)
Populate the sweep params from the parameter list.
bool setAnalysisParams(const Util::OptionBlock ¶msBlock)
void addAnalysisFactory(Factory< void > *factory)
AnalysisManager & analysisManager_
The analysis factory template defines an interface for analysis type testing and analysis creation...
OutputMgrAdapter & outputManagerAdapter_
virtual bool doLoopProcess()
int setupSweepLoop(Loader::Loader &loader, std::vector< SweepParam >::iterator begin, std::vector< SweepParam >::iterator end)
AnalysisManager & analysisManager_
virtual bool getDCOPFlag() const =0
const TimeIntg::TIAParams & getTIAParams() const