45 #ifndef Xyce_N_ANP_OutputMgrAdapter_h
46 #define Xyce_N_ANP_OutputMgrAdapter_h
48 #include <Teuchos_SerialDenseMatrix.hpp>
53 #include <N_LAS_fwd.h>
54 #include <N_PDS_fwd.h>
55 #include <N_TOP_fwd.h>
56 #include <N_UTL_fwd.h>
58 #include <N_UTL_Listener.h>
60 #include <N_LAS_BlockVector.h>
76 Parallel::Machine comm,
77 IO::OutputMgr & output_manager,
78 IO::Measure::Manager & measure_manager,
79 IO::FourierMgr & fourier_manager,
80 IO::ObjectiveManager & objective_manager,
81 IO::InitialConditionsManager & initial_conditions_manager,
83 Topo::Topology & topology,
84 IO::RestartMgr & restart_manager);
148 double time, Linear::Vector & currSolutionPtr, Linear::Vector & stateVecPtr, Linear::Vector & storeVecPtr,
149 Linear::Vector & lead_current_vector,
150 Linear::Vector & junction_voltage_vector,
151 std::vector<double> & objectiveVec_,
152 std::vector<double> & dOdpVec_,
153 std::vector<double> & dOdpAdjVec_,
154 std::vector<double> & scaled_dOdpVec_,
155 std::vector<double> & scaled_dOdpAdjVec_,
156 bool skipPrintLineOutput =
false);
160 Linear::Vector & currSolutionPtr, Linear::Vector & stateVecPtr, Linear::Vector & storeVecPtr,
161 Linear::Vector &lead_current_vector,
162 Linear::Vector &junction_voltage_vector,
163 std::vector<double> & objectiveVec_,
164 std::vector<double> & dOdpVec_,
165 std::vector<double> & dOdpAdjVec_,
166 std::vector<double> & scaled_dOdpVec_,
167 std::vector<double> & scaled_dOdpAdjVec_);
169 void outputResult(
const Linear::Vector &currSolutionPtr,
170 const Linear::Vector &currStatePtr,
171 const Linear::Vector &currStorePtr,
172 const Linear::Vector &lead_current_vector,
173 const Linear::Vector &junction_voltage_vector );
181 void outputDCOP(
const Linear::Vector &solution);
183 void outputMPDE(
double time,
const std::vector<double> &fast_time_points,
const Linear::BlockVector &solution_vector);
186 const std::vector< double > & timePoints,
const std::vector< double > & freqPoints,
187 const Linear::BlockVector & timeDomainSolnVec,
const Linear::BlockVector & freqDomainSolnVecReal,
188 const Linear::BlockVector & freqDomainSolnVecImaginary,
const Linear::BlockVector & timeDomainStoreVec,
189 const Linear::BlockVector & freqDomainStoreVecReal,
const Linear::BlockVector & freqDomainStoreVecImaginary,
190 const Linear::BlockVector & timeDomainLeadCurrentVec,
const Linear::BlockVector & freqDomainLeadCurrentVecReal,
191 const Linear::BlockVector & freqDomainLeadCurrentVecImaginary,
const Linear::BlockVector & timeDomainJunctionVoltageVec,
192 const Linear::BlockVector & freqDomainJunctionVoltageVecReal,
const Linear::BlockVector & freqDomainJunctionVoltageVecImaginary );
194 void outputAC(
double freq,
const Linear::Vector & solnVecRealPtr,
const Linear::Vector & solnVecImaginaryPtr);
197 double freq,
double totalOutputNoiseDens_,
double totalInputNoiseDens_,
198 const std::vector<Xyce::Analysis::NoiseData*> & noiseDataVec_);
200 void outputMORTF(
bool origSys,
double freq,
const Teuchos::SerialDenseMatrix<
int, std::complex<double> >& H );
205 const Teuchos::SerialDenseMatrix<int, double>& Ghat,
const Teuchos::SerialDenseMatrix<int, double>& Chat,
206 const Teuchos::SerialDenseMatrix<int, double>& Bhat,
const Teuchos::SerialDenseMatrix<int, double>& Lhat );
209 const Linear::Matrix& Ghat,
const Linear::Matrix& Chat,
210 const Teuchos::SerialDenseMatrix<int, double>& Bhat,
211 const Teuchos::SerialDenseMatrix<int, double>& Lhat );
217 void outputHomotopy(
const std::vector<std::string> & paramNames,
const std::vector<double> & paramVals, Linear::Vector & solnVecPtr );
252 virtual void outputMPDE(
double time,
const std::vector<double> &fast_time_points,
const Linear::Vector *solution_vector)
265 virtual void outputMPDE(
double time,
const std::vector<double> &fast_time_points,
const Linear::Vector *solution_vector)
267 if (dynamic_cast<const Linear::BlockVector *>(solution_vector))
268 adapter_.
outputMPDE(time, fast_time_points, dynamic_cast<const Linear::BlockVector &>(*solution_vector));
275 #endif // Xyce_N_ANP_OutputMgrAdapter_h
MPDEOutputAdapter(OutputMgrAdapter &adapter)
IO::OutputMgr & getOutputManager()
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)
void setDCAnalysisMaxSteps(int num)
int dcAnalysisStepNumber_
IO::ObjectiveManager & objectiveManager_
int stepAnalysisStepNumber_
void setDCAnalysisStepNumber(int num)
IO::InitialConditionsManager & initialConditionsManager_
IO::RestartMgr & restartManager_
void outputAC(double freq, const Linear::Vector &solnVecRealPtr, const Linear::Vector &solnVecImaginaryPtr)
OutputAdapter(OutputMgrAdapter &adapter)
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_)
int getStepAnalysisStepNumber() const
const Analysis::SweepVector & getDCSweepVector() const
int getDCAnalysisMaxSteps() const
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
virtual void outputMPDE(double time, const std::vector< double > &fast_time_points, const Linear::Vector *solution_vector)
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_
OutputMgrAdapter & adapter_
void addOutputResults(const Util::OptionBlock &option_block)
virtual void outputMPDE(double time, const std::vector< double > &fast_time_points, const Linear::Vector *solution_vector)
IO::InitialConditionsManager & getInitialConditionsManager()
double getInitialOutputInterval() const
virtual ~OutputMgrAdapter()
Topo::Topology & topology_
int getDCAnalysisStepNumber() const
IO::OutputMOR * outputMOR_
const Analysis::SweepVector & getStepSweepVector() const
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_)
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)