mirror of
https://github.com/ParticulateFlow/CFDEMcoupling-PFM.git
synced 2025-12-08 06:37:44 +00:00
release on 2013-03-07_14-30-36
This commit is contained in:
81
README
Normal file
81
README
Normal 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.
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
@ -42,6 +42,7 @@ Description
|
|||||||
#include "averagingModel.H"
|
#include "averagingModel.H"
|
||||||
#include "momCoupleModel.H"
|
#include "momCoupleModel.H"
|
||||||
#include "forceModel.H"
|
#include "forceModel.H"
|
||||||
|
#include "IOModel.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -120,6 +121,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
runTime.write();
|
runTime.write();
|
||||||
|
|
||||||
|
particleCloud.IOM().dumpDEMdata();
|
||||||
|
|
||||||
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
|
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
|
||||||
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
|
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
|
||||||
<< nl << endl;
|
<< nl << endl;
|
||||||
|
|||||||
@ -75,7 +75,7 @@ The functionality of this CFD-DEM framwork is described via <A HREF = "#_1_2">tu
|
|||||||
</P>
|
</P>
|
||||||
<HR>
|
<HR>
|
||||||
|
|
||||||
<P>(*) <A HREF = "http://www.openfoam.com">OpenFOAM(R)</A> is a registered trade mark of Silicon Graphics International Corp. This offering is not affiliated, approved or endorsed by Silicon Graphics International Corp., the producer of the OpenFOAM(R) software and owner of the OpenFOAM(R) trademark.
|
<P>(*) <A HREF = "http://www.openfoam.com">OpenFOAM(R)</A> 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(R) software and owner of the OpenFOAM(R) trade mark.
|
||||||
</P>
|
</P>
|
||||||
<HR>
|
<HR>
|
||||||
|
|
||||||
@ -204,34 +204,34 @@ listing below of styles within certain commands.
|
|||||||
</P>
|
</P>
|
||||||
<DIV ALIGN=center><TABLE BORDER=1 >
|
<DIV ALIGN=center><TABLE BORDER=1 >
|
||||||
<TR ALIGN="center"><TD ><A HREF = "IOModel.html">IOModel</A></TD><TD ><A HREF = "IOModel_basicIO.html">IOModel_basicIO</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "IOModel.html">IOModel</A></TD><TD ><A HREF = "IOModel_basicIO.html">IOModel_basicIO</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "IOModel_noIO.html">IOModel_noIO</A></TD><TD ><A HREF = "IOModel_trackIO.html">IOModel_trackIO</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "IOModel_noIO.html">IOModel_noIO</A></TD><TD ><A HREF = "IOModel_sophIO.html">IOModel_sophIO</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "averagingModel.html">averagingModel</A></TD><TD ><A HREF = "averagingModel_dilute.html">averagingModel_dilute</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "IOModel_trackIO.html">IOModel_trackIO</A></TD><TD ><A HREF = "averagingModel.html">averagingModel</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "cfdemSolverIB.html">cfdemSolverIB</A></TD><TD ><A HREF = "cfdemSolverPiso.html">cfdemSolverPiso</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "averagingModel_dilute.html">averagingModel_dilute</A></TD><TD ><A HREF = "cfdemSolverIB.html">cfdemSolverIB</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "cfdemSolverPisoScalar.html">cfdemSolverPisoScalar</A></TD><TD ><A HREF = "clockModel.html">clockModel</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "cfdemSolverPiso.html">cfdemSolverPiso</A></TD><TD ><A HREF = "cfdemSolverPisoScalar.html">cfdemSolverPisoScalar</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "clockModel_noClock.html">clockModel_noClock</A></TD><TD ><A HREF = "clockModel_standardClock.html">clockModel_standardClock</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "clockModel.html">clockModel</A></TD><TD ><A HREF = "clockModel_noClock.html">clockModel_noClock</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "dataExchangeModel.html">dataExchangeModel</A></TD><TD ><A HREF = "dataExchangeModel_noDataExchange.html">dataExchangeModel_noDataExchange</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "clockModel_standardClock.html">clockModel_standardClock</A></TD><TD ><A HREF = "dataExchangeModel.html">dataExchangeModel</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "dataExchangeModel_oneWayVTK.html">dataExchangeModel_oneWayVTK</A></TD><TD ><A HREF = "dataExchangeModel_twoWayFiles.html">dataExchangeModel_twoWayFiles</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "dataExchangeModel_noDataExchange.html">dataExchangeModel_noDataExchange</A></TD><TD ><A HREF = "dataExchangeModel_oneWayVTK.html">dataExchangeModel_oneWayVTK</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "dataExchangeModel_twoWayM2M.html">dataExchangeModel_twoWayM2M</A></TD><TD ><A HREF = "dataExchangeModel_twoWayMPI.html">dataExchangeModel_twoWayMPI</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "dataExchangeModel_twoWayFiles.html">dataExchangeModel_twoWayFiles</A></TD><TD ><A HREF = "dataExchangeModel_twoWayM2M.html">dataExchangeModel_twoWayM2M</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "forceModel.html">forceModel</A></TD><TD ><A HREF = "forceModel_Archimedes.html">forceModel_Archimedes</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "dataExchangeModel_twoWayMPI.html">dataExchangeModel_twoWayMPI</A></TD><TD ><A HREF = "forceModel.html">forceModel</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "forceModel_ArchimedesIB.html">forceModel_ArchimedesIB</A></TD><TD ><A HREF = "forceModel_DiFeliceDrag.html">forceModel_DiFeliceDrag</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "forceModel_Archimedes.html">forceModel_Archimedes</A></TD><TD ><A HREF = "forceModel_ArchimedesIB.html">forceModel_ArchimedesIB</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "forceModel_GidaspowDrag.html">forceModel_GidaspowDrag</A></TD><TD ><A HREF = "forceModel_KochHillDrag.html">forceModel_KochHillDrag</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "forceModel_DiFeliceDrag.html">forceModel_DiFeliceDrag</A></TD><TD ><A HREF = "forceModel_GidaspowDrag.html">forceModel_GidaspowDrag</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "forceModel_LaEuScalarTemp.html">forceModel_LaEuScalarTemp</A></TD><TD ><A HREF = "forceModel_MeiLift.html">forceModel_MeiLift</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "forceModel_KochHillDrag.html">forceModel_KochHillDrag</A></TD><TD ><A HREF = "forceModel_LaEuScalarTemp.html">forceModel_LaEuScalarTemp</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "forceModel_SchillerNaumannDrag.html">forceModel_SchillerNaumannDrag</A></TD><TD ><A HREF = "forceModel_ShirgaonkarIB.html">forceModel_ShirgaonkarIB</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "forceModel_MeiLift.html">forceModel_MeiLift</A></TD><TD ><A HREF = "forceModel_SchillerNaumannDrag.html">forceModel_SchillerNaumannDrag</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "forceModel_gradPForce.html">forceModel_gradPForce</A></TD><TD ><A HREF = "forceModel_noDrag.html">forceModel_noDrag</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "forceModel_ShirgaonkarIB.html">forceModel_ShirgaonkarIB</A></TD><TD ><A HREF = "forceModel_gradPForce.html">forceModel_gradPForce</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "forceModel_virtualMassForce.html">forceModel_virtualMassForce</A></TD><TD ><A HREF = "forceModel_viscForce.html">forceModel_viscForce</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "forceModel_noDrag.html">forceModel_noDrag</A></TD><TD ><A HREF = "forceModel_virtualMassForce.html">forceModel_virtualMassForce</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel.html">liggghtsCommandModel</A></TD><TD ><A HREF = "liggghtsCommandModel_execute.html">liggghtsCommandModel_execute</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "forceModel_viscForce.html">forceModel_viscForce</A></TD><TD ><A HREF = "liggghtsCommandModel.html">liggghtsCommandModel</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_readLiggghtsData.html">liggghtsCommandModel_readLiggghtsData</A></TD><TD ><A HREF = "liggghtsCommandModel_runLiggghts.html">liggghtsCommandModel_runLiggghts</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_execute.html">liggghtsCommandModel_execute</A></TD><TD ><A HREF = "liggghtsCommandModel_readLiggghtsData.html">liggghtsCommandModel_readLiggghtsData</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_writeLiggghts.html">liggghtsCommandModel_writeLiggghts</A></TD><TD ><A HREF = "locateModel.html">locateModel</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_runLiggghts.html">liggghtsCommandModel_runLiggghts</A></TD><TD ><A HREF = "liggghtsCommandModel_writeLiggghts.html">liggghtsCommandModel_writeLiggghts</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "locateModel_engineSearch.html">locateModel_engineSearch</A></TD><TD ><A HREF = "locateModel_engineSearchIB.html">locateModel_engineSearchIB</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "locateModel.html">locateModel</A></TD><TD ><A HREF = "locateModel_engineSearch.html">locateModel_engineSearch</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "locateModel_standardSearch.html">locateModel_standardSearch</A></TD><TD ><A HREF = "locateModel_turboEngineSearchM2M.html">locateModel_turboEngineM2MSearch</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "locateModel_engineSearchIB.html">locateModel_engineSearchIB</A></TD><TD ><A HREF = "locateModel_standardSearch.html">locateModel_standardSearch</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "locateModel_turboEngineSearch.html">locateModel_turboEngineSearch</A></TD><TD ><A HREF = "meshMotionModel.html">meshMotionModel</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "locateModel_turboEngineSearchM2M.html">locateModel_turboEngineM2MSearch</A></TD><TD ><A HREF = "locateModel_turboEngineSearch.html">locateModel_turboEngineSearch</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "meshMotionModel_noMeshMotion.html">meshMotionModel_noMeshMotion</A></TD><TD ><A HREF = "momCoupleModel.html">momCoupleModel</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "meshMotionModel.html">meshMotionModel</A></TD><TD ><A HREF = "meshMotionModel_noMeshMotion.html">meshMotionModel_noMeshMotion</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel_explicitCouple.html">momCoupleModel_explicitCouple</A></TD><TD ><A HREF = "momCoupleModel_implicitCouple.html">momCoupleModel_implicitCouple</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel.html">momCoupleModel</A></TD><TD ><A HREF = "momCoupleModel_explicitCouple.html">momCoupleModel_explicitCouple</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel_noCouple.html">momCoupleModel_noCouple</A></TD><TD ><A HREF = "regionModel.html">regionModel</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel_implicitCouple.html">momCoupleModel_implicitCouple</A></TD><TD ><A HREF = "momCoupleModel_noCouple.html">momCoupleModel_noCouple</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "regionModel_allRegion.html">regionModel_allRegion</A></TD><TD ><A HREF = "voidFractionModel.html">voidfractionModel</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "regionModel.html">regionModel</A></TD><TD ><A HREF = "regionModel_allRegion.html">regionModel_allRegion</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_GaussVoidFraction.html">voidfractionModel_GaussVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_IBVoidFraction.html">voidfractionModel_IBVoidFraction</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel.html">voidfractionModel</A></TD><TD ><A HREF = "voidFractionModel_GaussVoidFraction.html">voidfractionModel_GaussVoidFraction</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_bigParticleVoidFraction.html">voidfractionModel_bigParticleVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_centreVoidFraction.html">voidfractionModel_centreVoidFraction</A></TD></TR>
|
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_IBVoidFraction.html">voidfractionModel_IBVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_bigParticleVoidFraction.html">voidfractionModel_bigParticleVoidFraction</A></TD></TR>
|
||||||
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_dividedVoidFraction.html">voidfractionModel_dividedVoidFraction</A>
|
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_centreVoidFraction.html">voidfractionModel_centreVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_dividedVoidFraction.html">voidfractionModel_dividedVoidFraction</A>
|
||||||
</TD></TR></TABLE></DIV>
|
</TD></TR></TABLE></DIV>
|
||||||
|
|
||||||
</HTML>
|
</HTML>
|
||||||
|
|||||||
Binary file not shown.
@ -56,7 +56,7 @@ Core development of CFDEMcoupling is done by Christoph Goniva and Christoph Klos
|
|||||||
This documentation was written by Christoph Goniva, DCS Computing GmbH, 2012
|
This documentation was written by Christoph Goniva, DCS Computing GmbH, 2012
|
||||||
|
|
||||||
:line
|
:line
|
||||||
(*) "OpenFOAM(R)"_of is a registered trade mark of Silicon Graphics International Corp. This offering is not affiliated, approved or endorsed by Silicon Graphics International Corp., the producer of the OpenFOAM(R) software and owner of the OpenFOAM(R) trademark.
|
(*) "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(R) software and owner of the OpenFOAM(R) trade mark.
|
||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
@ -170,274 +170,6 @@ Reasonable example settings for the "liggghtsCommands" dictionary are given in t
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1.6 Models/Solvers :h4,link(cmd_5),link(comm)
|
1.6 Models/Solvers :h4,link(cmd_5),link(comm)
|
||||||
|
|
||||||
This section lists all CFDEMcoupling sub-models and solvers alphabetically, with a separate
|
This section lists all CFDEMcoupling sub-models and solvers alphabetically, with a separate
|
||||||
@ -447,6 +179,7 @@ listing below of styles within certain commands.
|
|||||||
"IOModel"_IOModel.html,
|
"IOModel"_IOModel.html,
|
||||||
"IOModel_basicIO"_IOModel_basicIO.html,
|
"IOModel_basicIO"_IOModel_basicIO.html,
|
||||||
"IOModel_noIO"_IOModel_noIO.html,
|
"IOModel_noIO"_IOModel_noIO.html,
|
||||||
|
"IOModel_sophIO"_IOModel_sophIO.html,
|
||||||
"IOModel_trackIO"_IOModel_trackIO.html,
|
"IOModel_trackIO"_IOModel_trackIO.html,
|
||||||
"averagingModel"_averagingModel.html,
|
"averagingModel"_averagingModel.html,
|
||||||
"averagingModel_dilute"_averagingModel_dilute.html,
|
"averagingModel_dilute"_averagingModel_dilute.html,
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
</PRE>
|
</PRE>
|
||||||
<P><B>Description:</B>
|
<P><B>Description:</B>
|
||||||
</P>
|
</P>
|
||||||
<P>The basic IO-model writes particle positions velocities and radii to files. The output directory ($casePath/CFD/particles) is created automatically. 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 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>
|
</P>
|
||||||
<P><B>Restrictions:</B> None.
|
<P><B>Restrictions:</B> None.
|
||||||
</P>
|
</P>
|
||||||
|
|||||||
@ -19,7 +19,7 @@ IOModel "basicIO"; :pre
|
|||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
|
|
||||||
The basic IO-model writes particle positions velocities and radii to files. The output directory ($casePath/CFD/particles) is created automatically. 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 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.
|
||||||
|
|
||||||
[Restrictions:] None.
|
[Restrictions:] None.
|
||||||
|
|
||||||
|
|||||||
33
doc/IOModel_sophIO.html
Normal file
33
doc/IOModel_sophIO.html
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<HTML>
|
||||||
|
<CENTER><A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A> - <A HREF = "CFDEMcoupling_Manual.html#comm">CFDEM Commands</A>
|
||||||
|
</CENTER>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
<H3>IOModel_sophIO command
|
||||||
|
</H3>
|
||||||
|
<P><B>Syntax:</B>
|
||||||
|
</P>
|
||||||
|
<P>Defined in couplingProperties dictionary.
|
||||||
|
</P>
|
||||||
|
<PRE>IOModel "sophIO";
|
||||||
|
</PRE>
|
||||||
|
<P><B>Examples:</B>
|
||||||
|
</P>
|
||||||
|
<PRE>IOModel "sophIO";
|
||||||
|
</PRE>
|
||||||
|
<P><B>Description:</B>
|
||||||
|
</P>
|
||||||
|
<P>The soph IO-model writes particle positions, velocities, voidfraction, implicit forces, explicit forces , DEM forces and radii to files. the same as for basicIO model. Data is written every write time of the CFD simulation.
|
||||||
|
Currently paraview can only interpret position, velocity and radius (a port to VTK might help).
|
||||||
|
</P>
|
||||||
|
<P><B>Restrictions:</B> None.
|
||||||
|
</P>
|
||||||
|
<P><B>Related commands:</B>
|
||||||
|
</P>
|
||||||
|
<P><A HREF = "IOModel.html">IOModel</A>
|
||||||
|
</P>
|
||||||
|
</HTML>
|
||||||
30
doc/IOModel_sophIO.txt
Normal file
30
doc/IOModel_sophIO.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
"CFDEMproject WWW Site"_lws - "CFDEM Commands"_lc :c
|
||||||
|
|
||||||
|
:link(lws,http://www.cfdem.com)
|
||||||
|
:link(lc,CFDEMcoupling_Manual.html#comm)
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
IOModel_sophIO command :h3
|
||||||
|
|
||||||
|
[Syntax:]
|
||||||
|
|
||||||
|
Defined in couplingProperties dictionary.
|
||||||
|
|
||||||
|
IOModel "sophIO"; :pre
|
||||||
|
|
||||||
|
[Examples:]
|
||||||
|
|
||||||
|
IOModel "sophIO"; :pre
|
||||||
|
|
||||||
|
[Description:]
|
||||||
|
|
||||||
|
The soph IO-model writes particle positions, velocities, voidfraction, implicit forces, explicit forces , DEM forces and radii to files. the same as for basicIO model. Data is written every write time of the CFD simulation.
|
||||||
|
Currently paraview can only interpret position, velocity and radius (a port to VTK might help).
|
||||||
|
|
||||||
|
[Restrictions:] None.
|
||||||
|
|
||||||
|
[Related commands:]
|
||||||
|
|
||||||
|
"IOModel"_IOModel.html
|
||||||
|
|
||||||
Binary file not shown.
@ -6,7 +6,6 @@ voidFractionModels = subModels/voidFractionModel
|
|||||||
locateModels = subModels/locateModel
|
locateModels = subModels/locateModel
|
||||||
meshMotionModels = subModels/meshMotionModel
|
meshMotionModels = subModels/meshMotionModel
|
||||||
momCoupleModels = subModels/momCoupleModel
|
momCoupleModels = subModels/momCoupleModel
|
||||||
regionModels = subModels/regionModel
|
|
||||||
dataExchangeModels = subModels/dataExchangeModel
|
dataExchangeModels = subModels/dataExchangeModel
|
||||||
averagingModels = subModels/averagingModel
|
averagingModels = subModels/averagingModel
|
||||||
clockModels = subModels/clockModel
|
clockModels = subModels/clockModel
|
||||||
@ -21,18 +20,33 @@ $(forceModels)/forceModel/newForceModel.C
|
|||||||
$(forceModels)/noDrag/noDrag.C
|
$(forceModels)/noDrag/noDrag.C
|
||||||
$(forceModels)/checkCouplingInterval/checkCouplingInterval.C
|
$(forceModels)/checkCouplingInterval/checkCouplingInterval.C
|
||||||
$(forceModels)/DiFeliceDrag/DiFeliceDrag.C
|
$(forceModels)/DiFeliceDrag/DiFeliceDrag.C
|
||||||
|
$(forceModels)/DiFeliceDragNLift/DiFeliceDragNLift.C
|
||||||
$(forceModels)/GidaspowDrag/GidaspowDrag.C
|
$(forceModels)/GidaspowDrag/GidaspowDrag.C
|
||||||
$(forceModels)/SchillerNaumannDrag/SchillerNaumannDrag.C
|
$(forceModels)/SchillerNaumannDrag/SchillerNaumannDrag.C
|
||||||
$(forceModels)/Archimedes/Archimedes.C
|
$(forceModels)/Archimedes/Archimedes.C
|
||||||
$(forceModels)/ArchimedesIB/ArchimedesIB.C
|
$(forceModels)/ArchimedesIB/ArchimedesIB.C
|
||||||
$(forceModels)/interface/interface.C
|
$(forceModels)/interface/interface.C
|
||||||
$(forceModels)/ShirgaonkarIB/ShirgaonkarIB.C
|
$(forceModels)/ShirgaonkarIB/ShirgaonkarIB.C
|
||||||
|
$(forceModels)/fieldTimeAverage/fieldTimeAverage.C
|
||||||
|
$(forceModels)/fieldBound/fieldBound.C
|
||||||
|
$(forceModels)/volWeightedAverage/volWeightedAverage.C
|
||||||
|
$(forceModels)/totalMomentumExchange/totalMomentumExchange.C
|
||||||
$(forceModels)/KochHillDrag/KochHillDrag.C
|
$(forceModels)/KochHillDrag/KochHillDrag.C
|
||||||
|
$(forceModels)/BeetstraDrag/multiphaseFlowBasic/multiphaseFlowBasic.C
|
||||||
|
$(forceModels)/BeetstraDrag/BeetstraDrag.C
|
||||||
|
$(forceModels)/LaEuScalarLiquid/LaEuScalarLiquid.C
|
||||||
$(forceModels)/LaEuScalarTemp/LaEuScalarTemp.C
|
$(forceModels)/LaEuScalarTemp/LaEuScalarTemp.C
|
||||||
|
$(forceModels)/LaEuScalarDust/LaEuScalarDust.C
|
||||||
$(forceModels)/virtualMassForce/virtualMassForce.C
|
$(forceModels)/virtualMassForce/virtualMassForce.C
|
||||||
$(forceModels)/gradPForce/gradPForce.C
|
$(forceModels)/gradPForce/gradPForce.C
|
||||||
|
$(forceModels)/gradULiftForce/gradULiftForce.C
|
||||||
$(forceModels)/viscForce/viscForce.C
|
$(forceModels)/viscForce/viscForce.C
|
||||||
$(forceModels)/MeiLift/MeiLift.C
|
$(forceModels)/MeiLift/MeiLift.C
|
||||||
|
$(forceModels)/KochHillDragNLift/KochHillDragNLift.C
|
||||||
|
$(forceModels)/solidsPressureForce/solidsPressureForce.C
|
||||||
|
$(forceModels)/periodicPressure/periodicPressure.C
|
||||||
|
$(forceModels)/periodicPressureControl/periodicPressureControl.C
|
||||||
|
$(forceModels)/averageSlipVel/averageSlipVel.C
|
||||||
|
|
||||||
$(forceModelsMS)/forceModelMS/forceModelMS.C
|
$(forceModelsMS)/forceModelMS/forceModelMS.C
|
||||||
$(forceModelsMS)/forceModelMS/newForceModelMS.C
|
$(forceModelsMS)/forceModelMS/newForceModelMS.C
|
||||||
@ -43,6 +57,7 @@ $(IOModels)/IOModel/newIOModel.C
|
|||||||
$(IOModels)/noIO/noIO.C
|
$(IOModels)/noIO/noIO.C
|
||||||
$(IOModels)/basicIO/basicIO.C
|
$(IOModels)/basicIO/basicIO.C
|
||||||
$(IOModels)/trackIO/trackIO.C
|
$(IOModels)/trackIO/trackIO.C
|
||||||
|
$(IOModels)/sophIO/sophIO.C
|
||||||
|
|
||||||
$(voidFractionModels)/voidFractionModel/voidFractionModel.C
|
$(voidFractionModels)/voidFractionModel/voidFractionModel.C
|
||||||
$(voidFractionModels)/voidFractionModel/newVoidFractionModel.C
|
$(voidFractionModels)/voidFractionModel/newVoidFractionModel.C
|
||||||
@ -61,21 +76,18 @@ $(locateModels)/turboEngineSearch/turboEngineSearch.C
|
|||||||
$(locateModels)/turboEngineSearchM2M/turboEngineSearchM2M.C
|
$(locateModels)/turboEngineSearchM2M/turboEngineSearchM2M.C
|
||||||
$(locateModels)/engineSearchIB/engineSearchIB.C
|
$(locateModels)/engineSearchIB/engineSearchIB.C
|
||||||
|
|
||||||
|
|
||||||
$(meshMotionModels)/meshMotionModel/meshMotionModel.C
|
$(meshMotionModels)/meshMotionModel/meshMotionModel.C
|
||||||
$(meshMotionModels)/meshMotionModel/newMeshMotionModel.C
|
$(meshMotionModels)/meshMotionModel/newMeshMotionModel.C
|
||||||
$(meshMotionModels)/noMeshMotion/noMeshMotion.C
|
$(meshMotionModels)/noMeshMotion/noMeshMotion.C
|
||||||
|
$(meshMotionModels)/DEMdrivenMeshMotion/DEMdrivenMeshMotion.C
|
||||||
|
|
||||||
$(momCoupleModels)/momCoupleModel/momCoupleModel.C
|
$(momCoupleModels)/momCoupleModel/momCoupleModel.C
|
||||||
$(momCoupleModels)/momCoupleModel/newMomCoupleModel.C
|
$(momCoupleModels)/momCoupleModel/newMomCoupleModel.C
|
||||||
$(momCoupleModels)/explicitCouple/explicitCouple.C
|
$(momCoupleModels)/explicitCouple/explicitCouple.C
|
||||||
|
$(momCoupleModels)/explicitCoupleSource/explicitCoupleSource.C
|
||||||
$(momCoupleModels)/implicitCouple/implicitCouple.C
|
$(momCoupleModels)/implicitCouple/implicitCouple.C
|
||||||
$(momCoupleModels)/noCouple/noCouple.C
|
$(momCoupleModels)/noCouple/noCouple.C
|
||||||
|
|
||||||
$(regionModels)/regionModel/regionModel.C
|
|
||||||
$(regionModels)/regionModel/newRegionModel.C
|
|
||||||
$(regionModels)/allRegion/allRegion.C
|
|
||||||
|
|
||||||
$(dataExchangeModels)/dataExchangeModel/dataExchangeModel.C
|
$(dataExchangeModels)/dataExchangeModel/dataExchangeModel.C
|
||||||
$(dataExchangeModels)/dataExchangeModel/newDataExchangeModel.C
|
$(dataExchangeModels)/dataExchangeModel/newDataExchangeModel.C
|
||||||
$(dataExchangeModels)/oneWayVTK/oneWayVTK.C
|
$(dataExchangeModels)/oneWayVTK/oneWayVTK.C
|
||||||
@ -101,4 +113,4 @@ $(liggghtsCommandModels)/runLiggghts/runLiggghts.C
|
|||||||
$(liggghtsCommandModels)/writeLiggghts/writeLiggghts.C
|
$(liggghtsCommandModels)/writeLiggghts/writeLiggghts.C
|
||||||
$(liggghtsCommandModels)/readLiggghtsData/readLiggghtsData.C
|
$(liggghtsCommandModels)/readLiggghtsData/readLiggghtsData.C
|
||||||
|
|
||||||
LIB = $(FOAM_USER_LIBBIN)/lib$(CFDEM_LIB_NAME)
|
LIB = $(CFDEM_LIB_DIR)/lib$(CFDEM_LIB_NAME)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
word CFDEMversion="cfdem-2.5.0";
|
word CFDEMversion="cfdem-2.5.1";
|
||||||
word compatibleLIGGGHTSversion="2.2.5";
|
word compatibleLIGGGHTSversion="2.2.4";
|
||||||
|
|
||||||
Info << "\nCFDEMcoupling version: " << CFDEMversion << "\n" << endl;
|
Info << "\nCFDEMcoupling version: " << CFDEMversion << "\n" << endl;
|
||||||
Info << "\n, compatible to LIGGGHTS version: " << compatibleLIGGGHTSversion << "\n" << endl;
|
Info << "\n, compatible to LIGGGHTS version: " << compatibleLIGGGHTSversion << "\n" << endl;
|
||||||
|
|||||||
@ -32,5 +32,5 @@ do
|
|||||||
compileSolver $logpath $logfileName $casePath $headerText
|
compileSolver $logpath $logfileName $casePath $headerText
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Note: the list of solvers compiled might be incomplete."
|
#echo "Note: the list of solvers compiled might be incomplete."
|
||||||
echo "please check $CFDEM_SOLVER_DIR for more solvers available"
|
#echo "please check $CFDEM_SOLVER_DIR for more solvers available"
|
||||||
|
|||||||
@ -64,11 +64,18 @@ basicIO::basicIO
|
|||||||
//propsDict_(dict.subDict(typeName + "Props")),
|
//propsDict_(dict.subDict(typeName + "Props")),
|
||||||
dirName_("lagrangian"),
|
dirName_("lagrangian"),
|
||||||
path_("dev/null"),
|
path_("dev/null"),
|
||||||
m2mComm_(false),
|
parOutput_(true),
|
||||||
|
nPProc_(-1),
|
||||||
lagPath_("dev/null")
|
lagPath_("dev/null")
|
||||||
{
|
{
|
||||||
if (particleCloud_.dataExchangeM().myType()=="twoWayM2M"){m2mComm_=true;} //typeName did not work
|
if (
|
||||||
Info << "particleCloud_.dataExchangeM().typeName=" << particleCloud_.dataExchangeM().myType() << endl;
|
particleCloud_.dataExchangeM().myType()=="oneWayVTK" ||
|
||||||
|
dict_.found("serialOutput")
|
||||||
|
)
|
||||||
|
{
|
||||||
|
parOutput_=false;
|
||||||
|
Warning << "IO model is in serial write mode, only data on proc 0 is written" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
//if (propsDict_.found("dirName")) dirName_=word(propsDict_.lookup("dirName"));
|
//if (propsDict_.found("dirName")) dirName_=word(propsDict_.lookup("dirName"));
|
||||||
path_ = buildFilePath(dirName_);
|
path_ = buildFilePath(dirName_);
|
||||||
@ -90,17 +97,24 @@ void basicIO::dumpDEMdata() const
|
|||||||
if (time_.outputTime())
|
if (time_.outputTime())
|
||||||
{
|
{
|
||||||
// make time directory
|
// make time directory
|
||||||
if (m2mComm_) lagPath_=buildFilePath(dirName_);
|
if (parOutput_) lagPath_=buildFilePath(dirName_);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Info << "createTimeDir(path_), path="<<path_ << endl;
|
||||||
|
Info << "lagPath_=createTimeDir(fileName(lagPath_/lagrangian)), lagPath="<<path_ << endl;
|
||||||
lagPath_=createTimeDir(path_);
|
lagPath_=createTimeDir(path_);
|
||||||
lagPath_=createTimeDir(fileName(lagPath_/"lagrangian"));
|
lagPath_=createTimeDir(fileName(lagPath_/"lagrangian"));
|
||||||
}
|
}
|
||||||
|
// calc the number of particles on proc
|
||||||
|
int count(0);
|
||||||
|
for(int index = 0;index < particleCloud_.numberOfParticles(); ++index)
|
||||||
|
if (particleCloud_.cellIDs()[index][0] > -1) count++;
|
||||||
|
nPProc_=count;
|
||||||
|
|
||||||
// stream data to file
|
// stream data to file
|
||||||
streamDataToPath(lagPath_, particleCloud_.positions(), particleCloud_.numberOfParticles(), "positions","vector","Cloud<passiveParticle>","0");
|
streamDataToPath(lagPath_, particleCloud_.positions(), "positions","vector","Cloud<passiveParticle>","0");
|
||||||
streamDataToPath(lagPath_, particleCloud_.velocities(), particleCloud_.numberOfParticles(), "v","vector","vectorField","");
|
streamDataToPath(lagPath_, particleCloud_.velocities(), "v","vector","vectorField","");
|
||||||
streamDataToPath(lagPath_, particleCloud_.radii(), particleCloud_.numberOfParticles(), "r","scalar","scalarField","");
|
streamDataToPath(lagPath_, particleCloud_.radii(), "r","scalar","scalarField","");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
@ -110,7 +124,7 @@ fileName basicIO::buildFilePath(word dirName) const
|
|||||||
{
|
{
|
||||||
// create file structure
|
// create file structure
|
||||||
fileName path("");
|
fileName path("");
|
||||||
if(m2mComm_)
|
if(parOutput_)
|
||||||
{
|
{
|
||||||
path=fileName(particleCloud_.mesh().time().path()/particleCloud_.mesh().time().timeName()/dirName/"particleCloud");
|
path=fileName(particleCloud_.mesh().time().path()/particleCloud_.mesh().time().timeName()/dirName/"particleCloud");
|
||||||
mkDir(path,0777);
|
mkDir(path,0777);
|
||||||
@ -125,16 +139,18 @@ fileName basicIO::buildFilePath(word dirName) const
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
void basicIO::streamDataToPath(fileName path, double** array,int n,word name,word type,word className,word finaliser) const
|
void basicIO::streamDataToPath(fileName path, double** array,word name,word type,word className,word finaliser) const
|
||||||
{
|
{
|
||||||
vector vec;
|
vector vec;
|
||||||
OFstream* fileStream = new OFstream(fileName(path/name));
|
OFstream* fileStream = new OFstream(fileName(path/name));
|
||||||
*fileStream << "FoamFile\n";
|
*fileStream << "FoamFile\n";
|
||||||
*fileStream << "{version 2.0; format ascii;class "<< className << "; location 0;object "<< name <<";}\n";
|
*fileStream << "{version 2.0; format ascii;class "<< className << "; location 0;object "<< name <<";}\n";
|
||||||
*fileStream << n <<"\n";
|
*fileStream << nPProc_ <<"\n";
|
||||||
*fileStream << "(\n";
|
*fileStream << "(\n";
|
||||||
|
|
||||||
for(int index = 0;index < n; ++index)
|
for(int index = 0;index < particleCloud_.numberOfParticles(); ++index)
|
||||||
|
{
|
||||||
|
if (particleCloud_.cellIDs()[index][0] > -1) // particle Found
|
||||||
{
|
{
|
||||||
if (type=="scalar"){
|
if (type=="scalar"){
|
||||||
*fileStream << array[index][0] << " \n";
|
*fileStream << array[index][0] << " \n";
|
||||||
@ -143,6 +159,7 @@ void basicIO::streamDataToPath(fileName path, double** array,int n,word name,wor
|
|||||||
*fileStream <<"( "<< vec[0] <<" "<<vec[1]<<" "<<vec[2]<<" ) "<< finaliser << " \n";
|
*fileStream <<"( "<< vec[0] <<" "<<vec[1]<<" "<<vec[2]<<" ) "<< finaliser << " \n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
*fileStream << ")\n";
|
*fileStream << ")\n";
|
||||||
delete fileStream;
|
delete fileStream;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -64,7 +64,9 @@ private:
|
|||||||
|
|
||||||
fileName path_;
|
fileName path_;
|
||||||
|
|
||||||
bool m2mComm_;
|
bool parOutput_;
|
||||||
|
|
||||||
|
mutable int nPProc_;
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
fileName buildFilePath(word) const;
|
fileName buildFilePath(word) const;
|
||||||
@ -72,7 +74,7 @@ private:
|
|||||||
protected:
|
protected:
|
||||||
mutable fileName lagPath_;
|
mutable fileName lagPath_;
|
||||||
|
|
||||||
void streamDataToPath(fileName,double**,int,word,word type,word className,word finaliser) const;
|
void streamDataToPath(fileName,double**,word,word type,word className,word finaliser) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@ -38,7 +38,7 @@ meshMotionModel noMeshMotion;
|
|||||||
|
|
||||||
regionModel allRegion;
|
regionModel allRegion;
|
||||||
|
|
||||||
IOModel off;
|
IOModel basicIO;
|
||||||
|
|
||||||
dataExchangeModel oneWayVTK;
|
dataExchangeModel oneWayVTK;
|
||||||
|
|
||||||
|
|||||||
1
tutorials/cfdemPostproc/fillCylinder/DEM/post/dummy
Normal file
1
tutorials/cfdemPostproc/fillCylinder/DEM/post/dummy
Normal file
@ -0,0 +1 @@
|
|||||||
|
dummyfile
|
||||||
@ -5,6 +5,7 @@ clc;
|
|||||||
%====================================%
|
%====================================%
|
||||||
% simulation data 1
|
% simulation data 1
|
||||||
%====================================%
|
%====================================%
|
||||||
|
rhoG = 10 % density in kg/m3
|
||||||
%path = '../probes/0/p';
|
%path = '../probes/0/p';
|
||||||
path = '../probes/0/p';
|
path = '../probes/0/p';
|
||||||
columns=22;
|
columns=22;
|
||||||
@ -12,7 +13,7 @@ headerlines=4;
|
|||||||
data = loaddata(path,columns,headerlines);
|
data = loaddata(path,columns,headerlines);
|
||||||
data=transpose(data);
|
data=transpose(data);
|
||||||
[x,y]=size(data)
|
[x,y]=size(data)
|
||||||
dp_sim = (data(:,2)-data(:,y))/10000;
|
dp_sim = (data(:,2)-data(:,y))*rhoG; %conversion to Pa!
|
||||||
t_sim = data(:,1);
|
t_sim = data(:,1);
|
||||||
%fprintf('final pressureDrop of sim = %f Pa\n',dp_sim(length(dp_sim)) )
|
%fprintf('final pressureDrop of sim = %f Pa\n',dp_sim(length(dp_sim)) )
|
||||||
|
|
||||||
@ -36,14 +37,13 @@ deltaU=(Uend-Ustart)/((Tend-Tstart)/timeStepSize);
|
|||||||
U = Ustart+deltaU:deltaU:Uend; % velocity over time
|
U = Ustart+deltaU:deltaU:Uend; % velocity over time
|
||||||
Ua = U / epsilon; % physical velocity
|
Ua = U / epsilon; % physical velocity
|
||||||
L = 0.0156 % length of bed
|
L = 0.0156 % length of bed
|
||||||
rhoG = 10 % density in kg/m3
|
|
||||||
nuG = 1.5*10^-4 % kinemat Visk in m2/s
|
nuG = 1.5*10^-4 % kinemat Visk in m2/s
|
||||||
muG = nuG*rhoG % dynam visc in Pa s
|
muG = nuG*rhoG % dynam visc in Pa s
|
||||||
|
|
||||||
dpErgun= L * (
|
dpErgun= L * (
|
||||||
150*((1-epsilon)^2/epsilon^3)*((muG.*U)/(phip*dp)^2)
|
150*((1-epsilon)^2/epsilon^3)*((muG.*U)/(phip*dp)^2)
|
||||||
+1.75*((1-epsilon)/epsilon^3)*((rhoG.*U.^2)/(phip*dp))
|
+1.75*((1-epsilon)/epsilon^3)*((rhoG.*U.^2)/(phip*dp))
|
||||||
)/10000/rhoG;
|
);
|
||||||
|
|
||||||
fprintf('NOTE: this pressure is divided by density (according to CFD solver)\n')
|
fprintf('NOTE: this pressure is divided by density (according to CFD solver)\n')
|
||||||
fprintf('so the result does not depend on density\n')
|
fprintf('so the result does not depend on density\n')
|
||||||
@ -71,20 +71,18 @@ end
|
|||||||
dpUmf= L * (
|
dpUmf= L * (
|
||||||
150*((1-epsilon)^2/epsilon^3)*((muG.*Umf)/(phip*dp)^2)
|
150*((1-epsilon)^2/epsilon^3)*((muG.*Umf)/(phip*dp)^2)
|
||||||
+1.75*((1-epsilon)/epsilon^3)*((rhoG.*Umf.^2)/(phip*dp))
|
+1.75*((1-epsilon)/epsilon^3)*((rhoG.*Umf.^2)/(phip*dp))
|
||||||
)/10000/rhoG;
|
);
|
||||||
%dpUmf2=(L*(1-epsilon)*(rhoP-rhoG)*g+pHydr)/10000
|
%dpUmf2=(L*(1-epsilon)*(rhoP-rhoG)*g+pHydr)
|
||||||
%====================================%
|
%====================================%
|
||||||
% plot data
|
% plot data
|
||||||
%====================================%
|
%====================================%
|
||||||
length(U)
|
|
||||||
length(dp_sim)
|
|
||||||
figure(2)
|
figure(2)
|
||||||
plot(U,dp_sim)
|
plot(U,dp_sim)
|
||||||
title("Ergun pressure drop vs. simulation")
|
title("Ergun pressure drop vs. simulation")
|
||||||
a=strcat("analytical (Ergun), Umf=",num2str(Umf),", dpUmf=",num2str(dpUmf));
|
a=strcat("analytical (Ergun), Umf=",num2str(Umf),", dpUmf=",num2str(dpUmf));
|
||||||
legend(a,"simulation")
|
legend(a,"simulation")
|
||||||
xlabel("velocity in [m/s]")
|
xlabel("velocity in [m/s]")
|
||||||
ylabel("pressure drop [bar]")
|
ylabel("pressure drop [Pa]")
|
||||||
axis([0,Uend,0,dpErgun(length(dpErgun))])
|
axis([0,Uend,0,dpErgun(length(dpErgun))])
|
||||||
|
|
||||||
figure(1)
|
figure(1)
|
||||||
@ -93,7 +91,7 @@ title("Ergun pressure drop vs. simulation")
|
|||||||
a=strcat("analytical (Ergun), Umf=",num2str(Umf),", dpUmf=",num2str(dpUmf));
|
a=strcat("analytical (Ergun), Umf=",num2str(Umf),", dpUmf=",num2str(dpUmf));
|
||||||
legend(a,"simulation","analyt. deltaP at Umf")
|
legend(a,"simulation","analyt. deltaP at Umf")
|
||||||
xlabel("velocity in [m/s]")
|
xlabel("velocity in [m/s]")
|
||||||
ylabel("pressure drop [bar]")
|
ylabel("pressure drop [Pa]")
|
||||||
axis([0,Uend,0,dpErgun(length(dpErgun))])
|
axis([0,Uend,0,dpErgun(length(dpErgun))])
|
||||||
|
|
||||||
%print('cfdemSolverPiso_settlingTest.eps','-deps2')
|
%print('cfdemSolverPiso_settlingTest.eps','-deps2')
|
||||||
|
|||||||
@ -5,6 +5,7 @@ clc;
|
|||||||
%====================================%
|
%====================================%
|
||||||
% simulation data 1
|
% simulation data 1
|
||||||
%====================================%
|
%====================================%
|
||||||
|
rhoG = 10 % density in kg/m3
|
||||||
%path = '../probes/0/p';
|
%path = '../probes/0/p';
|
||||||
path = '../probes/0/p';
|
path = '../probes/0/p';
|
||||||
columns=22;
|
columns=22;
|
||||||
@ -12,7 +13,7 @@ headerlines=4;
|
|||||||
data = loaddata(path,columns,headerlines);
|
data = loaddata(path,columns,headerlines);
|
||||||
data=transpose(data);
|
data=transpose(data);
|
||||||
[x,y]=size(data)
|
[x,y]=size(data)
|
||||||
dp_sim = (data(:,2)-data(:,y))/10000;
|
dp_sim = (data(:,2)-data(:,y))*rhoG; % conversion to Pa
|
||||||
t_sim = data(:,1);
|
t_sim = data(:,1);
|
||||||
%fprintf('final pressureDrop of sim = %f Pa\n',dp_sim(length(dp_sim)) )
|
%fprintf('final pressureDrop of sim = %f Pa\n',dp_sim(length(dp_sim)) )
|
||||||
|
|
||||||
@ -26,7 +27,7 @@ headerlines=4;
|
|||||||
data = loaddata(path,columns,headerlines);
|
data = loaddata(path,columns,headerlines);
|
||||||
data=transpose(data);
|
data=transpose(data);
|
||||||
[x,y]=size(data)
|
[x,y]=size(data)
|
||||||
dp_sim_2 = (data(:,2)-data(:,y))/10000;
|
dp_sim_2 = (data(:,2)-data(:,y))*rhoG; % conversion to Pa
|
||||||
t_sim_2 = data(:,1);
|
t_sim_2 = data(:,1);
|
||||||
%fprintf('final pressureDrop of sim = %f Pa\n',dp_sim(length(dp_sim)) )
|
%fprintf('final pressureDrop of sim = %f Pa\n',dp_sim(length(dp_sim)) )
|
||||||
|
|
||||||
@ -52,14 +53,13 @@ deltaU=(Uend-Ustart)/((Tend-Tstart)/timeStepSize);
|
|||||||
U = Ustart+deltaU:deltaU:Uend; % velocity over time
|
U = Ustart+deltaU:deltaU:Uend; % velocity over time
|
||||||
Ua = U / epsilon; % physical velocity
|
Ua = U / epsilon; % physical velocity
|
||||||
L = 0.0156 % length of bed
|
L = 0.0156 % length of bed
|
||||||
rhoG = 10 % density in kg/m3
|
|
||||||
nuG = 1.5*10^-4 % kinemat Visk in m2/s
|
nuG = 1.5*10^-4 % kinemat Visk in m2/s
|
||||||
muG = nuG*rhoG % dynam visc in Pa s
|
muG = nuG*rhoG % dynam visc in Pa s
|
||||||
|
|
||||||
dpErgun= L * (
|
dpErgun= L * (
|
||||||
150*((1-epsilon)^2/epsilon^3)*((muG.*U)/(phip*dp)^2)
|
150*((1-epsilon)^2/epsilon^3)*((muG.*U)/(phip*dp)^2)
|
||||||
+1.75*((1-epsilon)/epsilon^3)*((rhoG.*U.^2)/(phip*dp))
|
+1.75*((1-epsilon)/epsilon^3)*((rhoG.*U.^2)/(phip*dp))
|
||||||
)/10000/rhoG;
|
);
|
||||||
|
|
||||||
fprintf('NOTE: this pressure is divided by density (according to CFD solver)\n')
|
fprintf('NOTE: this pressure is divided by density (according to CFD solver)\n')
|
||||||
fprintf('so the result does not depend on density\n')
|
fprintf('so the result does not depend on density\n')
|
||||||
@ -86,7 +86,7 @@ end
|
|||||||
dpUmf= L * (
|
dpUmf= L * (
|
||||||
150*((1-epsilon)^2/epsilon^3)*((muG.*Umf)/(phip*dp)^2)
|
150*((1-epsilon)^2/epsilon^3)*((muG.*Umf)/(phip*dp)^2)
|
||||||
+1.75*((1-epsilon)/epsilon^3)*((rhoG.*Umf.^2)/(phip*dp))
|
+1.75*((1-epsilon)/epsilon^3)*((rhoG.*Umf.^2)/(phip*dp))
|
||||||
)/10000/rhoG;
|
);
|
||||||
|
|
||||||
%====================================%
|
%====================================%
|
||||||
% plot data
|
% plot data
|
||||||
@ -98,7 +98,7 @@ dpUmf= L * (
|
|||||||
%a=strcat("analytical (Ergun), Umf=",num2str(Umf),", dpUmf=",num2str(dpUmf));
|
%a=strcat("analytical (Ergun), Umf=",num2str(Umf),", dpUmf=",num2str(dpUmf));
|
||||||
%legend(a,"simulation")
|
%legend(a,"simulation")
|
||||||
%xlabel("velocity in [m/s]")
|
%xlabel("velocity in [m/s]")
|
||||||
%ylabel("pressure drop [bar]")
|
%ylabel("pressure drop [Pa]")
|
||||||
%axis([0,Uend,0,dpErgun(length(dpErgun))])
|
%axis([0,Uend,0,dpErgun(length(dpErgun))])
|
||||||
|
|
||||||
figure(1)
|
figure(1)
|
||||||
@ -107,7 +107,7 @@ title("Ergun pressure drop vs. simulation")
|
|||||||
a=strcat("analytical (Ergun), Umf=",num2str(Umf),", dpUmf=",num2str(dpUmf));
|
a=strcat("analytical (Ergun), Umf=",num2str(Umf),", dpUmf=",num2str(dpUmf));
|
||||||
legend(a,"simulation")
|
legend(a,"simulation")
|
||||||
xlabel("velocity in [m/s]")
|
xlabel("velocity in [m/s]")
|
||||||
ylabel("pressure drop [bar]")
|
ylabel("pressure drop [Pa]")
|
||||||
axis([0,Uend,0,dpErgun(length(dpErgun))])
|
axis([0,Uend,0,dpErgun(length(dpErgun))])
|
||||||
|
|
||||||
%print('cfdemSolverPiso_settlingTest.eps','-deps2')
|
%print('cfdemSolverPiso_settlingTest.eps','-deps2')
|
||||||
|
|||||||
@ -19,11 +19,11 @@ application pisoFoam;
|
|||||||
|
|
||||||
startFrom startTime;
|
startFrom startTime;
|
||||||
|
|
||||||
startTime 0;
|
startTime 0.05;
|
||||||
|
|
||||||
stopAt endTime;
|
stopAt endTime;
|
||||||
|
|
||||||
endTime 0.05;//0.01;
|
endTime 0.1;//0.01;
|
||||||
|
|
||||||
deltaT 0.001;
|
deltaT 0.001;
|
||||||
|
|
||||||
|
|||||||
@ -35,3 +35,5 @@ dummyfile
|
|||||||
dummyfile
|
dummyfile
|
||||||
dummyfile
|
dummyfile
|
||||||
dummyfile
|
dummyfile
|
||||||
|
dummyfile
|
||||||
|
dummyfile
|
||||||
|
|||||||
Reference in New Issue
Block a user