本文整理汇总了C++中Teuchos::incrVerbLevel方法的典型用法代码示例。如果您正苦于以下问题:C++ Teuchos::incrVerbLevel方法的具体用法?C++ Teuchos::incrVerbLevel怎么用?C++ Teuchos::incrVerbLevel使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Teuchos
的用法示例。
在下文中一共展示了Teuchos::incrVerbLevel方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TEUCHOS_FUNC_TIME_MONITOR_DIFF
bool DefaultIntegrator<Scalar>::advanceStepperToTime( const Scalar& advance_to_t )
{
#ifdef ENABLE_RYTHMOS_TIMERS
TEUCHOS_FUNC_TIME_MONITOR_DIFF("Rythmos:DefaultIntegrator::advanceStepperToTime",
TopLevel);
#endif
using std::endl;
typedef std::numeric_limits<Scalar> NL;
using Teuchos::incrVerbLevel;
#ifndef _MSC_VER
using Teuchos::Describable;
#endif
using Teuchos::OSTab;
typedef Teuchos::ScalarTraits<Scalar> ST;
RCP<Teuchos::FancyOStream> out = this->getOStream();
Teuchos::EVerbosityLevel verbLevel = this->getVerbLevel();
if (!is_null(integrationControlStrategy_)) {
integrationControlStrategy_->setOStream(out);
integrationControlStrategy_->setVerbLevel(incrVerbLevel(verbLevel,-1));
}
if (!is_null(integrationObserver_)) {
integrationObserver_->setOStream(out);
integrationObserver_->setVerbLevel(incrVerbLevel(verbLevel,-1));
}
if ( includesVerbLevel(verbLevel,Teuchos::VERB_LOW) )
*out << "\nEntering " << this->Describable::description()
<< "::advanceStepperToTime("<<advance_to_t<<") ...\n";
// Remember what timestep index we are on so we can report it later
const int initCurrTimeStepIndex = currTimeStepIndex_;
// Take steps until we the requested time is reached (or passed)
TimeRange<Scalar> currStepperTimeRange = stepper_->getTimeRange();
// Start by assume we can reach the time advance_to_t
bool return_val = true;
while ( !currStepperTimeRange.isInRange(advance_to_t) ) {
// Halt immediatly if exceeded max iterations
if (currTimeStepIndex_ >= maxNumTimeSteps_) {
if ( includesVerbLevel(verbLevel,Teuchos::VERB_LOW) )
*out
<< "\n***"
<< "\n*** NOTICE: currTimeStepIndex = "<<currTimeStepIndex_
<< " >= maxNumTimeSteps = "<<maxNumTimeSteps_<< ", halting time integration!"
<< "\n***\n";
return_val = false;
break; // Exit the loop immediately!
}
if ( includesVerbLevel(verbLevel,Teuchos::VERB_LOW) )
*out << "\nTake step: current_stepper_t = " << currStepperTimeRange.upper()
<< ", currTimeStepIndex = " << currTimeStepIndex_ << endl;
//
// A) Reinitialize if a hard breakpoint was reached on the last time step
//
if (stepCtrlInfoLast_.limitedByBreakPoint) {
if ( stepCtrlInfoLast_.breakPointType == BREAK_POINT_TYPE_HARD ) {
#ifdef ENABLE_RYTHMOS_TIMERS
TEUCHOS_FUNC_TIME_MONITOR("Rythmos:DefaultIntegrator::restart");
#endif
if ( includesVerbLevel(verbLevel,Teuchos::VERB_LOW) )
*out << "\nAt a hard-breakpoint, restarting time integrator ...\n";
restart(&*stepper_);
}
else {
if ( includesVerbLevel(verbLevel,Teuchos::VERB_LOW) )
*out << "\nAt a soft-breakpoint, NOT restarting time integrator ...\n";
}
}
//
// B) Get the trial step control info
//
StepControlInfo<Scalar> trialStepCtrlInfo;
{
#ifdef ENABLE_RYTHMOS_TIMERS
TEUCHOS_FUNC_TIME_MONITOR("Rythmos:DefaultIntegrator::advanceStepperToTime: getStepCtrl");
#endif
if (!is_null(integrationControlStrategy_)) {
// Let an external strategy object determine the step size and type.
// Note that any breakpoint info is also related through this call.
trialStepCtrlInfo = integrationControlStrategy_->getNextStepControlInfo(
*stepper_, stepCtrlInfoLast_, currTimeStepIndex_
);
}
else {
// Take a variable step if we have no control strategy
trialStepCtrlInfo.stepType = STEP_TYPE_VARIABLE;
//.........这里部分代码省略.........
示例2: ostab
Scalar ImplicitRKStepper<Scalar>::takeStep(Scalar dt, StepSizeType stepSizeType)
{
using Teuchos::as;
using Teuchos::incrVerbLevel;
typedef ScalarTraits<Scalar> ST;
typedef Thyra::NonlinearSolverBase<Scalar> NSB;
typedef Teuchos::VerboseObjectTempState<NSB> VOTSNSB;
RCP<FancyOStream> out = this->getOStream();
Teuchos::EVerbosityLevel verbLevel = this->getVerbLevel();
Teuchos::OSTab ostab(out,1,"takeStep");
VOTSNSB solver_outputTempState(solver_,out,incrVerbLevel(verbLevel,-1));
if ( !is_null(out) && as<int>(verbLevel) >= as<int>(Teuchos::VERB_LOW) ) {
*out
<< "\nEntering " << Teuchos::TypeNameTraits<ImplicitRKStepper<Scalar> >::name()
<< "::takeStep("<<dt<<","<<toString(stepSizeType)<<") ...\n";
}
if (!isInitialized_) {
initialize_();
}
TEUCHOS_TEST_FOR_EXCEPT( stepSizeType != STEP_TYPE_FIXED ); // ToDo: Handle variable case later
// A) Set up the IRK ModelEvaluator so that it can represent the time step
// equation to be solved.
// Set irkModel_ with x_old_, t_old_, and dt
V_V( x_old_.ptr(), *x_ );
Scalar current_dt = dt;
Scalar t = timeRange_.upper();
// B) Solve the timestep equation
// Set the guess for the stage derivatives to zero (unless we can think of
// something better)
V_S( Teuchos::rcp_dynamic_cast<Thyra::VectorBase<Scalar> >(x_stage_bar_).ptr(), ST::zero() );
if (!isDirk_) { // General Implicit RK Case:
RCP<ImplicitRKModelEvaluator<Scalar> > firkModel_ =
Teuchos::rcp_dynamic_cast<ImplicitRKModelEvaluator<Scalar> >(irkModel_,true);
firkModel_->setTimeStepPoint( x_old_, t, current_dt );
// Solve timestep equation
solver_->solve( &*x_stage_bar_ );
} else { // Diagonal Implicit RK Case:
RCP<DiagonalImplicitRKModelEvaluator<Scalar> > dirkModel_ =
Teuchos::rcp_dynamic_cast<DiagonalImplicitRKModelEvaluator<Scalar> >(irkModel_,true);
dirkModel_->setTimeStepPoint( x_old_, t, current_dt );
int numStages = irkButcherTableau_->numStages();
for (int stage=0 ; stage < numStages ; ++stage) {
dirkModel_->setCurrentStage(stage);
solver_->solve( &*(x_stage_bar_->getNonconstVectorBlock(stage)) );
dirkModel_->setStageSolution( stage, *(x_stage_bar_->getVectorBlock(stage)) );
}
}
// C) Complete the step ...
// Combine the stage derivatives with the Butcher tableau "b" vector to obtain the solution at the final time.
// x_{k+1} = x_k + dt*sum_{i}^{p}(b_i*x_stage_bar_[i])
assembleIRKSolution( irkButcherTableau_->b(), current_dt, *x_old_, *x_stage_bar_,
outArg(*x_)
);
// Update time range
timeRange_ = timeRange(t,t+current_dt);
numSteps_++;
return current_dt;
}