release on 2014-11-10_07-57-15

This commit is contained in:
Christoph Goniva, DCS Computing GmbH
2014-11-10 07:57:15 +01:00
parent a8c8955d53
commit 409283acc3
147 changed files with 1507 additions and 1611 deletions

81
README Executable file
View File

@ -0,0 +1,81 @@
/*---------------------------------------------------------------------------*\
CFDEMcoupling - Open Source CFD-DEM coupling
CFDEMcoupling is part of the CFDEMproject
www.cfdem.com
Christoph Goniva, christoph.goniva@cfdem.com
Copyright 2009-2012 JKU Linz
Copyright 2012- DCS Computing GmbH, Linz
-------------------------------------------------------------------------------
License
This file is part of CFDEMcoupling.
CFDEMcoupling 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.
CFDEMcoupling 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 CFDEMcoupling; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Description
This code is designed to realize coupled CFD-DEM simulations using LIGGGHTS
and OpenFOAM. Note: this code is not part of OpenFOAM (see DISCLAIMER).
\*---------------------------------------------------------------------------*/
CFDEM coupling provides an open source parallel coupled CFD-DEM framework
combining the strengths of LIGGGHTS DEM code and the Open Source
CFD package OpenFOAM(R)(*). The CFDEMcoupling toolbox allows to expand
standard CFD solvers of OpenFOAM(R)(*) to include a coupling to the DEM
code LIGGGHTS. In this toolbox the particle representation within the
CFD solver is organized by "cloud" classes. Key functionalities are organised
in sub-models (e.g. force models, data exchange models, etc.) which can easily
be selected and combined by dictionary settings.
The coupled solvers run fully parallel on distributed-memory clusters.
Features are:
- its modular approach allows users to easily implement new models
- its MPI parallelization enables to use it for large scale problems
- the "forum"_lws on CFD-DEM gives the possibility to exchange with other
users / developers
- the use of GIT allows to easily update to the latest version
- basic documentation is provided
The file structure:
- "src" directory including the source files of the coupling toolbox and models
- "applications" directory including the solver files for coupled CFD-DEM simulations
- "doc" directory including the documentation of CFDEMcoupling
- "tutorials" directory including basic tutorial cases showing the functionality
Details on installation are given on the "www.cfdem.com"
The functionality of this CFD-DEM framwork is described via "tutorial cases" showing
how to use different solvers and models.
CFDEMcoupling stands for Computational Fluid Dynamics (CFD) -
Discrete Element Method (DEM) coupling.
CFDEMcoupling is an open-source code, distributed freely under the terms of the
GNU Public License (GPL).
Core development of CFDEMcoupling is done by
Christoph Goniva and Christoph Kloss, both at DCS Computing GmbH, 2012
\*---------------------------------------------------------------------------*/
(*) "OpenFOAM(R)"_of is a registered trade mark of the ESI Group.
This offering is not affiliated, approved or endorsed by ESI Group,
the producer of the OpenFOAM® software and owner of the OpenFOAM® trade mark.
\*---------------------------------------------------------------------------*/

View File

@ -11,7 +11,6 @@ EXE_INC = \
-I$(LIB_SRC)/dynamicMesh/dynamicFvMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \
-I$(LIB_SRC)/fvOptions/lnInclude -I$(LIB_SRC)/fvOptions/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-L$(CFDEM_LIB_DIR)\ -L$(CFDEM_LIB_DIR)\
-lincompressibleRASModels \ -lincompressibleRASModels \
@ -22,3 +21,4 @@ EXE_LIBS = \
-ldynamicMesh \ -ldynamicMesh \
-lfvOptions \ -lfvOptions \
-l$(CFDEM_LIB_NAME) -l$(CFDEM_LIB_NAME)

View File

@ -42,6 +42,7 @@ Description
#include "implicitCouple.H" #include "implicitCouple.H"
#include "clockModel.H" #include "clockModel.H"
#include "smoothingModel.H" #include "smoothingModel.H"
#include "forceModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -59,10 +60,9 @@ int main(int argc, char *argv[])
#include "checkModelType.H" #include "checkModelType.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (runTime.loop())
{ {
Info<< "\nStarting time loop\n" << endl;
particleCloud.clockM().start(1,"Global"); particleCloud.clockM().start(1,"Global");
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
@ -72,7 +72,17 @@ int main(int argc, char *argv[])
// do particle stuff // do particle stuff
particleCloud.clockM().start(2,"Coupling"); particleCloud.clockM().start(2,"Coupling");
particleCloud.evolve(voidfraction,Us,U); bool hasEvolved = particleCloud.evolve(voidfraction,Us,U);
if(hasEvolved)
{
//Smoothen implicit momCoupling force
//fSmooth.internalField() = particleCloud.forceM(0).impParticleForces() ;
//particleCloud.smoothingM().smoothen(fSmooth);
//fSmooth.correctBoundaryConditions();
//particleCloud.forceM(0).impParticleForces() = fSmooth;
particleCloud.smoothingM().smoothen(particleCloud.forceM(0).impParticleForces());
}
Info << "update Ksl.internalField()" << endl; Info << "update Ksl.internalField()" << endl;
Ksl = particleCloud.momCoupleM(0).impMomSource(); Ksl = particleCloud.momCoupleM(0).impMomSource();
@ -97,16 +107,16 @@ int main(int argc, char *argv[])
// Momentum predictor // Momentum predictor
fvVectorMatrix UEqn fvVectorMatrix UEqn
( (
fvm::ddt(voidfraction,U) + fvm::Sp(fvc::ddt(voidfraction),U) fvm::ddt(voidfraction,U) - fvm::Sp(fvc::ddt(voidfraction),U)
+ fvm::div(phi,U) + fvm::Sp(fvc::div(phi),U) + fvm::div(phi,U) - fvm::Sp(fvc::div(phi),U)
// + turbulence->divDevReff(U) // + turbulence->divDevReff(U)
+ particleCloud.divVoidfractionTau(U, voidfraction) + particleCloud.divVoidfractionTau(U, voidfraction)
== ==
- fvm::Sp(Ksl/rho,U) - fvm::Sp(Ksl/rho,U)
); );
if (modelType=="B") if (modelType=="B" || modelType=="Bfull")
UEqn == - fvc::grad(p) + Ksl/rho*Us; UEqn == - fvc::grad(p) + Ksl/rho*Us;
else else
UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us; UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us;
@ -169,7 +179,7 @@ int main(int argc, char *argv[])
#include "continuityErrorPhiPU.H" #include "continuityErrorPhiPU.H"
if (modelType=="B") if (modelType=="B" || modelType=="Bfull")
U -= rUA*fvc::grad(p) - Ksl/rho*Us*rUA; U -= rUA*fvc::grad(p) - Ksl/rho*Us*rUA;
else else
U -= voidfraction*rUA*fvc::grad(p) - Ksl/rho*Us*rUA; U -= voidfraction*rUA*fvc::grad(p) - Ksl/rho*Us*rUA;

View File

@ -89,6 +89,22 @@
mesh mesh
); );
/*
volVectorField fSmooth
(
IOobject
(
"fSmooth",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::NO_WRITE
),
mesh,
dimensionedVector("0", dimensionSet(1, 1, -2, 0, 0), vector::zero)
);
*/
//=============================== //===============================
//# include "createPhi.H" //# include "createPhi.H"

View File

@ -40,30 +40,26 @@ Description
#include "cfdemCloud.H" #include "cfdemCloud.H"
#include "implicitCouple.H" #include "implicitCouple.H"
#include "forceModel.H"
#include "smoothingModel.H" #include "smoothingModel.H"
#include "forceModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
#include "createFields.H" #include "createFields.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
// create cfdemCloud // create cfdemCloud
#include "readGravitationalAcceleration.H" #include "readGravitationalAcceleration.H"
cfdemCloud particleCloud(mesh); cfdemCloud particleCloud(mesh);
#include "checkModelType.H" #include "checkModelType.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (runTime.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
@ -73,7 +69,7 @@ int main(int argc, char *argv[])
// do particle stuff // do particle stuff
Info << "- evolve()" << endl; Info << "- evolve()" << endl;
particleCloud.evolve(voidfraction,Us,U); bool hasEvolved = particleCloud.evolve(voidfraction,Us,U);
Ksl.internalField() = particleCloud.momCoupleM(0).impMomSource(); Ksl.internalField() = particleCloud.momCoupleM(0).impMomSource();
particleCloud.smoothingM().smoothen(Ksl); particleCloud.smoothingM().smoothen(Ksl);
@ -115,7 +111,7 @@ int main(int argc, char *argv[])
if (momentumPredictor) if (momentumPredictor)
{ {
//solve UEqn //solve UEqn
if (modelType=="B") if (modelType=="B" || modelType=="Bfull")
solve(UEqn == - fvc::grad(p) + Ksl/rho*Us); solve(UEqn == - fvc::grad(p) + Ksl/rho*Us);
else else
solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us); solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us);
@ -176,7 +172,7 @@ int main(int argc, char *argv[])
#include "continuityErrorPhiPU.H" #include "continuityErrorPhiPU.H"
if (modelType=="B") if (modelType=="B" || modelType=="Bfull")
U -= rUA*fvc::grad(p) - Ksl/rho*Us*rUA; U -= rUA*fvc::grad(p) - Ksl/rho*Us*rUA;
else else
U -= voidfraction*rUA*fvc::grad(p) - Ksl/rho*Us*rUA; U -= voidfraction*rUA*fvc::grad(p) - Ksl/rho*Us*rUA;

View File

@ -71,6 +71,7 @@ int main(int argc, char *argv[])
double **voidfractions_; double **voidfractions_;
double **particleWeights_; double **particleWeights_;
double **particleVolumes_; double **particleVolumes_;
double **particleV_;
double **cellIDs_; double **cellIDs_;
particleCloud.dataExchangeM().allocateArray(positions_,0.,3); particleCloud.dataExchangeM().allocateArray(positions_,0.,3);
@ -80,6 +81,7 @@ int main(int argc, char *argv[])
particleCloud.dataExchangeM().allocateArray(voidfractions_,0.,1); particleCloud.dataExchangeM().allocateArray(voidfractions_,0.,1);
particleCloud.dataExchangeM().allocateArray(particleWeights_,0.,1); particleCloud.dataExchangeM().allocateArray(particleWeights_,0.,1);
particleCloud.dataExchangeM().allocateArray(particleVolumes_,0.,1); particleCloud.dataExchangeM().allocateArray(particleVolumes_,0.,1);
particleCloud.dataExchangeM().allocateArray(particleV_,0.,1);
particleCloud.get_cellIDs(cellIDs_); // get ref to cellIDs particleCloud.get_cellIDs(cellIDs_); // get ref to cellIDs
//particleCloud.dataExchangeM().allocateArray(cellIDs_,0.,1); //particleCloud.dataExchangeM().allocateArray(cellIDs_,0.,1);
@ -105,7 +107,7 @@ int main(int argc, char *argv[])
particleCloud.locateM().findCell(NULL,positions_,cellIDs_,particleCloud.numberOfParticles()); particleCloud.locateM().findCell(NULL,positions_,cellIDs_,particleCloud.numberOfParticles());
particleCloud.setPos(positions_); particleCloud.setPos(positions_);
particleCloud.voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_); particleCloud.voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_,particleV_);
voidfraction.internalField() = particleCloud.voidFractionM().voidFractionInterp(); voidfraction.internalField() = particleCloud.voidFractionM().voidFractionInterp();
voidfraction.correctBoundaryConditions(); voidfraction.correctBoundaryConditions();
@ -135,6 +137,7 @@ int main(int argc, char *argv[])
particleCloud.dataExchangeM().destroy(voidfractions_,1); particleCloud.dataExchangeM().destroy(voidfractions_,1);
particleCloud.dataExchangeM().destroy(particleWeights_,1); particleCloud.dataExchangeM().destroy(particleWeights_,1);
particleCloud.dataExchangeM().destroy(particleVolumes_,1); particleCloud.dataExchangeM().destroy(particleVolumes_,1);
particleCloud.dataExchangeM().destroy(particleV_,1);
//particleCloud.dataExchangeM().destroy(cellIDs_); // destroyed in cloud //particleCloud.dataExchangeM().destroy(cellIDs_); // destroyed in cloud
Info<< "End\n" << endl; Info<< "End\n" << endl;

View File

@ -164,7 +164,7 @@ In order to get the latest code version, please use the git repository at http:/
</P> </P>
<PRE>modelType <PRE>modelType
</PRE> </PRE>
<P>"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". <P>"modelType" refers to the formulation of the equations to be solved. Choose "A", "B" or "Bfull", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". "Bfull" refers to model type I.
</P> </P>
<PRE>couplingInterval <PRE>couplingInterval
</PRE> </PRE>

Binary file not shown.

View File

@ -133,7 +133,7 @@ Reasonable example settings for the "couplingProperties" dictionary are given in
modelType :pre modelType :pre
"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". "modelType" refers to the formulation of the equations to be solved. Choose "A", "B" or "Bfull", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". "Bfull" refers to model type I.
couplingInterval :pre couplingInterval :pre

View File

@ -33,7 +33,7 @@
</P> </P>
<P><B>Description:</B> <P><B>Description:</B>
</P> </P>
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. All force models selected are executed sequentially and the forces on the particles are superposed. <P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. All force models selected are executed sequentially and the forces on the particles are superposed. If the fluid density field is needed, by default a field named "rho" will be used. Via the forceSubModel an alternative field can be chosen.
</P> </P>
<P><B>Restrictions:</B> <P><B>Restrictions:</B>
</P> </P>

View File

@ -31,7 +31,7 @@ Note: This examples list might not be complete - please look for other models (f
[Description:] [Description:]
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. All force models selected are executed sequentially and the forces on the particles are superposed. The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. All force models selected are executed sequentially and the forces on the particles are superposed. If the fluid density field is needed, by default a field named "rho" will be used. Via the forceSubModel an alternative field can be chosen.
[Restrictions:] [Restrictions:]

View File

@ -19,13 +19,10 @@
); );
ArchimedesProps ArchimedesProps
{ {
densityFieldName "density";
gravityFieldName "gravity"; gravityFieldName "gravity";
}; };
</PRE> </PRE>
<UL><LI><I>density</I> = name of the finite volume density field <UL><LI><I>gravity</I> = name of the finite volume gravity field
<LI><I>gravity</I> = name of the finite volume gravity field
</UL> </UL>
@ -37,7 +34,6 @@ ArchimedesProps
); );
ArchimedesProps ArchimedesProps
{ {
densityFieldName "rho";
gravityFieldName "g"; gravityFieldName "g";
} }
</PRE> </PRE>

View File

@ -17,12 +17,10 @@ forceModels
); );
ArchimedesProps ArchimedesProps
\{ \{
densityFieldName "density";
gravityFieldName "gravity"; gravityFieldName "gravity";
\}; :pre \}; :pre
{density} = name of the finite volume density field :ulb,l {gravity} = name of the finite volume gravity field :ulb,l
{gravity} = name of the finite volume gravity field :l
:ule :ule
[Examples:] [Examples:]
@ -33,7 +31,6 @@ forceModels
); );
ArchimedesProps ArchimedesProps
\{ \{
densityFieldName "rho";
gravityFieldName "g"; gravityFieldName "g";
\} :pre \} :pre

View File

@ -19,14 +19,11 @@
); );
ArchimedesIBProps ArchimedesIBProps
{ {
densityFieldName "density";
gravityFieldName "gravity"; gravityFieldName "gravity";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
}; };
</PRE> </PRE>
<UL><LI><I>density</I> = name of the finite volume density field <UL><LI><I>gravity</I> = name of the finite volume gravity field
<LI><I>gravity</I> = name of the finite volume gravity field
<LI><I>voidfraction</I> = name of the finite volume voidfraction field <LI><I>voidfraction</I> = name of the finite volume voidfraction field
@ -40,7 +37,6 @@ ArchimedesIBProps
); );
ArchimedesIBProps ArchimedesIBProps
{ {
densityFieldName "rho";
gravityFieldName "g"; gravityFieldName "g";
voidfractionFieldName "voidfractionNext"; voidfractionFieldName "voidfractionNext";
} }

View File

@ -17,13 +17,11 @@ forceModels
); );
ArchimedesIBProps ArchimedesIBProps
\{ \{
densityFieldName "density";
gravityFieldName "gravity"; gravityFieldName "gravity";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
\}; :pre \}; :pre
{density} = name of the finite volume density field :ulb,l {gravity} = name of the finite volume gravity field :ulb,l
{gravity} = name of the finite volume gravity field :l
{voidfraction} = name of the finite volume voidfraction field :l {voidfraction} = name of the finite volume voidfraction field :l
:ule :ule
@ -35,7 +33,6 @@ forceModels
); );
ArchimedesIBProps ArchimedesIBProps
\{ \{
densityFieldName "rho";
gravityFieldName "g"; gravityFieldName "g";
voidfractionFieldName "voidfractionNext"; voidfractionFieldName "voidfractionNext";
\} :pre \} :pre

View File

@ -20,15 +20,12 @@
DiFeliceDragProps DiFeliceDragProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "density"; interpolation switch1;
interpolation;
}; };
</PRE> </PRE>
<UL><LI><I>U</I> = name of the finite volume fluid velocity field <UL><LI><I>U</I> = name of the finite volume fluid velocity field
<LI><I>density</I> = name of the finite volume gravity field <LI><I>switch1</I> = flag to use interpolated voidfraction and velocity values (normally off)
<LI><I>interpolation</I> = flag to use interpolated voidfraction and velocity values (normally off)
</UL> </UL>
@ -41,8 +38,7 @@ DiFeliceDragProps
DiFeliceDragProps DiFeliceDragProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "rho"; interpolation true;
interpolation;
} }
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>

View File

@ -18,13 +18,11 @@ forceModels
DiFeliceDragProps DiFeliceDragProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "density"; interpolation switch1;
interpolation;
\}; :pre \}; :pre
{U} = name of the finite volume fluid velocity field :ulb,l {U} = name of the finite volume fluid velocity field :ulb,l
{density} = name of the finite volume gravity field :l {switch1} = flag to use interpolated voidfraction and velocity values (normally off) :l
{interpolation} = flag to use interpolated voidfraction and velocity values (normally off) :l
:ule :ule
[Examples:] [Examples:]
@ -36,8 +34,7 @@ forceModels
DiFeliceDragProps DiFeliceDragProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "rho"; interpolation true;
interpolation;
\} :pre \} :pre
[Description:] [Description:]

View File

@ -20,27 +20,24 @@
GidaspowDragProps GidaspowDragProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "density";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
granVelFieldName "Us"; granVelFieldName "Us";
phi "scalar"; phi "scalar";
interpolation; interpolation switch1;
implDEM; implForceDEM switch2;
}; };
</PRE> </PRE>
<UL><LI><I>U</I> = name of the finite volume fluid velocity field <UL><LI><I>U</I> = name of the finite volume fluid velocity field
<LI><I>density</I> = name of the finite volume gravity field
<LI><I>voidfraction</I> = name of the finite volume voidfraction field <LI><I>voidfraction</I> = name of the finite volume voidfraction field
<LI><I>Us</I> = name of the finite volume cell averaged particle velocity field <LI><I>Us</I> = name of the finite volume cell averaged particle velocity field
<LI><I>phi</I> = drag correction factor (in doubt 1) <LI><I>phi</I> = drag correction factor (in doubt 1)
<LI><I>interpolation</I> = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values <LI><I>switch1</I> = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values
<I>implDEM</I> = (optional, normally off) flag to use implicit formulation of drag on DEM side:l <I>switch2</I> = (optional, normally off) flag to use implicit formulation of drag on DEM side:l
</UL> </UL>
<P><B>Examples:</B> <P><B>Examples:</B>
@ -52,7 +49,6 @@ GidaspowDragProps
GidaspowDragProps GidaspowDragProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
granVelFieldName "Us"; granVelFieldName "Us";
} }

View File

@ -18,21 +18,19 @@ forceModels
GidaspowDragProps GidaspowDragProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "density";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
granVelFieldName "Us"; granVelFieldName "Us";
phi "scalar"; phi "scalar";
interpolation; interpolation switch1;
implDEM; implForceDEM switch2;
\}; :pre \}; :pre
{U} = name of the finite volume fluid velocity field :ulb,l {U} = name of the finite volume fluid velocity field :ulb,l
{density} = name of the finite volume gravity field :l
{voidfraction} = name of the finite volume voidfraction field :l {voidfraction} = name of the finite volume voidfraction field :l
{Us} = name of the finite volume cell averaged particle velocity field :l {Us} = name of the finite volume cell averaged particle velocity field :l
{phi} = drag correction factor (in doubt 1) :l {phi} = drag correction factor (in doubt 1) :l
{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l {switch1} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l
{implDEM} = (optional, normally off) flag to use implicit formulation of drag on DEM side:l {switch2} = (optional, normally off) flag to use implicit formulation of drag on DEM side:l
:ule :ule
[Examples:] [Examples:]
@ -44,7 +42,6 @@ forceModels
GidaspowDragProps GidaspowDragProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
granVelFieldName "Us"; granVelFieldName "Us";
\} :pre \} :pre

View File

@ -20,21 +20,18 @@
KochHillDragProps KochHillDragProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "density";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
interpolation; interpolation "bool1";
implDEM; implForceDEM "bool2";
}; };
</PRE> </PRE>
<UL><LI><I>U</I> = name of the finite volume fluid velocity field <UL><LI><I>U</I> = name of the finite volume fluid velocity field
<LI><I>density</I> = name of the finite volume gravity field
<LI><I>voidfraction</I> = name of the finite volume voidfraction field <LI><I>voidfraction</I> = name of the finite volume voidfraction field
<LI><I>interpolation</I> = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values <LI><I>bool1</I> = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values
<I>implDEM</I> = (optional, normally off) flag to use implicit formulation of drag on DEM side:l <I>bool2</I> = (optional, normally off) flag to use implicit formulation of drag on DEM side:l
</UL> </UL>
<P><B>Examples:</B> <P><B>Examples:</B>
@ -46,7 +43,6 @@ KochHillDragProps
KochHillDragProps KochHillDragProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
} }
</PRE> </PRE>

View File

@ -18,17 +18,15 @@ forceModels
KochHillDragProps KochHillDragProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "density";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
interpolation; interpolation "bool1";
implDEM; implForceDEM "bool2";
\}; :pre \}; :pre
{U} = name of the finite volume fluid velocity field :ulb,l {U} = name of the finite volume fluid velocity field :ulb,l
{density} = name of the finite volume gravity field :l
{voidfraction} = name of the finite volume voidfraction field :l {voidfraction} = name of the finite volume voidfraction field :l
{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l {bool1} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l
{implDEM} = (optional, normally off) flag to use implicit formulation of drag on DEM side:l {bool2} = (optional, normally off) flag to use implicit formulation of drag on DEM side:l
:ule :ule
[Examples:] [Examples:]
@ -40,7 +38,6 @@ forceModels
KochHillDragProps KochHillDragProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
voidfractionFieldName "voidfraction"; voidfractionFieldName "voidfraction";
\} :pre \} :pre

View File

@ -27,9 +27,8 @@ LaEuScalarTempProps
partHeatFluxName "convectiveHeatFlux"; partHeatFluxName "convectiveHeatFlux";
lambda value; lambda value;
Cp value1; Cp value1;
densityFieldName "density"; interpolation "switch1";
interpolation; verbose "switch2";
verbose;
}; };
</PRE> </PRE>
<UL><LI><I>U</I> = name of the finite volume fluid velocity field <UL><LI><I>U</I> = name of the finite volume fluid velocity field
@ -48,11 +47,9 @@ LaEuScalarTempProps
<LI><I>value1</I> = fluid specific heat capacity [W*s/(kg*K)] <LI><I>value1</I> = fluid specific heat capacity [W*s/(kg*K)]
<LI><I>density</I> = name of the finite volume fluid density field <LI><I>switch1</I> = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values
<LI><I>interpolation</I> = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values <LI><I>switch2</I> = (normally off) for verbose run
<LI><I>verbose</I> = (normally off) for verbose run
</UL> </UL>
@ -72,7 +69,6 @@ LaEuScalarTempProps
partHeatFluxName "convectiveHeatFlux"; partHeatFluxName "convectiveHeatFlux";
lambda 0.0256; lambda 0.0256;
Cp 1007; Cp 1007;
densityFieldName "rho";
} }
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>

View File

@ -25,9 +25,8 @@ LaEuScalarTempProps
partHeatFluxName "convectiveHeatFlux"; partHeatFluxName "convectiveHeatFlux";
lambda value; lambda value;
Cp value1; Cp value1;
densityFieldName "density"; interpolation "switch1";
interpolation; verbose "switch2";
verbose;
\}; :pre \}; :pre
{U} = name of the finite volume fluid velocity field :ulb,l {U} = name of the finite volume fluid velocity field :ulb,l
@ -38,9 +37,8 @@ LaEuScalarTempProps
{convectiveHeatFlux} = name of the DEM data representing the particle-fluid convective heat flux :l {convectiveHeatFlux} = name of the DEM data representing the particle-fluid convective heat flux :l
{value} = fluid thermal conductivity \[W/(m*K)\] :l {value} = fluid thermal conductivity \[W/(m*K)\] :l
{value1} = fluid specific heat capacity \[W*s/(kg*K)\] :l {value1} = fluid specific heat capacity \[W*s/(kg*K)\] :l
{density} = name of the finite volume fluid density field :l {switch1} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l
{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l {switch2} = (normally off) for verbose run :l
{verbose} = (normally off) for verbose run :l
:ule :ule
[Examples:] [Examples:]
@ -59,7 +57,6 @@ LaEuScalarTempProps
partHeatFluxName "convectiveHeatFlux"; partHeatFluxName "convectiveHeatFlux";
lambda 0.0256; lambda 0.0256;
Cp 1007; Cp 1007;
densityFieldName "rho";
\} :pre \} :pre
[Description:] [Description:]

View File

@ -20,21 +20,18 @@
MeiLiftProps MeiLiftProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "density";
useSecondOrderTerms; useSecondOrderTerms;
interpolation; interpolation "switch1";
verbose; verbose "switch2";
}; };
</PRE> </PRE>
<UL><LI><I>U</I> = name of the finite volume fluid velocity field <UL><LI><I>U</I> = name of the finite volume fluid velocity field
<LI><I>density</I> = name of the finite volume fluid density field
<LI><I>useSecondOrderTerms</I> = switch to activate second order terms in the lift force model <LI><I>useSecondOrderTerms</I> = switch to activate second order terms in the lift force model
<LI><I>interpolation</I> = switch to activate tri-linear interpolation of the flow quantities at the particle position <LI><I>switch1</I> = switch to activate tri-linear interpolation of the flow quantities at the particle position
<LI><I>verbose</I> = switch to activate the report of per-particle quantities to the screen <LI><I>switch2</I> = switch to activate the report of per-particle quantities to the screen
</UL> </UL>
@ -47,10 +44,9 @@ MeiLiftProps
MeiLiftProps MeiLiftProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
useSecondOrderTerms; useSecondOrderTerms;
interpolation; interpolation true;
verbose; verbose true;
} }
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>

View File

@ -18,17 +18,15 @@ forceModels
MeiLiftProps MeiLiftProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "density";
useSecondOrderTerms; useSecondOrderTerms;
interpolation; interpolation "switch1";
verbose; verbose "switch2";
\}; :pre \}; :pre
{U} = name of the finite volume fluid velocity field :ulb,l {U} = name of the finite volume fluid velocity field :ulb,l
{density} = name of the finite volume fluid density field :l
{useSecondOrderTerms} = switch to activate second order terms in the lift force model :l {useSecondOrderTerms} = switch to activate second order terms in the lift force model :l
{interpolation} = switch to activate tri-linear interpolation of the flow quantities at the particle position :l {switch1} = switch to activate tri-linear interpolation of the flow quantities at the particle position :l
{verbose} = switch to activate the report of per-particle quantities to the screen :l {switch2} = switch to activate the report of per-particle quantities to the screen :l
:ule :ule
[Examples:] [Examples:]
@ -40,10 +38,9 @@ forceModels
MeiLiftProps MeiLiftProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
useSecondOrderTerms; useSecondOrderTerms;
interpolation; interpolation true;
verbose; verbose true;
\} :pre \} :pre
[Description:] [Description:]

View File

@ -20,13 +20,10 @@
SchillerNaumannDragProps SchillerNaumannDragProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "density";
}; };
</PRE> </PRE>
<UL><LI><I>U</I> = name of the finite volume fluid velocity field <UL><LI><I>U</I> = name of the finite volume fluid velocity field
<LI><I>density</I> = name of the finite volume gravity field
</UL> </UL>
<P><B>Examples:</B> <P><B>Examples:</B>
@ -38,7 +35,6 @@ SchillerNaumannDragProps
SchillerNaumannDragProps SchillerNaumannDragProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
} }
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>

View File

@ -18,11 +18,9 @@ forceModels
SchillerNaumannDragProps SchillerNaumannDragProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "density";
\}; :pre \}; :pre
{U} = name of the finite volume fluid velocity field :ulb,l {U} = name of the finite volume fluid velocity field :ulb,l
{density} = name of the finite volume gravity field :l
:ule :ule
[Examples:] [Examples:]
@ -34,7 +32,6 @@ forceModels
SchillerNaumannDragProps SchillerNaumannDragProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
\} :pre \} :pre
[Description:] [Description:]

View File

@ -20,14 +20,11 @@
ShirgaonkarIBProps ShirgaonkarIBProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "density";
pressureFieldName "pressure"; pressureFieldName "pressure";
}; };
</PRE> </PRE>
<UL><LI><I>U</I> = name of the finite volume fluid velocity field <UL><LI><I>U</I> = name of the finite volume fluid velocity field
<LI><I>density</I> = name of the finite volume density field
<LI><I>pressure</I> = name of the finite volume pressure field <LI><I>pressure</I> = name of the finite volume pressure field
@ -41,7 +38,6 @@ ShirgaonkarIBProps
ShirgaonkarIBProps ShirgaonkarIBProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
pressureFieldName "p"; pressureFieldName "p";
} }
</PRE> </PRE>

View File

@ -18,12 +18,10 @@ forceModels
ShirgaonkarIBProps ShirgaonkarIBProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "density";
pressureFieldName "pressure"; pressureFieldName "pressure";
\}; :pre \}; :pre
{U} = name of the finite volume fluid velocity field :ulb,l {U} = name of the finite volume fluid velocity field :ulb,l
{density} = name of the finite volume density field :l
{pressure} = name of the finite volume pressure field :l {pressure} = name of the finite volume pressure field :l
:ule :ule
@ -36,7 +34,6 @@ forceModels
ShirgaonkarIBProps ShirgaonkarIBProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
pressureFieldName "p"; pressureFieldName "p";
\} :pre \} :pre

View File

@ -20,18 +20,15 @@
gradPForceProps gradPForceProps
{ {
pFieldName "pressure"; pFieldName "pressure";
densityFieldName "density";
velocityFieldName "U"; velocityFieldName "U";
interpolation; interpolation switch1;
}; };
</PRE> </PRE>
<UL><LI><I>pressure</I> = name of the finite volume fluid pressure field <UL><LI><I>pressure</I> = name of the finite volume fluid pressure field
<LI><I>density</I> = name of the finite volume gravity field
<LI><I>U</I> = name of the finite volume fluid velocity field <LI><I>U</I> = name of the finite volume fluid velocity field
<LI><I>interpolation</I> = flag to use interpolated pressure values (normally off) <LI><I>switch1</I> = flag to use interpolated pressure values (normally off)
</UL> </UL>
@ -44,9 +41,8 @@ gradPForceProps
gradPForceProps gradPForceProps
{ {
pFieldName "p"; pFieldName "p";
densityFieldName "rho";
velocityFieldName "U"; velocityFieldName "U";
interpolation; interpolation true;
} }
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>

View File

@ -18,15 +18,13 @@ forceModels
gradPForceProps gradPForceProps
\{ \{
pFieldName "pressure"; pFieldName "pressure";
densityFieldName "density";
velocityFieldName "U"; velocityFieldName "U";
interpolation; interpolation switch1;
\}; :pre \}; :pre
{pressure} = name of the finite volume fluid pressure field :ulb,l {pressure} = name of the finite volume fluid pressure field :ulb,l
{density} = name of the finite volume gravity field :l
{U} = name of the finite volume fluid velocity field :l {U} = name of the finite volume fluid velocity field :l
{interpolation} = flag to use interpolated pressure values (normally off) :l {switch1} = flag to use interpolated pressure values (normally off) :l
:ule :ule
[Examples:] [Examples:]
@ -38,9 +36,8 @@ forceModels
gradPForceProps gradPForceProps
\{ \{
pFieldName "p"; pFieldName "p";
densityFieldName "rho";
velocityFieldName "U"; velocityFieldName "U";
interpolation; interpolation true;
\} :pre \} :pre
[Description:] [Description:]

View File

@ -20,13 +20,10 @@
virtualMassForceProps virtualMassForceProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "density";
}; };
</PRE> </PRE>
<UL><LI><I>U</I> = name of the finite volume fluid velocity field <UL><LI><I>U</I> = name of the finite volume fluid velocity field
<LI><I>density</I> = name of the finite volume fluid density field
</UL> </UL>
<P><B>Examples:</B> <P><B>Examples:</B>
@ -38,7 +35,6 @@ virtualMassForceProps
virtualMassForceProps virtualMassForceProps
{ {
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
} }
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>

View File

@ -18,11 +18,9 @@ forceModels
virtualMassForceProps virtualMassForceProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "density";
\}; :pre \}; :pre
{U} = name of the finite volume fluid velocity field :ulb,l {U} = name of the finite volume fluid velocity field :ulb,l
{density} = name of the finite volume fluid density field :l
:ule :ule
[Examples:] [Examples:]
@ -34,7 +32,6 @@ forceModels
virtualMassForceProps virtualMassForceProps
\{ \{
velFieldName "U"; velFieldName "U";
densityFieldName "rho";
\} :pre \} :pre
[Description:] [Description:]

View File

@ -20,15 +20,12 @@
viscForceProps viscForceProps
{ {
velocityFieldName "U"; velocityFieldName "U";
densityFieldName "density"; interpolation "switch";
interpolation;
}; };
</PRE> </PRE>
<UL><LI><I>U</I> = name of the finite volume fluid velocity field <UL><LI><I>U</I> = name of the finite volume fluid velocity field
<LI><I>density</I> = name of the finite volume gravity field <LI><I>switch</I> = flag to use interpolated stress values (normally off)
<LI><I>interpolation</I> = flag to use interpolated stress values (normally off)
</UL> </UL>
@ -41,7 +38,6 @@ viscForceProps
viscForceProps viscForceProps
{ {
velocityFieldName "U"; velocityFieldName "U";
densityFieldName "density";
} }
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>

View File

@ -18,13 +18,11 @@ forceModels
viscForceProps viscForceProps
\{ \{
velocityFieldName "U"; velocityFieldName "U";
densityFieldName "density"; interpolation "switch";
interpolation;
\}; :pre \}; :pre
{U} = name of the finite volume fluid velocity field :ulb,l {U} = name of the finite volume fluid velocity field :ulb,l
{density} = name of the finite volume gravity field :l {switch} = flag to use interpolated stress values (normally off) :l
{interpolation} = flag to use interpolated stress values (normally off) :l
:ule :ule
[Examples:] [Examples:]
@ -36,7 +34,6 @@ forceModels
viscForceProps viscForceProps
\{ \{
velocityFieldName "U"; velocityFieldName "U";
densityFieldName "density";
\} :pre \} :pre
[Description:] [Description:]

Binary file not shown.

View File

@ -26,13 +26,12 @@ writeLiggghtsProps
verbose; verbose;
} }
</PRE> </PRE>
<UL><LI><I>switch1</I> = switch (choose on/off) to select if only last step is stored or every write step. <UL><LI><I>switch1</I> = switch (choose on/off) to select if only last step is stored or every write step (default on).
<LI><I>name</I> = name of the restart file to be written in /$caseDir/DEM/ default default "liggghts.restartCFDEM" <LI><I>name</I> = name of the restart file to be written in /$caseDir/DEM/ default (default "liggghts.restartCFDEM")
<LI><I>switch2</I> = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written <LI><I>switch2</I> = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written (default off):l
<I>verbose</I> = (default off) for verbose run
<LI><I>verbose</I> = (normally off) for verbose run
</UL> </UL>

View File

@ -24,10 +24,10 @@ writeLiggghtsProps
verbose; verbose;
\} :pre \} :pre
{switch1} = switch (choose on/off) to select if only last step is stored or every write step. :ulb,l {switch1} = switch (choose on/off) to select if only last step is stored or every write step (default on). :ulb,l
{name} = name of the restart file to be written in /$caseDir/DEM/ default default "liggghts.restartCFDEM" :l {name} = name of the restart file to be written in /$caseDir/DEM/ default (default "liggghts.restartCFDEM") :l
{switch2} = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written :l {switch2} = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written (default off):l
{verbose} = (normally off) for verbose run :l {verbose} = (default off) for verbose run :l
:ule :ule
[Examples:] [Examples:]

View File

@ -1,12 +1,13 @@
cfdemCloud = cfdemCloud cfdemCloud = cfdemCloud
forceModels = subModels/forceModel forceModels = subModels/forceModel
forceSubModels = subModels/forceModel/forceSubModels
forceModelsMS = subModels/forceModelMS forceModelsMS = subModels/forceModelMS
IOModels = subModels/IOModel IOModels = subModels/IOModel
voidFractionModels = subModels/voidFractionModel voidFractionModels = subModels/voidFractionModel
voidFractionModelsMS = subModels/voidFractionModelMS
locateModels = subModels/locateModel locateModels = subModels/locateModel
meshMotionModels = subModels/meshMotionModel meshMotionModels = subModels/meshMotionModel
momCoupleModels = subModels/momCoupleModel momCoupleModels = subModels/momCoupleModel
regionModels = subModels/regionModel
dataExchangeModels = subModels/dataExchangeModel dataExchangeModels = subModels/dataExchangeModel
averagingModels = subModels/averagingModel averagingModels = subModels/averagingModel
clockModels = subModels/clockModel clockModels = subModels/clockModel
@ -15,44 +16,79 @@ smoothingModels = subModels/smoothingModel
probeModels = subModels/probeModel probeModels = subModels/probeModel
$(cfdemCloud)/cfdemCloud.C $(cfdemCloud)/cfdemCloud.C
derived/cfdemCloudBiDisperse/cfdemCloudBiDisperse.C
derived/cfdemCloudBiDisperseRotation/cfdemCloudBiDisperseRotation.C
derived/cfdemCloudIB/cfdemCloudIB.C derived/cfdemCloudIB/cfdemCloudIB.C
derived/cfdemCloudMS/cfdemCloudMS.C derived/cfdemCloudMS/cfdemCloudMS.C
derived/cfdemCloudSRF/cfdemCloudSRF.C
$(forceModels)/forceModel/forceModel.C $(forceModels)/forceModel/forceModel.C
$(forceModels)/forceModel/newForceModel.C $(forceModels)/forceModel/newForceModel.C
$(forceModels)/noDrag/noDrag.C $(forceModels)/noDrag/noDrag.C
$(forceModels)/checkCouplingInterval/checkCouplingInterval.C $(forceModels)/checkCouplingInterval/checkCouplingInterval.C
$(forceModels)/DEMbasedDrag/DEMbasedDrag.C
$(forceModels)/DiFeliceDrag/DiFeliceDrag.C $(forceModels)/DiFeliceDrag/DiFeliceDrag.C
$(forceModels)/DiFeliceDragNLift/DiFeliceDragNLift.C
$(forceModels)/GidaspowDrag/GidaspowDrag.C $(forceModels)/GidaspowDrag/GidaspowDrag.C
$(forceModels)/RongDrag/RongDrag.C
$(forceModels)/SchillerNaumannDrag/SchillerNaumannDrag.C $(forceModels)/SchillerNaumannDrag/SchillerNaumannDrag.C
$(forceModels)/Archimedes/Archimedes.C $(forceModels)/Archimedes/Archimedes.C
$(forceModels)/ArchimedesIB/ArchimedesIB.C $(forceModels)/ArchimedesIB/ArchimedesIB.C
$(forceModels)/interface/interface.C $(forceModels)/interface/interface.C
$(forceModels)/ShirgaonkarIB/ShirgaonkarIB.C $(forceModels)/ShirgaonkarIB/ShirgaonkarIB.C
$(forceModels)/interfaceParticleProbe/interfaceParticleProbe.C
$(forceModels)/fieldStore/fieldStore.C
$(forceModels)/fieldTimeAverage/fieldTimeAverage.C
$(forceModels)/fieldBound/fieldBound.C
$(forceModels)/volWeightedAverage/volWeightedAverage.C
$(forceModels)/totalMomentumExchange/totalMomentumExchange.C
$(forceModels)/UStore/UStore.C
$(forceModels)/KochHillDrag/KochHillDrag.C $(forceModels)/KochHillDrag/KochHillDrag.C
$(forceModels)/KochHillRWDrag/KochHillRWDrag.C $(forceModels)/KochHillRWDrag/KochHillRWDrag.C
$(forceModels)/BeetstraDrag/multiphaseFlowBasic/multiphaseFlowBasic.C
$(forceModels)/BeetstraDrag/BeetstraDrag.C
$(forceModels)/OzelSundaresanDrag/OzelSundaresanDrag.C
$(forceModels)/LaEuScalarLiquid/LaEuScalarLiquid.C
$(forceModels)/LaEuScalarTemp/LaEuScalarTemp.C $(forceModels)/LaEuScalarTemp/LaEuScalarTemp.C
$(forceModels)/LaEuScalarDust/LaEuScalarDust.C
$(forceModels)/virtualMassForce/virtualMassForce.C $(forceModels)/virtualMassForce/virtualMassForce.C
$(forceModels)/gradPForce/gradPForce.C $(forceModels)/gradPForce/gradPForce.C
$(forceModels)/gradULiftForce/gradULiftForce.C
$(forceModels)/HollowayDrag/HollowayDrag.C
$(forceModels)/viscForce/viscForce.C $(forceModels)/viscForce/viscForce.C
$(forceModels)/MeiLift/MeiLift.C $(forceModels)/MeiLift/MeiLift.C
$(forceModels)/melting/melting.C
/*$(forceModels)/KochHillDragNLift/KochHillDragNLift.C*/
$(forceModels)/stokesSpheroidDrag/stokesSpheroidDrag.C
$(forceModels)/solidsPressureForce/solidsPressureForce.C
$(forceModels)/periodicPressure/periodicPressure.C
$(forceModels)/periodicPressureControl/periodicPressureControl.C
$(forceModels)/averageSlipVel/averageSlipVel.C
$(forceModels)/particleCellVolume/particleCellVolume.C $(forceModels)/particleCellVolume/particleCellVolume.C
$(forceModels)/fieldTimeAverage/fieldTimeAverage.C
$(forceModels)/volWeightedAverage/volWeightedAverage.C $(forceSubModels)/forceSubModel/newForceSubModel.C
$(forceSubModels)/forceSubModel/forceSubModel.C
$(forceSubModels)/ImEx/ImEx.C
$(forceSubModels)/ImExCorr/ImExCorr.C
$(forceModelsMS)/forceModelMS/forceModelMS.C $(forceModelsMS)/forceModelMS/forceModelMS.C
$(forceModelsMS)/forceModelMS/newForceModelMS.C $(forceModelsMS)/forceModelMS/newForceModelMS.C
$(forceModelsMS)/DiFeliceDragMS/DiFeliceDragMS.C $(forceModelsMS)/DiFeliceDragMS/DiFeliceDragMS.C
$(forceModelsMS)/GidaspowDragMS/GidaspowDragMS.C
$(forceModelsMS)/noDragMS/noDragMS.C
$(probeModels)/probeModel/probeModel.C $(probeModels)/probeModel/probeModel.C
$(probeModels)/probeModel/newProbeModel.C $(probeModels)/probeModel/newProbeModel.C
$(probeModels)/noProbe/noProbe.C $(probeModels)/noProbe/noProbe.C
$(probeModels)/particleProbe/particleProbe.C $(probeModels)/particleProbe/particleProbe.C
/*$(probeModels)/interfaceParticleProbe/interfaceParticleProbe.C*/
$(IOModels)/IOModel/IOModel.C $(IOModels)/IOModel/IOModel.C
$(IOModels)/IOModel/newIOModel.C $(IOModels)/IOModel/newIOModel.C
$(IOModels)/noIO/noIO.C $(IOModels)/noIO/noIO.C
$(IOModels)/basicIO/basicIO.C $(IOModels)/basicIO/basicIO.C
$(IOModels)/tempIO/tempIO.C
$(IOModels)/colorIO/colorIO.C
$(IOModels)/trackIO/trackIO.C $(IOModels)/trackIO/trackIO.C
$(IOModels)/sophIO/sophIO.C $(IOModels)/sophIO/sophIO.C
@ -60,46 +96,54 @@ $(voidFractionModels)/voidFractionModel/voidFractionModel.C
$(voidFractionModels)/voidFractionModel/newVoidFractionModel.C $(voidFractionModels)/voidFractionModel/newVoidFractionModel.C
$(voidFractionModels)/centreVoidFraction/centreVoidFraction.C $(voidFractionModels)/centreVoidFraction/centreVoidFraction.C
$(voidFractionModels)/dividedVoidFraction/dividedVoidFraction.C $(voidFractionModels)/dividedVoidFraction/dividedVoidFraction.C
$(voidFractionModels)/dividedVoidFractionBiDi/dividedVoidFractionBiDi.C
$(voidFractionModels)/dividedVoidFractionMS/dividedVoidFractionMS.C $(voidFractionModels)/dividedVoidFractionMS/dividedVoidFractionMS.C
$(voidFractionModels)/bigParticleVoidFraction/bigParticleVoidFraction.C $(voidFractionModels)/bigParticleVoidFraction/bigParticleVoidFraction.C
$(voidFractionModels)/GaussVoidFraction/GaussVoidFraction.C $(voidFractionModels)/GaussVoidFraction/GaussVoidFraction.C
$(voidFractionModels)/IBVoidFraction/IBVoidFraction.C $(voidFractionModels)/IBVoidFraction/IBVoidFraction.C
$(voidFractionModels)/weightedNeigbhorsVoidFraction/weightedNeigbhorsVoidFraction.C
$(voidFractionModelsMS)/voidFractionModelMS/voidFractionModelMS.C
$(voidFractionModelsMS)/voidFractionModelMS/newVoidFractionModelMS.C
$(locateModels)/locateModel/locateModel.C $(locateModels)/locateModel/locateModel.C
$(locateModels)/locateModel/newLocateModel.C $(locateModels)/locateModel/newLocateModel.C
$(locateModels)/standardSearch/standardSearch.C $(locateModels)/standardSearch/standardSearch.C
$(locateModels)/engineSearch/engineSearch.C $(locateModels)/engineSearch/engineSearch.C
$(locateModels)/turboEngineSearch/turboEngineSearch.C
$(locateModels)/engineSearchMany2Many/engineSearchMany2Many.C $(locateModels)/engineSearchMany2Many/engineSearchMany2Many.C
$(locateModels)/turboEngineSearch/turboEngineSearch.C
$(locateModels)/turboEngineSearchM2M/turboEngineSearchM2M.C
$(locateModels)/engineSearchIB/engineSearchIB.C $(locateModels)/engineSearchIB/engineSearchIB.C
$(locateModels)/hyperEngineSearch/hyperEngineSearch.C
$(locateModels)/ijkSearch/ijkSearch.C
$(meshMotionModels)/meshMotionModel/meshMotionModel.C $(meshMotionModels)/meshMotionModel/meshMotionModel.C
$(meshMotionModels)/meshMotionModel/newMeshMotionModel.C $(meshMotionModels)/meshMotionModel/newMeshMotionModel.C
$(meshMotionModels)/noMeshMotion/noMeshMotion.C $(meshMotionModels)/noMeshMotion/noMeshMotion.C
$(meshMotionModels)/DEMdrivenMeshMotion/DEMdrivenMeshMotion.C
$(meshMotionModels)/IBMeshMotion/IBMeshMotion.C
$(momCoupleModels)/momCoupleModel/momCoupleModel.C $(momCoupleModels)/momCoupleModel/momCoupleModel.C
$(momCoupleModels)/momCoupleModel/newMomCoupleModel.C $(momCoupleModels)/momCoupleModel/newMomCoupleModel.C
$(momCoupleModels)/explicitCouple/explicitCouple.C $(momCoupleModels)/explicitCouple/explicitCouple.C
$(momCoupleModels)/explicitCoupleSource/explicitCoupleSource.C
$(momCoupleModels)/implicitCouple/implicitCouple.C $(momCoupleModels)/implicitCouple/implicitCouple.C
$(momCoupleModels)/noCouple/noCouple.C $(momCoupleModels)/noCouple/noCouple.C
$(regionModels)/regionModel/regionModel.C
$(regionModels)/regionModel/newRegionModel.C
$(regionModels)/allRegion/allRegion.C
$(dataExchangeModels)/dataExchangeModel/dataExchangeModel.C $(dataExchangeModels)/dataExchangeModel/dataExchangeModel.C
$(dataExchangeModels)/dataExchangeModel/newDataExchangeModel.C $(dataExchangeModels)/dataExchangeModel/newDataExchangeModel.C
$(dataExchangeModels)/oneWayVTK/oneWayVTK.C $(dataExchangeModels)/oneWayVTK/oneWayVTK.C
$(dataExchangeModels)/twoWayFiles/twoWayFiles.C $(dataExchangeModels)/twoWayFiles/twoWayFiles.C
$(dataExchangeModels)/noDataExchange/noDataExchange.C $(dataExchangeModels)/noDataExchange/noDataExchange.C
$(dataExchangeModels)/twoWayMPI/twoWayMPI.C $(dataExchangeModels)/twoWayMPI/twoWayMPI.C
$(dataExchangeModels)/twoWayM2M/twoWayM2M.C
$(dataExchangeModels)/twoWayMany2Many/twoWayMany2Many.C $(dataExchangeModels)/twoWayMany2Many/twoWayMany2Many.C
$(averagingModels)/averagingModel/averagingModel.C $(averagingModels)/averagingModel/averagingModel.C
$(averagingModels)/averagingModel/newAveragingModel.C $(averagingModels)/averagingModel/newAveragingModel.C
$(averagingModels)/dilute/dilute.C $(averagingModels)/dilute/dilute.C
$(averagingModels)/dense/dense.C $(averagingModels)/dense/dense.C
$(averagingModels)/denseBiDi/denseBiDi.C
$(clockModels)/clockModel/clockModel.C $(clockModels)/clockModel/clockModel.C
$(clockModels)/clockModel/newClockModel.C $(clockModels)/clockModel/newClockModel.C
@ -108,8 +152,10 @@ $(clockModels)/noClock/noClock.C
$(liggghtsCommandModels)/liggghtsCommandModel/liggghtsCommandModel.C $(liggghtsCommandModels)/liggghtsCommandModel/liggghtsCommandModel.C
$(liggghtsCommandModels)/liggghtsCommandModel/newLiggghtsCommandModel.C $(liggghtsCommandModels)/liggghtsCommandModel/newLiggghtsCommandModel.C
$(liggghtsCommandModels)/colorParticles/colorParticles.C
$(liggghtsCommandModels)/execute/execute.C $(liggghtsCommandModels)/execute/execute.C
$(liggghtsCommandModels)/runLiggghts/runLiggghts.C $(liggghtsCommandModels)/runLiggghts/runLiggghts.C
$(liggghtsCommandModels)/setDEMGravity/setDEMGravity.C
$(liggghtsCommandModels)/writeLiggghts/writeLiggghts.C $(liggghtsCommandModels)/writeLiggghts/writeLiggghts.C
$(liggghtsCommandModels)/readLiggghtsData/readLiggghtsData.C $(liggghtsCommandModels)/readLiggghtsData/readLiggghtsData.C
@ -117,5 +163,6 @@ $(smoothingModels)/smoothingModel/smoothingModel.C
$(smoothingModels)/smoothingModel/newSmoothingModel.C $(smoothingModels)/smoothingModel/newSmoothingModel.C
$(smoothingModels)/noSmoothing/noSmoothing.C $(smoothingModels)/noSmoothing/noSmoothing.C
$(smoothingModels)/constDiffSmoothing/constDiffSmoothing.C $(smoothingModels)/constDiffSmoothing/constDiffSmoothing.C
$(smoothingModels)/localPSizeDiffSmoothing/localPSizeDiffSmoothing.C
LIB = $(CFDEM_LIB_DIR)/lib$(CFDEM_LIB_NAME) LIB = $(CFDEM_LIB_DIR)/lib$(CFDEM_LIB_NAME)

View File

@ -10,15 +10,17 @@ EXE_INC = \
-I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \ -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/triSurface/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \
-I$(LIB_SRC)/OpenFOAM/containers/HashTables/labelHashSet \ -I$(LIB_SRC)/OpenFOAM/containers/HashTables/labelHashSet \
-I$(CFDEM_LIGGGHTS_SRC_DIR) \ -I$(CFDEM_LIGGGHTS_SRC_DIR) \
-I$(CFDEM_M2MLIB_PATH) \ -I$(CFDEM_M2MLIB_PATH) \
-I$(CFDEM_Many2ManyLIB_PATH) \
-I$(CFDEM_SRC_DIR)/cfdTools \ -I$(CFDEM_SRC_DIR)/cfdTools \
LIB_LIBS = \ LIB_LIBS = \
$(PLIBS) \ $(PLIBS) \
-L$(CFDEM_LIB_DIR) \ -L$(FOAM_USER_LIBBIN) \
-lfiniteVolume \ -lfiniteVolume \
-lincompressibleRASModels \ -lincompressibleRASModels \
-lincompressibleLESModels \ -lincompressibleLESModels \
@ -27,5 +29,11 @@ LIB_LIBS = \
-lmpi_cxx \ -lmpi_cxx \
-L$(CFDEM_LIGGGHTS_SRC_DIR) \ -L$(CFDEM_LIGGGHTS_SRC_DIR) \
-Wl,--whole-archive -l$(CFDEM_LIGGGHTS_LIB_NAME) -Wl,--no-whole-archive \ -Wl,--whole-archive -l$(CFDEM_LIGGGHTS_LIB_NAME) -Wl,--no-whole-archive \
-L$(CFDEM_M2MLIB_PATH) \
-lcouple \
-L$(CFDEM_Many2ManyLIB_PATH) \ -L$(CFDEM_Many2ManyLIB_PATH) \
-lcoupleMany2Many -lcoupleMany2Many \
/* add -I$(CFDEM_POEMSLIB_PATH) \ to EXE_INC */
/* -L$(CFDEM_POEMSLIB_PATH) \ */
/* -lpoems */

View File

@ -4,8 +4,7 @@
word modelType = particleCloud.modelType(); word modelType = particleCloud.modelType();
//Warning << "model type not being checked" << endl; //Warning << "model type not being checked" << endl;
if (modelType=="Bfull"){
if (modelType=="B"){
Info << "solving volume averaged Navier Stokes equations of type B\n"<< endl; Info << "solving volume averaged Navier Stokes equations of type B\n"<< endl;
// check if Archimedes is used // check if Archimedes is used
@ -18,6 +17,41 @@
if(!found) if(!found)
FatalError <<"Archimedes model not found!\n" << abort(FatalError); FatalError <<"Archimedes model not found!\n" << abort(FatalError);
// check if gradPForce is used
found=false;
forAll(particleCloud.forceModels(),i)
{
if(particleCloud.forceModels()[i]=="gradPForce")
found=true;
}
if(!found)
FatalError <<"gradPForce model not found!\n" << abort(FatalError);
// check if viscForce is used
found=false;
forAll(particleCloud.forceModels(),i)
{
if(particleCloud.forceModels()[i]=="viscForce")
found=true;
}
if(!found)
FatalError <<"viscForce model not found!\n" << abort(FatalError);
}else if(modelType=="B"){
Info << "solving volume averaged Navier Stokes equations of type B\n"<< endl;
// check if Archimedes is used
bool found=false;
forAll(particleCloud.forceModels(),i)
{
if(particleCloud.forceModels()[i]=="Archimedes")
found=true;
}
if(!found)
FatalError <<"Archimedes model not found!\n" << abort(FatalError);
// check if gradP and viscForce are used // check if gradP and viscForce are used
found=false; found=false;
forAll(particleCloud.forceModels(),i) forAll(particleCloud.forceModels(),i)

View File

@ -1,5 +1,5 @@
word CFDEMversion="cfdem-2.7.2"; word CFDEMversion="cfdem-2.7.9";
word compatibleLIGGGHTSversion="3.0.2"; word compatibleLIGGGHTSversion="3.0.3";
word OFversion="2.3.x-commit-4d6f4a3115ff76ec4154c580eb041bc95ba4ec09"; word OFversion="2.3.x-commit-4d6f4a3115ff76ec4154c580eb041bc95ba4ec09";
Info << "\nCFDEMcoupling version: " << CFDEMversion << "\n" << endl; Info << "\nCFDEMcoupling version: " << CFDEMversion << "\n" << endl;

View File

@ -80,6 +80,7 @@ Foam::cfdemCloud::cfdemCloud
positions_(NULL), positions_(NULL),
velocities_(NULL), velocities_(NULL),
fluidVel_(NULL), fluidVel_(NULL),
fAcc_(NULL),
impForces_(NULL), impForces_(NULL),
expForces_(NULL), expForces_(NULL),
DEMForces_(NULL), DEMForces_(NULL),
@ -89,6 +90,7 @@ Foam::cfdemCloud::cfdemCloud
cellIDs_(NULL), cellIDs_(NULL),
particleWeights_(NULL), particleWeights_(NULL),
particleVolumes_(NULL), particleVolumes_(NULL),
particleV_(NULL),
numberOfParticles_(0), numberOfParticles_(0),
numberOfParticlesChanged_(false), numberOfParticlesChanged_(false),
arraysReallocated_(false), arraysReallocated_(false),
@ -99,6 +101,7 @@ Foam::cfdemCloud::cfdemCloud
cg_(1.), cg_(1.),
cgOK_(true), cgOK_(true),
impDEMdrag_(false), impDEMdrag_(false),
impDEMdragAcc_(false),
imExSplitFactor_(1.0), imExSplitFactor_(1.0),
treatVoidCellsAsExplicitForce_(false), treatVoidCellsAsExplicitForce_(false),
useDDTvoidfraction_(false), useDDTvoidfraction_(false),
@ -279,6 +282,7 @@ Foam::cfdemCloud::~cfdemCloud()
dataExchangeM().destroy(positions_,3); dataExchangeM().destroy(positions_,3);
dataExchangeM().destroy(velocities_,3); dataExchangeM().destroy(velocities_,3);
dataExchangeM().destroy(fluidVel_,3); dataExchangeM().destroy(fluidVel_,3);
dataExchangeM().destroy(fAcc_,3);
dataExchangeM().destroy(impForces_,3); dataExchangeM().destroy(impForces_,3);
dataExchangeM().destroy(expForces_,3); dataExchangeM().destroy(expForces_,3);
dataExchangeM().destroy(DEMForces_,3); dataExchangeM().destroy(DEMForces_,3);
@ -288,6 +292,7 @@ Foam::cfdemCloud::~cfdemCloud()
dataExchangeM().destroy(cellIDs_,1); dataExchangeM().destroy(cellIDs_,1);
dataExchangeM().destroy(particleWeights_,1); dataExchangeM().destroy(particleWeights_,1);
dataExchangeM().destroy(particleVolumes_,1); dataExchangeM().destroy(particleVolumes_,1);
dataExchangeM().destroy(particleV_,1);
} }
// * * * * * * * * * * * * * * * private Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * private Member Functions * * * * * * * * * * * * * //
void Foam::cfdemCloud::getDEMdata() void Foam::cfdemCloud::getDEMdata()
@ -295,6 +300,9 @@ void Foam::cfdemCloud::getDEMdata()
dataExchangeM().getData("radius","scalar-atom",radii_); dataExchangeM().getData("radius","scalar-atom",radii_);
dataExchangeM().getData("x","vector-atom",positions_); dataExchangeM().getData("x","vector-atom",positions_);
dataExchangeM().getData("v","vector-atom",velocities_); dataExchangeM().getData("v","vector-atom",velocities_);
if(impDEMdragAcc_)
dataExchangeM().getData("dragAcc","vector-atom",fAcc_); // array is used twice - might be necessary to clean it first
} }
void Foam::cfdemCloud::giveDEMdata() void Foam::cfdemCloud::giveDEMdata()
@ -305,6 +313,7 @@ void Foam::cfdemCloud::giveDEMdata()
if(impDEMdrag_) if(impDEMdrag_)
{ {
if(verbose_) Info << "sending Ksl and uf" << endl;
dataExchangeM().giveData("Ksl","scalar-atom",Cds_); dataExchangeM().giveData("Ksl","scalar-atom",Cds_);
dataExchangeM().giveData("uf","vector-atom",fluidVel_); dataExchangeM().giveData("uf","vector-atom",fluidVel_);
} }
@ -499,7 +508,7 @@ bool Foam::cfdemCloud::evolve
// set void fraction field // set void fraction field
clockM().start(19,"setvoidFraction"); clockM().start(19,"setvoidFraction");
if(verbose_) Info << "- setvoidFraction()" << endl; if(verbose_) Info << "- setvoidFraction()" << endl;
voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_); voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_,particleV_);
if(verbose_) Info << "setvoidFraction done." << endl; if(verbose_) Info << "setvoidFraction done." << endl;
clockM().stop("setvoidFraction"); clockM().stop("setvoidFraction");
@ -507,7 +516,6 @@ bool Foam::cfdemCloud::evolve
clockM().start(20,"setVectorAverage"); clockM().start(20,"setVectorAverage");
setVectorAverages(); setVectorAverages();
//Smoothen "next" fields //Smoothen "next" fields
smoothingM().dSmoothing(); smoothingM().dSmoothing();
smoothingM().smoothen(voidFractionM().voidFractionNext()); smoothingM().smoothen(voidFractionM().voidFractionNext());
@ -516,7 +524,7 @@ bool Foam::cfdemCloud::evolve
//because we need unsmoothened Us field to detect cells for explicit //because we need unsmoothened Us field to detect cells for explicit
//force coupling //force coupling
if(!treatVoidCellsAsExplicitForce()) if(!treatVoidCellsAsExplicitForce())
smoothingM().smoothenReferenceField(averagingM().UsNext()); smoothingM().smoothenReferenceField(averagingM().UsNext());
clockM().stop("setVectorAverage"); clockM().stop("setVectorAverage");
} }
@ -592,6 +600,7 @@ bool Foam::cfdemCloud::reAllocArrays() const
dataExchangeM().allocateArray(positions_,0.,3); dataExchangeM().allocateArray(positions_,0.,3);
dataExchangeM().allocateArray(velocities_,0.,3); dataExchangeM().allocateArray(velocities_,0.,3);
dataExchangeM().allocateArray(fluidVel_,0.,3); dataExchangeM().allocateArray(fluidVel_,0.,3);
dataExchangeM().allocateArray(fAcc_,0.,3);
dataExchangeM().allocateArray(impForces_,0.,3); dataExchangeM().allocateArray(impForces_,0.,3);
dataExchangeM().allocateArray(expForces_,0.,3); dataExchangeM().allocateArray(expForces_,0.,3);
dataExchangeM().allocateArray(DEMForces_,0.,3); dataExchangeM().allocateArray(DEMForces_,0.,3);
@ -601,6 +610,7 @@ bool Foam::cfdemCloud::reAllocArrays() const
dataExchangeM().allocateArray(cellIDs_,-1.,voidFractionM().maxCellsPerParticle()); dataExchangeM().allocateArray(cellIDs_,-1.,voidFractionM().maxCellsPerParticle());
dataExchangeM().allocateArray(particleWeights_,0.,voidFractionM().maxCellsPerParticle()); dataExchangeM().allocateArray(particleWeights_,0.,voidFractionM().maxCellsPerParticle());
dataExchangeM().allocateArray(particleVolumes_,0.,voidFractionM().maxCellsPerParticle()); dataExchangeM().allocateArray(particleVolumes_,0.,voidFractionM().maxCellsPerParticle());
dataExchangeM().allocateArray(particleV_,0.,1);
arraysReallocated_ = true; arraysReallocated_ = true;
return true; return true;
} }
@ -612,7 +622,7 @@ tmp<fvVectorMatrix> cfdemCloud::divVoidfractionTau(volVectorField& U,volScalarFi
return return
( (
- fvm::laplacian(voidfractionNuEff(voidfraction), U) - fvm::laplacian(voidfractionNuEff(voidfraction), U)
- fvc::div(voidfractionNuEff(voidfraction)*dev(fvc::grad(U)().T())) - fvc::div(voidfractionNuEff(voidfraction)*dev2(fvc::grad(U)().T()))
); );
} }
@ -645,7 +655,7 @@ void cfdemCloud::calcDdtVoidfraction(volScalarField& voidfraction) const
tmp<volScalarField> cfdemCloud::voidfractionNuEff(volScalarField& voidfraction) const tmp<volScalarField> cfdemCloud::voidfractionNuEff(volScalarField& voidfraction) const
{ {
if (modelType_=="B") if (modelType_=="B" || modelType_=="Bfull")
{ {
return tmp<volScalarField> return tmp<volScalarField>
( (

View File

@ -102,6 +102,8 @@ protected:
mutable double **fluidVel_; mutable double **fluidVel_;
mutable double **fAcc_;
mutable double **impForces_; mutable double **impForces_;
mutable double **expForces_; mutable double **expForces_;
@ -120,6 +122,8 @@ protected:
mutable double **particleVolumes_; mutable double **particleVolumes_;
mutable double **particleV_;
int numberOfParticles_; int numberOfParticles_;
bool numberOfParticlesChanged_; bool numberOfParticlesChanged_;
@ -140,6 +144,8 @@ protected:
bool impDEMdrag_; bool impDEMdrag_;
bool impDEMdragAcc_;
mutable scalar imExSplitFactor_; mutable scalar imExSplitFactor_;
mutable bool treatVoidCellsAsExplicitForce_; //will treat the coupling force in cells with no Us data explicitly mutable bool treatVoidCellsAsExplicitForce_; //will treat the coupling force in cells with no Us data explicitly
@ -246,6 +252,8 @@ public:
inline const bool& impDEMdrag() const; inline const bool& impDEMdrag() const;
inline const bool& impDEMdragAcc() const;
inline const scalar& imExSplitFactor() const; inline const scalar& imExSplitFactor() const;
inline const bool& treatVoidCellsAsExplicitForce() const; inline const bool& treatVoidCellsAsExplicitForce() const;
@ -266,6 +274,8 @@ public:
inline double ** fluidVels() const; inline double ** fluidVels() const;
inline double ** fAccs() const;
inline double ** impForces() const; inline double ** impForces() const;
inline double ** expForces() const; inline double ** expForces() const;

View File

@ -55,6 +55,11 @@ inline const bool& cfdemCloud::impDEMdrag() const
return impDEMdrag_; return impDEMdrag_;
}; };
inline const bool& cfdemCloud::impDEMdragAcc() const
{
return impDEMdragAcc_;
};
inline const scalar& cfdemCloud::imExSplitFactor() const inline const scalar& cfdemCloud::imExSplitFactor() const
{ {
return imExSplitFactor_; return imExSplitFactor_;
@ -110,6 +115,11 @@ inline double ** cfdemCloud::fluidVels() const
return fluidVel_; return fluidVel_;
} }
inline double ** cfdemCloud::fAccs() const
{
return fAcc_;
}
inline double ** cfdemCloud::impForces() const inline double ** cfdemCloud::impForces() const
{ {
return impForces_; return impForces_;
@ -174,7 +184,7 @@ inline label Foam::cfdemCloud::body(int index)
inline double cfdemCloud::particleVolume(int index) inline double cfdemCloud::particleVolume(int index)
{ {
return particleVolumes_[index][0]; return particleV_[index][0];
} }
inline scalar cfdemCloud::radius(int index) inline scalar cfdemCloud::radius(int index)

View File

@ -121,7 +121,7 @@ bool Foam::cfdemCloudIB::evolve()
// set void fraction field // set void fraction field
if(verbose_) Info << "- setvoidFraction()" << endl; if(verbose_) Info << "- setvoidFraction()" << endl;
voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_); voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_,particleV_);
if(verbose_) Info << "setvoidFraction done." << endl; if(verbose_) Info << "setvoidFraction done." << endl;
} }
@ -190,6 +190,7 @@ void Foam::cfdemCloudIB::calcVelocityCorrection
} }
//} //}
} }
U.correctBoundaryConditions();
// make field divergence free - set reference value in case it is needed // make field divergence free - set reference value in case it is needed
fvScalarMatrix phiIBEqn fvScalarMatrix phiIBEqn

View File

@ -56,8 +56,8 @@ cfdemCloudMS::cfdemCloudMS
cellIDsCM_(NULL), cellIDsCM_(NULL),
bodies_(NULL), bodies_(NULL),
nrigids_(NULL), nrigids_(NULL),
nClumpTypes_(1),
clumpType_(NULL), clumpType_(NULL),
nClumpTypes_(1),
clumpVol_(NULL), clumpVol_(NULL),
clumpDH_(NULL), clumpDH_(NULL),
clumpWeights_(NULL), clumpWeights_(NULL),
@ -73,6 +73,8 @@ cfdemCloudMS::cfdemCloudMS
DEMForcesCM_(NULL), DEMForcesCM_(NULL),
numberOfClumps_(-1), numberOfClumps_(-1),
numberOfClumpsChanged_(false), numberOfClumpsChanged_(false),
manDHdev_(false),
dHbyV_(scalarList(0)),
useforcePerClump_(false), useforcePerClump_(false),
forceModels_(couplingProperties_.lookup("forceModelsMS")) forceModels_(couplingProperties_.lookup("forceModelsMS"))
{ {
@ -86,6 +88,7 @@ cfdemCloudMS::cfdemCloudMS
forceModels_[i] forceModels_[i]
); );
} }
} }
@ -132,9 +135,17 @@ void cfdemCloudMS::getDEMdata()
//- save clump volume and mass //- save clump volume and mass
double **typeDH(NULL); double **typeDH(NULL);
dataExchangeM().allocateArray(typeDH,-1,1,nClumpTypes()+1); dataExchangeM().allocateArray(typeDH,-1,1,nClumpTypes()+1);
for(int k = 1;k <= nClumpTypes(); k++) if(manDHdev_) // use manually defined dH
typeDH[k][0]=pow(typeVol_[k]*1.9099,1./3.); // 6/pi=1.9099 // calc a hydraulic diameter as d of vol equal sphere {
for(int k = 1;k <= nClumpTypes(); k++)
typeDH[k][0]=dHbyV_[k-1]*typeVol_[k];
}
else // calc dH from volAeqivalent shpere
{
for(int k = 1;k <= nClumpTypes(); k++)
typeDH[k][0]=pow(typeVol_[k]*1.9099,1./3.); // 6/pi=1.9099 // calc a hydraulic diameter as d of vol equal sphere
}
int ct(0); int ct(0);
for(int ind = 0;ind < numberOfClumps(); ind++) for(int ind = 0;ind < numberOfClumps(); ind++)
@ -193,7 +204,7 @@ bool cfdemCloudMS::reAllocArrays() const
dataExchangeM().allocateArray(cellIDsCM_,-1,1,"nbodies"); dataExchangeM().allocateArray(cellIDsCM_,-1,1,"nbodies");
dataExchangeM().allocateArray(bodies_,0,1); dataExchangeM().allocateArray(bodies_,0,1);
dataExchangeM().allocateArray(nrigids_,0,1,"nbodies"); dataExchangeM().allocateArray(nrigids_,0,1,"nbodies");
dataExchangeM().allocateArray(clumpType_,0,3,"nbodies"); dataExchangeM().allocateArray(clumpType_,0,1,"nbodies");
dataExchangeM().allocateArray(clumpVol_,0,1,"nbodies"); dataExchangeM().allocateArray(clumpVol_,0,1,"nbodies");
dataExchangeM().allocateArray(clumpDH_,1.,1,"nbodies"); dataExchangeM().allocateArray(clumpDH_,1.,1,"nbodies");
dataExchangeM().allocateArray(clumpWeights_,1,1,"nbodies"); dataExchangeM().allocateArray(clumpWeights_,1,1,"nbodies");
@ -215,7 +226,6 @@ bool cfdemCloudMS::reAllocArrays() const
void Foam::cfdemCloudMS::setNumberOfParticles(int nP) void Foam::cfdemCloudMS::setNumberOfParticles(int nP)
{ {
cfdemCloud::setNumberOfParticles(nP); cfdemCloud::setNumberOfParticles(nP);
int nC = dataExchangeM().getNumberOfClumps(); int nC = dataExchangeM().getNumberOfClumps();
if(nC != numberOfClumps()) if(nC != numberOfClumps())
@ -223,6 +233,9 @@ void Foam::cfdemCloudMS::setNumberOfParticles(int nP)
numberOfClumpsChanged_ = true; numberOfClumpsChanged_ = true;
numberOfClumps_ = nC; numberOfClumps_ = nC;
} }
// in case last particle has left an ma-_tag_ms is not up to date
numberOfClumps_ = min(numberOfParticles(),numberOfClumps_);
} }
void Foam::cfdemCloudMS::findCells() void Foam::cfdemCloudMS::findCells()

View File

@ -59,7 +59,6 @@ class cfdemCloudMS
public cfdemCloud public cfdemCloud
{ {
private: private:
mutable double **positionsCM_; mutable double **positionsCM_;
mutable double **velocitiesCM_; mutable double **velocitiesCM_;
mutable double **cellIDsCM_; mutable double **cellIDsCM_;
@ -86,9 +85,10 @@ private:
int numberOfClumps_; int numberOfClumps_;
bool numberOfClumpsChanged_; bool numberOfClumpsChanged_;
Switch manDHdev_;
scalarList dHbyV_;
bool useforcePerClump_; bool useforcePerClump_;
const wordList forceModels_; const wordList forceModels_;
autoPtr<class forceModelMS>* forceModel_; autoPtr<class forceModelMS>* forceModel_;
@ -154,6 +154,12 @@ public:
inline bool numberOfClumpsChanged() const; inline bool numberOfClumpsChanged() const;
inline void setManDHdev(Switch);
inline void setDHbyV(scalarList);
inline scalarList& dHbyV();
inline bool useforcePerClump() const; inline bool useforcePerClump() const;
const forceModel& forceM(int); const forceModel& forceM(int);

View File

@ -138,6 +138,21 @@ inline bool cfdemCloudMS::numberOfClumpsChanged() const
return numberOfClumpsChanged_; return numberOfClumpsChanged_;
} }
inline void cfdemCloudMS::setManDHdev(Switch v)
{
manDHdev_ = v;
}
inline void cfdemCloudMS::setDHbyV(scalarList v)
{
dHbyV_ = v;
}
inline scalarList& cfdemCloudMS::dHbyV()
{
return dHbyV_;
}
inline bool cfdemCloudMS::useforcePerClump() const inline bool cfdemCloudMS::useforcePerClump() const
{ {
return useforcePerClump_; return useforcePerClump_;

View File

@ -37,12 +37,22 @@
#- export environment variables (adapt to your paths) #- export environment variables (adapt to your paths)
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#check if default lammps lib path should be used
if [[ $CFDEM_LAMMPS_LIB_DIR == "" ]]; then
export CFDEM_LAMMPS_LIB_DIR=$CFDEM_LIGGGHTS_SRC_DIR/../lib/
else
echo "using already defined CFDEM_LAMMPS_LIB_DIR=$CFDEM_LAMMPS_LIB_DIR ."
fi
#- LIGGGHTS lib name #- LIGGGHTS lib name
export CFDEM_LIGGGHTS_LIB_NAME=lmp_$CFDEM_LIGGGHTS_MAKEFILE_NAME export CFDEM_LIGGGHTS_LIB_NAME=lmp_$CFDEM_LIGGGHTS_MAKEFILE_NAME
#- CFDEM lib name #- CFDEM lib name
export CFDEM_LIB_NAME=lagrangianCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION export CFDEM_LIB_NAME=lagrangianCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION
#-----------------------------------------------------
# additional libraries
#- LMP Many2Many lib path and makefile #- LMP Many2Many lib path and makefile
export CFDEM_Many2ManyLIB_PATH=$CFDEM_SRC_DIR/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayMany2Many/library export CFDEM_Many2ManyLIB_PATH=$CFDEM_SRC_DIR/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayMany2Many/library
export CFDEM_Many2ManyLIB_MAKEFILENAME=$CFDEM_LIGGGHTS_MAKEFILE_NAME export CFDEM_Many2ManyLIB_MAKEFILENAME=$CFDEM_LIGGGHTS_MAKEFILE_NAME
@ -52,9 +62,14 @@ export CFDEM_M2MLIB_PATH=$CFDEM_SRC_DIR/lagrangian/cfdemParticle/subModels/dataE
export CFDEM_M2MLIB_MAKEFILENAME=$CFDEM_LIGGGHTS_MAKEFILE_NAME export CFDEM_M2MLIB_MAKEFILENAME=$CFDEM_LIGGGHTS_MAKEFILE_NAME
#- LMP POEMS lib path and makefile #- LMP POEMS lib path and makefile
export CFDEM_POEMSLIB_PATH=$CFDEM_LIGGGHTS_SRC_DIR/../lib/poems export CFDEM_POEMSLIB_PATH=$CFDEM_LAMMPS_LIB_DIR/poems
export CFDEM_POEMSLIB_MAKEFILENAME=g++ export CFDEM_POEMSLIB_MAKEFILENAME=g++
#- LMP ASPHERE lib path and makefile
export CFDEM_ASPHERELIB_PATH=$CFDEM_LAMMPS_LIB_DIR/poems
export CFDEM_ASPHERELIB_MAKEFILENAME=g++
#-----------------------------------------------------
#- path to test harness #- path to test harness
export CFDEM_TEST_HARNESS_PATH=$CFDEM_PROJECT_USER_DIR/log/logFilesCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION export CFDEM_TEST_HARNESS_PATH=$CFDEM_PROJECT_USER_DIR/log/logFilesCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION

View File

@ -33,6 +33,8 @@ mkdir -p $logDir
COUNT=0 COUNT=0
fi fi
logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir"
while [ $COUNT -lt $NLINES ] while [ $COUNT -lt $NLINES ]
do do
let COUNT++ let COUNT++
@ -57,7 +59,7 @@ mkdir -p $logDir
#--------------------------------------------------------------------------------# #--------------------------------------------------------------------------------#
#- define variables #- define variables
logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir" #logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir"
logfileName="log_compile$LINE""lib" logfileName="log_compile$LINE""lib"
headerText="$logfileName""-$NOW" headerText="$logfileName""-$NOW"
libVarMakefileName="CFDEM_$LINE""LIB_MAKEFILENAME" libVarMakefileName="CFDEM_$LINE""LIB_MAKEFILENAME"

View File

@ -195,7 +195,13 @@ compileLMPlib()
rm $logpath/$logfileName rm $logpath/$logfileName
#- change path #- change path
cd $libraryPath if [ -d "$libraryPath" ]; then
cd $libraryPath
else
echo ""
echo "lib path $libraryPath does not exist - check settings in .../etc/bashrc."
read
fi
#- header #- header
echo 2>&1 | tee -a $logpath/$logfileName echo 2>&1 | tee -a $logpath/$logfileName
@ -556,6 +562,7 @@ parCFDDEMrun()
machineFileName="$7" machineFileName="$7"
debugMode="$8" debugMode="$8"
reconstuctCase="$9" reconstuctCase="$9"
cleanCase="$10"
#--------------------------------------------------------------------------------# #--------------------------------------------------------------------------------#
if [ $debugMode == "on" ]; then if [ $debugMode == "on" ]; then

View File

@ -1,2 +1,11 @@
lagrangian/cfdemParticle/dir lagrangian/cfdemParticle/dir
#====================================================='
#- RADL
fvOptions/dir
cylPorousMedia/dir
#====================================================='
#- other
finiteVolume/dir finiteVolume/dir
transportModels/incompressible/dir

View File

@ -1,4 +1,19 @@
cfdemSolverPisoMS/dir cfdemIB/dir
cfdemIBMesh/dir
myPimpleDyMFoam/dir
nonNewtonianVoidfractionIcoFoam/dir
cfdemSolverPiso/dir cfdemSolverPiso/dir
cfdemSolverIB/dir cfdemSolverIB/dir
cfdemSolverPisoScalar/dir cfdemSolverPisoScalar/dir
cfdemSolverPisoMS/dir
cfdemSolverPisoIBm/dir
cfdemSolverPimpleImEx/dir
cfdemSolverIBInterLubrication/dir
cfdemSolverIBScalar/dir
cfdemSolverInterDyM/dir
cfdemSolverInterDyMPC/dir
cfdemSolverBubble/dir
cfdemSolverPimpleDyM_22x/dir
cfdemSolverPimpleDyMMS_22x/dir
cfdemSolverPimpleDyMScalar_22x/dir
SRFcfdemSolverPiso/dir

View File

@ -1,4 +1,3 @@
#===================================================================# #===================================================================#
# This file specifies the example cases being executed by # This file specifies the example cases being executed by
# .../etc/testTutorial.sh , which can be run with the alias # .../etc/testTutorial.sh , which can be run with the alias
@ -7,15 +6,63 @@
#===================================================================# #===================================================================#
cfdemSolverPiso/settlingTestMPI/dir cfdemSolverPiso/settlingTestMPI/dir
cfdemSolverPiso/ErgunTestMPI/dir cfdemSolverPiso/ErgunTestMPI/dir
cfdemSolverPiso/ErgunTestMPI_cgs/dir cfdemSolverPiso/ErgunTestMPI_cgs/dir
cfdemSolverPiso/ErgunTestMPI_restart/dir cfdemSolverPiso/ErgunTestMPI_restart/dir
cfdemSolverIB/twoSpheresGlowinskiMPI/dir cfdemSolverIB/twoSpheresGlowinskiMPI/dir
cfdemSolverPisoScalar/packedBedTemp/dir cfdemSolverPisoScalar/packedBedTemp/dir
cfdemSolverPiso/ErgunTestCG/dir #===================================================================#
# RADL
#cfdemSolverPimpleImEx/settlingTestMPI/dir
#cfdemSolverPimpleImEx/ErgunTestMPI/dir
#cfdemSolverPimpleImEx/crossFlow/dir
#cfdemSolverIB/periodicCase/dir
#cfdemSolverIB/cfdemIBPeriodicCubicalBox_fullyPeriodic/dir
#cfdemSolverIBInterLubrication/twoCoatedParticlesRelMotion_smallTest/dir
#cfdemSolverIBScalar/cfdemIBPeriodicCubicalBoxScalar/dir
#===================================================================#
# BLAIS
#SRFCfdemSolverPiso/SRFCouette/dir
#cfdemSolverPiso/couette/dir
#cfdemSolverPiso/plateViscometer/dir
#cfdemIBMesh/couette/dir
#cfdemSolverPisoIBm/couette/dir
#===================================================================#
# NesteJacobs
cfdemSolverBubble/ErgunTestMPI_pureLiquid/dir
cfdemSolverBubble/ErgunTestM2M_restart/dir
Projects/Neste/cfdemSolverBubble/3pFBreactor/dir
cfdemSolverInterDyM/sugarNcoffee/dir
Projects/Neste/cfdemSolverInterDyM/3pFBreactor/dir
#===================================================================#
# not in release:
#cfdemSolverPiso/settlingTestBigParticleMPI/dir
#cfdemSolverPiso/ErgunTestCG/dir
cfdemSolverPiso/ErgunTestM2M/dir
cfdemSolverPiso/ErgunTestMPI_water/dir
#cfdemSolverPiso/HopperEmptying/dir
cfdemSolverPimpleDyM/ErgunTestMPI/dir
#cfdemSolverPisoMS/settlingTestMPI/dir
#cfdemSolverPisoMS/ErgunTestMPI/dir
#cfdemSolverInterDyM/twoPhaseSettlingTest/dir
#cfdemSolverInterDyM/ErgunTestMPI/dir
#cfdemSolverInterDyM/granularPiston/dir
#cfdemSolverInterDyM/sugarNcoffee/dir
#cfdemSolverBubble/ErgunTestMPI_pureLiquid/dir
#- these examples are already designed for 2.3.x
#cfdemSolverInterDyMPC/sugarNcoffee/dir
#cfdemSolverInterDyMPC/granularPiston/dir
#cfdemSolverInterDyMPC/meltingPot/dir

View File

@ -50,6 +50,15 @@ int IOModel::dumpDEMdata() const
return -1; return -1;
} }
bool IOModel::dumpNow() const
{
//bool dmp(false);
//if (time_.value()+SMALL > time_.endTime().value()-time_.deltaT().value() || time_.outputTime())
// dmp=true;
return time_.outputTime();
}
fileName IOModel::createTimeDir(fileName path) const fileName IOModel::createTimeDir(fileName path) const
{ {
fileName timeDirPath(path/time_.timeName()); fileName timeDirPath(path/time_.timeName());

View File

@ -113,6 +113,8 @@ public:
virtual int dumpDEMdata() const; virtual int dumpDEMdata() const;
bool dumpNow() const;
fileName createTimeDir(fileName) const; fileName createTimeDir(fileName) const;
fileName createLagrangianDir(fileName) const; fileName createLagrangianDir(fileName) const;

View File

@ -84,7 +84,7 @@ basicIO::~basicIO()
int basicIO::dumpDEMdata() const int basicIO::dumpDEMdata() const
{ {
if (time_.outputTime()) if (dumpNow())
{ {
// make time directory // make time directory
if (parOutput_) lagPath_=buildFilePath(dirName_); if (parOutput_) lagPath_=buildFilePath(dirName_);

View File

@ -79,7 +79,7 @@ int sophIO::dumpDEMdata() const
{ {
int npProcs(-1); int npProcs(-1);
if (time_.outputTime()) if (dumpNow())
{ {
npProcs=basicIO::dumpDEMdata(); npProcs=basicIO::dumpDEMdata();

View File

@ -77,7 +77,7 @@ int trackIO::dumpDEMdata() const
{ {
int npProcs(-1); int npProcs(-1);
if (time_.outputTime()) if (dumpNow())
{ {
npProcs = sophIO::dumpDEMdata(); npProcs = sophIO::dumpDEMdata();

View File

@ -1,127 +1,31 @@
error.o: error.cpp /usr/lib/openmpi/include/mpi.h \ error.o: error.cpp \
/home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \ /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi_portable_platform.h \
/usr/include/c++/4.6/map /usr/include/c++/4.6/bits/stl_tree.h \ /usr/include/stdlib.h /usr/include/features.h \
/usr/include/c++/4.6/bits/stl_algobase.h \ /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/x86_64-linux-gnu/sys/cdefs.h \ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/cpu_defines.h \ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/c++/4.6/bits/functexcept.h \ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
/usr/include/c++/4.6/bits/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
/usr/include/c++/4.6/ext/type_traits.h \
/usr/include/c++/4.6/ext/numeric_traits.h \
/usr/include/c++/4.6/bits/stl_pair.h /usr/include/c++/4.6/bits/move.h \
/usr/include/c++/4.6/bits/concept_check.h \
/usr/include/c++/4.6/bits/stl_iterator_base_types.h \
/usr/include/c++/4.6/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.6/bits/stl_iterator.h \
/usr/include/c++/4.6/debug/debug.h /usr/include/c++/4.6/bits/allocator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++allocator.h \
/usr/include/c++/4.6/ext/new_allocator.h /usr/include/c++/4.6/new \
/usr/include/c++/4.6/exception /usr/include/c++/4.6/bits/stl_function.h \
/usr/include/c++/4.6/backward/binders.h \
/usr/include/c++/4.6/bits/stl_map.h \
/usr/include/c++/4.6/initializer_list \
/usr/include/c++/4.6/bits/stl_multimap.h \
/usr/include/c++/4.6/bits/range_access.h /usr/include/c++/4.6/utility \
/usr/include/c++/4.6/bits/stl_relops.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h /usr/include/stdio.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h \
/usr/include/c++/4.6/iostream /usr/include/c++/4.6/ostream \
/usr/include/c++/4.6/ios /usr/include/c++/4.6/iosfwd \
/usr/include/c++/4.6/bits/stringfwd.h \
/usr/include/c++/4.6/bits/postypes.h /usr/include/c++/4.6/cwchar \
/usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/xlocale.h \
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
/usr/include/c++/4.6/bits/char_traits.h \
/usr/include/c++/4.6/bits/localefwd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \ /usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \ /usr/include/x86_64-linux-gnu/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/c++/4.6/bits/ios_base.h \
/usr/include/c++/4.6/ext/atomicity.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \
/usr/include/x86_64-linux-gnu/bits/posix_opt.h \
/usr/include/x86_64-linux-gnu/bits/environments.h \
/usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \
/usr/include/x86_64-linux-gnu/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.h \
/usr/include/c++/4.6/bits/locale_classes.h /usr/include/c++/4.6/string \
/usr/include/c++/4.6/bits/ostream_insert.h \
/usr/include/c++/4.6/bits/cxxabi_forced.h \
/usr/include/c++/4.6/bits/basic_string.h \
/usr/include/c++/4.6/bits/basic_string.tcc \
/usr/include/c++/4.6/bits/locale_classes.tcc \
/usr/include/c++/4.6/streambuf /usr/include/c++/4.6/bits/streambuf.tcc \
/usr/include/c++/4.6/bits/basic_ios.h \
/usr/include/c++/4.6/bits/locale_facets.h /usr/include/c++/4.6/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_base.h \
/usr/include/c++/4.6/bits/streambuf_iterator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_inline.h \
/usr/include/c++/4.6/bits/locale_facets.tcc \
/usr/include/c++/4.6/bits/basic_ios.tcc \
/usr/include/c++/4.6/bits/ostream.tcc /usr/include/c++/4.6/istream \
/usr/include/c++/4.6/bits/istream.tcc \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/constants.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/exception.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h \
/usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file_inln.h \
/usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/sys/types.h \ /usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/sys/select.h \ /usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \ /usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/sigset.h \ /usr/include/x86_64-linux-gnu/bits/sigset.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \ /usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h error.h /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h error.h

View File

@ -27,101 +27,6 @@ irregular.o: irregular.cpp /usr/include/stdio.h /usr/include/features.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/string3.h irregular.h \ /usr/include/x86_64-linux-gnu/bits/string3.h irregular.h \
/usr/lib/openmpi/include/mpi.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi_portable_platform.h \
/usr/include/c++/4.6/map /usr/include/c++/4.6/bits/stl_tree.h \ memory.h error.h
/usr/include/c++/4.6/bits/stl_algobase.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/cpu_defines.h \
/usr/include/c++/4.6/bits/functexcept.h \
/usr/include/c++/4.6/bits/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
/usr/include/c++/4.6/ext/type_traits.h \
/usr/include/c++/4.6/ext/numeric_traits.h \
/usr/include/c++/4.6/bits/stl_pair.h /usr/include/c++/4.6/bits/move.h \
/usr/include/c++/4.6/bits/concept_check.h \
/usr/include/c++/4.6/bits/stl_iterator_base_types.h \
/usr/include/c++/4.6/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.6/bits/stl_iterator.h \
/usr/include/c++/4.6/debug/debug.h /usr/include/c++/4.6/bits/allocator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++allocator.h \
/usr/include/c++/4.6/ext/new_allocator.h /usr/include/c++/4.6/new \
/usr/include/c++/4.6/exception /usr/include/c++/4.6/bits/stl_function.h \
/usr/include/c++/4.6/backward/binders.h \
/usr/include/c++/4.6/bits/stl_map.h \
/usr/include/c++/4.6/initializer_list \
/usr/include/c++/4.6/bits/stl_multimap.h \
/usr/include/c++/4.6/bits/range_access.h /usr/include/c++/4.6/utility \
/usr/include/c++/4.6/bits/stl_relops.h /usr/include/c++/4.6/iostream \
/usr/include/c++/4.6/ostream /usr/include/c++/4.6/ios \
/usr/include/c++/4.6/iosfwd /usr/include/c++/4.6/bits/stringfwd.h \
/usr/include/c++/4.6/bits/postypes.h /usr/include/c++/4.6/cwchar \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
/usr/include/c++/4.6/bits/char_traits.h \
/usr/include/c++/4.6/bits/localefwd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/c++/4.6/bits/ios_base.h \
/usr/include/c++/4.6/ext/atomicity.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \
/usr/include/x86_64-linux-gnu/bits/posix_opt.h \
/usr/include/x86_64-linux-gnu/bits/environments.h \
/usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \
/usr/include/x86_64-linux-gnu/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.h \
/usr/include/c++/4.6/bits/locale_classes.h /usr/include/c++/4.6/string \
/usr/include/c++/4.6/bits/ostream_insert.h \
/usr/include/c++/4.6/bits/cxxabi_forced.h \
/usr/include/c++/4.6/bits/basic_string.h \
/usr/include/c++/4.6/bits/basic_string.tcc \
/usr/include/c++/4.6/bits/locale_classes.tcc \
/usr/include/c++/4.6/streambuf /usr/include/c++/4.6/bits/streambuf.tcc \
/usr/include/c++/4.6/bits/basic_ios.h \
/usr/include/c++/4.6/bits/locale_facets.h /usr/include/c++/4.6/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_base.h \
/usr/include/c++/4.6/bits/streambuf_iterator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_inline.h \
/usr/include/c++/4.6/bits/locale_facets.tcc \
/usr/include/c++/4.6/bits/basic_ios.tcc \
/usr/include/c++/4.6/bits/ostream.tcc /usr/include/c++/4.6/istream \
/usr/include/c++/4.6/bits/istream.tcc \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/constants.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/exception.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file_inln.h memory.h \
error.h

View File

@ -21,108 +21,12 @@ lammps_data_write.o: lammps_data_write.cpp /usr/include/stdlib.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/string3.h lammps_data_write.h \ /usr/include/x86_64-linux-gnu/bits/string3.h lammps_data_write.h \
send2one.h /usr/lib/openmpi/include/mpi.h \ send2one.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi.h \
/usr/include/c++/4.6/map /usr/include/c++/4.6/bits/stl_tree.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi_portable_platform.h \
/usr/include/c++/4.6/bits/stl_algobase.h \ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \ /usr/include/wchar.h /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/cpu_defines.h \
/usr/include/c++/4.6/bits/functexcept.h \
/usr/include/c++/4.6/bits/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
/usr/include/c++/4.6/ext/type_traits.h \
/usr/include/c++/4.6/ext/numeric_traits.h \
/usr/include/c++/4.6/bits/stl_pair.h /usr/include/c++/4.6/bits/move.h \
/usr/include/c++/4.6/bits/concept_check.h \
/usr/include/c++/4.6/bits/stl_iterator_base_types.h \
/usr/include/c++/4.6/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.6/bits/stl_iterator.h \
/usr/include/c++/4.6/debug/debug.h /usr/include/c++/4.6/bits/allocator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++allocator.h \
/usr/include/c++/4.6/ext/new_allocator.h /usr/include/c++/4.6/new \
/usr/include/c++/4.6/exception /usr/include/c++/4.6/bits/stl_function.h \
/usr/include/c++/4.6/backward/binders.h \
/usr/include/c++/4.6/bits/stl_map.h \
/usr/include/c++/4.6/initializer_list \
/usr/include/c++/4.6/bits/stl_multimap.h \
/usr/include/c++/4.6/bits/range_access.h /usr/include/c++/4.6/utility \
/usr/include/c++/4.6/bits/stl_relops.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \ /usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h \ /usr/include/x86_64-linux-gnu/bits/stdio2.h memory.h error.h
/usr/include/c++/4.6/iostream /usr/include/c++/4.6/ostream \
/usr/include/c++/4.6/ios /usr/include/c++/4.6/iosfwd \
/usr/include/c++/4.6/bits/stringfwd.h \
/usr/include/c++/4.6/bits/postypes.h /usr/include/c++/4.6/cwchar \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
/usr/include/c++/4.6/bits/char_traits.h \
/usr/include/c++/4.6/bits/localefwd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/c++/4.6/bits/ios_base.h \
/usr/include/c++/4.6/ext/atomicity.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \
/usr/include/x86_64-linux-gnu/bits/posix_opt.h \
/usr/include/x86_64-linux-gnu/bits/environments.h \
/usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \
/usr/include/x86_64-linux-gnu/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.h \
/usr/include/c++/4.6/bits/locale_classes.h /usr/include/c++/4.6/string \
/usr/include/c++/4.6/bits/ostream_insert.h \
/usr/include/c++/4.6/bits/cxxabi_forced.h \
/usr/include/c++/4.6/bits/basic_string.h \
/usr/include/c++/4.6/bits/basic_string.tcc \
/usr/include/c++/4.6/bits/locale_classes.tcc \
/usr/include/c++/4.6/streambuf /usr/include/c++/4.6/bits/streambuf.tcc \
/usr/include/c++/4.6/bits/basic_ios.h \
/usr/include/c++/4.6/bits/locale_facets.h /usr/include/c++/4.6/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_base.h \
/usr/include/c++/4.6/bits/streambuf_iterator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_inline.h \
/usr/include/c++/4.6/bits/locale_facets.tcc \
/usr/include/c++/4.6/bits/basic_ios.tcc \
/usr/include/c++/4.6/bits/ostream.tcc /usr/include/c++/4.6/istream \
/usr/include/c++/4.6/bits/istream.tcc \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/constants.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/exception.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file_inln.h memory.h \
error.h

View File

@ -1,15 +1,26 @@
many2many.o: many2many.cpp /usr/lib/openmpi/include/mpi.h \ many2many.o: many2many.cpp \
/home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \ /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi_portable_platform.h \
/usr/include/c++/4.6/map /usr/include/c++/4.6/bits/stl_tree.h \ /usr/include/stdio.h /usr/include/features.h \
/usr/include/c++/4.6/bits/stl_algobase.h \ /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/x86_64-linux-gnu/sys/cdefs.h \ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h many2many.h irregular.h \
memory.h error.h /usr/include/c++/4.6/map \
/usr/include/c++/4.6/bits/stl_tree.h \
/usr/include/c++/4.6/bits/stl_algobase.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/cpu_defines.h \ /usr/include/c++/4.6/x86_64-linux-gnu/./bits/cpu_defines.h \
/usr/include/c++/4.6/bits/functexcept.h \ /usr/include/c++/4.6/bits/functexcept.h \
/usr/include/c++/4.6/bits/exception_defines.h \ /usr/include/c++/4.6/bits/exception_defines.h \
@ -29,91 +40,4 @@ many2many.o: many2many.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/c++/4.6/bits/stl_map.h \ /usr/include/c++/4.6/bits/stl_map.h \
/usr/include/c++/4.6/initializer_list \ /usr/include/c++/4.6/initializer_list \
/usr/include/c++/4.6/bits/stl_multimap.h \ /usr/include/c++/4.6/bits/stl_multimap.h \
/usr/include/c++/4.6/bits/range_access.h /usr/include/c++/4.6/utility \ /usr/include/c++/4.6/bits/range_access.h
/usr/include/c++/4.6/bits/stl_relops.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h /usr/include/stdio.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h \
/usr/include/c++/4.6/iostream /usr/include/c++/4.6/ostream \
/usr/include/c++/4.6/ios /usr/include/c++/4.6/iosfwd \
/usr/include/c++/4.6/bits/stringfwd.h \
/usr/include/c++/4.6/bits/postypes.h /usr/include/c++/4.6/cwchar \
/usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/xlocale.h \
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
/usr/include/c++/4.6/bits/char_traits.h \
/usr/include/c++/4.6/bits/localefwd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/c++/4.6/bits/ios_base.h \
/usr/include/c++/4.6/ext/atomicity.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \
/usr/include/x86_64-linux-gnu/bits/posix_opt.h \
/usr/include/x86_64-linux-gnu/bits/environments.h \
/usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \
/usr/include/x86_64-linux-gnu/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.h \
/usr/include/c++/4.6/bits/locale_classes.h /usr/include/c++/4.6/string \
/usr/include/c++/4.6/bits/ostream_insert.h \
/usr/include/c++/4.6/bits/cxxabi_forced.h \
/usr/include/c++/4.6/bits/basic_string.h \
/usr/include/c++/4.6/bits/basic_string.tcc \
/usr/include/c++/4.6/bits/locale_classes.tcc \
/usr/include/c++/4.6/streambuf /usr/include/c++/4.6/bits/streambuf.tcc \
/usr/include/c++/4.6/bits/basic_ios.h \
/usr/include/c++/4.6/bits/locale_facets.h /usr/include/c++/4.6/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_base.h \
/usr/include/c++/4.6/bits/streambuf_iterator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_inline.h \
/usr/include/c++/4.6/bits/locale_facets.tcc \
/usr/include/c++/4.6/bits/basic_ios.tcc \
/usr/include/c++/4.6/bits/ostream.tcc /usr/include/c++/4.6/istream \
/usr/include/c++/4.6/bits/istream.tcc \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/constants.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/exception.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h \
/usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file_inln.h many2many.h \
irregular.h memory.h error.h

View File

@ -1,127 +1,31 @@
many2one.o: many2one.cpp /usr/lib/openmpi/include/mpi.h \ many2one.o: many2one.cpp \
/home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \ /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi_portable_platform.h \
/usr/include/c++/4.6/map /usr/include/c++/4.6/bits/stl_tree.h \ /usr/include/stdio.h /usr/include/features.h \
/usr/include/c++/4.6/bits/stl_algobase.h \ /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/x86_64-linux-gnu/sys/cdefs.h \ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/cpu_defines.h \
/usr/include/c++/4.6/bits/functexcept.h \
/usr/include/c++/4.6/bits/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
/usr/include/c++/4.6/ext/type_traits.h \
/usr/include/c++/4.6/ext/numeric_traits.h \
/usr/include/c++/4.6/bits/stl_pair.h /usr/include/c++/4.6/bits/move.h \
/usr/include/c++/4.6/bits/concept_check.h \
/usr/include/c++/4.6/bits/stl_iterator_base_types.h \
/usr/include/c++/4.6/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.6/bits/stl_iterator.h \
/usr/include/c++/4.6/debug/debug.h /usr/include/c++/4.6/bits/allocator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++allocator.h \
/usr/include/c++/4.6/ext/new_allocator.h /usr/include/c++/4.6/new \
/usr/include/c++/4.6/exception /usr/include/c++/4.6/bits/stl_function.h \
/usr/include/c++/4.6/backward/binders.h \
/usr/include/c++/4.6/bits/stl_map.h \
/usr/include/c++/4.6/initializer_list \
/usr/include/c++/4.6/bits/stl_multimap.h \
/usr/include/c++/4.6/bits/range_access.h /usr/include/c++/4.6/utility \
/usr/include/c++/4.6/bits/stl_relops.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h /usr/include/stdio.h \
/usr/include/x86_64-linux-gnu/bits/types.h \ /usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \ /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \ /usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h \ /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \
/usr/include/c++/4.6/iostream /usr/include/c++/4.6/ostream \ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/c++/4.6/ios /usr/include/c++/4.6/iosfwd \ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
/usr/include/c++/4.6/bits/stringfwd.h \
/usr/include/c++/4.6/bits/postypes.h /usr/include/c++/4.6/cwchar \
/usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/xlocale.h \
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
/usr/include/c++/4.6/bits/char_traits.h \
/usr/include/c++/4.6/bits/localefwd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \ /usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \ /usr/include/x86_64-linux-gnu/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/c++/4.6/bits/ios_base.h \ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
/usr/include/c++/4.6/ext/atomicity.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \
/usr/include/x86_64-linux-gnu/bits/posix_opt.h \
/usr/include/x86_64-linux-gnu/bits/environments.h \
/usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \
/usr/include/x86_64-linux-gnu/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.h \
/usr/include/c++/4.6/bits/locale_classes.h /usr/include/c++/4.6/string \
/usr/include/c++/4.6/bits/ostream_insert.h \
/usr/include/c++/4.6/bits/cxxabi_forced.h \
/usr/include/c++/4.6/bits/basic_string.h \
/usr/include/c++/4.6/bits/basic_string.tcc \
/usr/include/c++/4.6/bits/locale_classes.tcc \
/usr/include/c++/4.6/streambuf /usr/include/c++/4.6/bits/streambuf.tcc \
/usr/include/c++/4.6/bits/basic_ios.h \
/usr/include/c++/4.6/bits/locale_facets.h /usr/include/c++/4.6/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_base.h \
/usr/include/c++/4.6/bits/streambuf_iterator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_inline.h \
/usr/include/c++/4.6/bits/locale_facets.tcc \
/usr/include/c++/4.6/bits/basic_ios.tcc \
/usr/include/c++/4.6/bits/ostream.tcc /usr/include/c++/4.6/istream \
/usr/include/c++/4.6/bits/istream.tcc \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/constants.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/exception.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h \
/usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file_inln.h \
/usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/sys/select.h \ /usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \ /usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/sigset.h \ /usr/include/x86_64-linux-gnu/bits/sigset.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \ /usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h many2one.h memory.h /usr/include/x86_64-linux-gnu/bits/stdlib.h many2one.h memory.h

View File

@ -1,127 +1,31 @@
memory.o: memory.cpp /usr/lib/openmpi/include/mpi.h \ memory.o: memory.cpp \
/home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \ /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi_portable_platform.h \
/usr/include/c++/4.6/map /usr/include/c++/4.6/bits/stl_tree.h \ /usr/include/stdlib.h /usr/include/features.h \
/usr/include/c++/4.6/bits/stl_algobase.h \ /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/x86_64-linux-gnu/sys/cdefs.h \ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/cpu_defines.h \ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/c++/4.6/bits/functexcept.h \ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
/usr/include/c++/4.6/bits/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
/usr/include/c++/4.6/ext/type_traits.h \
/usr/include/c++/4.6/ext/numeric_traits.h \
/usr/include/c++/4.6/bits/stl_pair.h /usr/include/c++/4.6/bits/move.h \
/usr/include/c++/4.6/bits/concept_check.h \
/usr/include/c++/4.6/bits/stl_iterator_base_types.h \
/usr/include/c++/4.6/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.6/bits/stl_iterator.h \
/usr/include/c++/4.6/debug/debug.h /usr/include/c++/4.6/bits/allocator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++allocator.h \
/usr/include/c++/4.6/ext/new_allocator.h /usr/include/c++/4.6/new \
/usr/include/c++/4.6/exception /usr/include/c++/4.6/bits/stl_function.h \
/usr/include/c++/4.6/backward/binders.h \
/usr/include/c++/4.6/bits/stl_map.h \
/usr/include/c++/4.6/initializer_list \
/usr/include/c++/4.6/bits/stl_multimap.h \
/usr/include/c++/4.6/bits/range_access.h /usr/include/c++/4.6/utility \
/usr/include/c++/4.6/bits/stl_relops.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h /usr/include/stdio.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h \
/usr/include/c++/4.6/iostream /usr/include/c++/4.6/ostream \
/usr/include/c++/4.6/ios /usr/include/c++/4.6/iosfwd \
/usr/include/c++/4.6/bits/stringfwd.h \
/usr/include/c++/4.6/bits/postypes.h /usr/include/c++/4.6/cwchar \
/usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/xlocale.h \
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
/usr/include/c++/4.6/bits/char_traits.h \
/usr/include/c++/4.6/bits/localefwd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \ /usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \ /usr/include/x86_64-linux-gnu/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/c++/4.6/bits/ios_base.h \
/usr/include/c++/4.6/ext/atomicity.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \
/usr/include/x86_64-linux-gnu/bits/posix_opt.h \
/usr/include/x86_64-linux-gnu/bits/environments.h \
/usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \
/usr/include/x86_64-linux-gnu/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.h \
/usr/include/c++/4.6/bits/locale_classes.h /usr/include/c++/4.6/string \
/usr/include/c++/4.6/bits/ostream_insert.h \
/usr/include/c++/4.6/bits/cxxabi_forced.h \
/usr/include/c++/4.6/bits/basic_string.h \
/usr/include/c++/4.6/bits/basic_string.tcc \
/usr/include/c++/4.6/bits/locale_classes.tcc \
/usr/include/c++/4.6/streambuf /usr/include/c++/4.6/bits/streambuf.tcc \
/usr/include/c++/4.6/bits/basic_ios.h \
/usr/include/c++/4.6/bits/locale_facets.h /usr/include/c++/4.6/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_base.h \
/usr/include/c++/4.6/bits/streambuf_iterator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_inline.h \
/usr/include/c++/4.6/bits/locale_facets.tcc \
/usr/include/c++/4.6/bits/basic_ios.tcc \
/usr/include/c++/4.6/bits/ostream.tcc /usr/include/c++/4.6/istream \
/usr/include/c++/4.6/bits/istream.tcc \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/constants.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/exception.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h \
/usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file_inln.h \
/usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/sys/types.h \ /usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/sys/select.h \ /usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \ /usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/sigset.h \ /usr/include/x86_64-linux-gnu/bits/sigset.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \ /usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h memory.h error.h /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h memory.h error.h

View File

@ -1,7 +1,8 @@
one2many.o: one2many.cpp /usr/lib/openmpi/include/mpi.h \ one2many.o: one2many.cpp \
/home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \ /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi_portable_platform.h \
/usr/include/c++/4.6/map /usr/include/c++/4.6/bits/stl_tree.h \ one2many.h /usr/include/c++/4.6/map /usr/include/c++/4.6/bits/stl_tree.h \
/usr/include/c++/4.6/bits/stl_algobase.h \ /usr/include/c++/4.6/bits/stl_algobase.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \ /usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \ /usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \
@ -29,91 +30,4 @@ one2many.o: one2many.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/c++/4.6/bits/stl_map.h \ /usr/include/c++/4.6/bits/stl_map.h \
/usr/include/c++/4.6/initializer_list \ /usr/include/c++/4.6/initializer_list \
/usr/include/c++/4.6/bits/stl_multimap.h \ /usr/include/c++/4.6/bits/stl_multimap.h \
/usr/include/c++/4.6/bits/range_access.h /usr/include/c++/4.6/utility \ /usr/include/c++/4.6/bits/range_access.h memory.h
/usr/include/c++/4.6/bits/stl_relops.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h /usr/include/stdio.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h \
/usr/include/c++/4.6/iostream /usr/include/c++/4.6/ostream \
/usr/include/c++/4.6/ios /usr/include/c++/4.6/iosfwd \
/usr/include/c++/4.6/bits/stringfwd.h \
/usr/include/c++/4.6/bits/postypes.h /usr/include/c++/4.6/cwchar \
/usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/xlocale.h \
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
/usr/include/c++/4.6/bits/char_traits.h \
/usr/include/c++/4.6/bits/localefwd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/c++/4.6/bits/ios_base.h \
/usr/include/c++/4.6/ext/atomicity.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \
/usr/include/x86_64-linux-gnu/bits/posix_opt.h \
/usr/include/x86_64-linux-gnu/bits/environments.h \
/usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \
/usr/include/x86_64-linux-gnu/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.h \
/usr/include/c++/4.6/bits/locale_classes.h /usr/include/c++/4.6/string \
/usr/include/c++/4.6/bits/ostream_insert.h \
/usr/include/c++/4.6/bits/cxxabi_forced.h \
/usr/include/c++/4.6/bits/basic_string.h \
/usr/include/c++/4.6/bits/basic_string.tcc \
/usr/include/c++/4.6/bits/locale_classes.tcc \
/usr/include/c++/4.6/streambuf /usr/include/c++/4.6/bits/streambuf.tcc \
/usr/include/c++/4.6/bits/basic_ios.h \
/usr/include/c++/4.6/bits/locale_facets.h /usr/include/c++/4.6/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_base.h \
/usr/include/c++/4.6/bits/streambuf_iterator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_inline.h \
/usr/include/c++/4.6/bits/locale_facets.tcc \
/usr/include/c++/4.6/bits/basic_ios.tcc \
/usr/include/c++/4.6/bits/ostream.tcc /usr/include/c++/4.6/istream \
/usr/include/c++/4.6/bits/istream.tcc \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/constants.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/exception.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h \
/usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file_inln.h one2many.h \
memory.h

View File

@ -1,127 +1,31 @@
send2one.o: send2one.cpp /usr/lib/openmpi/include/mpi.h \ send2one.o: send2one.cpp \
/home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \ /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h \ /home/goniva/OpenFOAM/ThirdParty-2.2.x/platforms/linux64Gcc/openmpi-1.6.3/include/mpi_portable_platform.h \
/usr/include/c++/4.6/map /usr/include/c++/4.6/bits/stl_tree.h \ /usr/include/stdlib.h /usr/include/features.h \
/usr/include/c++/4.6/bits/stl_algobase.h \ /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/bits/predefs.h \
/usr/include/x86_64-linux-gnu/sys/cdefs.h \ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/cpu_defines.h \ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/c++/4.6/bits/functexcept.h \ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
/usr/include/c++/4.6/bits/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
/usr/include/c++/4.6/ext/type_traits.h \
/usr/include/c++/4.6/ext/numeric_traits.h \
/usr/include/c++/4.6/bits/stl_pair.h /usr/include/c++/4.6/bits/move.h \
/usr/include/c++/4.6/bits/concept_check.h \
/usr/include/c++/4.6/bits/stl_iterator_base_types.h \
/usr/include/c++/4.6/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.6/bits/stl_iterator.h \
/usr/include/c++/4.6/debug/debug.h /usr/include/c++/4.6/bits/allocator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++allocator.h \
/usr/include/c++/4.6/ext/new_allocator.h /usr/include/c++/4.6/new \
/usr/include/c++/4.6/exception /usr/include/c++/4.6/bits/stl_function.h \
/usr/include/c++/4.6/backward/binders.h \
/usr/include/c++/4.6/bits/stl_map.h \
/usr/include/c++/4.6/initializer_list \
/usr/include/c++/4.6/bits/stl_multimap.h \
/usr/include/c++/4.6/bits/range_access.h /usr/include/c++/4.6/utility \
/usr/include/c++/4.6/bits/stl_relops.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h /usr/include/stdio.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h \
/usr/include/c++/4.6/iostream /usr/include/c++/4.6/ostream \
/usr/include/c++/4.6/ios /usr/include/c++/4.6/iosfwd \
/usr/include/c++/4.6/bits/stringfwd.h \
/usr/include/c++/4.6/bits/postypes.h /usr/include/c++/4.6/cwchar \
/usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/xlocale.h \
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
/usr/include/c++/4.6/bits/char_traits.h \
/usr/include/c++/4.6/bits/localefwd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \ /usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \ /usr/include/x86_64-linux-gnu/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/c++/4.6/bits/ios_base.h \
/usr/include/c++/4.6/ext/atomicity.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \
/usr/include/x86_64-linux-gnu/bits/posix_opt.h \
/usr/include/x86_64-linux-gnu/bits/environments.h \
/usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \
/usr/include/x86_64-linux-gnu/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.h \
/usr/include/c++/4.6/bits/locale_classes.h /usr/include/c++/4.6/string \
/usr/include/c++/4.6/bits/ostream_insert.h \
/usr/include/c++/4.6/bits/cxxabi_forced.h \
/usr/include/c++/4.6/bits/basic_string.h \
/usr/include/c++/4.6/bits/basic_string.tcc \
/usr/include/c++/4.6/bits/locale_classes.tcc \
/usr/include/c++/4.6/streambuf /usr/include/c++/4.6/bits/streambuf.tcc \
/usr/include/c++/4.6/bits/basic_ios.h \
/usr/include/c++/4.6/bits/locale_facets.h /usr/include/c++/4.6/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_base.h \
/usr/include/c++/4.6/bits/streambuf_iterator.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_inline.h \
/usr/include/c++/4.6/bits/locale_facets.tcc \
/usr/include/c++/4.6/bits/basic_ios.tcc \
/usr/include/c++/4.6/bits/ostream.tcc /usr/include/c++/4.6/istream \
/usr/include/c++/4.6/bits/istream.tcc \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/constants.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/exception.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/datatype_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h \
/usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/request_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/comm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intracomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/topology_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/intercomm_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/group_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/op_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/errhandler_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/status_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/info_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/win_inln.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file_inln.h \
/usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/sys/types.h \ /usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/sys/select.h \ /usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \ /usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/sigset.h \ /usr/include/x86_64-linux-gnu/bits/sigset.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \ /usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h send2one.h memory.h error.h /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h send2one.h memory.h error.h

View File

@ -69,6 +69,12 @@ twoWayMany2Many::twoWayMany2Many
neighbourProcs_(pData_[Pstream::myProcNo()]), neighbourProcs_(pData_[Pstream::myProcNo()]),
neighbourProcIndices_(Pstream::nProcs(), -1) neighbourProcIndices_(Pstream::nProcs(), -1)
{ {
allowDiagComm_=true;
if (propsDict_.found("allowDiagComm"))
allowDiagComm_=Switch(propsDict_.lookup("allowDiagComm"));
if(!allowDiagComm_)
Warning << "Make sure you decompose only in one direction as allowDiagComm flag is false!" << endl;
forAll(neighbourProcs_, i) neighbourProcIndices_[neighbourProcs_[i]] = i; forAll(neighbourProcs_, i) neighbourProcIndices_[neighbourProcs_[i]] = i;
Info<<"Starting up LIGGGHTS for first time execution"<<endl; Info<<"Starting up LIGGGHTS for first time execution"<<endl;
@ -82,39 +88,28 @@ twoWayMany2Many::twoWayMany2Many
MPI_Comm_split(MPI_COMM_WORLD,liggghts,0,&comm_liggghts); MPI_Comm_split(MPI_COMM_WORLD,liggghts,0,&comm_liggghts);
// open LIGGGHTS input script // open LIGGGHTS input script
FILE *fp=NULL; char *liggghtsPathChar = new char[256];
int n = 0;
if (me == 0) if (me == 0)
{ {
// read path from dictionary // read path from dictionary
const fileName liggghtsPath(propsDict_.lookup("liggghtsPath")); const fileName liggghtsPath(propsDict_.lookup("liggghtsPath"));
char * liggghtsPathChar = (char*)liggghtsPath.c_str(); strcpy(liggghtsPathChar, liggghtsPath.c_str());
n = strlen(liggghtsPathChar) + 1;
Info<<"Executing input script '"<< liggghtsPath.c_str() <<"'"<<endl; Info<<"Executing input script '"<< liggghtsPath.c_str() <<"'"<<endl;
fp = fopen(liggghtsPathChar,"r");
if (fp == NULL) {
printf("ERROR: Could not open LIGGGHTS input script\n");
MPI_Abort(MPI_COMM_WORLD,1);
}
} }
if (liggghts == 1) lmp = new LAMMPS_NS::LAMMPS(0,NULL,comm_liggghts); if (liggghts == 1) lmp = new LAMMPS_NS::LAMMPS(0,NULL,comm_liggghts);
int n; MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD);
char line[1024]; if (n > 0) {
while (1) { MPI_Bcast(liggghtsPathChar,n,MPI_CHAR,0,MPI_COMM_WORLD);
if (me == 0) { if (liggghts == 1) lmp->input->file(liggghtsPathChar);
if (fgets(line,1024,fp) == NULL) n = 0;
else n = strlen(line) + 1;
if (n == 0) fclose(fp);
}
MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD);
if (n == 0) break;
MPI_Bcast(line,n,MPI_CHAR,0,MPI_COMM_WORLD);
if (liggghts == 1) lmp->input->one(line);
} }
delete [] liggghtsPathChar;
// get DEM time step size // get DEM time step size
DEMts_ = lmp->update->dt; DEMts_ = lmp->update->dt;
checkTSsize(); checkTSsize();
@ -189,14 +184,46 @@ void twoWayMany2Many::getData
) const ) const
{ {
char* charName = wordToChar(name); char* charName = wordToChar(name);
if ( type == "vector-atom" && name != "x") if(name != "x")
{ {
double **tmp_ = (double **) lammps_extract_atom(lmp,charName); if ( type == "vector-atom")
lmp2foam_vec_->exchange(tmp_ ? tmp_[0] : NULL, field[0]); {
}else if (name != "x") double **tmp_ = (double **) lammps_extract_atom(lmp,charName);
{ if(!tmp_)
double *tmp_ = (double *) lammps_extract_atom(lmp,charName); {
lmp2foam_->exchange(tmp_, field[0]); LAMMPS_NS::Fix *fix = NULL;
fix = lmp->modify->find_fix_property(charName,"property/atom","vector",0,0,"cfd coupling",false);
if(fix)
tmp_ = (double **) static_cast<LAMMPS_NS::FixPropertyAtom*>(fix)->array_atom;
else
Warning << "coupling fix not found!"<<endl;
if(!tmp_)
FatalError << "find_fix_property " << charName << " array_atom not found." << abort(FatalError);
}
lmp2foam_vec_->exchange(tmp_ ? tmp_[0] : NULL, field[0]);
}else if ( type == "scalar-atom")
{
double *tmp_ = (double *) lammps_extract_atom(lmp,charName);
if(!tmp_)
{
LAMMPS_NS::Fix *fix = NULL;
fix = lmp->modify->find_fix_property(charName,"property/atom","scalar",0,0,"cfd coupling",true);
if(fix)
tmp_ = (double *) static_cast<LAMMPS_NS::FixPropertyAtom*>(fix)->vector_atom;
else
FatalError << "coupling fix not found!"<< abort(FatalError);
if(!tmp_)
FatalError << "find_fix_property " << charName << " array_atom not found." << abort(FatalError);
}
lmp2foam_->exchange(tmp_, field[0]);
}else
{
FatalError << "requesting type " << type << " and name " << name << abort(FatalError);
}
} }
} }
@ -232,24 +259,26 @@ void twoWayMany2Many::giveData
else else
Warning << "coupling fix not found!"<<endl; Warning << "coupling fix not found!"<<endl;
if(!tmp_)
FatalError << "find_fix_property " << charName << " array_atom not found." << abort(FatalError);
foam2lmp_vec_->exchange(field[0],tmp_ ? tmp_[0] : NULL); foam2lmp_vec_->exchange(field[0],tmp_ ? tmp_[0] : NULL);
}else if( type == "scalar-atom" ) }else if( type == "scalar-atom" )
{ {
Warning << "LIGGGHTS not ready for use of impleDEM and Many2Many" << endl;
double *tmp_=NULL; double *tmp_=NULL;
LAMMPS_NS::Fix *fix = NULL; LAMMPS_NS::Fix *fix = NULL;
fix = lmp->modify->find_fix_property(charName,"property/atom","scalar",0,0,"cfd coupling",false); fix = lmp->modify->find_fix_property(charName,"property/atom","scalar",0,0,"cfd coupling",true);
if(fix) if(fix)
tmp_ = (double *) static_cast<LAMMPS_NS::FixPropertyAtom*>(fix)->array_atom; tmp_ = (double *) static_cast<LAMMPS_NS::FixPropertyAtom*>(fix)->vector_atom;
else else
FatalError << "coupling fix not found!"<< abort(FatalError); FatalError << "coupling fix not found!"<< abort(FatalError);
if(!tmp_) if(!tmp_)
allocateArray(tmp_,0,nlocal_lammps_); FatalError << "find_fix_property " << charName << " array_atom not found." << abort(FatalError);
foam2lmp_->exchange(field[0],tmp_ ? tmp_ : NULL); foam2lmp_->exchange(field[0],tmp_ ? tmp_ : NULL); // for double *
}else{ }else{
FatalError << "twoWayMany2Many::giveData requested type not implemented! \n"<< abort(FatalError); FatalError << "twoWayMany2Many::giveData requested type "<< type <<" not implemented! \n"<< abort(FatalError);
} }
} }
@ -355,6 +384,7 @@ void inline Foam::twoWayMany2Many::destroy(int* array) const
bool Foam::twoWayMany2Many::couple() const bool Foam::twoWayMany2Many::couple() const
{ {
bool coupleNow = false; bool coupleNow = false;
label commandLines(0);
if (doCoupleNow()) if (doCoupleNow())
{ {
couplingStep_++; couplingStep_++;
@ -371,9 +401,13 @@ bool Foam::twoWayMany2Many::couple() const
if(particleCloud_.liggghtsCommand()[i]().runCommand(couplingStep())) if(particleCloud_.liggghtsCommand()[i]().runCommand(couplingStep()))
{ {
const char* command = particleCloud_.liggghtsCommand()[i]().command(0); commandLines=particleCloud_.liggghtsCommand()[i]().commandLines();
Info << "Executing command: '"<< command <<"'"<< endl; for(int j=0;j<commandLines;j++)
lmp->input->one(command); {
const char* command = particleCloud_.liggghtsCommand()[i]().command(j);
Info << "Executing command: '"<< command <<"'"<< endl;
lmp->input->one(command);
}
} }
} }
particleCloud_.clockM().stop("LIGGGHTS"); particleCloud_.clockM().stop("LIGGGHTS");
@ -595,18 +629,29 @@ void Foam::twoWayMany2Many::locateParticle(int* id_lammpsSync, bool id_lammps_al
{ {
label patchI = pbm_.whichPatch(nearestFace); label patchI = pbm_.whichPatch(nearestFace);
label n(-1);
if (procPatchIndices_[patchI] != -1) if (procPatchIndices_[patchI] != -1)
{ {
label n = neighbourProcIndices_ n = neighbourProcIndices_
[ [
refCast<const processorPolyPatch> refCast<const processorPolyPatch>
( (
pbm_[patchI] pbm_[patchI]
).neighbProcNo() ).neighbProcNo()
]; ];
particleTransferID[n].append(id_lammps_[i]);
particleTransferPos[n].append(pos); if(n==Pstream::myProcNo())
commPart=true; {
//Pout << couplingStep_ << "st communicating particle " << id_lammps_[i]
// << "communication fails as particle travels diagonal or jumps over proc" << endl;
}
else
{
particleTransferID[n].append(id_lammps_[i]);
particleTransferPos[n].append(pos);
commPart=true;
//Pout << couplingStep_ << "st communicating particle " << id_lammps_[i] << ", to proc# " << n << endl;
}
} }
} }
if (!commPart) if (!commPart)
@ -703,7 +748,7 @@ void Foam::twoWayMany2Many::locateParticle(int* id_lammpsSync, bool id_lammps_al
particleCloud_.clockM().start(9,"locate_Stage3"); particleCloud_.clockM().start(9,"locate_Stage3");
int nlocal_foam_lostAll(-1); int nlocal_foam_lostAll(-1);
if (firstRun_) if (firstRun_ || allowDiagComm_)
{ {
particleCloud_.clockM().start(10,"locate_Stage3_1"); particleCloud_.clockM().start(10,"locate_Stage3_1");
MPI_Allreduce(&nlocal_foam_lost_, &nlocal_foam_lostAll, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); MPI_Allreduce(&nlocal_foam_lost_, &nlocal_foam_lostAll, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD);

View File

@ -90,6 +90,7 @@ private:
// new vars // new vars
mutable bool firstRun_; mutable bool firstRun_;
Switch allowDiagComm_;
mutable bool particleLost_; mutable bool particleLost_;
mutable double Npart_; mutable double Npart_;
mutable Many2Many * lmp2foam_; mutable Many2Many * lmp2foam_;

View File

@ -63,8 +63,6 @@ Archimedes::Archimedes
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
twoDimensional_(false), twoDimensional_(false),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
gravityFieldName_(propsDict_.lookup("gravityFieldName")), gravityFieldName_(propsDict_.lookup("gravityFieldName")),
#if defined(version21) || defined(version16ext) #if defined(version21) || defined(version16ext)
g_(sm.mesh().lookupObject<uniformDimensionedVectorField> (gravityFieldName_)) g_(sm.mesh().lookupObject<uniformDimensionedVectorField> (gravityFieldName_))
@ -91,18 +89,20 @@ Archimedes::Archimedes
// define switches which can be read from dict // define switches which can be read from dict
forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch
forceSubM(0).setSwitchesList(1,true); // activate treatDEM switch forceSubM(0).setSwitchesList(1,true); // activate treatForceDEM switch
// read those switches defined above, if provided in dict
forceSubM(0).readSwitches(); forceSubM(0).readSwitches();
if (modelType_=="A"){ if (modelType_=="A" || modelType_=="Bfull"){
forceSubM(0).setSwitches(1,true); // treatDEM = true if(!forceSubM(0).switches()[1]) // treatDEM != true
Info << "accounting for Archimedes only on DEM side!" << endl; {
Warning << "Usually model type A and Bfull need Archimedes only on DEM side only (treatForceDEM=true)! are you sure about your settings?" << endl;
}
} }
if (modelType_=="B"){ if (modelType_=="B"){
forceSubM(0).setSwitches(1,false); // treatDEM = false if(forceSubM(0).switches()[1]) // treatDEM = true
Info << "accounting for Archimedes on DEM and CFD side!" << endl; {
Warning << "Usually model type B needs Archimedes only on CFD and DEM side (treatForceDEM=false)! are you sure about your settings?" << endl;
}
} }
particleCloud_.checkCG(true); particleCloud_.checkCG(true);
@ -136,12 +136,21 @@ void Archimedes::setForce() const
if(twoDimensional_) if(twoDimensional_)
{ {
force = -g_.value()*rho_[cellI]*pow(dp,2)/4*M_PI; force = -g_.value()*forceSubM(0).rhoField()[cellI]*pow(dp,2)/4*M_PI;
Warning << "Archimedes::setForce() : this functionality is not tested!" << endl; Warning << "Archimedes::setForce() : this functionality is not tested!" << endl;
}else{ }else{
force = -g_.value()*rho_[cellI]*particleCloud_.particleVolume(index); force = -g_.value()*forceSubM(0).rhoField()[cellI]*particleCloud_.particleVolume(index);
} }
//if(index >=0 && index <100)
//{
// Pout << "cellI = " << cellI << endl;
// Pout << "index = " << index << endl;
// Pout << "forceSubM(0).rhoField()[cellI] = " << forceSubM(0).rhoField()[cellI] << endl;
// Pout << "particleCloud_.particleVolume(index) = " << particleCloud_.particleVolume(index) << endl;
// Pout << "force = " << force << endl;
//}
//Set value fields and write the probe //Set value fields and write the probe
if(probeIt_) if(probeIt_)
{ {

View File

@ -63,10 +63,6 @@ private:
bool twoDimensional_; bool twoDimensional_;
word densityFieldName_;
const volScalarField& rho_; // ref to fluid density
word gravityFieldName_; word gravityFieldName_;
#ifdef version21 #ifdef version21

View File

@ -63,8 +63,6 @@ ArchimedesIB::ArchimedesIB
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
twoDimensional_(false), twoDimensional_(false),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")), //mod by alice voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")), //mod by alice
voidfractions_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)),//mod by alice voidfractions_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)),//mod by alice
gravityFieldName_(propsDict_.lookup("gravityFieldName")), gravityFieldName_(propsDict_.lookup("gravityFieldName")),
@ -125,8 +123,8 @@ void ArchimedesIB::setForce() const
label cellI = particleCloud_.cellIDs()[index][subCell]; label cellI = particleCloud_.cellIDs()[index][subCell];
if (cellI > -1) // particle Found if (cellI > -1) // particle Found
{ {
//force += -g_.value()*rho_[cellI]*rho_.mesh().V()[cellI]*(1-particleCloud_.voidfractions()[index][subCell]);//mod by alice //force += -g_.value()*forceSubM(0).rhoField()[cellI]*forceSubM(0).rhoField().mesh().V()[cellI]*(1-particleCloud_.voidfractions()[index][subCell]);//mod by alice
force += -g_.value()*rho_[cellI]*rho_.mesh().V()[cellI]*(1-voidfractions_[cellI]);//mod by alice force += -g_.value()*forceSubM(0).rhoField()[cellI]*particleCloud_.mesh().V()[cellI]*(1-voidfractions_[cellI]);//mod by alice
} }
} }

View File

@ -65,10 +65,6 @@ private:
bool twoDimensional_; bool twoDimensional_;
word densityFieldName_;
const volScalarField& rho_; // ref to fluid density
word voidfractionFieldName_; word voidfractionFieldName_;
const volScalarField& voidfractions_; const volScalarField& voidfractions_;

View File

@ -64,14 +64,10 @@ DiFeliceDrag::DiFeliceDrag
: :
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
verbose_(false),
velFieldName_(propsDict_.lookup("velFieldName")), velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")), voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")),
voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)), voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)),
interpolation_(false),
UsFieldName_(propsDict_.lookup("granVelFieldName")), UsFieldName_(propsDict_.lookup("granVelFieldName")),
UsField_(sm.mesh().lookupObject<volVectorField> (UsFieldName_)), UsField_(sm.mesh().lookupObject<volVectorField> (UsFieldName_)),
scaleDia_(1.), scaleDia_(1.),
@ -86,12 +82,6 @@ DiFeliceDrag::DiFeliceDrag
particleCloud_.probeM().scalarFields_.append("voidfraction"); //other are debug particleCloud_.probeM().scalarFields_.append("voidfraction"); //other are debug
particleCloud_.probeM().writeHeader(); particleCloud_.probeM().writeHeader();
if (propsDict_.found("verbose")) verbose_=true;
if (propsDict_.found("interpolation"))
{
Info << "using interpolated value of U." << endl;
interpolation_=true;
}
particleCloud_.checkCG(true); particleCloud_.checkCG(true);
if (propsDict_.found("scale")) if (propsDict_.found("scale"))
scaleDia_=scalar(readScalar(propsDict_.lookup("scale"))); scaleDia_=scalar(readScalar(propsDict_.lookup("scale")));
@ -104,6 +94,9 @@ DiFeliceDrag::DiFeliceDrag
// define switches which can be read from dict // define switches which can be read from dict
forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch
forceSubM(0).setSwitchesList(2,true); // activate implDEM switch forceSubM(0).setSwitchesList(2,true); // activate implDEM switch
forceSubM(0).setSwitchesList(3,true); // activate search for verbose switch
forceSubM(0).setSwitchesList(4,true); // activate search for interpolate switch
forceSubM(0).setSwitchesList(8,true); // activate scalarViscosity switch
// read those switches defined above, if provided in dict // read those switches defined above, if provided in dict
forceSubM(0).readSwitches(); forceSubM(0).readSwitches();
@ -126,14 +119,10 @@ void DiFeliceDrag::setForce() const
scaleDia_=particleCloud_.cg(); scaleDia_=particleCloud_.cg();
Info << "DiFeliceDrag using scale from liggghts cg = " << scaleDia_ << endl; Info << "DiFeliceDrag using scale from liggghts cg = " << scaleDia_ << endl;
} }
// get viscosity field
#ifdef comp
const volScalarField nufField = particleCloud_.turbulence().mu() / rho_;
#else
const volScalarField& nufField = particleCloud_.turbulence().nu();
#endif
const volScalarField& nufField = forceSubM(0).nuField();
const volScalarField& rhoField = forceSubM(0).rhoField();
vector position(0,0,0); vector position(0,0,0);
scalar voidfraction(1); scalar voidfraction(1);
vector Ufluid(0,0,0); vector Ufluid(0,0,0);
@ -157,9 +146,6 @@ void DiFeliceDrag::setForce() const
for(int index = 0;index < particleCloud_.numberOfParticles(); index++) for(int index = 0;index < particleCloud_.numberOfParticles(); index++)
{ {
//if(mask[index][0])
//{
cellI = particleCloud_.cellIDs()[index][0]; cellI = particleCloud_.cellIDs()[index][0];
drag = vector(0,0,0); drag = vector(0,0,0);
dragExplicit = vector(0,0,0); dragExplicit = vector(0,0,0);
@ -168,7 +154,7 @@ void DiFeliceDrag::setForce() const
if (cellI > -1) // particle Found if (cellI > -1) // particle Found
{ {
if(interpolation_) if(forceSubM(0).interpolation())
{ {
position = particleCloud_.position(index); position = particleCloud_.position(index);
voidfraction = voidfractionInterpolator_.interpolate(position,cellI); voidfraction = voidfractionInterpolator_.interpolate(position,cellI);
@ -183,7 +169,7 @@ void DiFeliceDrag::setForce() const
Ur = Ufluid-Us; Ur = Ufluid-Us;
ds = 2*particleCloud_.radius(index); ds = 2*particleCloud_.radius(index);
nuf = nufField[cellI]; nuf = nufField[cellI];
rho = rho_[cellI]; rho = rhoField[cellI];
magUr = mag(Ur); magUr = mag(Ur);
Rep = 0; Rep = 0;
Cd = 0; Cd = 0;
@ -212,10 +198,10 @@ void DiFeliceDrag::setForce() const
drag = dragCoefficient*Ur; //total drag force! drag = dragCoefficient*Ur; //total drag force!
forceSubM(0).explicitInterpCorr(dragExplicit,dragCoefficient,Ufluid,U_[cellI],Us,UsField_[cellI],verbose_,index); forceSubM(0).explicitInterpCorr(dragExplicit,dragCoefficient,Ufluid,U_[cellI],Us,UsField_[cellI],forceSubM(0).verbose(),index);
} }
if(verbose_ && index >-1 && index <102) if(forceSubM(0).verbose() && index >-1 && index <102)
{ {
Pout << "index = " << index << endl; Pout << "index = " << index << endl;
Pout << "Us = " << Us << endl; Pout << "Us = " << Us << endl;
@ -245,7 +231,6 @@ void DiFeliceDrag::setForce() const
// write particle based data to global array // write particle based data to global array
forceSubM(0).partToArray(index,drag,dragExplicit,Ufluid,dragCoefficient); forceSubM(0).partToArray(index,drag,dragExplicit,Ufluid,dragCoefficient);
} }
//}
} }

View File

@ -60,22 +60,14 @@ class DiFeliceDrag
private: private:
dictionary propsDict_; dictionary propsDict_;
bool verbose_;
word velFieldName_; word velFieldName_;
const volVectorField& U_; const volVectorField& U_;
word densityFieldName_;
const volScalarField& rho_;
word voidfractionFieldName_; word voidfractionFieldName_;
const volScalarField& voidfraction_; const volScalarField& voidfraction_;
bool interpolation_; // use interpolated U field values
word UsFieldName_; word UsFieldName_;
const volVectorField& UsField_; // the average particle velocity field (for implicit/expliti force split) const volVectorField& UsField_; // the average particle velocity field (for implicit/expliti force split)

View File

@ -63,15 +63,11 @@ GidaspowDrag::GidaspowDrag
: :
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
verbose_(false),
velFieldName_(propsDict_.lookup("velFieldName")), velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")), voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")),
voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)), voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)),
phi_(readScalar(propsDict_.lookup("phi"))), phi_(readScalar(propsDict_.lookup("phi"))),
interpolation_(false),
UsFieldName_(propsDict_.lookup("granVelFieldName")), UsFieldName_(propsDict_.lookup("granVelFieldName")),
UsField_(sm.mesh().lookupObject<volVectorField> (UsFieldName_)), UsField_(sm.mesh().lookupObject<volVectorField> (UsFieldName_)),
scaleDia_(1.), scaleDia_(1.),
@ -87,17 +83,14 @@ GidaspowDrag::GidaspowDrag
particleCloud_.probeM().scalarFields_.append("voidfraction"); particleCloud_.probeM().scalarFields_.append("voidfraction");
particleCloud_.probeM().writeHeader(); particleCloud_.probeM().writeHeader();
if (propsDict_.found("verbose")) verbose_=true;
if (propsDict_.found("interpolation")) interpolation_=true;
// init force sub model // init force sub model
setForceSubModels(propsDict_); setForceSubModels(propsDict_);
// define switches which can be read from dict // define switches which can be read from dict
forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch
forceSubM(0).setSwitchesList(2,true); // activate implDEM switch forceSubM(0).setSwitchesList(2,true); // activate implDEM switch
forceSubM(0).setSwitchesList(3,true); // activate search for verbose switch
// read those switches defined above, if provided in dict forceSubM(0).setSwitchesList(4,true); // activate search for interpolate switch
forceSubM(0).setSwitchesList(8,true); // activate scalarViscosity switch
forceSubM(0).readSwitches(); forceSubM(0).readSwitches();
particleCloud_.checkCG(true); particleCloud_.checkCG(true);
@ -108,8 +101,6 @@ GidaspowDrag::GidaspowDrag
if (propsDict_.found("switchingVoidfraction")) if (propsDict_.found("switchingVoidfraction"))
switchingVoidfraction_ = readScalar(propsDict_.lookup("switchingVoidfraction")); switchingVoidfraction_ = readScalar(propsDict_.lookup("switchingVoidfraction"));
Info << "Gidaspow - interpolation switch: " << interpolation_ << endl;
} }
@ -130,12 +121,8 @@ void GidaspowDrag::setForce() const
Info << "Gidaspow using scale from liggghts cg = " << scaleDia_ << endl; Info << "Gidaspow using scale from liggghts cg = " << scaleDia_ << endl;
} }
// get viscosity field const volScalarField& nufField = forceSubM(0).nuField();
#ifdef comp const volScalarField& rhoField = forceSubM(0).rhoField();
const volScalarField nufField = particleCloud_.turbulence().mu() / rho_;
#else
const volScalarField& nufField = particleCloud_.turbulence().nu();
#endif
vector position(0,0,0); vector position(0,0,0);
scalar voidfraction(1); scalar voidfraction(1);
@ -180,7 +167,7 @@ void GidaspowDrag::setForce() const
if (cellI > -1) // particle Found if (cellI > -1) // particle Found
{ {
if(interpolation_) if( forceSubM(0).interpolation() )
{ {
position = particleCloud_.position(index); position = particleCloud_.position(index);
voidfraction = voidfractionInterpolator_.interpolate(position,cellI); voidfraction = voidfractionInterpolator_.interpolate(position,cellI);
@ -199,8 +186,8 @@ void GidaspowDrag::setForce() const
Us = particleCloud_.velocity(index); Us = particleCloud_.velocity(index);
Ur = Ufluid-Us; Ur = Ufluid-Us;
magUr = mag(Ur); magUr = mag(Ur);
ds = 2*particleCloud_.radius(index)*phi_; ds = 2*particleCloud_.radius(index);
rho = rho_[cellI]; rho = rhoField[cellI];
nuf = nufField[cellI]; nuf = nufField[cellI];
Rep=0.0; Rep=0.0;
@ -223,10 +210,10 @@ void GidaspowDrag::setForce() const
else //dense else //dense
{ {
betaP = (150 * localPhiP*nuf*rho) //this is betaP = beta / localPhiP! betaP = (150 * localPhiP*nuf*rho) //this is betaP = beta / localPhiP!
/ (voidfraction*ds/scaleDia_*ds/scaleDia_) / (voidfraction*ds/scaleDia_*phi_*ds/scaleDia_*phi_)
+ +
(1.75 * magUr * rho) (1.75 * magUr * rho)
/((ds/scaleDia_)); /((ds/scaleDia_*phi_));
} }
// calc particle's drag // calc particle's drag
@ -237,9 +224,9 @@ void GidaspowDrag::setForce() const
drag = dragCoefficient * Ur; drag = dragCoefficient * Ur;
// explicitInterpCorr // explicitInterpCorr
forceSubM(0).explicitInterpCorr(dragExplicit,dragCoefficient,Ufluid,U_[cellI],Us,UsField_[cellI],verbose_); forceSubM(0).explicitInterpCorr(dragExplicit,dragCoefficient,Ufluid,U_[cellI],Us,UsField_[cellI],forceSubM(0).verbose());
if(verbose_ && index >=0 && index <2) if(forceSubM(0).verbose() && index >=0 && index <2)
{ {
Pout << "cellI = " << cellI << endl; Pout << "cellI = " << cellI << endl;
Pout << "index = " << index << endl; Pout << "index = " << index << endl;

View File

@ -32,7 +32,7 @@ Description
- only valid for low-Reynolds number systems (Re_p<1000) - only valid for low-Reynolds number systems (Re_p<1000)
- including interpolation of the velocity to the exact position - including interpolation of the velocity to the exact position
- splits off explicit drag component due to fluctuation in fluid and particle - splits off explicit drag component due to fluctuation in fluid and particle
velocity velocity (optional via forceSubModel "ImExCorr")
Class Class
GidaspowDrag GidaspowDrag
@ -64,24 +64,16 @@ class GidaspowDrag
private: private:
dictionary propsDict_; dictionary propsDict_;
bool verbose_;
word velFieldName_; word velFieldName_;
const volVectorField& U_; const volVectorField& U_;
word densityFieldName_;
const volScalarField& rho_;
word voidfractionFieldName_; word voidfractionFieldName_;
const volScalarField& voidfraction_; const volScalarField& voidfraction_;
const scalar phi_; const scalar phi_;
bool interpolation_; // use interpolated field values
word UsFieldName_; word UsFieldName_;
const volVectorField& UsField_; // the average particle velocity field const volVectorField& UsField_; // the average particle velocity field

View File

@ -64,16 +64,12 @@ KochHillDrag::KochHillDrag
: :
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
verbose_(false),
velFieldName_(propsDict_.lookup("velFieldName")), velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")), voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")),
voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)), voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)),
UsFieldName_(propsDict_.lookupOrDefault("granVelFieldName",word("Us"))), UsFieldName_(propsDict_.lookupOrDefault("granVelFieldName",word("Us"))),
UsField_(sm.mesh().lookupObject<volVectorField> (UsFieldName_)), UsField_(sm.mesh().lookupObject<volVectorField> (UsFieldName_)),
interpolation_(false),
scaleDia_(1.), scaleDia_(1.),
scaleDrag_(1.) scaleDrag_(1.)
{ {
@ -86,15 +82,16 @@ KochHillDrag::KochHillDrag
particleCloud_.probeM().scalarFields_.append("voidfraction"); //other are debug particleCloud_.probeM().scalarFields_.append("voidfraction"); //other are debug
particleCloud_.probeM().writeHeader(); particleCloud_.probeM().writeHeader();
if (propsDict_.found("verbose")) verbose_=true;
if (propsDict_.found("interpolation")) interpolation_=true;
// init force sub model // init force sub model
setForceSubModels(propsDict_); setForceSubModels(propsDict_);
// define switches which can be read from dict // define switches which can be read from dict
forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch
forceSubM(0).setSwitchesList(2,true); // activate implDEM switch forceSubM(0).setSwitchesList(2,true); // activate implDEM switch
forceSubM(0).setSwitchesList(3,true); // activate search for verbose switch
forceSubM(0).setSwitchesList(4,true); // activate search for interpolate switch
forceSubM(0).setSwitchesList(7,true); // activate implForceDEMacc switch
forceSubM(0).setSwitchesList(8,true); // activate scalarViscosity switch
// read those switches defined above, if provided in dict // read those switches defined above, if provided in dict
forceSubM(0).readSwitches(); forceSubM(0).readSwitches();
@ -125,12 +122,8 @@ void KochHillDrag::setForce() const
Info << "KochHill using scale from liggghts cg = " << scaleDia_ << endl; Info << "KochHill using scale from liggghts cg = " << scaleDia_ << endl;
} }
// get viscosity field const volScalarField& nufField = forceSubM(0).nuField();
#ifdef comp const volScalarField& rhoField = forceSubM(0).rhoField();
const volScalarField nufField = particleCloud_.turbulence().mu()/rho_;
#else
const volScalarField& nufField = particleCloud_.turbulence().nu();
#endif
vector position(0,0,0); vector position(0,0,0);
scalar voidfraction(1); scalar voidfraction(1);
@ -151,6 +144,8 @@ void KochHillDrag::setForce() const
scalar volumefraction(0); scalar volumefraction(0);
scalar betaP(0); scalar betaP(0);
int couplingInterval(particleCloud_.dataExchangeM().couplingInterval());
interpolationCellPoint<scalar> voidfractionInterpolator_(voidfraction_); interpolationCellPoint<scalar> voidfractionInterpolator_(voidfraction_);
interpolationCellPoint<vector> UInterpolator_(U_); interpolationCellPoint<vector> UInterpolator_(U_);
@ -158,8 +153,6 @@ void KochHillDrag::setForce() const
for(int index = 0;index < particleCloud_.numberOfParticles(); index++) for(int index = 0;index < particleCloud_.numberOfParticles(); index++)
{ {
//if(mask[index][0])
//{
cellI = particleCloud_.cellIDs()[index][0]; cellI = particleCloud_.cellIDs()[index][0];
drag = vector(0,0,0); drag = vector(0,0,0);
dragExplicit = vector(0,0,0); dragExplicit = vector(0,0,0);
@ -171,7 +164,7 @@ void KochHillDrag::setForce() const
if (cellI > -1) // particle Found if (cellI > -1) // particle Found
{ {
if(interpolation_) if(forceSubM(0).interpolation())
{ {
position = particleCloud_.position(index); position = particleCloud_.position(index);
voidfraction = voidfractionInterpolator_.interpolate(position,cellI); voidfraction = voidfractionInterpolator_.interpolate(position,cellI);
@ -190,7 +183,7 @@ void KochHillDrag::setForce() const
Ur = Ufluid-Us; Ur = Ufluid-Us;
ds = particleCloud_.d(index); ds = particleCloud_.d(index);
nuf = nufField[cellI]; nuf = nufField[cellI];
rho = rho_[cellI]; rho = rhoField[cellI];
magUr = mag(Ur); magUr = mag(Ur);
Rep = 0; Rep = 0;
Vs = ds*ds*ds*M_PI/6; Vs = ds*ds*ds*M_PI/6;
@ -230,13 +223,20 @@ void KochHillDrag::setForce() const
if (modelType_=="B") if (modelType_=="B")
dragCoefficient /= voidfraction; dragCoefficient /= voidfraction;
drag = dragCoefficient * Ur; if(forceSubM(0).switches()[7]) // implForceDEMaccumulated=true
{
//get drag from the particle itself
for (int j=0 ; j<3 ; j++) drag[j] = particleCloud_.fAccs()[index][j]/couplingInterval;
}else
{
drag = dragCoefficient * Ur;
// explicitInterpCorr // explicitInterpCorr
forceSubM(0).explicitInterpCorr(dragExplicit,dragCoefficient,Ufluid,U_[cellI],Us,UsField_[cellI],verbose_); forceSubM(0).explicitInterpCorr(dragExplicit,dragCoefficient,Ufluid,U_[cellI],Us,UsField_[cellI],forceSubM(0).verbose());
}
} }
if(verbose_ && index >=0 && index <2) if(forceSubM(0).verbose() && index >=0 && index <2)
{ {
Pout << "cellI = " << cellI << endl; Pout << "cellI = " << cellI << endl;
Pout << "index = " << index << endl; Pout << "index = " << index << endl;
@ -267,8 +267,6 @@ void KochHillDrag::setForce() const
// write particle based data to global array // write particle based data to global array
forceSubM(0).partToArray(index,drag,dragExplicit,Ufluid,dragCoefficient); forceSubM(0).partToArray(index,drag,dragExplicit,Ufluid,dragCoefficient);
//}
} }
} }

View File

@ -64,16 +64,10 @@ class KochHillDrag
private: private:
dictionary propsDict_; dictionary propsDict_;
bool verbose_;
word velFieldName_; word velFieldName_;
const volVectorField& U_; const volVectorField& U_;
word densityFieldName_;
const volScalarField& rho_;
word voidfractionFieldName_; word voidfractionFieldName_;
const volScalarField& voidfraction_; const volScalarField& voidfraction_;
@ -82,8 +76,6 @@ private:
const volVectorField& UsField_; const volVectorField& UsField_;
bool interpolation_; // use interpolated field values
mutable scalar scaleDia_; mutable scalar scaleDia_;
mutable scalar scaleDrag_; mutable scalar scaleDrag_;

View File

@ -67,8 +67,6 @@ KochHillRWDrag::KochHillRWDrag
verbose_(false), verbose_(false),
velFieldName_(propsDict_.lookup("velFieldName")), velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")), voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")),
voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)), voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)),
UsFieldName_(propsDict_.lookupOrDefault("granVelFieldName",word("Us"))), UsFieldName_(propsDict_.lookupOrDefault("granVelFieldName",word("Us"))),
@ -152,16 +150,9 @@ void KochHillRWDrag::setForce() const
Info << "KochHillRW using scale from liggghts cg = " << scale_ << endl; Info << "KochHillRW using scale from liggghts cg = " << scale_ << endl;
} }
// get viscosity field const volScalarField& nufField = forceSubM(0).nuField();
#ifdef comp const volScalarField& mufField = forceSubM(0).muField();
const volScalarField nufField = particleCloud_.turbulence().mu()/rho_; const volScalarField& rhoField = forceSubM(0).rhoField();
const volScalarField& muField = particleCloud_.turbulence().mu();
#else
const volScalarField& nufField = particleCloud_.turbulence().nu();
const volScalarField muField = particleCloud_.turbulence().nu()*rho_;
#endif
vector position(0,0,0); vector position(0,0,0);
scalar voidfraction(1); scalar voidfraction(1);
@ -263,7 +254,7 @@ void KochHillRWDrag::setForce() const
if(t>=partTime_[index][0]) if(t>=partTime_[index][0])
{ {
scalar ds = 2*particleCloud_.radius(index); scalar ds = 2*particleCloud_.radius(index);
mu = muField[cellI]; mu = mufField[cellI];
k = kField[cellI]; k = kField[cellI];
epsilon = epsilonField[cellI]; epsilon = epsilonField[cellI];
@ -323,7 +314,7 @@ void KochHillRWDrag::setForce() const
ds = 2*particleCloud_.radius(index); ds = 2*particleCloud_.radius(index);
nuf = nufField[cellI]; nuf = nufField[cellI];
rho = rho_[cellI]; rho = rhoField[cellI];
Rep = 0; Rep = 0;
Vs = ds*ds*ds*M_PI/6; Vs = ds*ds*ds*M_PI/6;
volumefraction = 1-voidfraction+SMALL; volumefraction = 1-voidfraction+SMALL;

View File

@ -71,10 +71,6 @@ private:
const volVectorField& U_; const volVectorField& U_;
word densityFieldName_;
const volScalarField& rho_;
word voidfractionFieldName_; word voidfractionFieldName_;
const volScalarField& voidfraction_; const volScalarField& voidfraction_;

View File

@ -63,7 +63,6 @@ LaEuScalarTemp::LaEuScalarTemp
: :
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
verbose_(false),
tempFieldName_(propsDict_.lookup("tempFieldName")), tempFieldName_(propsDict_.lookup("tempFieldName")),
tempField_(sm.mesh().lookupObject<volScalarField> (tempFieldName_)), tempField_(sm.mesh().lookupObject<volScalarField> (tempFieldName_)),
voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")), voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")),
@ -76,10 +75,7 @@ LaEuScalarTemp::LaEuScalarTemp
partHeatFluxName_(propsDict_.lookup("partHeatFluxName")), partHeatFluxName_(propsDict_.lookup("partHeatFluxName")),
partHeatFlux_(NULL), partHeatFlux_(NULL),
lambda_(readScalar(propsDict_.lookup("lambda"))), lambda_(readScalar(propsDict_.lookup("lambda"))),
Cp_(readScalar(propsDict_.lookup("Cp"))), Cp_(readScalar(propsDict_.lookup("Cp")))
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
interpolation_(false)
{ {
allocateMyArrays(); allocateMyArrays();
@ -88,10 +84,18 @@ LaEuScalarTemp::LaEuScalarTemp
maxSource_=readScalar(propsDict_.lookup ("maxSource")); maxSource_=readScalar(propsDict_.lookup ("maxSource"));
Info << "limiting eulerian source field to: " << maxSource_ << endl; Info << "limiting eulerian source field to: " << maxSource_ << endl;
} }
if (propsDict_.found("interpolation")) interpolation_=true;
if (propsDict_.found("verbose")) verbose_=true;
Info << "verbose_" << verbose_ << endl; // init force sub model
setForceSubModels(propsDict_);
// define switches which can be read from dict
forceSubM(0).setSwitchesList(3,true); // activate search for verbose switch
forceSubM(0).setSwitchesList(4,true); // activate search for interpolate switch
forceSubM(0).setSwitchesList(8,true); // activate scalarViscosity switch
// read those switches defined above, if provided in dict
forceSubM(0).readSwitches();
particleCloud_.checkCG(false); particleCloud_.checkCG(false);
} }
@ -131,12 +135,10 @@ void LaEuScalarTemp::manipulateScalarField(volScalarField& EuField) const
// get DEM data // get DEM data
particleCloud_.dataExchangeM().getData(partTempName_,"scalar-atom",partTemp_); particleCloud_.dataExchangeM().getData(partTempName_,"scalar-atom",partTemp_);
// get viscosity field const volScalarField& nufField = forceSubM(0).nuField();
#ifdef comp const volScalarField& rhoField = forceSubM(0).rhoField();
const volScalarField& nufField = particleCloud_.turbulence().mu() / rho_;
#else Info << "nufField=" << nufField << endl;
const volScalarField& nufField = particleCloud_.turbulence().nu();
#endif
// calc La based heat flux // calc La based heat flux
vector position(0,0,0); vector position(0,0,0);
@ -165,7 +167,7 @@ void LaEuScalarTemp::manipulateScalarField(volScalarField& EuField) const
cellI = particleCloud_.cellIDs()[index][0]; cellI = particleCloud_.cellIDs()[index][0];
if(cellI >= 0) if(cellI >= 0)
{ {
if(interpolation_) if(forceSubM(0).interpolation())
{ {
position = particleCloud_.position(index); position = particleCloud_.position(index);
voidfraction = voidfractionInterpolator_.interpolate(position,cellI); voidfraction = voidfractionInterpolator_.interpolate(position,cellI);
@ -185,7 +187,7 @@ void LaEuScalarTemp::manipulateScalarField(volScalarField& EuField) const
As = ds*ds*M_PI; As = ds*ds*M_PI;
nuf = nufField[cellI]; nuf = nufField[cellI];
Rep = ds*magUr/nuf; Rep = ds*magUr/nuf;
Pr = Cp_*nuf*rho_[cellI]/lambda_; Pr = Cp_*nuf*rhoField[cellI]/lambda_;
if (Rep < 200) if (Rep < 200)
{ {
@ -207,7 +209,7 @@ void LaEuScalarTemp::manipulateScalarField(volScalarField& EuField) const
partHeatFlux_[index][0] = partHeatFlux; partHeatFlux_[index][0] = partHeatFlux;
if(verbose_ && index >=0 && index <2) if(forceSubM(0).verbose() && index >=0 && index <2)
{ {
Info << "partHeatFlux = " << partHeatFlux << endl; Info << "partHeatFlux = " << partHeatFlux << endl;
Info << "magUr = " << magUr << endl; Info << "magUr = " << magUr << endl;
@ -233,7 +235,7 @@ void LaEuScalarTemp::manipulateScalarField(volScalarField& EuField) const
); );
// scale with -1/(Vcell*rho*Cp) // scale with -1/(Vcell*rho*Cp)
EuField.internalField() /= -rho_.internalField()*Cp_*EuField.mesh().V(); EuField.internalField() /= -rhoField.internalField()*Cp_*EuField.mesh().V();
// limit source term // limit source term
scalar EuFieldInCell; scalar EuFieldInCell;
@ -247,7 +249,7 @@ void LaEuScalarTemp::manipulateScalarField(volScalarField& EuField) const
} }
} }
Info << "total convective particle-fluid heat flux [W] (Eulerian) = " << gSum(EuField*rho_*Cp_*EuField.mesh().V()) << endl; Info << "total convective particle-fluid heat flux [W] (Eulerian) = " << gSum(EuField*rhoField*Cp_*EuField.mesh().V()) << endl;
// give DEM data // give DEM data
particleCloud_.dataExchangeM().giveData(partHeatFluxName_,"scalar-atom", partHeatFlux_); particleCloud_.dataExchangeM().giveData(partHeatFluxName_,"scalar-atom", partHeatFlux_);

View File

@ -65,8 +65,6 @@ private:
dictionary propsDict_; dictionary propsDict_;
bool verbose_;
word tempFieldName_; word tempFieldName_;
const volScalarField& tempField_; // ref to temperature field const volScalarField& tempField_; // ref to temperature field
@ -93,12 +91,6 @@ private:
scalar Cp_; // specific heat capacity [W*s/(kg*K)] scalar Cp_; // specific heat capacity [W*s/(kg*K)]
word densityFieldName_;
const volScalarField& rho_; // ref to fluid density field
bool interpolation_; // use interpolated field values
void allocateMyArrays() const; void allocateMyArrays() const;
public: public:

View File

@ -66,30 +66,20 @@ MeiLift::MeiLift
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
velFieldName_(propsDict_.lookup("velFieldName")), velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")), useSecondOrderTerms_(false)
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
useSecondOrderTerms_(false),
interpolation_(false),
verbose_(false)
/*,
vorticityFieldName_(propsDict_.lookup("vorticityFieldName")),
vorticity_(sm.mesh().lookupObject<volVectorField> (vorticityFieldName_))*/
{ {
if (propsDict_.found("useSecondOrderTerms")) useSecondOrderTerms_=true; if (propsDict_.found("useSecondOrderTerms")) useSecondOrderTerms_=true;
// init force sub model // init force sub model
setForceSubModels(propsDict_); setForceSubModels(propsDict_);
// define switches which can be read from dict // define switches which can be read from dict
forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch
forceSubM(0).setSwitchesList(3,true); // activate search for verbose switch
// read those switches defined above, if provided in dict forceSubM(0).setSwitchesList(4,true); // activate search for interpolate switch
forceSubM(0).setSwitchesList(8,true); // activate scalarViscosity switch
forceSubM(0).readSwitches(); forceSubM(0).readSwitches();
if (propsDict_.found("interpolation")) interpolation_=true; particleCloud_.checkCG(false);
if (propsDict_.found("verbose")) verbose_=true;
particleCloud_.checkCG(false);
//Append the field names to be probed //Append the field names to be probed
particleCloud_.probeM().initialize(typeName, "meiLift.logDat"); particleCloud_.probeM().initialize(typeName, "meiLift.logDat");
@ -114,12 +104,8 @@ MeiLift::~MeiLift()
void MeiLift::setForce() const void MeiLift::setForce() const
{ {
// get viscosity field const volScalarField& nufField = forceSubM(0).nuField();
#ifdef comp const volScalarField& rhoField = forceSubM(0).rhoField();
const volScalarField nufField = particleCloud_.turbulence().mu() / rho_;
#else
const volScalarField& nufField = particleCloud_.turbulence().nu();
#endif
vector position(0,0,0); vector position(0,0,0);
vector lift(0,0,0); vector lift(0,0,0);
@ -159,7 +145,7 @@ void MeiLift::setForce() const
{ {
Us = particleCloud_.velocity(index); Us = particleCloud_.velocity(index);
if(interpolation_) if( forceSubM(0).interpolation() )
{ {
position = particleCloud_.position(index); position = particleCloud_.position(index);
Ur = UInterpolator_.interpolate(position,cellI) Ur = UInterpolator_.interpolate(position,cellI)
@ -180,7 +166,7 @@ void MeiLift::setForce() const
{ {
ds = 2*particleCloud_.radius(index); ds = 2*particleCloud_.radius(index);
nuf = nufField[cellI]; nuf = nufField[cellI];
rho = rho_[cellI]; rho = rhoField[cellI];
// calc dimensionless properties // calc dimensionless properties
Rep = ds*magUr/nuf; Rep = ds*magUr/nuf;
@ -236,7 +222,7 @@ void MeiLift::setForce() const
//********************************** //**********************************
//SAMPLING AND VERBOSE OUTOUT //SAMPLING AND VERBOSE OUTOUT
if(verbose_ ) if( forceSubM(0).verbose() )
{ {
Pout << "index = " << index << endl; Pout << "index = " << index << endl;
Pout << "Us = " << Us << endl; Pout << "Us = " << Us << endl;

View File

@ -80,20 +80,8 @@ private:
const volVectorField& U_; const volVectorField& U_;
word densityFieldName_;
const volScalarField& rho_;
bool useSecondOrderTerms_; bool useSecondOrderTerms_;
bool interpolation_;
bool verbose_;
/*word vorticityFieldName_;
volVectorField& vorticity_;*/
public: public:
//- Runtime type information //- Runtime type information

View File

@ -66,9 +66,7 @@ SchillerNaumannDrag::SchillerNaumannDrag
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
verbose_(false), verbose_(false),
velFieldName_(propsDict_.lookup("velFieldName")), velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velFieldName_))
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_))
{ {
//Append the field names to be probed //Append the field names to be probed
particleCloud_.probeM().initialize(typeName, "schillerNaumannDrag.logDat"); particleCloud_.probeM().initialize(typeName, "schillerNaumannDrag.logDat");
@ -103,15 +101,11 @@ SchillerNaumannDrag::~SchillerNaumannDrag()
void SchillerNaumannDrag::setForce() const void SchillerNaumannDrag::setForce() const
{ {
// get viscosity field
#ifdef comp
const volScalarField nufField = particleCloud_.turbulence().mu() / rho_;
#else
const volScalarField& nufField = particleCloud_.turbulence().nu();
#endif
#include "setupProbeModel.H" #include "setupProbeModel.H"
const volScalarField& nufField = forceSubM(0).nuField();
const volScalarField& rhoField = forceSubM(0).rhoField();
for(int index = 0;index < particleCloud_.numberOfParticles(); index++) for(int index = 0;index < particleCloud_.numberOfParticles(); index++)
{ {
//if(mask[index][0]) //if(mask[index][0])
@ -126,7 +120,7 @@ void SchillerNaumannDrag::setForce() const
vector Ur = U_[cellI]-Us; vector Ur = U_[cellI]-Us;
scalar ds = 2*particleCloud_.radius(index); scalar ds = 2*particleCloud_.radius(index);
scalar nuf = nufField[cellI]; scalar nuf = nufField[cellI];
scalar rho = rho_[cellI]; scalar rho = rhoField[cellI];
scalar voidfraction = particleCloud_.voidfraction(index); scalar voidfraction = particleCloud_.voidfraction(index);
scalar magUr = mag(Ur); scalar magUr = mag(Ur);
scalar Rep = 0; scalar Rep = 0;

View File

@ -66,10 +66,6 @@ private:
const volVectorField& U_; const volVectorField& U_;
word densityFieldName_;
const volScalarField& rho_;
public: public:
//- Runtime type information //- Runtime type information

View File

@ -68,8 +68,6 @@ ShirgaonkarIB::ShirgaonkarIB
depth_(1), depth_(1),
velFieldName_(propsDict_.lookup("velFieldName")), velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
pressureFieldName_(propsDict_.lookup("pressureFieldName")), pressureFieldName_(propsDict_.lookup("pressureFieldName")),
p_(sm.mesh().lookupObject<volScalarField> (pressureFieldName_)) p_(sm.mesh().lookupObject<volScalarField> (pressureFieldName_))
{ {
@ -115,13 +113,12 @@ void ShirgaonkarIB::setForce() const
vector drag; vector drag;
#ifdef comp #ifdef comp
// get viscosity field const volScalarField& mufField = forceSubM(0).muField();
const volScalarField& mufField = particleCloud_.turbulence().mu();
volVectorField h = (mufField*fvc::laplacian(U_)-fvc::grad(p_)); volVectorField h = (mufField*fvc::laplacian(U_)-fvc::grad(p_));
#else #else
// get viscosity field const volScalarField& nufField = forceSubM(0).nuField();
const volScalarField& nufField = particleCloud_.turbulence().nu(); const volScalarField& rhoField = forceSubM(0).rhoField();
volVectorField h = rho_*(nufField*fvc::laplacian(U_)-fvc::grad(p_)); volVectorField h = rhoField*(nufField*fvc::laplacian(U_)-fvc::grad(p_));
#endif #endif
#include "setupProbeModel.H" #include "setupProbeModel.H"

View File

@ -70,10 +70,6 @@ private:
const volVectorField& U_; const volVectorField& U_;
word densityFieldName_;
const volScalarField& rho_;
word pressureFieldName_; word pressureFieldName_;
const volScalarField& p_; const volScalarField& p_;

View File

@ -64,8 +64,6 @@ checkCouplingInterval::checkCouplingInterval
: :
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
rhoP_(readScalar(propsDict_.lookup("rhoP"))) rhoP_(readScalar(propsDict_.lookup("rhoP")))
{} {}
@ -82,12 +80,9 @@ void checkCouplingInterval::setForce() const
{ {
if(particleCloud_.mesh().time().write()) if(particleCloud_.mesh().time().write())
{ {
// get viscosity field
#ifdef comp const volScalarField& nufField = forceSubM(0).nuField();
const volScalarField nufField = particleCloud_.turbulence().mu() / rho_; const volScalarField& rhoField = forceSubM(0).rhoField();
#else
const volScalarField& nufField = particleCloud_.turbulence().nu();
#endif
// find min particle relaxation time // find min particle relaxation time
scalar minTauP = 1000; scalar minTauP = 1000;
@ -101,7 +96,7 @@ void checkCouplingInterval::setForce() const
{ {
scaledRad = particleCloud_.radius(index)/particleCloud_.cg(); scaledRad = particleCloud_.radius(index)/particleCloud_.cg();
tauP = rhoP_*4*scaledRad*scaledRad/ tauP = rhoP_*4*scaledRad*scaledRad/
(18 * nufField[cellI] * rho_[cellI]); (18 * nufField[cellI] * rhoField[cellI]);
minTauP = min(minTauP,tauP); minTauP = min(minTauP,tauP);
} }
} }

View File

@ -62,10 +62,6 @@ class checkCouplingInterval
private: private:
dictionary propsDict_; dictionary propsDict_;
word densityFieldName_;
const volScalarField& rho_;
const scalar rhoP_; const scalar rhoP_;
public: public:

View File

@ -59,15 +59,39 @@ forceSubModel::forceSubModel
dict_(dict), dict_(dict),
particleCloud_(sm), particleCloud_(sm),
forceModel_(fm), forceModel_(fm),
nrDefaultSwitches_(3), nrDefaultSwitches_(9), // !!!
switchesNameList_(wordList(nrDefaultSwitches_)), switchesNameList_(wordList(nrDefaultSwitches_)),
switchesList_(List<Switch>(nrDefaultSwitches_)), switchesList_(List<Switch>(nrDefaultSwitches_)),
switches_(List<Switch>(nrDefaultSwitches_)) switches_(List<Switch>(nrDefaultSwitches_)),
nu_
(
IOobject
(
"scalarViscosity",
sm.mesh().time().timeName(),
sm.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
sm.mesh(),
dimensionedScalar("nu0", dimensionSet(0, 2, -1, 0, 0), 1.)
),
nuField_(sm.turbulence().nu()),
densityFieldName_(dict_.lookupOrDefault<word>("densityFieldName","rho")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_))
{ {
// init switches lists // init standard switch list
switchesNameList_[0]="treatExplicit"; int iCounter(0);
switchesNameList_[1]="treatDEM"; switchesNameList_[iCounter]="treatForceExplicit"; iCounter++; //0
switchesNameList_[2]="implDEM"; switchesNameList_[iCounter]="treatForceDEM";iCounter++; //1
switchesNameList_[iCounter]="implForceDEM";iCounter++; //2
switchesNameList_[iCounter]="verbose";iCounter++; //3
switchesNameList_[iCounter]="interpolation";iCounter++; //4
switchesNameList_[iCounter]="useFilteredDragModel";iCounter++; //5
switchesNameList_[iCounter]="useParcelSizeDependentFilteredDrag";iCounter++; //6
switchesNameList_[iCounter]="implForceDEMaccumulated";iCounter++; //7
switchesNameList_[iCounter]="scalarViscosity";iCounter++; //8
for(int i=0;i<switchesList_.size();i++) for(int i=0;i<switchesList_.size();i++)
{ {
switchesList_[i]=false; switchesList_[i]=false;
@ -114,7 +138,7 @@ void forceSubModel::partToArray
} }
// forces for DEM // forces for DEM
if(switches_[2]) // implDEM if(switches_[2]) // implForceDEM
{ {
for(int j=0;j<3;j++) for(int j=0;j<3;j++)
myForceM().fluidVel()[index][j]=Ufluid[j]; myForceM().fluidVel()[index][j]=Ufluid[j];
@ -128,6 +152,8 @@ void forceSubModel::partToArray
} }
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void forceSubModel::explicitInterpCorr void forceSubModel::explicitInterpCorr
( (
vector& dragExplicit, vector& dragExplicit,
@ -147,10 +173,10 @@ void forceSubModel::explicitInterpCorr
void forceSubModel::readSwitches() const void forceSubModel::readSwitches() const
{ {
Info << "\nforceSubModel:" << myType() << endl; Info << "\nreading switches for forceSubModel:" << myType() << endl;
forAll(switchesNameList_,i) forAll(switchesNameList_,i)
{ {
if(switchesList_[i] > 0+SMALL) if(switchesList_[i] > 0+SMALL) //check if switch is required
{ {
Info << " looking for " << switchesNameList_[i] << " ..." << endl; Info << " looking for " << switchesNameList_[i] << " ..." << endl;
if (dict_.found(switchesNameList_[i])) if (dict_.found(switchesNameList_[i]))
@ -161,20 +187,91 @@ void forceSubModel::readSwitches() const
} }
Info << endl; Info << endl;
if(switches_[2]) // implDEM=true if(switches_[2]) // implForceDEM=true
{ {
// communicate implDEM to particleCloud // communicate implForceDEM to particleCloud
particleCloud_.impDEMdrag_=true; particleCloud_.impDEMdrag_=true;
// do sanity check // do sanity check
if(switches_[0]) // treatExplicit=true if(switches_[0]) // treatExplicit=true
{ {
Warning<< "please check your settings, treatExplicit together with implDEM does not work! (using treatExplicit=false)" << endl; FatalError << "Please check your settings, treatExplicit together with implForceDEM does not work!."
switches_[0]=false; << abort(FatalError);
} }
} }
if(switches_[7]) // implForceDEMaccumulated=true
{
// sanity check for implForceDEMaccumulated
if(!switches_[2]) //implForceDEM=false
{
Warning<< "please check your settings, implForceDEMaccumulated without implForceDEM does not work! (using implForceDEMaccumulated=false)" << endl;
switches_[3]=false;
}else
{
particleCloud_.impDEMdragAcc_=true;
}
}
if(switches_[8]) // scalarViscosity=true
{
Info << "Using a constant viscosity for this force model." << endl;
dimensionedScalar nu0_("nu", dimensionSet(0, 2, -1, 0, 0), dict_.lookup("nu"));
nu_=volScalarField
(
IOobject
(
"scalarViscosity",
particleCloud_.mesh().time().timeName(),
particleCloud_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
particleCloud_.mesh(),
nu0_
);
}
// look for old nomenclature
if (dict_.found("treatExplicit") || dict_.found("treatDEM") || dict_.found("implDEM"))
FatalError<< "You are using an old nomenclature for force model settings, please have a look at the forceSubModel doc." << abort(FatalError);
// look for old nomenclature
if (dict_.found("verbose"))
Warning<< "Please make sure you use the new nomenclature for verbose force model settings, please have a look at the forceSubModel doc." << endl;
//if (dict_.found("interpolation"))
// FatalError<< "Please make sure you use the new nomenclature for interpolation in force model settings, please have a look at the forceSubModel doc." << endl;
} }
const volScalarField& forceSubModel::nuField() const
{
#ifdef comp
return particleCloud_.turbulence().mu() / rho_;
#else
if(switches_[8]) // scalarViscosity=true
return nu_;
else
return particleCloud_.turbulence().nu();
#endif
}
const volScalarField& forceSubModel::muField() const
{
#ifdef comp
return particleCloud_.turbulence().mu();
#else
if(switches_[8]) // scalarViscosity=true
return nu_*rho_;
else
return particleCloud_.turbulence().nu()*rho_;
#endif
}
const volScalarField& forceSubModel::rhoField() const
{
return rho_;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam } // End namespace Foam

View File

@ -71,6 +71,13 @@ protected:
mutable List<Switch> switches_; mutable List<Switch> switches_;
mutable volScalarField nu_;
const volScalarField& nuField_;
word densityFieldName_;
const volScalarField& rho_;
public: public:
@ -127,6 +134,14 @@ public:
// Access // Access
inline bool verbose() const { return switches_[3]; };
inline bool interpolation() const { return switches_[4]; };
inline bool useFilteredDragModel() const { return switches_[5]; };
inline bool useParcelSizeDependentFilteredDrag() const { return switches_[6]; };
virtual word myType() const=0; virtual word myType() const=0;
inline forceModel& myForceM() const { return forceModel_;}; inline forceModel& myForceM() const { return forceModel_;};
@ -142,6 +157,12 @@ public:
virtual void readSwitches() const; virtual void readSwitches() const;
const label& nrDefaultSwitches() const {return nrDefaultSwitches_;}; const label& nrDefaultSwitches() const {return nrDefaultSwitches_;};
const volScalarField& nuField() const;
const volScalarField& muField() const;
const volScalarField& rhoField() const;
}; };

View File

@ -62,25 +62,21 @@ gradPForce::gradPForce
: :
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
verbose_(false),
pFieldName_(propsDict_.lookup("pFieldName")), pFieldName_(propsDict_.lookup("pFieldName")),
p_(sm.mesh().lookupObject<volScalarField> (pFieldName_)), p_(sm.mesh().lookupObject<volScalarField> (pFieldName_)),
velocityFieldName_(propsDict_.lookup("velocityFieldName")), velocityFieldName_(propsDict_.lookup("velocityFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velocityFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velocityFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
useRho_(false), useRho_(false),
useU_(false), useU_(false),
addedMassCoeff_(0.0), addedMassCoeff_(0.0)
interpolation_(false)
{ {
if (propsDict_.found("verbose")) verbose_=true;
// init force sub model // init force sub model
setForceSubModels(propsDict_); setForceSubModels(propsDict_);
// define switches which can be read from dict // define switches which can be read from dict
forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch
forceSubM(0).setSwitchesList(1,true); // activate treatForceDEM switch
forceSubM(0).setSwitchesList(4,true); // activate search for interpolate switch
// read those switches defined above, if provided in dict // read those switches defined above, if provided in dict
forceSubM(0).readSwitches(); forceSubM(0).readSwitches();
@ -88,10 +84,20 @@ gradPForce::gradPForce
if (modelType_ == "B") if (modelType_ == "B")
{ {
FatalError <<"using model gradPForce with model type B is not valid\n" << abort(FatalError); FatalError <<"using model gradPForce with model type B is not valid\n" << abort(FatalError);
}else }else if (modelType_ == "Bfull")
{ {
forceSubM(0).setSwitches(1,true); // treatDEM = true if(forceSubM(0).switches()[1])
Info << "gradPForce is applied only to DEM side" << endl; {
Info << "Using treatForceDEM false!" << endl;
forceSubM(0).setSwitches(1,false); // treatForceDEM = false
}
}else // modelType_=="A"
{
if(!forceSubM(0).switches()[1])
{
Info << "Using treatForceDEM true!" << endl;
forceSubM(0).setSwitches(1,true); // treatForceDEM = true
}
} }
if (propsDict_.found("useU")) useU_=true; if (propsDict_.found("useU")) useU_=true;
@ -101,11 +107,6 @@ gradPForce::gradPForce
Info << "gradP will also include added mass with coefficient: " << addedMassCoeff_ << endl; Info << "gradP will also include added mass with coefficient: " << addedMassCoeff_ << endl;
Info << "WARNING: use fix nve/sphere/addedMass in LIGGGHTS input script to correctly account for added mass effects!" << endl; Info << "WARNING: use fix nve/sphere/addedMass in LIGGGHTS input script to correctly account for added mass effects!" << endl;
} }
if (propsDict_.found("interpolation"))
{
Info << "using interpolated value of pressure gradient." << endl;
interpolation_=true;
}
if(p_.dimensions()==dimensionSet(0,2,-2,0,0)) if(p_.dimensions()==dimensionSet(0,2,-2,0,0))
useRho_ = true; useRho_ = true;
@ -138,7 +139,7 @@ void gradPForce::setForce() const
if (useRho_) if (useRho_)
gradPField = fvc::grad(0.5*U2); gradPField = fvc::grad(0.5*U2);
else else
gradPField = fvc::grad(0.5*rho_*U2); gradPField = fvc::grad(0.5*forceSubM(0).rhoField()*U2);
}*/ }*/
vector gradP; vector gradP;
scalar Vs; scalar Vs;
@ -162,7 +163,7 @@ void gradPForce::setForce() const
{ {
position = particleCloud_.position(index); position = particleCloud_.position(index);
if(interpolation_) // use intepolated values for alpha (normally off!!!) if(forceSubM(0).interpolation()) // use intepolated values for alpha (normally off!!!)
{ {
gradP = gradPInterpolator_.interpolate(position,cellI); gradP = gradPInterpolator_.interpolate(position,cellI);
}else }else
@ -171,7 +172,7 @@ void gradPForce::setForce() const
} }
Vs = particleCloud_.particleVolume(index); Vs = particleCloud_.particleVolume(index);
rho = rho_[cellI]; rho = forceSubM(0).rhoField()[cellI];
// calc particle's pressure gradient force // calc particle's pressure gradient force
if (useRho_) if (useRho_)
@ -179,7 +180,7 @@ void gradPForce::setForce() const
else else
force = -Vs*gradP*(1.0+addedMassCoeff_); force = -Vs*gradP*(1.0+addedMassCoeff_);
if(verbose_ && index >=0 && index <2) if(forceSubM(0).verbose() && index >=0 && index <2)
{ {
Info << "index = " << index << endl; Info << "index = " << index << endl;
Info << "gradP = " << gradP << endl; Info << "gradP = " << gradP << endl;

View File

@ -63,8 +63,6 @@ class gradPForce
private: private:
dictionary propsDict_; dictionary propsDict_;
bool verbose_;
word pFieldName_; word pFieldName_;
const volScalarField& p_; const volScalarField& p_;
@ -73,18 +71,12 @@ private:
const volVectorField& U_; const volVectorField& U_;
word densityFieldName_;
const volScalarField& rho_;
bool useRho_; bool useRho_;
bool useU_; // if false: substitution p=0.5*rho*U^2 bool useU_; // if false: substitution p=0.5*rho*U^2
mutable double addedMassCoeff_; //added mass coefficient mutable double addedMassCoeff_; //added mass coefficient
bool interpolation_; // use interpolated field values
public: public:
//- Runtime type information //- Runtime type information

View File

@ -40,6 +40,8 @@ Description
namespace Foam namespace Foam
{ {
#define NOTONCPU 9999
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(virtualMassForce, 0); defineTypeNameAndDebug(virtualMassForce, 0);
@ -63,30 +65,42 @@ virtualMassForce::virtualMassForce
: :
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
verbose_(false),
velFieldName_(propsDict_.lookup("velFieldName")), velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")), phiFieldName_(propsDict_.lookup("phiFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)), phi_(sm.mesh().lookupObject<surfaceScalarField> (phiFieldName_)),
UrelOld_(NULL) UrelOld_(NULL),
splitUrelCalculation_(false),
Cadd_(0.5)
{ {
if (propsDict_.found("verbose")) verbose_=true;
if (particleCloud_.dataExchangeM().maxNumberOfParticles() > 0) if (particleCloud_.dataExchangeM().maxNumberOfParticles() > 0)
{ {
// get memory for 2d array // get memory for 2d array
particleCloud_.dataExchangeM().allocateArray(UrelOld_,0.,3); particleCloud_.dataExchangeM().allocateArray(UrelOld_,NOTONCPU,3);
} }
// init force sub model // init force sub model
setForceSubModels(propsDict_); setForceSubModels(propsDict_);
// define switches which can be read from dict // define switches which can be read from dict
forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch
forceSubM(0).setSwitchesList(4,true); // activate search for interpolate switch
// read those switches defined above, if provided in dict
forceSubM(0).readSwitches(); forceSubM(0).readSwitches();
//Extra switches/settings
if(propsDict_.found("splitUrelCalculation"))
{
splitUrelCalculation_ = readBool(propsDict_.lookup("splitUrelCalculation"));
if(splitUrelCalculation_)
Info << "Virtual mass model: will split the Urel calculation\n";
Info << "WARNING: be sure that LIGGGHTS integration takes ddtv_p implicitly into account! \n";
}
if(propsDict_.found("Cadd"))
{
Cadd_ = readScalar(propsDict_.lookup("Cadd"));
Info << "Virtual mass model: using non-standard Cadd = " << Cadd_ << endl;
}
particleCloud_.checkCG(true); particleCloud_.checkCG(true);
//Append the field names to be probed //Append the field names to be probed
@ -94,6 +108,7 @@ virtualMassForce::virtualMassForce
particleCloud_.probeM().vectorFields_.append("virtualMassForce"); //first entry must the be the force particleCloud_.probeM().vectorFields_.append("virtualMassForce"); //first entry must the be the force
particleCloud_.probeM().vectorFields_.append("Urel"); particleCloud_.probeM().vectorFields_.append("Urel");
particleCloud_.probeM().vectorFields_.append("UrelOld"); particleCloud_.probeM().vectorFields_.append("UrelOld");
particleCloud_.probeM().vectorFields_.append("ddtUrel");
particleCloud_.probeM().scalarFields_.append("Vs"); particleCloud_.probeM().scalarFields_.append("Vs");
particleCloud_.probeM().scalarFields_.append("rho"); particleCloud_.probeM().scalarFields_.append("rho");
particleCloud_.probeM().writeHeader(); particleCloud_.probeM().writeHeader();
@ -116,32 +131,88 @@ void virtualMassForce::setForce() const
scalar dt = U_.mesh().time().deltaT().value(); scalar dt = U_.mesh().time().deltaT().value();
vector position(0,0,0);
vector Ufluid(0,0,0);
vector Ur(0,0,0);
vector DDtU(0,0,0);
//Compute extra vfields in case it is needed
volVectorField DDtU_(0.0*U_/U_.mesh().time().deltaT());
if(splitUrelCalculation_)
DDtU_ = fvc::ddt(U_) + fvc::div(phi_, U_); //Total Derivative of fluid velocity
interpolationCellPoint<vector> UInterpolator_( U_);
interpolationCellPoint<vector> DDtUInterpolator_(DDtU_);
#include "setupProbeModel.H" #include "setupProbeModel.H"
bool haveUrelOld_(false);
for(int index = 0;index < particleCloud_.numberOfParticles(); index++) for(int index = 0;index < particleCloud_.numberOfParticles(); index++)
{ {
//if(mask[index][0])
//{
vector virtualMassForce(0,0,0); vector virtualMassForce(0,0,0);
label cellI = particleCloud_.cellIDs()[index][0]; label cellI = particleCloud_.cellIDs()[index][0];
if (cellI > -1) // particle Found if (cellI > -1) // particle Found
{ {
vector Us = particleCloud_.velocity(index);
vector Ur = U_[cellI]-Us; if(forceSubM(0).interpolation())
vector UrelOld;
for(int j=0;j<3;j++)
{ {
UrelOld[j] = UrelOld_[index][j]; position = particleCloud_.position(index);
UrelOld_[index][j] = Ur[j]; Ufluid = UInterpolator_.interpolate(position,cellI);
}
else
{
Ufluid = U_[cellI];
}
if(splitUrelCalculation_) //if split, just use total derivative of fluid velocity
if(forceSubM(0).interpolation())
{
DDtU = DDtUInterpolator_.interpolate(position,cellI);
}
else
{
DDtU = DDtU_[cellI];
}
else
{
vector Us = particleCloud_.velocity(index);
Ur = Ufluid - Us;
} }
vector ddtUrel = (Ur-UrelOld)/dt;
//Check of particle was on this CPU the last step
if(UrelOld_[index][0]==NOTONCPU) //use 1. element to indicate that particle was on this CPU the last time step
haveUrelOld_ = false;
else
haveUrelOld_ = true;
vector UrelOld(0.,0.,0.);
vector ddtUrel(0.,0.,0.);
for(int j=0;j<3;j++)
{
UrelOld[j] = UrelOld_[index][j];
UrelOld_[index][j] = Ur[j];
}
if(haveUrelOld_ ) //only compute force if we have old (relative) velocity
ddtUrel = (Ur-UrelOld)/dt;
if(splitUrelCalculation_) //we can always compute the total derivative in case we split
ddtUrel = DDtU;
scalar ds = 2*particleCloud_.radius(index); scalar ds = 2*particleCloud_.radius(index);
scalar Vs = ds*ds*ds*M_PI/6; scalar Vs = ds*ds*ds*M_PI/6;
scalar rho = rho_[cellI]; scalar rho = forceSubM(0).rhoField()[cellI];
virtualMassForce = 0.5 * rho * Vs * ddtUrel; virtualMassForce = Cadd_ * rho * Vs * ddtUrel;
if( forceSubM(0).verbose() ) //&& index>100 && index < 105)
{
Pout << "index / cellI = " << index << tab << cellI << endl;
Pout << "position = " << particleCloud_.position(index) << endl;
}
//Set value fields and write the probe //Set value fields and write the probe
if(probeIt_) if(probeIt_)
@ -150,25 +221,27 @@ void virtualMassForce::setForce() const
vValues.append(virtualMassForce); //first entry must the be the force vValues.append(virtualMassForce); //first entry must the be the force
vValues.append(Ur); vValues.append(Ur);
vValues.append(UrelOld); vValues.append(UrelOld);
vValues.append(ddtUrel);
sValues.append(Vs); sValues.append(Vs);
sValues.append(rho); sValues.append(rho);
particleCloud_.probeM().writeProbe(index, sValues, vValues); particleCloud_.probeM().writeProbe(index, sValues, vValues);
} }
} }
else //particle not on this CPU
UrelOld_[index][0]=NOTONCPU;
// write particle based data to global array // write particle based data to global array
forceSubM(0).partToArray(index,virtualMassForce,vector::zero); forceSubM(0).partToArray(index,virtualMassForce,vector::zero);
//}
} }
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void Foam::virtualMassForce::reAllocArrays() const void Foam::virtualMassForce::reAllocArrays() const
{ {
if(particleCloud_.numberOfParticlesChanged()) if(particleCloud_.numberOfParticlesChanged())
{ {
// get arrays of new length Pout << "virtualMassForce::reAllocArrays..." << endl;
particleCloud_.dataExchangeM().allocateArray(UrelOld_,1.,1); particleCloud_.dataExchangeM().allocateArray(UrelOld_,NOTONCPU,3);
} }
} }

View File

@ -41,6 +41,7 @@ SourceFiles
#include "forceModel.H" #include "forceModel.H"
#include "dataExchangeModel.H" #include "dataExchangeModel.H"
#include "interpolationCellPoint.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -58,18 +59,22 @@ class virtualMassForce
private: private:
dictionary propsDict_; dictionary propsDict_;
bool verbose_;
word velFieldName_; word velFieldName_;
const volVectorField& U_; const volVectorField& U_;
word densityFieldName_; word phiFieldName_;
const volScalarField& rho_; const surfaceScalarField& phi_;
mutable double **UrelOld_; mutable double **UrelOld_;
mutable bool splitUrelCalculation_; //indicator to split calculation of Urel between CFDEM and LIGGGHTS
//requires the integration fix to take dv/dt into account!
mutable double Cadd_; //indicator to split calculation of Urel between CFDEM and LIGGGHTS
//requires the integration fix to take dv/dt into account!
public: public:
//- Runtime type information //- Runtime type information

View File

@ -62,13 +62,9 @@ viscForce::viscForce
: :
forceModel(dict,sm), forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")), propsDict_(dict.subDict(typeName + "Props")),
verbose_(false),
velocityFieldName_(propsDict_.lookup("velocityFieldName")), velocityFieldName_(propsDict_.lookup("velocityFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velocityFieldName_)), U_(sm.mesh().lookupObject<volVectorField> (velocityFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")), addedMassCoeff_(0.0)
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
addedMassCoeff_(0.0),
interpolation_(false)
{ {
// init force sub model // init force sub model
@ -76,6 +72,9 @@ viscForce::viscForce
// define switches which can be read from dict // define switches which can be read from dict
forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch forceSubM(0).setSwitchesList(0,true); // activate treatExplicit switch
forceSubM(0).setSwitchesList(1,true); // activate treatForceDEM switch
forceSubM(0).setSwitchesList(4,true); // activate search for interpolate switch
forceSubM(0).setSwitchesList(8,true); // activate scalarViscosity switch
// read those switches defined above, if provided in dict // read those switches defined above, if provided in dict
forceSubM(0).readSwitches(); forceSubM(0).readSwitches();
@ -83,12 +82,22 @@ viscForce::viscForce
if (modelType_ == "B") if (modelType_ == "B")
{ {
FatalError <<"using model viscForce with model type B is not valid\n" << abort(FatalError); FatalError <<"using model viscForce with model type B is not valid\n" << abort(FatalError);
}else }else if (modelType_ == "Bfull")
{ {
forceSubM(0).setSwitches(1,true); // treatDEM = true if(forceSubM(0).switches()[1])
Info << "viscForce is applied only to DEM side" << endl; {
Info << "Using treatForceDEM false!" << endl;
forceSubM(0).setSwitches(1,false); // treatForceDEM = false
}
}else // modelType_=="A"
{
if(!forceSubM(0).switches()[1])
{
Info << "Using treatForceDEM true!" << endl;
forceSubM(0).setSwitches(1,true); // treatForceDEM = true
}
} }
if (propsDict_.found("verbose")) verbose_=true;
if (propsDict_.found("useAddedMass")) if (propsDict_.found("useAddedMass"))
{ {
@ -97,11 +106,6 @@ viscForce::viscForce
Info << "WARNING: use fix nve/sphere/addedMass in LIGGGHTS input script to correctly account for added mass effects!" << endl; Info << "WARNING: use fix nve/sphere/addedMass in LIGGGHTS input script to correctly account for added mass effects!" << endl;
} }
if (propsDict_.found("interpolation"))
{
Info << "using interpolated value of pressure gradient." << endl;
interpolation_=true;
}
particleCloud_.checkCG(true); particleCloud_.checkCG(true);
//Append the field names to be probed //Append the field names to be probed
@ -122,22 +126,20 @@ viscForce::~viscForce()
void viscForce::setForce() const void viscForce::setForce() const
{ {
const volScalarField& nufField = forceSubM(0).nuField();
const volScalarField& rhoField = forceSubM(0).rhoField();
// get viscosity field // get viscosity field
#ifdef comp #ifdef comp
const volScalarField& mufField = particleCloud_.turbulence().mu();
// calc div(Tau) // calc div(Tau)
volVectorField divTauField = volVectorField divTauField =
- fvc::laplacian(mufField, U_) - fvc::laplacian(forceSubM(0).muField(), U_)
- fvc::div(mufField*dev(fvc::grad(U_)().T())); - fvc::div(forceSubM(0).muField()*dev(fvc::grad(U_)().T()));
#else #else
const volScalarField& nufField = particleCloud_.turbulence().nu();
// calc div(Tau) // calc div(Tau)
volVectorField divTauField = volVectorField divTauField =
- fvc::laplacian(nufField*rho_, U_) - fvc::laplacian(nufField*rhoField, U_)
- fvc::div(nufField*rho_*dev(fvc::grad(U_)().T())); - fvc::div(nufField*rhoField*dev(fvc::grad(U_)().T()));
#endif #endif
vector divTau; vector divTau;
@ -162,7 +164,7 @@ void viscForce::setForce() const
position = particleCloud_.position(index); position = particleCloud_.position(index);
if(interpolation_) // use intepolated values for alpha (normally off!!!) if(forceSubM(0).interpolation()) // use intepolated values for alpha (normally off!!!)
{ {
divTau = divTauInterpolator_.interpolate(position,cellI); divTau = divTauInterpolator_.interpolate(position,cellI);
}else }else
@ -176,7 +178,7 @@ void viscForce::setForce() const
// to the generalized buoyancy force // to the generalized buoyancy force
force = -Vs*divTau*(1.0+addedMassCoeff_); force = -Vs*divTau*(1.0+addedMassCoeff_);
if(verbose_ && index >0 && index <2) if(forceSubM(0).verbose() && index >0 && index <2)
{ {
Info << "index = " << index << endl; Info << "index = " << index << endl;
Info << "gradP = " << divTau << endl; Info << "gradP = " << divTau << endl;

Some files were not shown because too many files have changed in this diff Show More