release on 2013-06-13_09-32-47

This commit is contained in:
goniva
2013-06-13 09:32:48 +02:00
parent 9efc4ae0ac
commit 7cb95eb754
65 changed files with 1409 additions and 150 deletions

81
README Normal 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

@ -218,22 +218,22 @@ listing below of styles within certain commands.
<TR ALIGN="center"><TD ><A HREF = "forceModel_KochHillDrag.html">forceModel_KochHillDrag</A></TD><TD ><A HREF = "forceModel_LaEuScalarTemp.html">forceModel_LaEuScalarTemp</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_MeiLift.html">forceModel_MeiLift</A></TD><TD ><A HREF = "forceModel_SchillerNaumannDrag.html">forceModel_SchillerNaumannDrag</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_ShirgaonkarIB.html">forceModel_ShirgaonkarIB</A></TD><TD ><A HREF = "forceModel_gradPForce.html">forceModel_gradPForce</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_noDrag.html">forceModel_noDrag</A></TD><TD ><A HREF = "forceModel_virtualMassForce.html">forceModel_virtualMassForce</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_viscForce.html">forceModel_viscForce</A></TD><TD ><A HREF = "liggghtsCommandModel.html">liggghtsCommandModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_execute.html">liggghtsCommandModel_execute</A></TD><TD ><A HREF = "liggghtsCommandModel_readLiggghtsData.html">liggghtsCommandModel_readLiggghtsData</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_runLiggghts.html">liggghtsCommandModel_runLiggghts</A></TD><TD ><A HREF = "liggghtsCommandModel_writeLiggghts.html">liggghtsCommandModel_writeLiggghts</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "locateModel.html">locateModel</A></TD><TD ><A HREF = "locateModel_engineSearch.html">locateModel_engineSearch</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "locateModel_engineSearchIB.html">locateModel_engineSearchIB</A></TD><TD ><A HREF = "locateModel_standardSearch.html">locateModel_standardSearch</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "locateModel_turboEngineSearchM2M.html">locateModel_turboEngineM2MSearch</A></TD><TD ><A HREF = "locateModel_turboEngineSearch.html">locateModel_turboEngineSearch</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "meshMotionModel.html">meshMotionModel</A></TD><TD ><A HREF = "meshMotionModel_noMeshMotion.html">meshMotionModel_noMeshMotion</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel.html">momCoupleModel</A></TD><TD ><A HREF = "momCoupleModel_explicitCouple.html">momCoupleModel_explicitCouple</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel_implicitCouple.html">momCoupleModel_implicitCouple</A></TD><TD ><A HREF = "momCoupleModel_noCouple.html">momCoupleModel_noCouple</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "regionModel.html">regionModel</A></TD><TD ><A HREF = "regionModel_allRegion.html">regionModel_allRegion</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "smoothingModel.html">smoothingModel</A></TD><TD ><A HREF = "smoothingModel_constDiffSmoothing.html">smoothingModel_constDiffSmoothing</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "smoothingModel_noSmoothing.html">smoothingModel_noSmoothing</A></TD><TD ><A HREF = "voidFractionModel.html">voidfractionModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_GaussVoidFraction.html">voidfractionModel_GaussVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_IBVoidFraction.html">voidfractionModel_IBVoidFraction</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_bigParticleVoidFraction.html">voidfractionModel_bigParticleVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_centreVoidFraction.html">voidfractionModel_centreVoidFraction</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_dividedVoidFraction.html">voidfractionModel_dividedVoidFraction</A>
<TR ALIGN="center"><TD ><A HREF = "forceModel_noDrag.html">forceModel_noDrag</A></TD><TD ><A HREF = "forceModel_particleCellVolume.html">forceModel_particleCellVolume</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_virtualMassForce.html">forceModel_virtualMassForce</A></TD><TD ><A HREF = "forceModel_viscForce.html">forceModel_viscForce</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel.html">liggghtsCommandModel</A></TD><TD ><A HREF = "liggghtsCommandModel_execute.html">liggghtsCommandModel_execute</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_readLiggghtsData.html">liggghtsCommandModel_readLiggghtsData</A></TD><TD ><A HREF = "liggghtsCommandModel_runLiggghts.html">liggghtsCommandModel_runLiggghts</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_writeLiggghts.html">liggghtsCommandModel_writeLiggghts</A></TD><TD ><A HREF = "locateModel.html">locateModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "locateModel_engineSearch.html">locateModel_engineSearch</A></TD><TD ><A HREF = "locateModel_engineSearchIB.html">locateModel_engineSearchIB</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "locateModel_standardSearch.html">locateModel_standardSearch</A></TD><TD ><A HREF = "locateModel_turboEngineSearchM2M.html">locateModel_turboEngineM2MSearch</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "locateModel_turboEngineSearch.html">locateModel_turboEngineSearch</A></TD><TD ><A HREF = "meshMotionModel.html">meshMotionModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "meshMotionModel_noMeshMotion.html">meshMotionModel_noMeshMotion</A></TD><TD ><A HREF = "momCoupleModel.html">momCoupleModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel_explicitCouple.html">momCoupleModel_explicitCouple</A></TD><TD ><A HREF = "momCoupleModel_implicitCouple.html">momCoupleModel_implicitCouple</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel_noCouple.html">momCoupleModel_noCouple</A></TD><TD ><A HREF = "regionModel.html">regionModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "regionModel_allRegion.html">regionModel_allRegion</A></TD><TD ><A HREF = "smoothingModel.html">smoothingModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "smoothingModel_constDiffSmoothing.html">smoothingModel_constDiffSmoothing</A></TD><TD ><A HREF = "smoothingModel_noSmoothing.html">smoothingModel_noSmoothing</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel.html">voidfractionModel</A></TD><TD ><A HREF = "voidFractionModel_GaussVoidFraction.html">voidfractionModel_GaussVoidFraction</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_IBVoidFraction.html">voidfractionModel_IBVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_bigParticleVoidFraction.html">voidfractionModel_bigParticleVoidFraction</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_centreVoidFraction.html">voidfractionModel_centreVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_dividedVoidFraction.html">voidfractionModel_dividedVoidFraction</A>
</TD></TR></TABLE></DIV>
</HTML>

Binary file not shown.

View File

@ -239,6 +239,7 @@ listing below of styles within certain commands.
"forceModel_ShirgaonkarIB"_forceModel_ShirgaonkarIB.html,
"forceModel_gradPForce"_forceModel_gradPForce.html,
"forceModel_noDrag"_forceModel_noDrag.html,
"forceModel_particleCellVolume"_forceModel_particleCellVolume.html,
"forceModel_virtualMassForce"_forceModel_virtualMassForce.html,
"forceModel_viscForce"_forceModel_viscForce.html,
"liggghtsCommandModel"_liggghtsCommandModel.html,

View File

@ -0,0 +1,59 @@
<HTML>
<CENTER><A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A> - <A HREF = "CFDEMcoupling_Manual.html#comm">CFDEM Commands</A>
</CENTER>
<HR>
<H3>forceModel_particleCellVolume command
</H3>
<P><B>Syntax:</B>
</P>
<P>Defined in couplingProperties dictionary.
</P>
<PRE>forceModels
(
particleCellVolume
);
particleCellVolumeProps
{
upperThreshold value;
lowerThreshold value2;
verbous;
};
</PRE>
<LI><I>value</I> = only cells with a field value (magnitude) lower than this upper threshold are considered
<LI><I>value2</I> = only cells with a field value (magnitude) greater than this lower threshold are considered
</UL>
<P><B>Examples:</B>
</P>
<PRE>forceModels
(
particleCellVolume
);
particleCellVolumeProps
{
upperThreshold 0.999;
lowerThreshold 0;
verbous;
}
</PRE>
<P><B>Description:</B>
</P>
<P>This "forceModel" does not influence the particles or the simulation - it is a postprocessing tool! The total volume of the particles as they are represented on the CFD mesh is calculated.
At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can be can the be probed using standard function object probes. Using the verbous option a screen output is given.
</P>
<P><B>Restrictions:</B>
</P>
<P>None.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "forceModel.html">forceModel</A>
</P>
</HTML>

View File

@ -0,0 +1,54 @@
"CFDEMproject WWW Site"_lws - "CFDEM Commands"_lc :c
:link(lws,http://www.cfdem.com)
:link(lc,CFDEMcoupling_Manual.html#comm)
:line
forceModel_particleCellVolume command :h3
[Syntax:]
Defined in couplingProperties dictionary.
forceModels
(
particleCellVolume
);
particleCellVolumeProps
\{
upperThreshold value;
lowerThreshold value2;
verbous;
\}; :pre
{value} = only cells with a field value (magnitude) lower than this upper threshold are considered :l
{value2} = only cells with a field value (magnitude) greater than this lower threshold are considered :l
:ule
[Examples:]
forceModels
(
particleCellVolume
);
particleCellVolumeProps
\{
upperThreshold 0.999;
lowerThreshold 0;
verbous;
\} :pre
[Description:]
This "forceModel" does not influence the particles or the simulation - it is a postprocessing tool! The total volume of the particles as they are represented on the CFD mesh is calculated.
At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can be can the be probed using standard function object probes. Using the verbous option a screen output is given.
[Restrictions:]
None.
[Related commands:]
"forceModel"_forceModel.html

Binary file not shown.

View File

@ -21,13 +21,17 @@
</P>
<PRE>smoothingModel off;
</PRE>
<PRE>smoothingModel constDiffSmoothing;
</PRE>
<PRE>smoothingModel localPSizeDiffSmoothing;
</PRE>
<P>Note: This examples list might not be complete - please look for other models (smoothingModel_XY) in this documentation.
</P>
<P><B>Description:</B>
</P>
<P>The smoothingModel is the base class for models smoothen the exchange fields.
<P>The smoothingModel is the base class for models that smoothen the exchange fields (i.e., voidfraction and the Ksl field in case of implicit force coupling). This is relevant in case one uses a small grid resolution compared to the local particle diameter (or parcel diameter in case one uses a parcel approach).
</P>
<P><B>Restrictions:</B> none.
<P><B>Restrictions:</B> These models are in beta testing.
</P>
<P><B>Default:</B> none.
</P>

View File

@ -18,13 +18,15 @@ model = name of the smoothingModel to be applied :ul
[Examples:]
smoothingModel off; :pre
smoothingModel constDiffSmoothing; :pre
smoothingModel localPSizeDiffSmoothing; :pre
Note: This examples list might not be complete - please look for other models (smoothingModel_XY) in this documentation.
[Description:]
The smoothingModel is the base class for models smoothen the exchange fields.
The smoothingModel is the base class for models that smoothen the exchange fields (i.e., voidfraction and the Ksl field in case of implicit force coupling). This is relevant in case one uses a small grid resolution compared to the local particle diameter (or parcel diameter in case one uses a parcel approach).
[Restrictions:] none.
[Restrictions:] These models are in beta testing.
[Default:] none.

View File

@ -18,29 +18,33 @@ constDiffSmoothingProps
{
lowerLimit number1;
upperLimit number2;
DT number3;
smoothingLength lengthScale;
}
</PRE>
<UL><LI><I>number1</I> = scalar fields will be bound to this lower value
<LI><I>number2</I> = scalar fields will be bound to this upper value
<LI><I>number3</I> = diffusion constant
<LI><I>lengthScale</I> = length scale over which the exchange fields will be smoothed out
</UL>
<P><B>Examples:</B>
</P>
<PRE>constDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
DT 1e-3;
smoothingLength 1500e-6;
}
</PRE>
<P><B>Description:</B>
</P>
<P>The "constDiffSmoothing" model is a basic smoothingModel model which reads a diffusion coefficient being used for smoothening the exchange fields (voidfraction, Ksl, f if present).
<P>The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothening the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit fource coupling algorithms
(see solver "cfdemSolverPisoImEx").
</P>
<P><B>Restrictions:</B> none.
<P><B>Restrictions:</B> Should be used for monodisperse cases only.
Time derivatives of the voidfraction field are calculated incorrectly, so don't use them in your solver when smoothing is applied.
</P>
<P><B>Related commands:</B>
</P>

View File

@ -16,12 +16,13 @@ constDiffSmoothingProps
\{
lowerLimit number1;
upperLimit number2;
DT number3;
smoothingLength lengthScale;
\} :pre
{number1} = scalar fields will be bound to this lower value :ulb,l
{number2} = scalar fields will be bound to this upper value :l
{number3} = diffusion constant :l
{lengthScale} = length scale over which the exchange fields will be smoothed out :l
:ule
[Examples:]
@ -29,14 +30,16 @@ constDiffSmoothingProps
\{
lowerLimit 0.1;
upperLimit 1e10;
DT 1e-3;
smoothingLength 1500e-6;
\} :pre
[Description:]
The "constDiffSmoothing" model is a basic smoothingModel model which reads a diffusion coefficient being used for smoothening the exchange fields (voidfraction, Ksl, f if present).
The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothening the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit fource coupling algorithms
(see solver "cfdemSolverPisoImEx").
[Restrictions:] none.
[Restrictions:] Should be used for monodisperse cases only.
Time derivatives of the voidfraction field are calculated incorrectly, so don't use them in your solver when smoothing is applied.
[Related commands:]

View File

@ -19,6 +19,7 @@ GaussProps
maxCellsPerParticle number1;
alphaMin number2;
scaleUpVol number3;
weight number4;
}
</PRE>
<UL><LI><I>number1</I> = max number of cells covered by a partilce (search will fail when more than <I>number1</I> cells are covered by the particle)
@ -27,6 +28,8 @@ GaussProps
<LI><I>number3</I> = diameter of the particle's representation is artificially increased according to <I>number3</I> * Vparticle, volume remains unaltered!
<LI><I>number4</I> = scaling of the particle volume to account for porosity or agglomerations.
</UL>
<P><B>Examples:</B>
@ -37,6 +40,7 @@ GaussProps
maxCellsPerParticle 1000;
alphaMin 0.10;
scaleUpVol 5.0;
weight 1.;
}
</PRE>
<P><B>Description:</B>
@ -45,6 +49,8 @@ GaussProps
</P>
<P>The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant.
</P>
<P>The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight.
</P>
<P><B>Restrictions:</B> none.
</P>
<P><B>Related commands:</B>

View File

@ -17,11 +17,13 @@ GaussProps
maxCellsPerParticle number1;
alphaMin number2;
scaleUpVol number3;
weight number4;
\} :pre
{number1} = max number of cells covered by a partilce (search will fail when more than {number1} cells are covered by the particle) :ulb,l
{number2} = mininmum limit for voidfraction :l
{number3} = diameter of the particle's representation is artificially increased according to {number3} * Vparticle, volume remains unaltered! :l
{number4} = scaling of the particle volume to account for porosity or agglomerations. :l
:ule
[Examples:]
@ -32,6 +34,7 @@ GaussProps
maxCellsPerParticle 1000;
alphaMin 0.10;
scaleUpVol 5.0;
weight 1.;
\} :pre
[Description:]
@ -40,6 +43,8 @@ The Gauss voidFraction model is supposed to be used when a particle (or it's rep
The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant.
The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight.
[Restrictions:] none.
[Related commands:]

View File

@ -19,6 +19,7 @@ bigParticleProps
maxCellsPerParticle number1;
alphaMin number2;
scaleUpVol number3;
weight number4;
}
</PRE>
<UL><LI><I>number1</I> = max number of cells covered by a partilce (search will fail when more than <I>number1</I> cells are covered by the particle)
@ -27,6 +28,8 @@ bigParticleProps
<LI><I>number3</I> = diameter of the particle's representation is artificially increased according to <I>number3</I> * Vparticle, volume remains unaltered!
<LI><I>number4</I> = scaling of the particle volume to account for porosity or agglomerations.
</UL>
<P><B>Examples:</B>
@ -37,6 +40,7 @@ bigParticleProps
maxCellsPerParticle 1000;
alphaMin 0.10;
scaleUpVol 5.0;
weight 1.;
}
</PRE>
<P><B>Description:</B>
@ -45,7 +49,9 @@ bigParticleProps
</P>
<P>The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant.
</P>
<P>Code of this sub-model contributed by Alice Hager, JKU.
<P>The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight.
</P>
<P>Parts of this sub-model contributed by Alice Hager, JKU.
</P>
<P><B>Restrictions:</B> none.
</P>

View File

@ -17,11 +17,13 @@ bigParticleProps
maxCellsPerParticle number1;
alphaMin number2;
scaleUpVol number3;
weight number4;
\} :pre
{number1} = max number of cells covered by a partilce (search will fail when more than {number1} cells are covered by the particle) :ulb,l
{number2} = mininmum limit for voidfraction :l
{number3} = diameter of the particle's representation is artificially increased according to {number3} * Vparticle, volume remains unaltered! :l
{number4} = scaling of the particle volume to account for porosity or agglomerations. :l
:ule
[Examples:]
@ -32,6 +34,7 @@ bigParticleProps
maxCellsPerParticle 1000;
alphaMin 0.10;
scaleUpVol 5.0;
weight 1.;
\} :pre
[Description:]
@ -40,7 +43,9 @@ The bigParticle voidFraction model is supposed to be used when a particle (or it
The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant.
Code of this sub-model contributed by Alice Hager, JKU.
The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight.
Parts of this sub-model contributed by Alice Hager, JKU.
[Restrictions:] none.

View File

@ -16,10 +16,13 @@
<PRE>voidfractionModel centre;
centreProps
{
alphaMin value;
alphaMin number1;
weight number2;
}
</PRE>
<UL><LI><I>value</I> = mininmum limit for voidfraction
<UL><LI><I>number1</I> = mininmum limit for voidfraction
<LI><I>number2</I> = scaling of the particle volume to account for porosity or agglomerations.
</UL>
@ -29,12 +32,15 @@ centreProps
centreProps
{
alphaMin 0.1;
weight 1.;
}
</PRE>
<P><B>Description:</B>
</P>
<P>The centre voidFraction model calculates the voidfraction in a CFD cell accounting for the volume of the particles whose centres are inside the cell.
</P>
<P>The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight.
</P>
<P><B>Restrictions:</B> none.
</P>
<P><B>Related commands:</B>

View File

@ -14,10 +14,12 @@ Defined in couplingProperties dictionary.
voidfractionModel centre;
centreProps
\{
alphaMin value;
alphaMin number1;
weight number2;
\} :pre
{value} = mininmum limit for voidfraction :ulb,l
{number1} = mininmum limit for voidfraction :ulb,l
{number2} = scaling of the particle volume to account for porosity or agglomerations. :l
:ule
[Examples:]
@ -26,12 +28,15 @@ voidfractionModel centre;
centreProps
\{
alphaMin 0.1;
weight 1.;
\} :pre
[Description:]
The centre voidFraction model calculates the voidfraction in a CFD cell accounting for the volume of the particles whose centres are inside the cell.
The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight.
[Restrictions:] none.
[Related commands:]

View File

@ -19,6 +19,7 @@ dividedProps
alphaMin number1;
scaleUpVol number2;
interpolation;
weight number3;
}
</PRE>
<UL><LI><I>number1</I> = mininmum limit for voidfraction
@ -27,6 +28,8 @@ dividedProps
<LI><I>interpolation</I> = flag to interpolate voidfraction to particle positions (normally off)
<LI><I>number3</I> = scaling of the particle volume to account for porosity or agglomerations.
</UL>
<P><B>Examples:</B>
@ -36,6 +39,7 @@ dividedProps
{
alphaMin 0.2;
scaleUpVol 1.0;
weight 1.;
}
</PRE>
<P><B>Description:</B>
@ -44,6 +48,8 @@ dividedProps
</P>
<P>The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant.
</P>
<P>The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight.
</P>
<P><B>Restrictions:</B> none.
</P>
<P><B>Related commands:</B>

View File

@ -17,11 +17,13 @@ dividedProps
alphaMin number1;
scaleUpVol number2;
interpolation;
weight number3;
\} :pre
{number1} = mininmum limit for voidfraction :ulb,l
{number2} = diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
{interpolation} = flag to interpolate voidfraction to particle positions (normally off) :l
{number3} = scaling of the particle volume to account for porosity or agglomerations. :l
:ule
[Examples:]
@ -31,6 +33,7 @@ dividedProps
\{
alphaMin 0.2;
scaleUpVol 1.0;
weight 1.;
\} :pre
[Description:]
@ -39,6 +42,8 @@ The divided voidFraction model is supposed to be used when a particle (or it's r
The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant.
The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight.
[Restrictions:] none.
[Related commands:]

View File

@ -6,7 +6,6 @@ voidFractionModels = subModels/voidFractionModel
locateModels = subModels/locateModel
meshMotionModels = subModels/meshMotionModel
momCoupleModels = subModels/momCoupleModel
regionModels = subModels/regionModel
dataExchangeModels = subModels/dataExchangeModel
averagingModels = subModels/averagingModel
clockModels = subModels/clockModel
@ -22,20 +21,35 @@ $(forceModels)/forceModel/newForceModel.C
$(forceModels)/noDrag/noDrag.C
$(forceModels)/checkCouplingInterval/checkCouplingInterval.C
$(forceModels)/DiFeliceDrag/DiFeliceDrag.C
$(forceModels)/DiFeliceDragNLift/DiFeliceDragNLift.C
$(forceModels)/GidaspowDrag/GidaspowDrag.C
$(forceModels)/SchillerNaumannDrag/SchillerNaumannDrag.C
$(forceModels)/Archimedes/Archimedes.C
$(forceModels)/ArchimedesIB/ArchimedesIB.C
$(forceModels)/interface/interface.C
$(forceModels)/ShirgaonkarIB/ShirgaonkarIB.C
$(forceModels)/fieldTimeAverage/fieldTimeAverage.C
$(forceModels)/fieldBound/fieldBound.C
$(forceModels)/volWeightedAverage/volWeightedAverage.C
$(forceModels)/totalMomentumExchange/totalMomentumExchange.C
$(forceModels)/KochHillDrag/KochHillDrag.C
$(forceModels)/KochHillRWDrag/KochHillRWDrag.C
$(forceModels)/BeetstraDrag/multiphaseFlowBasic/multiphaseFlowBasic.C
$(forceModels)/BeetstraDrag/BeetstraDrag.C
$(forceModels)/LaEuScalarLiquid/LaEuScalarLiquid.C
$(forceModels)/LaEuScalarTemp/LaEuScalarTemp.C
$(forceModels)/LaEuScalarDust/LaEuScalarDust.C
$(forceModels)/virtualMassForce/virtualMassForce.C
$(forceModels)/gradPForce/gradPForce.C
$(forceModels)/gradULiftForce/gradULiftForce.C
$(forceModels)/viscForce/viscForce.C
$(forceModels)/MeiLift/MeiLift.C
$(forceModels)/fieldTimeAverage/fieldTimeAverage.C
$(forceModels)/volWeightedAverage/volWeightedAverage.C
$(forceModels)/KochHillDragNLift/KochHillDragNLift.C
$(forceModels)/solidsPressureForce/solidsPressureForce.C
$(forceModels)/periodicPressure/periodicPressure.C
$(forceModels)/periodicPressureControl/periodicPressureControl.C
$(forceModels)/averageSlipVel/averageSlipVel.C
$(forceModels)/particleCellVolume/particleCellVolume.C
$(forceModelsMS)/forceModelMS/forceModelMS.C
$(forceModelsMS)/forceModelMS/newForceModelMS.C
@ -65,21 +79,18 @@ $(locateModels)/turboEngineSearch/turboEngineSearch.C
$(locateModels)/turboEngineSearchM2M/turboEngineSearchM2M.C
$(locateModels)/engineSearchIB/engineSearchIB.C
$(meshMotionModels)/meshMotionModel/meshMotionModel.C
$(meshMotionModels)/meshMotionModel/newMeshMotionModel.C
$(meshMotionModels)/noMeshMotion/noMeshMotion.C
$(meshMotionModels)/DEMdrivenMeshMotion/DEMdrivenMeshMotion.C
$(momCoupleModels)/momCoupleModel/momCoupleModel.C
$(momCoupleModels)/momCoupleModel/newMomCoupleModel.C
$(momCoupleModels)/explicitCouple/explicitCouple.C
$(momCoupleModels)/explicitCoupleSource/explicitCoupleSource.C
$(momCoupleModels)/implicitCouple/implicitCouple.C
$(momCoupleModels)/noCouple/noCouple.C
$(regionModels)/regionModel/regionModel.C
$(regionModels)/regionModel/newRegionModel.C
$(regionModels)/allRegion/allRegion.C
$(dataExchangeModels)/dataExchangeModel/dataExchangeModel.C
$(dataExchangeModels)/dataExchangeModel/newDataExchangeModel.C
$(dataExchangeModels)/oneWayVTK/oneWayVTK.C
@ -109,5 +120,6 @@ $(smoothingModels)/smoothingModel/smoothingModel.C
$(smoothingModels)/smoothingModel/newSmoothingModel.C
$(smoothingModels)/noSmoothing/noSmoothing.C
$(smoothingModels)/constDiffSmoothing/constDiffSmoothing.C
$(smoothingModels)/localPSizeDiffSmoothing/localPSizeDiffSmoothing.C
LIB = $(FOAM_USER_LIBBIN)/lib$(CFDEM_LIB_NAME)
LIB = $(CFDEM_LIB_DIR)/lib$(CFDEM_LIB_NAME)

View File

@ -1,7 +1,9 @@
word CFDEMversion="cfdem-2.5.4";
word compatibleLIGGGHTSversion="2.3.2";
word CFDEMversion="cfdem-2.5.5";
word compatibleLIGGGHTSversion="2.3.5";
word OFversion="2.1.x";
Info << "\nCFDEMcoupling version: " << CFDEMversion << "\n" << endl;
Info << "\n, compatible to LIGGGHTS version: " << compatibleLIGGGHTSversion << "\n" << endl;
Info << "\n, compatible to OF version: " << OFversion << "\n" << endl;

View File

@ -437,7 +437,8 @@ bool Foam::cfdemCloud::evolve
averagingM().resetVectorAverage(forceM(0).impParticleForces(),forceM(0).impParticleForces(),true);
averagingM().resetVectorAverage(forceM(0).expParticleForces(),forceM(0).expParticleForces(),true);
averagingM().resetWeightFields();
momCoupleM(0).resetMomSourceField();
for (int i=0;i<momCoupleModels_.size(); i++)
momCoupleM(i).resetMomSourceField();
if(verbose_) Info << "resetVolFields done." << endl;
clockM().stop("resetVolFields");

View File

@ -3,12 +3,12 @@ error.o: error.cpp /usr/lib/openmpi/include/mpi.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.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/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/bits/predefs.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.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/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
@ -20,7 +20,7 @@ error.o: error.cpp /usr/lib/openmpi/include/mpi.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/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 \
@ -41,14 +41,14 @@ error.o: error.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/wchar.h /usr/include/xlocale.h \
/usr/include/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/x86_64-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/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/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/bits/sched.h /usr/include/bits/time.h /usr/include/signal.h \
/usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h \
@ -56,7 +56,7 @@ error.o: error.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.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 \
@ -67,9 +67,9 @@ error.o: error.cpp /usr/lib/openmpi/include/mpi.h \
/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/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/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 \

View File

@ -20,9 +20,9 @@ irregular.o: irregular.cpp /usr/include/stdio.h /usr/include/features.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.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/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 \
@ -34,7 +34,7 @@ irregular.o: irregular.cpp /usr/include/stdio.h /usr/include/features.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/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 \
@ -49,19 +49,19 @@ irregular.o: irregular.cpp /usr/include/stdio.h /usr/include/features.h \
/usr/include/bits/wchar.h /usr/include/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/x86_64-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/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/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/bits/sched.h \
/usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.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 \
@ -72,9 +72,9 @@ irregular.o: irregular.cpp /usr/include/stdio.h /usr/include/features.h \
/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/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/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 \

View File

@ -17,9 +17,9 @@ lammps_data_write.o: lammps_data_write.cpp /usr/include/stdlib.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.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/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 \
@ -31,7 +31,7 @@ lammps_data_write.o: lammps_data_write.cpp /usr/include/stdlib.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/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 \
@ -51,19 +51,19 @@ lammps_data_write.o: lammps_data_write.cpp /usr/include/stdlib.h \
/usr/include/bits/wchar.h /usr/include/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/x86_64-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/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/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/bits/sched.h \
/usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.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 \
@ -74,9 +74,9 @@ lammps_data_write.o: lammps_data_write.cpp /usr/include/stdlib.h \
/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/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/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 \

View File

@ -3,12 +3,12 @@ many2many.o: many2many.cpp /usr/lib/openmpi/include/mpi.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.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/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/bits/predefs.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.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/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
@ -20,7 +20,7 @@ many2many.o: many2many.cpp /usr/lib/openmpi/include/mpi.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/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 \
@ -41,14 +41,14 @@ many2many.o: many2many.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/wchar.h /usr/include/xlocale.h \
/usr/include/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/x86_64-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/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/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/bits/sched.h /usr/include/bits/time.h /usr/include/signal.h \
/usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h \
@ -56,7 +56,7 @@ many2many.o: many2many.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.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 \
@ -67,9 +67,9 @@ many2many.o: many2many.cpp /usr/lib/openmpi/include/mpi.h \
/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/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/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 \

View File

@ -3,12 +3,12 @@ many2one.o: many2one.cpp /usr/lib/openmpi/include/mpi.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.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/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/bits/predefs.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.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/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
@ -20,7 +20,7 @@ many2one.o: many2one.cpp /usr/lib/openmpi/include/mpi.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/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 \
@ -41,14 +41,14 @@ many2one.o: many2one.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/wchar.h /usr/include/xlocale.h \
/usr/include/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/x86_64-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/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/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/bits/sched.h /usr/include/bits/time.h /usr/include/signal.h \
/usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h \
@ -56,7 +56,7 @@ many2one.o: many2one.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.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 \
@ -67,9 +67,9 @@ many2one.o: many2one.cpp /usr/lib/openmpi/include/mpi.h \
/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/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/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 \

View File

@ -3,12 +3,12 @@ memory.o: memory.cpp /usr/lib/openmpi/include/mpi.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.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/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/bits/predefs.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.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/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
@ -20,7 +20,7 @@ memory.o: memory.cpp /usr/lib/openmpi/include/mpi.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/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 \
@ -41,14 +41,14 @@ memory.o: memory.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/wchar.h /usr/include/xlocale.h \
/usr/include/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/x86_64-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/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/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/bits/sched.h /usr/include/bits/time.h /usr/include/signal.h \
/usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h \
@ -56,7 +56,7 @@ memory.o: memory.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.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 \
@ -67,9 +67,9 @@ memory.o: memory.cpp /usr/lib/openmpi/include/mpi.h \
/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/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/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 \

View File

@ -3,12 +3,12 @@ one2many.o: one2many.cpp /usr/lib/openmpi/include/mpi.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.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/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/bits/predefs.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.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/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
@ -20,7 +20,7 @@ one2many.o: one2many.cpp /usr/lib/openmpi/include/mpi.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/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 \
@ -41,14 +41,14 @@ one2many.o: one2many.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/wchar.h /usr/include/xlocale.h \
/usr/include/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/x86_64-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/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/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/bits/sched.h /usr/include/bits/time.h /usr/include/signal.h \
/usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h \
@ -56,7 +56,7 @@ one2many.o: one2many.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.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 \
@ -67,9 +67,9 @@ one2many.o: one2many.cpp /usr/lib/openmpi/include/mpi.h \
/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/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/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 \

View File

@ -3,12 +3,12 @@ send2one.o: send2one.cpp /usr/lib/openmpi/include/mpi.h \
/usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.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/c++config.h \
/usr/include/c++/4.6/x86_64-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/bits/predefs.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.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/exception_defines.h \
/usr/include/c++/4.6/bits/cpp_type_traits.h \
@ -20,7 +20,7 @@ send2one.o: send2one.cpp /usr/lib/openmpi/include/mpi.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/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 \
@ -41,14 +41,14 @@ send2one.o: send2one.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/wchar.h /usr/include/xlocale.h \
/usr/include/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/x86_64-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.6/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/c++/4.6/cctype \
/usr/include/ctype.h /usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/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/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/bits/sched.h /usr/include/bits/time.h /usr/include/signal.h \
/usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h \
@ -56,7 +56,7 @@ send2one.o: send2one.cpp /usr/lib/openmpi/include/mpi.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/bits/unistd.h \
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.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 \
@ -67,9 +67,9 @@ send2one.o: send2one.cpp /usr/lib/openmpi/include/mpi.h \
/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/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/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 \

View File

@ -285,7 +285,6 @@ bool Foam::twoWayMPI::couple() const
particleCloud_.clockM().start(3,"LIGGGHTS");
forAll(particleCloud_.liggghtsCommandModelList(),i)
{
if(particleCloud_.liggghtsCommand()[i]().runCommand(couplingStep()))
{
const char* command = particleCloud_.liggghtsCommand()[i]().command();
@ -318,10 +317,9 @@ int Foam::twoWayMPI::getNumberOfParticles() const
int Foam::twoWayMPI::getNumberOfClumps() const
{
Warning << "liggghts_get_maxtag_ms(lmp) is commented here!" << endl;
return -1;
//return liggghts_get_maxtag_ms(lmp);
// Warning << "liggghts_get_maxtag_ms(lmp) is commented here!" << endl;
// return -1;
return liggghts_get_maxtag_ms(lmp);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -0,0 +1,406 @@
/*---------------------------------------------------------------------------*\
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(R). Note: this code is not part of OpenFOAM(R) (see DISCLAIMER).
\*---------------------------------------------------------------------------*/
#include "error.H"
#include "KochHillRWDrag.H"
#include "addToRunTimeSelectionTable.H"
#include "dataExchangeModel.H"
//#include "mpi.h"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(KochHillRWDrag, 0);
addToRunTimeSelectionTable
(
forceModel,
KochHillRWDrag,
dictionary
);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
// Construct from components
KochHillRWDrag::KochHillRWDrag
(
const dictionary& dict,
cfdemCloud& sm
)
:
forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")),
verbose_(false),
velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")),
voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)),
interpolation_(false),
scale_(1.),
randomTauE_(false),
partTime_(NULL),
partUfluct_(NULL),
RanGen_(label(0))
{
if (propsDict_.found("verbose")) verbose_=true;
if (propsDict_.found("treatExplicit")) treatExplicit_=true;
if (propsDict_.found("interpolation")) interpolation_=true;
if (propsDict_.found("randomTauE")) randomTauE_=true;
if (propsDict_.found("implDEM"))
{
treatExplicit_=false;
implDEM_=true;
setImpDEMdrag();
Info << "Using implicit DEM drag formulation." << endl;
}
particleCloud_.checkCG(true);
if (propsDict_.found("scale"))
scale_=scalar(readScalar(propsDict_.lookup("scale")));
if (propsDict_.found("cl"))
cl_= readScalar(propsDict_.lookup("cl"));
if (propsDict_.found("rhoP"))
rhoP_= readScalar(propsDict_.lookup("rhoP"));
// if (particleCloud_.dataExchangeM().maxNumberOfParticles() > 0)
// {
//allocate memory
particleCloud_.dataExchangeM().allocateArray(partTime_,0.,1);
particleCloud_.dataExchangeM().allocateArray(partUfluct_,0.,3);
// }
//Pout << "RW-TEST: maxNumberOfParticles() == " << particleCloud_.dataExchangeM().maxNumberOfParticles() << endl; // TEST-Output
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
KochHillRWDrag::~KochHillRWDrag()
{
delete partTime_;
delete partUfluct_;
}
// * * * * * * * * * * * * * * * private Member Functions * * * * * * * * * * * * * //
void KochHillRWDrag::allocateMyArrays() const
{
// get memory for 2d arrays
double initVal=0.0;
particleCloud_.dataExchangeM().allocateArray(partTime_,initVal,1); // field/initVal/with/lenghtFromLigghts
particleCloud_.dataExchangeM().allocateArray(partUfluct_,initVal,3);
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void KochHillRWDrag::setForce() const
{
if (scale_ > 1)
Info << "KochHillRW using scale = " << scale_ << endl;
else if (cg() > 1){
scale_=cg();
Info << "KochHillRW using scale from liggghts cg = " << scale_ << endl;
}
// get viscosity field
#ifdef comp
const volScalarField nufField = particleCloud_.turbulence().mu()/rho_;
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);
scalar voidfraction(1);
vector Ufluid(0,0,0);
vector drag(0,0,0);
label cellI=0;
vector Us(0,0,0);
vector Ur(0,0,0);
scalar ds(0);
scalar nuf(0);
scalar rho(0);
scalar magUr(0);
scalar Rep(0);
scalar Vs(0);
scalar volumefraction(0);
scalar betaP(0);
// [Random walk model]
/* TODO: 1. read cl (ansys man) from dictionary or replace by c_mu from cfd-online
* 2. get particle density for particle relaxation time
*/
scalar k(0);
scalar epsilon(0);
scalar timeE(0);
scalar timeCr(0);
scalar lengthE(0);
scalar tauPart(0);
scalar mu(0);
// [Random walk model]
/* TODO: 1. k and epsilon inside of compiler if
* 2. Check which turbulence model
* 3. Interpolation of k and epsilon?
* 4. Time step check!
*/
const volScalarField& kField = particleCloud_.turbulence().k(); // TODO: inside of compiler if?
const volScalarField& epsilonField = particleCloud_.turbulence().epsilon(); // TODO: check which turbulence model!
scalar t = particleCloud_.mesh().time().value();
scalar deltaT = particleCloud_.mesh().time().deltaT().value();
//word test = particleCloud_.turbulence().turbulenceModelName;
interpolationCellPoint<scalar> voidfractionInterpolator_(voidfraction_);
interpolationCellPoint<vector> UInterpolator_(U_);
//Info << "RW-TEST: We are in setForce() at t = " << t << endl; // TEST-Output
for(int index = 0;index < particleCloud_.numberOfParticles(); index++)
{
//if(mask[index][0])
//{
cellI = particleCloud_.cellIDs()[index][0];
drag = vector(0,0,0);
betaP = 0;
Vs = 0;
Ufluid =vector(0,0,0);
// Pout << "RW-TEST: cellI = " << cellI << endl; // TEST-Output
if (cellI > -1) // particle Found
{
if(interpolation_)
{
position = particleCloud_.position(index);
voidfraction = voidfractionInterpolator_.interpolate(position,cellI);
Ufluid = UInterpolator_.interpolate(position,cellI);
//Ensure interpolated void fraction to be meaningful
// Info << " --> voidfraction: " << voidfraction << endl;
if(voidfraction>1.00) voidfraction = 1.00;
if(voidfraction<0.40) voidfraction = 0.40;
}else
{
voidfraction = particleCloud_.voidfraction(index);
Ufluid = U_[cellI];
}
Us = particleCloud_.velocity(index);
// [Random walk model]
/* TODO: 1. cl_ or c_mu?! Hardcoded c_mu = 0.09 in the eddy length calculation.
*/
// -------------------------
// TEST: Time boundaries
// Can be removed when partTime_ is synced
k = kField[cellI];
epsilon = epsilonField[cellI];
timeE = 2* cl_*k/(epsilon+SMALL);
if(partTime_[index][0] > t+10*timeE)
partTime_[index][0] = t;
// -------------------------
//Pout << "RW-TEST: t = " << t << " partTime_ = " << partTime_[index][0] << endl; // TEST-Output
if(t>=partTime_[index][0])
{
scalar ds = 2*particleCloud_.radii()[index][0];
mu = muField[cellI];
k = kField[cellI];
epsilon = epsilonField[cellI];
// Pout << "RW-TEST: mu = " << mu << endl; // TEST-Output
// calculate the eddy-lifetime and the particle crossing time
tauPart = rhoP_*ds*ds/(18*mu+SMALL);
lengthE = pow(0.09,0.63)*pow(k,1.5)/(epsilon+SMALL); //c_mu from turbulence?!
// two possible ways to calculate the eddy-life-time
if(randomTauE_) {
timeE = - cl_*k/(epsilon+SMALL)*log(RanGen_.scalar01());
} else {
timeE = 2* cl_*k/(epsilon+SMALL);
// timeE = lengthE / sqrt(2*k/3;) // cfd-online version
}
// particle crossing time and determine the min. time step
Ur = Ufluid-Us;
magUr = mag(Ur);
scalar threshold = lengthE/(tauPart*magUr+SMALL);
scalar minDeltaT;
if(threshold<1){
timeCr = -tauPart*log(1-threshold);
minDeltaT = min(timeE,timeCr);
} else {
minDeltaT = timeE;
}
//Pout << "RW-TEST: timeE = " << timeE << " timeCR = " << timeCr << endl; // TEST-Output
// calculate time step of next update
partTime_[index][0] = t + minDeltaT;
if(minDeltaT < deltaT)
Warning << "Random Walk Model: Simulation time step (" << deltaT << ") is bigger than the particle eddy interaction time (" << minDeltaT <<")! " << endl;
// update turbulent velocity part and
// modify current fluid velocity
for(int dim=0;dim<3;dim++) {
partUfluct_[index][dim] = RanGen_.GaussNormal()*sqrt(2*k/3);
//Pout << "RW-TEST: Ufluid[" << dim << "] = " << Ufluid[dim] << " Ufluct = " << partUfluct_[index][dim] << " k = " << k << endl; // TEST-Output
Ufluid[dim] = Ufluid[dim] + partUfluct_[index][dim];
}
}
else
{
// no update of the turbulent velocity part
// modify current fluid velocity
for(int dim=0;dim<3;dim++)
Ufluid[dim] = Ufluid[dim] + partUfluct_[index][dim];
}
Ur = Ufluid-Us;
magUr = mag(Ur);
// -----------------
ds = 2*particleCloud_.radius(index);
nuf = nufField[cellI];
rho = rho_[cellI];
Rep = 0;
Vs = ds*ds*ds*M_PI/6;
volumefraction = 1-voidfraction+SMALL;
if (magUr > 0)
{
// calc particle Re Nr
Rep = ds/scale_*voidfraction*magUr/(nuf+SMALL);
// calc model coefficient F0
scalar F0=0.;
if(volumefraction < 0.4)
{
F0 = (1+3*sqrt((volumefraction)/2)+135/64*volumefraction*log(volumefraction)
+16.14*volumefraction
)/
(1+0.681*volumefraction-8.48*sqr(volumefraction)
+8.16*volumefraction*volumefraction*volumefraction
);
} else {
F0 = 10*volumefraction/(voidfraction*voidfraction*voidfraction);
}
// calc model coefficient F3
scalar F3 = 0.0673+0.212*volumefraction+0.0232/pow(voidfraction,5);
//Calculate F in the formulation of van der Hoef et al. (JFM 528:233-254)
scalar F = voidfraction * (F0 + 0.5*F3*Rep);
// calc drag model coefficient betaP
betaP = 18.*nuf*rho/(ds/scale_*ds/scale_)*voidfraction*F;
// calc particle's drag
drag = Vs*betaP*Ur;
if (modelType_=="B")
drag /= voidfraction;
}
if(verbose_ && index >=0 && index <2)
{
Pout << "index = " << index << endl;
Pout << "Us = " << Us << endl;
Pout << "Ur = " << Ur << endl;
Pout << "ds = " << ds << endl;
Pout << "ds/scale = " << ds/scale_ << endl;
Pout << "rho = " << rho << endl;
Pout << "nuf = " << nuf << endl;
Pout << "voidfraction = " << voidfraction << endl;
Pout << "Rep = " << Rep << endl;
Pout << "drag = " << drag << endl;
}
}
// set force on particle
if(treatExplicit_) for(int j=0;j<3;j++) expForces()[index][j] += drag[j];
else for(int j=0;j<3;j++) impForces()[index][j] += drag[j];
// set Cd
if(implDEM_)
{
for(int j=0;j<3;j++) fluidVel()[index][j]=Ufluid[j];
if (modelType_=="B")
Cds()[index][0] = Vs*betaP/voidfraction;
else
Cds()[index][0] = Vs*betaP;
}else{
for(int j=0;j<3;j++) DEMForces()[index][j] += drag[j];
}
//}
}
}
void Foam::KochHillRWDrag::reAllocArrays() const
{
if(particleCloud_.numberOfParticlesChanged())
{
double initVal=0.0;
particleCloud_.dataExchangeM().allocateArray(partTime_,initVal,1); // field/initVal/with/lenghtFromLigghts
particleCloud_.dataExchangeM().allocateArray(partUfluct_,initVal,3);
}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -0,0 +1,135 @@
/*---------------------------------------------------------------------------*\
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(R). Note: this code is not part of OpenFOAM(R) (see DISCLAIMER).
Koch, Hill drag law
based on Koch Hill 2001,"Inertial effects in suspensions and porous-media
flows", Annual Review of fluid mechanics.
including interpolation of the velocity to the exact position
including drag coefficient for implicit drag for DEM
Class
KochHillRWDrag
SourceFiles
KochHillRWDrag.C
\*---------------------------------------------------------------------------*/
#ifndef KochHillRWDrag_H
#define KochHillRWDrag_H
#include "forceModel.H"
#include "interpolationCellPoint.H"
#include "Random.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class KochHillRWDrag Declaration
\*---------------------------------------------------------------------------*/
class KochHillRWDrag
:
public forceModel
{
private:
dictionary propsDict_;
bool verbose_;
word velFieldName_;
const volVectorField& U_;
word densityFieldName_;
const volScalarField& rho_;
word voidfractionFieldName_;
const volScalarField& voidfraction_;
bool interpolation_; // use interpolated field values
mutable scalar scale_;
scalar cl_;
scalar rhoP_;
bool randomTauE_;
mutable double **partTime_; // Lagrangian array
mutable double **partUfluct_; // Lagrangian array
mutable Random RanGen_;
void allocateMyArrays() const;
public:
//- Runtime type information
TypeName("KochHillRWDrag");
// Constructors
//- Construct from components
KochHillRWDrag
(
const dictionary& dict,
cfdemCloud& sm
);
// Destructor
~KochHillRWDrag();
// Member Functions
void setForce() const;
void reAllocArrays() const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -0,0 +1,148 @@
/*---------------------------------------------------------------------------*\
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(R). Note: this code is not part of OpenFOAM(R) (see DISCLAIMER).
\*---------------------------------------------------------------------------*/
#include "error.H"
#include "particleCellVolume.H"
#include "addToRunTimeSelectionTable.H"
#include "dataExchangeModel.H"
#include "mpi.h"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(particleCellVolume, 0);
addToRunTimeSelectionTable
(
forceModel,
particleCellVolume,
dictionary
);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
// Construct from components
particleCellVolume::particleCellVolume
(
const dictionary& dict,
cfdemCloud& sm
)
:
forceModel(dict,sm),
propsDict_(dict.subDict(typeName + "Props")),
mesh_(particleCloud_.mesh()),
startTime_(0.),
scalarFieldName_("voidfraction"),
scalarField_
(
IOobject
(
"particleCellVolume",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
mesh_,
dimensionedScalar("zero", dimensionSet(0,0,0,0,0), 0)
),
upperThreshold_(readScalar(propsDict_.lookup("upperThreshold"))),
lowerThreshold_(readScalar(propsDict_.lookup("lowerThreshold"))),
verbose_(false)
{
if (propsDict_.found("startTime")){
startTime_=readScalar(propsDict_.lookup("startTime"));
}
if (propsDict_.found("verbose")){
verbose_ = true;
}
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
particleCellVolume::~particleCellVolume()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void particleCellVolume::setForce() const
{
if(mesh_.time().value() >= startTime_)
{
if(verbose_) Info << "particleCellVolume.C - setForce()" << endl;
scalarField_.internalField()=0.;
// get reference to actual field
volScalarField& field = (volScalarField&) mesh_.lookupObject<volScalarField>(scalarFieldName_);
scalar fieldValue=-1;
scalar cellVol=-1;
forAll(field,cellI)
{
fieldValue = field[cellI];
if(fieldValue < upperThreshold_ && fieldValue > lowerThreshold_)
{
cellVol = mesh_.V()[cellI];
scalarField_[cellI] = (1-fieldValue) * cellVol;
}
else
{
scalarField_[cellI] = 0.;
}
}
scalarField_.internalField() = gSum(scalarField_);
if(verbose_)
{
Info << "calculated integral of field: " << scalarFieldName_
<< " = " << scalarField_[0]
<< ",\n considering cells where the field < " << upperThreshold_
<< ", and > " << lowerThreshold_ << endl;
}
}// end if time >= startTime_
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -0,0 +1,108 @@
/*---------------------------------------------------------------------------*\
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(R). Note: this code is not part of OpenFOAM(R) (see DISCLAIMER).
calc volume of the particles from the voidfraction field
Class
particleCellVolume
SourceFiles
particleCellVolume.C
\*---------------------------------------------------------------------------*/
#ifndef particleCellVolume_H
#define particleCellVolume_H
#include "forceModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class particleCellVolume Declaration
\*---------------------------------------------------------------------------*/
class particleCellVolume
:
public forceModel
{
private:
dictionary propsDict_;
const fvMesh& mesh_;
scalar startTime_;
const word scalarFieldName_;
mutable volScalarField scalarField_;
mutable scalar upperThreshold_;
mutable scalar lowerThreshold_;
Switch verbose_;
public:
//- Runtime type information
TypeName("particleCellVolume");
// Constructors
//- Construct from components
particleCellVolume
(
const dictionary& dict,
cfdemCloud& sm
);
// Destructor
~particleCellVolume();
// Member Functions
void setForce() const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -161,6 +161,7 @@ void volWeightedAverage::setForce() const
scalar cellVol=-1;
scalar totVol=0;
scalar totVol_all=0;
scalar integralValue=0;
forAll(field,cellI)
{
@ -178,13 +179,18 @@ void volWeightedAverage::setForce() const
}
MPI_Allreduce(&totVol, &totVol_all, 3, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
volWeightedAverage = gSum(scalarFields_[i]) / (totVol_all+SMALL);
integralValue = gSum(scalarFields_[i]);
volWeightedAverage = integralValue / (totVol_all+SMALL);
scalarFields_[i].internalField() = volWeightedAverage;
if(verbose_)
{
Info << "calculated vol. weighted average of field: " << scalarFieldNames_[i]
<< " = " << volWeightedAverage
<< ",\n integral value "
<< " = " << integralValue
<< ",\n volume accounted for "
<< " = " << totVol_all
<< ",\n considering cells where the field < " << upperThreshold_
<< ", and > " << lowerThreshold_ << endl;
}

View File

@ -150,7 +150,7 @@ tmp<volScalarField> implicitCouple::impMomSource() const
{
Ur = mag(U_[cellI] - Us_[cellI]);
if(Ur > 0. && (1.-alpha_[cellI]) > SMALL) //momentum exchange switched off if alphaMin=1
if(Ur > SMALL && (1.-alpha_[cellI]) > SMALL) //momentum exchange switched off if alphaMin=1
{
KslNext_[cellI] = mag(particleCloud_.forceM(0).impParticleForces()[cellI])
/ Ur

View File

@ -6,6 +6,8 @@
Christoph Goniva, christoph.goniva@cfdem.com
Copyright 2009-2012 JKU Linz
Copyright 2012- DCS Computing GmbH, Linz
Copyright (C) 2013- Graz University of
Technology, IPPT
-------------------------------------------------------------------------------
License
This file is part of CFDEMcoupling.
@ -63,8 +65,11 @@ constDiffSmoothing::constDiffSmoothing
propsDict_(dict.subDict(typeName + "Props")),
lowerLimit_(readScalar(propsDict_.lookup("lowerLimit"))),
upperLimit_(readScalar(propsDict_.lookup("upperLimit"))),
DT_(dimensionedScalar("DT",dimensionSet(0,2,-1,0,0,0,0),readScalar(propsDict_.lookup("DT"))))
{}
smoothingLength_(dimensionedScalar("smoothingLength",dimensionSet(0,1,0,0,0,0,0), readScalar(propsDict_.lookup("smoothingLength")))),
DT_("DT", dimensionSet(0,2,-1,0,0), 0.)
{
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
@ -73,9 +78,39 @@ constDiffSmoothing::~constDiffSmoothing()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool constDiffSmoothing::doSmoothing() const
{
return true;
}
void constDiffSmoothing::dSmoothing(volScalarField& dSmooth) const
{
tmp<volScalarField> dSmooth0
(
new volScalarField
(
IOobject
(
"dSmooth",
particleCloud_.mesh().time().timeName(),
particleCloud_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
particleCloud_.mesh(),
smoothingLength_
)
);
dSmooth.internalField() = dSmooth0;
}
void Foam::constDiffSmoothing::smoothen(volScalarField& field) const
{
double deltaT = field.mesh().time().deltaTValue();
DT_.value() = smoothingLength_.value() * smoothingLength_.value() / deltaT;
// do smoothing
solve
(
@ -89,9 +124,12 @@ void Foam::constDiffSmoothing::smoothen(volScalarField& field) const
field[cellI]=max(lowerLimit_,min(upperLimit_,field[cellI]));
}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void Foam::constDiffSmoothing::smoothen(volVectorField& field) const
{
double deltaT = field.mesh().time().deltaTValue();
DT_.value() = smoothingLength_.value() * smoothingLength_.value() / deltaT;
// do smoothing
solve
(
@ -100,6 +138,51 @@ void Foam::constDiffSmoothing::smoothen(volVectorField& field) const
);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void Foam::constDiffSmoothing::smoothenReferenceField(volVectorField& field) const
{
dimensionedScalar deltaT = particleCloud_.mesh().time().deltaT();
DT_.value() = smoothingLength_.value() * smoothingLength_.value() / deltaT.value();
tmp<volScalarField> NLarge
(
new volScalarField
(
IOobject
(
"xxx",
particleCloud_.mesh().time().timeName(),
particleCloud_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
particleCloud_.mesh(),
0.0
)
);
//loop over particles and map max particle diameter to Euler Grid
for(int cellI = 0; cellI < field.mesh().nCells(); cellI++)
{
if ( mag(field.internalField()[cellI]) > 0) // have a vector in the field, so keep it!
{
NLarge()[cellI] = 1e5; //use large value here to keep cell values constant
}
}
// do smoothing
fvVectorMatrix dSmoothEqn
(
fvm::ddt(field) == fvm::laplacian( DT_, field)
+ NLarge() / deltaT * field.oldTime() //add source to keep cell values constant
- fvm::Sp( NLarge() / deltaT, field) //add sink to keep cell values constant
);
dSmoothEqn.solve();
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam

View File

@ -6,6 +6,8 @@
Christoph Goniva, christoph.goniva@cfdem.com
Copyright 2009-2012 JKU Linz
Copyright 2012- DCS Computing GmbH, Linz
Copyright (C) 2013- Graz University of
Technology, IPPT
-------------------------------------------------------------------------------
License
This file is part of CFDEMcoupling.
@ -60,7 +62,8 @@ private:
dictionary propsDict_;
scalar lowerLimit_;
scalar upperLimit_;
dimensionedScalar DT_;
dimensionedScalar smoothingLength_;
mutable dimensionedScalar DT_;
public:
@ -83,9 +86,16 @@ public:
// Member Functions
bool doSmoothing() const;
void dSmoothing(volScalarField&) const;
void smoothen(volScalarField&) const;
void smoothen(volVectorField&) const;
void smoothenReferenceField(volVectorField&) const;
};

View File

@ -80,6 +80,11 @@ void Foam::noSmoothing::smoothen(volVectorField& field) const
field=field.oldTime();
}
void Foam::noSmoothing::smoothenReferenceField(volVectorField& field) const
{
field=field.oldTime();
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam

View File

@ -79,6 +79,8 @@ public:
void smoothen(volScalarField&) const;
void smoothen(volVectorField&) const;
void smoothenReferenceField(volVectorField&) const;
};

View File

@ -69,6 +69,17 @@ Foam::smoothingModel::~smoothingModel()
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool smoothingModel::doSmoothing() const
{
return false;
}
void smoothingModel::dSmoothing(volScalarField& dSmooth) const
{
dSmooth *= 0.0;
}
} // End namespace Foam
// ************************************************************************* //

View File

@ -101,9 +101,16 @@ public:
// Member Functions
virtual bool doSmoothing() const;
// the particle diameter for smoothing
virtual void dSmoothing(volScalarField&) const;
virtual void smoothen(volScalarField&) const=0;
virtual void smoothen(volVectorField&) const=0;
virtual void smoothenReferenceField(volVectorField&) const=0;
};

View File

@ -76,6 +76,8 @@ GaussVoidFraction::GaussVoidFraction
if(scaleUpVol_ < 1){ FatalError<< "scaleUpVol shloud be > 1."<< abort(FatalError); }
if(alphaMin_ > 1 || alphaMin_ < 0.01){ FatalError<< "alphaMin shloud be > 1 and < 0.01." << abort(FatalError); }
if (propsDict_.found("weight"))
setWeight(readScalar(propsDict_.lookup("weight")));
}
@ -111,7 +113,7 @@ void GaussVoidFraction::setvoidFraction(double** const& mask,double**& voidfract
scalar radius = particleCloud_.radii()[index][0];
//Info << "physical radius" << radius << endl;
scalar volume = 4./3.*radius*radius*radius*pi;
scalar volume = 4./3.*radius*radius*radius*pi*weight();
radius = radius*pow(scaleUpVol_,0.3333);
//Info << "fictuous radius" << radius << endl;
vector positionCenter=particleCloud_.position(index);

View File

@ -76,6 +76,8 @@ bigParticleVoidFraction::bigParticleVoidFraction
if(scaleUpVol_ < 1){ FatalError<< "scaleUpVol shloud be > 1."<< abort(FatalError); }
if(alphaMin_ > 1 || alphaMin_ < 0.01){ FatalError<< "alphaMin shloud be > 1 and < 0.01." << abort(FatalError); }
if (propsDict_.found("weight"))
setWeight(readScalar(propsDict_.lookup("weight")));
}
@ -111,7 +113,7 @@ void bigParticleVoidFraction::setvoidFraction(double** const& mask,double**& voi
scalar radius = particleCloud_.radii()[index][0];
//Info << "physical radius" << radius << endl;
scalar volume = 4./3.*radius*radius*radius*3.1415;
scalar volume = 4./3.*radius*radius*radius*3.1415*weight();
radius = radius*pow(scaleUpVol_,0.3333);
//Info << "fictuous radius" << radius << endl;
vector positionCenter=particleCloud_.position(index);

View File

@ -65,7 +65,9 @@ centreVoidFraction::centreVoidFraction
alphaMin_(readScalar(propsDict_.lookup("alphaMin"))),
alphaLimited_(0)
{
Info << "centreVoidFraction constructor done" << endl;
Info << "centreVoidFraction constructor done" << endl;
if (propsDict_.found("weight"))
setWeight(readScalar(propsDict_.lookup("weight")));
}
@ -95,7 +97,7 @@ void centreVoidFraction::setvoidFraction(double** const& mask,double**& voidfrac
{
scalar ds = 2*particleCloud_.radii()[index][0];
scalar cellVolume=voidfractionNext_.mesh().V()[cellI];
scalar particleVolume= ds*ds*ds/6.*3.1415;
scalar particleVolume= ds*ds*ds/6.*3.1415*weight();
// store particleVolume for each particle
particleVolumes[index][0] = particleVolume;

View File

@ -80,6 +80,8 @@ dividedVoidFraction::dividedVoidFraction
Warning << "interpolation for dividedVoidFraction does not yet work correctly!" << endl;
Info << "Using interpolated voidfraction field - do not use this in combination with interpolation in drag model!"<< endl;
}
if (propsDict_.found("weight"))
setWeight(readScalar(propsDict_.lookup("weight")));
}
@ -116,7 +118,7 @@ void dividedVoidFraction::setvoidFraction(double** const& mask,double**& voidfra
position = particleCloud_.position(index);
cellID = particleCloud_.cellIDs()[index][0];
radius = particleCloud_.radii()[index][0];
scalar volume = 4./3.*radius*radius*radius*3.1415;
scalar volume = 4./3.*radius*radius*radius*3.1415*weight();
radius = radius*pow(scaleUpVol_,1/3);
cellVol=0;

View File

@ -75,6 +75,8 @@ dividedVoidFractionMS::dividedVoidFractionMS
if(scaleUpVol_ > 1.3 || scaleUpVol_ < 1){ FatalError<< "scaleUpVol shloud be > 1 and < 1.3 !!!" << abort(FatalError); }
if(alphaMin_ > 1 || alphaMin_ < 0.01){ FatalError<< "alphaMin shloud be > 1 and < 0.01 !!!" << abort(FatalError); }
if (propsDict_.found("weight"))
setWeight(readScalar(propsDict_.lookup("weight")));
}
@ -106,7 +108,7 @@ void dividedVoidFractionMS::setvoidFraction(double** const& mask,double**& voidf
vector position = particleCloud_.position(index);
label cellID = particleCloud_.cellIDs()[index][0];
scalar radius = particleCloud_.radii()[index][0];
scalar volume = clumpVol_/nrigid_;
scalar volume = clumpVol_/nrigid_*weight();
radius = radius*pow(scaleUpVol_,1/3);
scalar cellVol(1);

View File

@ -84,7 +84,8 @@ voidFractionModel::voidFractionModel
dimensionedScalar("zero", dimensionSet(0,0,0,0,0), 1)*/
),
cellsPerParticle_(NULL),
maxCellsPerParticle_(1)
maxCellsPerParticle_(1),
weight_(1.)
{
particleCloud_.dataExchangeM().allocateArray(cellsPerParticle_,1,maxCellsPerParticle_);
}

View File

@ -71,6 +71,8 @@ protected:
int maxCellsPerParticle_;
mutable scalar weight_;
// Protected member functions
public:
@ -126,6 +128,10 @@ public:
inline volScalarField& voidFractionNext()const { return voidfractionNext_; }
inline void setWeight(scalar weight)const { weight_ = weight; }
inline scalar weight()const { return weight_; }
void resetVoidFractions() const;
//void undoVoidFractions(double**const&) const;

View File

@ -79,4 +79,13 @@ relaxationFactors
"epsilon.*" 1;
}
PISO
{
nCorrectors 4;
nNonOrthogonalCorrectors 1;
pRefCell 0;
pRefValue 0;
}
// ************************************************************************* //

View File

@ -66,3 +66,7 @@ dummyfile
dummyfile
dummyfile
dummyfile
dummyfile
dummyfile
dummyfile
dummyfile

View File

@ -18,7 +18,7 @@ casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
logpath=$casePath
headerText="run_parallel_cfdemSolverPimple_ErgunTestMPI_CFDDEM"
logfileName="log_$headerText"
solverName="cfdemSolverPimpleSmooth"
solverName="cfdemSolverPimple" #"cfdemSolverPimpleDyM_22x"#
nrProcs="2"
machineFileName="none" # yourMachinefileName | none
debugMode="off" # on | off
@ -54,6 +54,7 @@ rm -rf 0.*
rm -rf processor*
rm -rf patchAverage_pressureDrop
rm -rf probes
rm -rf postProcessing
rm log.liggghts
rm ../DEM/post/dump*
rm -rf particles

View File

@ -46,11 +46,14 @@ averagingModel dense;//dilute;//
clockModel off;//standardClock;//
smoothingModel off;
forceModels
(
//GidaspowDrag
//DiFeliceDrag
KochHillDrag
//BeetstraDrag
gradPForce
viscForce
//Archimedes
@ -136,6 +139,21 @@ KochHillDragProps
//verbose;
}
BeetstraDragProps
{
velFieldName "U";
densityFieldName "rho";
gravityFieldName "g";
rhoParticle 2000.;
voidfractionFieldName "voidfraction";
interpolation ;
useFilteredDragModel ;
useParcelSizeDependentFilteredDrag ;
k 0.05;
aLimit 0.0;
// verbose ;
}
virtualMassForceProps
{
velFieldName "U";

View File

@ -51,13 +51,15 @@ smoothingModel off;
forceModels
(
//GidaspowDrag
DiFeliceDrag
//KochHillDrag
//BeetstraDrag
//DiFeliceDrag
KochHillDrag
gradPForce
viscForce
//Archimedes
//volWeightedAverage
//totalMomentumExchange
particleCellVolume
);
momCoupleModels
@ -137,12 +139,34 @@ KochHillDragProps
voidfractionFieldName "voidfraction";
}
BeetstraDragProps
{
velFieldName "U";
densityFieldName "rho";
gravityFieldName "g";
rhoParticle 2000.;
voidfractionFieldName "voidfraction";
interpolation ;
useFilteredDragModel ;
useParcelSizeDependentFilteredDrag ;
k 0.05;
aLimit 0.0;
// verbose ;
}
virtualMassForceProps
{
velFieldName "U";
densityFieldName "rho";
}
particleCellVolumeProps
{
upperThreshold 0.999;
lowerThreshold 0.;
verbose;
}
oneWayVTKProps
{
couplingFilename "vtk_out%4.4d.vtk";
@ -174,7 +198,7 @@ turboEngineM2MProps
dividedProps
{
alphaMin 0.1;
alphaMin 0.01;
scaleUpVol 1.0;
}