38 #include <Xyce_config.h>
53 #include <N_LOA_Loader.h>
54 #include <N_MPDE_Manager.h>
55 #include <N_IO_CmdParse.h>
57 #include <Teuchos_RefCountPtr.hpp>
58 using Teuchos::RefCountPtr;
66 dcLoopInitialized_(false),
83 #ifdef Xyce_DEBUG_ANALYSIS
86 Xyce::dout() << std::endl << section_divider << std::endl;
87 Xyce::dout() <<
"DCSweep::setDCAnalysisParams" << std::endl;
91 Util::ParameterList::const_iterator it_tp;
92 Util::ParameterList::const_iterator it_param;
93 Util::ParameterList::const_iterator it_type;
94 Util::ParameterList::const_iterator first = paramsBlock.getParams().begin();
95 Util::ParameterList::const_iterator last = paramsBlock.getParams().end();
100 #ifdef Xyce_DEBUG_ANALYSIS
103 for (it_tp = first; it_tp != last; ++it_tp)
105 Xyce::dout() << it_tp->uTag() ;
106 Xyce::dout() <<
"\t";
107 if (it_tp->uTag() ==
"PARAM" || it_tp->uTag() ==
"TYPE")
109 Xyce::dout() << it_tp->stringValue();
113 Xyce::dout() << it_tp->getImmutableValue<
double>();
115 Xyce::dout() << std::endl;
120 for (it_tp = first; it_tp != last; ++it_tp)
122 if (it_tp->uTag() ==
"TYPE")
125 sp.
type = it_tp->stringValue();
128 if (it_tp->uTag() ==
"PARAM")
131 sp.
name = it_tp->stringValue();
137 if (sp.
type ==
"LIN")
139 sp.
startVal = it_tp->getImmutableValue<
double>(); ++it_tp;
140 sp.
stopVal = it_tp->getImmutableValue<
double>(); ++it_tp;
141 sp.
stepVal = it_tp->getImmutableValue<
double>(); ++it_tp;
143 else if (sp.
type ==
"DEC" || sp.
type ==
"OCT")
145 sp.
startVal = it_tp->getImmutableValue<
double>(); ++it_tp;
146 sp.
stopVal = it_tp->getImmutableValue<
double>(); ++it_tp;
147 sp.
numSteps = it_tp->getImmutableValue<
int>(); ++it_tp;
149 else if (sp.
type ==
"LIST")
151 for (;it_tp!=last;++it_tp)
153 sp.
valList.push_back(it_tp->getImmutableValue<
double>());
158 Report::DevelFatal().in(
"DCSweep::setDCParams") <<
"Unsupported DC type";
179 os <<
"\tFailed DC sweep steps:\t\t" << std::endl;
183 os <<
"\t\tDC Step # " << *iter << std::endl;
216 bool bsuccess =
true;
233 bool bsuccess =
true;
246 #ifdef Xyce_DEBUG_ANALYSIS
249 Xyce::dout() << std::endl << std::endl
250 << Xyce::subsection_divider << std::endl
251 <<
"DCSweep::run()" << std::endl;
322 while (currentStep < finalStep)
326 #ifdef Xyce_VERBOSE_TIME
380 bool bsuccess =
true;
405 #ifdef Xyce_DEBUG_ANALYSIS
406 #ifdef Xyce_DEBUG_TIME
451 bool bsuccess =
true;
453 #ifdef Xyce_DEBUG_ANALYSIS
454 Xyce::dout() <<
"Calling DCSweep::finish() outputs!" << std::endl;
568 std::vector<double> timePoints, freqPoints;
569 Teuchos::RefCountPtr<N_LAS_BlockVector> timeDomainSolnVec;
570 Teuchos::RefCountPtr<N_LAS_BlockVector> freqDomainSolnVecReal;
571 Teuchos::RefCountPtr<N_LAS_BlockVector> freqDomainSolnVecImaginary;
572 Teuchos::RefCountPtr<N_LAS_BlockVector> timeDomainStoreVec;
573 Teuchos::RefCountPtr<N_LAS_BlockVector> freqDomainStoreVecReal;
574 Teuchos::RefCountPtr<N_LAS_BlockVector> freqDomainStoreVecImaginary;
583 freqDomainSolnVecReal,
584 freqDomainSolnVecImaginary,
586 freqDomainStoreVecReal,
587 freqDomainStoreVecImaginary
594 *freqDomainSolnVecReal,
595 *freqDomainSolnVecImaginary,
597 *freqDomainStoreVecReal,
598 *freqDomainStoreVecImaginary
615 #ifdef Xyce_VERBOSE_TIME
616 lout() << std::endl << std::endl
618 << std::endl << std::endl;
632 if (start == 0 && finish == 0)