Copied tutorial from outdated feature/cfdemSolverMultiphase branch and started restructuring

This commit is contained in:
mathiasvangoe
2018-03-01 14:58:14 +01:00
parent 9c95cfe2e1
commit 86b31017e7
108 changed files with 80278 additions and 0 deletions

View File

@ -0,0 +1,25 @@
#!/bin/bash
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
#- clean up case
echo "deleting data at: $casePath :\n"
source $WM_PROJECT_DIR/bin/tools/CleanFunctions
cd $casePath/CFD
cleanCase
rm -r $casePath/CFD/clockData
rm $casePath/DEM/post/*.*
touch $casePath/DEM/post/.gitignore
rm $casePath/log*
rm $casePath/DEM/log*
rm -r $casePath/CFD/0
echo "Remove restart files?"
echo "Enter: yes, Ctrl + C: no"
read
rm $casePath/DEM/post/restart/*.*
rm -r $casePath/DEM/post/restart/5/

View File

@ -0,0 +1,38 @@
#!/bin/bash
#===================================================================#
# allrun script for cfdemSolverMultiphase
#===================================================================#
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
nrProcs=4;
# check if mesh was built
if [ -f "$casePath/CFD/constant/polyMesh/points" ]; then
echo "mesh was built before - using old mesh"
else
echo "mesh needs to be built"
cd $casePath/CFD
./mesh.sh
fi
# check if initialization was done
if [ -f "$casePath/DEM/post/restart/liggghts.restartCFDEM_5.000000" ]; then
echo "Initialization was run before - using existing restart file"
else
cd $casePath
bash init.sh
fi
# run the drainage simulation
cd $casePath/CFD
cp system/controlDict.run system/controlDict
cp constant/couplingProperties.run constant couplingProperties
cp -r $casePath/DEM/post/restart/5/ .
decomposePar -force
mpirun -np $nrProcs cfdemSolverMultiphase -parallel |& tee $casePath/log_run
# generate files for post processing
cd $casePath
./postRun.sh

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object Ksl;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -3 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
atmosphere
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
outlet
{
type fixedValue;
value uniform (0 0 0);
}
walls
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object Us;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alpha.air;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type alphaContactAngle;
thetaProperties
(
( iron slag ) 90 0 0 0
( iron air ) 90 0 0 0
( slag air ) 90 0 0 0
);
value uniform 0;
}
atmosphere
{
type fixedValue;
value uniform 1;
}
outlet
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,40 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alpha.iron;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type fixedValue;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,40 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alpha.slag;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type fixedValue;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
outlet
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,48 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object epsilon;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -3 0 0 0 0];
internalField uniform 0.003;
boundaryField
{
walls
{
type epsilonWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0.003;
}
outlet
{
type inletOutlet;
inletValue uniform 0.003;
value uniform 0.003;
}
atmosphere
{
type fixedValue;
value uniform 0.003;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object gradPSmooth;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -2 -2 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.001;
boundaryField
{
walls
{
type kqRWallFunction;
value uniform 0.001;
}
outlet
{
type inletOutlet;
inletValue uniform 0.001;
value uniform 0.001;
}
atmosphere
{
type fixedValue;
value uniform 0.001;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object nut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type nutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
outlet
{
type calculated;
value uniform 0;
}
atmosphere
{
type calculated;
uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object pSmoothField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type fixedValue;
value uniform 0;
}
atmosphere
{
type fixedValue;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1000;
boundaryField
{
walls
{
type fixedFluxPressure;
value uniform 0;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type fixedValue;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object refField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object sSmoothField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object vSmoothField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 0 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object voidfraction;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type fixedValue;
value uniform 1;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,25 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
RASModel laminar;
turbulence off;
printCoeffs on;
// ************************************************************************* //

View File

@ -0,0 +1,318 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object couplingProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//===========================================================================//
// sub-models & settings
syncMode false;
//verbose;
useDDTvoidfraction;
modelType "A"; // A or B
couplingInterval 100;
voidFractionModel divided; //bigParticle; //trilinear; //centre; //divided;
locateModel engine;//turboEngineM2M;//
meshMotionModel noMeshMotion;
regionModel allRegion;
IOModel basicIO;
probeModel off; //particleProbe; //off;
dataExchangeModel twoWayMPI;//twoWayFiles;//twoWayM2M;//oneWayVTK;//
averagingModel dense;//dilute;//
clockModel standardClock;//off;
smoothingModel constDiffSmoothing; //off;// localPSizeDiffSmoothing;// constDiffSmoothing; //
forceModels
(
//GidaspowDrag
//BeetstraDrag
//DiFeliceDrag
//gradPForce
gradPForceSmooth
viscForce
KochHillDrag
//interface
//DEMbasedDrag
//RongDrag
//Archimedes
//volWeightedAverage
//totalMomentumExchange
//particleCellVolume
//fieldTimeAverage
//surfaceTensionForce
);
momCoupleModels
(
implicitCouple
);
turbulenceModelType "RASProperties";//"LESProperties";//
//===========================================================================//
// sub-model properties
localPSizeDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
dSmoothingLength 1.5e-3;
Csmoothing 1.0;
}
constDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
smoothingLength 6e-3;
}
implicitCoupleProps
{
velFieldName "U";
granVelFieldName "Us";
voidfractionFieldName "voidfraction";
}
ArchimedesProps
{
gravityFieldName "g";
treatForceDEM true;
}
gradPForceProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
//interpolation true;
}
viscForceProps
{
velocityFieldName "U";
//interpolation false;
verbose true;
}
volWeightedAverageProps
{
scalarFieldNames
(
voidfraction
);
vectorFieldNames
(
);
upperThreshold 0.999;
lowerThreshold 0;
verbose true;
}
totalMomentumExchangeProps
{
implicitMomExFieldName "Ksl";
explicitMomExFieldName "none";
fluidVelFieldName "U";
granVelFieldName "Us";
}
GidaspowDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
phi 1;
}
DEMbasedDragProps
{
velFieldName "U";
voidfractionFieldName "voidfraction";
}
DiFeliceDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
granVelFieldName "Us";
interpolation true;
}
KochHillDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
//interpolation true;
//forceSubModels
//(
// ImExCorr
//);
implForceDEM true;
//implForceDEMaccumulated true;
//explicitCorr true;
}
BeetstraDragProps
{
velFieldName "U";
gravityFieldName "g";
rhoParticle 2000.;
voidfractionFieldName "voidfraction";
interpolation ;
useFilteredDragModel ;
useParcelSizeDependentFilteredDrag ;
k 0.05;
aLimit 0.0;
// verbose true;
}
RongDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
implForceDEM true;
implForceDEMaccumulated true;
granVelFieldName "Us";
}
virtualMassForceProps
{
velFieldName "U";
}
particleCellVolumeProps
{
upperThreshold 0.999;
lowerThreshold 0.;
verbose true;
}
fieldStoreProps
{
scalarFieldNames
(
);
vectorFieldNames
(
"U"
);
}
oneWayVTKProps
{
couplingFilename "vtk_out%4.4d.vtk";
maxNumberOfParticles 30000;
}
twoWayFilesProps
{
maxNumberOfParticles 10100;
}
centreProps
{
alphaMin 0.1;
}
engineProps
{
treeSearch true;
}
turboEngineM2MProps
{
turboEngineProps
{
treeSearch true;
}
}
dividedProps
{
alphaMin 0.01;
// porosity 0.5;
//interpolation true;
}
twoWayMPIProps
{
liggghtsPath "../DEM/in.liggghts_equilibrate";
}
twoWayM2MProps
{
maxNumberOfParticles 10100;
liggghtsPath "../DEM/in.liggghts_equilibrate";
}
surfaceTensionForceProps
{
}
trilinearProps
{
alphaMin 0.01;
}
bigParticleProps
{
alphaMin 0.01;
maxCellsPerParticle 1000;
porosity 100.0;
}
gradPForceSmoothProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
smoothingModel "temporalSmoothing";
//smoothingModel "constDiffSmoothing";
//interpolation true;
alpha 1000.0;
temporalSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
//referenceField "p";
referenceField "p_rgh";
alpha 0.01;
}
}
}
// ************************************************************************* //

View File

@ -0,0 +1,318 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object couplingProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//===========================================================================//
// sub-models & settings
syncMode false;
//verbose;
useDDTvoidfraction;
modelType "A"; // A or B
couplingInterval 100;
voidFractionModel divided; //bigParticle; //trilinear; //centre; //divided;
locateModel engine;//turboEngineM2M;//
meshMotionModel noMeshMotion;
regionModel allRegion;
IOModel basicIO;
probeModel off; //particleProbe; //off;
dataExchangeModel twoWayMPI;//twoWayFiles;//twoWayM2M;//oneWayVTK;//
averagingModel dense;//dilute;//
clockModel standardClock;//off;
smoothingModel constDiffSmoothing; //off;// localPSizeDiffSmoothing;// constDiffSmoothing; //
forceModels
(
//GidaspowDrag
//BeetstraDrag
//DiFeliceDrag
//gradPForce
gradPForceSmooth
viscForce
KochHillDrag
//interface
//DEMbasedDrag
//RongDrag
//Archimedes
//volWeightedAverage
//totalMomentumExchange
//particleCellVolume
//fieldTimeAverage
//surfaceTensionForce
);
momCoupleModels
(
implicitCouple
);
turbulenceModelType "RASProperties";//"LESProperties";//
//===========================================================================//
// sub-model properties
localPSizeDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
dSmoothingLength 1.5e-3;
Csmoothing 1.0;
}
constDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
smoothingLength 6e-3;
}
implicitCoupleProps
{
velFieldName "U";
granVelFieldName "Us";
voidfractionFieldName "voidfraction";
}
ArchimedesProps
{
gravityFieldName "g";
treatForceDEM true;
}
gradPForceProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
//interpolation true;
}
viscForceProps
{
velocityFieldName "U";
//interpolation false;
verbose true;
}
volWeightedAverageProps
{
scalarFieldNames
(
voidfraction
);
vectorFieldNames
(
);
upperThreshold 0.999;
lowerThreshold 0;
verbose true;
}
totalMomentumExchangeProps
{
implicitMomExFieldName "Ksl";
explicitMomExFieldName "none";
fluidVelFieldName "U";
granVelFieldName "Us";
}
GidaspowDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
phi 1;
}
DEMbasedDragProps
{
velFieldName "U";
voidfractionFieldName "voidfraction";
}
DiFeliceDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
granVelFieldName "Us";
interpolation true;
}
KochHillDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
//interpolation true;
//forceSubModels
//(
// ImExCorr
//);
implForceDEM true;
//implForceDEMaccumulated true;
//explicitCorr true;
}
BeetstraDragProps
{
velFieldName "U";
gravityFieldName "g";
rhoParticle 2000.;
voidfractionFieldName "voidfraction";
interpolation ;
useFilteredDragModel ;
useParcelSizeDependentFilteredDrag ;
k 0.05;
aLimit 0.0;
// verbose true;
}
RongDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
implForceDEM true;
implForceDEMaccumulated true;
granVelFieldName "Us";
}
virtualMassForceProps
{
velFieldName "U";
}
particleCellVolumeProps
{
upperThreshold 0.999;
lowerThreshold 0.;
verbose true;
}
fieldStoreProps
{
scalarFieldNames
(
);
vectorFieldNames
(
"U"
);
}
oneWayVTKProps
{
couplingFilename "vtk_out%4.4d.vtk";
maxNumberOfParticles 30000;
}
twoWayFilesProps
{
maxNumberOfParticles 10100;
}
centreProps
{
alphaMin 0.1;
}
engineProps
{
treeSearch true;
}
turboEngineM2MProps
{
turboEngineProps
{
treeSearch true;
}
}
dividedProps
{
alphaMin 0.01;
// porosity 0.5;
//interpolation true;
}
twoWayMPIProps
{
liggghtsPath "../DEM/in.liggghts_equilibrate";
}
twoWayM2MProps
{
maxNumberOfParticles 10100;
liggghtsPath "../DEM/in.liggghts_equilibrate";
}
surfaceTensionForceProps
{
}
trilinearProps
{
alphaMin 0.01;
}
bigParticleProps
{
alphaMin 0.01;
maxCellsPerParticle 1000;
porosity 100.0;
}
gradPForceSmoothProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
smoothingModel "temporalSmoothing";
//smoothingModel "constDiffSmoothing";
//interpolation true;
alpha 1000.0;
temporalSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
//referenceField "p";
referenceField "p_rgh";
alpha 0.01;
}
}
}
// ************************************************************************* //

View File

@ -0,0 +1,318 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object couplingProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//===========================================================================//
// sub-models & settings
syncMode false;
//verbose;
useDDTvoidfraction;
modelType "A"; // A or B
couplingInterval 100;
voidFractionModel divided; //bigParticle; //trilinear; //centre; //divided;
locateModel engine;//turboEngineM2M;//
meshMotionModel noMeshMotion;
regionModel allRegion;
IOModel basicIO;
probeModel off; //particleProbe; //off;
dataExchangeModel twoWayMPI;//twoWayFiles;//twoWayM2M;//oneWayVTK;//
averagingModel dense;//dilute;//
clockModel standardClock;//off;
smoothingModel constDiffSmoothing; //off;// localPSizeDiffSmoothing;// constDiffSmoothing; //
forceModels
(
//GidaspowDrag
//BeetstraDrag
//DiFeliceDrag
//gradPForce
gradPForceSmooth
viscForce
KochHillDrag
//interface
//DEMbasedDrag
//RongDrag
//Archimedes
//volWeightedAverage
//totalMomentumExchange
//particleCellVolume
//fieldTimeAverage
//surfaceTensionForce
);
momCoupleModels
(
implicitCouple
);
turbulenceModelType "RASProperties";//"LESProperties";//
//===========================================================================//
// sub-model properties
localPSizeDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
dSmoothingLength 1.5e-3;
Csmoothing 1.0;
}
constDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
smoothingLength 6e-3;
}
implicitCoupleProps
{
velFieldName "U";
granVelFieldName "Us";
voidfractionFieldName "voidfraction";
}
ArchimedesProps
{
gravityFieldName "g";
treatForceDEM true;
}
gradPForceProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
//interpolation true;
}
viscForceProps
{
velocityFieldName "U";
//interpolation false;
verbose true;
}
volWeightedAverageProps
{
scalarFieldNames
(
voidfraction
);
vectorFieldNames
(
);
upperThreshold 0.999;
lowerThreshold 0;
verbose true;
}
totalMomentumExchangeProps
{
implicitMomExFieldName "Ksl";
explicitMomExFieldName "none";
fluidVelFieldName "U";
granVelFieldName "Us";
}
GidaspowDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
phi 1;
}
DEMbasedDragProps
{
velFieldName "U";
voidfractionFieldName "voidfraction";
}
DiFeliceDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
granVelFieldName "Us";
interpolation true;
}
KochHillDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
//interpolation true;
//forceSubModels
//(
// ImExCorr
//);
implForceDEM true;
//implForceDEMaccumulated true;
//explicitCorr true;
}
BeetstraDragProps
{
velFieldName "U";
gravityFieldName "g";
rhoParticle 2000.;
voidfractionFieldName "voidfraction";
interpolation ;
useFilteredDragModel ;
useParcelSizeDependentFilteredDrag ;
k 0.05;
aLimit 0.0;
// verbose true;
}
RongDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
implForceDEM true;
implForceDEMaccumulated true;
granVelFieldName "Us";
}
virtualMassForceProps
{
velFieldName "U";
}
particleCellVolumeProps
{
upperThreshold 0.999;
lowerThreshold 0.;
verbose true;
}
fieldStoreProps
{
scalarFieldNames
(
);
vectorFieldNames
(
"U"
);
}
oneWayVTKProps
{
couplingFilename "vtk_out%4.4d.vtk";
maxNumberOfParticles 30000;
}
twoWayFilesProps
{
maxNumberOfParticles 10100;
}
centreProps
{
alphaMin 0.1;
}
engineProps
{
treeSearch true;
}
turboEngineM2MProps
{
turboEngineProps
{
treeSearch true;
}
}
dividedProps
{
alphaMin 0.01;
// porosity 0.5;
//interpolation true;
}
twoWayMPIProps
{
liggghtsPath "../DEM/in.liggghts_run";
}
twoWayM2MProps
{
maxNumberOfParticles 10100;
liggghtsPath "../DEM/in.liggghts_run";
}
surfaceTensionForceProps
{
}
trilinearProps
{
alphaMin 0.01;
}
bigParticleProps
{
alphaMin 0.01;
maxCellsPerParticle 1000;
porosity 100.0;
}
gradPForceSmoothProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
smoothingModel "temporalSmoothing";
//smoothingModel "constDiffSmoothing";
//interpolation true;
alpha 1000.0;
temporalSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
//referenceField "p";
referenceField "p_rgh";
alpha 0.01;
}
}
}
// ************************************************************************* //

View File

@ -0,0 +1,22 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class uniformDimensionedVectorField;
location "constant";
object g;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -2 0 0 0 0];
value ( 0 0 -9.81 );
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object liggghtsCommands;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
liggghtsCommandModels
(
runLiggghts
writeLiggghts
);
// ************************************************************************* //
/*runLiggghtsProps
{
preNo false;
}*/
writeLiggghtsProps
{
writeLast on;
writeName "post/restart/liggghts.restartCFDEM";
overwrite on;
}

View File

@ -0,0 +1,148 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General m4 macros
changecom(//)changequote([,]) dnl>
define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl>
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// User-defined parameters
convertToMeters 1;
define(cylRadius, 0.1)
define(cylHeight, 0.08)
define(sqSide, 0.1)
define(outletSize, 0.02)
define(outletStartZ, 0.04)
define(outletAngularPos, 2.5) //degrees from x-axis
define(sqCells1D, 8)
define(cylCellsRadial, 3)
define(cellsZ, 6)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Derived parameters
define(sqHalf, calc(sqSide/2))
define(sq11x, calc(-sqHalf))
define(sq11y, calc(sqHalf))
define(sq1x, calc(sqHalf))
define(sq1y, calc(sqHalf))
define(sq5x, calc(sqHalf))
define(sq5y, calc(-sqHalf))
define(sq7x, calc(-sqHalf))
define(sq7y, calc(-sqHalf))
define(c11x, calc(-cylRadius*cos(pi/4)))
define(c11y, calc(cylRadius*sin(pi/4)))
define(c1x, calc(cylRadius*cos(pi/4)))
define(c1y, calc(cylRadius*sin(pi/4)))
define(c5x, calc(cylRadius*cos(pi/4)))
define(c5y, calc(-cylRadius*sin(pi/4)))
define(c7x, calc(-cylRadius*cos(pi/4)))
define(c7y, calc(-cylRadius*sin(pi/4)))
define(ipNy, calc(cylRadius))
define(ipSy, calc(-cylRadius))
define(ipWx, calc(-cylRadius))
define(ipEx, calc(cylRadius))
vertices
(
(sq11x sq11y 0) //Square 11 o'clock,bottom //0
(sq1x sq1y 0) //Square 1 o'clock,bottom //1
(sq5x sq5y 0) //Square 5 o'clock,bottom //2
(sq7x sq7y 0) //Square 7 o'clock,bottom //3
(c11x c11y 0) //Cyl 11 o'clock,bottom //4
(c1x c1y 0) //Cyl 1 o'clock,bottom //5
(c5x c5y 0) //Cyl 5 o'clock,bottom //6
(c7x c7y 0) //Cyl 7 o'clock,bottom //7
(sq11x sq11y cylHeight) //Square 11 o'clock,top //8
(sq1x sq1y cylHeight) //Square 1 o'clock,top //9
(sq5x sq5y cylHeight) //Square 5 o'clock,top //10
(sq7x sq7y cylHeight) //Square 7 o'clock,top //11
(c11x c11y cylHeight) //Cyl 11 o'clock,top //12
(c1x c1y cylHeight) //Cyl 1 o'clock,top //13
(c5x c5y cylHeight) //Cyl 5 o'clock,top //14
(c7x c7y cylHeight) //Cyl 7 o'clock,top //15
);
blocks
(
hex (3 2 1 0 11 10 9 8) (sqCells1D sqCells1D cellsZ) simpleGrading (1 1 1) //Mid-block
hex (7 3 0 4 15 11 8 12) (cylCellsRadial sqCells1D cellsZ) simpleGrading (1 1 1) //west-block
hex (0 1 5 4 8 9 13 12) (sqCells1D cylCellsRadial cellsZ) simpleGrading (1 1 1) //north-block
hex (2 6 5 1 10 14 13 9) (cylCellsRadial sqCells1D cellsZ) simpleGrading (1 1 1) //east-block
hex (7 6 2 3 15 14 10 11) (sqCells1D cylCellsRadial cellsZ) simpleGrading (1 1 1) //south-block
);
edges
(
arc 7 4 (ipWx 0 0) //west,bottom
arc 4 5 (0 ipNy 0) //north,bottom
arc 5 6 (ipEx 0 0) //east,bottom
arc 6 7 (0 ipSy 0) //south,bottom
arc 15 12 (ipWx 0 cylHeight) //west,top
arc 12 13 (0 ipNy cylHeight) //north,top
arc 13 14 (ipEx 0 cylHeight) //east,top
arc 14 15 (0 ipSy cylHeight) //south,top
);
boundary
(
atmosphere
{
type patch;
faces
(
(8 11 10 9)
(8 12 15 11)
(8 9 13 12)
(9 10 14 13)
(10 11 15 14)
);
}
walls
{
type wall;
faces
(
//Bottom
(0 1 2 3)
(0 3 7 4)
(4 5 1 0)
(2 1 5 6)
(2 6 7 3)
//West
(15 12 4 7)
//North
(12 13 5 4)
//East
(13 14 6 5)
//South
(14 15 7 6)
);
}
);
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
3
(
atmosphere
{
type patch;
nFaces 160;
startFace 2624;
}
walls
{
type wall;
inGroups 1(wall);
nFaces 351;
startFace 2784;
}
outlet
{
type patch;
nFaces 1;
startFace 3135;
}
)
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//Properties from https://www.jstage.jst.go.jp/article/tetsutohagane/100/8/100_925/_pdf
phases
(
iron
{
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1.5e-07;
rho rho [ 1 -3 0 0 0 0 0 ] 6700;
}
slag
{
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1.5e-04;
rho rho [ 1 -3 0 0 0 0 0 ] 2600;
}
air
{
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1.3e-05;
rho rho [ 1 -3 0 0 0 0 0 ] 1.5;
}
);
sigmas
(
(iron slag) 0.07 //??
(iron air) 0.07 //??
(slag air) 0.07 //??
);
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType RASModel;
// ************************************************************************* //

View File

@ -0,0 +1,7 @@
#!/bin/bash
m4 constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
m4 system/topoSetDict.m4 > system/topoSetDict
blockMesh
topoSet
createPatch -overwrite

View File

@ -0,0 +1,70 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pisoFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 5; //60
deltaT 0.005;
writeControl adjustableRunTime;
writeInterval 0.5;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep no;
maxCo 0.1;
maxAlphaCo 0.1;
libs (
);
functions
{
}
// ************************************************************************* //

View File

@ -0,0 +1,70 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pisoFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 5; //60
deltaT 0.005;
writeControl adjustableRunTime;
writeInterval 0.5;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep no;
maxCo 0.1;
maxAlphaCo 0.1;
libs (
);
functions
{
}
// ************************************************************************* //

View File

@ -0,0 +1,70 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pisoFoam;
startFrom startTime;
startTime 5;
stopAt endTime;
endTime 65;
deltaT 0.005;
writeControl adjustableRunTime;
writeInterval 0.5;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep no;
maxCo 0.1;
maxAlphaCo 0.1;
libs (
);
functions
{
}
// ************************************************************************* //

View File

@ -0,0 +1,32 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object createPatchDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
pointSync false;
patches
(
{
name outlet;
patchInfo
{
type patch;
}
constructFrom set;
set outlet;
}
);
// ************************************************************************* //

View File

@ -0,0 +1,86 @@
/*-------------------------------*- C++ -*---------------------------------*\
| ========= |
| \\ / OpenFOAM |
| \\ / |
| \\ / The Open Source CFD Toolbox |
| \\/ http://www.OpenFOAM.org |
\*-------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
note "mesh decomposition control dictionary";
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 4;
//- Keep owner and neighbour on same processor for faces in zones:
// preserveFaceZones (heater solid1 solid3);
//method scotch;
// method hierarchical;
method simple;
// method metis;
// method manual;
simpleCoeffs
{
n (2 2 1);
delta 0.001;
}
hierarchicalCoeffs
{
n (2 2 1);
delta 0.001;
order xyz;
}
metisCoeffs
{
/*
processorWeights
(
1
1
1
1
);
*/
}
scotchCoeffs
{
//processorWeights
//(
// 1
// 1
// 1
// 1
//);
//writeGraph true;
//strategy "b";
}
manualCoeffs
{
dataFile "decompositionData";
}
//// Is the case distributed
//distributed yes;
//// Per slave (so nProcs-1 entries) the directory above the case.
//roots
//(
// "/tmp"
// "/tmp"
//);
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object funkySetFieldsDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
initVariables
(
"initIronLevel=0.04;"
"initSlagLevel=0.07;"
);
expressions
(
initAir
{
variables $initVariables;
field alpha.air;
expression "1";
condition "pos().z > initSlagLevel";
keepPatches 1; //keep boundary conditions
}
initIron
{
variables $initVariables;
field alpha.iron;
expression "1";
condition "pos().z <= initIronLevel";
keepPatches 1; //keep boundary conditions
}
initSlag
{
variables $initVariables;
field alpha.slag;
expression "1";
condition "pos().z > initIronLevel && pos().z <= initSlagLevel";
keepPatches 1; //keep boundary conditions
}
);
// ************************************************** *********************** //

View File

@ -0,0 +1,67 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
grad(U) Gauss linear;
grad(gamma) Gauss linear;
}
divSchemes
{
div(rhoPhi,U) Gauss upwind;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div((muEff*dev(T(grad(U))))) Gauss linear;
div((viscousTerm*dev2(grad(U).T()))) Gauss linear;
div(((grad(U)*rho)*dev(grad(U).T()))) Gauss linear;
div(((dev(grad(U).T())*rho)*dev(grad(U).T()))) Gauss linear;
div((((((alpha.water*rho)*nu.water)|(alpha.water*rho))*rho)*dev(grad(U).T()))) Gauss linear;
div(((nu*rho)*dev(grad(U).T()))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
fluxRequired
{
default no;
pcorr;
p_rgh;
"alpha.*";
}
// ************************************************************************* //

View File

@ -0,0 +1,138 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
alpha
{
nAlphaSubCycles 1;
cAlpha 1;
}
pcorr
{
solver PCG;
preconditioner
{
preconditioner GAMG;
tolerance 1e-05;
relTol 0;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
nFinestSweeps 2;
cacheAgglomeration on;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
tolerance 1e-05;
relTol 0;
maxIter 100;
}
p_rgh
{
solver GAMG;
tolerance 1e-07;
relTol 0.05;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
nFinestSweeps 2;
cacheAgglomeration on;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
"(p_rghFinal|pSmoothFinal)"
{
solver PCG;
preconditioner
{
preconditioner GAMG;
tolerance 1e-07;
relTol 0;
nVcycles 2;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
nFinestSweeps 2;
cacheAgglomeration on;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
tolerance 1e-07;
relTol 0;
maxIter 20;
}
"(k|epsilon|R|nuTilda)"
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-9;
relTol 0;
nSweeps 1;
}
"(voidfraction|Us|Ksl|vSmoothField|sSmoothField|UsNext|voidfractionNext|pSmooth)"
{
solver PCG;
preconditioner DIC;
tolerance 1e-05;
relTol 0;
}
U
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-08;
relTol 0.1;
nSweeps 1;
}
UFinal
{
$U;
tolerance 1e-08;
relTol 0;
}
}
PIMPLE
{
nCorrectors 2;
nNonOrthogonalCorrectors 0;
}
relaxationFactors
{
fields
{
}
equations
{
"U.*" 1;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,53 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object setFieldsDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
defaultFieldValues
(
volScalarFieldValue alpha.air 1
volScalarFieldValue alpha.iron 0
volScalarFieldValue alpha.slag 0
);
regions
(
cylinderToCell
{
p1 (0 0 0); //center point, min
p2 (0 0 0.04); //center point, max
radius 0.1;
fieldValues
(
volScalarFieldValue alpha.iron 1
volScalarFieldValue alpha.air 0
);
}
cylinderToCell
{
p1 (0 0 0.04); //center point, min
p2 (0 0 0.07); //center point, max
radius 0.1;
fieldValues
(
volScalarFieldValue alpha.slag 1
volScalarFieldValue alpha.air 0
);
}
);
// ************************************************************************* //

View File

@ -0,0 +1,75 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General m4 macros
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// User-defined parameters
//degrees from x-axis
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Derived parameters
actions
(
{
name c_out;
type cellSet;
action new;
source boxToCell;
sourceInfo
{
box (0.0899048221581858 -0.0056380612634664 0.04)(0.109904822158186 0.0143619387365336 0.06);
}
}
{
name outlet;
type faceSet;
action new;
source patchToFace;
sourceInfo
{
name "wall";
}
}
{
name outlet;
type faceSet;
action subset;
source cellToFace;
sourceInfo
{
set c_out;
option all;
}
}
);
// ************************************************************************* //

View File

@ -0,0 +1,77 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General m4 macros
changecom(//)changequote([,]) dnl>
define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl>
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// User-defined parameters
define(cylRadius, 0.1)
define(cylHeight, 0.08)
define(sqSide, 0.1)
define(outletSize, 0.02)
define(outletStartZ, 0.04)
define(outletAngularPos, 2.5) //degrees from x-axis
define(sqCells1D, 8)
define(cylCellsRadial, 3)
define(cellsZ, 6)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Derived parameters
define(midPointX, calc(cylRadius*cos(outletAngularPos*pi/180)))
define(midPointY, calc(cylRadius*sin(outletAngularPos*pi/180)))
actions
(
{
name c_out;
type cellSet;
action new;
source boxToCell;
sourceInfo
{
box (calc(midPointX-0.5*outletSize) calc(midPointY-0.5*outletSize) outletStartZ)(calc(midPointX+0.5*outletSize) calc(midPointY+0.5*outletSize) calc(outletStartZ+1.0*outletSize));
}
}
{
name outlet;
type faceSet;
action new;
source patchToFace;
sourceInfo
{
name "wall";
}
}
{
name outlet;
type faceSet;
action subset;
source cellToFace;
sourceInfo
{
set c_out;
option all;
}
}
);
// ************************************************************************* //

View File

@ -0,0 +1,143 @@
###############################################
#geometry
variable cylRadius equal 0.1
variable cylHeight equal 0.08
# Radiuses of servo wall for force calculation
variable r1 equal 0.02
variable r2 equal 0.04
variable r3 equal 0.06
variable r4 equal 0.08
variable r5 equal 0.1
#particle variables
variable rho equal 1500 # particle density
# time parameters
variable dt equal 0.00005 # Time step
variable outInterval equal 0.5 # Dump interval to be consistent with controlDict
# DEM-parameters
variable yM equal 5.e6 # Young's modulus
variable pR equal 0.45 # Poisson ratio
variable rest equal 0.3 # coefficient of restitution
variable fric equal 0.5 # coefficient of friction
variable cV equal 0.1 # characteristic velocity
variable skin equal 0.001
# variables for the servo walls
#Pressure acting on the servo wall (Pa)
variable p1 equal 800
variable p2 equal 800
variable p3 equal 800
variable p4 equal 800
variable p5 equal 800
variable A1 equal PI*${r1}^2
variable A2 equal PI*(${r2}^2-${r1}^2)
variable A3 equal PI*(${r3}^2-${r2}^2)
variable A4 equal PI*(${r4}^2-${r3}^2)
variable A5 equal PI*(${r5}^2-${r4}^2)
variable ctrlForceR1 equal -${p1}*${A1} # target value of the force
variable ctrlForceR2 equal -${p2}*${A2} # target value of the force
variable ctrlForceR3 equal -${p3}*${A3} # target value of the force
variable ctrlForceR4 equal -${p4}*${A4} # target value of the force
variable ctrlForceR5 equal -${p5}*${A5} # target value of the force
variable maxVel equal 0.25*${skin}/${dt}
# controller parameter (servo wall)
variable ctrlKp equal 1e-2
variable ctrlKi equal 0.0
variable ctrlKd equal 0.0
# particle settling loop parameters
variable vthre equal 0.01
# calculated parameters
variable dumpInterval equal ${outInterval}/${dt}
###############################################
log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt
atom_style granular
atom_modify map array
communicate single vel yes
boundary f f f
newton off
units si
processors 2 2 1
# read the restart file
read_restart ../DEM/post/restart/fill.restart
neighbor ${skin} bin
neigh_modify delay 0
# Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype ${yM}
fix m2 all property/global poissonsRatio peratomtype ${pR}
fix m3 all property/global coefficientRestitution peratomtypepair 1 ${rest}
fix m4 all property/global coefficientFriction peratomtypepair 1 ${fric}
# pair style
pair_style gran model hertz tangential history # Hertzian without cohesion
pair_coeff * *
# timestep, gravity
timestep ${dt}
fix gravi all gravity 9.81 vector 0.0 0.0 -1.0
# walls
fix cylWall all wall/gran model hertz tangential history primitive type 1 zcylinder 0.1 0 0
fix botWall all wall/gran model hertz tangential history primitive type 1 zplane 0
fix servoR1 all mesh/surface/stress/servo file ../DEM/stls/r1.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR1} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR2 all mesh/surface/stress/servo file ../DEM/stls/r2.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR2} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR3 all mesh/surface/stress/servo file ../DEM/stls/r3.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR3} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR4 all mesh/surface/stress/servo file ../DEM/stls/r4.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR4} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR5 all mesh/surface/stress/servo file ../DEM/stls/r5.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR5} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix walls all wall/gran model hertz tangential history mesh n_meshes 5 meshes servoR1 servoR2 servoR3 servoR4 servoR5
# change the particles density
set group all density ${rho}
# cfd coupling
fix cfd all couple/cfd couple_every 100000000 mpi
fix cfd2 all couple/cfd/force/implicit
# apply nve integration to all particles that are inserted as single particles
fix integr all nve/sphere
# center of mass
compute centerOfMass all com
# compute total dragforce
compute dragtotal all reduce sum f_dragforce[1] f_dragforce[2] f_dragforce[3]
# screen output
compute rke all erotate/sphere
thermo_style custom step atoms ke c_rke vol c_centerOfMass[3] c_dragtotal[1] c_dragtotal[2] c_dragtotal[3]
thermo 100
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
#compute position all property/atom x y z
fix ts_check all check/timestep/gran 100 0.1 0.1
dump dmp all custom ${dumpInterval} ../DEM/post/dump*.liggghts_run id type x y z vx vy vz fx fy fz f_dragforce[1] f_dragforce[2] f_dragforce[3] radius
dump servoWall all mesh/stl ${dumpInterval} ../DEM/post/dump*.servoWall.stl servoR1 servoR2 servoR3 servoR4 servoR5
run 1

View File

@ -0,0 +1,98 @@
###############################################
#geometry
variable cylRadius equal 0.1
variable cylHeight equal 0.08
#particle variables
variable rho equal 2500 # particle density
variable radi equal 0.003 # particle radius
variable nParticles equal 17000
# time parameters
variable totTime equal 1.0 # Total runtime in seconds
variable dt equal 0.00001
variable outInterval equal 0.1 # Dump interval to be consistent with controlDict
# DEM-parameters
variable yM equal 5.e6 # Young's modulus
variable pR equal 0.45 # Poisson ratio
variable rest equal 0.3 # coefficient of restitution
variable fric equal 0.5 # coefficient of friction
variable cV equal 0.1 # characteristic velocity
variable skin equal 0.001
# calculated parameters
variable nrIterations equal ${totTime}/${dt}
variable dumpInterval equal ${outInterval}/${dt}
variable insRate equal 2*${nParticles}/${totTime}
###############################################
atom_style granular
atom_modify map array
communicate single vel yes
boundary f f f
newton off
units si
processors 2 2 1
region reg block -${cylRadius} ${cylRadius} -${cylRadius} ${cylRadius} 0 0.15 units box
create_box 1 reg
neighbor ${skin} bin
neigh_modify delay 0
# Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype ${yM}
fix m2 all property/global poissonsRatio peratomtype ${pR}
fix m3 all property/global coefficientRestitution peratomtypepair 1 ${rest}
fix m4 all property/global coefficientFriction peratomtypepair 1 ${fric}
# pair style
pair_style gran model hertz tangential history # Hertzian without cohesion
pair_coeff * *
# timestep, gravity
timestep ${dt}
fix gravi all gravity 9.81 vector 0.0 0.0 -1.0
# walls
fix cylWall all wall/gran model hertz tangential history primitive type 1 zcylinder 0.1 0 0
fix botWall all wall/gran model hertz tangential history primitive type 1 zplane 0
fix cone all mesh/surface file ../DEM/stls/cone.stl type 1
fix walls all wall/gran model hertz tangential history mesh n_meshes 1 meshes cone
# particle distributions and insertion
region bc cylinder z 0 0 ${cylRadius} 0.07 0.12 #${cylHeight}
fix pts1 all particletemplate/sphere 1 atom_type 1 density constant ${rho} radius constant ${radi}
fix pdd1 all particledistribution/discrete 1 1 pts1 1.0
fix ins all insert/rate/region seed 1001 distributiontemplate pdd1 nparticles ${nParticles} particlerate ${insRate} insert_every 1000 overlapcheck yes region bc ntry_mc 10000
# apply nve integration to all particles that are inserted as single particles
fix integr all nve/sphere
# screen output
compute rke all erotate/sphere
thermo_style custom step atoms ke c_rke vol
thermo 1000
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
compute pos all property/atom x y z
# insert the first particles so that dump is not empty
run 1
dump dmp all custom ${dumpInterval} post/dump*.liggghts_init id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius c_pos[1] c_pos[2] c_pos[3]
dump myStl1 all stl ${dumpInterval} ../DEM/post/dump.liggghts_init*.stl
run ${nrIterations} upto
region particleRm cylinder z 0 0 ${cylRadius} 0.08 0.15
delete_atoms region particleRm
write_restart post/restart/fill.restart

View File

@ -0,0 +1,142 @@
###############################################
#geometry
variable cylRadius equal 0.1
variable cylHeight equal 0.08
# Radiuses of servo wall for force calculation
variable r1 equal 0.02
variable r2 equal 0.04
variable r3 equal 0.06
variable r4 equal 0.08
variable r5 equal 0.1
#particle variables
variable rho equal 1500 # particle density
# time parameters
variable dt equal 0.00005 # Time step
variable outInterval equal 0.5 # Dump interval to be consistent with controlDict
# DEM-parameters
variable yM equal 5.e6 # Young's modulus
variable pR equal 0.45 # Poisson ratio
variable rest equal 0.3 # coefficient of restitution
variable fric equal 0.5 # coefficient of friction
variable cV equal 0.1 # characteristic velocity
variable skin equal 0.001
# variables for the servo wall
#Pressure acting on the servo wall (Pa)
variable p1 equal 800
variable p2 equal 800
variable p3 equal 800
variable p4 equal 800
variable p5 equal 800
variable A1 equal PI*${r1}^2
variable A2 equal PI*(${r2}^2-${r1}^2)
variable A3 equal PI*(${r3}^2-${r2}^2)
variable A4 equal PI*(${r4}^2-${r3}^2)
variable A5 equal PI*(${r5}^2-${r4}^2)
variable ctrlForceR1 equal -${p1}*${A1} # target value of the force
variable ctrlForceR2 equal -${p2}*${A2} # target value of the force
variable ctrlForceR3 equal -${p3}*${A3} # target value of the force
variable ctrlForceR4 equal -${p4}*${A4} # target value of the force
variable ctrlForceR5 equal -${p5}*${A5} # target value of the force
variable maxVel equal 0.25*${skin}/${dt}
# controller parameter (servo wall)
variable ctrlKp equal 1e-2
variable ctrlKi equal 0.0
variable ctrlKd equal 0.0
# particle settling loop parameters
variable vthre equal 0.01
# calculated parameters
variable dumpInterval equal ${outInterval}/${dt}
###############################################
log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt
atom_style granular
atom_modify map array
communicate single vel yes
boundary f f f
newton off
units si
processors 2 2 1
# read the restart file
read_restart ../DEM/post/restart/liggghts.restartCFDEM_5.000000
neighbor ${skin} bin
neigh_modify delay 0
# Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype ${yM}
fix m2 all property/global poissonsRatio peratomtype ${pR}
fix m3 all property/global coefficientRestitution peratomtypepair 1 ${rest}
fix m4 all property/global coefficientFriction peratomtypepair 1 ${fric}
# pair style
pair_style gran model hertz tangential history # Hertzian without cohesion
pair_coeff * *
# timestep, gravity
timestep ${dt}
fix gravi all gravity 9.81 vector 0.0 0.0 -1.0
# walls
fix cylWall all wall/gran model hertz tangential history primitive type 1 zcylinder 0.1 0 0
fix botWall all wall/gran model hertz tangential history primitive type 1 zplane 0
fix servoR1 all mesh/surface/stress/servo file ../DEM/stls/r1.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR1} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR2 all mesh/surface/stress/servo file ../DEM/stls/r2.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR2} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR3 all mesh/surface/stress/servo file ../DEM/stls/r3.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR3} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR4 all mesh/surface/stress/servo file ../DEM/stls/r4.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR4} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR5 all mesh/surface/stress/servo file ../DEM/stls/r5.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR5} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix walls all wall/gran model hertz tangential history mesh n_meshes 5 meshes servoR1 servoR2 servoR3 servoR4 servoR5
# change the particles density
set group all density ${rho}
# cfd coupling
fix cfd all couple/cfd couple_every 100000000 mpi
fix cfd2 all couple/cfd/force/implicit
# apply nve integration to all particles that are inserted as single particles
fix integr all nve/sphere
# center of mass
compute centerOfMass all com
# compute total dragforce
compute dragtotal all reduce sum f_dragforce[1] f_dragforce[2] f_dragforce[3]
# screen output
compute rke all erotate/sphere
thermo_style custom step atoms ke c_rke vol c_centerOfMass[3] c_dragtotal[1] c_dragtotal[2] c_dragtotal[3]
thermo 100
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
#compute position all property/atom x y z
fix ts_check all check/timestep/gran 100 0.1 0.1
dump dmp all custom ${dumpInterval} ../DEM/post/dump*.liggghts_run id type x y z vx vy vz fx fy fz f_dragforce[1] f_dragforce[2] f_dragforce[3] radius
dump servoWall all mesh/stl ${dumpInterval} ../DEM/post/dump*.servoWall.stl servoR1 servoR2 servoR3 servoR4 servoR5
run 1

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,31 @@
#!/bin/bash
#===================================================================#
# allrun script for cfdemSolverMultiphase
#===================================================================#
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
nrProcs=4;
#fill with the particles
cd $casePath/DEM
mpirun -np $nrProcs liggghts < in.liggghts_fill |& tee $casePath/log_init
#Run 5 seconds of coupled simulation with closed outlet to equilibrate the system
cd $casePath/CFD
cp -r 0.org 0
cp system/controlDict.init system/controlDict
cp constant/couplingProperties.init constant/couplingProperties
setFields
decomposePar -force
mpirun -np $nrProcs cfdemSolverMultiphase -parallel |& tee $casePath/log_equilibrate
reconstructPar -latestTime
mv 5 $casePath/DEM/post/restart/
#switch the outlet boundary conditions to open for the run simulation, easier done manually or by using groovyBC...
perl -0777 -i.original -pe 's/ outlet\n {\n type zeroGradient;/ outlet\n {\n type fixedValue;\n value uniform 0;/igs' $casePath/DEM/post/restart/5/p_rgh
perl -0777 -i.original -pe 's/ outlet\n {\n type fixedValue;/ outlet\n {\n type inletOutlet;\n inletValue uniform (0 0 0);/igs' $casePath/DEM/post/restart/5/U

View File

@ -0,0 +1,15 @@
#!/bin/bash
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
#- get VTK data from liggghts dump file
cd $casePath/DEM/post
python $CFDEM_LPP_DIR/lpp.py dump*.liggghts_run
#- get VTK data from CFD sim
cd $casePath/CFD
reconstructPar -zeroTime -noLagrangian
foamToVTK
#rm -r $casePath/CFD/processor*

View File

@ -0,0 +1,25 @@
#!/bin/bash
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
#- clean up case
echo "deleting data at: $casePath :\n"
source $WM_PROJECT_DIR/bin/tools/CleanFunctions
cd $casePath/CFD
cleanCase
rm -r $casePath/CFD/clockData
rm $casePath/DEM/post/*.*
touch $casePath/DEM/post/.gitignore
rm $casePath/log*
rm $casePath/DEM/log*
rm -r $casePath/CFD/0
echo "Remove restart files?"
echo "Enter: yes, Ctrl + C: no"
read
rm $casePath/DEM/post/restart/*.*
rm -r $casePath/DEM/post/restart/5/

View File

@ -0,0 +1,38 @@
#!/bin/bash
#===================================================================#
# allrun script for cfdemSolverMultiphase
#===================================================================#
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
nrProcs=4;
# check if mesh was built
if [ -f "$casePath/CFD/constant/polyMesh/points" ]; then
echo "mesh was built before - using old mesh"
else
echo "mesh needs to be built"
cd $casePath/CFD
./mesh.sh
fi
# check if initialization was done
if [ -f "$casePath/DEM/post/restart/liggghts.restartCFDEM_5.000000" ]; then
echo "Initialization was run before - using existing restart file"
else
cd $casePath
bash init.sh
fi
# run the drainage simulation
cd $casePath/CFD
cp system/controlDict.run system/controlDict
cp constant/couplingProperties.run constant couplingProperties
cp -r $casePath/DEM/post/restart/5/ .
decomposePar -force
mpirun -np $nrProcs cfdemSolverMultiphase -parallel |& tee $casePath/log_run
# generate files for post processing
cd $casePath
./postRun.sh

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object Ksl;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -3 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
atmosphere
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
outlet
{
type fixedValue;
value uniform (0 0 0);
}
walls
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object Us;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alpha.air;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type alphaContactAngle;
thetaProperties
(
( iron slag ) 90 0 0 0
( iron air ) 90 0 0 0
( slag air ) 90 0 0 0
);
value uniform 0;
}
atmosphere
{
type fixedValue;
value uniform 1;
}
outlet
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,40 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alpha.iron;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type fixedValue;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,40 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alpha.slag;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type fixedValue;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
outlet
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,48 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object epsilon;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -3 0 0 0 0];
internalField uniform 0.003;
boundaryField
{
walls
{
type epsilonWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0.003;
}
outlet
{
type inletOutlet;
inletValue uniform 0.003;
value uniform 0.003;
}
atmosphere
{
type fixedValue;
value uniform 0.003;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object gradPSmooth;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -2 -2 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.001;
boundaryField
{
walls
{
type kqRWallFunction;
value uniform 0.001;
}
outlet
{
type inletOutlet;
inletValue uniform 0.001;
value uniform 0.001;
}
atmosphere
{
type fixedValue;
value uniform 0.001;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object nut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type nutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
outlet
{
type calculated;
value uniform 0;
}
atmosphere
{
type calculated;
uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object pSmoothField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type fixedValue;
value uniform 0;
}
atmosphere
{
type fixedValue;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1000;
boundaryField
{
walls
{
type fixedFluxPressure;
value uniform 0;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type fixedValue;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object refField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object sSmoothField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object vSmoothField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 0 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object voidfraction;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1;
boundaryField
{
walls
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
atmosphere
{
type fixedValue;
value uniform 1;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,25 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
RASModel laminar;
turbulence off;
printCoeffs on;
// ************************************************************************* //

View File

@ -0,0 +1,318 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object couplingProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//===========================================================================//
// sub-models & settings
syncMode false;
//verbose;
useDDTvoidfraction;
modelType "A"; // A or B
couplingInterval 100;
voidFractionModel divided; //bigParticle; //trilinear; //centre; //divided;
locateModel engine;//turboEngineM2M;//
meshMotionModel noMeshMotion;
regionModel allRegion;
IOModel basicIO;
probeModel off; //particleProbe; //off;
dataExchangeModel twoWayMPI;//twoWayFiles;//twoWayM2M;//oneWayVTK;//
averagingModel dense;//dilute;//
clockModel standardClock;//off;
smoothingModel constDiffSmoothing; //off;// localPSizeDiffSmoothing;// constDiffSmoothing; //
forceModels
(
//GidaspowDrag
//BeetstraDrag
//DiFeliceDrag
//gradPForce
gradPForceSmooth
viscForce
KochHillDrag
//interface
//DEMbasedDrag
//RongDrag
//Archimedes
//volWeightedAverage
//totalMomentumExchange
//particleCellVolume
//fieldTimeAverage
//surfaceTensionForce
);
momCoupleModels
(
implicitCouple
);
turbulenceModelType "RASProperties";//"LESProperties";//
//===========================================================================//
// sub-model properties
localPSizeDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
dSmoothingLength 1.5e-3;
Csmoothing 1.0;
}
constDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
smoothingLength 6e-3;
}
implicitCoupleProps
{
velFieldName "U";
granVelFieldName "Us";
voidfractionFieldName "voidfraction";
}
ArchimedesProps
{
gravityFieldName "g";
treatForceDEM true;
}
gradPForceProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
//interpolation true;
}
viscForceProps
{
velocityFieldName "U";
//interpolation false;
verbose true;
}
volWeightedAverageProps
{
scalarFieldNames
(
voidfraction
);
vectorFieldNames
(
);
upperThreshold 0.999;
lowerThreshold 0;
verbose true;
}
totalMomentumExchangeProps
{
implicitMomExFieldName "Ksl";
explicitMomExFieldName "none";
fluidVelFieldName "U";
granVelFieldName "Us";
}
GidaspowDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
phi 1;
}
DEMbasedDragProps
{
velFieldName "U";
voidfractionFieldName "voidfraction";
}
DiFeliceDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
granVelFieldName "Us";
interpolation true;
}
KochHillDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
//interpolation true;
//forceSubModels
//(
// ImExCorr
//);
implForceDEM true;
//implForceDEMaccumulated true;
//explicitCorr true;
}
BeetstraDragProps
{
velFieldName "U";
gravityFieldName "g";
rhoParticle 2000.;
voidfractionFieldName "voidfraction";
interpolation ;
useFilteredDragModel ;
useParcelSizeDependentFilteredDrag ;
k 0.05;
aLimit 0.0;
// verbose true;
}
RongDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
implForceDEM true;
implForceDEMaccumulated true;
granVelFieldName "Us";
}
virtualMassForceProps
{
velFieldName "U";
}
particleCellVolumeProps
{
upperThreshold 0.999;
lowerThreshold 0.;
verbose true;
}
fieldStoreProps
{
scalarFieldNames
(
);
vectorFieldNames
(
"U"
);
}
oneWayVTKProps
{
couplingFilename "vtk_out%4.4d.vtk";
maxNumberOfParticles 30000;
}
twoWayFilesProps
{
maxNumberOfParticles 10100;
}
centreProps
{
alphaMin 0.1;
}
engineProps
{
treeSearch true;
}
turboEngineM2MProps
{
turboEngineProps
{
treeSearch true;
}
}
dividedProps
{
alphaMin 0.01;
// porosity 0.5;
//interpolation true;
}
twoWayMPIProps
{
liggghtsPath "../DEM/in.liggghts_equilibrate";
}
twoWayM2MProps
{
maxNumberOfParticles 10100;
liggghtsPath "../DEM/in.liggghts_equilibrate";
}
surfaceTensionForceProps
{
}
trilinearProps
{
alphaMin 0.01;
}
bigParticleProps
{
alphaMin 0.01;
maxCellsPerParticle 1000;
porosity 100.0;
}
gradPForceSmoothProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
smoothingModel "temporalSmoothing";
//smoothingModel "constDiffSmoothing";
//interpolation true;
alpha 1000.0;
temporalSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
//referenceField "p";
referenceField "p_rgh";
alpha 0.01;
}
}
}
// ************************************************************************* //

View File

@ -0,0 +1,318 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object couplingProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//===========================================================================//
// sub-models & settings
syncMode false;
//verbose;
useDDTvoidfraction;
modelType "A"; // A or B
couplingInterval 100;
voidFractionModel divided; //bigParticle; //trilinear; //centre; //divided;
locateModel engine;//turboEngineM2M;//
meshMotionModel noMeshMotion;
regionModel allRegion;
IOModel basicIO;
probeModel off; //particleProbe; //off;
dataExchangeModel twoWayMPI;//twoWayFiles;//twoWayM2M;//oneWayVTK;//
averagingModel dense;//dilute;//
clockModel standardClock;//off;
smoothingModel constDiffSmoothing; //off;// localPSizeDiffSmoothing;// constDiffSmoothing; //
forceModels
(
//GidaspowDrag
//BeetstraDrag
//DiFeliceDrag
//gradPForce
gradPForceSmooth
viscForce
KochHillDrag
//interface
//DEMbasedDrag
//RongDrag
//Archimedes
//volWeightedAverage
//totalMomentumExchange
//particleCellVolume
//fieldTimeAverage
//surfaceTensionForce
);
momCoupleModels
(
implicitCouple
);
turbulenceModelType "RASProperties";//"LESProperties";//
//===========================================================================//
// sub-model properties
localPSizeDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
dSmoothingLength 1.5e-3;
Csmoothing 1.0;
}
constDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
smoothingLength 6e-3;
}
implicitCoupleProps
{
velFieldName "U";
granVelFieldName "Us";
voidfractionFieldName "voidfraction";
}
ArchimedesProps
{
gravityFieldName "g";
treatForceDEM true;
}
gradPForceProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
//interpolation true;
}
viscForceProps
{
velocityFieldName "U";
//interpolation false;
verbose true;
}
volWeightedAverageProps
{
scalarFieldNames
(
voidfraction
);
vectorFieldNames
(
);
upperThreshold 0.999;
lowerThreshold 0;
verbose true;
}
totalMomentumExchangeProps
{
implicitMomExFieldName "Ksl";
explicitMomExFieldName "none";
fluidVelFieldName "U";
granVelFieldName "Us";
}
GidaspowDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
phi 1;
}
DEMbasedDragProps
{
velFieldName "U";
voidfractionFieldName "voidfraction";
}
DiFeliceDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
granVelFieldName "Us";
interpolation true;
}
KochHillDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
//interpolation true;
//forceSubModels
//(
// ImExCorr
//);
implForceDEM true;
//implForceDEMaccumulated true;
//explicitCorr true;
}
BeetstraDragProps
{
velFieldName "U";
gravityFieldName "g";
rhoParticle 2000.;
voidfractionFieldName "voidfraction";
interpolation ;
useFilteredDragModel ;
useParcelSizeDependentFilteredDrag ;
k 0.05;
aLimit 0.0;
// verbose true;
}
RongDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
implForceDEM true;
implForceDEMaccumulated true;
granVelFieldName "Us";
}
virtualMassForceProps
{
velFieldName "U";
}
particleCellVolumeProps
{
upperThreshold 0.999;
lowerThreshold 0.;
verbose true;
}
fieldStoreProps
{
scalarFieldNames
(
);
vectorFieldNames
(
"U"
);
}
oneWayVTKProps
{
couplingFilename "vtk_out%4.4d.vtk";
maxNumberOfParticles 30000;
}
twoWayFilesProps
{
maxNumberOfParticles 10100;
}
centreProps
{
alphaMin 0.1;
}
engineProps
{
treeSearch true;
}
turboEngineM2MProps
{
turboEngineProps
{
treeSearch true;
}
}
dividedProps
{
alphaMin 0.01;
// porosity 0.5;
//interpolation true;
}
twoWayMPIProps
{
liggghtsPath "../DEM/in.liggghts_equilibrate";
}
twoWayM2MProps
{
maxNumberOfParticles 10100;
liggghtsPath "../DEM/in.liggghts_equilibrate";
}
surfaceTensionForceProps
{
}
trilinearProps
{
alphaMin 0.01;
}
bigParticleProps
{
alphaMin 0.01;
maxCellsPerParticle 1000;
porosity 100.0;
}
gradPForceSmoothProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
smoothingModel "temporalSmoothing";
//smoothingModel "constDiffSmoothing";
//interpolation true;
alpha 1000.0;
temporalSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
//referenceField "p";
referenceField "p_rgh";
alpha 0.01;
}
}
}
// ************************************************************************* //

View File

@ -0,0 +1,318 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object couplingProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//===========================================================================//
// sub-models & settings
syncMode false;
//verbose;
useDDTvoidfraction;
modelType "A"; // A or B
couplingInterval 100;
voidFractionModel divided; //bigParticle; //trilinear; //centre; //divided;
locateModel engine;//turboEngineM2M;//
meshMotionModel noMeshMotion;
regionModel allRegion;
IOModel basicIO;
probeModel off; //particleProbe; //off;
dataExchangeModel twoWayMPI;//twoWayFiles;//twoWayM2M;//oneWayVTK;//
averagingModel dense;//dilute;//
clockModel standardClock;//off;
smoothingModel constDiffSmoothing; //off;// localPSizeDiffSmoothing;// constDiffSmoothing; //
forceModels
(
//GidaspowDrag
//BeetstraDrag
//DiFeliceDrag
//gradPForce
gradPForceSmooth
viscForce
KochHillDrag
//interface
//DEMbasedDrag
//RongDrag
//Archimedes
//volWeightedAverage
//totalMomentumExchange
//particleCellVolume
//fieldTimeAverage
//surfaceTensionForce
);
momCoupleModels
(
implicitCouple
);
turbulenceModelType "RASProperties";//"LESProperties";//
//===========================================================================//
// sub-model properties
localPSizeDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
dSmoothingLength 1.5e-3;
Csmoothing 1.0;
}
constDiffSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
smoothingLength 6e-3;
}
implicitCoupleProps
{
velFieldName "U";
granVelFieldName "Us";
voidfractionFieldName "voidfraction";
}
ArchimedesProps
{
gravityFieldName "g";
treatForceDEM true;
}
gradPForceProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
//interpolation true;
}
viscForceProps
{
velocityFieldName "U";
//interpolation false;
verbose true;
}
volWeightedAverageProps
{
scalarFieldNames
(
voidfraction
);
vectorFieldNames
(
);
upperThreshold 0.999;
lowerThreshold 0;
verbose true;
}
totalMomentumExchangeProps
{
implicitMomExFieldName "Ksl";
explicitMomExFieldName "none";
fluidVelFieldName "U";
granVelFieldName "Us";
}
GidaspowDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
phi 1;
}
DEMbasedDragProps
{
velFieldName "U";
voidfractionFieldName "voidfraction";
}
DiFeliceDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
granVelFieldName "Us";
interpolation true;
}
KochHillDragProps
{
//verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
//interpolation true;
//forceSubModels
//(
// ImExCorr
//);
implForceDEM true;
//implForceDEMaccumulated true;
//explicitCorr true;
}
BeetstraDragProps
{
velFieldName "U";
gravityFieldName "g";
rhoParticle 2000.;
voidfractionFieldName "voidfraction";
interpolation ;
useFilteredDragModel ;
useParcelSizeDependentFilteredDrag ;
k 0.05;
aLimit 0.0;
// verbose true;
}
RongDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
implForceDEM true;
implForceDEMaccumulated true;
granVelFieldName "Us";
}
virtualMassForceProps
{
velFieldName "U";
}
particleCellVolumeProps
{
upperThreshold 0.999;
lowerThreshold 0.;
verbose true;
}
fieldStoreProps
{
scalarFieldNames
(
);
vectorFieldNames
(
"U"
);
}
oneWayVTKProps
{
couplingFilename "vtk_out%4.4d.vtk";
maxNumberOfParticles 30000;
}
twoWayFilesProps
{
maxNumberOfParticles 10100;
}
centreProps
{
alphaMin 0.1;
}
engineProps
{
treeSearch true;
}
turboEngineM2MProps
{
turboEngineProps
{
treeSearch true;
}
}
dividedProps
{
alphaMin 0.01;
// porosity 0.5;
//interpolation true;
}
twoWayMPIProps
{
liggghtsPath "../DEM/in.liggghts_run";
}
twoWayM2MProps
{
maxNumberOfParticles 10100;
liggghtsPath "../DEM/in.liggghts_run";
}
surfaceTensionForceProps
{
}
trilinearProps
{
alphaMin 0.01;
}
bigParticleProps
{
alphaMin 0.01;
maxCellsPerParticle 1000;
porosity 100.0;
}
gradPForceSmoothProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
smoothingModel "temporalSmoothing";
//smoothingModel "constDiffSmoothing";
//interpolation true;
alpha 1000.0;
temporalSmoothingProps
{
lowerLimit 0.1;
upperLimit 1e10;
//referenceField "p";
referenceField "p_rgh";
alpha 0.01;
}
}
}
// ************************************************************************* //

View File

@ -0,0 +1,22 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class uniformDimensionedVectorField;
location "constant";
object g;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -2 0 0 0 0];
value ( 0 0 -9.81 );
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object liggghtsCommands;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
liggghtsCommandModels
(
runLiggghts
writeLiggghts
);
// ************************************************************************* //
/*runLiggghtsProps
{
preNo false;
}*/
writeLiggghtsProps
{
writeLast on;
writeName "post/restart/liggghts.restartCFDEM";
overwrite on;
}

View File

@ -0,0 +1,148 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General m4 macros
changecom(//)changequote([,]) dnl>
define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl>
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// User-defined parameters
convertToMeters 1;
define(cylRadius, 0.1)
define(cylHeight, 0.08)
define(sqSide, 0.1)
define(outletSize, 0.02)
define(outletStartZ, 0.04)
define(outletAngularPos, 2.5) //degrees from x-axis
define(sqCells1D, 8)
define(cylCellsRadial, 3)
define(cellsZ, 6)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Derived parameters
define(sqHalf, calc(sqSide/2))
define(sq11x, calc(-sqHalf))
define(sq11y, calc(sqHalf))
define(sq1x, calc(sqHalf))
define(sq1y, calc(sqHalf))
define(sq5x, calc(sqHalf))
define(sq5y, calc(-sqHalf))
define(sq7x, calc(-sqHalf))
define(sq7y, calc(-sqHalf))
define(c11x, calc(-cylRadius*cos(pi/4)))
define(c11y, calc(cylRadius*sin(pi/4)))
define(c1x, calc(cylRadius*cos(pi/4)))
define(c1y, calc(cylRadius*sin(pi/4)))
define(c5x, calc(cylRadius*cos(pi/4)))
define(c5y, calc(-cylRadius*sin(pi/4)))
define(c7x, calc(-cylRadius*cos(pi/4)))
define(c7y, calc(-cylRadius*sin(pi/4)))
define(ipNy, calc(cylRadius))
define(ipSy, calc(-cylRadius))
define(ipWx, calc(-cylRadius))
define(ipEx, calc(cylRadius))
vertices
(
(sq11x sq11y 0) //Square 11 o'clock,bottom //0
(sq1x sq1y 0) //Square 1 o'clock,bottom //1
(sq5x sq5y 0) //Square 5 o'clock,bottom //2
(sq7x sq7y 0) //Square 7 o'clock,bottom //3
(c11x c11y 0) //Cyl 11 o'clock,bottom //4
(c1x c1y 0) //Cyl 1 o'clock,bottom //5
(c5x c5y 0) //Cyl 5 o'clock,bottom //6
(c7x c7y 0) //Cyl 7 o'clock,bottom //7
(sq11x sq11y cylHeight) //Square 11 o'clock,top //8
(sq1x sq1y cylHeight) //Square 1 o'clock,top //9
(sq5x sq5y cylHeight) //Square 5 o'clock,top //10
(sq7x sq7y cylHeight) //Square 7 o'clock,top //11
(c11x c11y cylHeight) //Cyl 11 o'clock,top //12
(c1x c1y cylHeight) //Cyl 1 o'clock,top //13
(c5x c5y cylHeight) //Cyl 5 o'clock,top //14
(c7x c7y cylHeight) //Cyl 7 o'clock,top //15
);
blocks
(
hex (3 2 1 0 11 10 9 8) (sqCells1D sqCells1D cellsZ) simpleGrading (1 1 1) //Mid-block
hex (7 3 0 4 15 11 8 12) (cylCellsRadial sqCells1D cellsZ) simpleGrading (1 1 1) //west-block
hex (0 1 5 4 8 9 13 12) (sqCells1D cylCellsRadial cellsZ) simpleGrading (1 1 1) //north-block
hex (2 6 5 1 10 14 13 9) (cylCellsRadial sqCells1D cellsZ) simpleGrading (1 1 1) //east-block
hex (7 6 2 3 15 14 10 11) (sqCells1D cylCellsRadial cellsZ) simpleGrading (1 1 1) //south-block
);
edges
(
arc 7 4 (ipWx 0 0) //west,bottom
arc 4 5 (0 ipNy 0) //north,bottom
arc 5 6 (ipEx 0 0) //east,bottom
arc 6 7 (0 ipSy 0) //south,bottom
arc 15 12 (ipWx 0 cylHeight) //west,top
arc 12 13 (0 ipNy cylHeight) //north,top
arc 13 14 (ipEx 0 cylHeight) //east,top
arc 14 15 (0 ipSy cylHeight) //south,top
);
boundary
(
atmosphere
{
type patch;
faces
(
(8 11 10 9)
(8 12 15 11)
(8 9 13 12)
(9 10 14 13)
(10 11 15 14)
);
}
walls
{
type wall;
faces
(
//Bottom
(0 1 2 3)
(0 3 7 4)
(4 5 1 0)
(2 1 5 6)
(2 6 7 3)
//West
(15 12 4 7)
//North
(12 13 5 4)
//East
(13 14 6 5)
//South
(14 15 7 6)
);
}
);
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
3
(
atmosphere
{
type patch;
nFaces 160;
startFace 2624;
}
walls
{
type wall;
inGroups 1(wall);
nFaces 351;
startFace 2784;
}
outlet
{
type patch;
nFaces 1;
startFace 3135;
}
)
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//Properties from https://www.jstage.jst.go.jp/article/tetsutohagane/100/8/100_925/_pdf
phases
(
iron
{
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1.5e-07;
rho rho [ 1 -3 0 0 0 0 0 ] 6700;
}
slag
{
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1.5e-04;
rho rho [ 1 -3 0 0 0 0 0 ] 2600;
}
air
{
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1.3e-05;
rho rho [ 1 -3 0 0 0 0 0 ] 1.5;
}
);
sigmas
(
(iron slag) 0.07 //??
(iron air) 0.07 //??
(slag air) 0.07 //??
);
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType RASModel;
// ************************************************************************* //

View File

@ -0,0 +1,7 @@
#!/bin/bash
m4 constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
m4 system/topoSetDict.m4 > system/topoSetDict
blockMesh
topoSet
createPatch -overwrite

View File

@ -0,0 +1,70 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pisoFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 5; //60
deltaT 0.005;
writeControl adjustableRunTime;
writeInterval 0.5;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep no;
maxCo 0.1;
maxAlphaCo 0.1;
libs (
);
functions
{
}
// ************************************************************************* //

View File

@ -0,0 +1,70 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pisoFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 5; //60
deltaT 0.005;
writeControl adjustableRunTime;
writeInterval 0.5;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep no;
maxCo 0.1;
maxAlphaCo 0.1;
libs (
);
functions
{
}
// ************************************************************************* //

View File

@ -0,0 +1,70 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pisoFoam;
startFrom startTime;
startTime 5;
stopAt endTime;
endTime 65;
deltaT 0.005;
writeControl adjustableRunTime;
writeInterval 0.5;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep no;
maxCo 0.1;
maxAlphaCo 0.1;
libs (
);
functions
{
}
// ************************************************************************* //

View File

@ -0,0 +1,32 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object createPatchDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
pointSync false;
patches
(
{
name outlet;
patchInfo
{
type patch;
}
constructFrom set;
set outlet;
}
);
// ************************************************************************* //

View File

@ -0,0 +1,86 @@
/*-------------------------------*- C++ -*---------------------------------*\
| ========= |
| \\ / OpenFOAM |
| \\ / |
| \\ / The Open Source CFD Toolbox |
| \\/ http://www.OpenFOAM.org |
\*-------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
note "mesh decomposition control dictionary";
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 4;
//- Keep owner and neighbour on same processor for faces in zones:
// preserveFaceZones (heater solid1 solid3);
//method scotch;
// method hierarchical;
method simple;
// method metis;
// method manual;
simpleCoeffs
{
n (2 2 1);
delta 0.001;
}
hierarchicalCoeffs
{
n (2 2 1);
delta 0.001;
order xyz;
}
metisCoeffs
{
/*
processorWeights
(
1
1
1
1
);
*/
}
scotchCoeffs
{
//processorWeights
//(
// 1
// 1
// 1
// 1
//);
//writeGraph true;
//strategy "b";
}
manualCoeffs
{
dataFile "decompositionData";
}
//// Is the case distributed
//distributed yes;
//// Per slave (so nProcs-1 entries) the directory above the case.
//roots
//(
// "/tmp"
// "/tmp"
//);
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object funkySetFieldsDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
initVariables
(
"initIronLevel=0.04;"
"initSlagLevel=0.07;"
);
expressions
(
initAir
{
variables $initVariables;
field alpha.air;
expression "1";
condition "pos().z > initSlagLevel";
keepPatches 1; //keep boundary conditions
}
initIron
{
variables $initVariables;
field alpha.iron;
expression "1";
condition "pos().z <= initIronLevel";
keepPatches 1; //keep boundary conditions
}
initSlag
{
variables $initVariables;
field alpha.slag;
expression "1";
condition "pos().z > initIronLevel && pos().z <= initSlagLevel";
keepPatches 1; //keep boundary conditions
}
);
// ************************************************** *********************** //

View File

@ -0,0 +1,67 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
grad(U) Gauss linear;
grad(gamma) Gauss linear;
}
divSchemes
{
div(rhoPhi,U) Gauss upwind;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div((muEff*dev(T(grad(U))))) Gauss linear;
div((viscousTerm*dev2(grad(U).T()))) Gauss linear;
div(((grad(U)*rho)*dev(grad(U).T()))) Gauss linear;
div(((dev(grad(U).T())*rho)*dev(grad(U).T()))) Gauss linear;
div((((((alpha.water*rho)*nu.water)|(alpha.water*rho))*rho)*dev(grad(U).T()))) Gauss linear;
div(((nu*rho)*dev(grad(U).T()))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
fluxRequired
{
default no;
pcorr;
p_rgh;
"alpha.*";
}
// ************************************************************************* //

View File

@ -0,0 +1,138 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
alpha
{
nAlphaSubCycles 1;
cAlpha 1;
}
pcorr
{
solver PCG;
preconditioner
{
preconditioner GAMG;
tolerance 1e-05;
relTol 0;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
nFinestSweeps 2;
cacheAgglomeration on;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
tolerance 1e-05;
relTol 0;
maxIter 100;
}
p_rgh
{
solver GAMG;
tolerance 1e-07;
relTol 0.05;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
nFinestSweeps 2;
cacheAgglomeration on;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
"(p_rghFinal|pSmoothFinal)"
{
solver PCG;
preconditioner
{
preconditioner GAMG;
tolerance 1e-07;
relTol 0;
nVcycles 2;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
nFinestSweeps 2;
cacheAgglomeration on;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
tolerance 1e-07;
relTol 0;
maxIter 20;
}
"(k|epsilon|R|nuTilda)"
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-9;
relTol 0;
nSweeps 1;
}
"(voidfraction|Us|Ksl|vSmoothField|sSmoothField|UsNext|voidfractionNext|pSmooth)"
{
solver PCG;
preconditioner DIC;
tolerance 1e-05;
relTol 0;
}
U
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-08;
relTol 0.1;
nSweeps 1;
}
UFinal
{
$U;
tolerance 1e-08;
relTol 0;
}
}
PIMPLE
{
nCorrectors 2;
nNonOrthogonalCorrectors 0;
}
relaxationFactors
{
fields
{
}
equations
{
"U.*" 1;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,53 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object setFieldsDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
defaultFieldValues
(
volScalarFieldValue alpha.air 1
volScalarFieldValue alpha.iron 0
volScalarFieldValue alpha.slag 0
);
regions
(
cylinderToCell
{
p1 (0 0 0); //center point, min
p2 (0 0 0.04); //center point, max
radius 0.1;
fieldValues
(
volScalarFieldValue alpha.iron 1
volScalarFieldValue alpha.air 0
);
}
cylinderToCell
{
p1 (0 0 0.04); //center point, min
p2 (0 0 0.07); //center point, max
radius 0.1;
fieldValues
(
volScalarFieldValue alpha.slag 1
volScalarFieldValue alpha.air 0
);
}
);
// ************************************************************************* //

View File

@ -0,0 +1,75 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General m4 macros
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// User-defined parameters
//degrees from x-axis
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Derived parameters
actions
(
{
name c_out;
type cellSet;
action new;
source boxToCell;
sourceInfo
{
box (0.0899048221581858 -0.0056380612634664 0.04)(0.109904822158186 0.0143619387365336 0.06);
}
}
{
name outlet;
type faceSet;
action new;
source patchToFace;
sourceInfo
{
name "wall";
}
}
{
name outlet;
type faceSet;
action subset;
source cellToFace;
sourceInfo
{
set c_out;
option all;
}
}
);
// ************************************************************************* //

View File

@ -0,0 +1,77 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General m4 macros
changecom(//)changequote([,]) dnl>
define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl>
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// User-defined parameters
define(cylRadius, 0.1)
define(cylHeight, 0.08)
define(sqSide, 0.1)
define(outletSize, 0.02)
define(outletStartZ, 0.04)
define(outletAngularPos, 2.5) //degrees from x-axis
define(sqCells1D, 8)
define(cylCellsRadial, 3)
define(cellsZ, 6)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Derived parameters
define(midPointX, calc(cylRadius*cos(outletAngularPos*pi/180)))
define(midPointY, calc(cylRadius*sin(outletAngularPos*pi/180)))
actions
(
{
name c_out;
type cellSet;
action new;
source boxToCell;
sourceInfo
{
box (calc(midPointX-0.5*outletSize) calc(midPointY-0.5*outletSize) outletStartZ)(calc(midPointX+0.5*outletSize) calc(midPointY+0.5*outletSize) calc(outletStartZ+1.0*outletSize));
}
}
{
name outlet;
type faceSet;
action new;
source patchToFace;
sourceInfo
{
name "wall";
}
}
{
name outlet;
type faceSet;
action subset;
source cellToFace;
sourceInfo
{
set c_out;
option all;
}
}
);
// ************************************************************************* //

View File

@ -0,0 +1,143 @@
###############################################
#geometry
variable cylRadius equal 0.1
variable cylHeight equal 0.08
# Radiuses of servo wall for force calculation
variable r1 equal 0.02
variable r2 equal 0.04
variable r3 equal 0.06
variable r4 equal 0.08
variable r5 equal 0.1
#particle variables
variable rho equal 1500 # particle density
# time parameters
variable dt equal 0.00005 # Time step
variable outInterval equal 0.5 # Dump interval to be consistent with controlDict
# DEM-parameters
variable yM equal 5.e6 # Young's modulus
variable pR equal 0.45 # Poisson ratio
variable rest equal 0.3 # coefficient of restitution
variable fric equal 0.5 # coefficient of friction
variable cV equal 0.1 # characteristic velocity
variable skin equal 0.001
# variables for the servo walls
#Pressure acting on the servo wall (Pa)
variable p1 equal 800
variable p2 equal 800
variable p3 equal 800
variable p4 equal 800
variable p5 equal 800
variable A1 equal PI*${r1}^2
variable A2 equal PI*(${r2}^2-${r1}^2)
variable A3 equal PI*(${r3}^2-${r2}^2)
variable A4 equal PI*(${r4}^2-${r3}^2)
variable A5 equal PI*(${r5}^2-${r4}^2)
variable ctrlForceR1 equal -${p1}*${A1} # target value of the force
variable ctrlForceR2 equal -${p2}*${A2} # target value of the force
variable ctrlForceR3 equal -${p3}*${A3} # target value of the force
variable ctrlForceR4 equal -${p4}*${A4} # target value of the force
variable ctrlForceR5 equal -${p5}*${A5} # target value of the force
variable maxVel equal 0.25*${skin}/${dt}
# controller parameter (servo wall)
variable ctrlKp equal 1e-2
variable ctrlKi equal 0.0
variable ctrlKd equal 0.0
# particle settling loop parameters
variable vthre equal 0.01
# calculated parameters
variable dumpInterval equal ${outInterval}/${dt}
###############################################
log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt
atom_style granular
atom_modify map array
communicate single vel yes
boundary f f f
newton off
units si
processors 2 2 1
# read the restart file
read_restart ../DEM/post/restart/fill.restart
neighbor ${skin} bin
neigh_modify delay 0
# Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype ${yM}
fix m2 all property/global poissonsRatio peratomtype ${pR}
fix m3 all property/global coefficientRestitution peratomtypepair 1 ${rest}
fix m4 all property/global coefficientFriction peratomtypepair 1 ${fric}
# pair style
pair_style gran model hertz tangential history # Hertzian without cohesion
pair_coeff * *
# timestep, gravity
timestep ${dt}
fix gravi all gravity 9.81 vector 0.0 0.0 -1.0
# walls
fix cylWall all wall/gran model hertz tangential history primitive type 1 zcylinder 0.1 0 0
fix botWall all wall/gran model hertz tangential history primitive type 1 zplane 0
fix servoR1 all mesh/surface/stress/servo file ../DEM/stls/r1.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR1} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR2 all mesh/surface/stress/servo file ../DEM/stls/r2.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR2} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR3 all mesh/surface/stress/servo file ../DEM/stls/r3.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR3} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR4 all mesh/surface/stress/servo file ../DEM/stls/r4.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR4} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR5 all mesh/surface/stress/servo file ../DEM/stls/r5.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR5} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix walls all wall/gran model hertz tangential history mesh n_meshes 5 meshes servoR1 servoR2 servoR3 servoR4 servoR5
# change the particles density
set group all density ${rho}
# cfd coupling
fix cfd all couple/cfd couple_every 100000000 mpi
fix cfd2 all couple/cfd/force/implicit
# apply nve integration to all particles that are inserted as single particles
fix integr all nve/sphere
# center of mass
compute centerOfMass all com
# compute total dragforce
compute dragtotal all reduce sum f_dragforce[1] f_dragforce[2] f_dragforce[3]
# screen output
compute rke all erotate/sphere
thermo_style custom step atoms ke c_rke vol c_centerOfMass[3] c_dragtotal[1] c_dragtotal[2] c_dragtotal[3]
thermo 100
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
#compute position all property/atom x y z
fix ts_check all check/timestep/gran 100 0.1 0.1
dump dmp all custom ${dumpInterval} ../DEM/post/dump*.liggghts_run id type x y z vx vy vz fx fy fz f_dragforce[1] f_dragforce[2] f_dragforce[3] radius
dump servoWall all mesh/stl ${dumpInterval} ../DEM/post/dump*.servoWall.stl servoR1 servoR2 servoR3 servoR4 servoR5
run 1

View File

@ -0,0 +1,98 @@
###############################################
#geometry
variable cylRadius equal 0.1
variable cylHeight equal 0.08
#particle variables
variable rho equal 2500 # particle density
variable radi equal 0.003 # particle radius
variable nParticles equal 17000
# time parameters
variable totTime equal 1.0 # Total runtime in seconds
variable dt equal 0.00001
variable outInterval equal 0.1 # Dump interval to be consistent with controlDict
# DEM-parameters
variable yM equal 5.e6 # Young's modulus
variable pR equal 0.45 # Poisson ratio
variable rest equal 0.3 # coefficient of restitution
variable fric equal 0.5 # coefficient of friction
variable cV equal 0.1 # characteristic velocity
variable skin equal 0.001
# calculated parameters
variable nrIterations equal ${totTime}/${dt}
variable dumpInterval equal ${outInterval}/${dt}
variable insRate equal 2*${nParticles}/${totTime}
###############################################
atom_style granular
atom_modify map array
communicate single vel yes
boundary f f f
newton off
units si
processors 2 2 1
region reg block -${cylRadius} ${cylRadius} -${cylRadius} ${cylRadius} 0 0.15 units box
create_box 1 reg
neighbor ${skin} bin
neigh_modify delay 0
# Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype ${yM}
fix m2 all property/global poissonsRatio peratomtype ${pR}
fix m3 all property/global coefficientRestitution peratomtypepair 1 ${rest}
fix m4 all property/global coefficientFriction peratomtypepair 1 ${fric}
# pair style
pair_style gran model hertz tangential history # Hertzian without cohesion
pair_coeff * *
# timestep, gravity
timestep ${dt}
fix gravi all gravity 9.81 vector 0.0 0.0 -1.0
# walls
fix cylWall all wall/gran model hertz tangential history primitive type 1 zcylinder 0.1 0 0
fix botWall all wall/gran model hertz tangential history primitive type 1 zplane 0
fix cone all mesh/surface file ../DEM/stls/cone.stl type 1
fix walls all wall/gran model hertz tangential history mesh n_meshes 1 meshes cone
# particle distributions and insertion
region bc cylinder z 0 0 ${cylRadius} 0.07 0.12 #${cylHeight}
fix pts1 all particletemplate/sphere 1 atom_type 1 density constant ${rho} radius constant ${radi}
fix pdd1 all particledistribution/discrete 1 1 pts1 1.0
fix ins all insert/rate/region seed 1001 distributiontemplate pdd1 nparticles ${nParticles} particlerate ${insRate} insert_every 1000 overlapcheck yes region bc ntry_mc 10000
# apply nve integration to all particles that are inserted as single particles
fix integr all nve/sphere
# screen output
compute rke all erotate/sphere
thermo_style custom step atoms ke c_rke vol
thermo 1000
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
compute pos all property/atom x y z
# insert the first particles so that dump is not empty
run 1
dump dmp all custom ${dumpInterval} post/dump*.liggghts_init id type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius c_pos[1] c_pos[2] c_pos[3]
dump myStl1 all stl ${dumpInterval} ../DEM/post/dump.liggghts_init*.stl
run ${nrIterations} upto
region particleRm cylinder z 0 0 ${cylRadius} 0.08 0.15
delete_atoms region particleRm
write_restart post/restart/fill.restart

View File

@ -0,0 +1,142 @@
###############################################
#geometry
variable cylRadius equal 0.1
variable cylHeight equal 0.08
# Radiuses of servo wall for force calculation
variable r1 equal 0.02
variable r2 equal 0.04
variable r3 equal 0.06
variable r4 equal 0.08
variable r5 equal 0.1
#particle variables
variable rho equal 1500 # particle density
# time parameters
variable dt equal 0.00005 # Time step
variable outInterval equal 0.5 # Dump interval to be consistent with controlDict
# DEM-parameters
variable yM equal 5.e6 # Young's modulus
variable pR equal 0.45 # Poisson ratio
variable rest equal 0.3 # coefficient of restitution
variable fric equal 0.5 # coefficient of friction
variable cV equal 0.1 # characteristic velocity
variable skin equal 0.001
# variables for the servo wall
#Pressure acting on the servo wall (Pa)
variable p1 equal 800
variable p2 equal 800
variable p3 equal 800
variable p4 equal 800
variable p5 equal 800
variable A1 equal PI*${r1}^2
variable A2 equal PI*(${r2}^2-${r1}^2)
variable A3 equal PI*(${r3}^2-${r2}^2)
variable A4 equal PI*(${r4}^2-${r3}^2)
variable A5 equal PI*(${r5}^2-${r4}^2)
variable ctrlForceR1 equal -${p1}*${A1} # target value of the force
variable ctrlForceR2 equal -${p2}*${A2} # target value of the force
variable ctrlForceR3 equal -${p3}*${A3} # target value of the force
variable ctrlForceR4 equal -${p4}*${A4} # target value of the force
variable ctrlForceR5 equal -${p5}*${A5} # target value of the force
variable maxVel equal 0.25*${skin}/${dt}
# controller parameter (servo wall)
variable ctrlKp equal 1e-2
variable ctrlKi equal 0.0
variable ctrlKd equal 0.0
# particle settling loop parameters
variable vthre equal 0.01
# calculated parameters
variable dumpInterval equal ${outInterval}/${dt}
###############################################
log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt
atom_style granular
atom_modify map array
communicate single vel yes
boundary f f f
newton off
units si
processors 2 2 1
# read the restart file
read_restart ../DEM/post/restart/liggghts.restartCFDEM_5.000000
neighbor ${skin} bin
neigh_modify delay 0
# Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype ${yM}
fix m2 all property/global poissonsRatio peratomtype ${pR}
fix m3 all property/global coefficientRestitution peratomtypepair 1 ${rest}
fix m4 all property/global coefficientFriction peratomtypepair 1 ${fric}
# pair style
pair_style gran model hertz tangential history # Hertzian without cohesion
pair_coeff * *
# timestep, gravity
timestep ${dt}
fix gravi all gravity 9.81 vector 0.0 0.0 -1.0
# walls
fix cylWall all wall/gran model hertz tangential history primitive type 1 zcylinder 0.1 0 0
fix botWall all wall/gran model hertz tangential history primitive type 1 zplane 0
fix servoR1 all mesh/surface/stress/servo file ../DEM/stls/r1.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR1} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR2 all mesh/surface/stress/servo file ../DEM/stls/r2.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR2} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR3 all mesh/surface/stress/servo file ../DEM/stls/r3.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR3} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR4 all mesh/surface/stress/servo file ../DEM/stls/r4.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR4} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix servoR5 all mesh/surface/stress/servo file ../DEM/stls/r5.stl type 1 scale 1. com 0 0 0 ctrlPV force axis 0. 0. 1. target_val ${ctrlForceR5} vel_max ${maxVel} kp ${ctrlKp} ki ${ctrlKi} kd ${ctrlKd} #verbose no move 0.0 0.0 7.8
fix walls all wall/gran model hertz tangential history mesh n_meshes 5 meshes servoR1 servoR2 servoR3 servoR4 servoR5
# change the particles density
set group all density ${rho}
# cfd coupling
fix cfd all couple/cfd couple_every 100000000 mpi
fix cfd2 all couple/cfd/force/implicit
# apply nve integration to all particles that are inserted as single particles
fix integr all nve/sphere
# center of mass
compute centerOfMass all com
# compute total dragforce
compute dragtotal all reduce sum f_dragforce[1] f_dragforce[2] f_dragforce[3]
# screen output
compute rke all erotate/sphere
thermo_style custom step atoms ke c_rke vol c_centerOfMass[3] c_dragtotal[1] c_dragtotal[2] c_dragtotal[3]
thermo 100
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
#compute position all property/atom x y z
fix ts_check all check/timestep/gran 100 0.1 0.1
dump dmp all custom ${dumpInterval} ../DEM/post/dump*.liggghts_run id type x y z vx vy vz fx fy fz f_dragforce[1] f_dragforce[2] f_dragforce[3] radius
dump servoWall all mesh/stl ${dumpInterval} ../DEM/post/dump*.servoWall.stl servoR1 servoR2 servoR3 servoR4 servoR5
run 1

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