40 #include <Xyce_config.h>
62 #include <N_IO_ActiveOutput.h>
63 #include <N_IO_CmdParse.h>
64 #include <N_IO_OutputMgr.h>
65 #include <N_IO_PkgOptionsMgr.h>
66 #include <N_IO_RestartMgr.h>
67 #include <N_LAS_LAFactory.h>
68 #include <N_LAS_Matrix.h>
69 #include <N_LAS_System.h>
70 #include <N_LAS_Vector.h>
84 #include <N_UTL_BreakPoint.h>
85 #include <N_UTL_Diagnostic.h>
86 #include <N_UTL_ExtendedString.h>
87 #include <N_UTL_FeatureTest.h>
88 #include <N_UTL_OptionBlock.h>
89 #include <N_UTL_Stats.h>
90 #include <N_UTL_Timer.h>
115 static const char *
const mode_names[] = {
"Invalid",
"DC OP",
"DC Sweep",
"Transient",
"MPDE",
"HB",
"AC",
"NOISE",
"MOR"};
117 if (mode <
sizeof(mode_names)/
sizeof(mode_names[0]))
118 return mode_names[mode];
120 return mode_names[0];
189 const IO::CmdParse & command_line,
190 IO::RestartMgr & restart_manager,
192 Stats::Stat analysis_stat)
197 commandLine_(command_line),
198 netlistFilename_(command_line.getArgumentValue(
"netlist")),
199 restartManager_(restart_manager),
200 outputManagerAdapter_(output_manager_adapter),
201 workingIntgMethod_(0),
202 stepErrorControl_(0),
203 nonlinearEquationLoader_(0),
210 resumeSimulation_(false),
211 blockAnalysisFlag_(false),
212 daeStateDerivFlag_(true),
213 dcopRestartFlag_(false),
215 dotOpSpecified_(false),
216 gui_(command_line.argExists(
"-gui")),
218 saveTimeGiven_(false),
219 savedAlready_(false),
221 sweepSourceResetFlag_(true),
222 switchIntegrator_(false),
225 solverStartTime_(0.0),
227 nextOutputTime_(0.0),
228 nextRestartSaveTime_(0.0),
230 primaryAnalysisObject_(0),
231 breakPointRestartStep(0),
232 analysisStat_(analysis_stat),
235 IO::setTimeIntegratorDebugLevel(command_line, 1);
258 for (Registry::iterator it =
registry_.begin(), end =
registry_.end(); it !=end; ++it)
309 const unsigned int integration_method)
412 Linear::System & linear_system,
418 int solutionSize = linear_system.getSolutionSize();
419 int stateSize = linear_system.getStateSize();
527 Stats::StatTop _analysisStat(
"Analysis");
528 Stats::TimeBlock _analysisTimer(_analysisStat);
532 Report::UserError0() <<
"No analysis statement in the netlist";
536 bool runStatus =
false;
585 for (CreatorVector::const_iterator it =
registry_.begin(), end =
registry_.end(); it != end; ++it) {
586 if ((*it)->isType<
DCSweep>()) {
596 if (!(*it)->isType<
Step>()) {
602 if ((*it)->isType<
Step>()) {
611 Report::UserError() <<
"Analysis mode " <<
analysisMode_ <<
" is not available";
683 Xyce::dout() <<
"Calling SAVE outputs!" <<std::endl;
700 double initial_restart_interval =
restartManager_.getInitialRestartInterval();
701 const IO::IntervalVector &restart_intervals =
restartManager_.getRestartIntervals();
705 Xyce::dout() <<
"TESTING FOR RESTART SAVE" << std::endl
706 << Xyce::subsection_divider << std::endl
709 <<
"initial_restart_interval: " << initial_restart_interval << std::endl;
710 if (!restart_intervals.empty())
712 Xyce::dout() <<
"First restart interval: " << restart_intervals[0].first << std::endl;
716 Xyce::dout() <<
"restart_intervals is empty" << std::endl;
721 if (initial_restart_interval == 0.0)
729 else if (restart_intervals.empty())
731 while (nextRestartSaveTime_ <= stepErrorControl_->currentTime)
739 while (nextRestartSaveTime_ <= stepErrorControl_->currentTime)
751 std::pair<double, double> currInterval, nextInterval;
752 int size = restart_intervals.size();
753 for (
int i = 0; i < size; ++i)
755 if (restart_intervals[i].first <= stepErrorControl_->currentTime)
757 currInterval = restart_intervals[i];
758 if ((i+1) < (
int)restart_intervals.size())
760 nextInterval = restart_intervals[i+1];
765 currInterval.second);
768 if (nextInterval.first && (nextInterval.first!=currInterval.first)
778 <<
"restart flag: " << flag << std::endl
779 << Xyce::subsection_divider << std::endl;
794 const Util::OptionBlock & paramsBlock)
812 const Util::OptionBlock & options)
816 for (Util::ParamList::const_iterator it = options.begin(), end = options.end(); it != end; ++it)
817 if ((*it).tag() ==
"TIME")
818 saveTime_ = (*it).getImmutableValue<
double>();
837 for (Util::ParamList::const_iterator it = option_block.begin(),
838 end = option_block.end(); it != end; ++it)
840 if ((*it).tag() ==
"TIME")
842 saveTime_ = (*it).getImmutableValue<
double>();
874 bool bsuccess =
true;
895 const std::vector<std::string> & paramNames,
896 const std::vector<double> & paramVals,
897 Linear::Vector * solnVecPtr )
899 bool bsuccess =
true;
903 <<
" AnalysisManager::completeHomotopyStep " << std::endl;
907 bsuccess = bsuccess && bs1;
933 <<
" AnalysisManager::failHomotopyStep " << std::endl;
966 Linear::Vector * SolVectorPtr,
967 Linear::Vector * CurrSolVectorPtr,
968 Linear::Vector * LastSolVectorPtr,
969 Linear::Vector * StaVectorPtr,
970 Linear::Vector * CurrStaVectorPtr,
971 Linear::Vector * LastStaVectorPtr,
972 Linear::Vector * StaDerivVectorPtr,
973 Linear::Vector * StoVectorPtr,
974 Linear::Vector * CurrStoVectorPtr,
975 Linear::Vector * LastStoVectorPtr,
976 Linear::Vector * stoLeadCurrQVectorPtr,
977 Linear::Vector * NextLeadFVectorPtr,
978 Linear::Vector * CurrLeadFVectorPtr,
979 Linear::Vector * LastLeadFVectorPtr,
980 Linear::Vector * LeadQVectorPtr,
981 Linear::Vector * NextJunctionVVectorPtr,
982 Linear::Vector * CurrJunctionVVectorPtr,
983 Linear::Vector * LastJunctionVVectorPtr,
984 Linear::Vector * QVectorPtr,
985 Linear::Vector * FVectorPtr,
986 Linear::Vector * BVectorPtr,
987 Linear::Vector * dFdxdVpVectorPtr,
988 Linear::Vector * dQdxdVpVectorPtr,
989 Linear::Matrix * dQdxMatrixPtr,
990 Linear::Matrix * dFdxMatrixPtr)
1004 stoLeadCurrQVectorPtr,
1009 NextJunctionVVectorPtr,
1010 CurrJunctionVVectorPtr,
1011 LastJunctionVVectorPtr,
1043 Linear::Vector * SolVectorPtr,
1044 Linear::Vector * StaVectorPtr,
1045 Linear::Vector * StoVectorPtr)
1193 Report::DevelFatal0().in(
"AnalysisManager::simulationComplete")
1194 <<
"Called for non-transient run, not currently valid";
1377 return (return1 || return2);
1460 const std::list<IndexPair> & solGIDList,
1461 const std::list<IndexPair> & staGIDList)
1509 Parallel::Communicator * comm,
1528 Parallel::Communicator * comm,
1543 std::vector<double> & varData )
const
1559 std::vector<double> & varData )
const
1573 std::vector<double> & varData )
const
1586 const std::vector<double> & varData )
1600 const std::vector<double> & varData )
1614 const std::vector<double> & varData )
1692 double initial_time)
1749 std::map<std::string,double> inputMap;
1752 for (std::vector<std::string>::const_iterator it = device_names.begin(), end = device_names.end(); it != end; ++it)
1753 inputMap[*it] = 0.0;
1763 int isize = inputMap.size();
1764 std::vector<double> outputVector(isize, 0.0);
1765 std::vector< std::vector<double> > jacobian(isize);
1766 for (
int i = 0; i < isize; ++i)
1768 jacobian[i].resize(isize, 0.0);
1771 bool b1 = conductance_extractor.
extract(inputMap, outputVector, jacobian);
1774 int numElectrodes = isize;
1777 fp1 = fopen(filename.c_str(),
"w");
1779 fprintf(fp1,
"%s",
"Conductance array: \n");
1780 fprintf(fp1,
"%s",
" ");
1783 std::map<std::string,double>::const_iterator iterM = inputMap.begin();
1784 std::map<std::string,double>::const_iterator endM = inputMap.end ();
1785 for (iE2 = 0; iE2 < numElectrodes; ++iE2, ++iterM)
1787 std::string srcname = iterM->first;
1788 fprintf(fp1,
"\t%14s", srcname.c_str());
1790 fprintf(fp1,
"%s",
"\n");
1792 iterM = inputMap.begin();
1793 for (iE1 = 0; iE1 < numElectrodes; ++iE1, ++iterM)
1795 std::string srcname = iterM->first;
1796 fprintf(fp1,
"%14s",srcname.c_str());
1797 for (iE2 = 0; iE2 < numElectrodes; ++iE2)
1799 fprintf(fp1,
"\t%14.4e",jacobian[iE1][iE2]);
1801 fprintf(fp1,
"%s",
"\n");
1803 fprintf(fp1,
"%s",
"\n");
1807 fprintf(fp1,
"%s",
"\nConductance calculation failed!\n");
1825 struct ResultOptionsReg :
public IO::PkgOptionsReg
1827 ResultOptionsReg(AnalysisManager &analysis_manager)
1831 bool operator()(
const Util::OptionBlock & option_block)
1843 struct DCOPRestartOptionsReg :
public IO::PkgOptionsReg
1845 DCOPRestartOptionsReg( AnalysisManager & manager )
1849 bool operator()(
const Util::OptionBlock & options )
1850 {
return manager_.setDCOPRestartParams( options ); }
1857 struct OPAnalysisReg :
public IO::PkgOptionsReg
1859 OPAnalysisReg( AnalysisManager & manager )
1863 bool operator()(
const Util::OptionBlock & options )
1864 {
return manager_.setOPAnalysisParams( options ); }
1870 struct SaveOptionsReg :
public IO::PkgOptionsReg
1872 SaveOptionsReg( AnalysisManager & manager )
1876 bool operator()(
const Util::OptionBlock & options )
1877 {
return manager_.setSaveOptions( options ); }
1883 struct SensOptionsReg :
public IO::PkgOptionsReg
1885 SensOptionsReg( AnalysisManager & manager )
1889 bool operator()(
const Util::OptionBlock & options )
1890 {
return manager_.setSensOptions( options ); }
1907 options_manager.submitRegistration(
1908 "RESULT", netlist_filename,
new ResultOptionsReg( analysis_manager ) );
1910 options_manager.submitRegistration(
1911 "OP", netlist_filename,
new OPAnalysisReg( analysis_manager ) );
1913 options_manager.submitRegistration(
1914 "OP_IO", netlist_filename,
new DCOPRestartOptionsReg( analysis_manager ) );
1916 options_manager.submitRegistration(
1917 "SAVE", netlist_filename,
new SaveOptionsReg( analysis_manager ) );
1919 options_manager.submitRegistration(
1920 "SENS", netlist_filename,
new SensOptionsReg( analysis_manager ) );
1954 const std::string & netlist_filename,
1955 IO::PkgOptionsMgr & options_manager,
1957 Linear::System & linear_system,
1960 Linear::Builder & builder,
1961 Topo::Topology & topology)
1963 registerDCSweepFactory(netlist_filename, options_manager, analysis_manager, linear_system, nonlinear_manager, topology);
1964 registerACFactory(netlist_filename, options_manager, analysis_manager, linear_system, nonlinear_manager, topology);
1965 registerTransientFactory(netlist_filename, options_manager, analysis_manager, linear_system, nonlinear_manager, topology);
1966 registerHBFactory(netlist_filename, options_manager, analysis_manager, linear_system, nonlinear_manager, device_manager, builder, topology);
1967 registerMPDEFactory(netlist_filename, options_manager, analysis_manager, linear_system, nonlinear_manager, device_manager, builder, topology);
1968 registerNOISEFactory(netlist_filename, options_manager, analysis_manager, linear_system, nonlinear_manager, topology);
1969 registerMORFactory(netlist_filename, options_manager, analysis_manager, linear_system, nonlinear_manager, topology);
1970 registerStepFactory(netlist_filename, options_manager, analysis_manager, linear_system, nonlinear_manager);
bool setNextSolVectorPtr(Linear::Vector *solVecPtr)
bool dcopFlag
Analysis DCOP flag.
IO::OutputMgr & getOutputManager()
virtual ~AnalysisManager()
bool getTransientFlag() const
Linear::Vector * lastSolutionPtr
double finalTime
Step error control final time.
int getNumberOfSteps() const
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.
double getTotalLinearSolutionTime() const
bool sweepSourceResetFlag
Analysis.
bool tranopFlag
Analysis TransientOP flag.
int numberOfSteps
Time integrator step.
int timeStepNumber
Analysis.
bool getStateVarData(const int &gid, std::vector< double > &varData) const
bool dumpRestartData(char *buf, int bsize, int &pos, N_PDS_Comm *comm, bool pack)
const std::string netlistFilename_
Netlist file name.
Util::ListenerAutoSubscribe< AnalysisEvent > AnalysisEventListener
bool updateStateDataArrays()
bool testRestartSaveTime()
bool getDoubleDCOPEnabled() const
TimeIntg::DataStore * dataStore_
Data store object.
Pure virtual class to augment a linear system.
bool inputOPFlag
Analysis InputOP flag.
bool setDCOPRestartParams(const Util::OptionBlock &OB)
Linear::Vector * nextSolutionDerivPtr
double getFinalTime() const
bool dumpRestartData(char *buf, int bsize, int &pos, Parallel::Communicator *comm, bool pack)
bool initTranFlag
Analysis.
bool resetAll(double absolute_error_tolerance, double relative_error_tolerance)
bool registerTransientFactory(const std::string &netlist_filename, IO::PkgOptionsMgr &options_manager, AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager, Topo::Topology &topology)
Loader::Loader * loader_
Pointer to the nonlinear loader object.
virtual bool loadDAEVectors(Linear::Vector *nextSolVectorPtr, Linear::Vector *currSolVectorPtr, Linear::Vector *lastSolVectorPtr, Linear::Vector *nextStaVectorPtr, Linear::Vector *currStaVectorPtr, Linear::Vector *lastStaVectorPtr, Linear::Vector *StaDerivVectorPtr, Linear::Vector *nextStoVectorPtr, Linear::Vector *currStoVectorPtr, Linear::Vector *lastStoVectorPtr, Linear::Vector *stoLeadCurrQVectorPtr, Linear::Vector *nextLeadFVectorPtr, Linear::Vector *currLeadFVectorPtr, Linear::Vector *lastLeadFVectorPtr, Linear::Vector *nextLeadQVectorPtr, Linear::Vector *nextJunctionVVectorPtr, Linear::Vector *currJunctionVVectorPtr, Linear::Vector *lastJunctionVVectorPtr, Linear::Vector *QVectorPtr, Linear::Vector *FVectorPtr, Linear::Vector *BVectorPtr, Linear::Vector *dFdxdVpVectorPtr, Linear::Vector *dQdxdVpVectorPtr)
void pushActiveAnalysis(AnalysisBase *analysis)
int doubleDCOPStep
Analysis.
void allocateAnalysisObject()
Creates the primary analysis and driving analysis (.STEP, dakota).
double getTotalLinearSolutionTime() const
bool isSimulationComplete()
bool registerNOISEFactory(const std::string &netlist_filename, IO::PkgOptionsMgr &options_manager, AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager, Topo::Topology &topology)
Linear::Vector * tmpStaVectorPtr
double getPauseTime() const
void updateDerivsBlock(const std::list< IndexPair > &solGIDList, const std::list< IndexPair > &staGIDList)
const Analysis::SweepVector & getDCSweepVector() const
Linear::Vector * lastStatePtr
Linear::Vector * tmpSolVectorPtr
bool registerMPDEFactory(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)
void setTranStepNumber(int step)
bool registerPkgOptionsMgr(AnalysisManager &analysis_manager, const std::string &netList_file, IO::PkgOptionsMgr &options_manager)
void setBeginningIntegrationFlag(bool bif)
void createTimeIntegratorMethod(const TimeIntg::TIAParams &tia_params, const unsigned int integration_method)
double partialTimeDeriv() const
int getRestartDataSize(bool pack) const
bool registerACFactory(const std::string &netlist_filename, IO::PkgOptionsMgr &options_manager, AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager, Topo::Topology &topology)
double nextTimeStep
Step error control next time step.
bool transientFlag
Analysis.
virtual int getDoubleDCOPStep() const
void outputHomotopy(const std::vector< std::string > ¶mNames, const std::vector< double > ¶mVals, Linear::Vector &solnVecPtr)
const AnalysisBase & getAnalysisObject() const
std::vector< AnalysisBase * > currentAnalysisStack_
Util::ListenerAutoSubscribe< StepEvent > StepEventListener
const Util::BreakPointLess & getBreakPointLess() const
Linear::Vector * currStatePtr
virtual const TimeIntg::TIAParams & getTIAParams() const =0
void obtainCorrectorDeriv()
bool doubleDCOPEnabled
Analysis.
virtual bool isAnalysis(int analysis_type) const
TimeIntg::StepErrorControl & getStepErrorControl()
bool registerHBFactory(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)
bool getBeginningIntegrationFlag() const
double nextOutputTime_
for .SAVE and/or DCOP restart.
void getTimeIntInfo(const AnalysisManager &analysis_manager, TimeIntg::TimeIntInfo &tiInfo)
void setIntegrationMethod(int im)
void computeDividedDifferences()
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
TimeIntg::StepErrorControl * stepErrorControl_
Pointer to the TIA step-error control object.
const Loader & getLoader() const
Linear::Vector * daeQVectorPtr
void setConstantHistory()
Util::Timer * elapsedTimerPtr_
Xyce timing utility for timing the transient simulation CPU time.
bool registerParallelServices(Parallel::Manager *pds_tmp)
double nextTime
Step error control next time.
void setStepNumber(int step)
Loader::Loader & createLoader(Device::DeviceMgr &device_manager)
Creates the defaults circuit loader.
Linear::Vector * tmpStaDerivPtr
void setBeginningIntegrationFlag(bool bif)
bool beginIntegrationFlag
Analysis.
bool restoreRestartData(char *buf, int bsize, int &pos, Parallel::Communicator *comm, bool pack)
void setStepNumber(int step)
Linear::Vector * deviceErrorWeightMask_
TimeIntg::WorkingIntegrationMethod * workingIntgMethod_
Working integration method.
double bpTol
Step error control breakpoint tolerance.
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 restoreRestartData(char *buf, int bsize, int &pos, N_PDS_Comm *comm, bool pack, double &initial_time)
bool getInputOPFlag() const
bool getSolnVarData(const int &gid, std::vector< double > &varData) const
Linear::Vector * daeFVectorPtr
Util::Notifier< StepEvent > StepEventNotifier
bool daeStateDerivFlag_
.OPTIONS TIMEINT DAESTATEDERIV=
bool setStoreVarData(const int &gid, const std::vector< double > &varData)
void setPauseTime(double pauseTime, double initial_time)
bool getStateVarData(const int &gid, std::vector< double > &varData)
bool setLoader(Loader::Loader &loader_)
bool getStoreVarData(const int &gid, std::vector< double > &varData) const
int getIntegrationMethod()
int usedOrder
Time integrator used order.
void setTranStepNumber(int step)
bool getSweepSourceResetFlag() const
Nonlinear::AnalysisMode nonlinearAnalysisMode(Mode mode)
Returns the nonlinear analysis mode given the analysis mode.
bool setStateVarData(const int &gid, const std::vector< double > &varData)
void setBreakPoint(const Util::BreakPoint &breakpoint, double initial_time)
bool completeOPStartStep()
void homotopyStepFailure()
bool getInitTranFlag() const
bool registerStepFactory(const std::string &netlist_filename, IO::PkgOptionsMgr &options_manager, AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager)
AnalysisBase * analysisObject_
.STEP, Dakota
Linear::Matrix * dFdxMatrixPtr
bool dcopRestartFlag_
Set if .OPTIONS OP_IO.
double getTotalJacobianLoadTime() const
Linear::Matrix * JMatrixPtr
void printParams(std::ostream &os, int analysis) const
virtual bool updateSources()
double getTotalResidualLoadTime() const
virtual bool loadDeviceErrorWeightMask(Linear::Vector *deviceMask) const
Linear::Vector * nextStatePtr
Util::Notifier< AnalysisEvent > AnalysisEventNotifier
double currentTime
Step error control current time.
virtual bool printLoopInfo(int start, int finish)
Linear::Vector * dFdxdVpVectorPtr
AnalysisManager & manager_
virtual bool updateState(Linear::Vector *nextSolVectorPtr, Linear::Vector *currSolVectorPtr, Linear::Vector *lastSolVectorPtr, Linear::Vector *nextStaVectorPtr, Linear::Vector *currStaVectorPtr, Linear::Vector *lastStaVectorPtr, Linear::Vector *nextStoVectorPtr, Linear::Vector *currStoVectorPtr, Linear::Vector *lastStoVectorPtr)
virtual bool loadDAEMatrices(Linear::Vector *tmpSolVectorPtr, Linear::Vector *tmpStaVectorPtr, Linear::Vector *tmpStaDerivVectorPtr, Linear::Vector *tmpStoVectorPtr, Linear::Matrix *tmpdQdxMatrixPtr, Linear::Matrix *tmpdFdxMatrixPtr)
bool setSolnVarData(const int &gid, const std::vector< double > &varData)
Loader::CktLoader * cktLoaderPtr_
'real' pointer to the ckt-loader
void homotopyStepSuccess(const std::vector< std::string > ¶mNames, const std::vector< double > ¶mVals)
double pauseTime
Time step value at which to "pause" the simulation.
int getStepNumber() const
const TimeIntg::TIAParams & getTIAParams() const
bool setOPAnalysisParams(const Util::OptionBlock ¶msBlock)
bool getSolnVarData(const int &gid, std::vector< double > &varData)
bool registerElapsedTimer(Util::Timer *)
bool setSolnVarData(const int &gid, const std::vector< double > &varData)
int nscsco
Time integrator ?nscsco?
Linear::Vector * tmpStaDivDiffPtr
Loader::NonlinearEquationLoader * nonlinearEquationLoader_
Pointer to the nonlinear equation loader.
bool updateDerivsBlock(const std::list< IndexPair > &solGIDList, const std::list< IndexPair > &staGIDList)
std::vector< AnalysisBase * > analysisVector_
bool setSensOptions(const Util::OptionBlock &OB)
Linear::Vector * nextSolutionPtr
Linear::Vector * RHSVectorPtr
void createTimeIntegMethod(int type, const TIAParams &tia_params, StepErrorControl &step_error_control, DataStore &data_store)
bool registerDCSweepFactory(const std::string &netlist_filename, IO::PkgOptionsMgr &options_manager, AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager, Topo::Topology &topology)
bool saveFlag_
Set if .SAVE.
IO::RestartMgr & restartManager_
Restart manager.
double getTotalResidualLoadTime() const
OutputMgrAdapter & outputManagerAdapter_
Output manager adapter.
bool setStateVarData(const int &gid, const std::vector< double > &varData)
Linear::Vector * dQdxdVpVectorPtr
Factory for creating analysis objects.
Stats::Stat analysisStat_
CreatorVector creatorVector_
bool getDoubleDCOPEnabled() const
AnalysisManager & analysisManager_
bool completeHomotopyStep(Loader::NonlinearEquationLoader &loader, const std::vector< std::string > ¶mNames, const std::vector< double > ¶mVals, Linear::Vector *solnVecPtr)
int getRestartDataSize(bool pack)
virtual bool getLimiterFlag()
bool failHomotopyStep(Loader::NonlinearEquationLoader &loader)
TimeIntg::WorkingIntegrationMethod & getWorkingIntegrationMethod()
double nextRestartSaveTime_
bool acopFlag
Analysis ACOP flag.
double pdt
Time integrator partial time deriviative.
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)
bool setNextSolVectorPtr(Linear::Vector *solVecPtr)
bool dotOpSpecified_
Set if .OP.
int getIntegrationMethod() const
Linear::Vector * currSolutionPtr
bool registerMORFactory(const std::string &netlist_filename, IO::PkgOptionsMgr &options_manager, AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager, Topo::Topology &topology)
Util::Timer xyceTranTimerPtr_
bool getDCSweepFlag() const
const Analysis::SweepVector & getStepSweepVector() 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)
double startingTimeStep
Step error control starting time step.
int getDoubleDCOPStep() const
bool evalTransientModelState(TimeIntg::StepErrorControl &step_error_control, Loader::Loader &loader, double t, Linear::Vector *SolVectorPtr, Linear::Vector *StaVectorPtr, Linear::Vector *StoVectorPtr)
Linear::Vector * nextStateDerivPtr
double getTotalJacobianLoadTime() const
bool getStoreVarData(const int &gid, std::vector< double > &varData)
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.
double currTimeStep
Step error control current time step.
Linear::Matrix * dQdxMatrixPtr
AnalysisBase * primaryAnalysisObject_
.TRAN, .AC, .HB, ...
Linear::Vector * flagSolutionPtr
virtual bool getDCOPFlag() const =0
bool setSaveOptions(const Util::OptionBlock &OB)
bool dcsweepFlag
Analysis.
const char * getName() const
Linear::Vector * daeBVectorPtr
double getInitialTime() const
bool printLoopInfo(int start, int finish)
void computeDivDiffsBlock(const std::list< IndexPair > &solGIDList, const std::list< IndexPair > &staGIDList)
int currentOrder
Time integrator order.