38 #include <Xyce_config.h>
44 #include <N_IO_CmdParse.h>
45 #include <N_IO_OutputMgr.h>
46 #include <N_IO_PkgOptionsMgr.h>
48 #include <N_MPDE_Manager.h>
66 Linear::System & linear_system,
69 Linear::Builder & builder,
70 Topo::Topology & topology)
74 loader_(analysis_manager.getLoader()),
267 class MPDEFactory :
public Factory<MPDE>
297 Linear::System & linear_system,
300 Linear::Builder & builder,
301 Topo::Topology & topology)
311 virtual ~MPDEFactory()
355 void setMPDEAnalysisOptionBlock(
const Util::OptionBlock &option_block)
375 void setMPDETimeIntegratorOptionBlock(
const Util::OptionBlock &option_block)
395 void setMPDEIntOptionBlock(
const Util::OptionBlock &option_block)
416 struct MPDEIntOptionsReg :
public IO::PkgOptionsReg
419 MPDEFactory & factory )
423 bool operator()(
const Util::OptionBlock &option_block)
425 factory_.setMPDEIntOptionBlock(option_block);
434 struct MPDETimeIntegratorOptionsReg :
public IO::PkgOptionsReg
436 MPDETimeIntegratorOptionsReg(
437 MPDEFactory & factory )
441 bool operator()(
const Util::OptionBlock &option_block)
443 factory_.setMPDETimeIntegratorOptionBlock(option_block);
452 struct MPDEAnalysisReg :
public IO::PkgOptionsReg
455 MPDEFactory & factory )
459 bool operator()(
const Util::OptionBlock &option_block)
461 factory_.setMPDEAnalysisOptionBlock(option_block);
462 factory_.deviceManager_.setBlockAnalysisFlag(
true);
477 const std::string & netlist_filename,
478 IO::PkgOptionsMgr & options_manager,
480 Linear::System & linear_system,
483 Linear::Builder & builder,
484 Topo::Topology & topology)
486 MPDEFactory *factory =
new MPDEFactory(analysis_manager, linear_system, nonlinear_manager, device_manager, builder, topology);
490 options_manager.submitRegistration(
"MPDE", netlist_filename,
new MPDEAnalysisReg(*factory));
491 options_manager.submitRegistration(
"MPDEINT", netlist_filename,
new MPDEIntOptionsReg(*factory));
492 options_manager.submitRegistration(
"TIMEINT-MPDE", netlist_filename,
new MPDETimeIntegratorOptionsReg(*factory));
bool doProcessSuccessfulStep()
Pure virtual class to augment a linear system.
MPDE(AnalysisManager &analysis_manager, Linear::System &linear_system, Nonlinear::Manager &nonlinear_manager, Device::DeviceMgr &device_manager, Linear::Builder &builder, Topo::Topology &topology)
bool resetForStepAnalysis()
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)
Device::DeviceMgr & deviceManager_
Util::ListenerAutoSubscribe< StepEvent > StepEventListener
void notify(const StepEvent &event)
Topo::Topology & topology_
bool finalVerboseOutput()
Util::OptionBlock mpdeIntOptionBlock_
Nonlinear::Manager & nonlinearManager_
Linear::System & linearSystem_
Topo::Topology & topology_
Util::OptionBlock mpdeTimeIntegratorOptionBlock_
Linear::System & linearSystem_
Util::OptionBlock timeIntegratorOptionBlock_
Linear::Builder & builder_
Nonlinear::Manager & nonlinearManager_
void addAnalysisFactory(Factory< void > *factory)
const TimeIntg::TIAParams & getTIAParams() const
The analysis factory template defines an interface for analysis type testing and analysis creation...
bool processSuccessfulDCOP()
int getIntegrationMethod() const
AnalysisManager & analysisManager_
Util::OptionBlock mpdeAnalysisOptionBlock_
N_MPDE_Manager * mpdeManager_
bool doProcessFailedStep()