This commit is contained in:
Thomas Lichtenegger
2021-12-07 12:21:11 +01:00
49 changed files with 1271 additions and 98 deletions

View File

@ -6,7 +6,6 @@ PFLAGS+= -Dcompre
EXE_INC = \
$(PFLAGS) \
-I../. \
-I$(CFDEM_OFVERSION_DIR) \
-I$(LIB_SRC)/finiteVolume/cfdTools \
-I$(LIB_SRC)/finiteVolume/lnInclude \
@ -27,7 +26,6 @@ EXE_INC = \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
-I$(LIB_SRC)/ODE/lnInclude \
-I$(LIB_SRC)/combustionModels/lnInclude \
-I$(FOAM_SOLVERS)/combustion/reactingFoam \
-Wno-deprecated-copy

View File

@ -57,6 +57,8 @@ Description
int main(int argc, char *argv[])
{
#include "postProcess.H"
#include "setRootCase.H"
#include "createTime.H"
#include "createMesh.H"
@ -64,9 +66,10 @@ int main(int argc, char *argv[])
#include "createTimeControls.H"
#include "createRDeltaT.H"
#include "createFields.H"
#include "createFvOptions.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"
#include "createFvOptions.H"
// create cfdemCloud
#include "readGravitationalAcceleration.H"

View File

@ -24,7 +24,7 @@
volScalarField W(thermo.W());
#endif
bool propagateInertSpecie = true;
Switch propagateInertSpecie(true);
const word inertSpecie(thermo.lookup("inertSpecie"));
@ -40,9 +40,9 @@
<< exit(FatalError);
}
Info<< "inert will be bounded in [" << inertLowerBound << "," << inertUpperBound << "]" << endl;
volScalarField& p = thermo.p();
const volScalarField& T = thermo.T();
const volScalarField& psi = thermo.psi();
multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;

View File

@ -44,7 +44,7 @@
dimensionedVector("URec", dimensionSet(0, 1, -1, 0, 0), vector::zero)
);
bool updateURec = false;
Switch updateURec(false);
if (URec.headerOk())
{
updateURec = true;
@ -65,7 +65,7 @@
dimensionedScalar("voidfractionRec", dimensionSet(0, 0, 0, 0, 0), 1.0)
);
bool updateVoidfractionRec = false;
Switch updateVoidfractionRec(false);
if (voidfractionRec.headerOk())
{
updateVoidfractionRec = true;
@ -86,7 +86,7 @@
dimensionedVector("URec", dimensionSet(0, 1, -1, 0, 0), vector::zero)
);
bool updateUsRec = false;
Switch updateUsRec(false);
if (UsRec.headerOk())
{
updateUsRec = true;
@ -140,7 +140,7 @@
linearInterpolate(URec*voidfractionRec) & mesh.Sf()
);
bool updatePhiRec = false;
Switch updatePhiRec(false);
if (phiRec.headerOk())
{
updatePhiRec = true;

View File

@ -58,7 +58,6 @@ int main(int argc, char *argv[])
#include "createMesh.H"
#include "createControl.H"
#include "createFields.H"
#include "createFvOptions.H"
#include "readGravitationalAcceleration.H"

View File

@ -51,7 +51,6 @@ int main(int argc, char *argv[])
#include "createMesh.H"
#include "createControl.H"
#include "createFields.H"
#include "createFvOptions.H"
cfdemCloud particleCloud(mesh);
recBase recurrenceBase(mesh);

View File

@ -168,7 +168,7 @@ Info<< "Reading thermophysical properties\n" << endl;
linearInterpolate(rho*U*voidfraction) & mesh.Sf()
);
bool transientEEqn(pimple.dict().lookupOrDefault<bool>("transientEEqn",false));
Switch transientEEqn(pimple.dict().lookupOrDefault<bool>("transientEEqn",false));
dimensionedScalar rhoMax
(

View File

@ -63,7 +63,6 @@ int main(int argc, char *argv[])
#include "createControl.H"
#include "createTimeControls.H"
#include "createRDeltaT.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"
#include "createFvOptions.H"

View File

@ -24,7 +24,7 @@ Info<< "Reading thermophysical properties\n" << endl;
volScalarField W(thermo.W());
#endif
bool propagateInertSpecie(thermo.lookupOrDefault<bool>("propagateInertSpecie",true));
Switch propagateInertSpecie(thermo.lookupOrDefault<bool>("propagateInertSpecie",true));
const word inertSpecie(thermo.lookupOrDefault<word>("inertSpecie","none"));
@ -40,9 +40,9 @@ Info<< "Reading thermophysical properties\n" << endl;
<< exit(FatalError);
}
Info<< "inert will be bounded in [" << inertLowerBound << "," << inertUpperBound << "]" << endl;
volScalarField& p = thermo.p();
const volScalarField& T = thermo.T();
const volScalarField& psi = thermo.psi();
multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
@ -212,7 +212,7 @@ Info<< "Reading thermophysical properties\n" << endl;
linearInterpolate(rho*U*voidfraction) & mesh.Sf()
);
bool transientEEqn(pimple.dict().lookupOrDefault<bool>("transientEEqn",false));
Switch transientEEqn(pimple.dict().lookupOrDefault<bool>("transientEEqn",false));
dimensionedScalar rhoMax
(

View File

@ -73,7 +73,7 @@ int main(int argc, char *argv[])
#include "initContinuityErrs.H"
#include "createFields.H"
//#include "createFieldRefs.H"
#include "createFieldRefs.H"
#include "createFvOptions.H"
// create cfdemCloud

View File

@ -255,7 +255,6 @@ volScalarField alphat
fvScalarMatrix CEqn(C, dimless*dimVolume/(dimTime));
scalar relaxCoeff(0.0);
Info<< "reading clockProperties\n" << endl;

View File

@ -1,6 +1,6 @@
/*---------------------------------------------------------------------------*\
CFDEMcoupling academic - Open Source CFD-DEM coupling
Contributing authors:
Thomas Lichtenegger, Gerhard Holzinger, Sanaz Abbasi
Copyright (C) 2015- Johannes Kepler University, Linz
@ -29,11 +29,11 @@ Description
for a solver based on recurrence statistics
Rules
Solution data to compute the recurrence statistics from, needs to
reside in $CASE_ROOT/dataBase(0...N)
Solution data to compute the recurrence statistics from, needs to
reside in $CASE_ROOT/dataBase(0...N)
Time step data in the first dataBase needs to be evenly spaced in time
A list of indices for the corresponding incoherent fields to coherent ones
should be provided.
should be provided.
\*---------------------------------------------------------------------------*/
@ -58,10 +58,11 @@ int main(int argc, char *argv[])
#include "createTime.H"
#include "createMesh.H"
#include "createControl.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFvOptions.H"
scalar cumulativeContErr = 0;
scalar relaxCoeff(0.0);
//create recBases according to a list of recProperties
#include "createRecBase.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -83,15 +84,15 @@ int main(int argc, char *argv[])
runTime++;
myClock().start(11,"Total");
Info<< "Time = " << runTime.timeName() << nl << endl;
myClock().start(2,"fieldUpdate");
if ( runTime.timeOutputValue() - (recTimeIndex+1)*recTimeStep_ + 1.0e-5 > 0.0 )
{
Info << "Updating fields at run time " << runTime.timeOutputValue()
<< " corresponding to recurrence time " << (recTimeIndex+1)*recTimeStep_ << ".\n" << endl;
Info<< "Updating fields at run time " << runTime.timeOutputValue()
<< " corresponding to recurrence time " << (recTimeIndex+1)*recTimeStep_ << ".\n" << endl;
recBases[0].updateRecFields();
#include "readFields.H"
@ -109,16 +110,16 @@ int main(int argc, char *argv[])
myClock().stop("Total");
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
myClock().stop("Global");
}
myClock().evalPar();
myClock().normHist();

View File

@ -147,7 +147,6 @@ surfaceScalarField phiRec
fvScalarMatrix TEqn(T, dimless*dimVolume/(dimTime));
scalar relaxCoeff(0.0);
Info<< "reading clockProperties\n" << endl;

View File

@ -1,6 +1,6 @@
/*---------------------------------------------------------------------------*\
CFDEMcoupling academic - Open Source CFD-DEM coupling
Contributing authors:
Thomas Lichtenegger, Gerhard Holzinger
Copyright (C) 2015- Johannes Kepler University, Linz
@ -29,9 +29,9 @@ Description
for a solver based on recurrence statistics
Rules
Solution data to compute the recurrence statistics from, needs to
reside in $CASE_ROOT/dataBase
Time step data in dataBase needs to be evenly spaced in time
Solution data to compute the recurrence statistics from, needs to
reside in $CASE_ROOT/dataBase
Time step data in dataBase needs to be evenly spaced in time
\*---------------------------------------------------------------------------*/
@ -55,6 +55,7 @@ int main(int argc, char *argv[])
#include "createControl.H"
#include "createFields.H"
#include "createFvOptions.H"
scalar relaxCoeff(0.0);
recBase recurrenceBase(mesh);
@ -81,8 +82,8 @@ int main(int argc, char *argv[])
if (stepCounter == recTimeStep2CFDTimeStep)
{
Info << "Updating fields at run time " << runTime.timeOutputValue()
<< " with recTimeIndex " << recTimeIndex << ".\n" << endl;
Info<< "Updating fields at run time " << runTime.timeOutputValue()
<< " with recTimeIndex " << recTimeIndex << ".\n" << endl;
recurrenceBase.updateRecFields();
#include "readFields.H"
recTimeIndex++;
@ -97,15 +98,15 @@ int main(int argc, char *argv[])
myClock().stop("speciesEqn");
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
myClock().stop("Global");
}
myClock().evalPar();
myClock().normHist();

View File

@ -132,4 +132,3 @@
T.write();
scalar relaxCoeff(0.0);

View File

@ -58,13 +58,14 @@ int main(int argc, char *argv[])
#include "createControl.H"
#include "createFields.H"
#include "createFvOptions.H"
scalar relaxCoeff(0.0);
cfdemCloudRec<cfdemCloud> particleCloud(mesh);
recBase recurrenceBase(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info << "\nCalculating particle trajectories based on recurrence statistics\n" << endl;
Info<< "\nCalculating particle trajectories based on recurrence statistics\n" << endl;
label recTimeIndex(0);
label stepCounter = 0;
@ -77,7 +78,7 @@ int main(int argc, char *argv[])
// do stuff (every lagrangian time step)
particleCloud.clockM().start(1,"Global");
Info << "Time = " << runTime.timeName() << nl << endl;
Info<< "Time = " << runTime.timeName() << nl << endl;
particleCloud.clockM().start(2,"Flow");
#include "TEq.H"
@ -87,8 +88,8 @@ int main(int argc, char *argv[])
if (stepCounter == recTimeStep2CFDTimeStep)
{
Info << "Updating fields at run time " << runTime.timeOutputValue()
<< " corresponding to recTimeIndex " << recTimeIndex << ".\n" << endl;
Info<< "Updating fields at run time " << runTime.timeOutputValue()
<< " corresponding to recTimeIndex " << recTimeIndex << ".\n" << endl;
recurrenceBase.updateRecFields();
#include "readFields.H"
recTimeIndex++;
@ -102,12 +103,12 @@ int main(int argc, char *argv[])
particleCloud.clockM().stop("Global");
Info << "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
}
Info << "End\n" << endl;
Info<< "End\n" << endl;
return 0;
}

View File

@ -37,6 +37,7 @@ The "chemistryModels"_chemistryModel.html keyword is used to specify a list of
models used for chemical reaction calculations.
"diffusionCoefficients"_chemistryModel_diffusionCoefficients.html,
initMultiLayers,
"massTransferCoeff"_chemistryModel_massTransferCoeff.html,
"off"_chemistryModel_noChemistry.html,
"reactantPerParticle"_chemistryModel_reactantPerParticle.html,
@ -65,19 +66,28 @@ that performs the data exchange between the DEM code and the CFD code.
"twoWayOne2One"_dataExchangeModel_twoWayOne2One.html :tb(c=2,ea=c)
6.6 Energy models :h4
6.6 Diffusion coefficient models :h4
The {diffCoeffModel} keyword entry specifies the model for the diffusion
coefficient of dissolved spieces in the fluid phase in the presence of particles.
SyamlalDiffCoeff,
off :tb(c=2,ea=c)
6.7 Energy models :h4
The {energyModels} keyword specifies a list of energy models used for e.g.
compressible, reacting flows.
heatTransferGranConduction,
heatTransferGunn,
heatTransferInterGrain,
heatTransferRanzMarshall,
reactionHeat,
wallHeatTransferYagi :tb(c=2,ea=c)
6.7 Force models :h4
6.8 Force models :h4
The "forceModels"_forceModel.html keyword specifies a list of models that exert
a force on each DEM particle.
@ -87,15 +97,15 @@ a force on each DEM particle.
"BeetstraDrag"_forceModel_BeetstraDrag.html,
BeetstraDragPoly,
"DiFeliceDrag"_forceModel_DiFeliceDrag.html,
"dSauter"_forceModel_dSauter.html,
Fines,
"GidaspowDrag"_forceModel_GidaspowDrag.html,
"KochHillDrag"_forceModel_KochHillDrag.html,
"LaEuScalarTemp"_forceModel_LaEuScalarTemp.html,
"MeiLift"_forceModel_MeiLift.html,
"ParmarBassetForce"_forceModel_ParmarBassetForce.html,
"SchillerNaumannDrag"_forceModel_SchillerNaumannDrag.html,
"ShirgaonkarIB"_forceModel_ShirgaonkarIB.html,
dSauter,
"dSauter"_forceModel_dSauter.html,
deactivateForce,
directedDiffusiveRelaxation,
evaluateFluctuations,
@ -113,13 +123,15 @@ particleDeformation,
"pdCorrelation"_forceModel_pdCorrelation.html,
potentialRelaxation,
"surfaceTensionForce"_forceModel_surfaceTensionForce.html,
terminalVelocity,
turbulentDispersion,
turbulentVelocityFluctuations,
"virtualMassForce"_forceModel_virtualMassForce.html,
"ParmarBassetForce"_forceModel_ParmarBassetForce.html,
"viscForce"_forceModel_viscForce.html,
"volWeightedAverage"_forceModel_volWeightedAverage.html :tb(c=2,ea=c)
6.7.1 Force sub-models :h5
6.8.1 Force sub-models :h5
The "forceSubModels"_forceSubModel.html keyword specifies a list
of models that hold settings for a force model.
@ -129,7 +141,7 @@ ScaleForce,
scaleForceBoundary :tb(c=2,ea=c)
6.8 LIGGGHTS command models :h4,link(lcm)
6.9 LIGGGHTS command models :h4,link(lcm)
The "liggghtsCommandModels"_liggghtsCommandModel.html keyword specifies a list
of models that execute LIGGGHTS commands within a CFD run.
@ -140,7 +152,7 @@ of models that execute LIGGGHTS commands within a CFD run.
"writeLiggghts"_liggghtsCommandModel_writeLiggghts.html :tb(c=2,ea=c)
6.9 Locate models :h4
6.10 Locate models :h4
The "locateModel"_locateModel.html keyword entry specifies the model used to
search the CFD mesh for the CFD cell corresponding to a given position.
@ -152,7 +164,15 @@ search the CFD mesh for the CFD cell corresponding to a given position.
"turboEngine"_locateModel_turboEngineSearch.html :tb(c=2,ea=c)
6.10 Mesh motion models :h4
6.11 Mass transfer models :h4
The {massTransferModels} keyword specifies a list of mass transfer models used
for evaluating species transfer between particles and fluids.
massTransferGunn :tb(c=2,ea=c)
6.12 Mesh motion models :h4
The "meshMotionModel"_meshMotionModel.html keyword entry specifies the model
used to manipulate the CFD mesh according to the DEM mesh motion.
@ -160,7 +180,7 @@ used to manipulate the CFD mesh according to the DEM mesh motion.
"noMeshMotion"_meshMotionModel_noMeshMotion.html :tb(c=2,ea=c)
6.11 Momentum coupling models :h4
6.13 Momentum coupling models :h4
The "momCoupleModels"_momCoupleModel.html keyword specifies a list of models
used for momentum exchange between DEM and CFD simulation
@ -171,17 +191,18 @@ deactivateCouple,
"off"_momCoupleModel_noCouple.html :tb(c=2,ea=c)
6.12 Other force models :h4
6.14 Other force models :h4
The {otherForceModels} keyword specifies a list of models that exert a force on
each DEM particle.
expParticleForces,
gravity,
secondaryPhaseInducedBuoyancy,
weightSecondaryPhase :tb(c=2,ea=c)
6.13 Probe models :h4
6.15 Probe models :h4
The "probeModel"_probeModel.html keyword entry specifies the probing features in
CFDEMcoupling simulations.
@ -190,7 +211,7 @@ CFDEMcoupling simulations.
"particleProbe"_probeModel_particleProbe.html :tb(c=2,ea=c)
6.14 Region models :h4
6.16 Region models :h4
The "regionModel"_regionModel.html keyword entry specifies the model used to
select a certain region for coupled simulations.
@ -198,18 +219,18 @@ select a certain region for coupled simulations.
"allRegion"_regionModel_allRegion.html :tb(c=2,ea=c)
6.15 Smoothing models :h4
6.17 Smoothing models :h4
The "smoothingModel"_smoothingModel.html keyword entry specifies the model for
smoothing the exchange fields.
"constDiffAndTemporalSmoothing"_smoothingModel_constDiffAndTemporalSmoothing.html,
"constDiffSmoothing"_smoothingModel_constDiffSmoothing.html,
"off"_smoothingModel_noSmoothing.html,
"temporalSmoothing"_smoothingModel_temporalSmoothing.html,
"constDiffAndTemporalSmoothing"_smoothingModel_constDiffAndTemporalSmoothing.html :tb(c=2,ea=c)
"temporalSmoothing"_smoothingModel_temporalSmoothing.html :tb(c=2,ea=c)
6.16 Thermal conductivity models :h4
6.18 Thermal conductivity models :h4
The {thermCondModel} keyword entry specifies the model for the thermal
conductivity of the fluid phase in the presence of particles.
@ -219,7 +240,7 @@ ZehnerSchluenderThermCond,
off :tb(c=2,ea=c)
6.17 Void fraction models :h4
6.19 Void fraction models :h4
The "voidFractionModel"_voidFractionModel.html keyword entry specifies the model
accounting for the volume of the particles in the CFD domain.
@ -232,18 +253,4 @@ accounting for the volume of the particles in the CFD domain.
off,
trilinear :tb(c=2,ea=c)
6.18 Mass transfer models :h4
The {massTransferModels} keyword specifies a list of mass transfer models used evaluating
species transfer between particles and fluids.
massTransferGunn :tb(c=2,ea=c)
6.19 Diffusion coefficient models :h4
The {diffCoeffModel} keyword entry specifies the model for the diffusion
coefficient of dissolved spieces in the fluid phase in the presence of particles.
SyamlalDiffCoeff,
off :tb(c=2,ea=c)

View File

@ -127,6 +127,8 @@ do
sleep 2
done
compileResultAll=0
if [ ! -f "$CWD/$whitelist" ];then
echo "$whitelist does not exist in $CWD"
else
@ -164,7 +166,11 @@ else
casePath="$CFDEM_SOLVER_DIR/$LINE"
#--------------------------------------------------------------------------------#
collectLogCFDEMcoupling_sol $logpath $logfileName $casePath
compileResultOne=$(checkLogCFDEMcoupling_sol $logpath $logfileName $casePath)
compileResultAll=$((compileResultAll+compileResultOne))
done
done
fi
exit $compileResultAll

View File

@ -695,6 +695,35 @@ collectLogCFDEMcoupling_sol()
}
#==================================#
#==================================#
#- function to check compile results
#- from logfiles
checkLogCFDEMcoupling_sol()
{
#--------------------------------------------------------------------------------#
#- define variables
logpath="$1"
logfileName="$2"
casePath="$3"
#--------------------------------------------------------------------------------#
# read name of solver
SOLVERNAME=$(basename $casePath)
# read last line of log
LASTLINE=`tac $logpath/$logfileName | egrep -m 1 .`
LASTSTRING=`echo ${LASTLINE##* }`
LASTWORD=$(basename $LASTSTRING)
# log if compilation was success
if [[ $LASTWORD == $SOLVERNAME ]]; then
echo 0
else
echo 1
fi
}
#==================================#
#==================================#
#- function to replace a line in a file where text consecutive
# the old line must look like: oldWord

View File

@ -13,6 +13,6 @@ cfdemSolverPisoScalar/dir
cfdemSolverRhoPimpleChem/dir
cfdemSolverMultiphase/dir
cfdemSolverMultiphaseScalar/dir
rcfdemSolverRhoSteadyPimpleChem/dir
rctfSpeciesTransport/dir
cfdemSolverPisoFreeStreaming/dir

View File

@ -42,7 +42,7 @@ cfdemCloudEnergy::cfdemCloudEnergy
:
cfdemCloud(mesh),
energyModels_(couplingProperties_.lookup("energyModels")),
massTransferModels_(couplingProperties_.lookup("massTransferModels")),
massTransferModels_(couplingProperties_.lookupOrDefault<wordList>("massTransferModels",wordList::null())),
implicitEnergyModel_(false),
implicitMassTransferModel_(false),
chemistryModels_(couplingProperties_.lookup("chemistryModels")),
@ -193,7 +193,7 @@ const thermCondModel& cfdemCloudEnergy::thermCondM()
const diffCoeffModel& cfdemCloudEnergy::diffCoeffM()
{
return diffCoeffModel_;
}
}
void cfdemCloudEnergy::energyContributions(volScalarField& Qsource)
{

View File

@ -73,7 +73,7 @@ diffCoeffModel::diffCoeffModel
)
{
// build constant fields for single phase case
if (!particleCloud_.multiphase())
if (!particleCloud_.multiphase() && dict_.found("diffCoeffModel"))
{
D0Field_ = volScalarField
(

View File

@ -37,7 +37,7 @@ autoPtr<diffCoeffModel> diffCoeffModel::New
{
word diffCoeffModelType
(
dict.lookup("diffCoeffModel")
dict.lookupOrDefault<word>("diffCoeffModel","off")
);
Info<< "Selecting diffCoeffModel "

View File

@ -189,7 +189,7 @@ void standardRecModel::checkTimeStep()
scalar dTRec2dTCFD = recTimeStep_[i] / timeStep_;
scalar dTRec2dTCFDshifted = dTRec2dTCFD + 0.5;
recTimeStep2CFDTimeStep_[i] = (label) dTRec2dTCFDshifted;
recTimeStep2CFDTimeStep_[i] = static_cast<label>(dTRec2dTCFDshifted);
if (abs(recTimeStep2CFDTimeStep_[i]*timeStep_ - recTimeStep_[i]) > 1e-9)
{
FatalError <<"Time step of database " << i << "is not a multiple of CFD time step.\n" << abort(FatalError);

View File

@ -59,6 +59,9 @@ MarkovPath::MarkovPath
searchMinimum_(propsDict_.lookupOrDefault<bool>("searchMinimum",true)),
currentDatabase_(0),
numIntervals_(base.recM().numIntervals()),
recSteps_(0),
stepsInCurrentDatabase_(0),
startIndex_(propsDict_.lookupOrDefault<label>("startIndex",0)),
correlationSteps_(propsDict_.lookupOrDefault<labelList>("correlationStepsList",labelList(numIntervals_,0))),
intervalSizes_(numIntervals_),
intervalSizesCumulative_(numIntervals_),
@ -66,9 +69,6 @@ MarkovPath::MarkovPath
minIntervalSteps_(propsDict_.lookupOrDefault<labelList>("minIntervalStepsList",labelList(numIntervals_,0))),
minStepsWithinDatabase_(propsDict_.lookupOrDefault<labelList>("minStepsWithinDatabaseList",labelList(numIntervals_,0))),
numberOfIntervalsInEachDatabase_(numIntervals_),
recSteps_(0),
stepsInCurrentDatabase_(0),
startIndex_(propsDict_.lookupOrDefault<label>("startIndex",0)),
intervalWeights_(propsDict_.lookupOrDefault<scalarList>("intervalWeights",scalarList(numIntervals_,1.0))),
intervalWeightsCumulative_(intervalWeights_),
Pjump_(scalarList(numIntervals_,0.0)),

View File

@ -0,0 +1,21 @@
#!/bin/bash
#------------------------------------------------------------------------------
# Allrun script for HeatTransferRanzMarshall test case
# run HeatTransferRanzMarshall
# Daniel Queteschiner - November 2021
#------------------------------------------------------------------------------
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
#- 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
blockMesh
fi
#- run parallel CFD-DEM in new terminal
bash $casePath/parCFDDEMrun.sh

View File

@ -0,0 +1,40 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object Ksl;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -3 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
wall
{
type zeroGradient;
}
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 298.15;
boundaryField
{
wall
{
type fixedValue;
value uniform 298.15;
}
inlet
{
type fixedValue;
value uniform 298.15;
}
outlet
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
wall
{
type slip;
}
inlet
{
type fixedValue;
value uniform (0 0 6);
}
outlet
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,40 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object Us;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
wall
{
type zeroGradient;
}
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

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

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1e5;
boundaryField
{
wall
{
type zeroGradient;
}
inlet
{
// type zeroGradient;
type fixedFluxExtrapolatedPressure;
}
outlet
{
type fixedValue;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,40 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object rho;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -3 0 0 0 0 0];
internalField uniform 1.1854; // air density at 298.15K
boundaryField
{
wall
{
type zeroGradient;
}
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

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

View File

@ -0,0 +1,131 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object couplingProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// sub-models & settings
syncMode false;
modelType "A"; // A or B
couplingInterval 50;
voidFractionModel centre;
locateModel engine;
meshMotionModel noMeshMotion;
regionModel allRegion;
IOModel off;
probeModel off;
dataExchangeModel twoWayMPI;
averagingModel dilute;
clockModel off;
smoothingModel off;
forceModels
(
gradPForce
viscForce
noDrag
);
energyModels
(
heatTransferRanzMarshall
);
//massTransferModels
//(
//);
chemistryModels
(
off
);
momCoupleModels
(
implicitCouple
);
thermCondModel SyamlalThermCond;
//diffCoeffModel off;
turbulenceModelType "turbulenceProperties";
// sub-model properties
heatTransferRanzMarshallProps
{
partTempName "Temp";
partHeatFluxName "convectiveHeatFlux";
calcPartTempField true;
partRefTemp 373.15;
interpolation false;
}
SyamlalThermCondProps
{
}
implicitCoupleProps
{
velFieldName "U";
granVelFieldName "Us";
voidfractionFieldName "voidfraction";
}
gradPForceProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
interpolation true;
}
viscForceProps
{
velocityFieldName "U";
interpolation true;
}
engineProps
{
treeSearch true;
}
centreProps
{
alphaMin 0.01;
}
twoWayMPIProps
{
liggghtsPath "../DEM/in.liggghts_run";
}
// ************************************************************************* //

View File

@ -0,0 +1,22 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ 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,24 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object liggghtsCommands;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
liggghtsCommandModels
(
runLiggghts
);
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type hePsiThermo;
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectGas;
specie specie;
energy sensibleInternalEnergy;
}
mixture
{
specie
{
nMoles 1;
molWeight 28.9;
}
thermodynamics
{
Cv 718;
Hf 0;
}
transport
{
mu 1.85e-05;
Pr 0.73;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,27 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1.56e-05;
kf kf [ 1 1 -3 -1 0 0 0 ] 0.026;
Cp Cp [ 0 2 -2 -1 0 0 0 ] 1007;
// ************************************************************************* //

View File

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

View File

@ -0,0 +1,73 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
vertices
(
( 0.1188 0.1188 0.0 )
(-0.1188 0.1188 0.0 )
(-0.1188 -0.1188 0.0 )
( 0.1188 -0.1188 0.0 )
( 0.1188 0.1188 0.216)
(-0.1188 0.1188 0.216)
(-0.1188 -0.1188 0.216)
( 0.1188 -0.1188 0.216)
);
blocks
(
hex (2 3 0 1 6 7 4 5) (11 11 10) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
inlet
{
type patch;
faces
(
(0 3 2 1)
);
}
outlet
{
type patch;
faces
(
(4 7 6 5)
);
}
wall
{
type wall;
faces
(
(1 0 4 5)
(2 1 5 6)
(3 2 6 7)
(0 3 7 4)
);
}
);
// ************************************************************************* //

View File

@ -0,0 +1,58 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application cfdemSolverRhoPimple;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 20.0;
deltaT 0.00005;
writeControl adjustableRunTime;
writeInterval 0.4;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep no;
maxCo 0.5;
functions
{
}
// ************************************************************************* //

View File

@ -0,0 +1,30 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
note "mesh decomposition control dictionary";
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 2;
method simple;
simpleCoeffs
{
n (1 1 2);
delta 0.001;
}
// ************************************************************************* //

View File

@ -0,0 +1,51 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default Gauss linear;
div(phi,U) Gauss limitedLinearV 1;
div(phi,R) Gauss limitedLinear 1;
div(phi,nuTilda) Gauss limitedLinear 1;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
// ************************************************************************* //

View File

@ -0,0 +1,87 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
"(p|rho|rhoeps)"
{
solver PCG;
preconditioner DIC;
tolerance 1e-06;
relTol 0.1;
}
"(p|rho|rhoeps)Final"
{
$p;
relTol 0;
}
"(U|k|e|epsilon|R|nuTilda)"
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-05;
relTol 0;
}
"(U|e|k|nuTilda)Final"
{
$U;
relTol 0;
}
"(voidfraction|Us|Ksl|dSmoothing|UsNext|voidfractionNext)"
{
solver PCG;
preconditioner DIC;
tolerance 1e-05;
relTol 0;
}
T
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-8;
relTol 0;
}
}
PIMPLE
{
momentumPredictor yes;
nOuterCorrectors 3;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
rhoMin rhoMin [ 1 -3 0 0 0 ] 0.5;
rhoMax rhoMax [ 1 -3 0 0 0 ] 2.0;
pMinFactor 0.5;
pMaxFactor 2.0;
}
relaxationFactors
{
equations
{
".*" 1;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,130 @@
################################################################################
# brief: heat convection between 1 spheres and a fluid #
# #
# Check the temperature evolution of the sphere #
# Cf. J.Musser, Modeling of heat transfer and reactive chemistry for particles #
# in gas-solid flow utilizing continuum-discrete methodology (CDM), PhD (2011) #
# #
# The simulation outputs the temperature of the particles over time #
# #
# authors: Daniel Queteschiner #
# date: Nov 2021 #
# copyright: 2021- JKU Linz #
################################################################################
echo both
# define the attributes associated with the particles,
# 'granular' (or 'sphere') style uses diameter, mass and angular velocity
atom_style granular
# use an array to map particle IDs to local storage index,
atom_modify map array
# set simulation domain to be fixed in x y z
boundary f f f
# save communication by turning off Newton's 3rd law for pairwise interaction,
# note: this setting only influences communication between procs, Newton's
# 3rd law is still used for contact force calculations
newton off
# use a single value for ghost particle cutoff distance and
# enable velocity to be communicated with ghost particles
communicate single vel yes
# set unit system to SI
units si
# define the region used as simulation domain (min/max X, min/max Y, min/max Z)
region domain block -0.1188 0.1188 -0.1188 0.1188 0.0 0.216 units box
# create the simulation domain and 1 material type for particle
create_box 1 domain
# specify the skin distance for neighbor list generation
neighbor 0.001 bin
neigh_modify delay 0
# particle properties
variable z1 equal 0.1080
variable rp1 equal 0.0018 # [m]
variable dp1 equal 2*${rp1}
variable rho1 equal 8850 # [kg/m^3]
variable T10 equal 373.15 # [K]
variable lambda1 equal 0.840147 # [W/(K*m)]
variable cp1 equal 55.0354860 # [J/(kg*K)]
# define the material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype 5.e9
fix m2 all property/global poissonsRatio peratomtype 0.3
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.8
fix m4 all property/global coefficientFriction peratomtypepair 1 0.1
fix m5 all property/global thermalConductivity peratomtype ${lambda1}
fix m6 all property/global thermalCapacity peratomtype ${cp1}
# specify contact model to use
pair_style gran model hertz tangential incremental_history
pair_coeff * *
timestep 0.000001
# granular heat conduction
fix heattransfer all heat/gran initial_temperature ${T10}
# create particle
create_atoms 1 single 0.0 0.0 ${z1} units box
# set diameter and density
set atom 1 diameter ${dp1} density ${rho1}.
# cfd coupling
fix cfd1 all couple/cfd couple_every 50 mpi
fix cfd2 all couple/cfd/force/implicit
fix cfd3 all couple/cfd/convection T0 ${T10}
# output settings
thermo_style custom step atoms f_heattransfer
# set frequency of output
thermo 100000
# ignore particles leaving the simulation domain,
# do not normalize thermodynamic output values by the number of atoms
thermo_modify lost ignore norm no
# set dynamic to 'no' as number of particles does not change
# for a single particle we need to set extra dof to 0 to obtain correct ke
compute_modify thermo_temp dynamic no extra 0
# run 1 time step so that property/atom Temp can be set
run 1
# dump particle data every 400000 time steps
dump dmp all custom/vtk 400000 ../DEM/post/conduction*.vtk id type x y z &
fx fy fz radius f_Temp f_heatFlux
variable time equal time
variable myT atom f_Temp
variable T1 equal v_myT[1]
# analytic solution
variable rhog equal 1.1854 # [kg/m^3]
variable Tg0 equal 298.15 # [K]
variable lambdag equal 0.026 # [W/(K*m)]
variable cpg equal 1007 # [J/(kg*K)]
variable vg equal 6.0 # [m/s]
variable epsilon equal 0.997576 # voidfraction
variable mug equal 0.0000185 # [kg/(m*s)]
variable As equal PI*${dp1}*${dp1} # particle surface area [m^2]
variable tmp equal ${rhog}*${epsilon}*(${vg}-0)*${dp1}/${mug}
variable gammacp equal (${lambdag}/${dp1})*(2.0+0.6*sqrt(${tmp})*(${cpg}*${mug}/${lambdag})^(1/3))#cbrt(${cpg}*${mug}/${lambdag}))
variable T1analytic equal ${Tg0}-(${Tg0}-${T10})*exp(-v_time*(${gammacp}*${As})/(mass[1]*${cp1}))
fix printTemp all print 400000 "${time} ${Tg0} ${T1} ${T1analytic}" &
file ../DEM/post/Temp.dat screen no title "#time Tg0 T1 T1analytic"
run 1

View File

@ -0,0 +1,35 @@
## Particle-fluid convection using the Ranz-Marshall correlation for the Nusselt number
based on
* J.M.H. Musser, Modeling of heat transfer and reactive chemistry for particles
in gas-solid flow utilizing continuum-discrete methodology (CDM), PhD thesis, (2011)
* Z.Y. Zhou, A.B. Yu, P. Zulli, AIChE Journal, 55 (4), (2009)
#### Case parameters for a hot particle and cool air
parameter | value
----------|------
box width | 0.2376 m
box height | 0.216 m
box thickness | 0.2376 m
CFD time step size | 5e-5 s
DEM time step size | 1e-6 s
time simulated | 20 s
number of fluid cells | 11 x 11 x 10
number of particles | 1
fluid density | 1.1854 kg/m3
fluid velocity | 6 m/s
fluid thermal conductivity | 0.026 W/(K m)
fluid heat capacity | 1007 J/(kg K)
fluid initial temperature | 298.15 K
fluid dynamic viscosity | 0.0000185 kg/(m s)
particle diameter | 3.6 mm
particle density | 8850 kg/m3
particle thermal conductivity | 0.84 W/(K m)
particle heat capacity | 55 J/(kg K)
particle initial temperature | 373.15 K
Youngs modulus | 5e9 Pa
Poisson ratio | 0.3
coeff. of restitution | 0.8
coeff. of friction | 0.1

View File

@ -0,0 +1,41 @@
#!/bin/bash
#------------------------------------------------------------------------------
# parCFDDEMrun script for HeatTransferRanzMarshall test case
# run HeatTransferRanzMarshall CFD-DEM
# Daniel Queteschiner - November 2021
#------------------------------------------------------------------------------
#- source CFDEM env vars
. ~/.bashrc
#- include functions
source $CFDEM_PROJECT_DIR/etc/functions.sh
#------------------------------------------------------------------------------
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
logpath=$casePath
headerText="run_parallel_cfdemSolverRhoPimple_HeatTransferRanzMarshall"
logfileName="log_$headerText"
solverName="cfdemSolverRhoPimple"
nrProcs="2"
machineFileName="none" # yourMachinefileName | none
debugMode="off" # on | off| strict
runCleanUp="false"
#------------------------------------------------------------------------------
#- call function to run a parallel CFD-DEM case
parCFDDEMrun $logpath $logfileName $casePath $headerText $solverName $nrProcs $machineFileName $debugMode
if [ $runCleanUp == "true" ]
then
#- clean up case
echo "deleting data at: $casePath :\n"
source $WM_PROJECT_DIR/bin/tools/CleanFunctions
cd $casePath/CFD
cleanCase
rm $casePath/DEM/post/*.*
touch $casePath/DEM/post/.gitignore
fi
echo "done"