From 7bb266bc41782b778c0735d9d22fe7ebedcec8a1 Mon Sep 17 00:00:00 2001 From: danielque Date: Fri, 26 Jul 2019 16:59:56 +0200 Subject: [PATCH] clamp tsf between 0 and 1 the time step fraction should never be outside these bounds since we don't allow variable time steps; hence any value outside these bounds must come from numerical rounding/precision issues; by doing this we no longer need the check in cfdemCloud --- src/lagrangian/cfdemParticle/cfdemCloud/cfdemCloud.C | 8 +------- .../dataExchangeModel/dataExchangeModel.C | 2 +- .../dataExchangeModel/dataExchangeModel.H | 6 ++++++ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lagrangian/cfdemParticle/cfdemCloud/cfdemCloud.C b/src/lagrangian/cfdemParticle/cfdemCloud/cfdemCloud.C index 5702c2f5..bb205cc4 100644 --- a/src/lagrangian/cfdemParticle/cfdemCloud/cfdemCloud.C +++ b/src/lagrangian/cfdemParticle/cfdemCloud/cfdemCloud.C @@ -673,13 +673,7 @@ bool cfdemCloud::evolve int old_precision = Info().precision(10); Info << "\n timeStepFraction() = " << timeStepFrac << endl; Info().precision(old_precision); - if(timeStepFrac > 1.0000001) - { - // FatalError << "cfdemCloud::dataExchangeM().timeStepFraction()>1: Do not do this, since dangerous. This might be due to the fact that you used a adjustable CFD time step. Please use a fixed CFD time step." << abort(FatalError); - old_precision = Warning().precision(10); - Warning << "cfdemCloud::dataExchangeM().timeStepFraction() = " << timeStepFrac << endl; - Warning().precision(old_precision); - } + clockM().start(24,"interpolateEulerFields"); // update voidFractionField diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.C b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.C index 7f143f30..168f513c 100755 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.C +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.C @@ -209,7 +209,7 @@ bool dataExchangeModel::couple(int i) scalar dataExchangeModel::timeStepFraction() const { //return fraction between previous coupling TS and actual TS - return ( (particleCloud_.mesh().time().timeIndex() - timeIndexOffset_) * particleCloud_.mesh().time().deltaTValue() / couplingTime() - (couplingStep_ - 1) ); + return clamp( (particleCloud_.mesh().time().timeIndex() - timeIndexOffset_) * particleCloud_.mesh().time().deltaTValue() / couplingTime() - (couplingStep_ - 1) ); } int dataExchangeModel::getNumberOfParticles() const diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H index a4b73bf1..7d483325 100755 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H @@ -72,6 +72,12 @@ protected: // Protected member functions + // note: C++17 has std::clamp + scalar clamp(scalar v, scalar lo=0.0, scalar hi=1.0) const + { + return ((v < lo) ? lo : (hi < v) ? hi : v); + } + public: //- Runtime type information