From d6dab59bfde879c7e3f75db4de1e6d06a8416322 Mon Sep 17 00:00:00 2001 From: tmjnijssen Date: Thu, 14 Apr 2022 15:50:22 +0200 Subject: [PATCH] add interpolation --- .../transferFluidProperties.C | 31 ++++++++++++++++--- .../transferFluidProperties.H | 3 +- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/lagrangian/cfdemParticle/subModels/forceModel/transferFluidProperties/transferFluidProperties.C b/src/lagrangian/cfdemParticle/subModels/forceModel/transferFluidProperties/transferFluidProperties.C index 5faf375d..5c2695d5 100644 --- a/src/lagrangian/cfdemParticle/subModels/forceModel/transferFluidProperties/transferFluidProperties.C +++ b/src/lagrangian/cfdemParticle/subModels/forceModel/transferFluidProperties/transferFluidProperties.C @@ -52,14 +52,17 @@ transferFluidProperties::transferFluidProperties ) : forceModel(dict,sm), - propsDict_(dict.subDict(typeName + "Props")), - verbose_(propsDict_.lookupOrDefault("verbose",false)) + propsDict_(dict.subDict(typeName + "Props")) { particleCloud_.registerParticleProperty("fluidDensity",1); particleCloud_.registerParticleProperty("fluidViscosity",1); // init force sub model setForceSubModels(propsDict_); + // define switches which can be read from dict + forceSubM(0).setSwitchesList(SW_VERBOSE,true); // activate search for verbose switch + forceSubM(0).setSwitchesList(SW_INTERPOLATION,true); // activate search for interpolate switch + forceSubM(0).readSwitches(); } @@ -82,22 +85,40 @@ void transferFluidProperties::setForce() const const volScalarField& rhoField = forceSubM(0).rhoField(); const volScalarField& nufField = forceSubM(0).nuField(); + interpolationCellPoint rhoInterpolator_(rhoField); + interpolationCellPoint nufInterpolator_(nufField); + label cellI = 0; + double rho = 0.; + double nuf = 0.; + vector position(0,0,0); for(int index = 0; index < particleCloud_.numberOfParticles(); ++index) { cellI = particleCloud_.cellIDs()[index][0]; if (cellI >= 0) { - fluidDensity_[index][0] = rhoField[cellI]; - fluidViscosity_[index][0] = nufField[cellI] * rhoField[cellI]; + if(forceSubM(0).interpolation()) + { + position = particleCloud_.position(index); + rho = rhoInterpolator_.interpolate(position,cellI); + nuf = nufInterpolator_.interpolate(position,cellI); + } + else + { + rho = rhoField[cellI]; + nuf = nufField[cellI]; + } + + fluidDensity_[index][0] = rho; + fluidViscosity_[index][0] = nuf*rho; } } particleCloud_.dataExchangeM().giveData("fluidDensity","scalar-atom",fluidDensity_); particleCloud_.dataExchangeM().giveData("fluidViscosity","scalar-atom",fluidViscosity_); - if (verbose_) Info << "give data done" << endl; + if (forceSubM(0).verbose()) Info << "give data done" << endl; } diff --git a/src/lagrangian/cfdemParticle/subModels/forceModel/transferFluidProperties/transferFluidProperties.H b/src/lagrangian/cfdemParticle/subModels/forceModel/transferFluidProperties/transferFluidProperties.H index 9a2853ae..1dc52f85 100644 --- a/src/lagrangian/cfdemParticle/subModels/forceModel/transferFluidProperties/transferFluidProperties.H +++ b/src/lagrangian/cfdemParticle/subModels/forceModel/transferFluidProperties/transferFluidProperties.H @@ -24,6 +24,7 @@ SourceFiles #define transferFluidProperties_H #include "forceModel.H" +#include "interpolationCellPoint.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -42,8 +43,6 @@ private: dictionary propsDict_; - bool verbose_; - public: //- Runtime type information