45 #include <Xyce_config.h>
52 #include <N_IO_FourierMgr.h>
53 #include <N_IO_InitialConditions.h>
54 #include <N_IO_MeasureManager.h>
55 #include <N_IO_Objective.h>
56 #include <N_IO_OutputMgr.h>
57 #include <N_IO_OutputROM.h>
58 #include <N_IO_OutputMOR.h>
59 #include <N_IO_OutputResults.h>
60 #include <N_IO_OutputResponse.h>
61 #include <N_IO_RestartMgr.h>
62 #include <N_TOP_Topology.h>
77 Parallel::Machine comm,
78 IO::OutputMgr & output_manager,
79 IO::Measure::Manager & measure_manager,
80 IO::FourierMgr & fourier_manager,
81 IO::ObjectiveManager & objective_manager,
82 IO::InitialConditionsManager & initial_conditions_manager,
84 Topo::Topology & topology,
85 IO::RestartMgr & restart_manager)
87 outputManager_(output_manager),
88 measureManager_(measure_manager),
89 fourierManager_(fourier_manager),
90 objectiveManager_(objective_manager),
91 initialConditionsManager_(initial_conditions_manager),
94 restartManager_(restart_manager),
100 stepAnalysisStepNumber_(0),
101 stepAnalysisMaxSteps_(0),
102 dcAnalysisStepNumber_(0),
103 dcAnalysisMaxSteps_(0)
162 parallel_communicator,
175 Linear::Vector & currSolutionPtr,
176 Linear::Vector & stateVecPtr,
177 Linear::Vector & storeVecPtr,
178 Linear::Vector & lead_current_vector,
179 Linear::Vector & junction_voltage_vector,
180 std::vector<double> & objectiveVec_,
181 std::vector<double> & dOdpVec_,
182 std::vector<double> & dOdpAdjVec_,
183 std::vector<double> & scaled_dOdpVec_,
184 std::vector<double> & scaled_dOdpAdjVec_,
185 bool skipPrintLineOutput)
194 currSolutionPtr, stateVecPtr, storeVecPtr, lead_current_vector, junction_voltage_vector, objectiveVec_,
195 dOdpVec_, dOdpAdjVec_, scaled_dOdpVec_, scaled_dOdpAdjVec_,
196 skipPrintLineOutput);
201 &currSolutionPtr, 0, &stateVecPtr, &storeVecPtr,
202 &objectiveVec_, &dOdpVec_, &dOdpAdjVec_, &scaled_dOdpVec_, &scaled_dOdpAdjVec_);
215 Linear::Vector & currSolutionPtr,
216 Linear::Vector & stateVecPtr,
217 Linear::Vector & storeVecPtr,
218 Linear::Vector & lead_current_vector,
219 Linear::Vector & junction_voltage_vector,
220 std::vector<double> & objectiveVec_,
221 std::vector<double> & dOdpVec_,
222 std::vector<double> & dOdpAdjVec_,
223 std::vector<double> & scaled_dOdpVec_,
224 std::vector<double> & scaled_dOdpAdjVec_)
232 currSolutionPtr, stateVecPtr, storeVecPtr, lead_current_vector, junction_voltage_vector, objectiveVec_,
233 dOdpVec_, dOdpAdjVec_, scaled_dOdpVec_, scaled_dOdpAdjVec_);
242 if (dcSweepVector_.size() > 0)
243 arg1 = dcSweepVector_[0].currentVal;
244 if (dcSweepVector_.size() > 1)
245 arg2 = dcSweepVector_[1].currentVal;
253 const Linear::Vector & currSolutionPtr,
254 const Linear::Vector & currStatePtr,
255 const Linear::Vector & currStorePtr,
256 const Linear::Vector & lead_current_vector,
257 const Linear::Vector & junction_voltage_vector)
281 Linear::Vector & solnVec,
282 Linear::Vector & flagVec)
289 const Linear::Vector & solution)
298 const std::vector<double> & fast_time_points,
299 const Linear::BlockVector & solution_vector)
306 const std::vector< double > & timePoints,
307 const std::vector< double > & freqPoints,
308 const Linear::BlockVector & timeDomainSolutionVec,
309 const Linear::BlockVector & freqDomainSolutionVecReal,
310 const Linear::BlockVector & freqDomainSolutionVecImaginary,
311 const Linear::BlockVector & timeDomainStoreVec,
312 const Linear::BlockVector & freqDomainStoreVecReal,
313 const Linear::BlockVector & freqDomainStoreVecImaginary,
314 const Linear::BlockVector & timeDomainLeadCurrentVec,
315 const Linear::BlockVector & freqDomainLeadCurrentVecReal,
316 const Linear::BlockVector & freqDomainLeadCurrentVecImaginary,
317 const Linear::BlockVector & timeDomainJunctionVoltageVec,
318 const Linear::BlockVector & freqDomainJunctionVoltageVecReal,
319 const Linear::BlockVector & freqDomainJunctionVoltageVecImaginary )
325 timePoints, freqPoints,
326 timeDomainSolutionVec, freqDomainSolutionVecReal, freqDomainSolutionVecImaginary,
327 timeDomainStoreVec, freqDomainStoreVecReal, freqDomainStoreVecImaginary,
328 timeDomainLeadCurrentVec, freqDomainLeadCurrentVecReal, freqDomainLeadCurrentVecImaginary,
329 timeDomainJunctionVoltageVec, freqDomainJunctionVoltageVecReal, freqDomainJunctionVoltageVecImaginary );
335 const Linear::Vector & solnVecRealPtr,
336 const Linear::Vector & solnVecImaginaryPtr)
346 double totalOutputNoiseDens_,
double totalInputNoiseDens_,
347 const std::vector<Xyce::Analysis::NoiseData*> & noiseDataVec_)
351 totalOutputNoiseDens_, totalInputNoiseDens_, noiseDataVec_);
358 const Teuchos::SerialDenseMatrix<
int, std::complex<double> >& H )
377 const Teuchos::SerialDenseMatrix<int, double> & Ghat,
378 const Teuchos::SerialDenseMatrix<int, double> & Chat,
379 const Teuchos::SerialDenseMatrix<int, double> & Bhat,
380 const Teuchos::SerialDenseMatrix<int, double> & Lhat )
387 const Linear::Matrix & Ghat,
388 const Linear::Matrix & Chat,
389 const Teuchos::SerialDenseMatrix<int, double> & Bhat,
390 const Teuchos::SerialDenseMatrix<int, double> & Lhat )
401 const IO::IntervalVector &
409 const std::vector<std::string> & paramNames,
410 const std::vector<double> & paramVals,
411 Linear::Vector & solnVecPtr )
416 const Xyce::NodeNameMap &
419 return topology_.getSolutionNodeNameMap();
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)
int dcAnalysisStepNumber_
IO::ObjectiveManager & objectiveManager_
int stepAnalysisStepNumber_
IO::InitialConditionsManager & initialConditionsManager_
IO::RestartMgr & restartManager_
void outputAC(double freq, const Linear::Vector &solnVecRealPtr, const Linear::Vector &solnVecImaginaryPtr)
Pure virtual class to augment a linear system.
IO::OutputResponse * outputResponse_
void dcOutput(int dcStepNumber, Linear::Vector &currSolutionPtr, Linear::Vector &stateVecPtr, Linear::Vector &storeVecPtr, Linear::Vector &lead_current_vector, Linear::Vector &junction_voltage_vector, std::vector< double > &objectiveVec_, std::vector< double > &dOdpVec_, std::vector< double > &dOdpAdjVec_, std::vector< double > &scaled_dOdpVec_, std::vector< double > &scaled_dOdpAdjVec_)
Topo::Topology & topology_
IO::OutputResults * outputResults_
bool setupInitialConditions(Linear::Vector &solnVec, Linear::Vector &flagVec)
void outputHomotopy(const std::vector< std::string > ¶mNames, const std::vector< double > ¶mVals, Linear::Vector &solnVecPtr)
void setStepSweepVector(const Analysis::SweepVector &sweep_vector)
void dumpRestart(Parallel::Communicator ¶llel_communicator, Analysis::AnalysisManager &analysis_manager, double current_time) const
Analysis::SweepVector dcSweepVector_
void outputMPDE(double time, const std::vector< double > &fast_time_points, const Linear::BlockVector &solution_vector)
OutputMgrAdapter(Parallel::Machine comm, IO::OutputMgr &output_manager, IO::Measure::Manager &measure_manager, IO::FourierMgr &fourier_manager, IO::ObjectiveManager &objective_manager, IO::InitialConditionsManager &initial_conditions_manager, Device::DeviceMgr &device_manager, Topo::Topology &topology, IO::RestartMgr &restart_manager)
const Xyce::NodeNameMap & getAllNodes() const
Device::DeviceMgr & deviceManager_
void notify(const StepEvent &event)
IO::OutputMgr & outputManager_
IO::FourierMgr & fourierManager_
void setDCSweepVector(const Analysis::SweepVector &sweep_vector)
int stepAnalysisMaxSteps_
void tranOutput(double time, Linear::Vector &currSolutionPtr, Linear::Vector &stateVecPtr, Linear::Vector &storeVecPtr, Linear::Vector &lead_current_vector, Linear::Vector &junction_voltage_vector, std::vector< double > &objectiveVec_, std::vector< double > &dOdpVec_, std::vector< double > &dOdpAdjVec_, std::vector< double > &scaled_dOdpVec_, std::vector< double > &scaled_dOdpAdjVec_, bool skipPrintLineOutput=false)
Device::DeviceMgr & deviceManager_
void outputMORTF(bool origSys, double freq, const Teuchos::SerialDenseMatrix< int, std::complex< double > > &H)
Analysis::SweepVector stepSweepVector_
void addOutputResults(const Util::OptionBlock &option_block)
double getInitialOutputInterval() const
virtual ~OutputMgrAdapter()
Topo::Topology & topology_
IO::OutputMOR * outputMOR_
std::vector< SweepParam > SweepVector
const IO::IntervalVector & getOutputIntervals() const
void outputROM(const Teuchos::SerialDenseMatrix< int, double > &Ghat, const Teuchos::SerialDenseMatrix< int, double > &Chat, const Teuchos::SerialDenseMatrix< int, double > &Bhat, const Teuchos::SerialDenseMatrix< int, double > &Lhat)
void outputNoise(double freq, double totalOutputNoiseDens_, double totalInputNoiseDens_, const std::vector< Xyce::Analysis::NoiseData * > &noiseDataVec_)
double getParamAndReduce(const std::string &name) const
void outputDCOP(const Linear::Vector &solution)
void outputHB(const std::vector< double > &timePoints, const std::vector< double > &freqPoints, const Linear::BlockVector &timeDomainSolnVec, const Linear::BlockVector &freqDomainSolnVecReal, const Linear::BlockVector &freqDomainSolnVecImaginary, const Linear::BlockVector &timeDomainStoreVec, const Linear::BlockVector &freqDomainStoreVecReal, const Linear::BlockVector &freqDomainStoreVecImaginary, const Linear::BlockVector &timeDomainLeadCurrentVec, const Linear::BlockVector &freqDomainLeadCurrentVecReal, const Linear::BlockVector &freqDomainLeadCurrentVecImaginary, const Linear::BlockVector &timeDomainJunctionVoltageVec, const Linear::BlockVector &freqDomainJunctionVoltageVecReal, const Linear::BlockVector &freqDomainJunctionVoltageVecImaginary)
IO::Measure::Manager & measureManager_
void addOutputResponse(const Util::OptionBlock &option_block)