mirror of
https://github.com/ParticulateFlow/CFDEMcoupling-PFM.git
synced 2025-12-08 06:37:44 +00:00
release on 2014-04-15_09-22-01
This commit is contained in:
81
README
Executable file
81
README
Executable 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.
|
||||
\*---------------------------------------------------------------------------*/
|
||||
@ -130,9 +130,12 @@ int main(int argc, char *argv[])
|
||||
volScalarField rUA = 1.0/UEqn.A();
|
||||
|
||||
U = rUA*UEqn.H();
|
||||
#ifdef version23
|
||||
phi = (fvc::interpolate(U) & mesh.Sf()); // there is a new version in 23x
|
||||
#else
|
||||
phi = (fvc::interpolate(U) & mesh.Sf())
|
||||
+ fvc::ddtPhiCorr(rUA, U, phi);
|
||||
|
||||
#endif
|
||||
adjustPhi(phi, U, p);
|
||||
|
||||
#if defined(version22)
|
||||
|
||||
@ -73,7 +73,7 @@ int main(int argc, char *argv[])
|
||||
// do particle stuff
|
||||
particleCloud.clockM().start(2,"Coupling");
|
||||
particleCloud.evolve(voidfraction,Us,U);
|
||||
|
||||
|
||||
Info << "update Ksl.internalField()" << endl;
|
||||
Ksl = particleCloud.momCoupleM(0).impMomSource();
|
||||
particleCloud.smoothingM().smoothen(Ksl);
|
||||
@ -88,8 +88,8 @@ int main(int argc, char *argv[])
|
||||
// Momentum predictor
|
||||
fvVectorMatrix UEqn
|
||||
(
|
||||
fvm::ddt(voidfraction,U) //particleCloud.ddtVoidfractionU(U,voidfraction) //
|
||||
+ fvm::div(phi, U)
|
||||
fvm::ddt(voidfraction,U) + fvm::Sp(fvc::ddt(voidfraction),U)
|
||||
+ fvm::div(phi,U) + fvm::Sp(fvc::div(phi),U)
|
||||
// + turbulence->divDevReff(U)
|
||||
+ particleCloud.divVoidfractionTau(U, voidfraction)
|
||||
==
|
||||
|
||||
@ -133,8 +133,12 @@ int main(int argc, char *argv[])
|
||||
|
||||
U = rUA*UEqn.H();
|
||||
|
||||
#ifdef version23
|
||||
phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() );
|
||||
#else
|
||||
phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() )
|
||||
+ fvc::ddtPhiCorr(rUAvoidfraction, U, phi);
|
||||
#endif
|
||||
surfaceScalarField phiS(fvc::interpolate(Us*voidfraction) & mesh.Sf());
|
||||
surfaceScalarField phiGes = phi + rUAf*(fvc::interpolate(Ksl/rho) * phiS);
|
||||
if (modelType=="A")
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
<H3>1. Contents
|
||||
</H3>
|
||||
<P>The CFDEMcoupling documentation is organized into the following sections. If you find errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so we can improve the CFDEMcoupling documentation.
|
||||
<P>The CFDEMcoupling documentation is organized into the following sections. If you find any errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so the CFDEMcoupling documentation can be improved.
|
||||
</P>
|
||||
1.1 <A HREF = "#1_1">About CFDEMcoupling</A><BR>
|
||||
1.2 <A HREF = "#1_2">Installation</A><BR>
|
||||
@ -63,11 +63,11 @@
|
||||
|
||||
</UL>
|
||||
<P>Details on installation are given on the <A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A> .
|
||||
The functionality of this CFD-DEM framwork is described via <A HREF = "#_1_2">tutorial cases</A> showing how to use different solvers and models.
|
||||
The functionality of this CFD-DEM framework is described via <A HREF = "#_1_2">tutorial cases</A> showing how to use different solvers and models.
|
||||
</P>
|
||||
<P>CFDEMcoupling stands for Computational Fluid Dynamics (CFD) -Discrete Element Method (DEM) coupling.
|
||||
</P>
|
||||
<P>CFDEMcoupling is an open-source code, distributed freely under the terms of the GNU Public License (GPL).
|
||||
<P>CFDEMcoupling is an open-source code, distributed freely under the terms of the GNU Public License (GPL).
|
||||
</P>
|
||||
<P>Core development of CFDEMcoupling is done by Christoph Goniva and Christoph Kloss, both at DCS Computing GmbH, 2012
|
||||
</P>
|
||||
@ -90,7 +90,7 @@ In order to get the latest code version, please use the git repository at http:/
|
||||
</H4>
|
||||
<P><B>General:</B>
|
||||
</P>
|
||||
<P>Each solver of the CFDEMcoupling is comes with at least one tutorial example, showing its functionality and correct useage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization).
|
||||
<P>Each solver of the CFDEMcoupling comes with at least one tutorial example, showing its functionality and correct usage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization).
|
||||
</P>
|
||||
<P><B>Location:</B>
|
||||
</P>
|
||||
@ -108,7 +108,7 @@ In order to get the latest code version, please use the git repository at http:/
|
||||
</P>
|
||||
<P>The main settings of a simulation are done via dictionaries:
|
||||
</P>
|
||||
<P>The DEM setup of each case is defined by a <A HREF = "http://www.cfdem.com">LIGGGHTS</A> input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the <A HREF = "http://www.cfdem.com">LIGGGHTS</A> setup, please have a look in the <A HREF = "http://www.cfdem.com">LIGGGHTS</A> manual.
|
||||
<P>The DEM setup of each case is defined by a <A HREF = "http://www.cfdem.com">LIGGGHTS</A> input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the <A HREF = "http://www.cfdem.com">LIGGGHTS</A> setup, please have a look at the <A HREF = "http://www.cfdem.com">LIGGGHTS</A> manual.
|
||||
</P>
|
||||
<P>Standard CFD settings are defined in $caseDir/CFD/constant (e.g. transportProperties, RASproperties, etc.) and $caseDir/CFD/system (e.g. fvSchemes, controlDict). You can find more information on that in <A HREF = "http://www.openfoam.com">OpenFOAM(R)(*)</A> documentations (www.openFoam.com)(*).
|
||||
</P>
|
||||
@ -164,16 +164,16 @@ In order to get the latest code version, please use the git repository at http:/
|
||||
</P>
|
||||
<PRE>modelType
|
||||
</PRE>
|
||||
<P>"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their appliccability", JFM. "A" requres the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes".
|
||||
<P>"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes".
|
||||
</P>
|
||||
<PRE>couplingInterval
|
||||
</PRE>
|
||||
<P>The coupling interval determines the time passing between two CFD-DEM data exchanges.
|
||||
<P>The coupling interval determines the time passing between two CFD-DEM data exchanges.
|
||||
</P>
|
||||
<P>A useful procedure would be:
|
||||
1) Set the DEM TS in the in.xxx according to the needs of the pure DEM problem.
|
||||
1) Set the DEM timestep in the in.xxx file according to the needs of the pure DEM problem.
|
||||
2) Set the "couplingInterval", which refers to the DEM timesteps. Depending on the problem you will need to have a close (small couplingInterval) or loose coupling.
|
||||
3) Choose the CFD timestep in the controlDict. it must be equal or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!".
|
||||
3) Choose the CFD timestep in the controlDict. It must be equal to or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!".
|
||||
</P>
|
||||
<P>Example: DEMts=0.00001s, couplingInterval=10 exchange data (=couple) will happen every 0.0001s.
|
||||
</P>
|
||||
|
||||
Binary file not shown.
@ -12,7 +12,7 @@ CFDEMcoupling Documentation :h2,c
|
||||
:line
|
||||
1. Contents :h3
|
||||
|
||||
The CFDEMcoupling documentation is organized into the following sections. If you find errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so we can improve the CFDEMcoupling documentation.
|
||||
The CFDEMcoupling documentation is organized into the following sections. If you find any errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so the CFDEMcoupling documentation can be improved.
|
||||
|
||||
1.1 "About CFDEMcoupling"_#1_1
|
||||
1.2 "Installation"_#1_2
|
||||
@ -45,11 +45,11 @@ The file structure:
|
||||
:ule
|
||||
|
||||
Details on installation are given on the "CFDEMproject WWW Site"_lws .
|
||||
The functionality of this CFD-DEM framwork is described via "tutorial cases"_#_1_2 showing how to use different solvers and models.
|
||||
The functionality of this CFD-DEM framework is described via "tutorial cases"_#_1_2 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).
|
||||
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
|
||||
|
||||
@ -71,7 +71,7 @@ In order to get the latest code version, please use the git repository at http:/
|
||||
|
||||
[General:]
|
||||
|
||||
Each solver of the CFDEMcoupling is comes with at least one tutorial example, showing its functionality and correct useage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization).
|
||||
Each solver of the CFDEMcoupling comes with at least one tutorial example, showing its functionality and correct usage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization).
|
||||
|
||||
[Location:]
|
||||
|
||||
@ -89,7 +89,7 @@ Provided that the installation is correct, the tutorials can be run via "Allrun.
|
||||
|
||||
The main settings of a simulation are done via dictionaries:
|
||||
|
||||
The DEM setup of each case is defined by a "LIGGGHTS"_lig input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the "LIGGGHTS"_lig setup, please have a look in the "LIGGGHTS"_lig manual.
|
||||
The DEM setup of each case is defined by a "LIGGGHTS"_lig input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the "LIGGGHTS"_lig setup, please have a look at the "LIGGGHTS"_lig manual.
|
||||
|
||||
Standard CFD settings are defined in $caseDir/CFD/constant (e.g. transportProperties, RASproperties, etc.) and $caseDir/CFD/system (e.g. fvSchemes, controlDict). You can find more information on that in "OpenFOAM(R)(*)"_of documentations (www.openFoam.com)(*).
|
||||
|
||||
@ -133,16 +133,16 @@ Reasonable example settings for the "couplingProperties" dictionary are given in
|
||||
|
||||
modelType :pre
|
||||
|
||||
"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their appliccability", JFM. "A" requres the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes".
|
||||
"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes".
|
||||
|
||||
couplingInterval :pre
|
||||
|
||||
The coupling interval determines the time passing between two CFD-DEM data exchanges.
|
||||
The coupling interval determines the time passing between two CFD-DEM data exchanges.
|
||||
|
||||
A useful procedure would be:
|
||||
1) Set the DEM TS in the in.xxx according to the needs of the pure DEM problem.
|
||||
1) Set the DEM timestep in the in.xxx file according to the needs of the pure DEM problem.
|
||||
2) Set the "couplingInterval", which refers to the DEM timesteps. Depending on the problem you will need to have a close (small couplingInterval) or loose coupling.
|
||||
3) Choose the CFD timestep in the controlDict. it must be equal or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!".
|
||||
3) Choose the CFD timestep in the controlDict. It must be equal to or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!".
|
||||
|
||||
Example: DEMts=0.00001s, couplingInterval=10 exchange data (=couple) will happen every 0.0001s.
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the ceyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation.
|
||||
<P>The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the keyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation.
|
||||
</P>
|
||||
<P><B>Restrictions:</B> None.
|
||||
</P>
|
||||
|
||||
@ -19,7 +19,7 @@ IOModel "basicIO"; :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the ceyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation.
|
||||
The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the keyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation.
|
||||
|
||||
[Restrictions:] None.
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks generats tracks of the particles and writes them to a vtk file.
|
||||
<P>The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks utility generates tracks of the particles and writes them to a vtk file.
|
||||
</P>
|
||||
<P><B>Restrictions:</B> None.
|
||||
</P>
|
||||
|
||||
@ -19,7 +19,7 @@ IOModel "trackIO"; :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks generats tracks of the particles and writes them to a vtk file.
|
||||
The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks utility generates tracks of the particles and writes them to a vtk file.
|
||||
|
||||
[Restrictions:] None.
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<PRE>averagingModel dense;
|
||||
averagingModel dilute;
|
||||
</PRE>
|
||||
<P>Note: This examples list might not be complete - please look for other averagin models (averagingModel_XY) in this documentation.
|
||||
<P>Note: This examples list might not be complete - please look for other averaging models (averagingModel_XY) in this documentation.
|
||||
</P>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
|
||||
@ -20,7 +20,7 @@ model = name of averaging model to be applied :ul
|
||||
averagingModel dense;
|
||||
averagingModel dilute; :pre
|
||||
|
||||
Note: This examples list might not be complete - please look for other averagin models (averagingModel_XY) in this documentation.
|
||||
Note: This examples list might not be complete - please look for other averaging models (averagingModel_XY) in this documentation.
|
||||
|
||||
[Description:]
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
<P>"cfdemSolverIB" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework, for calculating
|
||||
the dynamics between immersed bodies and the surrounding fluid. Being an implementation of an immersed boundary method it allows tackling problems where the body diameter exceeds the maximal size of a fluid cell. Using the toolbox of OpenFOAM(R)(*) the governing equations of the fluid are computed and the corrections of velocity and pressure field with respect to the body-movement information, gained from LIGGGHTS, are incorporated.
|
||||
</P>
|
||||
<P>Code of this solver contributions by Alice Hager, JKU.
|
||||
<P>Code of this solver contributions by Alice Hager, JKU.
|
||||
</P>
|
||||
<P><B>Algorithm:</B>
|
||||
</P>
|
||||
|
||||
@ -12,7 +12,7 @@ cfdemSolverIB command :h3
|
||||
"cfdemSolverIB" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework, for calculating
|
||||
the dynamics between immersed bodies and the surrounding fluid. Being an implementation of an immersed boundary method it allows tackling problems where the body diameter exceeds the maximal size of a fluid cell. Using the toolbox of OpenFOAM(R)(*) the governing equations of the fluid are computed and the corrections of velocity and pressure field with respect to the body-movement information, gained from LIGGGHTS, are incorporated.
|
||||
|
||||
Code of this solver contributions by Alice Hager, JKU.
|
||||
Code of this solver contributions by Alice Hager, JKU.
|
||||
|
||||
[Algorithm:]
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
</H3>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS.
|
||||
<P>"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying the PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS.
|
||||
</P>
|
||||
<P>see:
|
||||
</P>
|
||||
|
||||
@ -9,7 +9,7 @@ cfdemSolverPiso command :h3
|
||||
|
||||
[Description:]
|
||||
|
||||
"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS.
|
||||
"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying the PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS.
|
||||
|
||||
see:
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The "standardClock" model is a basic clockModel model which measures the run time between every ".start(int arrayPos,string name)" and ".stop(string name)" statement placed in the code. If a ".start(name)" is called more than once (e.g. in a loop) the accumulated times are calculated. After the simulation has finished, the data is stored in $caseDir/CFD/clockData/$startTime/*.txt .
|
||||
Since the measurements are stored in an array, it is necessary to put a variable <I>arrayPos</I> (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If <I>arrayPos</I> is out of bounds, the array size will be doubled. The stop command does not need <I>arrayPos</I>, since the class remembers the positions. The string name is for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information.
|
||||
Since the measurements are stored in an array, it is necessary to put a variable <I>arrayPos</I> (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If <I>arrayPos</I> is out of bounds, the array size will be doubled. The stop command does not need <I>arrayPos</I>, since the class remembers the positions. The string name is intended for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information.
|
||||
After the case ran you may use the matPlot.py script located in $CFDEM_UT_DIR/vizClock/ to produce a graphical output of your measurements. The usage is like 'python < matPlot.py' and you have to be in the directory of the desired time step, where there is a file called "timeEvalFull.txt", which contains averaged and maximum data with respect to the number of processes.
|
||||
</P>
|
||||
<P><B>Restrictions:</B> none.
|
||||
|
||||
@ -20,7 +20,7 @@ clockModel standardClock; :pre
|
||||
[Description:]
|
||||
|
||||
The "standardClock" model is a basic clockModel model which measures the run time between every ".start(int arrayPos,string name)" and ".stop(string name)" statement placed in the code. If a ".start(name)" is called more than once (e.g. in a loop) the accumulated times are calculated. After the simulation has finished, the data is stored in $caseDir/CFD/clockData/$startTime/*.txt .
|
||||
Since the measurements are stored in an array, it is necessary to put a variable {arrayPos} (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If {arrayPos} is out of bounds, the array size will be doubled. The stop command does not need {arrayPos}, since the class remembers the positions. The string name is for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information.
|
||||
Since the measurements are stored in an array, it is necessary to put a variable {arrayPos} (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If {arrayPos} is out of bounds, the array size will be doubled. The stop command does not need {arrayPos}, since the class remembers the positions. The string name is intended for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information.
|
||||
After the case ran you may use the matPlot.py script located in $CFDEM_UT_DIR/vizClock/ to produce a graphical output of your measurements. The usage is like 'python < matPlot.py' and you have to be in the directory of the desired time step, where there is a file called "timeEvalFull.txt", which contains averaged and maximum data with respect to the number of processes.
|
||||
|
||||
[Restrictions:] none.
|
||||
|
||||
@ -28,7 +28,7 @@ oneWayVTKProps
|
||||
|
||||
<LI><I>filename</I> = filename of the VTK file series
|
||||
|
||||
<LI><I>number</I> = maximum nuber of particles in DEM simulation
|
||||
<LI><I>number</I> = maximum number of particles in DEM simulation
|
||||
|
||||
|
||||
</UL>
|
||||
|
||||
@ -23,7 +23,7 @@ oneWayVTKProps
|
||||
{timeStep} = time step size of stored DEM data :ulb,l
|
||||
{path} = path to the VTK data files relative do simulation directory :l
|
||||
{filename} = filename of the VTK file series :l
|
||||
{number} = maximum nuber of particles in DEM simulation :l
|
||||
{number} = maximum number of particles in DEM simulation :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
@ -22,7 +22,7 @@ twoWayFilesProps
|
||||
</PRE>
|
||||
<UL><LI><I>filename</I> = filename of the VTK file series
|
||||
|
||||
<LI><I>number</I> = maximum nuber of particles in DEM simulation
|
||||
<LI><I>number</I> = maximum number of particles in DEM simulation
|
||||
|
||||
|
||||
</UL>
|
||||
@ -41,7 +41,7 @@ twoWayFilesProps
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
<P>Developed only for two processors, one for DEM and on for CFD run.
|
||||
<P>Developed only for two processors, one for DEM and one for CFD run.
|
||||
</P>
|
||||
<P><B>Related commands:</B>
|
||||
</P>
|
||||
|
||||
@ -19,7 +19,7 @@ twoWayFilesProps
|
||||
\}; :pre
|
||||
|
||||
{filename} = filename of the VTK file series :ulb,l
|
||||
{number} = maximum nuber of particles in DEM simulation :l
|
||||
{number} = maximum number of particles in DEM simulation :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -37,7 +37,7 @@ The data exchange model performs the data exchange between the DEM code and the
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
Developed only for two processors, one for DEM and on for CFD run.
|
||||
Developed only for two processors, one for DEM and one for CFD run.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ ArchimedesIBProps
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method.
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method.
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
|
||||
@ -42,7 +42,7 @@ ArchimedesIBProps
|
||||
|
||||
[Description:]
|
||||
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method.
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ DiFeliceDragProps
|
||||
|
||||
<LI><I>density</I> = name of the finite volume gravity field
|
||||
|
||||
<LI><I>interpolation</I> = flag to use interolate interpolated voidfraction and velocity values (normally off)
|
||||
<LI><I>interpolation</I> = flag to use interpolated voidfraction and velocity values (normally off)
|
||||
|
||||
|
||||
</UL>
|
||||
|
||||
@ -24,7 +24,7 @@ DiFeliceDragProps
|
||||
|
||||
{U} = name of the finite volume fluid velocity field :ulb,l
|
||||
{density} = name of the finite volume gravity field :l
|
||||
{interpolation} = flag to use interolate interpolated voidfraction and velocity values (normally off) :l
|
||||
{interpolation} = flag to use interpolated voidfraction and velocity values (normally off) :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
@ -21,8 +21,9 @@ GidaspowDragProps
|
||||
{
|
||||
velFieldName "U";
|
||||
densityFieldName "density";
|
||||
voidfractionFieldName "voidfraction";
|
||||
voidfractionFieldName "voidfraction";
|
||||
phi "scalar";
|
||||
interpolation;
|
||||
};
|
||||
</PRE>
|
||||
<UL><LI><I>U</I> = name of the finite volume fluid velocity field
|
||||
@ -33,6 +34,8 @@ GidaspowDragProps
|
||||
|
||||
<LI><I>phi</I> = drag correction factor (in doubt 1)
|
||||
|
||||
<LI><I>interpolation</I> = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values
|
||||
|
||||
|
||||
</UL>
|
||||
<P><B>Examples:</B>
|
||||
@ -45,12 +48,12 @@ GidaspowDragProps
|
||||
{
|
||||
velFieldName "U";
|
||||
densityFieldName "rho";
|
||||
voidfractionFieldName "voidfraction";
|
||||
voidfractionFieldName "voidfraction";
|
||||
}
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Egrun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments" ,ChemEngScience).
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Ergun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments", ChemEngScience).
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
|
||||
@ -19,14 +19,16 @@ GidaspowDragProps
|
||||
\{
|
||||
velFieldName "U";
|
||||
densityFieldName "density";
|
||||
voidfractionFieldName "voidfraction";
|
||||
voidfractionFieldName "voidfraction";
|
||||
phi "scalar";
|
||||
interpolation;
|
||||
\}; :pre
|
||||
|
||||
{U} = name of the finite volume fluid velocity field :ulb,l
|
||||
{density} = name of the finite volume gravity field :l
|
||||
{voidfraction} = name of the finite volume voidfraction field :l
|
||||
{phi} = drag correction factor (in doubt 1) :l
|
||||
{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -39,12 +41,12 @@ GidaspowDragProps
|
||||
\{
|
||||
velFieldName "U";
|
||||
densityFieldName "rho";
|
||||
voidfractionFieldName "voidfraction";
|
||||
voidfractionFieldName "voidfraction";
|
||||
\} :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Egrun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments" ,ChemEngScience).
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Ergun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments", ChemEngScience).
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ KochHillDragProps
|
||||
|
||||
<LI><I>voidfraction</I> = name of the finite volume voidfraction field
|
||||
|
||||
<LI><I>interpolation</I> = flag to use interpolated voidfraction and fluid velocity values (normally off)
|
||||
<LI><I>interpolation</I> = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values
|
||||
|
||||
<LI><I>implDEM</I> = flag to use implicit formulation of drag on DEM side (normally off)
|
||||
|
||||
@ -52,7 +52,7 @@ KochHillDragProps
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds" ,ChemEngScience).
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds", ChemEngScience).
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
|
||||
@ -26,7 +26,7 @@ KochHillDragProps
|
||||
{U} = name of the finite volume fluid velocity field :ulb,l
|
||||
{density} = name of the finite volume gravity field :l
|
||||
{voidfraction} = name of the finite volume voidfraction field :l
|
||||
{interpolation} = flag to use interpolated voidfraction and fluid velocity values (normally off) :l
|
||||
{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l
|
||||
{implDEM} = flag to use implicit formulation of drag on DEM side (normally off) :l
|
||||
:ule
|
||||
|
||||
@ -45,7 +45,7 @@ KochHillDragProps
|
||||
|
||||
[Description:]
|
||||
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds" ,ChemEngScience).
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds", ChemEngScience).
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
|
||||
@ -28,6 +28,8 @@ LaEuScalarTempProps
|
||||
lambda value;
|
||||
Cp value1;
|
||||
densityFieldName "density";
|
||||
interpolation;
|
||||
verbose;
|
||||
};
|
||||
</PRE>
|
||||
<UL><LI><I>U</I> = name of the finite volume fluid velocity field
|
||||
@ -48,6 +50,10 @@ LaEuScalarTempProps
|
||||
|
||||
<LI><I>density</I> = name of the finite volume fluid density field
|
||||
|
||||
<LI><I>interpolation</I> = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values
|
||||
|
||||
<LI><I>verbose</I> = (normally off) for verbose run
|
||||
|
||||
|
||||
</UL>
|
||||
<P><B>Examples:</B>
|
||||
@ -71,7 +77,7 @@ LaEuScalarTempProps
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112
|
||||
<P>This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
|
||||
@ -26,6 +26,8 @@ LaEuScalarTempProps
|
||||
lambda value;
|
||||
Cp value1;
|
||||
densityFieldName "density";
|
||||
interpolation;
|
||||
verbose;
|
||||
\}; :pre
|
||||
|
||||
{U} = name of the finite volume fluid velocity field :ulb,l
|
||||
@ -37,6 +39,8 @@ LaEuScalarTempProps
|
||||
{value} = fluid thermal conductivity \[W/(m*K)\] :l
|
||||
{value1} = fluid specific heat capacity \[W*s/(kg*K)\] :l
|
||||
{density} = name of the finite volume fluid density field :l
|
||||
{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l
|
||||
{verbose} = (normally off) for verbose run :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -60,7 +64,7 @@ LaEuScalarTempProps
|
||||
|
||||
[Description:]
|
||||
|
||||
This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112
|
||||
This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ ShirgaonkarIBProps
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method.
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method.
|
||||
</P>
|
||||
<P><B>References:</B>
|
||||
</P>
|
||||
|
||||
@ -42,7 +42,7 @@ ShirgaonkarIBProps
|
||||
|
||||
[Description:]
|
||||
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method.
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method.
|
||||
|
||||
[References:]
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ gradPForceProps
|
||||
|
||||
<LI><I>U</I> = name of the finite volume fluid velocity field
|
||||
|
||||
<LI><I>interpolation</I> = flag to use interolate interpolated pressure values (normally off)
|
||||
<LI><I>interpolation</I> = flag to use interpolated pressure values (normally off)
|
||||
|
||||
|
||||
</UL>
|
||||
|
||||
@ -26,7 +26,7 @@ gradPForceProps
|
||||
{pressure} = name of the finite volume fluid pressure field :ulb,l
|
||||
{density} = name of the finite volume gravity field :l
|
||||
{U} = name of the finite volume fluid velocity field :l
|
||||
{interpolation} = flag to use interolate interpolated pressure values (normally off) :l
|
||||
{interpolation} = flag to use interpolated pressure values (normally off) :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
@ -21,7 +21,7 @@ particleCellVolumeProps
|
||||
{
|
||||
upperThreshold value;
|
||||
lowerThreshold value2;
|
||||
verbous;
|
||||
verbose;
|
||||
};
|
||||
</PRE>
|
||||
<LI><I>value</I> = only cells with a field value (magnitude) lower than this upper threshold are considered
|
||||
@ -40,13 +40,13 @@ particleCellVolumeProps
|
||||
{
|
||||
upperThreshold 0.999;
|
||||
lowerThreshold 0;
|
||||
verbous;
|
||||
verbose;
|
||||
}
|
||||
</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. Further the total volume of the cells particles are in 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. Analogously a field named cellVolume is written. Using the verbose option a screen output is given.
|
||||
At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can then be probed using standard function object probes. Analogously a field named cellVolume is written. Using the verbose option a screen output is given.
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
|
||||
@ -19,7 +19,7 @@ particleCellVolumeProps
|
||||
\{
|
||||
upperThreshold value;
|
||||
lowerThreshold value2;
|
||||
verbous;
|
||||
verbose;
|
||||
\}; :pre
|
||||
|
||||
{value} = only cells with a field value (magnitude) lower than this upper threshold are considered :l
|
||||
@ -36,13 +36,13 @@ particleCellVolumeProps
|
||||
\{
|
||||
upperThreshold 0.999;
|
||||
lowerThreshold 0;
|
||||
verbous;
|
||||
verbose;
|
||||
\} :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. Further the total volume of the cells particles are in 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. Analogously a field named cellVolume is written. Using the verbose option a screen output is given.
|
||||
At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can then be probed using standard function object probes. Analogously a field named cellVolume is written. Using the verbose option a screen output is given.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ viscForceProps
|
||||
|
||||
<LI><I>density</I> = name of the finite volume gravity field
|
||||
|
||||
<LI><I>interpolation</I> = flag to use interolate interpolated stress values (normally off)
|
||||
<LI><I>interpolation</I> = flag to use interpolated stress values (normally off)
|
||||
|
||||
|
||||
</UL>
|
||||
@ -46,7 +46,7 @@ viscForceProps
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability" ,JFM).
|
||||
<P>The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM).
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
|
||||
@ -24,7 +24,7 @@ viscForceProps
|
||||
|
||||
{U} = name of the finite volume fluid velocity field :ulb,l
|
||||
{density} = name of the finite volume gravity field :l
|
||||
{interpolation} = flag to use interolate interpolated stress values (normally off) :l
|
||||
{interpolation} = flag to use interpolated stress values (normally off) :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -41,7 +41,7 @@ viscForceProps
|
||||
|
||||
[Description:]
|
||||
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability" ,JFM).
|
||||
The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM).
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>This routine describes how to setup a github account and pull repositories of the CFDEM(R)project.
|
||||
<P>This routine describes how to set up a github account and pull repositories of the CFDEM(R)project.
|
||||
After setting some environment variables LIGGGHTS(R) and CFDEM(R)coupling can be compiled
|
||||
</P>
|
||||
<P><B>Procedure:</B>
|
||||
@ -81,7 +81,7 @@ git pull
|
||||
</P>
|
||||
<PRE>gedit ~/.bashrc &
|
||||
</PRE>
|
||||
<P>add the lines (you find them also in .../cfdemParticle/etc/bashrc and cshrc respectively):
|
||||
<P>add the lines (you find them also in .../cfdemParticle/etc/bashrc and cshrc respectively):
|
||||
</P>
|
||||
<PRE>#================================================#
|
||||
#- source cfdem env vars
|
||||
@ -107,7 +107,7 @@ export CFDEM_PIZZA_DIR=$HOME/LIGGGHTS/PIZZA/gran_pizza_17Aug10/src
|
||||
$CFDEM_SRC_DIR
|
||||
$CFDEM_LIGGGHTS_SRC_DIR
|
||||
</PRE>
|
||||
<P>should give "...: is a directory" otherwise something went wrong and the environment variables in ~/bashrc are not set correctly.
|
||||
<P>should give "...: is a directory" otherwise something went wrong and the environment variables in ~/.bashrc are not set correctly.
|
||||
</P>
|
||||
<P>To specify the paths of pizza, please check the settings in $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/bashrc.
|
||||
</P>
|
||||
@ -139,7 +139,7 @@ Changes in $CFDEM_TUT_DIR will be lost after every <I>git stash</I>!
|
||||
</P>
|
||||
<P><B>Additional Installations:</B>
|
||||
</P>
|
||||
<P>Optionally you can install lpp which will help you convert the DEM (dump) data to VTK format. For standard CFD-DEM runs this will not be necessary. To get the DEM postporcessing tool "lpp" you need python-numpy package installed:
|
||||
<P>Optionally you can install lpp which will help you convert the DEM (dump) data to VTK format. For standard CFD-DEM runs this will not be necessary. To get the DEM postprocessing tool "lpp" you need python-numpy package installed:
|
||||
</P>
|
||||
<PRE>sudo apt-get install python-numpy
|
||||
</PRE>
|
||||
@ -149,9 +149,9 @@ Changes in $CFDEM_TUT_DIR will be lost after every <I>git stash</I>!
|
||||
</PRE>
|
||||
<PRE>git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/lpp mylpp
|
||||
</PRE>
|
||||
<P><B>Backward Compatibility:</B>
|
||||
<P><B>Backwards Compatibility:</B>
|
||||
</P>
|
||||
<P>Basically CFDEM(R)coupling supports one OpenFOAM(R) version therefore all settings are prepared for that. Nevertheless we try to maintain backward compatibility as long as it works with reasonable effort.
|
||||
<P>Basically CFDEM(R)coupling supports one OpenFOAM(R) version therefore all settings are prepared for that. Nevertheless we try to maintain backwards compatibility as long as it works with reasonable effort.
|
||||
</P>
|
||||
<P>The supported OpenFOAM(R) and LIGGGHTS(R) versions are stated in:
|
||||
src/lagrangian/cfdemParticle/cfdTools/versionInfo.H
|
||||
@ -162,7 +162,7 @@ src/lagrangian/cfdemParticle/etc/OFversion/OFversion.H
|
||||
</P>
|
||||
<P><B>Troubleshooting:</B>
|
||||
</P>
|
||||
<UL><LI>toubles with git clone?
|
||||
<UL><LI>Troubles with git clone?
|
||||
|
||||
|
||||
</UL>
|
||||
|
||||
Binary file not shown.
@ -11,7 +11,7 @@ githubAccess_public :h3
|
||||
|
||||
[Description:]
|
||||
|
||||
This routine describes how to setup a github account and pull repositories of the CFDEM(R)project.
|
||||
This routine describes how to set up a github account and pull repositories of the CFDEM(R)project.
|
||||
After setting some environment variables LIGGGHTS(R) and CFDEM(R)coupling can be compiled
|
||||
|
||||
[Procedure:]
|
||||
@ -67,7 +67,7 @@ Now you need to set some environment variables in ~/.bashrc (if you use c-shell,
|
||||
|
||||
gedit ~/.bashrc & :pre
|
||||
|
||||
add the lines (you find them also in .../cfdemParticle/etc/bashrc and cshrc respectively):
|
||||
add the lines (you find them also in .../cfdemParticle/etc/bashrc and cshrc respectively):
|
||||
|
||||
#================================================#
|
||||
#- source cfdem env vars
|
||||
@ -93,7 +93,7 @@ $CFDEM_PROJECT_DIR
|
||||
$CFDEM_SRC_DIR
|
||||
$CFDEM_LIGGGHTS_SRC_DIR :pre
|
||||
|
||||
should give "...: is a directory" otherwise something went wrong and the environment variables in ~/bashrc are not set correctly.
|
||||
should give "...: is a directory" otherwise something went wrong and the environment variables in ~/.bashrc are not set correctly.
|
||||
|
||||
To specify the paths of pizza, please check the settings in $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/bashrc.
|
||||
|
||||
@ -125,7 +125,7 @@ Changes in $CFDEM_TUT_DIR will be lost after every {git stash}!
|
||||
|
||||
[Additional Installations:]
|
||||
|
||||
Optionally you can install lpp which will help you convert the DEM (dump) data to VTK format. For standard CFD-DEM runs this will not be necessary. To get the DEM postporcessing tool "lpp" you need python-numpy package installed:
|
||||
Optionally you can install lpp which will help you convert the DEM (dump) data to VTK format. For standard CFD-DEM runs this will not be necessary. To get the DEM postprocessing tool "lpp" you need python-numpy package installed:
|
||||
|
||||
sudo apt-get install python-numpy :pre
|
||||
|
||||
@ -134,9 +134,9 @@ You can pull the latest version of lpp with:
|
||||
cd $HOME/LIGGGHTS :pre
|
||||
git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/lpp mylpp :pre
|
||||
|
||||
[Backward Compatibility:]
|
||||
[Backwards Compatibility:]
|
||||
|
||||
Basically CFDEM(R)coupling supports one OpenFOAM(R) version therefore all settings are prepared for that. Nevertheless we try to maintain backward compatibility as long as it works with reasonable effort.
|
||||
Basically CFDEM(R)coupling supports one OpenFOAM(R) version therefore all settings are prepared for that. Nevertheless we try to maintain backwards compatibility as long as it works with reasonable effort.
|
||||
|
||||
The supported OpenFOAM(R) and LIGGGHTS(R) versions are stated in:
|
||||
src/lagrangian/cfdemParticle/cfdTools/versionInfo.H
|
||||
@ -147,7 +147,7 @@ src/lagrangian/cfdemParticle/etc/OFversion/OFversion.H
|
||||
|
||||
[Troubleshooting:]
|
||||
|
||||
toubles with git clone? :ulb,l
|
||||
Troubles with git clone? :ulb,l
|
||||
:ule
|
||||
|
||||
[a)] The git protocol will not work if your computer is behind a firewall which blocks the relevant TCP port, you can use alternatively (write command in one line):
|
||||
|
||||
@ -28,6 +28,7 @@ executeProps0
|
||||
runLast switch2;
|
||||
runEveryCouplingStep switch3;
|
||||
runEveryWriteStep switch4;
|
||||
verbose;
|
||||
}
|
||||
</PRE>
|
||||
<UL><LI><I>command</I> = LIGGGHTS command to be executed. Each word in a new line, numbers and symbols need special treatment (e.g. $couplingInterval will be replaced by correct coupling interval in the simulation)
|
||||
@ -40,6 +41,8 @@ executeProps0
|
||||
|
||||
<LI><I>switch4</I> = switch (choose on/off) if the command is executed at every writing step
|
||||
|
||||
<LI><I>verbose</I> = (normally off) for verbose run
|
||||
|
||||
|
||||
</UL>
|
||||
<P><B>Examples:</B>
|
||||
|
||||
@ -26,6 +26,7 @@ executeProps0
|
||||
runLast switch2;
|
||||
runEveryCouplingStep switch3;
|
||||
runEveryWriteStep switch4;
|
||||
verbose;
|
||||
\} :pre
|
||||
|
||||
{command} = LIGGGHTS command to be executed. Each word in a new line, numbers and symbols need special treatment (e.g. $couplingInterval will be replaced by correct coupling interval in the simulation) :ulb,l
|
||||
@ -33,6 +34,7 @@ executeProps0
|
||||
{switch2} = switch (choose on/off) if the command is executed only at last time step :l
|
||||
{switch3} = switch (choose on/off) if the command is executed at every coupling step :l
|
||||
{switch4} = switch (choose on/off) if the command is executed at every writing step :l
|
||||
{verbose} = (normally off) for verbose run :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
@ -36,9 +36,9 @@ readLiggghtsDataProps0
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The readLiggghtsData liggghtsCommand Model can be used to ???
|
||||
<P>The readLiggghtsData liggghtsCommand Model can be used to ???
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
<P>Note: Model is not up to date.
|
||||
</P>
|
||||
|
||||
@ -35,10 +35,10 @@ readLiggghtsDataProps0
|
||||
|
||||
[Description:]
|
||||
|
||||
The readLiggghtsData liggghtsCommand Model can be used to ???
|
||||
The readLiggghtsData liggghtsCommand Model can be used to ???
|
||||
|
||||
|
||||
[Restrictions:]
|
||||
[Restrictions:]
|
||||
|
||||
Note: Model is not up to date.
|
||||
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
runLiggghtsProps
|
||||
{
|
||||
preNo true;
|
||||
verbose; (optional)
|
||||
}
|
||||
</PRE>
|
||||
<P><B>Examples:</B>
|
||||
@ -32,9 +33,9 @@ runLiggghtsProps
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The liggghtsCommand models can be used to execute a LIGGGHTS command during a CFD run. The "runLiggghts" command executes the command "run $nrDEMsteps", where $nrDEMsteps is automaically set according to the coupling intervals, every coupling step. Optionally a dictionary called runLiggghtsProps can be specified where the "preNo" switch can be set, which uses the command "run $nrDEMsteps pre no" for every time step except the first.
|
||||
<P>The liggghtsCommand models can be used to execute a LIGGGHTS command during a CFD run. The "runLiggghts" command executes the command "run $nrDEMsteps", where $nrDEMsteps is automatically set according to the coupling intervals, every coupling step. Optionally a dictionary called runLiggghtsProps can be specified where the "preNo" switch can be set, which uses the command "run $nrDEMsteps pre no" for every time step except the first.
|
||||
</P>
|
||||
<P><B>Restrictions:</B> Warning: the "pre no" option can cause troubles (dump data of particles changin the domain might be erroneous)!
|
||||
<P><B>Restrictions:</B> Warning: the "pre no" option can cause troubles (dump data of particles changing the domain might be erroneous)!
|
||||
</P>
|
||||
<P><B>Related commands:</B>
|
||||
</P>
|
||||
|
||||
@ -19,6 +19,7 @@ liggghtsCommandModels
|
||||
runLiggghtsProps
|
||||
\{
|
||||
preNo true;
|
||||
verbose; (optional)
|
||||
\} :pre
|
||||
|
||||
[Examples:]
|
||||
@ -30,9 +31,9 @@ liggghtsCommandModels
|
||||
|
||||
[Description:]
|
||||
|
||||
The liggghtsCommand models can be used to execute a LIGGGHTS command during a CFD run. The "runLiggghts" command executes the command "run $nrDEMsteps", where $nrDEMsteps is automaically set according to the coupling intervals, every coupling step. Optionally a dictionary called runLiggghtsProps can be specified where the "preNo" switch can be set, which uses the command "run $nrDEMsteps pre no" for every time step except the first.
|
||||
The liggghtsCommand models can be used to execute a LIGGGHTS command during a CFD run. The "runLiggghts" command executes the command "run $nrDEMsteps", where $nrDEMsteps is automatically set according to the coupling intervals, every coupling step. Optionally a dictionary called runLiggghtsProps can be specified where the "preNo" switch can be set, which uses the command "run $nrDEMsteps pre no" for every time step except the first.
|
||||
|
||||
[Restrictions:] Warning: the "pre no" option can cause troubles (dump data of particles changin the domain might be erroneous)!
|
||||
[Restrictions:] Warning: the "pre no" option can cause troubles (dump data of particles changing the domain might be erroneous)!
|
||||
|
||||
[Related commands:]
|
||||
|
||||
|
||||
@ -23,6 +23,7 @@ writeLiggghtsProps
|
||||
writeLast switch1;
|
||||
writeName "name";
|
||||
overwrite switch2;
|
||||
verbose;
|
||||
}
|
||||
</PRE>
|
||||
<UL><LI><I>switch1</I> = switch (choose on/off) to select if only last step is stored or every write step.
|
||||
@ -31,6 +32,8 @@ writeLiggghtsProps
|
||||
|
||||
<LI><I>switch2</I> = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written
|
||||
|
||||
<LI><I>verbose</I> = (normally off) for verbose run
|
||||
|
||||
|
||||
</UL>
|
||||
<P><B>Examples:</B>
|
||||
|
||||
@ -21,11 +21,13 @@ writeLiggghtsProps
|
||||
writeLast switch1;
|
||||
writeName "name";
|
||||
overwrite switch2;
|
||||
verbose;
|
||||
\} :pre
|
||||
|
||||
{switch1} = switch (choose on/off) to select if only last step is stored or every write step. :ulb,l
|
||||
{name} = name of the restart file to be written in /$caseDir/DEM/ default default "liggghts.restartCFDEM" :l
|
||||
{switch2} = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written :l
|
||||
{verbose} = (normally off) for verbose run :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
@ -57,9 +57,9 @@ engineIBProps
|
||||
|
||||
|
||||
</UL>
|
||||
<P>This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This makes sure that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another.
|
||||
<P>This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This ensures that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another.
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
<P>Only for immersed boundary solvers!
|
||||
</P>
|
||||
|
||||
@ -50,9 +50,9 @@ treeSearch false; will execute some geometric (linear) search using the last
|
||||
treeSearch true; will use a recursive tree structure to find the cell. :l
|
||||
:ule
|
||||
|
||||
This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This makes sure that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another.
|
||||
This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This ensures that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another.
|
||||
|
||||
[Restrictions:]
|
||||
[Restrictions:]
|
||||
|
||||
Only for immersed boundary solvers!
|
||||
|
||||
|
||||
@ -41,7 +41,7 @@ explicitCoupleProps
|
||||
</P>
|
||||
<P>The explicitCouple-model is a momCoupleModel model providing an explicit momentum source term for the CFD solver.
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
<P>Only for solvers that include explicit momentum exchange.
|
||||
</P>
|
||||
|
||||
@ -38,7 +38,7 @@ explicitCoupleProps
|
||||
|
||||
The explicitCouple-model is a momCoupleModel model providing an explicit momentum source term for the CFD solver.
|
||||
|
||||
[Restrictions:]
|
||||
[Restrictions:]
|
||||
|
||||
Only for solvers that include explicit momentum exchange.
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ implicitCoupleProps
|
||||
|
||||
<LI><I>voidfraction</I> = name of the finite volume voidfraction field
|
||||
|
||||
<I>number</I> = min value for local particle volume fraction to calculate the exchange filed (default SMALL):l
|
||||
<I>number</I> = minimum value for local particle volume fraction to calculate the exchange filed (default SMALL):l
|
||||
|
||||
</UL>
|
||||
<P><B>Examples:</B>
|
||||
@ -51,7 +51,7 @@ implicitCoupleProps
|
||||
</P>
|
||||
<P>The implicitCouple-model is a momCoupleModel model providing an implicit momentum source term for the CFD solver.
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
<P>Only for solvers that include implicit momentum exchange.
|
||||
</P>
|
||||
|
||||
@ -26,7 +26,7 @@ implicitCoupleProps
|
||||
{U} = name of the finite volume fluid velocity field :ulb,l
|
||||
{Us} = name of the finite volume granular velocity field :l
|
||||
{voidfraction} = name of the finite volume voidfraction field :l
|
||||
{number} = min value for local particle volume fraction to calculate the exchange filed (default SMALL):l
|
||||
{number} = minimum value for local particle volume fraction to calculate the exchange filed (default SMALL):l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -46,7 +46,7 @@ implicitCoupleProps
|
||||
|
||||
The implicitCouple-model is a momCoupleModel model providing an implicit momentum source term for the CFD solver.
|
||||
|
||||
[Restrictions:]
|
||||
[Restrictions:]
|
||||
|
||||
Only for solvers that include implicit momentum exchange.
|
||||
|
||||
|
||||
@ -27,9 +27,9 @@
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The noCouple-model is a dummy momCoupleModel model providing an no momentum source term for the CFD solver.
|
||||
<P>The noCouple-model is a dummy momCoupleModel model providing a no momentum source term for the CFD solver.
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
<P>Only for solvers that include no momentum exchange, e.g. immersed boundary.
|
||||
</P>
|
||||
|
||||
@ -26,9 +26,9 @@ momCoupleModels
|
||||
|
||||
[Description:]
|
||||
|
||||
The noCouple-model is a dummy momCoupleModel model providing an no momentum source term for the CFD solver.
|
||||
The noCouple-model is a dummy momCoupleModel model providing a no momentum source term for the CFD solver.
|
||||
|
||||
[Restrictions:]
|
||||
[Restrictions:]
|
||||
|
||||
Only for solvers that include no momentum exchange, e.g. immersed boundary.
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
</P>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The probeModel feature allows one to implement various probing features in CFDEM. Currently, only the <A HREF = "probeModel_particleProbe.html">particleProbe</A> model is implemented, that performs probing of particle forces.
|
||||
<P>The probeModel feature allows to implement various probing features in CFDEM. Currently, only the <A HREF = "probeModel_particleProbe.html">particleProbe</A> model is implemented, that performs probing of particle forces.
|
||||
</P>
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
|
||||
@ -29,7 +29,7 @@ Note: This examples list might not be complete - please check below for the list
|
||||
|
||||
[Description:]
|
||||
|
||||
The probeModel feature allows one to implement various probing features in CFDEM. Currently, only the "particleProbe"_probeModel_particleProbe.html model is implemented, that performs probing of particle forces.
|
||||
The probeModel feature allows to implement various probing features in CFDEM. Currently, only the "particleProbe"_probeModel_particleProbe.html model is implemented, that performs probing of particle forces.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
|
||||
@ -39,15 +39,15 @@ constDiffSmoothingProps
|
||||
lowerLimit 0.1;
|
||||
upperLimit 1e10;
|
||||
smoothingLength 1500e-6;
|
||||
smoothingLengthReferenceField 9000e-6;
|
||||
smoothingLengthReferenceField 9000e-6;
|
||||
}
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<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.
|
||||
<P>The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothing the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit force coupling algorithms.
|
||||
Smoothing for reference fields is performed to "fill in" values in cells in which these reference fields are not specified. Values calculated in the cells (via Lagrangian-To-Euler mapping) are NOT changed! These reference fields are, e.g., the average particle velocity, which are not specified in all cells in case the flow is rather dilute.
|
||||
</P>
|
||||
<P><B>Restrictions:</B> This model is tested in a limited number of flow situations.
|
||||
<P><B>Restrictions:</B> This model is tested in a limited number of flow situations.
|
||||
</P>
|
||||
<P>ATTENTION: In case a smoothing model is used in conjunction with "PimpleImEx" solvers, the fields "f" and "fSmooth" must be placed in the initial time directory! This is because zeroGradient boundary conditions for the fields "f" and "fSmooth" must be specified, otherwise the smoothing operation will give an Error.
|
||||
</P>
|
||||
|
||||
@ -33,15 +33,15 @@ constDiffSmoothingProps
|
||||
lowerLimit 0.1;
|
||||
upperLimit 1e10;
|
||||
smoothingLength 1500e-6;
|
||||
smoothingLengthReferenceField 9000e-6;
|
||||
smoothingLengthReferenceField 9000e-6;
|
||||
\} :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
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.
|
||||
The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothing the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit force coupling algorithms.
|
||||
Smoothing for reference fields is performed to "fill in" values in cells in which these reference fields are not specified. Values calculated in the cells (via Lagrangian-To-Euler mapping) are NOT changed! These reference fields are, e.g., the average particle velocity, which are not specified in all cells in case the flow is rather dilute.
|
||||
|
||||
[Restrictions:] This model is tested in a limited number of flow situations.
|
||||
[Restrictions:] This model is tested in a limited number of flow situations.
|
||||
|
||||
ATTENTION: In case a smoothing model is used in conjunction with "PimpleImEx" solvers, the fields "f" and "fSmooth" must be placed in the initial time directory! This is because zeroGradient boundary conditions for the fields "f" and "fSmooth" must be specified, otherwise the smoothing operation will give an Error.
|
||||
|
||||
|
||||
@ -18,17 +18,17 @@ GaussProps
|
||||
{
|
||||
maxCellsPerParticle number1;
|
||||
alphaMin number2;
|
||||
scaleUpVol number3;
|
||||
weight number4;
|
||||
weight number3;
|
||||
porosity 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)
|
||||
<UL><LI><I>number1</I> = maximum number of cells covered by a particle (search will fail when more than <I>number1</I> cells are covered by the particle)
|
||||
|
||||
<LI><I>number2</I> = mininmum limit for voidfraction
|
||||
<LI><I>number2</I> = minimum limit for voidfraction
|
||||
|
||||
<LI><I>number3</I> = diameter of the particle's representation is artificially increased according to <I>number3</I> * Vparticle, volume remains unaltered!
|
||||
<LI><I>number3</I> = (optional) scaling of the particle volume to account for porosity or agglomerations.
|
||||
|
||||
<LI><I>number4</I> = scaling of the particle volume to account for porosity or agglomerations.
|
||||
<LI><I>number4</I> = (optional) diameter of the particle's representation is artificially increased according to <I>number2</I> * Vparticle, volume remains unaltered!
|
||||
|
||||
|
||||
</UL>
|
||||
@ -39,15 +39,15 @@ GaussProps
|
||||
{
|
||||
maxCellsPerParticle 1000;
|
||||
alphaMin 0.10;
|
||||
scaleUpVol 5.0;
|
||||
weight 1.;
|
||||
porosity 1.;
|
||||
}
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The Gauss voidFraction model is supposed to be used when a particle (or it's representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle. The volume is here distributed according to a Gaussian dirstibution.
|
||||
<P>The Gauss voidFraction model is supposed to be used when a particle (or its representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle. The volume is here distributed according to a Gaussian distribution.
|
||||
</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>The region of influence of a particle can be increased artificially by "porosity", 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>
|
||||
|
||||
@ -16,14 +16,14 @@ GaussProps
|
||||
\{
|
||||
maxCellsPerParticle number1;
|
||||
alphaMin number2;
|
||||
scaleUpVol number3;
|
||||
weight number4;
|
||||
weight number3;
|
||||
porosity 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
|
||||
{number1} = maximum number of cells covered by a particle (search will fail when more than {number1} cells are covered by the particle) :ulb,l
|
||||
{number2} = minimum limit for voidfraction :l
|
||||
{number3} = (optional) scaling of the particle volume to account for porosity or agglomerations. :l
|
||||
{number4} = (optional) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -33,15 +33,15 @@ GaussProps
|
||||
\{
|
||||
maxCellsPerParticle 1000;
|
||||
alphaMin 0.10;
|
||||
scaleUpVol 5.0;
|
||||
weight 1.;
|
||||
porosity 1.;
|
||||
\} :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
The Gauss voidFraction model is supposed to be used when a particle (or it's representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle. The volume is here distributed according to a Gaussian dirstibution.
|
||||
The Gauss voidFraction model is supposed to be used when a particle (or its representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle. The volume is here distributed according to a Gaussian distribution.
|
||||
|
||||
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 region of influence of a particle can be increased artificially by "porosity", 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.
|
||||
|
||||
|
||||
@ -21,9 +21,9 @@ IBProps
|
||||
scaleUpVol number3;
|
||||
}
|
||||
</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)
|
||||
<UL><LI><I>number1</I> = maximum number of cells covered by a particle (search will fail when more than <I>number1</I> cells are covered by the particle)
|
||||
|
||||
<LI><I>number2</I> = mininmum limit for voidfraction
|
||||
<LI><I>number2</I> = minimum limit for voidfraction
|
||||
|
||||
<LI><I>number3</I> = diameter of the particle's representation is artificially increased according to <I>number3</I> * Vparticle, volume remains unaltered!
|
||||
|
||||
@ -41,11 +41,11 @@ IBProps
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The IB voidFraction model is supposed to be used when a particle (or it's representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle. The model is specially designed for cfdemSolverIB and creates a smooth transition of the voidfraction at the particle surface. Cells which are only partially covered by solid are marked by void fracion values between 0 and 1 respectively.
|
||||
<P>The IB voidFraction model is supposed to be used when a particle (or its representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle. The model is specially designed for cfdemSolverIB and creates a smooth transition of the voidfraction at the particle surface. Cells which are only partially covered by solid are marked by voidfraction values between 0 and 1 respectively.
|
||||
</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>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>Code of this sub-model contributed by Alice Hager, JKU.
|
||||
</P>
|
||||
<P><B>Restrictions:</B> none.
|
||||
</P>
|
||||
|
||||
@ -19,8 +19,8 @@ IBProps
|
||||
scaleUpVol number3;
|
||||
\} :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
|
||||
{number1} = maximum number of cells covered by a particle (search will fail when more than {number1} cells are covered by the particle) :ulb,l
|
||||
{number2} = minimum limit for voidfraction :l
|
||||
{number3} = diameter of the particle's representation is artificially increased according to {number3} * Vparticle, volume remains unaltered! :l
|
||||
:ule
|
||||
|
||||
@ -36,11 +36,11 @@ IBProps
|
||||
|
||||
[Description:]
|
||||
|
||||
The IB voidFraction model is supposed to be used when a particle (or it's representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle. The model is specially designed for cfdemSolverIB and creates a smooth transition of the voidfraction at the particle surface. Cells which are only partially covered by solid are marked by void fracion values between 0 and 1 respectively.
|
||||
The IB voidFraction model is supposed to be used when a particle (or its representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle. The model is specially designed for cfdemSolverIB and creates a smooth transition of the voidfraction at the particle surface. Cells which are only partially covered by solid are marked by voidfraction values between 0 and 1 respectively.
|
||||
|
||||
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 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.
|
||||
Code of this sub-model contributed by Alice Hager, JKU.
|
||||
|
||||
[Restrictions:] none.
|
||||
|
||||
|
||||
@ -18,17 +18,17 @@ bigParticleProps
|
||||
{
|
||||
maxCellsPerParticle number1;
|
||||
alphaMin number2;
|
||||
scaleUpVol number3;
|
||||
weight number4;
|
||||
weight number3;
|
||||
porosity 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)
|
||||
<UL><LI><I>number1</I> = maximum number of cells covered by a particle (search will fail when more than <I>number1</I> cells are covered by the particle)
|
||||
|
||||
<LI><I>number2</I> = mininmum limit for voidfraction
|
||||
<LI><I>number2</I> = minimum limit for voidfraction
|
||||
|
||||
<LI><I>number3</I> = diameter of the particle's representation is artificially increased according to <I>number3</I> * Vparticle, volume remains unaltered!
|
||||
<LI><I>number3</I> = (optional) scaling of the particle volume to account for porosity or agglomerations.
|
||||
|
||||
<LI><I>number4</I> = scaling of the particle volume to account for porosity or agglomerations.
|
||||
<LI><I>number4</I> = (optional) diameter of the particle's representation is artificially increased according to <I>number2</I> * Vparticle, volume remains unaltered!
|
||||
|
||||
|
||||
</UL>
|
||||
@ -39,19 +39,19 @@ bigParticleProps
|
||||
{
|
||||
maxCellsPerParticle 1000;
|
||||
alphaMin 0.10;
|
||||
scaleUpVol 5.0;
|
||||
weight 1.;
|
||||
porosity 5.0;
|
||||
}
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The bigParticle voidFraction model is supposed to be used when a particle (or it's representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle which results in a stairstep representation of the bodies within the mesh (i.e. voidfraction is either 1 (fluid) of zero (solid)). For archiving accurate results, approx. 8 cells per particle diameter are necessary.
|
||||
<P>The bigParticle voidFraction model is supposed to be used when a particle (or its representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle which results in a stairstep representation of the bodies within the mesh (i.e. voidfraction is either 1 (fluid) of zero (solid)). For archiving accurate results, approx. 8 cells per particle diameter are necessary.
|
||||
</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>The region of influence of a particle can be increased artificially by "porosity", 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>Parts of this sub-model contributed by Alice Hager, JKU.
|
||||
<P>Parts of this sub-model contributed by Alice Hager, JKU.
|
||||
</P>
|
||||
<P><B>Restrictions:</B> none.
|
||||
</P>
|
||||
|
||||
@ -16,14 +16,14 @@ bigParticleProps
|
||||
\{
|
||||
maxCellsPerParticle number1;
|
||||
alphaMin number2;
|
||||
scaleUpVol number3;
|
||||
weight number4;
|
||||
weight number3;
|
||||
porosity 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
|
||||
{number1} = maximum number of cells covered by a particle (search will fail when more than {number1} cells are covered by the particle) :ulb,l
|
||||
{number2} = minimum limit for voidfraction :l
|
||||
{number3} = (optional) scaling of the particle volume to account for porosity or agglomerations. :l
|
||||
{number4} = (optional) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -33,19 +33,19 @@ bigParticleProps
|
||||
\{
|
||||
maxCellsPerParticle 1000;
|
||||
alphaMin 0.10;
|
||||
scaleUpVol 5.0;
|
||||
weight 1.;
|
||||
porosity 5.0;
|
||||
\} :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
The bigParticle voidFraction model is supposed to be used when a particle (or it's representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle which results in a stairstep representation of the bodies within the mesh (i.e. voidfraction is either 1 (fluid) of zero (solid)). For archiving accurate results, approx. 8 cells per particle diameter are necessary.
|
||||
The bigParticle voidFraction model is supposed to be used when a particle (or its representation) is bigger than a CFD cell. The voidfraction field is set in those cell whose centres are inside the particle which results in a stairstep representation of the bodies within the mesh (i.e. voidfraction is either 1 (fluid) of zero (solid)). For archiving accurate results, approx. 8 cells per particle diameter are necessary.
|
||||
|
||||
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 region of influence of a particle can be increased artificially by "porosity", 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.
|
||||
|
||||
Parts of this sub-model contributed by Alice Hager, JKU.
|
||||
Parts of this sub-model contributed by Alice Hager, JKU.
|
||||
|
||||
[Restrictions:] none.
|
||||
|
||||
|
||||
@ -20,9 +20,9 @@ centreProps
|
||||
weight number2;
|
||||
}
|
||||
</PRE>
|
||||
<UL><LI><I>number1</I> = mininmum limit for voidfraction
|
||||
<UL><LI><I>number1</I> = minimum limit for voidfraction
|
||||
|
||||
<LI><I>number2</I> = scaling of the particle volume to account for porosity or agglomerations.
|
||||
<LI><I>number2</I> = (optional) scaling of the particle volume to account for porosity or agglomerations.
|
||||
|
||||
|
||||
</UL>
|
||||
|
||||
@ -18,8 +18,8 @@ centreProps
|
||||
weight number2;
|
||||
\} :pre
|
||||
|
||||
{number1} = mininmum limit for voidfraction :ulb,l
|
||||
{number2} = scaling of the particle volume to account for porosity or agglomerations. :l
|
||||
{number1} = minimum limit for voidfraction :ulb,l
|
||||
{number2} = (optional) scaling of the particle volume to account for porosity or agglomerations. :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
@ -17,18 +17,18 @@
|
||||
dividedProps
|
||||
{
|
||||
alphaMin number1;
|
||||
scaleUpVol number2;
|
||||
interpolation;
|
||||
weight number3;
|
||||
weight number2;
|
||||
porosity number3;
|
||||
}
|
||||
</PRE>
|
||||
<UL><LI><I>number1</I> = mininmum limit for voidfraction
|
||||
|
||||
<LI><I>number2</I> = diameter of the particle's representation is artificially increased according to <I>number2</I> * Vparticle, volume remains unaltered!
|
||||
<UL><LI><I>number1</I> = minimum limit for voidfraction
|
||||
|
||||
<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.
|
||||
<LI><I>number2</I> = (optional) scaling of the particle volume to account for porosity or agglomerations.
|
||||
|
||||
<LI><I>number3</I> = (optional) diameter of the particle's representation is artificially increased according to <I>number2</I> * Vparticle, volume remains unaltered!
|
||||
|
||||
|
||||
</UL>
|
||||
@ -38,20 +38,18 @@ dividedProps
|
||||
dividedProps
|
||||
{
|
||||
alphaMin 0.2;
|
||||
scaleUpVol 1.0;
|
||||
weight 1.;
|
||||
}
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>The divided voidFraction model is supposed to be used when a particle (or it's representation) is in the size range of a CFD cell. Satellite points are used to divide the particle's volume to the touched cells.
|
||||
<P>The divided voidFraction model is supposed to be used when a particle (or its representation) is in the size range of a CFD cell. Satellite points are used to divide the particle's volume to the touched cells.
|
||||
</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>The region of influence of a particle can be increased artificially by "porosity", 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>In the basic implementation of solvers, the void fraction is calculated based on all particles. Depending on the solver used, the void fraction calculation is also performed for a certain type of particles.
|
||||
The void fraction calculation is based on a three-step approach (reset, set and interpolate), i.e., the void fraction is time interpolated from a previous and a next void fraction field. Appropriate names for these fields have to be specified in the sub-dictionaries voidFracFieldNamesPrev and voidFracFieldNamesNext in the couplingProperties dictionary.
|
||||
<P>In the basic implementation of solvers, the void fraction is calculated based on all particles. Depending on the solver used, the void fraction calculation is also performed for a certain type of particles.
|
||||
The void fraction calculation is based on a three-step approach (reset, set and interpolate), i.e., the void fraction is time interpolated from a previous and a next void fraction field. Appropriate names for these fields have to be specified in the sub-dictionaries voidFracFieldNamesPrev and voidFracFieldNamesNext in the couplingProperties dictionary.
|
||||
</P>
|
||||
<P><B>Restrictions:</B> none.
|
||||
</P>
|
||||
|
||||
@ -15,15 +15,15 @@ voidfractionModel divided;
|
||||
dividedProps
|
||||
\{
|
||||
alphaMin number1;
|
||||
scaleUpVol number2;
|
||||
interpolation;
|
||||
weight number3;
|
||||
weight number2;
|
||||
porosity 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
|
||||
{number1} = minimum limit for voidfraction :ulb,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
|
||||
{number2} = (optional) scaling of the particle volume to account for porosity or agglomerations. :l
|
||||
{number3} = (optional) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -32,20 +32,18 @@ voidfractionModel divided;
|
||||
dividedProps
|
||||
\{
|
||||
alphaMin 0.2;
|
||||
scaleUpVol 1.0;
|
||||
weight 1.;
|
||||
\} :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
The divided voidFraction model is supposed to be used when a particle (or it's representation) is in the size range of a CFD cell. Satellite points are used to divide the particle's volume to the touched cells.
|
||||
The divided voidFraction model is supposed to be used when a particle (or its representation) is in the size range of a CFD cell. Satellite points are used to divide the particle's volume to the touched cells.
|
||||
|
||||
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 region of influence of a particle can be increased artificially by "porosity", 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.
|
||||
|
||||
In the basic implementation of solvers, the void fraction is calculated based on all particles. Depending on the solver used, the void fraction calculation is also performed for a certain type of particles.
|
||||
The void fraction calculation is based on a three-step approach (reset, set and interpolate), i.e., the void fraction is time interpolated from a previous and a next void fraction field. Appropriate names for these fields have to be specified in the sub-dictionaries voidFracFieldNamesPrev and voidFracFieldNamesNext in the couplingProperties dictionary.
|
||||
In the basic implementation of solvers, the void fraction is calculated based on all particles. Depending on the solver used, the void fraction calculation is also performed for a certain type of particles.
|
||||
The void fraction calculation is based on a three-step approach (reset, set and interpolate), i.e., the void fraction is time interpolated from a previous and a next void fraction field. Appropriate names for these fields have to be specified in the sub-dictionaries voidFracFieldNamesPrev and voidFracFieldNamesNext in the couplingProperties dictionary.
|
||||
|
||||
[Restrictions:] none.
|
||||
|
||||
|
||||
@ -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
|
||||
@ -15,6 +14,7 @@ smoothingModels = subModels/smoothingModel
|
||||
probeModels = subModels/probeModel
|
||||
|
||||
$(cfdemCloud)/cfdemCloud.C
|
||||
derived/cfdemCloudBiDisperse/cfdemCloudBiDisperse.C
|
||||
derived/cfdemCloudIB/cfdemCloudIB.C
|
||||
derived/cfdemCloudMS/cfdemCloudMS.C
|
||||
|
||||
@ -23,31 +23,50 @@ $(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)/interfaceParticleProbe/interfaceParticleProbe.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)/HollowayDrag/HollowayDrag.C
|
||||
$(forceModels)/viscForce/viscForce.C
|
||||
$(forceModels)/MeiLift/MeiLift.C
|
||||
$(forceModels)/melting/melting.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
|
||||
$(forceModels)/fieldTimeAverage/fieldTimeAverage.C
|
||||
$(forceModels)/volWeightedAverage/volWeightedAverage.C
|
||||
|
||||
$(forceModelsMS)/forceModelMS/forceModelMS.C
|
||||
$(forceModelsMS)/forceModelMS/newForceModelMS.C
|
||||
$(forceModelsMS)/DiFeliceDragMS/DiFeliceDragMS.C
|
||||
$(forceModelsMS)/GidaspowDragMS/GidaspowDragMS.C
|
||||
$(forceModelsMS)/noDragMS/noDragMS.C
|
||||
|
||||
$(probeModels)/probeModel/probeModel.C
|
||||
$(probeModels)/probeModel/newProbeModel.C
|
||||
$(probeModels)/noProbe/noProbe.C
|
||||
$(probeModels)/particleProbe/particleProbe.C
|
||||
/*$(probeModels)/interfaceParticleProbe/interfaceParticleProbe.C*/
|
||||
|
||||
$(IOModels)/IOModel/IOModel.C
|
||||
$(IOModels)/IOModel/newIOModel.C
|
||||
@ -60,34 +79,36 @@ $(voidFractionModels)/voidFractionModel/voidFractionModel.C
|
||||
$(voidFractionModels)/voidFractionModel/newVoidFractionModel.C
|
||||
$(voidFractionModels)/centreVoidFraction/centreVoidFraction.C
|
||||
$(voidFractionModels)/dividedVoidFraction/dividedVoidFraction.C
|
||||
$(voidFractionModels)/dividedVoidFractionBiDi/dividedVoidFractionBiDi.C
|
||||
$(voidFractionModels)/dividedVoidFractionMS/dividedVoidFractionMS.C
|
||||
$(voidFractionModels)/bigParticleVoidFraction/bigParticleVoidFraction.C
|
||||
$(voidFractionModels)/GaussVoidFraction/GaussVoidFraction.C
|
||||
$(voidFractionModels)/IBVoidFraction/IBVoidFraction.C
|
||||
$(voidFractionModels)/weightedNeigbhorsVoidFraction/weightedNeigbhorsVoidFraction.C
|
||||
|
||||
$(locateModels)/locateModel/locateModel.C
|
||||
$(locateModels)/locateModel/newLocateModel.C
|
||||
$(locateModels)/standardSearch/standardSearch.C
|
||||
$(locateModels)/engineSearch/engineSearch.C
|
||||
$(locateModels)/engineSearchMany2Many/engineSearchMany2Many.C
|
||||
$(locateModels)/turboEngineSearch/turboEngineSearch.C
|
||||
$(locateModels)/turboEngineSearchM2M/turboEngineSearchM2M.C
|
||||
$(locateModels)/engineSearchIB/engineSearchIB.C
|
||||
|
||||
$(locateModels)/hyperEngineSearch/hyperEngineSearch.C
|
||||
$(locateModels)/ijkSearch/ijkSearch.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
|
||||
@ -95,11 +116,13 @@ $(dataExchangeModels)/twoWayFiles/twoWayFiles.C
|
||||
$(dataExchangeModels)/noDataExchange/noDataExchange.C
|
||||
$(dataExchangeModels)/twoWayMPI/twoWayMPI.C
|
||||
$(dataExchangeModels)/twoWayM2M/twoWayM2M.C
|
||||
$(dataExchangeModels)/twoWayMany2Many/twoWayMany2Many.C
|
||||
|
||||
$(averagingModels)/averagingModel/averagingModel.C
|
||||
$(averagingModels)/averagingModel/newAveragingModel.C
|
||||
$(averagingModels)/dilute/dilute.C
|
||||
$(averagingModels)/dense/dense.C
|
||||
$(averagingModels)/denseBiDi/denseBiDi.C
|
||||
|
||||
$(clockModels)/clockModel/clockModel.C
|
||||
$(clockModels)/clockModel/newClockModel.C
|
||||
@ -117,5 +140,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)
|
||||
|
||||
@ -28,4 +28,8 @@ LIB_LIBS = \
|
||||
-L$(CFDEM_LIGGGHTS_SRC_DIR) \
|
||||
-l$(CFDEM_LIGGGHTS_LIB_NAME) \
|
||||
-L$(CFDEM_M2MLIB_PATH) \
|
||||
-lcouple
|
||||
-lcouple \
|
||||
|
||||
/* add -I$(CFDEM_POEMSLIB_PATH) \ to EXE_INC */
|
||||
/* -L$(CFDEM_POEMSLIB_PATH) \ */
|
||||
/* -lpoems */
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
word CFDEMversion="cfdem-2.6.1";
|
||||
word compatibleLIGGGHTSversion="3.0.0";
|
||||
word CFDEMversion="cfdem-2.6.3";
|
||||
word compatibleLIGGGHTSversion="3.0.1";
|
||||
word OFversion="2.2.x-commit-61b850bc107bdd60bbf1bf9a6417b9faf701d128";
|
||||
|
||||
Info << "\nCFDEMcoupling version: " << CFDEMversion << "\n" << endl;
|
||||
|
||||
@ -331,6 +331,24 @@ void Foam::cfdemCloud::setForces()
|
||||
for (int i=0;i<cfdemCloud::nrForceModels();i++) cfdemCloud::forceM(i).setForce();
|
||||
}
|
||||
|
||||
void Foam::cfdemCloud::setParticleForceField()
|
||||
{
|
||||
averagingM().setVectorSum
|
||||
(
|
||||
forceM(0).impParticleForces(),
|
||||
impForces_,
|
||||
particleWeights_,
|
||||
NULL //mask
|
||||
);
|
||||
averagingM().setVectorSum
|
||||
(
|
||||
forceM(0).expParticleForces(),
|
||||
expForces_,
|
||||
particleWeights_,
|
||||
NULL //mask
|
||||
);
|
||||
}
|
||||
|
||||
void Foam::cfdemCloud::setVectorAverages()
|
||||
{
|
||||
if(verbose_) Info << "- setVectorAverage(Us,velocities_,weights_)" << endl;
|
||||
@ -457,7 +475,7 @@ bool Foam::cfdemCloud::evolve
|
||||
Info << "couplingStep:" << dataExchangeM().couplingStep()
|
||||
<< "\n- resetVolFields()" << endl;
|
||||
}
|
||||
averagingM().resetVectorAverage(averagingM().UsPrev(),averagingM().UsNext());
|
||||
averagingM().resetVectorAverage(averagingM().UsPrev(),averagingM().UsNext(),false);
|
||||
voidFractionM().resetVoidFractions();
|
||||
averagingM().resetVectorAverage(forceM(0).impParticleForces(),forceM(0).impParticleForces(),true);
|
||||
averagingM().resetVectorAverage(forceM(0).expParticleForces(),forceM(0).expParticleForces(),true);
|
||||
@ -502,20 +520,7 @@ bool Foam::cfdemCloud::evolve
|
||||
// get next force field
|
||||
clockM().start(22,"setParticleForceField");
|
||||
if(verbose_) Info << "- setParticleForceField()" << endl;
|
||||
averagingM().setVectorSum
|
||||
(
|
||||
forceM(0).impParticleForces(),
|
||||
impForces_,
|
||||
particleWeights_,
|
||||
NULL //mask
|
||||
);
|
||||
averagingM().setVectorSum
|
||||
(
|
||||
forceM(0).expParticleForces(),
|
||||
expForces_,
|
||||
particleWeights_,
|
||||
NULL //mask
|
||||
);
|
||||
setParticleForceField();
|
||||
if(verbose_) Info << "- setParticleForceField done." << endl;
|
||||
clockM().stop("setParticleForceField");
|
||||
|
||||
@ -543,30 +548,13 @@ bool Foam::cfdemCloud::evolve
|
||||
alpha.correctBoundaryConditions();
|
||||
|
||||
// calc ddt(voidfraction)
|
||||
//calcDdtVoidfraction(voidFractionM().voidFractionNext());
|
||||
calcDdtVoidfraction(alpha);
|
||||
|
||||
// update particle velocity Field
|
||||
Us = averagingM().UsInterp();
|
||||
//smoothingM().smoothenReferenceField(Us);
|
||||
Us.correctBoundaryConditions();
|
||||
/*//============================================
|
||||
// update voidFractionField
|
||||
volScalarField oldAlpha = alpha.oldTime(); //save old (smooth) alpha field
|
||||
alpha.oldTime().internalField() = voidFractionM().voidFractionInterp();
|
||||
smoothingM().smoothen(alpha);
|
||||
alpha.correctBoundaryConditions();
|
||||
alpha.oldTime() = oldAlpha; //set old (smooth) alpha field to allow correct computation of ddt
|
||||
|
||||
// calc ddt(voidfraction)
|
||||
if (doCouple) calcDdtVoidfraction(alpha);
|
||||
//calcDdtVoidfraction(alpha); // alternative with scale=1! (does not see change in alpha?)
|
||||
|
||||
// update particle velocity Field
|
||||
Us.oldTime().internalField() = averagingM().UsInterp();
|
||||
smoothingM().smoothenReferenceField(Us);
|
||||
Us.correctBoundaryConditions();
|
||||
//============================================*/
|
||||
//============================================
|
||||
clockM().stop("interpolateEulerFields");
|
||||
|
||||
if(verbose_){
|
||||
@ -643,7 +631,7 @@ void cfdemCloud::calcDdtVoidfraction(volScalarField& voidfraction) const
|
||||
|
||||
tmp<volScalarField> cfdemCloud::voidfractionNuEff(volScalarField& voidfraction) const
|
||||
{
|
||||
if (modelType_=="A")
|
||||
if (modelType_=="B")
|
||||
{
|
||||
return tmp<volScalarField>
|
||||
(
|
||||
|
||||
@ -185,6 +185,8 @@ protected:
|
||||
|
||||
virtual void setForces();
|
||||
|
||||
virtual void setParticleForceField();
|
||||
|
||||
virtual void setVectorAverages();
|
||||
|
||||
public:
|
||||
|
||||
@ -36,6 +36,8 @@ Description
|
||||
#include "locateModel.H"
|
||||
#include "dataExchangeModel.H"
|
||||
#include "IOModel.H"
|
||||
#include "mpi.h"
|
||||
#include "IOmanip.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -207,6 +209,13 @@ void Foam::cfdemCloudIB::calcVelocityCorrection
|
||||
// correct the pressure as well
|
||||
p=p+phiIB/U.mesh().time().deltaT(); // do we have to account for rho here?
|
||||
p.correctBoundaryConditions();
|
||||
|
||||
if (couplingProperties_.found("checkinterface"))
|
||||
{
|
||||
Info << "checking no-slip on interface..." << endl;
|
||||
// #include "checkInterfaceVelocity.H" //TODO: check carefully!
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
vector Foam::cfdemCloudIB::angularVelocity(int index)
|
||||
|
||||
@ -68,8 +68,10 @@ cfdemCloudMS::cfdemCloudMS
|
||||
impForcesCM_(NULL),
|
||||
expForcesCM_(NULL),
|
||||
DEMForcesCM_(NULL),
|
||||
particleWeightsCM_(NULL),
|
||||
numberOfClumps_(-1),
|
||||
numberOfClumpsChanged_(false),
|
||||
useforcePerClump_(false),
|
||||
forceModels_(couplingProperties_.lookup("forceModelsMS"))
|
||||
{
|
||||
forceModel_ = new autoPtr<forceModelMS>[nrForceModels()];
|
||||
@ -106,6 +108,7 @@ cfdemCloudMS::~cfdemCloudMS()
|
||||
delete impForcesCM_;
|
||||
delete expForcesCM_;
|
||||
delete DEMForcesCM_;
|
||||
delete particleWeightsCM_;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
@ -191,6 +194,7 @@ bool cfdemCloudMS::reAllocArrays() const
|
||||
dataExchangeM().allocateArray(impForcesCM_,0,3,"nbodies");
|
||||
dataExchangeM().allocateArray(expForcesCM_,0,3,"nbodies");
|
||||
dataExchangeM().allocateArray(DEMForcesCM_,0,3,"nbodies");
|
||||
dataExchangeM().allocateArray(particleWeightsCM_,1,1,"nbodies"); // filed is never changed-correct only for centre
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -217,14 +221,44 @@ void Foam::cfdemCloudMS::findCells()
|
||||
|
||||
void Foam::cfdemCloudMS::setForces()
|
||||
{
|
||||
cfdemCloud::setForces();
|
||||
|
||||
resetArray(impForces_,numberOfParticles(),3);
|
||||
resetArray(expForces_,numberOfParticles(),3);
|
||||
resetArray(DEMForces_,numberOfParticles(),3);
|
||||
|
||||
cfdemCloud::setForces();
|
||||
|
||||
resetArray(impForcesCM_,numberOfClumps(),3);
|
||||
resetArray(expForcesCM_,numberOfClumps(),3);
|
||||
resetArray(DEMForcesCM_,numberOfClumps(),3);
|
||||
for (int i=0;i<cfdemCloudMS::nrForceModels();i++) cfdemCloudMS::forceM(i).setForce();
|
||||
}
|
||||
|
||||
void Foam::cfdemCloudMS::setParticleForceField()
|
||||
{
|
||||
// set forces per particle
|
||||
cfdemCloud::setParticleForceField();
|
||||
|
||||
// set forces per clump
|
||||
// seems to be very unstable - exchange field is very inhomogeneous
|
||||
if(useforcePerClump_)
|
||||
{
|
||||
averagingM().setVectorSumSimple
|
||||
(
|
||||
forceM(0).impParticleForces(),
|
||||
impForcesCM_,
|
||||
particleWeightsCM_,
|
||||
numberOfClumps()
|
||||
);
|
||||
averagingM().setVectorSumSimple
|
||||
(
|
||||
forceM(0).expParticleForces(),
|
||||
expForcesCM_,
|
||||
particleWeightsCM_,
|
||||
numberOfClumps()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
// PUBLIC MEMBER FUNCTIONS
|
||||
|
||||
|
||||
@ -83,9 +83,13 @@ private:
|
||||
mutable double **expForcesCM_;
|
||||
mutable double **DEMForcesCM_;
|
||||
|
||||
mutable double **particleWeightsCM_;
|
||||
|
||||
int numberOfClumps_;
|
||||
bool numberOfClumpsChanged_;
|
||||
|
||||
bool useforcePerClump_;
|
||||
|
||||
const wordList forceModels_;
|
||||
autoPtr<class forceModelMS>* forceModel_;
|
||||
|
||||
@ -96,6 +100,7 @@ private:
|
||||
void setNumberOfParticles(int);
|
||||
void findCells();
|
||||
void setForces();
|
||||
void setParticleForceField();
|
||||
|
||||
public:
|
||||
|
||||
@ -139,6 +144,8 @@ public:
|
||||
|
||||
inline bool numberOfClumpsChanged() const;
|
||||
|
||||
inline bool useforcePerClump() const;
|
||||
|
||||
const forceModel& forceM(int);
|
||||
|
||||
int nrForceModels();
|
||||
|
||||
@ -69,5 +69,10 @@ inline bool cfdemCloudMS::numberOfClumpsChanged() const
|
||||
return numberOfClumpsChanged_;
|
||||
}
|
||||
|
||||
inline bool cfdemCloudMS::useforcePerClump() const
|
||||
{
|
||||
return useforcePerClump_;
|
||||
}
|
||||
|
||||
}
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#define version22 // currently being tested
|
||||
#define version23 // currently being tested
|
||||
//#define version22 // currently being used
|
||||
//#define version21
|
||||
//#define version16ext
|
||||
//#define version15
|
||||
@ -7,7 +8,13 @@
|
||||
//#define comp // if comp is on - you must use Make/options_comp!
|
||||
|
||||
//define multi sphere
|
||||
//#define multisphere
|
||||
#define multisphere
|
||||
|
||||
// features of 2.1 work also in 2.3
|
||||
#if defined(version23)
|
||||
#define version21
|
||||
#define version221
|
||||
#endif
|
||||
|
||||
// features of 2.1 work also in 2.2
|
||||
#if defined(version22)
|
||||
|
||||
@ -43,8 +43,13 @@ export CFDEM_LIGGGHTS_LIB_NAME=lmp_$CFDEM_LIGGGHTS_MAKEFILE_NAME
|
||||
#- CFDEM lib name
|
||||
export CFDEM_LIB_NAME=lagrangianCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION
|
||||
|
||||
#- LMP M2M lib path
|
||||
#- LMP M2M lib path and makefile
|
||||
export CFDEM_M2MLIB_PATH=$CFDEM_SRC_DIR/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayM2M/library
|
||||
export CFDEM_M2MLIB_MAKEFILENAME=$CFDEM_LIGGGHTS_MAKEFILE_NAME
|
||||
|
||||
#- LMP POEMS lib path and makefile
|
||||
export CFDEM_POEMSLIB_PATH=$CFDEM_LIGGGHTS_SRC_DIR/../lib/poems
|
||||
export CFDEM_POEMSLIB_MAKEFILENAME=g++
|
||||
|
||||
#- path to test harness
|
||||
export CFDEM_TEST_HARNESS_PATH=$CFDEM_PROJECT_USER_DIR/log/logFilesCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION
|
||||
@ -112,7 +117,7 @@ alias cfdemPullCFDEMcoupling='bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/p
|
||||
#- shortcut to clean CFDEM
|
||||
alias cfdemCleanCFDEM='bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/cleanCFDEMcoupling.sh'
|
||||
|
||||
#- shortcut to compile LIGGGHTS
|
||||
#- shortcut to compile LIGGGHTS + sublibraries
|
||||
alias cfdemCompLIG='bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/compileLIGGGHTS.sh'
|
||||
|
||||
#- shortcut to compile CFDEMcoupling +LIGGGHTS
|
||||
@ -151,21 +156,16 @@ export -f cfdemLiggghtsPar
|
||||
if [ -d "$CFDEM_PROJECT_USER_DIR" ]; then
|
||||
:
|
||||
else
|
||||
if [ -d "$CFDEM_PROJECT_DIR" ]; then
|
||||
cd $CFDEM_PROJECT_DIR/..
|
||||
echo "make new dirs $CFDEM_PROJECT_DIR/../$LOGNAME-$CFDEM_VERSION-$WM_PROJECT_VERSION ? (y/n)"
|
||||
echo "make new dirs $CFDEM_PROJECT_USER_DIR ? (y/n)"
|
||||
read YN
|
||||
if [ $YN == "y" ]; then
|
||||
cd $CFDEM_PROJECT_DIR
|
||||
mkdir $LOGNAME-$CFDEM_VERSION-$WM_PROJECT_VERSION
|
||||
cd $LOGNAME-$CFDEM_VERSION-$WM_PROJECT_VERSION
|
||||
mkdir run
|
||||
mkdir -p log/logFilesCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION
|
||||
else
|
||||
echo "aborted by user."
|
||||
exit
|
||||
#exit
|
||||
fi
|
||||
else
|
||||
echo "error in CFDEMcoupling's bashrc."
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -36,7 +36,8 @@ echo ""
|
||||
echo "library names"
|
||||
echo '$CFDEM_LIGGGHTS_LIB_NAME = '"$CFDEM_LIGGGHTS_LIB_NAME"
|
||||
echo '$CFDEM_LIB_NAME = '"$CFDEM_LIB_NAME"
|
||||
echo '$LD_LIBRARY_PATH = '"$LD_LIBRARY_PATH "
|
||||
echo '$LD_LIBRARY_PATH = '"$LD_LIBRARY_PATH"
|
||||
echo '$WM_NCOMPPROCS = '"$WM_NCOMPPROCS"
|
||||
|
||||
echo "*******************"
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
#===================================================================#
|
||||
# compile routine for CFDEMcoupling + LIGGGHTS, part of CFDEMproject
|
||||
# Christoph Goniva - May. 2012, DCS Computing GmbH
|
||||
# update March 2014
|
||||
#===================================================================#
|
||||
|
||||
#- include functions
|
||||
@ -16,10 +17,15 @@ cd $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc
|
||||
mkdir -p $logDir
|
||||
|
||||
#================================================================================#
|
||||
# compile LIGGGHTS
|
||||
# compile LIGGGHTS src
|
||||
#================================================================================#
|
||||
bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/compileLIGGGHTS.sh
|
||||
|
||||
#================================================================================#
|
||||
# compile LIGGGHTS libraries
|
||||
#================================================================================#
|
||||
bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/compileLIGGGHTS_lib.sh
|
||||
|
||||
#================================================================================#
|
||||
# compile CFDEMcoupling
|
||||
#================================================================================#
|
||||
|
||||
@ -13,6 +13,10 @@ logDir="log"
|
||||
cd $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc
|
||||
mkdir -p $logDir
|
||||
|
||||
#- remove old success/fail logs
|
||||
rm $logDir/log_compile_results_success
|
||||
rm $logDir/log_compile_results_fail
|
||||
|
||||
CWD="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
|
||||
NOW="$(date +"%Y-%m-%d-%H:%M")"
|
||||
|
||||
@ -39,10 +43,90 @@ echo ""
|
||||
if [ ! -f "$CWD/$whitelist" ];then
|
||||
echo "$whitelist does not exist in $CWD"
|
||||
else
|
||||
njobs=`wc -l < $CWD/$whitelist`
|
||||
echo ""
|
||||
echo "running compilation in pseudo-parallel mode of $njobs solvers"
|
||||
|
||||
#--------------------------------------------------------------------------------#
|
||||
logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir"
|
||||
|
||||
##number of solvers compiled at a time
|
||||
nsteps=$WM_NCOMPPROCS
|
||||
echo "do compilation on $nsteps procs"
|
||||
nchunk=`echo $njobs/$nsteps+1 | bc`
|
||||
if [[ $WM_NCOMPPROCS == "" ]]; then
|
||||
echo "do compilation in serial"
|
||||
nsteps=1
|
||||
nchunk=1
|
||||
else
|
||||
echo "do compilation on $nsteps procs in $nchunk chunks"
|
||||
fi
|
||||
|
||||
counter=0
|
||||
for i in `seq $nchunk`
|
||||
do
|
||||
|
||||
#wait until prev. compilation is finished
|
||||
echo "waiting..."
|
||||
until [ `ps -C make | wc -l` -eq 1 ];
|
||||
do
|
||||
sleep 2
|
||||
done
|
||||
|
||||
for j in `seq $nsteps`
|
||||
do
|
||||
let solNr=($i-1)*$nsteps+$j
|
||||
LINE=`head -n $solNr $CWD/$whitelist | tail -1`
|
||||
|
||||
# white lines
|
||||
if [[ "$LINE" == "" ]]; then
|
||||
continue
|
||||
# comments
|
||||
elif [[ "$LINE" == \#* ]]; then
|
||||
continue
|
||||
# paths
|
||||
elif [[ "$LINE" == */dir ]]; then
|
||||
#echo "change path"
|
||||
LINE=$(echo "${LINE%????}")
|
||||
path="$CFDEM_SOLVER_DIR/$LINE"
|
||||
#cd $path
|
||||
let solNr++
|
||||
fi
|
||||
|
||||
if [[ "$counter" -lt "$njobs" ]]; then
|
||||
#--------------------------------------------------------------------------------#
|
||||
#- define variables
|
||||
#logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir"
|
||||
logfileName="log_compileCFDEMcoupling""_$LINE"
|
||||
casePath="$CFDEM_SOLVER_DIR/$LINE"
|
||||
headerText="$logfileName""_$LINE""-$NOW"
|
||||
parallel="true"
|
||||
#--------------------------------------------------------------------------------#
|
||||
|
||||
#echo "compiling $LINE"
|
||||
compileSolver $logpath $logfileName $casePath $headerText $parallel
|
||||
let counter++
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
echo "compilation done."
|
||||
fi
|
||||
|
||||
#--------------------------------------------------------------------------------#
|
||||
# loop all solvers and collect the logs
|
||||
#--------------------------------------------------------------------------------#
|
||||
|
||||
#wait until prev. compilation is finished
|
||||
echo "waiting..."
|
||||
until [ `ps -C make | wc -l` -eq 1 ];
|
||||
do
|
||||
sleep 2
|
||||
done
|
||||
|
||||
if [ ! -f "$CWD/$whitelist" ];then
|
||||
echo "$whitelist does not exist in $CWD"
|
||||
else
|
||||
NLINES=`wc -l < $CWD/$whitelist`
|
||||
COUNT=0
|
||||
|
||||
@ -62,29 +146,22 @@ else
|
||||
continue
|
||||
# paths
|
||||
elif [[ "$LINE" == */dir ]]; then
|
||||
echo "change path"
|
||||
LINE=$(echo "${LINE%????}")
|
||||
path="$CFDEM_SOLVER_DIR/$LINE"
|
||||
cd $path
|
||||
#continue
|
||||
fi
|
||||
|
||||
#- execute tutorial
|
||||
echo "running testcase $path"
|
||||
#bash Allrun.sh
|
||||
echo "collecting log of $path"
|
||||
|
||||
#--------------------------------------------------------------------------------#
|
||||
#- define variables
|
||||
#logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir"
|
||||
logfileName="log_compileCFDEMcoupling""_$LINE"
|
||||
casePath="$CFDEM_SOLVER_DIR/$LINE"
|
||||
headerText="$logfileName""_$LINE""-$NOW"
|
||||
parallel="false"
|
||||
#--------------------------------------------------------------------------------#
|
||||
compileSolver $logpath $logfileName $casePath $headerText $parallel
|
||||
|
||||
#echo "did the solvers compile correcty? - press enter to proceed."
|
||||
#read
|
||||
#--------------------------------------------------------------------------------#
|
||||
collectLogCFDEMcoupling_sol $logpath $logfileName $casePath
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
@ -21,4 +21,15 @@ logfileName="log_compileLIGGGHTS" #alternative: logfileName="log_compileLIGGGHTS
|
||||
headerText="$logfileName""-$NOW"
|
||||
#--------------------------------------------------------------------------------#
|
||||
|
||||
|
||||
#================================================================================#
|
||||
# compile LIGGGHTS src
|
||||
#================================================================================#
|
||||
|
||||
compileLIGGGHTS $logpath $logfileName $headerText
|
||||
|
||||
|
||||
#================================================================================#
|
||||
# compile LIGGGHTS libraries
|
||||
#================================================================================#
|
||||
bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/compileLIGGGHTS_lib.sh
|
||||
|
||||
71
src/lagrangian/cfdemParticle/etc/compileLIGGGHTS_lib.sh
Executable file
71
src/lagrangian/cfdemParticle/etc/compileLIGGGHTS_lib.sh
Executable file
@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
|
||||
#===================================================================#
|
||||
# compile routine for LIGGGHTS libraries, part of CFDEMproject
|
||||
# Christoph Goniva - March. 2014, DCS Computing GmbH
|
||||
#===================================================================#
|
||||
|
||||
#- include functions
|
||||
source $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/functions.sh
|
||||
|
||||
NOW="$(date +"%Y-%m-%d-%H:%M")"
|
||||
logDir="log"
|
||||
|
||||
|
||||
cd $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc
|
||||
mkdir -p $logDir
|
||||
|
||||
|
||||
#================================================================================#
|
||||
# compile src
|
||||
#================================================================================#
|
||||
whitelist="$CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/library-liggghts-list.txt"
|
||||
echo ""
|
||||
echo "Compiling sub-libraries of LIGGGHTS now..."
|
||||
echo "Please provide the libraries to be compiled in the $CWD/$whitelist file."
|
||||
echo "Libraries must be in the $CFDEM_LIGGGHTS_SRC_DIR/../lib directory."
|
||||
|
||||
if [ ! -f "$CWD/$whitelist" ];then
|
||||
echo "$whitelist does not exist in $CWD. Nothing will be done."
|
||||
NLINES=0
|
||||
COUNT=0
|
||||
else
|
||||
NLINES=`wc -l < $CWD/$whitelist`
|
||||
COUNT=0
|
||||
fi
|
||||
|
||||
while [ $COUNT -lt $NLINES ]
|
||||
do
|
||||
let COUNT++
|
||||
LINE=`head -n $COUNT $CWD/$whitelist | tail -1`
|
||||
|
||||
# white lines
|
||||
if [[ "$LINE" == "" ]]; then
|
||||
echo "compile $LINE"
|
||||
continue
|
||||
# comments
|
||||
elif [[ "$LINE" == \#* ]]; then
|
||||
continue
|
||||
# paths
|
||||
elif [[ "$LINE" == */dir ]]; then
|
||||
echo "will change path..."
|
||||
LINE=$(echo "${LINE%????}")
|
||||
path="$CFDEM_LIGGGHTS_SRC_DIR/../lib"
|
||||
cd $path
|
||||
echo $PWD
|
||||
#continue
|
||||
fi
|
||||
|
||||
#--------------------------------------------------------------------------------#
|
||||
#- define variables
|
||||
logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir"
|
||||
logfileName="log_compile$LINE""lib"
|
||||
headerText="$logfileName""-$NOW"
|
||||
libVarMakefileName="CFDEM_$LINE""LIB_MAKEFILENAME"
|
||||
makeFileName="Makefile.${!libVarMakefileName}"
|
||||
libVarName="CFDEM_$LINE""LIB_PATH"
|
||||
libraryPath="${!libVarName}"
|
||||
#--------------------------------------------------------------------------------#
|
||||
|
||||
compileLMPlib $logpath $logfileName $headerText $makeFileName $libraryPath
|
||||
done
|
||||
@ -45,6 +45,11 @@ setenv CFDEM_LIB_NAME lagrangianCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION
|
||||
|
||||
#- LMP M2M lib path
|
||||
setenv CFDEM_M2MLIB_PATH $CFDEM_SRC_DIR/lagrangian/cfdemParticle/subModels/dataExchangeModel/twoWayM2M/library
|
||||
setenv CFDEM_M2MLIB_MAKEFILENAME $CFDEM_LIGGGHTS_MAKEFILE_NAME
|
||||
|
||||
#- LMP POEMS lib path
|
||||
setenv CFDEM_POEMSLIB_PATH $CFDEM_LIGGGHTS_SRC_DIR/../lib/poems
|
||||
setenv CFDEM_POEMSLIB_MAKEFILENAME g++
|
||||
|
||||
#- path to test harness
|
||||
setenv CFDEM_TEST_HARNESS_PATH $CFDEM_PROJECT_USER_DIR/log/logFilesCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION
|
||||
@ -110,7 +115,7 @@ alias cfdemPullCFDEMcoupling 'bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/p
|
||||
#- shortcut to clean CFDEM
|
||||
alias cfdemCleanCFDEM 'bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/cleanCFDEMcoupling.sh'
|
||||
|
||||
#- shortcut to compile LIGGGHTS
|
||||
#- shortcut to compile LIGGGHTS + sublibraries
|
||||
alias cfdemCompLIG 'bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/compileLIGGGHTS.sh'
|
||||
|
||||
#- shortcut to compile CFDEMcoupling +LIGGGHTS
|
||||
@ -137,6 +142,9 @@ alias cfdemTestTUT 'bash $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/testTutoria
|
||||
#- shortcut to run liggghts in serial
|
||||
alias cfdemLiggghts '$CFDEM_LIGGGHTS_SRC_DIR/lmp_$CFDEM_LIGGGHTS_MAKEFILE_NAME'
|
||||
|
||||
#- shortcut to run liggghts in parallel (no fcts in csh...)
|
||||
alias cfdemLiggghtsPar 'echo "mpirun -np xx -machinefile mynodes $CFDEM_LIGGGHTS_SRC_DIR/lmp_$CFDEM_LIGGGHTS_MAKEFILE_NAME < in.liggghts_init"'
|
||||
|
||||
#- shortcut to run liggghts in parallel
|
||||
# unfortunately no functions available in csh
|
||||
|
||||
|
||||
@ -160,11 +160,16 @@ compileLIGGGHTS()
|
||||
rm $CFDEM_LIGGGHTS_SRC_DIR/"lmp_"$CFDEM_LIGGGHTS_MAKEFILE_NAME
|
||||
rm $CFDEM_LIGGGHTS_SRC_DIR/"lib"$CFDEM_LIGGGHTS_LIB_NAME".a"
|
||||
make clean-all 2>&1 | tee -a $logpath/$logfileName
|
||||
make $CFDEM_LIGGGHTS_MAKEFILE_NAME -j $WM_NCOMPPROCS 2>&1 | tee -a $logpath/$logfileName
|
||||
if [[ $WM_NCOMPPROCS == "" ]]; then
|
||||
echo "compiling LIGGGHTS on one CPU"
|
||||
make $CFDEM_LIGGGHTS_MAKEFILE_NAME 2>&1 | tee -a $logpath/$logfileName
|
||||
else
|
||||
echo "compiling LIGGGHTS on $WM_NCOMPPROCS CPUs"
|
||||
make $CFDEM_LIGGGHTS_MAKEFILE_NAME -j $WM_NCOMPPROCS 2>&1 | tee -a $logpath/$logfileName
|
||||
fi
|
||||
make makelib 2>&1 | tee -a $logpath/$logfileName
|
||||
make -f Makefile.lib $CFDEM_LIGGGHTS_MAKEFILE_NAME 2>&1 | tee -a $logpath/$logfileName
|
||||
}
|
||||
#==================================#
|
||||
|
||||
#==================================#
|
||||
#- function to compile a lammps lib
|
||||
@ -352,7 +357,7 @@ DEMrun()
|
||||
debugMode="valgrind"
|
||||
elif [ $debugMode == "strict" ]; then
|
||||
#debugMode="valgrind --leak-check=full -v --trace-children=yes --track-origins=yes"
|
||||
debugMode="valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes"
|
||||
debugMode="valgrind --tool=memcheck --track-origins=yes --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes"
|
||||
else
|
||||
debugMode=""
|
||||
fi
|
||||
@ -544,6 +549,7 @@ parCFDDEMrun()
|
||||
nrProcs="$6"
|
||||
machineFileName="$7"
|
||||
debugMode="$8"
|
||||
reconstuctCase="$9"
|
||||
#--------------------------------------------------------------------------------#
|
||||
|
||||
if [ $debugMode == "on" ]; then
|
||||
@ -567,6 +573,14 @@ parCFDDEMrun()
|
||||
#- decompose case
|
||||
decomposePar
|
||||
|
||||
#- make proc dirs visible
|
||||
count=0
|
||||
for i in `seq $nrProcs`
|
||||
do
|
||||
let count=$i-1
|
||||
(cd $casePath/CFD/processor$count && touch file.foam)
|
||||
done
|
||||
|
||||
#- header
|
||||
echo 2>&1 | tee -a /$logpath/$logfileName
|
||||
echo "// $headerText //" 2>&1 | tee -a $logpath/$logfileName
|
||||
@ -580,17 +594,22 @@ parCFDDEMrun()
|
||||
rm couplingFiles/*
|
||||
|
||||
#- run applictaion
|
||||
if [ $machineFileName == "none" ]; then
|
||||
if [[ $machineFileName == "none" ]]; then
|
||||
mpirun -np $nrProcs $debugMode $solverName -parallel 2>&1 | tee -a $logpath/$logfileName
|
||||
|
||||
#- reconstruct case
|
||||
#pseudoParallelRun "reconstructPar" $nrProcs
|
||||
reconstructPar
|
||||
if [[ $reconstuctCase == "true" ]]; then
|
||||
#pseudoParallelRun "reconstructPar" $nrProcs
|
||||
reconstructPar
|
||||
fi
|
||||
else
|
||||
mpirun -machinefile $machineFileName -np $nrProcs $debugMode $solverName -parallel 2>&1 | tee -a $logpath/$logfileName
|
||||
|
||||
#- reconstruct case
|
||||
reconstructPar
|
||||
if [[ $reconstuctCase == "true" ]]; then
|
||||
#pseudoParallelRun "reconstructPar" $nrProcs
|
||||
reconstructPar
|
||||
fi
|
||||
fi
|
||||
|
||||
#- keep terminal open (if started in new terminal)
|
||||
@ -620,6 +639,35 @@ collectLog()
|
||||
}
|
||||
#==================================#
|
||||
|
||||
#==================================#
|
||||
#- function to collect results from
|
||||
#- logfiles to one log file
|
||||
|
||||
collectLogCFDEMcoupling_sol()
|
||||
{
|
||||
#--------------------------------------------------------------------------------#
|
||||
#- define variables
|
||||
logpath="$1"
|
||||
logfileName="$2"
|
||||
casePath="$3"
|
||||
#--------------------------------------------------------------------------------#
|
||||
# read name of solver
|
||||
SOLVERNAME=$(basename $casePath)
|
||||
|
||||
# read last line of log
|
||||
LASTLINE=`tac $logpath/$logfileName | egrep -m 1 .`
|
||||
LASTSTRING=`echo ${LASTLINE##* }`
|
||||
LASTWORD=$(basename $LASTSTRING)
|
||||
|
||||
# log if compilation was success
|
||||
if [[ $LASTWORD == $SOLVERNAME ]]; then
|
||||
echo "$SOLVERNAME" >> $logpath/log_compile_results_success
|
||||
else
|
||||
echo "$SOLVERNAME" >> $logpath/log_compile_results_fail
|
||||
fi
|
||||
}
|
||||
#==================================#
|
||||
|
||||
#==================================#
|
||||
#- function to replace a line in a file where text consecutive
|
||||
# the old line must look like: oldWord
|
||||
|
||||
@ -1 +1,11 @@
|
||||
lagrangian/cfdemParticle/dir
|
||||
|
||||
#====================================================='
|
||||
#- RADL
|
||||
fvOptions/dir
|
||||
cylPorousMedia/dir
|
||||
|
||||
#====================================================='
|
||||
#- other
|
||||
finiteVolume/dir
|
||||
|
||||
|
||||
@ -1,5 +1,14 @@
|
||||
cfdemSolverPimple/dir
|
||||
cfdemSolverPisoMS/dir
|
||||
cfdemSolverPiso/dir
|
||||
cfdemSolverIB/dir
|
||||
cfdemSolverPisoScalar/dir
|
||||
cfdemSolverPimpleImEx/dir
|
||||
cfdemSolverIBInterLubrication/dir
|
||||
cfdemSolverIBScalar/dir
|
||||
cfdemSolverInterDyM/dir
|
||||
cfdemSolverInterDyMPC/dir
|
||||
cfdemSolverBubble/dir
|
||||
cfdemSolverPisoMS/dir
|
||||
cfdemSolverPimpleDyM/dir
|
||||
cfdemSolverPimpleDyM_22x/dir
|
||||
cfdemSolverPimpleDyMMS_22x/dir
|
||||
cfdemSolverPimpleDyMScalar_22x/dir
|
||||
|
||||
@ -7,23 +7,51 @@
|
||||
#===================================================================#
|
||||
|
||||
cfdemSolverPiso/settlingTestMPI/dir
|
||||
|
||||
cfdemSolverPiso/ErgunTestMPI/dir
|
||||
|
||||
cfdemSolverPiso/ErgunTestMPI_cgs/dir
|
||||
|
||||
cfdemSolverPiso/ErgunTestMPI_restart/dir
|
||||
|
||||
cfdemSolverIB/twoSpheresGlowinskiMPI/dir
|
||||
|
||||
cfdemSolverPisoScalar/packedBedTemp/dir
|
||||
|
||||
#===================================================================#
|
||||
# RADL
|
||||
cfdemSolverPimpleImEx/settlingTestMPI/dir
|
||||
cfdemSolverPimpleImEx/ErgunTestMPI/dir
|
||||
#cfdemSolverPimpleImEx/crossFlow/dir
|
||||
#cfdemSolverIB/periodicCase/dir
|
||||
#cfdemSolverIB/cfdemIBPeriodicCubicalBox_fullyPeriodic/dir
|
||||
#cfdemSolverIBInterLubrication/twoCoatedParticlesRelMotion_smallTest/dir
|
||||
#cfdemSolverIBScalar/cfdemIBPeriodicCubicalBoxScalar/dir
|
||||
|
||||
#===================================================================#
|
||||
# NesteJacobs
|
||||
#Projects/Neste/cfdemSolverBubble/3pFBreactor/dir
|
||||
#Projects/Neste/cfdemSolverInterDyM/3pFBreactor/dir
|
||||
|
||||
cfdemSolverPiso/ErgunTestCG/dir
|
||||
|
||||
cfdemSolverPimple/ErgunTestMPI/dir
|
||||
#===================================================================#
|
||||
# not in release:
|
||||
|
||||
#cfdemSolverPiso/settlingTestBigParticleMPI/dir
|
||||
#cfdemSolverPiso/ErgunTestCG/dir
|
||||
#cfdemSolverPiso/ErgunTestM2M/dir
|
||||
#cfdemSolverPiso/HopperEmptying/dir
|
||||
|
||||
cfdemSolverPimpleDyM/ErgunTestMPI/dir
|
||||
|
||||
#cfdemSolverPisoMS/settlingTestMPI/dir
|
||||
#cfdemSolverPisoMS/ErgunTestMPI/dir
|
||||
|
||||
#cfdemSolverInterDyM/twoPhaseSettlingTest/dir
|
||||
#cfdemSolverInterDyM/ErgunTestMPI/dir
|
||||
#cfdemSolverInterDyM/granularPiston/dir
|
||||
#cfdemSolverInterDyM/sugarNcoffee/dir
|
||||
|
||||
#cfdemSolverBubble/ErgunTestMPI_pureLiquid/dir
|
||||
|
||||
#- these examples are already designed for 2.3.x
|
||||
#cfdemSolverInterDyMPC/sugarNcoffee/dir
|
||||
#cfdemSolverInterDyMPC/granularPiston/dir
|
||||
#cfdemSolverInterDyMPC/meltingPot/dir
|
||||
|
||||
|
||||
|
||||
|
||||
@ -165,6 +165,35 @@ void averagingModel::setVectorSum
|
||||
field.correctBoundaryConditions();
|
||||
}
|
||||
|
||||
void averagingModel::setVectorSumSimple
|
||||
(
|
||||
volVectorField& field,
|
||||
double**& value,
|
||||
double**& weight,
|
||||
int nP
|
||||
) const
|
||||
{
|
||||
label cellI;
|
||||
label subCell=0;
|
||||
vector valueVec;
|
||||
scalar weightP;
|
||||
|
||||
for(int index=0; index< nP; index++)
|
||||
{
|
||||
cellI = particleCloud_.cellIDs()[index][subCell];
|
||||
|
||||
if (cellI >= 0)
|
||||
{
|
||||
for(int i=0;i<3;i++) valueVec[i] = value[index][i];
|
||||
weightP = weight[index][subCell];
|
||||
field[cellI] += valueVec*weightP;
|
||||
}
|
||||
}
|
||||
|
||||
// correct cell values to patches
|
||||
field.correctBoundaryConditions();
|
||||
}
|
||||
|
||||
void averagingModel::setScalarSum
|
||||
(
|
||||
volScalarField& field,
|
||||
@ -301,7 +330,7 @@ void Foam::averagingModel::undoWeightFields(double**const& mask) const
|
||||
|
||||
tmp<volVectorField> Foam::averagingModel::UsInterp() const
|
||||
{
|
||||
tmp<volVectorField> tsource
|
||||
tmp<volVectorField> tsource
|
||||
(
|
||||
new volVectorField
|
||||
(
|
||||
|
||||
@ -160,6 +160,14 @@ public:
|
||||
double**const& mask
|
||||
) const;
|
||||
|
||||
void setVectorSumSimple
|
||||
(
|
||||
volVectorField& field,
|
||||
double**& value,
|
||||
double**& weight,
|
||||
int np
|
||||
) const;
|
||||
|
||||
void setScalarSum
|
||||
(
|
||||
volScalarField& field,
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user