diff --git a/src/language/modules/SchemeModule.cpp b/src/language/modules/SchemeModule.cpp index db42fb35fac966801e36e22b37aab08e07d9c778..504033a1f57ec2160752f5cfacdd3e83cf289a83 100644 --- a/src/language/modules/SchemeModule.cpp +++ b/src/language/modules/SchemeModule.cpp @@ -635,10 +635,11 @@ SchemeModule::SchemeModule() const std::shared_ptr<const DiscreteFunctionVariant>& entropy, const std::vector<std::shared_ptr<const IBoundaryConditionDescriptor>>& bc_descriptor_list, - const double& dt) -> std::tuple<std::shared_ptr<const MeshVariant>, - std::shared_ptr<const DiscreteFunctionVariant>, - std::shared_ptr<const DiscreteFunctionVariant>, - std::shared_ptr<const DiscreteFunctionVariant>> { + const double& dt) + -> std::tuple< + std::shared_ptr<const MeshVariant>, std::shared_ptr<const DiscreteFunctionVariant>, + std::shared_ptr<const DiscreteFunctionVariant>, + std::shared_ptr<const DiscreteFunctionVariant>, std::shared_ptr<const double>> { return ImplicitAcousticO2SolverHandlerModified{ImplicitAcousticO2SolverHandlerModified:: SolverType::Glace2States, rho, diff --git a/src/scheme/ImplicitAcousticO2SolverModified.cpp b/src/scheme/ImplicitAcousticO2SolverModified.cpp index 113c860ff56e484bc02e388d7064b5fa8ca83c88..c1674e2aced4bd09283dc2bcca8b9b5672250b92 100644 --- a/src/scheme/ImplicitAcousticO2SolverModified.cpp +++ b/src/scheme/ImplicitAcousticO2SolverModified.cpp @@ -1626,10 +1626,12 @@ class ImplicitAcousticO2SolverHandlerModified::ImplicitAcousticO2Solver final } public: + double dt_f = 0; std::tuple<std::shared_ptr<const MeshVariant>, std::shared_ptr<const DiscreteFunctionVariant>, std::shared_ptr<const DiscreteFunctionVariant>, - std::shared_ptr<const DiscreteFunctionVariant>> + std::shared_ptr<const DiscreteFunctionVariant>, + std::shared_ptr<const double>> apply(const double& dt, const std::shared_ptr<const MeshType>& mesh, const DiscreteScalarFunction& rho, @@ -1954,7 +1956,8 @@ class ImplicitAcousticO2SolverHandlerModified::ImplicitAcousticO2Solver final if (minder) { throw NormalError("Negative volume"); }; - CFL = true; + dt_f = dt_interm; + CFL = true; } else { dt_interm = 0.5 * dt_interm; } @@ -1970,13 +1973,15 @@ class ImplicitAcousticO2SolverHandlerModified::ImplicitAcousticO2Solver final return {std::make_shared<MeshVariant>(new_mesh), std::make_shared<DiscreteFunctionVariant>(DiscreteScalarFunction{new_mesh, new_rho}), std::make_shared<DiscreteFunctionVariant>(DiscreteVectorFunction{new_mesh, new_u}), - std::make_shared<DiscreteFunctionVariant>(DiscreteScalarFunction{new_mesh, new_E})}; + std::make_shared<DiscreteFunctionVariant>(DiscreteScalarFunction{new_mesh, new_E}), + std::make_shared<double>(dt_f)}; } std::tuple<std::shared_ptr<const MeshVariant>, std::shared_ptr<const DiscreteFunctionVariant>, std::shared_ptr<const DiscreteFunctionVariant>, - std::shared_ptr<const DiscreteFunctionVariant>> + std::shared_ptr<const DiscreteFunctionVariant>, + std::shared_ptr<const double>> apply(const double& dt, const std::shared_ptr<const DiscreteFunctionVariant>& rho, const std::shared_ptr<const DiscreteFunctionVariant>& u, diff --git a/src/scheme/ImplicitAcousticO2SolverModified.hpp b/src/scheme/ImplicitAcousticO2SolverModified.hpp index 9b2cb10fe36cbd39de57026079ff9038964fd4de..070472b85aebe44758691ff1020b8d07dfb3e2f3 100644 --- a/src/scheme/ImplicitAcousticO2SolverModified.hpp +++ b/src/scheme/ImplicitAcousticO2SolverModified.hpp @@ -30,7 +30,8 @@ class ImplicitAcousticO2SolverHandlerModified virtual std::tuple<std::shared_ptr<const MeshVariant>, std::shared_ptr<const DiscreteFunctionVariant>, std::shared_ptr<const DiscreteFunctionVariant>, - std::shared_ptr<const DiscreteFunctionVariant>> + std::shared_ptr<const DiscreteFunctionVariant>, + std::shared_ptr<const double>> apply(const double& dt, const std::shared_ptr<const DiscreteFunctionVariant>& rho, const std::shared_ptr<const DiscreteFunctionVariant>& u,