47 #include <Xyce_config.h>
61 #include <N_ERH_ErrorMgr.h>
62 #include <N_IO_CmdParse.h>
63 #include <N_LOA_Loader.h>
64 #include <N_PDS_Comm.h>
65 #include <N_PDS_Manager.h>
70 #include <N_UTL_BreakPoint.h>
71 #include <N_UTL_Functors.h>
72 #include <N_UTL_SaveIOSState.h>
73 #include <N_UTL_Xyce.h>
89 startingTimeStep(1.0e-10),
90 currentTimeStep(1.0e-10),
91 lastAttemptedTimeStep(1.0e-10),
92 lastTimeStep(1.0e-10),
95 maxTimeStepUser(1.0e+99),
97 savedTimeStep(1.0e-10),
104 currentTimeStepRatio(0.0),
105 currentTimeStepSum(0.0),
106 lastTimeStepRatio(0.0),
107 lastTimeStepSum(0.0),
108 newtonConvergenceStatus(-1),
110 numberSuccessiveFailures(0),
111 stepAttemptStatus(true),
112 previousCallStepSuccessful(false),
114 initializeFlag_(false),
115 minStepPrecisionFac_(10.0),
116 newtonStepReduction_(0.25),
117 restartTimeStepScale_(0.005),
120 anaManager_(anaManager),
158 h0_max_factor_(0.005),
162 Tkm1_Tk_safety_(2.0),
163 Tkp1_Tk_safety_(0.5),
164 #ifndef Xyce_USE_Q_NORM
246 std::set<N_UTL_BreakPoint>::iterator lastBP =
breakPoints_.end();
378 #ifdef Xyce_DEBUG_TIME
381 Xyce::dout() << std::endl;
382 Xyce::dout() << Xyce::section_divider << std::endl;
384 " N_TIA_StepErrorControl::resetAll" << std::endl;
386 " before initializeBreakPoints " << std::endl;
388 Xyce::dout() <<
" currentPauseBP = " <<
currentPauseBP->value() << std::endl;
391 #endif // Xyce_DEBUG_TIME
395 #ifdef Xyce_DEBUG_TIME
399 " after initializeBreakPoints " << std::endl;
401 Xyce::dout() <<
" currentPauseBP = " <<
currentPauseBP->value() << std::endl;
403 #endif // Xyce_DEBUG_TIME
408 std::set<N_UTL_BreakPoint>::iterator lastBP =
breakPoints_.end();
416 #ifdef Xyce_DEBUG_TIME
420 " after updatePauseTime & setBreakPoint" << std::endl;
422 Xyce::dout() <<
" currentPauseBP = " <<
currentPauseBP->value() << std::endl;
423 Xyce::dout() << Xyce::section_divider << std::endl;
425 #endif // Xyce_DEBUG_TIME
447 #ifdef Xyce_VERBOSE_TIME
448 const std::string crMsg =
"\n";
449 const std::string startMsg = (
"* Initial Time Value:\t");
450 const std::string stopMsg = (
" * Ending Time Value:\t");
451 const std::string secondsMsg = (
" secs");
452 const std::string timeToStopMsg = (
" * Time to Stop Value:\t");
454 Xyce::dout() << crMsg + startMsg << currentTime << secondsMsg << std::endl
455 << stopMsg <<
stopTime << secondsMsg << std::endl
456 << timeToStopMsg << time_to_stop << secondsMsg << std::endl;
489 #ifdef Xyce_VERBOSE_TIME
490 const std::string stepMsg = (
" * Initial Step Size: \t");
492 Xyce::dout() << stepMsg <<
494 #endif // Xyce_VERBOSE_TIME
531 double diffStopTime(0.0);
535 std::set<N_UTL_BreakPoint>::iterator itBP;
536 std::set<N_UTL_BreakPoint>::iterator firstBP =
breakPoints_.begin();
537 std::set<N_UTL_BreakPoint>::iterator lastBP =
breakPoints_.end();
542 itBP = upper_bound(firstBP,lastBP,N_UTL_BreakPoint(
currentTime));
548 if (itBP->bptype() == Xyce::Util::PAUSE_BREAKPOINT)
558 diffStopTime = fabs(
stopTime-oldStopTime);
568 #ifdef Xyce_PARALLEL_MPI
574 comm.minAll ( &sT, &mST, 1);
576 #endif // Xyce_PARALLEL_MPI
594 #ifdef Xyce_DEBUG_TIME
597 Xyce::dout() << std::endl
598 <<
" stopTime = " <<
stopTime << std::endl
601 <<
" oldStopTime = " << oldStopTime << std::endl
602 <<
" finalTime = " <<
finalTime << std::endl
605 << Xyce::section_divider << std::endl;
607 #endif // Xyce_DEBUG_TIME
628 std::set<N_UTL_BreakPoint>::iterator itBP;
629 std::set<N_UTL_BreakPoint>::iterator firstBP =
breakPoints_.begin();
630 std::set<N_UTL_BreakPoint>::iterator lastBP =
breakPoints_.end();
635 itBP = upper_bound(firstBP,lastBP,N_UTL_BreakPoint(
currentTime));
641 #ifdef Xyce_PARALLEL_MPI
647 comm.minAll ( &nT, &mNT, 1);
649 #endif // Xyce_PARALLEL_MPI
671 bool sAStatus(
false);
672 bool errorOptionStatus(
true);
673 bool testTimeIntegrationError(
false);
697 testTimeIntegrationError =
true;
701 if (!step_attempt_status)
703 testTimeIntegrationError =
false;
707 if (testTimeIntegrationError)
726 errorOptionStatus =
true;
728 errorOptionStatus =
false;
730 #ifdef Xyce_VERBOSE_TIME
733 Xyce::dout() <<
"ERROROPTION=1: DOREJECTSTEP = ";
736 Xyce::dout() <<
"1" << std::endl;
740 Xyce::dout() <<
"0" << std::endl;
743 #endif // Xyce_VERBOSE_TIME
750 #ifdef Xyce_DEBUG_TIME
753 Xyce::dout() <<
"Trying to skip time integrator error checks: " <<
currentTimeStep
754 <<
" newton status " << step_attempt_status << std::endl;
765 step_attempt_status = step_attempt_status && errorOptionStatus;
767 step_attempt_status = step_attempt_status && sAStatus;
772 #ifdef Xyce_VERBOSE_TIME
773 #ifdef Xyce_DEBUG_TIME
800 os << (Xyce::DEBUG_TIME ?
commandLine_.getArgumentValue(
"netlist") :
"")
801 <<
" STEP STATUS: " << (step_attempt_status ?
" success" :
" fail")
818 os <<
"\n estOverTol = " <<
estOverTol_ << std::endl
821 <<
"\nSTEP ATTEMPT STATUS:" << std::endl
822 <<
"NOTE:" << std::endl;
828 os <<
" We are running in variable stepsize mode " << std::endl
829 <<
" and we have NOT just passed a breakpoint. As such " << std::endl
830 <<
" for an integration step to succeed the " << std::endl
831 <<
" nonlinear solver must succeed AND the predictor" << std::endl
832 <<
" and corrector need to be close within a tolerance." << std::endl;
836 os <<
"ADDENDUM: This is with erroption=1 so predictor-corrector is ignored for step error control." << std::endl;
841 os <<
" We are either running constant stepsize " << std::endl
842 <<
" or we just passed a breakpoint. As such " << std::endl
843 <<
" the only criteria we use in accepting/rejecting" << std::endl
844 <<
" an integration step is the nonlinear solver" << std::endl
845 <<
" success/failure." << std::endl;
848 if (step_attempt_status)
850 os <<
"\n This has been a successful step:" << std::endl;
854 os <<
"\n This has NOT been a successful step:" << std::endl;
872 os <<
" - predictor vs. corrector analysis succeeded." << std::endl;
876 os <<
" - predictor vs. corrector analysis failed." << std::endl;
879 os <<
" (compare estOverTol with error tolerance above.)" << std::endl;
883 os <<
"If we had been using it << " << std::endl;
887 os <<
" - predictor vs. corrector analysis would have succeeded." << std::endl;
891 os <<
" - predictor vs. corrector analysis would have failed." << std::endl;
894 os <<
" (compare estOverTol with error tolerance above.)" << std::endl;
899 os <<
" predictor vs. corrector was not tested" << std::endl;
902 os << Xyce::section_divider << std::endl;
916 bool bsuccess =
true;
959 bool bsuccess =
true;
961 #ifdef Xyce_DEBUG_TIME
964 Xyce::dout() << std::endl
965 << Xyce::section_divider << std::endl
966 <<
" N_TIA_StepErrorControl::updateBreakPoints. time = " <<
currentTime << std::endl
971 std::vector<N_UTL_BreakPoint> tmpBP;
977 std::vector<N_UTL_BreakPoint>::iterator iter;
978 std::vector<N_UTL_BreakPoint>::iterator first = tmpBP.begin();
979 std::vector<N_UTL_BreakPoint>::iterator last = tmpBP.end();
982 std::set<N_UTL_BreakPoint>::iterator itBP;
983 std::set<N_UTL_BreakPoint>::iterator itBP_2;
984 std::set<N_UTL_BreakPoint>::iterator firstBP =
breakPoints_.begin();
985 std::set<N_UTL_BreakPoint>::iterator lastBP =
breakPoints_.end();
988 for (iter=first; iter!=last; ++iter)
996 #ifdef Xyce_DEBUG_TIME
1003 std::string netListFile =
commandLine_.getArgumentValue(
"netlist");
1004 std::string msg = netListFile +
" breakPoints_ vector container, before any removals:";
1006 Xyce::dout() <<msg << std::endl;
1008 for (i=0, itBP=firstBP;itBP!=lastBP;++i,++itBP)
1012 sprintf(tmp,
"%4d %16.8e",i,itBP->value());
1016 sprintf(tmp,
"%4d %16.8e diff=%16.8e", i, itBP->value(),(itBP->value()-itBP_2->value()));
1019 Xyce::dout() <<tmp << std::endl;
1022 Xyce::dout() <<
"" << std::endl;
1027 LessThan<N_UTL_BreakPoint,double> LessFunct;
1028 itBP_2 = lower_bound(firstBP,lastBP,
lastTime,LessFunct);
1050 #ifdef Xyce_DEBUG_TIME
1053 Xyce::dout() <<
" bpTol = " << bpTol << std::endl;
1054 Xyce::dout() <<
" Must now eliminate new duplicates " << std::endl;
1058 bool doneRemove =
false;
1065 for (icount = 0, itBP=firstBP, itBP_2=firstBP;
1069 double diff = (itBP->value() - itBP_2->value());
1073 if (fabs(diff) < bpTol)
1076 if (itBP->bptype() == Xyce::Util::SIMPLE_BREAKPOINT &&
1077 itBP_2->bptype() == Xyce::Util::SIMPLE_BREAKPOINT)
1089 Xyce::Util::BreakpointType overridingType = itBP->bptype();
1090 double minTime=
Xycemin(itBP->value(),itBP_2->value());
1095 if (itBP_2->bptype() != Xyce::Util::SIMPLE_BREAKPOINT)
1097 overridingType = itBP_2->bptype();
1101 N_UTL_BreakPoint tmpBP(minTime,overridingType);
1105 #ifdef Xyce_DEBUG_TIME
1106 Xyce::dout() <<
" Purging breakpoints, overriding with breakpoint of type " << tmpBP.bptype();
1120 #ifdef Xyce_DEBUG_TIME
1126 " breakPoints_ vector container after:" << std::endl;
1128 for (i=0, itBP=firstBP;itBP!=lastBP;++i,++itBP)
1132 sprintf(tmp,
"%4d %16.8e type=%d",i,itBP->value(),itBP->bptype());
1136 sprintf(tmp,
"%4d %16.8e type=%d diff=%16.8e", i, itBP->value(),
1137 itBP->bptype(),(itBP->value()-itBP_2->value()));
1140 Xyce::dout() <<tmp << std::endl;
1144 Xyce::dout() <<
"" << std::endl;
1145 Xyce::dout() <<Xyce::section_divider << std::endl;
1163 bool bsuccess =
true;
1165 #ifdef Xyce_DEBUG_TIME
1168 Xyce::dout() << Xyce::section_divider << std::endl;
1170 " N_TIA_StepErrorControl::updateMaxTimeStep" << std::endl;
1174 double maxDevStep = 1.0e+99;
1191 if( suggestedMaxTimeStep > 0.0 )
1201 if (maxDevStep > 0.0)
1211 #ifdef Xyce_PARALLEL_MPI
1217 comm.minAll ( &mTS, &mMTS, 1);
1222 #ifdef Xyce_DEBUG_TIME
1228 " User did not specify a maximum time step." << std::endl;
1233 " User specified a maximum time step. = " <<
maxTimeStepUser << std::endl;
1237 " maxDevStep = " << maxDevStep << std::endl;
1240 Xyce::dout() <<Xyce::section_divider << std::endl;
1246 const std::string msg =
"Maximum Time step is invalid!\n";
1247 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
1263 bool bsuccess =
true;
1266 N_UTL_MachineDependentParams::MachinePrecision();
1281 if (theBP.bptype() == Xyce::Util::SIMPLE_BREAKPOINT)
1287 #ifdef Xyce_DEBUG_TIME
1290 Xyce::dout() <<
"In setBreakPoint, got non-simple breakpoint of type "
1291 << theBP.bptype() <<
" at time " << theBP.value() << std::endl;
1338 if ((BP.bptype() > 0) && (BP.value() == 0.0))
1358 #ifdef Xyce_DEBUG_TIME
1361 Xyce::dout() <<
"\n" <<
commandLine_.getArgumentValue(
"netlist")
1363 <<
" encountered breakpoint " << BP.value() <<
" current time is "
1399 std::set<N_UTL_BreakPoint>::const_iterator itBP;
1400 std::set<N_UTL_BreakPoint>::const_iterator itBP2;
1401 std::set<N_UTL_BreakPoint>::const_iterator firstBP =
breakPoints_.begin();
1402 std::set<N_UTL_BreakPoint>::const_iterator lastBP =
breakPoints_.end();
1407 for (i=0, itBP=firstBP;itBP!=lastBP;++i,++itBP)
1410 sprintf(tmp,
"%4d %16.8e type=%d",i,itBP->value(),itBP->bptype());
1412 sprintf(tmp,
"%4d %16.8e type=%d diff=%16.8e", i, itBP->value(),
1413 itBP->bptype(),(itBP->value()-itBP2->value()));
1415 os << std::string(tmp);
1444 int numdoubles = 21;
1446 int count =
sizeof(double) * (numdoubles);
1447 count +=
sizeof(int) * numints;
1457 count = 24*((numdoubles+numints) + (
breakPoints_.size()))
1461 int baseClassSize = count;
1467 totalSize = baseClassSize;
1468 totalSize +=
sizeof(double) * numdoubles;
1469 totalSize +=
sizeof(int) * numints;
1474 totalSize = baseClassSize + 24*(numdoubles+numints);
1493 (
char * buf,
int bsize,
int & pos, N_PDS_Comm * comm,
bool pack )
1507 for(
int i = pos; i < (newPos); ++i) buf[i] =
' ';
1510 #ifdef Xyce_DEBUG_RESTART
1511 std::string netListFile = commandLine_.getArgumentValue(
"netlist");
1512 Xyce::dout() <<
"TIA Restart Data DUMP! " << netListFile <<
"\n";
1513 Xyce::dout() << Xyce::section_divider << std::endl;
1514 Xyce::dout() <<
"startingTimeStep: " << startingTimeStep << std::endl;
1515 Xyce::dout() <<
"currentTimeStep: " << currentTimeStep << std::endl;
1516 Xyce::dout() <<
"lastAttemptedTimeStep: " << lastAttemptedTimeStep << std::endl;
1517 Xyce::dout() <<
"lastTimeStep: " << lastTimeStep << std::endl;
1518 Xyce::dout() <<
"minTimeStep: " << minTimeStep << std::endl;
1519 Xyce::dout() <<
"maxTimeStep: " << maxTimeStep << std::endl;
1520 Xyce::dout() <<
"maxTimeStepUser: " << maxTimeStepUser << std::endl;
1521 Xyce::dout() <<
"lastTime: " << lastTime << std::endl;
1522 Xyce::dout() <<
"currentTime: " << currentTime << std::endl;
1523 Xyce::dout() <<
"nextTime: " << nextTime << std::endl;
1524 Xyce::dout() <<
"initialTime: " << initialTime << std::endl;
1525 Xyce::dout() <<
"estOverTol_: " << estOverTol_ << std::endl;
1526 Xyce::dout() <<
"breakpts: ";
1528 for (std::set<N_UTL_BreakPoint>::iterator iterSD = breakPoints_.begin();
1529 iterSD != breakPoints_.end(); ++iterSD )
1530 Xyce::dout() << iterSD->value() <<
" ";
1531 Xyce::dout() << std::endl;
1532 Xyce::dout() <<
"integMethod: " << anaManager_.getIntegrationMethod() << std::endl;
1533 Xyce::dout() <<
"stepNumber: " << anaManager_.getStepNumber() << std::endl;
1534 Xyce::dout() <<
"transStepNumber: " << anaManager_.getTranStepNumber() << std::endl;
1535 Xyce::dout() <<
"breakPointRestartNumber: " << anaManager_.breakPointRestartStep << std::endl;
1536 Xyce::dout() << Xyce::section_divider << std::endl << std::endl;
1540 comm->pack( &startingTimeStep, 1, buf, bsize, pos );
1541 comm->pack( ¤tTimeStep, 1, buf, bsize, pos );
1542 comm->pack( &lastAttemptedTimeStep, 1, buf, bsize, pos );
1543 comm->pack( &lastTimeStep, 1, buf, bsize, pos );
1544 comm->pack( &minTimeStep, 1, buf, bsize, pos );
1545 comm->pack( &maxTimeStep, 1, buf, bsize, pos );
1546 comm->pack( &maxTimeStepUser, 1, buf, bsize, pos );
1547 comm->pack( &lastTime, 1, buf, bsize, pos );
1548 comm->pack( ¤tTime, 1, buf, bsize, pos );
1549 comm->pack( &nextTime, 1, buf, bsize, pos );
1550 comm->pack( &initialTime, 1, buf, bsize, pos );
1551 comm->pack( ¤tTimeStepRatio, 1, buf, bsize, pos );
1552 comm->pack( ¤tTimeStepSum, 1, buf, bsize, pos );
1553 comm->pack( &lastTimeStepRatio, 1, buf, bsize, pos );
1554 comm->pack( &lastTimeStepSum, 1, buf, bsize, pos );
1555 comm->pack( &newtonConvergenceStatus, 1, buf, bsize, pos );
1556 comm->pack( &numberSuccessiveFailures, 1, buf, bsize, pos );
1557 int flag = stepAttemptStatus;
1558 comm->pack( &flag, 1, buf, bsize, pos );
1559 comm->pack( &minStepPrecisionFac_, 1, buf, bsize, pos );
1560 comm->pack( &newtonStepReduction_, 1, buf, bsize, pos );
1561 comm->pack( &tolAimFac_, 1, buf, bsize, pos );
1562 comm->pack( &estOverTol_, 1, buf, bsize, pos );
1565 int size = breakPoints_.size() -1 ;
1566 std::set<N_UTL_BreakPoint>::iterator bpStart = breakPoints_.begin();
1567 std::set<N_UTL_BreakPoint>::iterator bpEnd = breakPoints_.end();
1568 comm->pack( &size, 1, buf, bsize, pos );
1572 for( std::set<N_UTL_BreakPoint>::iterator iterSD = bpStart;
1573 iterSD != bpEnd; ++iterSD)
1575 val=iterSD->value();
1576 bptype=iterSD->bptype();
1577 if (!(bptype == Xyce::Util::PAUSE_BREAKPOINT && val == finalTime))
1579 comm->pack( &(val), 1, buf, bsize, pos );
1580 comm->pack( &(bptype), 1, buf, bsize, pos );
1583 int im = anaManager_.getIntegrationMethod();
1584 comm->pack( &im, 1, buf, bsize, pos );
1585 int sN = anaManager_.getStepNumber();
1586 comm->pack( &sN, 1, buf, bsize, pos );
1587 int tSN = anaManager_.getTranStepNumber();
1588 comm->pack( &tSN, 1, buf, bsize, pos );
1589 int bPRS = anaManager_.breakPointRestartStep;
1590 comm->pack( &bPRS, 1, buf, bsize, pos );
1591 int beginFlag = (anaManager_.getBeginningIntegrationFlag())?1:0;
1592 comm->pack( &beginFlag, 1, buf, bsize, pos );
1599 int startIndex = pos;
1602 for(
int i = startIndex; i < (startIndex+count); ++i) buf[i] =
' ';
1604 std::ostringstream ost;
1605 ost.width(24);ost.precision(16);ost.setf(std::ios::scientific);
1606 ost << startingTimeStep <<
" ";
1607 ost << currentTimeStep <<
" ";
1608 ost << lastAttemptedTimeStep <<
" ";
1609 ost << lastTimeStep <<
" ";
1610 ost << minTimeStep <<
" ";
1611 ost << maxTimeStep <<
" ";
1612 ost << maxTimeStepUser <<
" ";
1613 ost << lastTime <<
" ";
1614 ost << currentTime <<
" ";
1615 ost << nextTime <<
" ";
1616 ost << initialTime <<
" ";
1617 ost << currentTimeStepRatio <<
" ";
1618 ost << currentTimeStepSum <<
" ";
1619 ost << lastTimeStepRatio <<
" ";
1620 ost << lastTimeStepSum <<
" ";
1621 ost << newtonConvergenceStatus <<
" ";
1622 ost << numberSuccessiveFailures <<
" ";
1623 int flag = (stepAttemptStatus)?1:0;
1625 ost << minStepPrecisionFac_ <<
" ";
1626 ost << newtonStepReduction_ <<
" ";
1627 ost << tolAimFac_ <<
" ";
1628 ost << estOverTol_ <<
" ";
1631 int size = breakPoints_.size() - 1;
1634 std::set<N_UTL_BreakPoint>::iterator bpStart = breakPoints_.begin();
1635 std::set<N_UTL_BreakPoint>::iterator bpEnd = breakPoints_.end();
1636 for( std::set<N_UTL_BreakPoint>::iterator iterSD = bpStart;
1637 iterSD != bpEnd; ++iterSD )
1639 if (!(iterSD->bptype() == Xyce::Util::PAUSE_BREAKPOINT &&
1640 iterSD->value() == finalTime))
1642 ost << iterSD->value() <<
" ";
1643 ost << iterSD->bptype() <<
" ";
1646 int im = anaManager_.getIntegrationMethod();
1648 int sN = anaManager_.getStepNumber();
1650 int tSN = anaManager_.getTranStepNumber();
1652 int bPRS = anaManager_.breakPointRestartStep;
1654 int beginFlag = (anaManager_.getBeginningIntegrationFlag())?1:0;
1655 ost << beginFlag <<
" ";
1657 std::string data( ost.str() );
1658 for(
unsigned int i = 0; i < data.length(); ++i ) buf[startIndex+i] = data[i];
1663 buf[startIndex+data.length()] =
'\0';
1664 pos += data.length();
1666 #ifdef Xyce_DEBUG_RESTART
1667 std::string outputString(buf);
1669 Xyce::dout() <<
"StepErrorControl UNPACKED output buffer:" << std::endl;
1670 Xyce::dout() << outputString << std::endl;
1674 #ifdef Xyce_DEBUG_RESTART
1675 Xyce::dout() <<
"TIA Restart Data DUMP (DAE)! " << netListFile <<
"\n";
1676 Xyce::dout() << Xyce::section_divider << std::endl<<std::endl;
1677 Xyce::dout() <<
"alphas_ = " <<alphas_<<std::endl;
1678 Xyce::dout() <<
"alpha0_ = " <<alpha0_<<std::endl;
1679 Xyce::dout() <<
"cj_ = " <<cj_<<std::endl;
1680 Xyce::dout() <<
"ck_ = " <<ck_<<std::endl;
1681 Xyce::dout() <<
"usedStep_ = " <<usedStep_<<std::endl;
1682 Xyce::dout() <<
"Ek_ = " <<Ek_<<std::endl;
1683 Xyce::dout() <<
"Ekm1_ = " <<Ekm1_<<std::endl;
1684 Xyce::dout() <<
"Ekm2_ = " <<Ekm2_<<std::endl;
1685 Xyce::dout() <<
"Ekp1_ = " <<Ekp1_<<std::endl;
1686 Xyce::dout() <<
"Est_ = " <<Est_<<std::endl;
1687 Xyce::dout() <<
"Tk_ = " <<Tk_<<std::endl;
1688 Xyce::dout() <<
"Tkm1_ = " <<Tkm1_<<std::endl;
1689 Xyce::dout() <<
"Tkm2_ = " <<Tkm2_<<std::endl;
1690 Xyce::dout() <<
"Tkp1_ = " <<Tkp1_<<std::endl;
1691 Xyce::dout() <<
"h0_safety_ = " <<h0_safety_<<std::endl;
1692 Xyce::dout() <<
"h0_max_factor_ = " <<h0_max_factor_<<std::endl;
1693 Xyce::dout() <<
"h_phase0_incr_ = " <<h_phase0_incr_<<std::endl;
1694 Xyce::dout() <<
"h_max_inv_ = " <<h_max_inv_<<std::endl;
1695 Xyce::dout() <<
"Tkm1_Tk_safety_ = " <<Tkm1_Tk_safety_<<std::endl;
1696 Xyce::dout() <<
"Tkp1_Tk_safety_ = " <<Tkp1_Tk_safety_<<std::endl;
1697 Xyce::dout() <<
"r_factor_ = " <<r_factor_<<std::endl;
1698 Xyce::dout() <<
"r_safety_ = " <<r_safety_<<std::endl;
1699 Xyce::dout() <<
"r_fudge_ = " <<r_fudge_<<std::endl;
1700 Xyce::dout() <<
"r_min_ = " <<r_min_<<std::endl;
1701 Xyce::dout() <<
"r_max_ = " <<r_max_<<std::endl;
1702 Xyce::dout() <<
"r_hincr_test_ = " <<r_hincr_test_<<std::endl;
1703 Xyce::dout() <<
"r_hincr_ = " <<r_hincr_<<std::endl;
1705 for (
int i=0;i<6;++i)
1707 Xyce::dout() <<
" alpha_["<<i<<
"] = " << alpha_[i]<<std::endl;
1708 Xyce::dout() <<
" sigma_["<<i<<
"] = " << sigma_[i]<<std::endl;
1709 Xyce::dout() <<
" gamma_["<<i<<
"] = " << gamma_[i]<<std::endl;
1710 Xyce::dout() <<
" beta_["<<i<<
"] = " << beta_[i]<<std::endl;
1711 Xyce::dout() <<
" psi_["<<i<<
"] = " << psi_[i]<<std::endl;
1714 Xyce::dout() << Xyce::section_divider << std::endl << std::endl << std::endl;
1720 comm->pack( &alphas_ , 1, buf, bsize, pos );
1721 comm->pack( &alpha0_ , 1, buf, bsize, pos );
1722 comm->pack( &cj_ , 1, buf, bsize, pos );
1723 comm->pack( &ck_ , 1, buf, bsize, pos );
1724 comm->pack( &usedStep_ , 1, buf, bsize, pos );
1725 comm->pack( &Ek_ , 1, buf, bsize, pos );
1726 comm->pack( &Ekm1_ , 1, buf, bsize, pos );
1727 comm->pack( &Ekm2_ , 1, buf, bsize, pos );
1728 comm->pack( &Ekp1_ , 1, buf, bsize, pos );
1729 comm->pack( &Est_ , 1, buf, bsize, pos );
1730 comm->pack( &Tk_ , 1, buf, bsize, pos );
1731 comm->pack( &Tkm1_ , 1, buf, bsize, pos );
1732 comm->pack( &Tkm2_ , 1, buf, bsize, pos );
1733 comm->pack( &Tkp1_ , 1, buf, bsize, pos );
1734 comm->pack( &h0_safety_ , 1, buf, bsize, pos );
1735 comm->pack( &h0_max_factor_ , 1, buf, bsize, pos );
1736 comm->pack( &h_phase0_incr_ , 1, buf, bsize, pos );
1737 comm->pack( &h_max_inv_ , 1, buf, bsize, pos );
1738 comm->pack( &Tkm1_Tk_safety_ , 1, buf, bsize, pos );
1739 comm->pack( &Tkp1_Tk_safety_ , 1, buf, bsize, pos );
1740 comm->pack( &r_factor_ , 1, buf, bsize, pos );
1741 comm->pack( &r_safety_ , 1, buf, bsize, pos );
1742 comm->pack( &r_fudge_ , 1, buf, bsize, pos );
1743 comm->pack( &r_min_ , 1, buf, bsize, pos );
1744 comm->pack( &r_max_ , 1, buf, bsize, pos );
1745 comm->pack( &r_hincr_test_ , 1, buf, bsize, pos );
1746 comm->pack( &r_hincr_ , 1, buf, bsize, pos );
1749 for (
int i=0;i<6;++i)
1751 comm->pack( &alpha_[i], 1, buf, bsize, pos );
1752 comm->pack( &sigma_[i], 1, buf, bsize, pos );
1753 comm->pack( &gamma_[i], 1, buf, bsize, pos );
1754 comm->pack( &beta_[i], 1, buf, bsize, pos );
1755 comm->pack( &psi_[i], 1, buf, bsize, pos );
1759 comm->pack ( ¤tOrder_, 1, buf, bsize, pos);
1760 comm->pack ( &oldOrder_, 1, buf, bsize, pos);
1761 comm->pack ( &maxOrder_, 1, buf, bsize, pos);
1762 comm->pack ( &minOrder_, 1, buf, bsize, pos);
1763 comm->pack ( &usedOrder_, 1, buf, bsize, pos);
1764 comm->pack ( &numberOfSteps_, 1, buf, bsize, pos);
1765 comm->pack ( &nef_, 1, buf, bsize, pos);
1766 comm->pack ( &nscsco_, 1, buf, bsize, pos);
1767 comm->pack ( &newOrder_, 1, buf, bsize, pos);
1768 comm->pack ( &max_LET_fail_, 1, buf, bsize, pos);
1771 int iP = (initialPhase_)?1:0;
1772 comm->pack ( &iP, 1, buf, bsize, pos);
1776 std::ostringstream ost;
1777 ost.width(24);ost.precision(16);ost.setf(std::ios::scientific);
1780 ost << alphas_ <<
" ";
1781 ost << alpha0_ <<
" ";
1784 ost << usedStep_ <<
" ";
1786 ost << Ekm1_ <<
" ";
1787 ost << Ekm2_ <<
" ";
1788 ost << Ekp1_ <<
" ";
1791 ost << Tkm1_ <<
" ";
1792 ost << Tkm2_ <<
" ";
1793 ost << Tkp1_ <<
" ";
1794 ost << h0_safety_ <<
" ";
1795 ost << h0_max_factor_ <<
" ";
1796 ost << h_phase0_incr_ <<
" ";
1797 ost << h_max_inv_ <<
" ";
1798 ost << Tkm1_Tk_safety_ <<
" ";
1799 ost << Tkp1_Tk_safety_ <<
" ";
1800 ost << r_factor_ <<
" ";
1801 ost << r_safety_ <<
" ";
1802 ost << r_fudge_ <<
" ";
1803 ost << r_min_ <<
" ";
1804 ost << r_max_ <<
" ";
1805 ost << r_hincr_test_ <<
" ";
1806 ost << r_hincr_ <<
" ";
1809 for (
int i=0;i<6;++i)
1811 ost << alpha_[i]<<
" " ;
1812 ost << sigma_[i]<<
" " ;
1813 ost << gamma_[i]<<
" " ;
1814 ost << beta_[i]<<
" " ;
1815 ost << psi_[i]<<
" " ;
1819 ost << currentOrder_ <<
" ";
1820 ost << oldOrder_ <<
" ";
1821 ost << maxOrder_ <<
" ";
1822 ost << minOrder_ <<
" ";
1823 ost << usedOrder_ <<
" ";
1824 ost << numberOfSteps_ <<
" ";
1826 ost << nscsco_ <<
" ";
1827 ost << newOrder_ <<
" ";
1828 ost << max_LET_fail_ <<
" ";
1831 int iP = (initialPhase_)?1:0;
1834 std::string data( ost.str() );
1835 for(
unsigned int i = 0; i < data.length(); ++i ) buf[pos+i] = data[i];
1838 buf[pos+data.length()] =
'\0';
1840 #ifdef Xyce_DEBUG_RESTART
1841 std::string outputString(buf);
1843 Xyce::dout() <<
"StepErrorControlDAE UNPACKED output buffer:" << std::endl;
1844 Xyce::dout() << outputString << std::endl;
1866 (
char * buf,
int bsize,
int & pos, N_PDS_Comm * comm,
bool pack)
1872 comm->unpack(buf, bsize, pos, &startingTimeStep, 1);
1873 comm->unpack(buf, bsize, pos, ¤tTimeStep, 1);
1874 comm->unpack(buf, bsize, pos, &lastAttemptedTimeStep, 1);
1875 comm->unpack(buf, bsize, pos, &lastTimeStep, 1);
1876 comm->unpack(buf, bsize, pos, &minTimeStep, 1);
1877 comm->unpack(buf, bsize, pos, &maxTimeStep, 1);
1878 comm->unpack(buf, bsize, pos, &maxTimeStepUser, 1);
1879 comm->unpack(buf, bsize, pos, &lastTime, 1);
1880 comm->unpack(buf, bsize, pos, ¤tTime, 1);
1881 comm->unpack(buf, bsize, pos, &nextTime, 1);
1882 comm->unpack(buf, bsize, pos, &initialTime, 1);
1883 comm->unpack(buf, bsize, pos, ¤tTimeStepRatio, 1);
1884 comm->unpack(buf, bsize, pos, ¤tTimeStepSum, 1);
1885 comm->unpack(buf, bsize, pos, &lastTimeStepRatio, 1);
1886 comm->unpack(buf, bsize, pos, &lastTimeStepSum, 1);
1887 comm->unpack(buf, bsize, pos, &newtonConvergenceStatus, 1);
1888 comm->unpack(buf, bsize, pos, &numberSuccessiveFailures, 1);
1890 comm->unpack(buf, bsize, pos, &flag, 1);
1891 stepAttemptStatus = flag;
1892 comm->unpack(buf, bsize, pos, &minStepPrecisionFac_, 1);
1893 comm->unpack(buf, bsize, pos, &newtonStepReduction_, 1);
1894 comm->unpack(buf, bsize, pos, &tolAimFac_, 1);
1895 comm->unpack(buf, bsize, pos, &estOverTol_, 1);
1897 double bpTol = 2.0 * minTimeStep;
1898 anaManager_.setBreakpointTol(bpTol);
1899 tiaParams_.initialTime=initialTime;
1900 tiaParams_.pauseTime=initialTime;
1901 std::set<N_UTL_BreakPoint> tmpSet = breakPoints_;
1902 breakPoints_.clear();
1903 std::set<N_UTL_BreakPoint>::iterator iterSD;
1904 std::set<N_UTL_BreakPoint>::iterator firstSD = tmpSet.begin();
1905 std::set<N_UTL_BreakPoint>::iterator lastSD = tmpSet.end();
1906 for (iterSD = firstSD; iterSD != lastSD; ++iterSD)
1908 if (iterSD->value() > currentTime)
1910 breakPoints_.insert(*iterSD);
1911 if (iterSD->bptype() == Xyce::Util::PAUSE_BREAKPOINT)
1912 updatePauseTime(*iterSD);
1919 N_UTL_BreakPoint TmpBP;
1920 comm->unpack(buf, bsize, pos, &size, 1);
1922 for (
int i = 0; i < size; ++i)
1924 comm->unpack(buf, bsize, pos, &val, 1);
1925 comm->unpack(buf, bsize, pos, &bptype, 1);
1926 if (val > currentTime)
1928 TmpBP.set(val,bptype);
1929 breakPoints_.insert(TmpBP);
1930 if (TmpBP.bptype() == Xyce::Util::PAUSE_BREAKPOINT)
1932 updatePauseTime(TmpBP);
1938 comm->unpack(buf, bsize, pos, &im, 1);
1939 anaManager_.setIntegrationMethod(im);
1940 comm->unpack(buf, bsize, pos, &im, 1);
1941 anaManager_.setStepNumber(im);
1942 comm->unpack(buf, bsize, pos, &im, 1);
1943 anaManager_.setTranStepNumber(im);
1944 comm->unpack(buf, bsize, pos, &im, 1);
1945 anaManager_.breakPointRestartStep = im;
1946 comm->unpack(buf, bsize, pos, &im, 1);
1947 anaManager_.setBeginningIntegrationFlag(im==1);
1951 std::string str1(buf);
1952 int length = str1.size() - pos;
1953 std::string str2(str1,pos,length);
1955 std::istringstream ist( str2 );
1970 ist >> startingTimeStep;
1971 ist >> currentTimeStep;
1972 ist >> lastAttemptedTimeStep;
1973 ist >> lastTimeStep;
1976 ist >> maxTimeStepUser;
1981 ist >> currentTimeStepRatio;
1982 ist >> currentTimeStepSum;
1983 ist >> lastTimeStepRatio;
1984 ist >> lastTimeStepSum;
1985 ist >> newtonConvergenceStatus;
1986 ist >> numberSuccessiveFailures;
1989 stepAttemptStatus = flag;
1990 ist >> minStepPrecisionFac_;
1991 ist >> newtonStepReduction_;
1995 double bpTol = 2.0 * minTimeStep;
1996 anaManager_.setBreakpointTol(bpTol);
1997 tiaParams_.initialTime=initialTime;
1998 tiaParams_.pauseTime=initialTime;
2000 std::set<N_UTL_BreakPoint> tmpSet = breakPoints_;
2001 breakPoints_.clear();
2002 std::set<N_UTL_BreakPoint>::iterator iterSD;
2003 std::set<N_UTL_BreakPoint>::iterator firstSD = tmpSet.begin();
2004 std::set<N_UTL_BreakPoint>::iterator lastSD = tmpSet.end();
2005 for (iterSD = firstSD; iterSD != lastSD; ++iterSD)
2007 if (iterSD->value() > currentTime)
2009 breakPoints_.insert(*iterSD);
2010 if (iterSD->bptype() == Xyce::Util::PAUSE_BREAKPOINT)
2011 updatePauseTime(*iterSD);
2018 N_UTL_BreakPoint TmpBP;
2021 for(
int i = 0; i < size; ++i )
2025 if (val > currentTime)
2027 TmpBP.set(val,bptype);
2028 breakPoints_.insert( TmpBP );
2029 if (TmpBP.bptype() == Xyce::Util::PAUSE_BREAKPOINT)
2031 updatePauseTime(TmpBP);
2038 anaManager_.setIntegrationMethod(tmpInt);
2040 anaManager_.setStepNumber(tmpInt);
2042 anaManager_.setTranStepNumber(tmpInt);
2044 anaManager_.breakPointRestartStep = tmpInt;
2046 anaManager_.setBeginningIntegrationFlag(tmpInt==1);
2051 #ifdef Xyce_DEBUG_RESTART
2052 std::string netListFile = commandLine_.getArgumentValue(
"netlist");
2053 Xyce::dout() <<
"TIA Restart Data RESTORE! " << netListFile <<
"\n";
2054 Xyce::dout() << Xyce::section_divider << std::endl;
2055 Xyce::dout() <<
"startingTimeStep: " << startingTimeStep << std::endl;
2056 Xyce::dout() <<
"currentTimeStep: " << currentTimeStep << std::endl;
2057 Xyce::dout() <<
"lastAttemptedTimeStep: " << lastAttemptedTimeStep << std::endl;
2058 Xyce::dout() <<
"lastTimeStep: " << lastTimeStep << std::endl;
2059 Xyce::dout() <<
"minTimeStep: " << minTimeStep << std::endl;
2060 Xyce::dout() <<
"maxTimeStep: " << maxTimeStep << std::endl;
2061 Xyce::dout() <<
"maxTimeStepUser: " << maxTimeStepUser << std::endl;
2062 Xyce::dout() <<
"lastTime: " << lastTime << std::endl;
2063 Xyce::dout() <<
"currentTime: " << currentTime << std::endl;
2064 Xyce::dout() <<
"nextTime: " << nextTime << std::endl;
2065 Xyce::dout() <<
"initialTime: " << initialTime << std::endl;
2066 Xyce::dout() <<
"estOverTol_: " << estOverTol_ << std::endl;
2067 Xyce::dout() <<
"breakpts: ";
2068 for (std::set<N_UTL_BreakPoint>::iterator iterSD = breakPoints_.begin();
2069 iterSD != breakPoints_.end(); ++iterSD)
2071 Xyce::dout() << iterSD->value() <<
" " << iterSD->bptype() << std::endl;
2073 Xyce::dout() << std::endl;
2074 Xyce::dout() <<
"integMethod: " << anaManager_.getIntegrationMethod() << std::endl;
2075 Xyce::dout() <<
"stepNumber: " << anaManager_.getStepNumber() << std::endl;
2076 Xyce::dout() <<
"tranStepNumber: " << anaManager_.getTranStepNumber() << std::endl;
2077 Xyce::dout() <<
"breakPointRestartStep: " << anaManager_.breakPointRestartStep <<
2079 Xyce::dout() << Xyce::section_divider << std::endl << std::endl;
2086 comm->unpack(buf, bsize, pos, &alphas_ , 1);
2087 comm->unpack(buf, bsize, pos, &alpha0_ , 1);
2088 comm->unpack(buf, bsize, pos, &cj_ , 1);
2089 comm->unpack(buf, bsize, pos, &ck_ , 1);
2090 comm->unpack(buf, bsize, pos, &usedStep_ , 1);
2091 comm->unpack(buf, bsize, pos, &Ek_ , 1);
2092 comm->unpack(buf, bsize, pos, &Ekm1_ , 1);
2093 comm->unpack(buf, bsize, pos, &Ekm2_ , 1);
2094 comm->unpack(buf, bsize, pos, &Ekp1_ , 1);
2095 comm->unpack(buf, bsize, pos, &Est_ , 1);
2096 comm->unpack(buf, bsize, pos, &Tk_ , 1);
2097 comm->unpack(buf, bsize, pos, &Tkm1_ , 1);
2098 comm->unpack(buf, bsize, pos, &Tkm2_ , 1);
2099 comm->unpack(buf, bsize, pos, &Tkp1_ , 1);
2100 comm->unpack(buf, bsize, pos, &h0_safety_ , 1);
2101 comm->unpack(buf, bsize, pos, &h0_max_factor_ , 1);
2102 comm->unpack(buf, bsize, pos, &h_phase0_incr_ , 1);
2103 comm->unpack(buf, bsize, pos, &h_max_inv_ , 1);
2104 comm->unpack(buf, bsize, pos, &Tkm1_Tk_safety_ , 1);
2105 comm->unpack(buf, bsize, pos, &Tkp1_Tk_safety_ , 1);
2106 comm->unpack(buf, bsize, pos, &r_factor_ , 1);
2107 comm->unpack(buf, bsize, pos, &r_safety_ , 1);
2108 comm->unpack(buf, bsize, pos, &r_fudge_ , 1);
2109 comm->unpack(buf, bsize, pos, &r_min_ , 1);
2110 comm->unpack(buf, bsize, pos, &r_max_ , 1);
2111 comm->unpack(buf, bsize, pos, &r_hincr_test_ , 1);
2112 comm->unpack(buf, bsize, pos, &r_hincr_ , 1);
2115 for (
int i=0;i<6;++i)
2117 comm->unpack(buf, bsize, pos, &alpha_[i], 1);
2118 comm->unpack(buf, bsize, pos, &sigma_[i], 1);
2119 comm->unpack(buf, bsize, pos, &gamma_[i], 1);
2120 comm->unpack(buf, bsize, pos, &beta_[i], 1);
2121 comm->unpack(buf, bsize, pos, &psi_[i], 1);
2125 comm->unpack(buf, bsize, pos, ¤tOrder_, 1);
2126 comm->unpack(buf, bsize, pos, &oldOrder_, 1);
2127 comm->unpack(buf, bsize, pos, &maxOrder_, 1);
2128 comm->unpack(buf, bsize, pos, &minOrder_, 1);
2129 comm->unpack(buf, bsize, pos, &usedOrder_, 1);
2130 comm->unpack(buf, bsize, pos, &numberOfSteps_, 1);
2131 comm->unpack(buf, bsize, pos, &nef_, 1);
2132 comm->unpack(buf, bsize, pos, &nscsco_, 1);
2133 comm->unpack(buf, bsize, pos, &newOrder_, 1);
2134 comm->unpack(buf, bsize, pos, &max_LET_fail_, 1);
2138 comm->unpack (buf, bsize, pos, &iP, 1);
2139 if (iP == 0) initialPhase_ =
false;
2140 else initialPhase_ =
true;
2146 std::string str1(buf);
2147 int length = str1.size() - pos;
2148 std::string str2(str1,pos,length);
2150 std::istringstream ist( str2 );
2171 ist >> h0_max_factor_;
2172 ist >> h_phase0_incr_;
2174 ist >> Tkm1_Tk_safety_;
2175 ist >> Tkp1_Tk_safety_;
2181 ist >> r_hincr_test_;
2185 for (
int i=0;i<6;++i)
2195 ist >> currentOrder_;
2200 ist >> numberOfSteps_;
2204 ist >> max_LET_fail_;
2209 if (iP == 0) initialPhase_ =
false;
2210 else initialPhase_ =
true;
2213 #ifdef Xyce_DEBUG_RESTART
2214 Xyce::dout() <<
"TIA Restart Data RESTORE (DAE)! " << netListFile <<
"\n";
2215 Xyce::dout() << Xyce::section_divider << std::endl<<std::endl;
2216 Xyce::dout() <<
"alphas_ = " <<alphas_<<std::endl;
2217 Xyce::dout() <<
"alpha0_ = " <<alpha0_<<std::endl;
2218 Xyce::dout() <<
"cj_ = " <<cj_<<std::endl;
2219 Xyce::dout() <<
"ck_ = " <<ck_<<std::endl;
2220 Xyce::dout() <<
"usedStep_ = " <<usedStep_<<std::endl;
2221 Xyce::dout() <<
"Ek_ = " <<Ek_<<std::endl;
2222 Xyce::dout() <<
"Ekm1_ = " <<Ekm1_<<std::endl;
2223 Xyce::dout() <<
"Ekm2_ = " <<Ekm2_<<std::endl;
2224 Xyce::dout() <<
"Ekp1_ = " <<Ekp1_<<std::endl;
2225 Xyce::dout() <<
"Est_ = " <<Est_<<std::endl;
2226 Xyce::dout() <<
"Tk_ = " <<Tk_<<std::endl;
2227 Xyce::dout() <<
"Tkm1_ = " <<Tkm1_<<std::endl;
2228 Xyce::dout() <<
"Tkm2_ = " <<Tkm2_<<std::endl;
2229 Xyce::dout() <<
"Tkp1_ = " <<Tkp1_<<std::endl;
2230 Xyce::dout() <<
"h0_safety_ = " <<h0_safety_<<std::endl;
2231 Xyce::dout() <<
"h0_max_factor_ = " <<h0_max_factor_<<std::endl;
2232 Xyce::dout() <<
"h_phase0_incr_ = " <<h_phase0_incr_<<std::endl;
2233 Xyce::dout() <<
"h_max_inv_ = " <<h_max_inv_<<std::endl;
2234 Xyce::dout() <<
"Tkm1_Tk_safety_ = " <<Tkm1_Tk_safety_<<std::endl;
2235 Xyce::dout() <<
"Tkp1_Tk_safety_ = " <<Tkp1_Tk_safety_<<std::endl;
2236 Xyce::dout() <<
"r_factor_ = " <<r_factor_<<std::endl;
2237 Xyce::dout() <<
"r_safety_ = " <<r_safety_<<std::endl;
2238 Xyce::dout() <<
"r_fudge_ = " <<r_fudge_<<std::endl;
2239 Xyce::dout() <<
"r_min_ = " <<r_min_<<std::endl;
2240 Xyce::dout() <<
"r_max_ = " <<r_max_<<std::endl;
2241 Xyce::dout() <<
"r_hincr_test_ = " <<r_hincr_test_<<std::endl;
2242 Xyce::dout() <<
"r_hincr_ = " <<r_hincr_<<std::endl;
2244 for (
int i=0;i<6;++i)
2246 Xyce::dout() <<
" alpha_["<<i<<
"] = " << alpha_[i]<<std::endl;
2247 Xyce::dout() <<
" sigma_["<<i<<
"] = " << sigma_[i]<<std::endl;
2248 Xyce::dout() <<
" gamma_["<<i<<
"] = " << gamma_[i]<<std::endl;
2249 Xyce::dout() <<
" beta_["<<i<<
"] = " << beta_[i]<<std::endl;
2250 Xyce::dout() <<
" psi_["<<i<<
"] = " << psi_[i]<<std::endl;
2253 Xyce::dout() << Xyce::section_divider << std::endl << std::endl << std::endl;
2302 Xyce::ios_flags_saver flagsave(os);
2304 os <<
" " << (Xyce::DEBUG_TIME ?
commandLine_.getArgumentValue(
"netlist") :
" ") <<
" "
2305 <<
"Current,Next,Step: "
2306 << std::setw(Xyce::DEBUG_TIME ? 14 : 16) << std::setprecision(Xyce::DEBUG_TIME ? 7 : 9)
2329 #ifdef Xyce_DEBUG_TIME
2332 Xyce::dout() <<
"N_TIA_StepErrorControl::isPauseTime\n";
2333 Xyce::dout() <<
"currentPauseBP.value = " <<
currentPauseBP->value () << std::endl;
2334 Xyce::dout() <<
"final Time = " <<
finalTime << std::endl;
2335 Xyce::dout() <<
"current Time = " <<
currentTime << std::endl;
2352 os <<
"\n\n-----------------------------------------" << std::endl
2353 <<
"\tStepErrorControl:\n"
2357 <<
"\t\tlastTimeStep = " << sec.
lastTimeStep << std::endl
2358 <<
"\t\tminTimeStep = " << sec.
minTimeStep << std::endl
2359 <<
"\t\tmaxTimeStep = " << sec.
maxTimeStep << std::endl
2361 <<
"\t\tlastTime = " << sec.
lastTime << std::endl
2362 <<
"\t\tcurrentTime = " << sec.
currentTime << std::endl
2363 <<
"\t\tnextTime = " << sec.
nextTime << std::endl
2364 <<
"\t\tstopTime = " << sec.
stopTime << std::endl
2365 <<
"\t\tinitialTime = " << sec.
initialTime << std::endl
2366 <<
"\t\tfinalTime = " << sec.
finalTime << std::endl
2368 <<
"\t\tBreak Points:" << std::endl;
2373 os << Xyce::section_divider << std::endl;