From 91dbeb42e4e4970775bbe625934847be68956240 Mon Sep 17 00:00:00 2001 From: Achuth1992 Date: Mon, 8 Oct 2018 16:54:35 +0200 Subject: [PATCH] Corrected the two-way coupling of the immersed boundary method. Corrected the torque calculation for the cfdemSolverIBTorque and modified the ShirgaonkarIBTorque calculations. Included fvOptions.H in the solvers for activation the usage of fvOptions. --- .../solvers/cfdemSolverIB/cfdemSolverIB.C | 2 + .../cfdemSolverIBTorque/cfdemSolverIBTorque.C | 2 + etc/solver-list.txt | 1 + src/lagrangian/cfdemParticle/Make/files | 2 + .../derived/cfdemCloudIB/cfdemCloudIB.C | 1 + .../cfdemCloudIBmodified.H | 3 +- .../forceModel/ShirgaonkarIB/ShirgaonkarIB.C | 54 +++++++++++++++++++ .../forceModel/ShirgaonkarIB/ShirgaonkarIB.H | 3 ++ .../ShirgaonkarIBTorque/ShirgaonkarIBTorque.C | 2 +- .../IBVoidFraction/IBVoidFraction.C | 2 +- 10 files changed, 69 insertions(+), 3 deletions(-) diff --git a/applications/solvers/cfdemSolverIB/cfdemSolverIB.C b/applications/solvers/cfdemSolverIB/cfdemSolverIB.C index cb3f3235..90b5d7c1 100755 --- a/applications/solvers/cfdemSolverIB/cfdemSolverIB.C +++ b/applications/solvers/cfdemSolverIB/cfdemSolverIB.C @@ -53,6 +53,8 @@ Contributions #include "cellSet.H" +#include "fvOptions.H" // added the fvOptions library + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) diff --git a/applications/solvers/cfdemSolverIBTorque/cfdemSolverIBTorque.C b/applications/solvers/cfdemSolverIBTorque/cfdemSolverIBTorque.C index 3d57b148..6582c686 100755 --- a/applications/solvers/cfdemSolverIBTorque/cfdemSolverIBTorque.C +++ b/applications/solvers/cfdemSolverIBTorque/cfdemSolverIBTorque.C @@ -53,6 +53,8 @@ Contributions #include "cellSet.H" +#include "fvOptions.H" // added fvOptions + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) diff --git a/etc/solver-list.txt b/etc/solver-list.txt index 9d9911fa..8be085a4 100644 --- a/etc/solver-list.txt +++ b/etc/solver-list.txt @@ -3,3 +3,4 @@ cfdemSolverPiso/dir cfdemSolverRhoPimple/dir cfdemSolverIB/dir cfdemSolverPisoScalar/dir +cfdemSolverIBTorque/dir diff --git a/src/lagrangian/cfdemParticle/Make/files b/src/lagrangian/cfdemParticle/Make/files index 7cc1c491..07f63e68 100644 --- a/src/lagrangian/cfdemParticle/Make/files +++ b/src/lagrangian/cfdemParticle/Make/files @@ -25,6 +25,7 @@ $(cfdemCloud)/cfdemCloudIO.C derived/cfdemCloudIB/cfdemCloudIB.C derived/cfdemCloudMS/cfdemCloudMS.C derived/cfdemCloudEnergy/cfdemCloudEnergy.C +derived/cfdemCloudIBmodified/cfdemCloudIBmodified.C $(cfdTools)/global.C $(cfdTools)/newGlobal.C @@ -69,6 +70,7 @@ $(forceModels)/Fines/FinesFields.C $(forceModels)/Fines/FanningDynFines.C $(forceModels)/Fines/ErgunStatFines.C $(forceModels)/granKineticEnergy/granKineticEnergy.C +$(forceModels)/ShirgaonkarIBTorque/ShirgaonkarIBTorque.C $(forceModelsMS)/forceModelMS/forceModelMS.C $(forceModelsMS)/forceModelMS/newForceModelMS.C diff --git a/src/lagrangian/cfdemParticle/derived/cfdemCloudIB/cfdemCloudIB.C b/src/lagrangian/cfdemParticle/derived/cfdemCloudIB/cfdemCloudIB.C index 8fec93d2..a5fb1177 100644 --- a/src/lagrangian/cfdemParticle/derived/cfdemCloudIB/cfdemCloudIB.C +++ b/src/lagrangian/cfdemParticle/derived/cfdemCloudIB/cfdemCloudIB.C @@ -192,6 +192,7 @@ void cfdemCloudIB::calcVelocityCorrection // impose field velocity U[cellI]=(1-voidfractions_[index][subCell])*uParticle+voidfractions_[index][subCell]*U[cellI]; } + } //} } diff --git a/src/lagrangian/cfdemParticle/derived/cfdemCloudIBmodified/cfdemCloudIBmodified.H b/src/lagrangian/cfdemParticle/derived/cfdemCloudIBmodified/cfdemCloudIBmodified.H index 059e55b4..c9fb9847 100644 --- a/src/lagrangian/cfdemParticle/derived/cfdemCloudIBmodified/cfdemCloudIBmodified.H +++ b/src/lagrangian/cfdemParticle/derived/cfdemCloudIBmodified/cfdemCloudIBmodified.H @@ -62,6 +62,7 @@ protected: label pRefCell_; scalar pRefValue_; + // Modifications mutable double **DEMTorques_; mutable bool haveEvolvedOnce_; @@ -89,6 +90,7 @@ public: bool reAllocArrays(); + // Modification inline double ** DEMTorques() const; bool evolve(); @@ -102,7 +104,6 @@ public: { return angularVelocities_; } - }; diff --git a/src/lagrangian/cfdemParticle/subModels/forceModel/ShirgaonkarIB/ShirgaonkarIB.C b/src/lagrangian/cfdemParticle/subModels/forceModel/ShirgaonkarIB/ShirgaonkarIB.C index d0002a81..47d8f4e6 100644 --- a/src/lagrangian/cfdemParticle/subModels/forceModel/ShirgaonkarIB/ShirgaonkarIB.C +++ b/src/lagrangian/cfdemParticle/subModels/forceModel/ShirgaonkarIB/ShirgaonkarIB.C @@ -65,6 +65,7 @@ ShirgaonkarIB::ShirgaonkarIB propsDict_(dict.subDict(typeName + "Props")), verbose_(false), twoDimensional_(false), + multisphere_(false), // drag for a multisphere particle depth_(1), velFieldName_(propsDict_.lookup("velFieldName")), U_(sm.mesh().lookupObject (velFieldName_)), @@ -85,6 +86,9 @@ ShirgaonkarIB::ShirgaonkarIB Info << "depth of domain is assumed to be :" << depth_ << endl; } + // Switch to initiate the multisphere calculation + if(propsDict_.found("multisphere")) multisphere_=true; + // init force sub model setForceSubModels(propsDict_); @@ -151,8 +155,58 @@ void ShirgaonkarIB::setForce() const if(verbose_) Info << "impForces = " << impForces()[index][0]<<","< -1 && index == 0) // Force on 1st particle + { + dragMS += h[cellID]*h.mesh().V()[cellID]; + + } + + else if(cellID > -1 && index > 0) + { + + // Check for cellID in previous particles + for(int i=index-1; i>= 0; i--) + { + for(int j=0; j< particleCloud_.voidFractionM().cellsPerParticle()[i][0];j++) + { + label cell = particleCloud_.cellIDs()[i][j]; + if(cellID == cell){prev++;} + } + } + if(prev == 0){ dragMS += h[cellID]*h.mesh().V()[cellID];} + } + } + } + + Info << "Drag force on particle clump = " << dragMS[0]<<","<