46 #ifndef Xyce_N_ANP_AnalysisManager_h
47 #define Xyce_N_ANP_AnalysisManager_h
54 #include <N_LAS_fwd.h>
57 #include <N_PDS_fwd.h>
59 #include <N_TOP_fwd.h>
60 #include <N_UTL_fwd.h>
67 #include <N_UTL_Listener.h>
68 #include <N_UTL_Stats.h>
69 #include <N_UTL_Timer.h>
125 public AnalysisEventNotifier,
126 public StepEventListener,
127 public AnalysisEventListener
131 const IO::CmdParse & command_line,
132 IO::RestartMgr & restart_manager,
134 Stats::Stat analysis_stat);
152 Linear::System & linear_system,
182 const std::vector<std::string> & paramNames,
183 const std::vector<double> & paramVals,
184 Linear::Vector * solnVecPtr );
190 const std::list< IndexPair > & staGIDList);
284 void setPauseTime(
double pauseTime,
double initial_time);
326 bool dumpRestartData(
char * buf,
int bsize,
int & pos, Parallel::Communicator * comm,
bool pack);
329 bool restoreRestartData(
char * buf,
int bsize,
int & pos, Parallel::Communicator * comm,
bool pack );
332 bool getSolnVarData(
const int & gid, std::vector< double > & varData)
const;
335 bool getStateVarData(
const int & gid, std::vector< double > & varData)
const;
338 bool getStoreVarData(
const int & gid, std::vector< double > & varData)
const;
341 bool setSolnVarData(
const int & gid,
const std::vector< double > & varData);
344 bool setStateVarData(
const int & gid,
const std::vector< double > & varData);
347 bool setStoreVarData(
const int & gid,
const std::vector< double > & varData);
589 const std::string & netlist_filename,
590 IO::PkgOptionsMgr & options_manager,
592 Linear::System & linear_system,
595 Linear::Builder & builder,
596 Topo::Topology & topology);
603 Linear::Vector * SolVectorPtr,
604 Linear::Vector * CurrSolVectorPtr,
605 Linear::Vector * LasSolVectorPtr,
606 Linear::Vector * StaVectorPtr,
607 Linear::Vector * CurrStaVectorPtr,
608 Linear::Vector * LasStaVectorPtr,
609 Linear::Vector * StaDerivVectorPtr,
610 Linear::Vector * StoVectorPtr,
611 Linear::Vector * CurrStoVectorPtr,
612 Linear::Vector * LasStoVectorPtr,
613 Linear::Vector * stoLeadCurrQVectorPtr,
614 Linear::Vector * NextLeadFVectorPtr,
615 Linear::Vector * CurrLeadFVectorPtr,
616 Linear::Vector * LastLeadFVectorPtr,
617 Linear::Vector * LeadQVectorPtr,
618 Linear::Vector * NextJunctionVVectorPtr,
619 Linear::Vector * CurrentJunctionVVectorPtr,
620 Linear::Vector * LastJunctionVVectorPtr,
621 Linear::Vector * QVectorPtr,
622 Linear::Vector * FVectorPtr,
623 Linear::Vector * BVectorPtr,
624 Linear::Vector * dFdxdVpVectorPtr,
625 Linear::Vector * dQdxdVpVectorPtr,
626 Linear::Matrix * dQdxMatrixPtr,
627 Linear::Matrix * dFdxMatrixPtr);
633 Linear::Vector * SolVectorPtr,
634 Linear::Vector * StaVectorPtr,
635 Linear::Vector * StoVectorPtr);
642 #endif // Xyce_N_ANP_AnalysisManager_h
bool setNextSolVectorPtr(Linear::Vector *solVecPtr)
Loader::Loader & getLoader()
virtual ~AnalysisManager()
bool getTransientFlag() const
bool setDCAnalysisParams(const Util::OptionBlock ¶msBlock)
void addAnalysis(Factory< void > *factory)
void setDAEStateDerivFlag(bool state)
const char * analysisModeName(Mode mode)
Returns the name of the analysis mode given by mode.
bool testSaveOutputTime()
bool run()
Runs the top level analysis.
void notify(const StepEvent &step_event)
Notification that there is a StepEvent.
bool setNOISEAnalysisParams(const Util::OptionBlock &OB)
double getTotalLinearSolutionTime() const
TwoLevelMode getTwoLevelMode() const
const AnalysisBase * getActiveAnalysis() const
void setNextOutputTime(double next_output_time)
const Loader::Loader & getLoader() const
bool getStateVarData(const int &gid, std::vector< double > &varData) const
const std::string netlistFilename_
Netlist file name.
Util::ListenerAutoSubscribe< AnalysisEvent > AnalysisEventListener
bool testRestartSaveTime()
bool getDoubleDCOPEnabled() const
TimeIntg::DataStore * dataStore_
Data store object.
Pure virtual class to augment a linear system.
bool setDCOPRestartParams(const Util::OptionBlock &OB)
double getFinalTime() const
bool dumpRestartData(char *buf, int bsize, int &pos, Parallel::Communicator *comm, bool pack)
Loader::Loader * loader_
Pointer to the nonlinear loader object.
bool gui_
Set if -giu appears on command line.
void pushActiveAnalysis(AnalysisBase *analysis)
void allocateAnalysisObject()
Creates the primary analysis and driving analysis (.STEP, dakota).
bool isSimulationComplete()
double getPauseTime() const
bool getSwitchIntegrator() const
void setAnalysisMode(Mode analysis_mode)
bool registerPkgOptionsMgr(AnalysisManager &analysis_manager, const std::string &netList_file, IO::PkgOptionsMgr &options_manager)
CreatorVector & getCreatorVector()
void createTimeIntegratorMethod(const TimeIntg::TIAParams &tia_params, const unsigned int integration_method)
int getRestartDataSize(bool pack) const
const AnalysisBase & getAnalysisObject() const
std::vector< AnalysisBase * > currentAnalysisStack_
const TimeIntg::StepErrorControl & getStepErrorControl() const
Util::ListenerAutoSubscribe< StepEvent > StepEventListener
Util::Timer & getXyceTranTimer()
bool getResumingSimulation() const
Parallel::Manager * getPDSManager() const
AnalysisManager & operator=(const AnalysisManager &)
TimeIntg::StepErrorControl & getStepErrorControl()
void setResumeSimulation(bool resume)
bool getBeginningIntegrationFlag() const
double nextOutputTime_
for .SAVE and/or DCOP restart.
void getTimeIntInfo(const AnalysisManager &analysis_manager, TimeIntg::TimeIntInfo &tiInfo)
const std::string & getNetlistFilename() const
void setIntegrationMethod(int im)
AnalysisManager(const IO::CmdParse &command_line, IO::RestartMgr &restart_manager, OutputMgrAdapter &output_manager_adapter, Stats::Stat analysis_stat)
Constructs the analysis manager.
bool testDCOPOutputTime()
Returns true if the DCOP Restart parameters have been set.
bool getTranOPFlag() const
bool getProgressFlag() const
TimeIntg::StepErrorControl * stepErrorControl_
Pointer to the TIA step-error control object.
Util::Timer * elapsedTimerPtr_
Xyce timing utility for timing the transient simulation CPU time.
bool registerParallelServices(Parallel::Manager *pds_tmp)
void setPrimaryAnalysisObject(AnalysisBase *primary)
unsigned int breakPointRestartStep
void setStepNumber(int step)
Loader::Loader & createLoader(Device::DeviceMgr &device_manager)
Creates the defaults circuit loader.
void setBeginningIntegrationFlag(bool bif)
bool restoreRestartData(char *buf, int bsize, int &pos, Parallel::Communicator *comm, bool pack)
TimeIntg::WorkingIntegrationMethod * workingIntgMethod_
Working integration method.
bool initializeSolverSystem(const TimeIntg::TIAParams &tia_params, Loader::Loader &loader, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager, Device::DeviceMgr &device_manager)
Initializes the solver system.
void registerAnalysisFactory(const std::string &netlist_filename, IO::PkgOptionsMgr &options_manager, AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager, Device::DeviceMgr &device_manager, Linear::Builder &builder, Topo::Topology &topology)
Registers the analysis factories.
bool blockAnalysisFlag_
HB Analysis (maybe something with MPDE too)
bool getSolnVarData(const int &gid, std::vector< double > &varData) const
Util::Notifier< StepEvent > StepEventNotifier
bool daeStateDerivFlag_
.OPTIONS TIMEINT DAESTATEDERIV=
AnalysisBase & getAnalysisObject()
void setPauseTime(double pauseTime, double initial_time)
bool setLoader(Loader::Loader &loader_)
bool getStoreVarData(const int &gid, std::vector< double > &varData) const
int getIntegrationMethod()
void setTranStepNumber(int step)
bool getSweepSourceResetFlag() const
Nonlinear::AnalysisMode nonlinearAnalysisMode(Mode mode)
Returns the nonlinear analysis mode given the analysis mode.
bool setACAnalysisParams(const Util::OptionBlock &OB)
bool setStateVarData(const int &gid, const std::vector< double > &varData)
bool completeOPStartStep()
bool getInitTranFlag() const
const TimeIntg::WorkingIntegrationMethod & getWorkingIntegrationMethod() const
AnalysisBase * analysisObject_
.STEP, Dakota
void setTwoLevelMode(TwoLevelMode current_mode)
bool dcopRestartFlag_
Set if .OPTIONS OP_IO.
void setSweepSourceResetFlag(bool ssrf)
OutputMgrAdapter & getOutputManagerAdapter() const
bool sweepSourceResetFlag_
double getTotalResidualLoadTime() const
Util::Notifier< AnalysisEvent > AnalysisEventNotifier
bool setSolnVarData(const int &gid, const std::vector< double > &varData)
Loader::NonlinearEquationLoader & getNonlinearEquationLoader()
Loader::CktLoader * cktLoaderPtr_
'real' pointer to the ckt-loader
double getSaveTime() const
int getStepNumber() const
const TimeIntg::TIAParams & getTIAParams() const
bool setOPAnalysisParams(const Util::OptionBlock ¶msBlock)
Mode getAnalysisMode() const
bool registerElapsedTimer(Util::Timer *)
Loader::NonlinearEquationLoader * nonlinearEquationLoader_
Pointer to the nonlinear equation loader.
void addAnalysisFactory(Factory< void > *factory)
bool updateDerivsBlock(const std::list< IndexPair > &solGIDList, const std::list< IndexPair > &staGIDList)
std::vector< AnalysisBase * > analysisVector_
bool setSensOptions(const Util::OptionBlock &OB)
const IO::CmdParse & commandLine_
Command line object.
bool saveFlag_
Set if .SAVE.
IO::RestartMgr & restartManager_
Restart manager.
OutputMgrAdapter & outputManagerAdapter_
Output manager adapter.
Factory for creating analysis objects.
Stats::Stat analysisStat_
CreatorVector creatorVector_
bool completeHomotopyStep(Loader::NonlinearEquationLoader &loader, const std::vector< std::string > ¶mNames, const std::vector< double > ¶mVals, Linear::Vector *solnVecPtr)
bool failHomotopyStep(Loader::NonlinearEquationLoader &loader)
TimeIntg::WorkingIntegrationMethod & getWorkingIntegrationMethod()
const IO::CmdParse & getCommandLine() const
double nextRestartSaveTime_
double solverStartTime_
Xyce timing utility for timing elapsed run time.
bool evalTransientModel(Loader::Loader &loader, double t, Linear::Vector *SolVectorPtr, Linear::Vector *CurrSolVectorPtr, Linear::Vector *LasSolVectorPtr, Linear::Vector *StaVectorPtr, Linear::Vector *CurrStaVectorPtr, Linear::Vector *LasStaVectorPtr, Linear::Vector *StaDerivVectorPtr, Linear::Vector *StoVectorPtr, Linear::Vector *CurrStoVectorPtr, Linear::Vector *LasStoVectorPtr, Linear::Vector *stoLeadCurrQVectorPtr, Linear::Vector *NextLeadFVectorPtr, Linear::Vector *CurrLeadFVectorPtr, Linear::Vector *LastLeadFVectorPtr, Linear::Vector *LeadQVectorPtr, Linear::Vector *NextJunctionVVectorPtr, Linear::Vector *CurrentJunctionVVectorPtr, Linear::Vector *LastJunctionVVectorPtr, Linear::Vector *QVectorPtr, Linear::Vector *FVectorPtr, Linear::Vector *BVectorPtr, Linear::Vector *dFdxdVpVectorPtr, Linear::Vector *dQdxdVpVectorPtr, Linear::Matrix *dQdxMatrixPtr, Linear::Matrix *dFdxMatrixPtr)
void setSwitchIntegrator(bool switch_itegrator)
bool dotOpSpecified_
Set if .OP.
IO::ActiveOutput * activeOutput_
bool switchIntegrator_
Set to true when Transient::integrationMethod_ is changed.
TimeIntg::DataStore * getDataStore()
Util::Timer xyceTranTimerPtr_
double getSolverStartTime() const
bool getDCSweepFlag() const
void initializeTransientModel(const TimeIntg::TIAParams &tia_params)
bool getBlockAnalysisFlag() const
Return true if primary analysis is HB or MPDE.
bool setStoreVarData(const int &gid, const std::vector< double > &varData)
TwoLevelMode twoLevelMode_
int getDoubleDCOPStep() const
bool evalTransientModelState(TimeIntg::StepErrorControl &step_error_control, Loader::Loader &loader, double t, Linear::Vector *SolVectorPtr, Linear::Vector *StaVectorPtr, Linear::Vector *StoVectorPtr)
double getTotalJacobianLoadTime() const
bool resumeSimulation_
Resume simulation from a paused transient.
The analysis factory template defines an interface for analysis type testing and analysis creation...
double getNextOutputTime() const
void writeConductanceFile(const std::vector< std::string > &device_names, Nonlinear::ConductanceExtractor &conductance_extractor, const std::string &filename)
Parallel::Manager * parallelManager_
Pointer to the parallel services manager.
std::vector< Factory< void > * > Registry
Registry of factories.
AnalysisBase * primaryAnalysisObject_
.TRAN, .AC, .HB, ...
std::vector< Factory< void > * > CreatorVector
bool setSaveOptions(const Util::OptionBlock &OB)
double getInitialTime() const
bool printLoopInfo(int start, int finish)