diff --git a/src/coreComponents/dataRepository/ExecutableGroup.hpp b/src/coreComponents/dataRepository/ExecutableGroup.hpp index c7e9923a0f..c573f93a78 100644 --- a/src/coreComponents/dataRepository/ExecutableGroup.hpp +++ b/src/coreComponents/dataRepository/ExecutableGroup.hpp @@ -119,20 +119,35 @@ class ExecutableGroup : public dataRepository::Group */ TimesteppingBehavior getTimesteppingBehavior() const { return m_timesteppingBehavior; } + /** + * @brief Get the track of substeps + * @return A vector containing the track of substeps + */ std::vector< real64 > const & getSubStepDt() const { return m_subStepDt; } + /** + * @brief Get the track of substeps + * @return A const vector containing the track of substeps + */ std::vector< real64 > & getSubStepDt() { return m_subStepDt; } - integer const & getNumOfSubSteps() const { return m_numOfSubSteps; } - + /** + * @brief Get number of time sub-steps allowed for the solver + * @return Number of time sub-steps allowed + */ integer & getNumOfSubSteps() { return m_numOfSubSteps; } + /** + * @brief Set number of time sub-steps allowed for the solver + */ void setNumOfSubSteps( integer nbStep ) { m_numOfSubSteps = nbStep;} private: + /// Keep track of substeps std::vector< real64 > m_subStepDt = {}; + /// number of time sub-steps allowed for the solver integer m_numOfSubSteps = 0; TimesteppingBehavior m_timesteppingBehavior = TimesteppingBehavior::DoesNotDetermineTimeStepSize; diff --git a/src/coreComponents/events/EventBase.hpp b/src/coreComponents/events/EventBase.hpp index 8cf84ce7aa..73d63b1371 100644 --- a/src/coreComponents/events/EventBase.hpp +++ b/src/coreComponents/events/EventBase.hpp @@ -167,8 +167,16 @@ class EventBase : public ExecutableGroup */ void getExecutionOrder( array1d< integer > & eventCounters ); + /** + * @brief Get the track of substeps + * @return A vector containing the the track of substeps + */ std::vector< real64 > const & getSubStepDt() const { return m_target->getSubStepDt(); } + /** + * @brief Get number of time sub-steps allowed for the solver + * @return Number of time sub-steps allowed + */ integer const & getNumOfSubSteps() const { return m_target->getNumOfSubSteps(); } diff --git a/src/coreComponents/events/EventManager.cpp b/src/coreComponents/events/EventManager.cpp index 6ed4d61345..56884f9c5b 100644 --- a/src/coreComponents/events/EventManager.cpp +++ b/src/coreComponents/events/EventManager.cpp @@ -200,7 +200,6 @@ bool EventManager::run( DomainPartition & domain ) if( subEvent->getEventTarget()->getTimesteppingBehavior() == ExecutableGroup::TimesteppingBehavior::DeterminesTimeStepSize ) { - subStepDt = subEvent->getSubStepDt(); numTimeSteps = subEvent->getNumOfSubSteps(); } @@ -269,7 +268,7 @@ void EventManager::outputTime( LogPart & logPart ) const logPart.addDescription( "- Time : ", timeInfosUnfolded, timeCompletionSeconds ); logPart.addDescription( "- Delta Time : ", units::TimeFormatInfo::fromSeconds( m_dt ).toString() ); logPart.addDescription( "- Cycle : ", m_cycle, cycleLimited ); - logPart.setMaxWidth(70 ); + logPart.setMaxWidth( 70 ); // We are keeping the old outputs to keep compatibility with current log reading scripts. if( m_timeOutputFormat==TimeOutputFormat::full ) @@ -318,7 +317,7 @@ void EventManager::logEndOfCycleInformation( LogPart & logpart, std::cout << units::TimeFormatInfo::fromSeconds( subStepDt[0] ).toString() << std::endl; for( integer i = 0; i < numOfSubSteps; ++i ) { - if (i > 0) + if( i > 0 ) { logMessage << ", "; } diff --git a/src/coreComponents/physicsSolvers/PhysicsSolverBase.cpp b/src/coreComponents/physicsSolvers/PhysicsSolverBase.cpp index d9857b3dcd..fe6b30a9c1 100644 --- a/src/coreComponents/physicsSolvers/PhysicsSolverBase.cpp +++ b/src/coreComponents/physicsSolvers/PhysicsSolverBase.cpp @@ -291,7 +291,9 @@ bool PhysicsSolverBase::execute( real64 const time_n, nextDt, cycleNumber, domain ); - getNumOfSubSteps()++; + + setNumOfSubSteps( subStep ); + subStepDt[subStep] = dtAccepted; // increment the cumulative number of nonlinear and linear iterations