45 #ifndef Xyce_N_ANP_HB_h
46 #define Xyce_N_ANP_HB_h
50 #include <Teuchos_SerialDenseMatrix.hpp>
51 #include <Teuchos_RCP.hpp>
55 #include <N_LAS_fwd.h>
56 #include <N_TOP_fwd.h>
61 #include <N_UTL_DFTInterfaceDecl.hpp>
62 #include <N_UTL_FFTInterface.hpp>
63 #include <N_UTL_Listener.h>
64 #include <N_UTL_OptionBlock.h>
65 #include <N_MPDE_Discretization.h>
77 class HB :
public AnalysisBase,
public Util::ListenerAutoSubscribe<StepEvent>
82 Linear::System & linear_system,
86 Linear::Builder & builder,
87 Topo::Topology & topology,
88 IO::InitialConditionsManager & initial_conditions_manager,
89 IO::RestartMgr & restart_manager);
114 bool setHBLinSol(
const Util::OptionBlock & option_block, Linear::Builder &builder);
117 bool setLinSol(
const Util::OptionBlock & option_block);
142 std::vector<double> & timePoints,
143 std::vector<double> & freqPoints,
144 Teuchos::RCP<Linear::BlockVector> & timeDomainSolnVec,
145 Teuchos::RCP<Linear::BlockVector> & freqDomainSolnVecReal,
146 Teuchos::RCP<Linear::BlockVector> & freqDomainSolnVecImaginary,
147 Teuchos::RCP<Linear::BlockVector> & timeDomainStoreVec,
148 Teuchos::RCP<Linear::BlockVector> & freqDomainStoreVecReal,
149 Teuchos::RCP<Linear::BlockVector> & freqDomainStoreVecImaginary,
150 Teuchos::RCP<Linear::BlockVector> & timeDomainLeadCurrentVec,
151 Teuchos::RCP<Linear::BlockVector> & freqDomainLeadCurrentVecReal,
152 Teuchos::RCP<Linear::BlockVector> & freqDomainLeadCurrentVecImaginary,
153 Teuchos::RCP<Linear::BlockVector> & timeDomainJunctionVoltageVec,
154 Teuchos::RCP<Linear::BlockVector> & freqDomainJunctionVoltageVecReal,
155 Teuchos::RCP<Linear::BlockVector> & freqDomainJunctionVoltageVecImaginary ) ;
176 bool updateIFT_( std::vector<double>& tPoints);
281 #endif // Xyce_N_ANP_HB_h
void accumulateStatistics_(AnalysisBase &analysis)
Util::OptionBlock saved_lsHBOB_
Linear::HBPrecondFactory * precFactory_
AnalysisBase * currentAnalysisObject_
Teuchos::RCP< Linear::BlockVector > HBICQVectorPtr_
HB initial Q condition.
Teuchos::RCP< N_MPDE_Discretization > mpdeDiscPtr_
Linear::Builder & builder_
Teuchos::SerialDenseMatrix< int, double > dftMatrix_
std::vector< double > freqs_
Problem Size.
Teuchos::RCP< Linear::Vector > dcOpStateVecPtr_
std::vector< int > numFreqs_
bool startUpPeriodsGiven_
IO::InitialConditionsManager & initialConditionsManager_
Pure virtual class to augment a linear system.
std::vector< double > freqPoints_
bool isTransient_
Current analysis state flags.
bool setAnalysisParams(const Util::OptionBlock &option_block)
std::vector< double > iftOutData_
Teuchos::RCP< Linear::Vector > dcOpSolVecPtr_
bool isAnalysis(int analysis_type) const
std::vector< double > timeSteps_
bool isPaused
Flag to indicate of the simulation is paused.
AnalysisManager & analysisManager_
std::vector< double > ftInData_
Teuchos::SerialDenseMatrix< int, double > idftMatrix_
N_PDS_Manager * pdsMgrPtr_
std::vector< double > ftOutData_
Teuchos::RCP< Linear::HBBuilder > hbBuilderPtr_
HB loader, builder, system, and DFT.
bool updateIFT_(std::vector< double > &tPoints)
Device::DeviceMgr & deviceManager_
std::vector< Teuchos::RCP< Linear::Vector > > goodStateVec_
Linear::System * hbLinearSystem_
bool interpolateIC(double initial_time)
bool runStartupPeriods(const TimeIntg::TIAParams &tia_params)
bool setLinSol(const Util::OptionBlock &option_block)
void prepareHBOutput(Linear::Vector &solnVecPtr, std::vector< double > &timePoints, std::vector< double > &freqPoints, Teuchos::RCP< Linear::BlockVector > &timeDomainSolnVec, Teuchos::RCP< Linear::BlockVector > &freqDomainSolnVecReal, Teuchos::RCP< Linear::BlockVector > &freqDomainSolnVecImaginary, Teuchos::RCP< Linear::BlockVector > &timeDomainStoreVec, Teuchos::RCP< Linear::BlockVector > &freqDomainStoreVecReal, Teuchos::RCP< Linear::BlockVector > &freqDomainStoreVecImaginary, Teuchos::RCP< Linear::BlockVector > &timeDomainLeadCurrentVec, Teuchos::RCP< Linear::BlockVector > &freqDomainLeadCurrentVecReal, Teuchos::RCP< Linear::BlockVector > &freqDomainLeadCurrentVecImaginary, Teuchos::RCP< Linear::BlockVector > &timeDomainJunctionVoltageVec, Teuchos::RCP< Linear::BlockVector > &freqDomainJunctionVoltageVecReal, Teuchos::RCP< Linear::BlockVector > &freqDomainJunctionVoltageVecImaginary)
std::vector< Teuchos::RCP< Linear::Vector > > goodStoreVec_
Teuchos::RCP< Linear::Vector > dcOpStoreVecPtr_
Teuchos::RCP< Linear::BlockVector > HBICVectorPtr_
bool doProcessFailedStep()
int getDoubleDCOPStep() const
bool resetForStepCalledBefore_
Teuchos::RCP< Linear::BlockVector > HBICStoreVectorPtr_
HB initial store condition.
std::vector< int > numPosFreqs
The FactoryBlock contains parameters needed by the analysis creation functions.
Teuchos::RCP< N_UTL_DFTInterfaceDecl< std::vector< double > > > dftInterface_
int startUpPeriods_
Periodicity Information.
TimeIntg::TIAParams & getTIAParams()
bool runTol(TimeIntg::TIAParams &tia_params)
N_MPDE_Discretization::Type fastTimeDisc_
Teuchos::RCP< Linear::Vector > dcOpQVecPtr_
Teuchos::RCP< Linear::BlockVector > HBICVectorFreqPtr_
const TimeIntg::TIAParams & getTIAParams() const
Util::OptionBlock saved_lsOB_
std::vector< double > iftInData_
Loader::HBLoader * hbLoaderPtr_
Topo::Topology & topology_
HB(AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager, Loader::Loader &loader, Device::DeviceMgr &device_manager, Linear::Builder &builder, Topo::Topology &topology, IO::InitialConditionsManager &initial_conditions_manager, IO::RestartMgr &restart_manager)
Teuchos::RCP< Linear::BlockVector > HBICStateVectorPtr_
HB initial state condition.
std::vector< double > goodTimePoints_
bool processSuccessfulDCOP()
Linear::System & linearSystem_
std::vector< Teuchos::RCP< Linear::Vector > > goodQVec_
IO::RestartMgr & restartManager_
bool doProcessSuccessfulStep()
bool setHBIntParams(const Util::OptionBlock &option_block)
bool runTransientIC(const TimeIntg::TIAParams &tia_params)
Teuchos::RCP< N_UTL_FFTInterface< std::vector< double > > > ftInterface_
std::vector< Teuchos::RCP< Linear::Vector > > goodSolutionVec_
bool setHBLinSol(const Util::OptionBlock &option_block, Linear::Builder &builder)
Nonlinear::Manager & nonlinearManager_
double endTRANtime
Timing/loop count info.
bool finalVerboseOutput()
std::vector< double > fastTimes_
void notify(const StepEvent &event)
bool registerHBFactory(FactoryBlock &factory_block)