From 5e444722c920541f727233105683171ed71bd336 Mon Sep 17 00:00:00 2001 From: Paul Kieckhefen Date: Tue, 13 Nov 2018 10:55:28 +0100 Subject: [PATCH 01/28] extend documentation. cellIdComm is not mentioned on purpose, since no case with performance gains from it has been found so far. --- doc/dataExchangeModel_twoWayOne2One.txt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/dataExchangeModel_twoWayOne2One.txt b/doc/dataExchangeModel_twoWayOne2One.txt index 995535af..af474060 100644 --- a/doc/dataExchangeModel_twoWayOne2One.txt +++ b/doc/dataExchangeModel_twoWayOne2One.txt @@ -14,10 +14,12 @@ Defined in couplingProperties dictionary. dataExchangeModel twoWayOne2One; twoWayOne2OneProps \{ - liggghtsPath "path"; + liggghtsPath "path"; + useStaticProcMap useMap; \}; :pre -{path} = path to the DEM simulation input file :ulb,l +{path} = path to the DEM simulation input file :ulb,l +{useMap} = yes or no, determines if the map is build once (yes) or every coupling step (no) (default: no):l :ule [Examples:] @@ -25,12 +27,13 @@ twoWayOne2OneProps dataExchangeModel twoWayOne2One; twoWayOne2OneProps \{ - liggghtsPath "../DEM/in.liggghts_init"; + liggghtsPath "../DEM/in.liggghts_init"; + useStaticProcMap yes; \} :pre [Description:] -The data exchange model performs the data exchange between the DEM code and the CFD code. The twoWayOne2One model is a model that can exchange particle properties from DEM to CFD and from CFD to DEM. Data is exchanged via MPI technique using a more sophisticated mapping scheme than twoWayMPI / all2all and scales much better for large systems and many cores. The DEM run is executed by the coupling model, via a liggghtsCommandModel object. +The data exchange model performs the data exchange between the DEM code and the CFD code. The twoWayOne2One model is a model that can exchange particle properties from DEM to CFD and from CFD to DEM. Data is exchanged via MPI technique using a more sophisticated mapping scheme than twoWayMPI / all2all and scales much better for large systems and many cores. The DEM run is executed by the coupling model, via a liggghtsCommandModel object. Only use staticProcMap yes if no load balancing is employed. [Restrictions:] From 191d1b84a0992252b982c0e56fcab7d6a6a3aae2 Mon Sep 17 00:00:00 2001 From: Paul Kieckhefen Date: Fri, 16 Nov 2018 10:21:01 +0100 Subject: [PATCH 02/28] make merge from develop compile. --- .../twoWayOne2One/twoWayOne2One.C | 34 +++++++++---------- .../twoWayOne2One/twoWayOne2One.H | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C index d520a627..66cae69a 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C @@ -502,7 +502,7 @@ void inline twoWayOne2One::destroy(int* array) const } //============== -bool twoWayOne2One::couple(int i) const +bool twoWayOne2One::couple(int i) { bool coupleNow = false; if (i==0) @@ -527,11 +527,11 @@ bool twoWayOne2One::couple(int i) const // Check if exact timing is needed // get time for execution // store time for execution in list - if(particleCloud_.liggghtsCommand()[i]().exactTiming()) + if(particleCloud_.liggghtsCommand(i).exactTiming()) { exactTiming = true; DynamicList h - = particleCloud_.liggghtsCommand()[i]().executionsWithinPeriod + = particleCloud_.liggghtsCommand(i).executionsWithinPeriod ( TSstart(), TSend() @@ -567,7 +567,7 @@ bool twoWayOne2One::couple(int i) const << endl; } - if(particleCloud_.liggghtsCommand()[i]().type() == "runLiggghts") + if(particleCloud_.liggghtsCommand(i).type() == "runLiggghts") { runComNr = i; } @@ -586,22 +586,22 @@ bool twoWayOne2One::couple(int i) const { // set run command till interrupt DEMstepsRun += DEMstepsToInterrupt[j]; - particleCloud_.liggghtsCommand()[runComNr]().set(DEMstepsToInterrupt[j]); - const char* command = particleCloud_.liggghtsCommand()[runComNr]().command(0); + particleCloud_.liggghtsCommand(runComNr).set(DEMstepsToInterrupt[j]); + const char* command = particleCloud_.liggghtsCommand(runComNr).command(0); Info<< "Executing run command: '"<< command <<"'"<< endl; lmp->input->one(command); // run liggghts command with exact timing - command = particleCloud_.liggghtsCommand()[lcModel[j]]().command(0); + command = particleCloud_.liggghtsCommand(lcModel[j]).command(0); Info << "Executing command: '"<< command <<"'"<< endl; lmp->input->one(command); } // do the run - if(particleCloud_.liggghtsCommand()[runComNr]().runCommand(couplingStep())) + if(particleCloud_.liggghtsCommand(runComNr).runCommand(couplingStep())) { - particleCloud_.liggghtsCommand()[runComNr]().set(couplingInterval() - DEMstepsRun); - const char* command = particleCloud_.liggghtsCommand()[runComNr]().command(0); + particleCloud_.liggghtsCommand(runComNr).set(couplingInterval() - DEMstepsRun); + const char* command = particleCloud_.liggghtsCommand(runComNr).command(0); Info<< "Executing run command: '"<< command <<"'"<< endl; lmp->input->one(command); } @@ -611,14 +611,14 @@ bool twoWayOne2One::couple(int i) const { if ( - ! particleCloud_.liggghtsCommand()[i]().exactTiming() && - particleCloud_.liggghtsCommand()[i]().runCommand(couplingStep()) + ! particleCloud_.liggghtsCommand(i).exactTiming() && + particleCloud_.liggghtsCommand(i).runCommand(couplingStep()) ) { - commandLines=particleCloud_.liggghtsCommand()[i]().commandLines(); + commandLines=particleCloud_.liggghtsCommand(i).commandLines(); for(int j=0;jinput->one(command); } @@ -630,12 +630,12 @@ bool twoWayOne2One::couple(int i) const { forAll(particleCloud_.liggghtsCommandModelList(),i) { - if(particleCloud_.liggghtsCommand()[i]().runCommand(couplingStep())) + if(particleCloud_.liggghtsCommand(i).runCommand(couplingStep())) { - commandLines=particleCloud_.liggghtsCommand()[i]().commandLines(); + commandLines=particleCloud_.liggghtsCommand(i).commandLines(); for(int j=0;jinput->one(command); } diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H index 32a0f01c..4ba46276 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H @@ -206,7 +206,7 @@ public: void inline destroy(int*) const; //============== - bool couple(int) const; + bool couple(int); //- extractCollected takes the collected data from Lig // present in this Foam domain and applies the mask. From 717b95ab0b96a86ff7f48d69dfb6fa272a707310 Mon Sep 17 00:00:00 2001 From: Paul Kieckhefen Date: Fri, 16 Nov 2018 10:21:39 +0100 Subject: [PATCH 03/28] add warning description to docu for O2O. --- doc/dataExchangeModel_twoWayOne2One.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/dataExchangeModel_twoWayOne2One.txt b/doc/dataExchangeModel_twoWayOne2One.txt index af474060..bbd609af 100644 --- a/doc/dataExchangeModel_twoWayOne2One.txt +++ b/doc/dataExchangeModel_twoWayOne2One.txt @@ -39,6 +39,8 @@ The data exchange model performs the data exchange between the DEM code and the Must be used in combination with the engineSearchMany2Many locate model! Use the "one2one" cfd datacoupling option in fix couple/cfd in LIGGGHTS! +Some warnings may be given for particles that have not been located - this is due to LIGGGHTS' treatment of domain crossers. + [Related commands:] "dataExchangeModel"_dataExchangeModel.html From a68a15272bc03605fcc82c4668a47d73e595e02b Mon Sep 17 00:00:00 2001 From: Paul Kieckhefen Date: Fri, 16 Nov 2018 10:25:34 +0100 Subject: [PATCH 04/28] improve constness. --- .../dataExchangeModel/twoWayOne2One/twoWayOne2One.C | 8 ++++---- .../dataExchangeModel/twoWayOne2One/twoWayOne2One.H | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C index 66cae69a..1e8c2197 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C @@ -142,7 +142,7 @@ twoWayOne2One::twoWayOne2One } } -void twoWayOne2One::createProcMap() const +void twoWayOne2One::createProcMap() { List foamBoxes(Pstream::nProcs()); foamBoxes[Pstream::myProcNo()] = thisFoamBox_; @@ -671,7 +671,7 @@ bool twoWayOne2One::couple(int i) return coupleNow; } -void twoWayOne2One::setupLig2FoamCommunication() const +void twoWayOne2One::setupLig2FoamCommunication() { int* src_procs = new int[thisLigPartner_.size()]; for (int proci = 0; proci < thisLigPartner_.size(); proci++) @@ -709,7 +709,7 @@ void twoWayOne2One::setupLig2FoamCommunication() const } -void twoWayOne2One::locateParticles() const +void twoWayOne2One::locateParticles() { // get positions for locate double** my_positions = static_cast(lmp->atom->x); @@ -823,7 +823,7 @@ void twoWayOne2One::locateParticles() const setCellIDs(cellIds); } -void twoWayOne2One::setupFoam2LigCommunication() const +void twoWayOne2One::setupFoam2LigCommunication() { int* src_procs = new int[thisFoamPartner_.size()]; for (int proci = 0; proci < thisFoamPartner_.size(); proci++) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H index 4ba46276..08abc600 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H @@ -125,16 +125,16 @@ private: // private member functions //- creates a geometric mapping between FOAM and LIG domains - void createProcMap() const; + void createProcMap(); //- create a One2One communicator which transfers from LIG to FOAM - void setupLig2FoamCommunication() const; + void setupLig2FoamCommunication(); //- locates particles received from Lig - void locateParticles() const; + void locateParticles(); //- create a One2One communicator which transfers from FOAM to LIG - void setupFoam2LigCommunication() const; + void setupFoam2LigCommunication(); protected: LAMMPS_NS::LAMMPS *lmp; From 4959ffc79f771e23c93c822201033a53f4a991f0 Mon Sep 17 00:00:00 2001 From: Paul Kieckhefen Date: Fri, 16 Nov 2018 15:15:31 +0100 Subject: [PATCH 05/28] include suggestions by @danielque. --- .../twoWayOne2One/twoWayOne2One.C | 6 ----- .../twoWayOne2One/twoWayOne2One.H | 24 +++++++++---------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C index 1e8c2197..f921dde4 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C @@ -933,12 +933,6 @@ void twoWayOne2One::extractCollected(T*& src, T**& dst, int width) const } } -int twoWayOne2One::getNumberOfParticles() const -{ - return particleCloud_.numberOfParticles(); -} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H index 08abc600..e29bb6b4 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H @@ -92,20 +92,20 @@ private: // private data dictionary propsDict_; - mutable MPI_Comm comm_liggghts_; + MPI_Comm comm_liggghts_; // LIG ranks from which to retrieve particle data - mutable labelList thisLigPartner_; - mutable labelList thisFoamPartner_; + labelList thisLigPartner_; + labelList thisFoamPartner_; - mutable One2One* lig2foam_; - mutable One2One* foam2lig_; + One2One* lig2foam_; + One2One* foam2lig_; - mutable bool* lig2foam_mask_; + bool* lig2foam_mask_; - mutable int* lig2foam_ids_; - mutable int* foam2lig_ids_; + int* lig2foam_ids_; + int* foam2lig_ids_; mutable double* lig2foam_vec_tmp_; mutable double* lig2foam_scl_tmp_; @@ -113,9 +113,9 @@ private: mutable double* foam2lig_vec_tmp_; mutable double* foam2lig_scl_tmp_; - mutable Switch staticProcMap_; - mutable Switch cellIdComm_; - mutable LAMMPS_NS::FixPropertyAtom* my_prev_cell_ids_fix_; + Switch staticProcMap_; + Switch cellIdComm_; + LAMMPS_NS::FixPropertyAtom* my_prev_cell_ids_fix_; treeBoundBox thisFoamBox_; @@ -220,8 +220,6 @@ public: int getNumberOfParticles() const; - word myType() const { return typeName; } - void setCG() { particleCloud_.setCG(lmp->force->cg()); } }; From 487f3f9614155bc131724df2c1453a917f0b3260 Mon Sep 17 00:00:00 2001 From: Paul Kieckhefen Date: Fri, 16 Nov 2018 15:18:14 +0100 Subject: [PATCH 06/28] pass label by ref rather than copying it. --- .../dataExchangeModel/dataExchangeModel/dataExchangeModel.H | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H index 924013cf..64bf6782 100755 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H @@ -257,7 +257,7 @@ public: for (int i=0;i Date: Fri, 16 Nov 2018 15:21:58 +0100 Subject: [PATCH 07/28] improve constness of setters in dataExchangeModel. --- .../dataExchangeModel/dataExchangeModel/dataExchangeModel.H | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H index 64bf6782..672f1138 100755 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.H @@ -245,19 +245,19 @@ public: virtual int getNumberOfTypes() const; virtual double* getTypeVol() const; - inline void setPositions(label n,double* pos) const + inline void setPositions(label n,double* pos) { for (int i=0;i Date: Fri, 16 Nov 2018 15:50:48 +0100 Subject: [PATCH 08/28] remove dependency on duplicated library_cfd_coupling_one2one.* --- .../subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H index e29bb6b4..83a6f535 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H @@ -67,7 +67,7 @@ Contributing authors #include #include #include -#include +#include #include #include #include From 51d10d7d0ff3d2b6562538d18f3c6ddb86855246 Mon Sep 17 00:00:00 2001 From: Paul Kieckhefen Date: Fri, 16 Nov 2018 16:04:42 +0100 Subject: [PATCH 09/28] remove superfluous method getNumberOfParticles. --- .../subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H index 83a6f535..b68c8524 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H @@ -218,8 +218,6 @@ public: template void extractCollected(T*&, T**&, int width=1) const; - int getNumberOfParticles() const; - void setCG() { particleCloud_.setCG(lmp->force->cg()); } }; From 930b2a41585cc379d67e08a2facaf04c8728f1b9 Mon Sep 17 00:00:00 2001 From: Paul Kieckhefen Date: Mon, 26 Nov 2018 17:18:12 +0100 Subject: [PATCH 10/28] bugfix: correct explicit part of heat source term for different thermodynamic temperature when using "sophisticated" thermodynamic models like JANAF. --- applications/solvers/cfdemSolverRhoPimple/EEqn.H | 3 +++ applications/solvers/cfdemSolverRhoPimpleChem/EEqn.H | 4 ++++ applications/solvers/cfdemSolverRhoSimple/EEqn.H | 3 +++ 3 files changed, 10 insertions(+) diff --git a/applications/solvers/cfdemSolverRhoPimple/EEqn.H b/applications/solvers/cfdemSolverRhoPimple/EEqn.H index b2a30416..08af6a05 100644 --- a/applications/solvers/cfdemSolverRhoPimple/EEqn.H +++ b/applications/solvers/cfdemSolverRhoPimple/EEqn.H @@ -23,6 +23,9 @@ Cpv = he.name() == "e" ? thermo.Cv() : thermo.Cp(); + // correct source for the thermodynamic reference temperature + dimensionedScalar Tref("Tref", dimTemperature, T[0]-he[0]/(Cpv[0]+SMALL)); + Qsource += QCoeff*Tref; fvScalarMatrix EEqn ( diff --git a/applications/solvers/cfdemSolverRhoPimpleChem/EEqn.H b/applications/solvers/cfdemSolverRhoPimpleChem/EEqn.H index edb4081f..5dfd1a5a 100644 --- a/applications/solvers/cfdemSolverRhoPimpleChem/EEqn.H +++ b/applications/solvers/cfdemSolverRhoPimpleChem/EEqn.H @@ -9,6 +9,10 @@ particleCloud.energyCoefficients(QCoeff); thCond=particleCloud.thermCondM().thermCond(); Cpv = he.name() == "e" ? thermo.Cv() : thermo.Cp(); +// correct source for the thermodynamic reference temperature +dimensionedScalar Tref("Tref", dimTemperature, T[0]-he[0]/(Cpv[0]+SMALL)); +Qsource += QCoeff*Tref; + fvScalarMatrix EEqn ( fvm::ddt(rhoeps, he) + fvm::div(phi, he) diff --git a/applications/solvers/cfdemSolverRhoSimple/EEqn.H b/applications/solvers/cfdemSolverRhoSimple/EEqn.H index 3dbb5c3f..53630bfb 100644 --- a/applications/solvers/cfdemSolverRhoSimple/EEqn.H +++ b/applications/solvers/cfdemSolverRhoSimple/EEqn.H @@ -25,6 +25,9 @@ Cpv = he.name() == "e" ? thermo.Cv() : thermo.Cp(); + // correct source for the thermodynamic reference temperature + dimensionedScalar Tref("Tref", dimTemperature, T[0]-he[0]/(Cpv[0]+SMALL)); + Qsource += QCoeff*Tref; fvScalarMatrix EEqn ( From c3534493b62bcfbc932b012a72c757c111c51a93 Mon Sep 17 00:00:00 2001 From: Paul Kieckhefen Date: Tue, 4 Dec 2018 15:08:34 +0100 Subject: [PATCH 11/28] Adapt o2o to untangling of getCG() by @danielque --- .../subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H index b68c8524..38486365 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.H @@ -218,7 +218,7 @@ public: template void extractCollected(T*&, T**&, int width=1) const; - void setCG() { particleCloud_.setCG(lmp->force->cg()); } + scalar getCG() const { return lmp->force->cg(); } }; From ebdc5253e66a81e451b5d75764a32e6d5cde9e5a Mon Sep 17 00:00:00 2001 From: Thomas Lichtenegger Date: Thu, 3 Jan 2019 14:13:27 +0100 Subject: [PATCH 12/28] HeattransferGunn with coarse graining for several types and parcels. --- .../heatTransferGunn/heatTransferGunn.C | 53 ++++++++++++++++--- .../heatTransferGunn/heatTransferGunn.H | 8 ++- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C index 47530705..20b7f0ab 100644 --- a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C @@ -43,6 +43,7 @@ heatTransferGunn::heatTransferGunn : energyModel(dict,sm), propsDict_(dict.subDict(typeName + "Props")), + multiTypes_(false), expNusselt_(propsDict_.lookupOrDefault("expNusselt",false)), interpolation_(propsDict_.lookupOrDefault("interpolation",false)), verbose_(propsDict_.lookupOrDefault("verbose",false)), @@ -141,7 +142,9 @@ heatTransferGunn::heatTransferGunn partHeatFlux_(NULL), partHeatFluxCoeff_(NULL), partRe_(NULL), - partNu_(NULL) + partNu_(NULL), + scaleDia_(1.), + typeCG_(propsDict_.lookupOrDefault("coarseGrainingFactors",scalarList(1,1.0))) { allocateMyArrays(); @@ -181,6 +184,14 @@ heatTransferGunn::heatTransferGunn FatalError <<"Cannot read and create NuField at the same time!\n" << abort(FatalError); } } + + if (propsDict_.found("scale") && typeCG_.size()==1) + { + // if "scale" is specified and there's only one single type, use "scale" + scaleDia_=scalar(readScalar(propsDict_.lookup("scale"))); + typeCG_[0] = scaleDia_; + } + else if (typeCG_.size()>1) multiTypes_ = true; } @@ -255,6 +266,15 @@ void heatTransferGunn::calcEnergyContribution() const volScalarField mufField = particleCloud_.turbulence().nu()*rho_; #endif + if (typeCG_.size()>1 || typeCG_[0] > 1) + { + Info << "heatTransferGunn using scale = " << typeCG_ << endl; + } + else if (particleCloud_.cg() > 1) + { + scaleDia_=particleCloud_.cg(); + Info << "heatTransferGunn using scale from liggghts cg = " << scaleDia_ << endl; + } // calc La based heat flux scalar voidfraction(1); @@ -263,6 +283,8 @@ void heatTransferGunn::calcEnergyContribution() label cellI=0; vector Us(0,0,0); scalar ds(0); + scalar ds_scaled(0); + scalar scaleDia3 = typeCG_[0]*typeCG_[0]*typeCG_[0]; scalar muf(0); scalar magUr(0); scalar Rep(0); @@ -270,6 +292,8 @@ void heatTransferGunn::calcEnergyContribution() scalar Nup(0); scalar Tsum(0.0); + scalar cg = typeCG_[0]; + label partType = 1; interpolationCellPoint voidfractionInterpolator_(voidfraction_); interpolationCellPoint UInterpolator_(U_); @@ -297,22 +321,30 @@ void heatTransferGunn::calcEnergyContribution() if (voidfraction < 0.01) voidfraction = 0.01; + if (multiTypes_) + { + partType = particleCloud_.particleType(index); + cg = typeCG_[partType - 1]; + scaleDia3 = cg*cg*cg; + } + // calc relative velocity Us = particleCloud_.velocity(index); magUr = mag(Ufluid - Us); ds = 2.*particleCloud_.radius(index); + ds_scaled = ds/cg; muf = mufField[cellI]; - Rep = ds * magUr * voidfraction * rho_[cellI]/ muf; + Rep = ds_scaled * magUr * voidfraction * rho_[cellI]/ muf; Pr = max(SMALL, Cp_ * muf / kf0_); Nup = Nusselt(voidfraction, Rep, Pr); Tsum += partTemp_[index][0]; - scalar h = kf0_ * Nup / ds; - scalar As = ds * ds * M_PI; // surface area of sphere + scalar h = kf0_ * Nup / ds_scaled; + scalar As = ds_scaled * ds_scaled * M_PI; // surface area of sphere // calc convective heat flux [W] - heatFlux(index, h, As, Tfluid); + heatFlux(index, h, As, Tfluid, scaleDia3); if(verbose_) { @@ -434,9 +466,16 @@ scalar heatTransferGunn::Nusselt(scalar voidfraction, scalar Rep, scalar Pr) con Foam::pow(Rep,0.7) * Foam::pow(Pr,0.33); } -void heatTransferGunn::heatFlux(label index, scalar h, scalar As, scalar Tfluid) +void heatTransferGunn::heatFlux(label index, scalar h, scalar As, scalar Tfluid, scalar cg3) { - scalar hAs = h * As; + scalar hAs = h * As * cg3; + + if (particleCloud_.getParticleEffVolFactors()) + { + scalar effVolFac = particleCloud_.particleEffVolFactor(index); + hAs *= effVolFac; + } + partHeatFlux_[index][0] = - hAs * partTemp_[index][0]; if(!implicit_) { diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H index aa6facf7..6139d3c6 100644 --- a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H @@ -45,6 +45,8 @@ protected: dictionary propsDict_; + bool multiTypes_; + bool expNusselt_; bool interpolation_; @@ -109,6 +111,10 @@ protected: mutable double **partNu_; + mutable scalar scaleDia_; + + scalarList typeCG_; + void allocateMyArrays() const; void partTempField(); @@ -117,7 +123,7 @@ protected: virtual void giveData(); - virtual void heatFlux(label, scalar, scalar, scalar); + virtual void heatFlux(label, scalar, scalar, scalar, scalar cg3 = 1.0); public: From 5bb94b96957be51704f95e3e24f79a4db7788a7b Mon Sep 17 00:00:00 2001 From: danielque Date: Wed, 20 Feb 2019 14:19:42 +0100 Subject: [PATCH 13/28] use spaces not tabs --- applications/solvers/cfdemSolverMultiphase/Make/options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/solvers/cfdemSolverMultiphase/Make/options b/applications/solvers/cfdemSolverMultiphase/Make/options index 78dc7582..0cfccaff 100644 --- a/applications/solvers/cfdemSolverMultiphase/Make/options +++ b/applications/solvers/cfdemSolverMultiphase/Make/options @@ -1,7 +1,7 @@ include $(CFDEM_ADD_LIBS_DIR)/additionalLibs EXE_INC = \ - -I$(CFDEM_OFVERSION_DIR) \ + -I$(CFDEM_OFVERSION_DIR) \ -ImultiphaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \ From 5665e750056f1b7776546a74b9755d3a1f380264 Mon Sep 17 00:00:00 2001 From: danielque Date: Wed, 20 Feb 2019 14:47:42 +0100 Subject: [PATCH 14/28] clean up whitespaces --- .../solvers/cfdemSolverMultiphase/UEqn.H | 4 +-- .../cfdemSolverMultiphase.C | 27 ++++++++++--------- .../cfdemSolverMultiphase/createFields.H | 12 ++++----- .../multiphaseMixture/multiphaseMixture.C | 16 +++++------ .../multiphaseMixture/multiphaseMixture.H | 6 ++--- 5 files changed, 33 insertions(+), 32 deletions(-) diff --git a/applications/solvers/cfdemSolverMultiphase/UEqn.H b/applications/solvers/cfdemSolverMultiphase/UEqn.H index 86d12e50..ace635f5 100644 --- a/applications/solvers/cfdemSolverMultiphase/UEqn.H +++ b/applications/solvers/cfdemSolverMultiphase/UEqn.H @@ -37,9 +37,9 @@ if (pimple.momentumPredictor() && (modelType=="B" || modelType=="Bfull")) ) * voidfraction + Ksl*Us ); - + fvOptions.correct(U); -} +} else if (pimple.momentumPredictor()) { solve diff --git a/applications/solvers/cfdemSolverMultiphase/cfdemSolverMultiphase.C b/applications/solvers/cfdemSolverMultiphase/cfdemSolverMultiphase.C index c37c3fcb..42e514da 100644 --- a/applications/solvers/cfdemSolverMultiphase/cfdemSolverMultiphase.C +++ b/applications/solvers/cfdemSolverMultiphase/cfdemSolverMultiphase.C @@ -41,6 +41,7 @@ Description #include "clockModel.H" #include "smoothingModel.H" #include "forceModel.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) @@ -71,11 +72,11 @@ int main(int argc, char *argv[]) { #include "CourantNo.H" #include "alphaCourantNo.H" - + particleCloud.clockM().start(1,"Global"); Info<< "Time = " << runTime.timeName() << nl << endl; - + particleCloud.clockM().start(2,"Coupling"); bool hasEvolved = particleCloud.evolve(voidfraction,Us,U); @@ -88,12 +89,12 @@ int main(int argc, char *argv[]) Ksl = particleCloud.momCoupleM(0).impMomSource(); Ksl.correctBoundaryConditions(); - //Force Checks - vector fTotal(0,0,0); - vector fImpTotal = sum(mesh.V()*Ksl.internalField()*(Us.internalField()-U.internalField())).value(); - reduce(fImpTotal, sumOp()); - Info << "TotalForceExp: " << fTotal << endl; - Info << "TotalForceImp: " << fImpTotal << endl; + //Force Checks + vector fTotal(0,0,0); + vector fImpTotal = sum(mesh.V()*Ksl.internalField()*(Us.internalField()-U.internalField())).value(); + reduce(fImpTotal, sumOp()); + Info << "TotalForceExp: " << fTotal << endl; + Info << "TotalForceImp: " << fImpTotal << endl; #include "solverDebugInfo.H" particleCloud.clockM().stop("Coupling"); @@ -101,22 +102,22 @@ int main(int argc, char *argv[]) particleCloud.clockM().start(26,"Flow"); if(particleCloud.solveFlow()) - { + { mixture.solve(); rho = mixture.rho(); rhoEps = rho * voidfraction; - + // --- Pressure-velocity PIMPLE corrector loop while (pimple.loop()) { #include "UEqn.H" - + // --- Pressure corrector loop while (pimple.correct()) { #include "pEqn.H" } - + if (pimple.turbCorr()) { turbulence->correct(); @@ -133,7 +134,7 @@ int main(int argc, char *argv[]) Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s" << nl << endl; - + particleCloud.clockM().stop("Flow"); particleCloud.clockM().stop("Global"); } diff --git a/applications/solvers/cfdemSolverMultiphase/createFields.H b/applications/solvers/cfdemSolverMultiphase/createFields.H index c56fafb9..3b4194c5 100644 --- a/applications/solvers/cfdemSolverMultiphase/createFields.H +++ b/applications/solvers/cfdemSolverMultiphase/createFields.H @@ -76,17 +76,17 @@ volVectorField U Info<< "Reading/calculating face flux field phi\n" << endl; surfaceScalarField phi - ( - IOobject - ( +( + IOobject + ( "phi", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE - ), - linearInterpolate(U*voidfraction) & mesh.Sf() - ); + ), + linearInterpolate(U*voidfraction) & mesh.Sf() +); multiphaseMixture mixture(U, phi, voidfraction); diff --git a/applications/solvers/cfdemSolverMultiphase/multiphaseMixture/multiphaseMixture.C b/applications/solvers/cfdemSolverMultiphase/multiphaseMixture/multiphaseMixture.C index 49cee681..a1ea1537 100644 --- a/applications/solvers/cfdemSolverMultiphase/multiphaseMixture/multiphaseMixture.C +++ b/applications/solvers/cfdemSolverMultiphase/multiphaseMixture/multiphaseMixture.C @@ -57,12 +57,12 @@ Foam::multiphaseMixture::calcNu() const tmp tnu = iter()*iter().nu(); volScalarField& nu = tnu.ref(); - + for (++iter; iter != phases_.end(); ++iter) { nu += iter()*iter().nu(); } - + return tnu; } @@ -216,7 +216,7 @@ Foam::multiphaseMixture::multiphaseMixture calcAlphas(); alphas_.write(); surfaceTensionForce_ = calcStf(); - + } @@ -300,20 +300,20 @@ Foam::multiphaseMixture::mu(const label patchi) const Foam::tmp Foam::multiphaseMixture::muf() const { - + return nuf()*fvc::interpolate(rho()); // PtrDictionary::const_iterator iter = phases_.begin(); - + // tmp tmuf = // fvc::interpolate(iter())*iter().rho()*fvc::interpolate(iter().nu()); // surfaceScalarField& muf = tmuf.ref(); - + // for (++iter; iter != phases_.end(); ++iter) // { // muf += // fvc::interpolate(iter())*iter().rho()*fvc::interpolate(iter().nu()); // } - + // return tmuf; } @@ -400,7 +400,7 @@ void Foam::multiphaseMixture::solve() !(++alphaSubCycle).end(); ) { - FatalError << "Sub-cycling of the alpha equation not yet implemented!!" << abort(FatalError); + FatalError << "Sub-cycling of the alpha equation not yet implemented!!" << abort(FatalError); solveAlphas(cAlpha); rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi_; } diff --git a/applications/solvers/cfdemSolverMultiphase/multiphaseMixture/multiphaseMixture.H b/applications/solvers/cfdemSolverMultiphase/multiphaseMixture/multiphaseMixture.H index 2ae6d903..9a34c4ee 100644 --- a/applications/solvers/cfdemSolverMultiphase/multiphaseMixture/multiphaseMixture.H +++ b/applications/solvers/cfdemSolverMultiphase/multiphaseMixture/multiphaseMixture.H @@ -159,8 +159,8 @@ private: // Private member functions void calcAlphas(); - - tmp calcNu() const; + + tmp calcNu() const; void solveAlphas(const scalar cAlpha); @@ -257,7 +257,7 @@ public: { return surfaceTensionForce_; } - + //- Indicator of the proximity of the interface // Field values are 1 near and 0 away for the interface. tmp nearInterface() const; From 696d73b10bd1f0deeb0927c1163434399ef2007b Mon Sep 17 00:00:00 2001 From: danielque Date: Wed, 20 Feb 2019 15:02:49 +0100 Subject: [PATCH 15/28] clean up whitespaces --- applications/solvers/cfdemSolverPiso/UEqn.H | 4 ++-- .../solvers/cfdemSolverPiso/cfdemSolverPiso.C | 12 ++++++------ .../solvers/cfdemSolverPiso/createFields.H | 14 +++++++------- applications/solvers/cfdemSolverPiso/pEqn.H | 6 +++--- .../solvers/cfdemSolverPisoScalar/TEqn.H | 4 ++-- .../cfdemSolverPisoScalar.C | 16 ++++++++-------- .../solvers/cfdemSolverPisoScalar/createFields.H | 14 +++++++------- .../cfdemSolverRhoPimple/cfdemSolverRhoPimple.C | 4 ++-- applications/solvers/cfdemSolverRhoPimple/pEqn.H | 2 +- .../solvers/cfdemSolverRhoPimple/rhoEqn.H | 2 +- applications/solvers/cfdemSolverRhoSimple/EEqn.H | 8 ++++---- applications/solvers/cfdemSolverRhoSimple/pEqn.H | 4 ++-- .../utilities/cfdemPostproc/cfdemPostproc.C | 2 +- applications/utilities/writeUfluid/writeUfluid.C | 8 ++++---- 14 files changed, 50 insertions(+), 50 deletions(-) diff --git a/applications/solvers/cfdemSolverPiso/UEqn.H b/applications/solvers/cfdemSolverPiso/UEqn.H index bfc3121d..2f26ac91 100644 --- a/applications/solvers/cfdemSolverPiso/UEqn.H +++ b/applications/solvers/cfdemSolverPiso/UEqn.H @@ -15,10 +15,10 @@ fvOptions.constrain(UEqn); if (piso.momentumPredictor() && (modelType=="B" || modelType=="Bfull")) { solve(UEqn == - fvc::grad(p) + Ksl/rho*Us); - fvOptions.correct(U); + fvOptions.correct(U); } else if (piso.momentumPredictor()) { solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us); fvOptions.correct(U); -} \ No newline at end of file +} diff --git a/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C b/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C index 8f1a8534..78c425c7 100644 --- a/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C +++ b/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C @@ -86,12 +86,12 @@ int main(int argc, char *argv[]) Ksl = particleCloud.momCoupleM(0).impMomSource(); Ksl.correctBoundaryConditions(); - //Force Checks - vector fTotal(0,0,0); - vector fImpTotal = sum(mesh.V()*Ksl.internalField()*(Us.internalField()-U.internalField())).value(); - reduce(fImpTotal, sumOp()); - Info << "TotalForceExp: " << fTotal << endl; - Info << "TotalForceImp: " << fImpTotal << endl; + //Force Checks + vector fTotal(0,0,0); + vector fImpTotal = sum(mesh.V()*Ksl.internalField()*(Us.internalField()-U.internalField())).value(); + reduce(fImpTotal, sumOp()); + Info << "TotalForceExp: " << fTotal << endl; + Info << "TotalForceImp: " << fImpTotal << endl; #include "solverDebugInfo.H" particleCloud.clockM().stop("Coupling"); diff --git a/applications/solvers/cfdemSolverPiso/createFields.H b/applications/solvers/cfdemSolverPiso/createFields.H index 8f0b5584..36246301 100644 --- a/applications/solvers/cfdemSolverPiso/createFields.H +++ b/applications/solvers/cfdemSolverPiso/createFields.H @@ -96,17 +96,17 @@ #define createPhi_H Info<< "Reading/calculating face flux field phi\n" << endl; surfaceScalarField phi - ( - IOobject - ( +( + IOobject + ( "phi", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE - ), - linearInterpolate(U*voidfraction) & mesh.Sf() - ); + ), + linearInterpolate(U*voidfraction) & mesh.Sf() +); #endif @@ -123,4 +123,4 @@ surfaceScalarField phi incompressible::turbulenceModel::New(U, phi, laminarTransport) ); -#include "createMRF.H" \ No newline at end of file +#include "createMRF.H" diff --git a/applications/solvers/cfdemSolverPiso/pEqn.H b/applications/solvers/cfdemSolverPiso/pEqn.H index 96ca1d77..c50eb9e3 100644 --- a/applications/solvers/cfdemSolverPiso/pEqn.H +++ b/applications/solvers/cfdemSolverPiso/pEqn.H @@ -31,12 +31,12 @@ constrainPressure(p, Uvoidfraction, phiHbyA, rAUvoidfraction, MRF); while (piso.correctNonOrthogonal()) { // Pressure corrector - + fvScalarMatrix pEqn ( fvm::laplacian(rAUvoidfraction, p) == fvc::div(phi) + particleCloud.ddtVoidfraction() ); - + pEqn.setReference(pRefCell, pRefValue); pEqn.solve(mesh.solver(p.select(piso.finalInnerIter()))); @@ -55,4 +55,4 @@ else U = HbyA - voidfraction*rAU*fvc::grad(p) + Ksl/rho*Us*rAU; U.correctBoundaryConditions(); -fvOptions.correct(U); \ No newline at end of file +fvOptions.correct(U); diff --git a/applications/solvers/cfdemSolverPisoScalar/TEqn.H b/applications/solvers/cfdemSolverPisoScalar/TEqn.H index 6513b654..772b7838 100644 --- a/applications/solvers/cfdemSolverPisoScalar/TEqn.H +++ b/applications/solvers/cfdemSolverPisoScalar/TEqn.H @@ -1,4 +1,4 @@ - // get scalar source from DEM + // get scalar source from DEM particleCloud.forceM(1).manipulateScalarField(Tsource); Tsource.correctBoundaryConditions(); @@ -12,4 +12,4 @@ Tsource ); TEqn.relax(); - TEqn.solve(); \ No newline at end of file + TEqn.solve(); diff --git a/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C b/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C index 9fc59b59..5f511cdf 100644 --- a/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C +++ b/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C @@ -81,23 +81,23 @@ int main(int argc, char *argv[]) { particleCloud.smoothingM().smoothen(particleCloud.forceM(0).impParticleForces()); } - + Info << "update Ksl.internalField()" << endl; Ksl = particleCloud.momCoupleM(0).impMomSource(); Ksl.correctBoundaryConditions(); - //Force Checks - vector fTotal(0,0,0); - vector fImpTotal = sum(mesh.V()*Ksl.internalField()*(Us.internalField()-U.internalField())).value(); - reduce(fImpTotal, sumOp()); - Info << "TotalForceExp: " << fTotal << endl; - Info << "TotalForceImp: " << fImpTotal << endl; + //Force Checks + vector fTotal(0,0,0); + vector fImpTotal = sum(mesh.V()*Ksl.internalField()*(Us.internalField()-U.internalField())).value(); + reduce(fImpTotal, sumOp()); + Info << "TotalForceExp: " << fTotal << endl; + Info << "TotalForceImp: " << fImpTotal << endl; #include "solverDebugInfo.H" particleCloud.clockM().stop("Coupling"); particleCloud.clockM().start(26,"Flow"); - + #include "TEqn.H" if(particleCloud.solveFlow()) diff --git a/applications/solvers/cfdemSolverPisoScalar/createFields.H b/applications/solvers/cfdemSolverPisoScalar/createFields.H index fe5dd29a..f7779bec 100644 --- a/applications/solvers/cfdemSolverPisoScalar/createFields.H +++ b/applications/solvers/cfdemSolverPisoScalar/createFields.H @@ -146,17 +146,17 @@ #define createPhi_H Info<< "Reading/calculating face flux field phi\n" << endl; surfaceScalarField phi - ( - IOobject - ( +( + IOobject + ( "phi", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE - ), - linearInterpolate(U*voidfraction) & mesh.Sf() - ); + ), + linearInterpolate(U*voidfraction) & mesh.Sf() +); #endif @@ -173,4 +173,4 @@ surfaceScalarField phi incompressible::turbulenceModel::New(U, phi, laminarTransport) ); -#include "createMRF.H" \ No newline at end of file +#include "createMRF.H" diff --git a/applications/solvers/cfdemSolverRhoPimple/cfdemSolverRhoPimple.C b/applications/solvers/cfdemSolverRhoPimple/cfdemSolverRhoPimple.C index 39fa85cc..eb4d2c47 100644 --- a/applications/solvers/cfdemSolverRhoPimple/cfdemSolverRhoPimple.C +++ b/applications/solvers/cfdemSolverRhoPimple/cfdemSolverRhoPimple.C @@ -69,8 +69,8 @@ int main(int argc, char *argv[]) #include "checkModelType.H" turbulence->validate(); - // #include "compressibleCourantNo.H" - // #include "setInitialDeltaT.H" + //#include "compressibleCourantNo.H" + //#include "setInitialDeltaT.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/cfdemSolverRhoPimple/pEqn.H b/applications/solvers/cfdemSolverRhoPimple/pEqn.H index 40c68619..e107c5a4 100644 --- a/applications/solvers/cfdemSolverRhoPimple/pEqn.H +++ b/applications/solvers/cfdemSolverRhoPimple/pEqn.H @@ -32,7 +32,7 @@ else // + rhorAUf*fvc::ddtCorr(rho, U, phi) ) ); - + // flux without pressure gradient contribution phi = phiHbyA + phiUs; diff --git a/applications/solvers/cfdemSolverRhoPimple/rhoEqn.H b/applications/solvers/cfdemSolverRhoPimple/rhoEqn.H index 3be6fb2b..620e16c2 100644 --- a/applications/solvers/cfdemSolverRhoPimple/rhoEqn.H +++ b/applications/solvers/cfdemSolverRhoPimple/rhoEqn.H @@ -14,4 +14,4 @@ fvOptions.correct(rho); } -// ************************************************************************* // \ No newline at end of file +// ************************************************************************* // diff --git a/applications/solvers/cfdemSolverRhoSimple/EEqn.H b/applications/solvers/cfdemSolverRhoSimple/EEqn.H index 53630bfb..930f66e2 100644 --- a/applications/solvers/cfdemSolverRhoSimple/EEqn.H +++ b/applications/solvers/cfdemSolverRhoSimple/EEqn.H @@ -6,13 +6,13 @@ particleCloud.energyContributions(Qsource); particleCloud.energyCoefficients(QCoeff); - //thDiff=particleCloud.thermCondM().thermDiff(); - thCond=particleCloud.thermCondM().thermCond(); + //thDiff=particleCloud.thermCondM().thermDiff(); + thCond=particleCloud.thermCondM().thermCond(); - addSource = + addSource = ( he.name() == "e" - ? + ? fvc::div(phi, K) + fvc::div ( diff --git a/applications/solvers/cfdemSolverRhoSimple/pEqn.H b/applications/solvers/cfdemSolverRhoSimple/pEqn.H index 5b2dbcbd..ed546344 100644 --- a/applications/solvers/cfdemSolverRhoSimple/pEqn.H +++ b/applications/solvers/cfdemSolverRhoSimple/pEqn.H @@ -27,7 +27,7 @@ else fvc::flux(rhoeps*HbyA) ) ); - + // flux without pressure gradient contribution phi = phiHbyA + phiUs; @@ -78,4 +78,4 @@ else U.correctBoundaryConditions(); fvOptions.correct(U); -K = 0.5*magSqr(U); \ No newline at end of file +K = 0.5*magSqr(U); diff --git a/applications/utilities/cfdemPostproc/cfdemPostproc.C b/applications/utilities/cfdemPostproc/cfdemPostproc.C index a832bacc..1f46b1de 100644 --- a/applications/utilities/cfdemPostproc/cfdemPostproc.C +++ b/applications/utilities/cfdemPostproc/cfdemPostproc.C @@ -84,7 +84,7 @@ int main(int argc, char *argv[]) particleCloud.dataExchangeM().allocateArray(particleV_,0.,1); particleCloud.get_cellIDs(cellIDs_); // get ref to cellIDs //particleCloud.dataExchangeM().allocateArray(cellIDs_,0.,1); - + while (runTime.loop()) { diff --git a/applications/utilities/writeUfluid/writeUfluid.C b/applications/utilities/writeUfluid/writeUfluid.C index cde6c88f..a6a84121 100644 --- a/applications/utilities/writeUfluid/writeUfluid.C +++ b/applications/utilities/writeUfluid/writeUfluid.C @@ -28,7 +28,7 @@ Application writeUfluidwriteUfluid Description - Writes the the cell center fluid velocity to particles in the lagrangian + Writes the the cell center fluid velocity to particles in the lagrangian time directory. \*---------------------------------------------------------------------------*/ @@ -76,13 +76,13 @@ int nParticle=0; { volVectorField U(UHeader,mesh); passiveParticleCloud myCloud(mesh, cloudName); - myCloud.write(); + myCloud.write(); nParticle = myCloud.size(); - IOField Ufluid(myCloud.fieldIOobject("Ufluid",IOobject::NO_READ),nParticle); + IOField Ufluid(myCloud.fieldIOobject("Ufluid",IOobject::NO_READ),nParticle); label i = 0; forAllConstIter(passiveParticleCloud, myCloud, iter) { - Ufluid[i]=U[iter().cell()]; + Ufluid[i]=U[iter().cell()]; i++; } Ufluid.write(); From 581fae739b3de2d26475fd39a9aceea4ff7511bf Mon Sep 17 00:00:00 2001 From: danielque Date: Thu, 21 Feb 2019 10:40:52 +0100 Subject: [PATCH 16/28] Fix application name and description of cfdemSolverRhoSimple --- .../cfdemSolverRhoSimple/cfdemSolverRhoSimple.C | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/applications/solvers/cfdemSolverRhoSimple/cfdemSolverRhoSimple.C b/applications/solvers/cfdemSolverRhoSimple/cfdemSolverRhoSimple.C index 4e1821fc..3af7f1f6 100644 --- a/applications/solvers/cfdemSolverRhoSimple/cfdemSolverRhoSimple.C +++ b/applications/solvers/cfdemSolverRhoSimple/cfdemSolverRhoSimple.C @@ -17,14 +17,12 @@ License Copyright (C) 2015- Thomas Lichtenegger, JKU Linz, Austria Application - cfdemSolverRhoPimple + cfdemSolverRhoSimple Description - Transient solver for compressible flow using the flexible PIMPLE (PISO-SIMPLE) - algorithm. - Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected. - The code is an evolution of the solver rhoPimpleFoam in OpenFOAM(R) 4.x, - where additional functionality for CFD-DEM coupling is added. + Steady-state solver for turbulent flow of compressible fluids based on + rhoSimpleFoam where functionality for CFD-DEM coupling has been added. + \*---------------------------------------------------------------------------*/ #include "fvCFD.H" From 809519f9375791970ad8c9c5d4080732cdd6f6ba Mon Sep 17 00:00:00 2001 From: danielque Date: Thu, 21 Feb 2019 10:54:21 +0100 Subject: [PATCH 17/28] [DOC] add link to one2one data exchange model documentation --- doc/CFDEMcoupling_models.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/CFDEMcoupling_models.txt b/doc/CFDEMcoupling_models.txt index 6da09c76..a611af56 100644 --- a/doc/CFDEMcoupling_models.txt +++ b/doc/CFDEMcoupling_models.txt @@ -60,7 +60,8 @@ that performs the data exchange between the DEM code and the CFD code. "oneWayVTK"_dataExchangeModel_oneWayVTK.html, "twoWayFiles"_dataExchangeModel_twoWayFiles.html, "twoWayMPI"_dataExchangeModel_twoWayMPI.html, -"twoWayMany2Many"_dataExchangeModel_twoWayMany2Many.html :tb(c=2,ea=c) +"twoWayMany2Many"_dataExchangeModel_twoWayMany2Many.html, +"twoWayOne2One"_dataExchangeModel_twoWayOne2One.html :tb(c=2,ea=c) 6.6 Energy models :h4 From 3275a87e053aa4935c6d56a08db628d3dc51ee57 Mon Sep 17 00:00:00 2001 From: danielque Date: Thu, 21 Feb 2019 10:55:09 +0100 Subject: [PATCH 18/28] [DOC] fix formatting in documentation of one2one data exchange model --- doc/dataExchangeModel_twoWayOne2One.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/dataExchangeModel_twoWayOne2One.txt b/doc/dataExchangeModel_twoWayOne2One.txt index bbd609af..997ecdd9 100644 --- a/doc/dataExchangeModel_twoWayOne2One.txt +++ b/doc/dataExchangeModel_twoWayOne2One.txt @@ -19,7 +19,7 @@ twoWayOne2OneProps \}; :pre {path} = path to the DEM simulation input file :ulb,l -{useMap} = yes or no, determines if the map is build once (yes) or every coupling step (no) (default: no):l +{useMap} = yes or no, determines if the map is build once (yes) or every coupling step (no) (default: no) :l :ule [Examples:] From 73015cffdea91683022fc9cc0342a4336e5c800f Mon Sep 17 00:00:00 2001 From: danielque Date: Thu, 21 Feb 2019 10:57:21 +0100 Subject: [PATCH 19/28] [DOC] add minimal description of solvers provisional documentation, needs to be extended --- doc/CFDEMcoupling_solvers.txt | 6 +-- doc/cfdemSolverRhoPimple.txt | 59 ++++++++++++++++++++++++++++++ doc/cfdemSolverRhoPimpleChem.txt | 63 ++++++++++++++++++++++++++++++++ doc/cfdemSolverRhoSimple.txt | 59 ++++++++++++++++++++++++++++++ 4 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 doc/cfdemSolverRhoPimple.txt create mode 100644 doc/cfdemSolverRhoPimpleChem.txt create mode 100644 doc/cfdemSolverRhoSimple.txt diff --git a/doc/CFDEMcoupling_solvers.txt b/doc/CFDEMcoupling_solvers.txt index 323e566e..acbca05a 100644 --- a/doc/CFDEMcoupling_solvers.txt +++ b/doc/CFDEMcoupling_solvers.txt @@ -13,7 +13,7 @@ This section lists all CFDEMcoupling solvers alphabetically. "cfdemSolverMultiphase"_cfdemSolverMultiphase.html, "cfdemSolverPiso"_cfdemSolverPiso.html, "cfdemSolverPisoScalar"_cfdemSolverPisoScalar.html, -cfdemSolverRhoPimple, -cfdemSolverRhoPimpleChem, -cfdemSolverRhoSimple :tb(c=2,ea=c) +"cfdemSolverRhoPimple"_cfdemSolverRhoPimple.html, +"cfdemSolverRhoPimpleChem"_cfdemSolverRhoPimpleChem.html, +"cfdemSolverRhoSimple"_cfdemSolverRhoSimple.html :tb(c=2,ea=c) diff --git a/doc/cfdemSolverRhoPimple.txt b/doc/cfdemSolverRhoPimple.txt new file mode 100644 index 00000000..432581aa --- /dev/null +++ b/doc/cfdemSolverRhoPimple.txt @@ -0,0 +1,59 @@ + + + + + +"CFDEMproject Website"_lws - "Main Page"_main :c + +:link(lws,http://www.cfdem.com) +:link(main,CFDEMcoupling_Manual.html) + +:line + +cfdemSolverRhoPimple command :h3 + +[Description:] + + +"cfdemSolverRhoPimple" is a coupled CFD-DEM solver using the CFDEMcoupling +framework. Based on the OpenFOAM®(*) solver rhoPimpleFoam, this is a +transient solver for compressible flow using the flexible PIMPLE (PISO-SIMPLE) +algorithm, coupled with the DEM code LIGGGHTS for solid particles. + + + + + +:line + + +NOTE: +(*) This offering is not approved or endorsed by OpenCFD Limited, producer and +distributor of the OpenFOAM software via www.openfoam.com, and owner of the +OPENFOAM® and OpenCFD® trade marks. +OPENFOAM® is a registered trade mark of OpenCFD Limited, producer and +distributor of the OpenFOAM software via www.openfoam.com. + + + diff --git a/doc/cfdemSolverRhoPimpleChem.txt b/doc/cfdemSolverRhoPimpleChem.txt new file mode 100644 index 00000000..d3f64ddb --- /dev/null +++ b/doc/cfdemSolverRhoPimpleChem.txt @@ -0,0 +1,63 @@ + + + + + +"CFDEMproject Website"_lws - "Main Page"_main :c + +:link(lws,http://www.cfdem.com) +:link(main,CFDEMcoupling_Manual.html) + +:line + +cfdemSolverRhoPimpleChem command :h3 + +[Description:] + + +"cfdemSolverRhoPimpleChem" is a coupled CFD-DEM solver using the CFDEMcoupling +framework. Based on the OpenFOAM®(*) solver rhoPimpleFoam, this is a +transient solver for compressible flow using the flexible PIMPLE (PISO-SIMPLE) +algorithm, coupled with the DEM code LIGGGHTS for solid particles. +Compared to cfdemSolverRhoPimple this solver adds functionality for chemical +reactions. + + + + + +:line + + +NOTE: +(*) This offering is not approved or endorsed by OpenCFD Limited, producer and +distributor of the OpenFOAM software via www.openfoam.com, and owner of the +OPENFOAM® and OpenCFD® trade marks. +OPENFOAM® is a registered trade mark of OpenCFD Limited, producer and +distributor of the OpenFOAM software via www.openfoam.com. + + + diff --git a/doc/cfdemSolverRhoSimple.txt b/doc/cfdemSolverRhoSimple.txt new file mode 100644 index 00000000..d0ac3e00 --- /dev/null +++ b/doc/cfdemSolverRhoSimple.txt @@ -0,0 +1,59 @@ + + + + + +"CFDEMproject Website"_lws - "Main Page"_main :c + +:link(lws,http://www.cfdem.com) +:link(main,CFDEMcoupling_Manual.html) + +:line + +cfdemSolverRhoSimple command :h3 + +[Description:] + + +"cfdemSolverRhoSimple" is a coupled CFD-DEM solver using the CFDEMcoupling +framework. Based on the OpenFOAM®(*) solver rhoSimpleFoam, this is a +steady-state solver for turbulent flow of compressible fluids coupled with the +DEM code LIGGGHTS for solid particles. + + + + + +:line + + +NOTE: +(*) This offering is not approved or endorsed by OpenCFD Limited, producer and +distributor of the OpenFOAM software via www.openfoam.com, and owner of the +OPENFOAM® and OpenCFD® trade marks. +OPENFOAM® is a registered trade mark of OpenCFD Limited, producer and +distributor of the OpenFOAM software via www.openfoam.com. + + + From edd77aa751a9eaf6751d99f50d99dfb6a3d9de0f Mon Sep 17 00:00:00 2001 From: danielque Date: Thu, 21 Feb 2019 13:02:35 +0100 Subject: [PATCH 20/28] clean up whitespaces --- .../diffusionCoefficients/diffusionCoefficients.C | 2 +- .../diffusionCoefficients/diffusionCoefficients.H | 2 +- .../reactantPerParticle/reactantPerParticle.C | 8 +++----- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/lagrangian/cfdemParticle/subModels/chemistryModel/diffusionCoefficients/diffusionCoefficients.C b/src/lagrangian/cfdemParticle/subModels/chemistryModel/diffusionCoefficients/diffusionCoefficients.C index f9a2eb9d..62695fd1 100644 --- a/src/lagrangian/cfdemParticle/subModels/chemistryModel/diffusionCoefficients/diffusionCoefficients.C +++ b/src/lagrangian/cfdemParticle/subModels/chemistryModel/diffusionCoefficients/diffusionCoefficients.C @@ -312,7 +312,7 @@ void diffusionCoefficient::execute() TotalFraction_[i] += Xfluid_[j]/dBinary_; // dCoeff -- diffusion component of diffusant gas - MixtureBinaryDiffusion_[i] = (1.0-XfluidDiffusant_[i])/TotalFraction_[i]; + MixtureBinaryDiffusion_[i] = (1.0-XfluidDiffusant_[i])/TotalFraction_[i]; if(verbose_) { diff --git a/src/lagrangian/cfdemParticle/subModels/chemistryModel/diffusionCoefficients/diffusionCoefficients.H b/src/lagrangian/cfdemParticle/subModels/chemistryModel/diffusionCoefficients/diffusionCoefficients.H index fb96c5f8..ab360a67 100644 --- a/src/lagrangian/cfdemParticle/subModels/chemistryModel/diffusionCoefficients/diffusionCoefficients.H +++ b/src/lagrangian/cfdemParticle/subModels/chemistryModel/diffusionCoefficients/diffusionCoefficients.H @@ -72,7 +72,7 @@ private: // gas pressure at particle location word pressureFieldName_; - const volScalarField& P_; + const volScalarField& P_; word partPressureName_; diff --git a/src/lagrangian/cfdemParticle/subModels/chemistryModel/reactantPerParticle/reactantPerParticle.C b/src/lagrangian/cfdemParticle/subModels/chemistryModel/reactantPerParticle/reactantPerParticle.C index 57a58f44..1573c68a 100644 --- a/src/lagrangian/cfdemParticle/subModels/chemistryModel/reactantPerParticle/reactantPerParticle.C +++ b/src/lagrangian/cfdemParticle/subModels/chemistryModel/reactantPerParticle/reactantPerParticle.C @@ -109,8 +109,6 @@ void reactantPerParticle::reAllocMyArrays() const void reactantPerParticle::execute() { - - loopCounter_++; if (loopCounter_ % Nevery_ != 0) { @@ -121,7 +119,7 @@ void reactantPerParticle::execute() particlesPerCell_ *= 0.0; - label cellI=0; + label cellI=0; scalar voidfraction(1); scalar cellvolume(0.0); scalar particlesPerCell(1.0); @@ -133,7 +131,7 @@ void reactantPerParticle::execute() if (cellI >= 0) { particlesPerCell_[cellI] += 1.0; - } + } } // no fill array and communicate it @@ -151,7 +149,7 @@ void reactantPerParticle::execute() // give DEM data particleCloud_.dataExchangeM().giveData("reactantPerParticle", "scalar-atom", reactantPerParticle_); - + Info << "give data done" << endl; } From cd3bc3874a1369199f679ca2464cbba9056d4810 Mon Sep 17 00:00:00 2001 From: danielque Date: Thu, 21 Feb 2019 13:39:23 +0100 Subject: [PATCH 21/28] [DOC] update chemistry model documentation --- doc/CFDEMcoupling_models.txt | 2 +- doc/chemistryModel_diffusionCoefficients.txt | 2 +- doc/chemistryModel_massTransferCoeff.txt | 2 +- doc/chemistryModel_reactantPerParticle.txt | 54 ++++++++++++++++++++ doc/chemistryModel_species.txt | 16 +++--- 5 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 doc/chemistryModel_reactantPerParticle.txt diff --git a/doc/CFDEMcoupling_models.txt b/doc/CFDEMcoupling_models.txt index a611af56..800e9eb4 100644 --- a/doc/CFDEMcoupling_models.txt +++ b/doc/CFDEMcoupling_models.txt @@ -38,7 +38,7 @@ models used for chemical reaction calculations. "diffusionCoefficients"_chemistryModel_diffusionCoefficients.html, "massTransferCoeff"_chemistryModel_massTransferCoeff.html, "off"_chemistryModel_noChemistry.html, -reactantPerParticle, +"reactantPerParticle"_chemistryModel_reactantPerParticle.html, "species"_chemistryModel_species.html :tb(c=2,ea=c) diff --git a/doc/chemistryModel_diffusionCoefficients.txt b/doc/chemistryModel_diffusionCoefficients.txt index df64243b..125a5584 100644 --- a/doc/chemistryModel_diffusionCoefficients.txt +++ b/doc/chemistryModel_diffusionCoefficients.txt @@ -23,7 +23,7 @@ diffusionCoefficientsProps diffusantGasNames ( speciesNames ); \} :pre -{switch1} = (optional, normally off) flag to give information :ulb,l +{switch1} = (optional, default false) flag to output verbose information :ulb,l {ChemistryFile} = path to file, where the reacting species are listed :l {diffusantGasNames} = list of gas field names that are the reactant gases :l :ule diff --git a/doc/chemistryModel_massTransferCoeff.txt b/doc/chemistryModel_massTransferCoeff.txt index 39573ac4..56534c52 100644 --- a/doc/chemistryModel_massTransferCoeff.txt +++ b/doc/chemistryModel_massTransferCoeff.txt @@ -21,7 +21,7 @@ massTransferCoeffProps verbose switch1; \} :pre -{switch1} = (optional, normally off) flag to give information :l +{switch1} = (optional, default false) flag to output verbose information :l :ule [Examples:] diff --git a/doc/chemistryModel_reactantPerParticle.txt b/doc/chemistryModel_reactantPerParticle.txt new file mode 100644 index 00000000..6f5069c3 --- /dev/null +++ b/doc/chemistryModel_reactantPerParticle.txt @@ -0,0 +1,54 @@ +"CFDEMproject Website"_lws - "Main Page"_main :c + +:link(lws,http://www.cfdem.com) +:link(main,CFDEMcoupling_Manual.html) + +:line + +chemistryModel reactantPerParticle command :h3 + +[Syntax:] + +Defined in "couplingProperties"_CFDEMcoupling_dicts.html#couplingProperties +dictionary. + +chemistryModels +( + reactantPerParticle +); +reactantPerParticleProps +\{ + voidfractionFieldName "voidfraction"; + Nevery number1; +\} :pre + +{voidfraction} = (optional, default "voidfraction") name of the finite volume void fraction field :l +{number1} = (optional, default 1) number to adjust execution interval :l +:ule + +[Examples:] + +chemistryModels +( + reactantPerParticle +); +reactantPerParticleProps +\{ + voidfractionFieldName "voidfraction"; + Nevery 1; +\} :pre + +[Description:] + +The chemistry model performs the calculation of chemical reactional effects +acting on each DEM particle. The reactantPerParticle model is the model to +communicate the available reactant per particle. + +[Restrictions:] + +none + +[Related commands:] + +"chemistryModel"_chemistryModel.html + diff --git a/doc/chemistryModel_species.txt b/doc/chemistryModel_species.txt index ad4891bf..b5071e59 100644 --- a/doc/chemistryModel_species.txt +++ b/doc/chemistryModel_species.txt @@ -26,16 +26,18 @@ speciesProps partTempName "partTemp"; partRhoName "partRho"; verbose switch1; + Nevery number1; \} :pre {ChemistryFile} = path to file, where the reacting species are listed :ulb,l -{T} = name of the finite volume temperature field, it is already added in default and doesn't need to be specified if name is the same :l -{rho} = name of the finite volume density field, it is already added in default and doesn't need to be specified if name is the same :l -{voidfraction} = name of the finite volume void fraction field, it is already added in default and doesn't need to be specified if name is the same :l -{molarConc} = name of the finite volume molar concentration field, it is already added in default and doesn't need to be specified if name is the same :l -{partTemp} = name of the finite volume cell averaged particle temperature field, it is already added in default and doesn't need to be specified if name is the same :l -{partRho} = name of the finite volume cell averaged density temperature field, it is already added in default and doesn't need to be specified if name is the same :l -{switch1} = (optional, normally off) flag to give information :l +{T} = (optional, default "T") name of the finite volume temperature field :l +{rho} = (optional, default "rho") name of the finite volume density field :l +{voidfraction} = (optional, default "voidfraction") name of the finite volume void fraction field :l +{molarConc} = (optional, default "molarConc") name of the finite volume molar concentration field :l +{partTemp} = (optional, default "partTemp") name of the finite volume cell averaged particle temperature field :l +{partRho} = (optional, default "partRho") name of the finite volume cell averaged density temperature field :l +{switch1} = (optional, default false) flag to output verbose information :l +{number1} = (optional, default 1) number to adjust execution interval :l :ule [Examples:] From 209fc5c78f79a1a60285ff711d87c295649b2dca Mon Sep 17 00:00:00 2001 From: danielque Date: Thu, 21 Feb 2019 14:05:36 +0100 Subject: [PATCH 22/28] clean up whitespaces --- .../subModels/dataExchangeModel/twoWayOne2One/one2one.C | 4 ++-- .../subModels/dataExchangeModel/twoWayOne2One/one2one.H | 2 +- .../dataExchangeModel/twoWayOne2One/twoWayOne2One.C | 4 ++-- .../dataExchangeModel/twoWayOne2One/twoWayOne2One.H | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/one2one.C b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/one2one.C index 217f9440..db4c918b 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/one2one.C +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/one2one.C @@ -213,7 +213,7 @@ void One2One::exchange(T *&src, T *&dst, int data_length) if (offset_local > -1) { const int max_locali = nlocal_ * data_length; - for + for ( int locali = 0; locali < max_locali; @@ -283,4 +283,4 @@ void One2One::deallocate() delete [] request_; delete [] status_; -} \ No newline at end of file +} diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/one2one.H b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/one2one.H index 4205e11c..a3d1e21e 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/one2one.H +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/one2one.H @@ -23,7 +23,7 @@ Copyright 2018- Paul Kieckhefen, TUHH #include -class One2One +class One2One { public: One2One(MPI_Comm); diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C index f921dde4..d5738c59 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayOne2One/twoWayOne2One.C @@ -530,7 +530,7 @@ bool twoWayOne2One::couple(int i) if(particleCloud_.liggghtsCommand(i).exactTiming()) { exactTiming = true; - DynamicList h + DynamicList h = particleCloud_.liggghtsCommand(i).executionsWithinPeriod ( TSstart(), @@ -799,7 +799,7 @@ void twoWayOne2One::locateParticles() << " ouf of " << returnReduce(lmp->atom->nlocal, sumOp