From c66ebe7b9150df759cc464a611ab1386773f08b0 Mon Sep 17 00:00:00 2001 From: Hrvoje Jasak Date: Thu, 30 Mar 2017 10:35:36 +0100 Subject: [PATCH] Bugfix: surface stability deltaT control. Dirk Grunding --- .../setSurfaceStabilityDeltaT.H | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 applications/solvers/surfaceTracking/interTrackFoam/setSurfaceStabilityDeltaT.H diff --git a/applications/solvers/surfaceTracking/interTrackFoam/setSurfaceStabilityDeltaT.H b/applications/solvers/surfaceTracking/interTrackFoam/setSurfaceStabilityDeltaT.H new file mode 100644 index 000000000..818a0cdea --- /dev/null +++ b/applications/solvers/surfaceTracking/interTrackFoam/setSurfaceStabilityDeltaT.H @@ -0,0 +1,55 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | Version: 4.0 + \\ / A nd | Web: http://www.foam-extend.org + \\/ M anipulation | For copyright notice see file Copyright +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + foam-extend is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with foam-extend. If not, see . + +Global + setSurfaceStabilityDeltaT + +Description + Reset the timestep to maintain a constant maximum courant Number. + Reduction of time-step is immediate, but increase is damped to avoid + unstable oscillations. + +\*---------------------------------------------------------------------------*/ + +if (adjustTimeStep) +{ + scalar maxDeltaTFact = maxCo/(CoNum + SMALL); + scalar deltaTFact = min(min(maxDeltaTFact, 1.0 + 0.1*maxDeltaTFact), 1.2); + + runTime.setDeltaT + ( + Foam::min + ( + interface.surfStabCrit().value(), + Foam::min + ( + deltaTFact*runTime.deltaT().value(), + maxDeltaT + ) + ) + ); + + Info<< "deltaT = " << runTime.deltaT().value() << endl; +} + +// ************************************************************************* //