diff --git a/NumLib/ODESolver/ConvergenceCriterion.h b/NumLib/ODESolver/ConvergenceCriterion.h index 59babdd8450e4a88623e1a2c5d183b7372f56b4d..feb10636e24603390a44ec7892935530b109b11a 100644 --- a/NumLib/ODESolver/ConvergenceCriterion.h +++ b/NumLib/ODESolver/ConvergenceCriterion.h @@ -10,7 +10,7 @@ #pragma once #include <memory> -#include "MathLib/LinAlg/LinAlg.h" // For MathLib::VecNormType +#include "MathLib/LinAlg/LinAlg.h" // For MathLib::VecNormType #include "NumLib/NumericsConfig.h" namespace BaseLib { @@ -82,7 +82,7 @@ public: //! Tell if the convergence criterion is satisfied. virtual bool isSatisfied() const { return _satisfied; }; - MathLib::VecNormType getVectorNormType () const { return _norm_type; } + MathLib::VecNormType getVectorNormType() const { return _norm_type; } virtual ~ConvergenceCriterion() = default; diff --git a/NumLib/ODESolver/ConvergenceCriterionDeltaX.cpp b/NumLib/ODESolver/ConvergenceCriterionDeltaX.cpp index 1bbece408622b75a3d9f16963e343b707dfc350c..ec88a9209ed08866caf908245e7ef5bff0bf0ec3 100644 --- a/NumLib/ODESolver/ConvergenceCriterionDeltaX.cpp +++ b/NumLib/ODESolver/ConvergenceCriterionDeltaX.cpp @@ -19,7 +19,8 @@ ConvergenceCriterionDeltaX::ConvergenceCriterionDeltaX( boost::optional<double>&& absolute_tolerance, boost::optional<double>&& relative_tolerance, const MathLib::VecNormType norm_type) - : ConvergenceCriterion(norm_type), _abstol(std::move(absolute_tolerance)), + : ConvergenceCriterion(norm_type), + _abstol(std::move(absolute_tolerance)), _reltol(std::move(relative_tolerance)) { if ((!_abstol) && (!_reltol)) diff --git a/NumLib/ODESolver/ConvergenceCriterionDeltaX.h b/NumLib/ODESolver/ConvergenceCriterionDeltaX.h index 71715ca1950c2e25469e5ddace7d37d9a6ca1efd..4498f70a260895032107e7fdf19f5c15cbe8e095 100644 --- a/NumLib/ODESolver/ConvergenceCriterionDeltaX.h +++ b/NumLib/ODESolver/ConvergenceCriterionDeltaX.h @@ -24,10 +24,9 @@ namespace NumLib class ConvergenceCriterionDeltaX final : public ConvergenceCriterion { public: - ConvergenceCriterionDeltaX( - boost::optional<double>&& absolute_tolerance, - boost::optional<double>&& relative_tolerance, - const MathLib::VecNormType norm_type); + ConvergenceCriterionDeltaX(boost::optional<double>&& absolute_tolerance, + boost::optional<double>&& relative_tolerance, + const MathLib::VecNormType norm_type); bool hasDeltaXCheck() const override { return true; } bool hasResidualCheck() const override { return false; } diff --git a/NumLib/ODESolver/ConvergenceCriterionPerComponent.h b/NumLib/ODESolver/ConvergenceCriterionPerComponent.h index 8da246ad60d1856e59dec0f516a5061665b79194..7f402e5de87bcdf4002f312159d1f3f6c2ce86ea 100644 --- a/NumLib/ODESolver/ConvergenceCriterionPerComponent.h +++ b/NumLib/ODESolver/ConvergenceCriterionPerComponent.h @@ -11,7 +11,7 @@ #include "ConvergenceCriterion.h" -#include "MathLib/LinAlg/LinAlg.h" // For MathLib::VecNormType +#include "MathLib/LinAlg/LinAlg.h" // For MathLib::VecNormType namespace MeshLib { @@ -29,7 +29,9 @@ class ConvergenceCriterionPerComponent : public ConvergenceCriterion { public: ConvergenceCriterionPerComponent(const MathLib::VecNormType norm_type) - :ConvergenceCriterion(norm_type) {} + : ConvergenceCriterion(norm_type) + { + } //! Sets the d.o.f. table used to extract data for a specific component. virtual void setDOFTable(NumLib::LocalToGlobalIndexMap const& dof_table, diff --git a/NumLib/ODESolver/ConvergenceCriterionResidual.cpp b/NumLib/ODESolver/ConvergenceCriterionResidual.cpp index e160ac6a4bf7a4385d711f0056fca15d41ddf2bb..57aa3110e61cbb91fd421b61a96aa52e8abb66d8 100644 --- a/NumLib/ODESolver/ConvergenceCriterionResidual.cpp +++ b/NumLib/ODESolver/ConvergenceCriterionResidual.cpp @@ -19,7 +19,8 @@ ConvergenceCriterionResidual::ConvergenceCriterionResidual( boost::optional<double>&& absolute_tolerance, boost::optional<double>&& relative_tolerance, const MathLib::VecNormType norm_type) - : ConvergenceCriterion(norm_type), _abstol(std::move(absolute_tolerance)), + : ConvergenceCriterion(norm_type), + _abstol(std::move(absolute_tolerance)), _reltol(std::move(relative_tolerance)) { if ((!_abstol) && (!_reltol)) @@ -55,8 +56,8 @@ void ConvergenceCriterionResidual::checkResidual(const GlobalVector& residual) : _residual_norm_0; if (_residual_norm_0 < std::numeric_limits<double>::epsilon()) { - INFO("Convergence criterion: |r|=%.4e |r0|=%.4e", - norm_res, _residual_norm_0); + INFO("Convergence criterion: |r|=%.4e |r0|=%.4e", norm_res, + _residual_norm_0); } else { diff --git a/NumLib/ODESolver/ConvergenceCriterionResidual.h b/NumLib/ODESolver/ConvergenceCriterionResidual.h index b63af27e9b9af5010a7e7f297341b567b4db28d0..585c930f091a62e39a2fb406d658b1c70963b1f8 100644 --- a/NumLib/ODESolver/ConvergenceCriterionResidual.h +++ b/NumLib/ODESolver/ConvergenceCriterionResidual.h @@ -24,10 +24,9 @@ namespace NumLib class ConvergenceCriterionResidual final : public ConvergenceCriterion { public: - ConvergenceCriterionResidual( - boost::optional<double>&& absolute_tolerance, - boost::optional<double>&& relative_tolerance, - const MathLib::VecNormType norm_type); + ConvergenceCriterionResidual(boost::optional<double>&& absolute_tolerance, + boost::optional<double>&& relative_tolerance, + const MathLib::VecNormType norm_type); bool hasDeltaXCheck() const override { return true; } bool hasResidualCheck() const override { return true; } diff --git a/NumLib/ODESolver/TimeDiscretization.h b/NumLib/ODESolver/TimeDiscretization.h index ede512492ec2320005e834958b5e2d148584305a..db3fb84d8b7dcf4df55d617bb1df5306f867235e 100644 --- a/NumLib/ODESolver/TimeDiscretization.h +++ b/NumLib/ODESolver/TimeDiscretization.h @@ -213,19 +213,20 @@ public: //! @} protected: - std::unique_ptr<GlobalVector> _dx; ///< Used to store \f$ u_{n+1}-u_{n}\f$. + std::unique_ptr<GlobalVector> _dx; ///< Used to store \f$ u_{n+1}-u_{n}\f$. /** - * Compute and return the relative change of solutions between two successive - * time steps by \f$ e_n = \|u^{n+1}-u^{n}\|/\|u^{n+1}\| \f$. - * - * @param x The current solution - * @param x_old The previous solution - * @param norm_type The norm type of global vector - * @return \f$ e_n = \|u^{n+1}-u^{n}\|/\|u^{n+1}\| \f$. - * - * @warning the value of x_old is changed to x - x_old after this computation. - */ + * Compute and return the relative change of solutions between two + * successive time steps by \f$ e_n = \|u^{n+1}-u^{n}\|/\|u^{n+1}\| \f$. + * + * @param x The current solution + * @param x_old The previous solution + * @param norm_type The norm type of global vector + * @return \f$ e_n = \|u^{n+1}-u^{n}\|/\|u^{n+1}\| \f$. + * + * @warning the value of x_old is changed to x - x_old after this + * computation. + */ double computeRelativeChangeFromPreviousTimestep( GlobalVector const& x, GlobalVector const& x_old, @@ -288,8 +289,7 @@ private: class ForwardEuler final : public TimeDiscretization { public: - ForwardEuler() - : _x_old(NumLib::GlobalVectorProvider::provider.getVector()) + ForwardEuler() : _x_old(NumLib::GlobalVectorProvider::provider.getVector()) { } @@ -438,7 +438,7 @@ public: * the first timesteps. */ explicit BackwardDifferentiationFormula(const unsigned num_steps) - : _num_steps(num_steps) + : _num_steps(num_steps) { assert(1 <= num_steps && num_steps <= 6); _xs_old.reserve(num_steps); diff --git a/NumLib/TimeStepping/Algorithms/CreateEvolutionaryPIDcontroller.cpp b/NumLib/TimeStepping/Algorithms/CreateEvolutionaryPIDcontroller.cpp index 84b63208c16ec97563017fcaeec4d48e414b0abc..c060c8f8f3b6a612b0dd04e00187bd3f3adf477c 100644 --- a/NumLib/TimeStepping/Algorithms/CreateEvolutionaryPIDcontroller.cpp +++ b/NumLib/TimeStepping/Algorithms/CreateEvolutionaryPIDcontroller.cpp @@ -44,8 +44,8 @@ std::unique_ptr<TimeStepAlgorithm> createEvolutionaryPIDcontroller( auto specific_times = //! \ogs_file_param{prj__time_loop__time_stepping__EvolutionaryPIDcontroller__specific_times} - config.getConfigParameter<std::vector<double>>( - "specific_times", std::vector<double>{}); + config.getConfigParameter<std::vector<double>>("specific_times", + std::vector<double>{}); if (!specific_times.empty()) { // Sort in descending order. diff --git a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp index f3317e6e1e11a564b3904e3312621f64a18f67f8..e1571221440478f3ffafb9ceebfde2de01626fe6 100644 --- a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp +++ b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp @@ -27,9 +27,8 @@ bool EvolutionaryPIDcontroller::next(const double solution_error) { _is_accepted = false; - double h_new = (e_n > zero_threshlod) - ? _ts_current.dt() * _tol / e_n - : 0.5 * _ts_current.dt(); + double h_new = (e_n > zero_threshlod) ? _ts_current.dt() * _tol / e_n + : 0.5 * _ts_current.dt(); h_new = limitStepSize(h_new, _ts_current.dt()); h_new = checkSpecificTimeReached(h_new); @@ -65,7 +64,8 @@ bool EvolutionaryPIDcontroller::next(const double solution_error) std::pow(_tol / e_n, _kI) * std::pow( _e_n_minus1 * _e_n_minus1 / (e_n * _e_n_minus2), - _kD) * h_n; + _kD) * + h_n; } else { diff --git a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.h b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.h index 5e5226667f64bc5624bbbd2968be39d5247cd14a..bd22e0080f0dfa6a46ea334b12cb4dfc78c2e619 100644 --- a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.h +++ b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.h @@ -11,8 +11,8 @@ #pragma once -#include <vector> #include <memory> +#include <vector> #include "TimeStepAlgorithm.h" diff --git a/NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h b/NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h index 1c459e5b7972963f64f992988d2e963cd53a32c1..a74cd0f6a9fea415f7eefab749f3c88650a8e49a 100644 --- a/NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h +++ b/NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h @@ -11,8 +11,8 @@ #pragma once -#include <vector> #include <cmath> +#include <vector> #include "NumLib/TimeStepping/TimeStep.h" @@ -81,6 +81,7 @@ public: /// Get a flag to indicate whether this algorithm needs to compute /// solution error. The default return value is false. virtual bool isSolutionErrorComputationNeeded() { return false; } + protected: /// initial time const double _t_initial; diff --git a/NumLib/TimeStepping/CreateTimeStepper.cpp b/NumLib/TimeStepping/CreateTimeStepper.cpp index 3326b397756a75fb8836eb8cf5136e1875562d02..3caf4bdc960303548e061eefdac79b51c3de274f 100644 --- a/NumLib/TimeStepping/CreateTimeStepper.cpp +++ b/NumLib/TimeStepping/CreateTimeStepper.cpp @@ -17,9 +17,9 @@ #include "BaseLib/ConfigTree.h" #include "BaseLib/Error.h" +#include "NumLib/TimeStepping/Algorithms/CreateEvolutionaryPIDcontroller.h" #include "NumLib/TimeStepping/Algorithms/CreateFixedTimeStepping.h" #include "NumLib/TimeStepping/Algorithms/FixedTimeStepping.h" -#include "NumLib/TimeStepping/Algorithms/CreateEvolutionaryPIDcontroller.h" namespace NumLib { diff --git a/NumLib/TimeStepping/TimeStep.h b/NumLib/TimeStepping/TimeStep.h index a85ebb4827fecf13d5e4c2feed6b5c0d171ad5b9..244648015660d991a96e26fce6a8aac41278bb10 100644 --- a/NumLib/TimeStepping/TimeStep.h +++ b/NumLib/TimeStepping/TimeStep.h @@ -110,6 +110,7 @@ public: double dt() const { return _dt; } /// the number of time _steps std::size_t steps() const { return _steps; } + private: /// previous time step double _previous; diff --git a/ProcessLib/AbstractJacobianAssembler.h b/ProcessLib/AbstractJacobianAssembler.h index d081da64d4f45b66c986fd9feb01dfc19a2fcebe..e20fdb17ecce4178e2ae6c6a0dd5c2f03e30aa1a 100644 --- a/ProcessLib/AbstractJacobianAssembler.h +++ b/ProcessLib/AbstractJacobianAssembler.h @@ -40,7 +40,9 @@ public: std::vector<double>& /*local_K_data*/, std::vector<double>& /*local_b_data*/, std::vector<double>& /*local_Jac_data*/, - LocalCouplingTerm const& /*coupling_term*/) {} + LocalCouplingTerm const& /*coupling_term*/) + { + } virtual ~AbstractJacobianAssembler() = default; }; diff --git a/ProcessLib/LocalAssemblerInterface.h b/ProcessLib/LocalAssemblerInterface.h index c9ad2950358f366fa3cf994720d5bd4c1b7c2d49..34b88a5c461e0dce441e37f43c9c5b1282aae097 100644 --- a/ProcessLib/LocalAssemblerInterface.h +++ b/ProcessLib/LocalAssemblerInterface.h @@ -56,15 +56,13 @@ public: std::vector<double>& local_b_data, std::vector<double>& local_Jac_data); - virtual void assembleWithJacobianAndCoupling(double const t, - std::vector<double> const& local_x, - std::vector<double> const& local_xdot, - const double dxdot_dx, const double dx_dx, - std::vector<double>& local_M_data, - std::vector<double>& local_K_data, - std::vector<double>& local_b_data, - std::vector<double>& local_Jac_data, - LocalCouplingTerm const& coupling_term); + virtual void assembleWithJacobianAndCoupling( + double const t, std::vector<double> const& local_x, + std::vector<double> const& local_xdot, const double dxdot_dx, + const double dx_dx, std::vector<double>& local_M_data, + std::vector<double>& local_K_data, std::vector<double>& local_b_data, + std::vector<double>& local_Jac_data, + LocalCouplingTerm const& coupling_term); virtual void computeSecondaryVariable(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const& dof_table, diff --git a/ProcessLib/UncoupledProcessesTimeLoop.cpp b/ProcessLib/UncoupledProcessesTimeLoop.cpp index e8b122ca6a79706d77a373a1f1d0657cff094ff9..505e4be3dacd754a2f0db9b34445465386c368d7 100644 --- a/ProcessLib/UncoupledProcessesTimeLoop.cpp +++ b/ProcessLib/UncoupledProcessesTimeLoop.cpp @@ -9,11 +9,11 @@ #include "UncoupledProcessesTimeLoop.h" -#include "BaseLib/uniqueInsert.h" #include "BaseLib/RunTime.h" +#include "BaseLib/uniqueInsert.h" +#include "NumLib/ODESolver/ConvergenceCriterionPerComponent.h" #include "NumLib/ODESolver/TimeDiscretizationBuilder.h" #include "NumLib/ODESolver/TimeDiscretizedODESystem.h" -#include "NumLib/ODESolver/ConvergenceCriterionPerComponent.h" #include "NumLib/TimeStepping/CreateTimeStepper.h" #include "MathLib/LinAlg/LinAlg.h" diff --git a/Tests/NumLib/TestTimeSteppingEvolutionaryPIDcontroller.cpp b/Tests/NumLib/TestTimeSteppingEvolutionaryPIDcontroller.cpp index 1e509148fcf6b0f8545a63f5141ba51edc79e4e8..593012d33a51a5fca021930f4d466e67d18b5772 100644 --- a/Tests/NumLib/TestTimeSteppingEvolutionaryPIDcontroller.cpp +++ b/Tests/NumLib/TestTimeSteppingEvolutionaryPIDcontroller.cpp @@ -11,15 +11,15 @@ #include <gtest/gtest.h> -#include <vector> #include <memory> +#include <vector> #include <logog/include/logog.hpp> #include "BaseLib/ConfigTree.h" -#include "NumLib/TimeStepping/TimeStep.h" #include "NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.h" +#include "NumLib/TimeStepping/TimeStep.h" #include "Tests/TestTools.h" diff --git a/Tests/NumLib/TestTimeSteppingIterationNumber.cpp b/Tests/NumLib/TestTimeSteppingIterationNumber.cpp index 00c82b9813715a989d08b59050b1e14c26e07c8f..49c8321b0446c173d79da613cc3d064fda46c9eb 100644 --- a/Tests/NumLib/TestTimeSteppingIterationNumber.cpp +++ b/Tests/NumLib/TestTimeSteppingIterationNumber.cpp @@ -31,7 +31,7 @@ TEST(NumLib, TimeSteppingIterationNumberBased1) const double solution_error = 0.; - ASSERT_TRUE(alg.next(solution_error)); // t=2, dt=1 + ASSERT_TRUE(alg.next(solution_error)); // t=2, dt=1 NumLib::TimeStep ts = alg.getTimeStep(); ASSERT_EQ(1u, ts.steps()); ASSERT_EQ(1., ts.previous()); @@ -39,11 +39,11 @@ TEST(NumLib, TimeSteppingIterationNumberBased1) ASSERT_EQ(1., ts.dt()); ASSERT_TRUE(alg.accepted()); - ASSERT_TRUE(alg.next(solution_error)); // t=4, dt=2 + ASSERT_TRUE(alg.next(solution_error)); // t=4, dt=2 // dt*=2 alg.setIterationNumber(3); - ASSERT_TRUE(alg.next(solution_error)); // t=8, dt=4 + ASSERT_TRUE(alg.next(solution_error)); // t=8, dt=4 ts = alg.getTimeStep(); ASSERT_EQ(3u, ts.steps()); ASSERT_EQ(4., ts.previous()); @@ -53,7 +53,7 @@ TEST(NumLib, TimeSteppingIterationNumberBased1) // dt*=1 alg.setIterationNumber(5); - ASSERT_TRUE(alg.next(solution_error)); // t=12, dt=4 + ASSERT_TRUE(alg.next(solution_error)); // t=12, dt=4 ts = alg.getTimeStep(); ASSERT_EQ(4u, ts.steps()); ASSERT_EQ(8., ts.previous()); @@ -63,7 +63,7 @@ TEST(NumLib, TimeSteppingIterationNumberBased1) // dt*=0.5 alg.setIterationNumber(7); - ASSERT_TRUE(alg.next(solution_error)); // t=14, dt=2 + ASSERT_TRUE(alg.next(solution_error)); // t=14, dt=2 ts = alg.getTimeStep(); ASSERT_EQ(5u, ts.steps()); ASSERT_EQ(12., ts.previous()); @@ -72,8 +72,8 @@ TEST(NumLib, TimeSteppingIterationNumberBased1) ASSERT_TRUE(alg.accepted()); // dt*=0.25 but dt_min = 1 - alg.setIterationNumber(8); // exceed max - ASSERT_TRUE(alg.next(solution_error)); // t=13, dt=1 + alg.setIterationNumber(8); // exceed max + ASSERT_TRUE(alg.next(solution_error)); // t=13, dt=1 ts = alg.getTimeStep(); ASSERT_EQ(5u, ts.steps()); ASSERT_EQ(12., ts.previous()); @@ -83,7 +83,7 @@ TEST(NumLib, TimeSteppingIterationNumberBased1) // restart, dt*=1 alg.setIterationNumber(4); - ASSERT_TRUE(alg.next(solution_error)); // t=14, dt=1 + ASSERT_TRUE(alg.next(solution_error)); // t=14, dt=1 ts = alg.getTimeStep(); ASSERT_EQ(6u, ts.steps()); ASSERT_EQ(13., ts.previous()); diff --git a/Tests/NumLib/TimeSteppingTestingTools.h b/Tests/NumLib/TimeSteppingTestingTools.h index eaeca4df6100f4c60c50f0b6f338e2ae19872537..180fef33f5992eec9fa587a8db59e10b80988b60 100644 --- a/Tests/NumLib/TimeSteppingTestingTools.h +++ b/Tests/NumLib/TimeSteppingTestingTools.h @@ -31,7 +31,8 @@ std::vector<double> timeStepping(T_TIME_STEPPING &algorithm, T* obj=nullptr) std::vector<double> vec_t; vec_t.push_back(algorithm.begin()); - while (algorithm.next(0.0)) { + while (algorithm.next(0.0)) + { NumLib::TimeStep t = algorithm.getTimeStep(); //INFO("t: n=%d,t=%g,dt=%g", t.steps(), t.current(), t.dt()); if (obj)