Merge pull request #111 from ParticulateFlow/release

Release 20.09
This commit is contained in:
Daniel
2020-10-01 12:33:40 +02:00
committed by GitHub
284 changed files with 224418 additions and 5301615 deletions

View File

@ -1,3 +0,0 @@
rcfdemSolverHeattransfer.C
EXE=$(CFDEM_APP_DIR)/rcfdemSolverHeattransfer

View File

@ -1,27 +0,0 @@
include $(CFDEM_ADD_LIBS_DIR)/additionalLibs
EXE_INC = \
-I$(CFDEM_OFVERSION_DIR) \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/cfdTools \
-I$(CFDEM_SRC_DIR)/recurrence/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/derived/cfdemCloudRec \
EXE_LIBS = \
-L$(CFDEM_LIB_DIR)\
-lrecurrence \
-lturbulenceModels \
-lincompressibleTurbulenceModels \
-lincompressibleTransportModels \
-lfiniteVolume \
-lmeshTools \
-lfvOptions \
-l$(CFDEM_LIB_NAME) \
$(CFDEM_ADD_LIB_PATHS) \
$(CFDEM_ADD_LIBS)

View File

@ -1,40 +0,0 @@
volScalarField rhoeps = rhoRec*voidfractionRec;
particleCloud.energyContributions(Qsource);
particleCloud.energyCoefficients(QCoeff);
K = 0.5*magSqr(URec);
addSource = fvc::ddt(rhoeps, K) + fvc::div(phiRec, K) +
fvc::div
(
fvc::absolute(phiRec/fvc::interpolate(rhoRec), voidfractionRec*URec), pRec
);
fvScalarMatrix TEqn =
(
fvm::ddt(rhoeps, T)
+ fvm::div(phiRec, T)
+ addSource/Cv
- fvm::laplacian(voidfractionRec*thCond/Cv, T)
- Qsource/Cv
- fvm::Sp(QCoeff/Cv, T)
==
fvOptions(rhoeps, T) // no fvOptions support yet
);
//TEqn.relax(relaxCoeff);
fvOptions.constrain(TEqn); // no fvOptions support yet
TEqn.solve();
particleCloud.clockM().start(31,"postFlow");
counter++;
if((counter - couplingSubStep) % dtDEM2dtCFD == 0)
particleCloud.postFlow();
particleCloud.clockM().stop("postFlow");

View File

@ -1,206 +0,0 @@
// dummy fields
Info << "\nCreating dummy pressure field\n" << endl;
volScalarField pRec
(
IOobject
(
"pRec",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
// recurrence fields
Info << "\nCreating recurrence fields.\n" << endl;
volScalarField rhoRec
(
IOobject
(
"rhoRec",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh//,
//dimensionedScalar("rhoRec", dimensionSet(1, -3, 0, 0, 0), 1.0)
);
volVectorField URec
(
IOobject
(
"URec",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
volScalarField voidfractionRec
(
IOobject
(
"voidfractionRec",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
volVectorField UsRec
(
IOobject
(
"UsRec",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
// heat transfer fields
Info << "\nCreating heat transfer fields.\n" << endl;
volScalarField Qsource
(
IOobject
(
"Qsource",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("zero", dimensionSet(1,-1,-3,0,0,0,0), 0.0)
);
volScalarField QCoeff
(
IOobject
(
"QCoeff",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("zero", dimensionSet(1,-1,-3,-1,0,0,0), 0.0)
);
volScalarField thCond
(
IOobject
(
"thCond",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("zero", dimensionSet(1,1,-3,-1,0,0,0), 0.0),
"zeroGradient"
);
volScalarField T
(
IOobject
(
"T",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
// calculated fields
Info << "\nCreating fields subject to calculation\n" << endl;
volScalarField voidfraction
(
IOobject
(
"voidfraction",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
voidfractionRec
);
volVectorField Us
(
IOobject
(
"Us",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
UsRec
);
// write fields for t=t_start
voidfraction.write();
Us.write();
//===============================
Info << "Calculating face flux field phiRec\n" << endl;
surfaceScalarField phiRec
(
IOobject
(
"phiRec",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
linearInterpolate(URec*voidfractionRec*rhoRec) & mesh.Sf()
);
phiRec.write();
singlePhaseTransportModel laminarTransport(URec, phiRec);
autoPtr<incompressible::turbulenceModel> turbulence
(
incompressible::turbulenceModel::New(URec, phiRec, laminarTransport)
);
const IOdictionary& transportProps = mesh.lookupObject<IOdictionary>("transportProperties");
dimensionedScalar Cv(transportProps.lookup("Cv"));
volScalarField addSource
(
IOobject
(
"addSource",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("zero", dimensionSet(1,-1,-3,0,0,0,0), 0.0)
);
Info << "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(URec));

View File

@ -1,128 +0,0 @@
/*---------------------------------------------------------------------------*\
CFDEMcoupling academic - Open Source CFD-DEM coupling
Contributing authors:
Thomas Lichtenegger
Copyright (C) 2015- Johannes Kepler University, Linz
-------------------------------------------------------------------------------
License
This file is part of CFDEMcoupling academic.
CFDEMcoupling academic is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
CFDEMcoupling academic is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with CFDEMcoupling academic. If not, see <http://www.gnu.org/licenses/>.
Application
rcfdemSolverHeattransfer
Description
Solves heat transfer between fluid and particles based on rCFD
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H"
#include "fvOptions.H"
#include "cfdemCloudRec.H"
#include "recBase.H"
#include "recModel.H"
#include "cfdemCloudEnergy.H"
#include "clockModel.H"
#include "thermCondModel.H"
#include "energyModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
#include "postProcess.H"
#include "setRootCase.H"
#include "createTime.H"
#include "createMesh.H"
#include "createControl.H"
#include "createFields.H"
#include "createFvOptions.H"
cfdemCloudRec<cfdemCloudEnergy> particleCloud(mesh);
recBase recurrenceBase(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info << "\nCalculating particle trajectories based on recurrence statistics\n" << endl;
label recTimeIndex = 0;
scalar recTimeStep = recurrenceBase.recM().recTimeStep();
scalar startTime = runTime.startTime().value();
// control coupling behavior in case of substepping
// assumes constant timestep size
label counter = 0;
label couplingSubStep = recurrenceBase.couplingSubStep();//5;//3;
double dtProp = particleCloud.dataExchangeM().couplingTime() / runTime.deltaTValue();
label dtDEM2dtCFD = int(dtProp + 0.5);
Info << "deltaT_DEM / deltaT_CFD = " << dtDEM2dtCFD << endl;
if (dtDEM2dtCFD > 1)
Info << "coupling at substep " << couplingSubStep << endl;
while (runTime.run())
{
runTime++;
// do stuff (every lagrangian time step)
particleCloud.clockM().start(1,"Global");
Info << "Time = " << runTime.timeName() << nl << endl;
particleCloud.clockM().start(2,"Coupling");
particleCloud.evolve(voidfraction,Us,URec);
particleCloud.clockM().stop("Coupling");
particleCloud.clockM().start(26,"Flow");
#include "TEqImp.H"
particleCloud.clockM().stop("Flow");
particleCloud.clockM().start(32,"ReadFields");
if ( runTime.timeOutputValue() - startTime - (recTimeIndex+1)*recTimeStep + 1.0e-5 > 0.0 )
{
recurrenceBase.updateRecFields();
#include "updateFields.H"
recTimeIndex++;
}
particleCloud.clockM().stop("ReadFields");
particleCloud.clockM().start(33,"Output");
runTime.write();
particleCloud.clockM().stop("Output");
particleCloud.clockM().stop("Global");
Info << "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
}
Info << "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -1,14 +0,0 @@
recurrenceBase.recM().exportVolScalarField("voidfraction",voidfractionRec);
recurrenceBase.recM().exportVolScalarField("rho",rhoRec);
recurrenceBase.recM().exportVolScalarField("p",pRec);
recurrenceBase.recM().exportVolVectorField("Us",UsRec);
recurrenceBase.recM().exportVolVectorField("U",URec);
recurrenceBase.recM().exportSurfaceScalarField("phi",phiRec);
{
volScalarField& NuField(const_cast<volScalarField&>(mesh.lookupObject<volScalarField> ("NuField")));
recurrenceBase.recM().exportVolScalarField("NuField",NuField);
}
#include "updateRho.H"

View File

@ -1,32 +0,0 @@
// work-around for transient properties
// needs to be specified for each case
// case 1
forAll(rhoRec,cellI)
{
if (mesh.C()[cellI].z() < 0.00228)
rhoRec[cellI] = 1.18+(1.085-1.18)*Foam::exp(-0.065*runTime.timeOutputValue());
else if (mesh.C()[cellI].z() < 0.00456)
rhoRec[cellI] = 1.18+(1.01-1.18)*Foam::exp(-0.05*runTime.timeOutputValue());
else if (mesh.C()[cellI].z() < 0.00684)
rhoRec[cellI] = 1.18+(0.98-1.18)*Foam::exp(-0.0425*runTime.timeOutputValue());
else
rhoRec[cellI] = 1.18+(0.955-1.18)*Foam::exp(-0.0425*runTime.timeOutputValue());
}
// case 2
/*
forAll(rhoRec,cellI)
{
if (mesh.C()[cellI].z() < 0.00228)
rhoRec[cellI] = 1.18+(1.115-1.18)*Foam::exp(-0.065*runTime.timeOutputValue());
else if (mesh.C()[cellI].z() < 0.00456)
rhoRec[cellI] = 1.18+(1.04-1.18)*Foam::exp(-0.05*runTime.timeOutputValue());
else if (mesh.C()[cellI].z() < 0.00684)
rhoRec[cellI] = 1.18+(1.005-1.18)*Foam::exp(-0.0425*runTime.timeOutputValue());
else
rhoRec[cellI] = 1.18+(0.96-1.18)*Foam::exp(-0.0425*runTime.timeOutputValue());
}
*/

View File

@ -18,7 +18,6 @@ This section lists all CFDEMcoupling solvers alphabetically.
rStatAnalysis,
rcfdemSolverBase,
rcfdemSolverCoupledHeattransfer,
rcfdemSolverHeattransfer,
rcfdemSolverRhoSteadyPimple,
recSolverTurbTransport,
rtfmSolverSpecies,

View File

@ -22,11 +22,14 @@ particleCellVolumeProps
lowerThreshold scalar2;
startTime scalar3;
verbose;
writeToFile switch1;
\} :pre
{scalar1} = only cells with a field value (magnitude) lower than this upper threshold are considered :l
{scalar2} = only cells with a field value (magnitude) greater than this lower threshold are considered :l
{scalar3} = (optional, default 0) start time of volume calculation and output :l
{verbose} = (optional, default false) keyword only (mostly used for debugging) :l
{switch1} = (optional, default false) switch for file output :l
:ule
[Examples:]

View File

@ -30,6 +30,7 @@ volWeightedAverageProps
upperThreshold scalar1;
lowerThreshold scalar2;
verbose;
writeToFile switch1;
\} :pre
{time} = (optional, default 0.) time to start the averaging :ulb,l
@ -38,6 +39,7 @@ volWeightedAverageProps
{scalar1} = only cells with a field value (magnitude) lower than this upper threshold are considered :l
{scalar2} = only cells with a field value (magnitude) greater than this lower threshold are considered :l
{verbose} = (optional, default false) keyword only (mostly used for debugging) :l
{switch1} = (optional, default false) switch for file output :l
:ule
[Examples:]

View File

@ -17,7 +17,7 @@
#------------------------------------------------------------------------------
export CFDEM_PROJECT=CFDEM
export CFDEM_VERSION=20.05
export CFDEM_VERSION=20.09
################################################################################
# USER EDITABLE PART: Changes made here may be lost with the next upgrade
@ -199,6 +199,9 @@ alias cfdemCleanCFDEM='bash $CFDEM_PROJECT_DIR/etc/cleanCFDEMcoupling.sh'
#- shortcut to compile LIGGGHTS + sublibraries
alias cfdemCompLIG='bash $CFDEM_PROJECT_DIR/etc/compileLIGGGHTS.sh'
#- shortcut to compile LIGGGHTS sublibraries
alias cfdemCompLIGlib='bash $CFDEM_PROJECT_DIR/etc/compileLIGGGHTS_lib.sh'
#- shortcut to compile CFDEMcoupling +LIGGGHTS
alias cfdemCompCFDEMall='bash $CFDEM_PROJECT_DIR/etc/compileCFDEMcoupling_all.sh'

View File

@ -15,7 +15,7 @@
#------------------------------------------------------------------------------
setenv CFDEM_PROJECT CFDEM
setenv CFDEM_VERSION 20.05
setenv CFDEM_VERSION 20.09
################################################################################
# USER EDITABLE PART: Changes made here may be lost with the next upgrade
@ -232,6 +232,9 @@ alias cfdemCleanCFDEM 'bash $CFDEM_PROJECT_DIR/etc/cleanCFDEMcoupling.sh'
#- shortcut to compile LIGGGHTS + sublibraries
alias cfdemCompLIG 'bash $CFDEM_PROJECT_DIR/etc/compileLIGGGHTS.sh'
#- shortcut to compile LIGGGHTS sublibraries
alias cfdemCompLIGlib 'bash $CFDEM_PROJECT_DIR/etc/compileLIGGGHTS_lib.sh'
#- shortcut to compile CFDEMcoupling +LIGGGHTS
alias cfdemCompCFDEMall 'bash $CFDEM_PROJECT_DIR/etc/compileCFDEMcoupling_all.sh'

View File

@ -1,5 +1,4 @@
rcfdemSolverRhoSteadyPimple/dir
rcfdemSolverHeattransfer/dir
rcfdemSolverCoupledHeattransfer/dir
rStatAnalysis/dir
rcfdemSolverBase/dir

View File

@ -34,8 +34,8 @@ Description
#ifndef versionInfo_H
#define versionInfo_H
word CFDEMversion="PFM 20.05";
word compatibleLIGGGHTSversion="PFM 20.05";
word CFDEMversion="PFM 20.09";
word compatibleLIGGGHTSversion="PFM 20.09";
word OFversion="6";
Info << "\nCFDEMcoupling version: " << CFDEMversion << endl;

View File

@ -84,10 +84,12 @@ cfdemCloud::cfdemCloud
ignore_(couplingProperties_.found("ignore")),
allowCFDsubTimestep_(true),
limitDEMForces_(couplingProperties_.found("limitDEMForces")),
phaseInForces_(couplingProperties_.found("phaseInForcesTime")),
getParticleDensities_(couplingProperties_.lookupOrDefault<bool>("getParticleDensities",false)),
getParticleEffVolFactors_(couplingProperties_.lookupOrDefault<bool>("getParticleEffVolFactors",false)),
getParticleTypes_(couplingProperties_.lookupOrDefault<bool>("getParticleTypes",false)),
maxDEMForce_(0.),
phaseInForcesTime_(couplingProperties_.lookupOrDefault<scalar>("phaseInForcesTime",0.0)),
modelType_(couplingProperties_.lookup("modelType")),
positions_(NULL),
velocities_(NULL),
@ -368,6 +370,12 @@ cfdemCloud::cfdemCloud
if (verbose_) Info << "nPatchesNonCyclic=" << nPatchesNonCyclic << ", nPatchesCyclic=" << nPatchesCyclic << endl;
Warning << "Periodic handing is disabled because the domain is not fully periodic!\n" << endl;
}
// check if phasing-in time existing and is meaningful
if (phaseInForces_ && phaseInForcesTime_ < SMALL)
{
FatalError << "phasing-in time too small" << endl;
}
}
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * //
@ -468,6 +476,19 @@ void cfdemCloud::setForces()
}
Info << "largest particle-fluid interaction on particle: " << maxF << endl;
}
if (phaseInForces_)
{
scalar tfrac = (mesh_.time().timeOutputValue()-mesh_.time().startTime().value())/phaseInForcesTime_;
if (tfrac <= 1.0)
{
for (int index = 0;index < numberOfParticles(); ++index)
{
for(int i=0;i<3;i++) DEMForces_[index][i] *= tfrac;
Cds_[index][0] *= tfrac;
}
}
}
}
void cfdemCloud::setParticleForceField()

View File

@ -96,6 +96,8 @@ protected:
const bool limitDEMForces_;
const bool phaseInForces_;
const bool getParticleDensities_;
const bool getParticleEffVolFactors_;
@ -104,6 +106,8 @@ protected:
scalar maxDEMForce_;
scalar phaseInForcesTime_;
const word modelType_;
double **positions_; // particle positions

View File

@ -966,6 +966,10 @@ void twoWayOne2One::extractCollected(T*& src, T**& dst, int width) const
}
}
int twoWayOne2One::getNumberOfParticles() const
{
return particleCloud_.numberOfParticles();
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -208,6 +208,8 @@ public:
template <typename T>
void extractCollected(T*&, T**&, int width=1) const;
int getNumberOfParticles() const;
scalar getCG() const { return lmp->force->cg(); }
};

View File

@ -54,7 +54,11 @@ FinesFields::FinesFields
velFieldName_(propsDict_.lookupOrDefault<word>("velFieldName","U")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
voidfractionFieldName_(propsDict_.lookupOrDefault<word>("voidfractionFieldName","voidfraction")),
#if OPENFOAM_VERSION_MAJOR < 5
voidfraction_(const_cast<volScalarField&>(sm.mesh().lookupObject<volScalarField>(voidfractionFieldName_))),
#else
voidfraction_(sm.mesh().lookupObjectRef<volScalarField> (voidfractionFieldName_)),
#endif
UsFieldName_(propsDict_.lookupOrDefault<word>("granVelFieldName","Us")),
UsField_(sm.mesh().lookupObject<volVectorField> (UsFieldName_)),
pFieldName_(propsDict_.lookupOrDefault<word>("pFieldName","p")),
@ -224,7 +228,7 @@ FinesFields::FinesFields
g_("g",dimensionSet(0,1,-2,0,0),vector(0,0,-9.81)),
alphaDynMax_(0.1),
alphaMax_(propsDict_.lookupOrDefault<scalar>("alphaMax",0.95)),
alphaMinClog_(propsDict_.lookupOrDefault<scalar>("alphaMinClog",0.3)),
alphaMinClog_(propsDict_.lookupOrDefault<scalar>("alphaMinClog",0.1)),
critVoidfraction_(propsDict_.lookupOrDefault<scalar>("critVoidfraction", 0.05)),
deltaT_(voidfraction_.mesh().time().deltaTValue()),
depositionLength_(0.0),
@ -412,7 +416,7 @@ void FinesFields::calcSource()
{
fKin = 0.0;
fStick = 0.0;
if (clogKin_ && alphaP_[cellI] > alphaMinClog_) // no kinetic cloggig in dilute regions
if (clogKin_ && alphaP_[cellI] > alphaMinClog_) // no cloggig in dilute regions
{
// calculate everything in units auf dSauter
critpore = nCrit_*dFine_.value()/dSauter_[cellI];
@ -428,7 +432,7 @@ void FinesFields::calcSource()
else if (fKin > 1.0) fKin = 1.0;
}
if (clogStick_)
if (clogStick_ && alphaP_[cellI] > alphaMinClog_) // no cloggig in dilute regions
{
magU = mag(uReconstructed_()[cellI]); // use U reconstructed from phi to suppress oscillations at interfaces
// fStick = 1.0 / ( 1.0 + magU/uBind_) * alphaP_[cellI] / 0.65;

View File

@ -66,7 +66,9 @@ SchillerNaumannDrag::SchillerNaumannDrag
propsDict_(dict.subDict(typeName + "Props")),
verbose_(propsDict_.found("verbose")),
velFieldName_(propsDict_.lookup("velFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_))
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
scaleDia_(1.),
scaleDrag_(1.)
{
//Append the field names to be probed
particleCloud_.probeM().initialize(typeName, typeName+".logDat");
@ -85,7 +87,12 @@ SchillerNaumannDrag::SchillerNaumannDrag
// read those switches defined above, if provided in dict
forceSubM(0).readSwitches();
particleCloud_.checkCG(false);
particleCloud_.checkCG(true);
if (propsDict_.found("scale"))
scaleDia_ = scalar(readScalar(propsDict_.lookup("scale")));
if (propsDict_.found("scaleDrag"))
scaleDrag_ = scalar(readScalar(propsDict_.lookup("scaleDrag")));
}
@ -99,6 +106,16 @@ SchillerNaumannDrag::~SchillerNaumannDrag()
void SchillerNaumannDrag::setForce() const
{
if (scaleDia_ > 1.0)
{
Info << "SchillerNaumann using scale = " << scaleDia_ << endl;
}
else if (particleCloud_.cg() > 1.0)
{
scaleDia_ = particleCloud_.cg();
Info << "SchillerNaumann using scale from liggghts cg = " << scaleDia_ << endl;
}
#include "setupProbeModel.H"
const volScalarField& nufField = forceSubM(0).nuField();
@ -117,6 +134,7 @@ void SchillerNaumannDrag::setForce() const
vector Us = particleCloud_.velocity(index);
vector Ur = U_[cellI]-Us;
scalar ds = 2*particleCloud_.radius(index);
scalar ds_scaled = ds/scaleDia_;
scalar nuf = nufField[cellI];
scalar rho = rhoField[cellI];
scalar voidfraction = particleCloud_.voidfraction(index);
@ -127,30 +145,33 @@ void SchillerNaumannDrag::setForce() const
if (magUr > 0)
{
// calc particle Re Nr
Rep = ds*magUr/nuf;
Rep = ds_scaled*magUr/nuf;
// calc fluid drag Coeff
Cd = max(0.44,24.0/Rep*(1.0+0.15*pow(Rep,0.687)));
// calc particle's drag
drag = 0.125*Cd*rho*M_PI*ds*ds*magUr*Ur;
drag = 0.125*Cd*rho*M_PI*ds*ds*scaleDia_*magUr*Ur*scaleDrag_;
if (modelType_=="B")
drag /= voidfraction;
}
if(verbose_ && index >100 && index <102)
if(verbose_ && index >=100 && index <102)
{
Info << "index = " << index << endl;
Info << "Us = " << Us << endl;
Info << "Ur = " << Ur << endl;
Info << "ds = " << ds << endl;
Info << "rho = " << rho << endl;
Info << "nuf = " << nuf << endl;
Info << "voidfraction = " << voidfraction << endl;
Info << "Rep = " << Rep << endl;
Info << "Cd = " << Cd << endl;
Info << "drag = " << drag << endl;
Pout << "cellI = " << cellI << endl;
Pout << "index = " << index << endl;
Pout << "Ufluid = " << U_[cellI] << endl;
Pout << "Us = " << Us << endl;
Pout << "Ur = " << Ur << endl;
Pout << "ds = " << ds << endl;
Pout << "ds/scale = " << ds_scaled << endl;
Pout << "rho = " << rho << endl;
Pout << "nuf = " << nuf << endl;
Pout << "voidfraction = " << voidfraction << endl;
Pout << "Rep = " << Rep << endl;
Pout << "Cd = " << Cd << endl;
Pout << "drag = " << drag << endl;
}
//Set value fields and write the probe

View File

@ -66,6 +66,10 @@ private:
const volVectorField& U_;
mutable scalar scaleDia_;
mutable scalar scaleDrag_;
public:
//- Runtime type information

View File

@ -94,8 +94,17 @@ particleCellVolume::particleCellVolume
),
upperThreshold_(readScalar(propsDict_.lookup("upperThreshold"))),
lowerThreshold_(readScalar(propsDict_.lookup("lowerThreshold"))),
verbose_(propsDict_.found("verbose"))
verbose_(propsDict_.found("verbose")),
writeToFile_(propsDict_.lookupOrDefault<Switch>("writeToFile",false)),
filePtr_()
{
// create the path and output file
if(writeToFile_)
{
fileName path(particleCloud_.IOM().createTimeDir("postProcessing/particleCellVolume"));
filePtr_.set(new OFstream(path/"particleCellVolume.txt"));
filePtr_() << "# time | total particle volume in cells | total volume of cells with particles | average volume fraction | min(voidfraction) | max(voidfraction)" << endl;
}
}
@ -120,6 +129,8 @@ void particleCellVolume::setForce() const
scalar fieldValue=-1;
scalar cellVol=-1;
scalar minFieldVal=1e18;
scalar maxFieldVal=-1e18;
forAll(field,cellI)
{
@ -129,6 +140,8 @@ void particleCellVolume::setForce() const
cellVol = mesh_.V()[cellI];
scalarField_[cellI] = (1-fieldValue) * cellVol;
scalarField2_[cellI] = cellVol;
minFieldVal = min(minFieldVal, fieldValue);
maxFieldVal = max(maxFieldVal, fieldValue);
}
else
{
@ -138,6 +151,8 @@ void particleCellVolume::setForce() const
}
scalarField_.ref() = gSum(scalarField_);
scalarField2_.ref() = gSum(scalarField2_);
reduce(minFieldVal, minOp<scalar>());
reduce(maxFieldVal, maxOp<scalar>());
if(verbose_)
{
@ -147,8 +162,20 @@ void particleCellVolume::setForce() const
<< ", and > " << lowerThreshold_
<< ",\n the total volume of cells holding particles = " << scalarField2_[0]
<< ",\n this results in an average volume fraction of:" << scalarField_[0]/(scalarField2_[0]+SMALL)
<< ",\n the min occurring " << scalarFieldName_ << " is:" << minFieldVal
<< ",\n the max occurring " << scalarFieldName_ << " is:" << maxFieldVal
<< endl;
}
if(writeToFile_)
{
filePtr_() << mesh_.time().value() << " "
<< scalarField_[0] << " "
<< scalarField2_[0] << " "
<< scalarField_[0]/(scalarField2_[0]+SMALL) << " "
<< minFieldVal << " "
<< maxFieldVal << endl;
}
}// end if time >= startTime_
}

View File

@ -74,6 +74,10 @@ private:
const Switch verbose_;
const Switch writeToFile_;
mutable autoPtr<OFstream> filePtr_;
public:
//- Runtime type information

View File

@ -69,7 +69,9 @@ volWeightedAverage::volWeightedAverage
vectorFieldNames_(propsDict_.lookup("vectorFieldNames")),
upperThreshold_(readScalar(propsDict_.lookup("upperThreshold"))),
lowerThreshold_(readScalar(propsDict_.lookup("lowerThreshold"))),
verbose_(propsDict_.found("verbose"))
verbose_(propsDict_.found("verbose")),
writeToFile_(propsDict_.lookupOrDefault<Switch>("writeToFile", false)),
filePtr_()
{
// create vol weighted average scalar fields
scalarFields_.setSize(scalarFieldNames_.size());
@ -124,6 +126,13 @@ volWeightedAverage::volWeightedAverage
)
);
}
// create the path and output file
if(writeToFile_)
{
fileName path(particleCloud_.IOM().createTimeDir("postProcessing/volWeightedAverage"));
filePtr_.set(new OFstream(path/"volWeightedAverage.txt"));
}
}
@ -141,6 +150,8 @@ void volWeightedAverage::setForce() const
{
if(verbose_) Info << "volWeightedAverage.C - setForce()" << endl;
if(writeToFile_) filePtr_() << mesh_.time().value() << " ";
for (int i=0;i < scalarFieldNames_.size(); i++)
{
// get reference to actual field
@ -171,7 +182,7 @@ void volWeightedAverage::setForce() const
MPI_Allreduce(&totVol, &totVol_all, 3, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
integralValue = gSum(scalarFields_[i]);
volWeightedAverage = integralValue / (totVol_all+SMALL);
scalarFields_[i].ref() = volWeightedAverage;
scalarFields_[i].primitiveFieldRef() = volWeightedAverage;
if(verbose_)
{
@ -184,6 +195,8 @@ void volWeightedAverage::setForce() const
<< ",\n considering cells where the field < " << upperThreshold_
<< ", and > " << lowerThreshold_ << endl;
}
if(writeToFile_) filePtr_() << volWeightedAverage << " ";
}
for (int i=0;i < vectorFieldNames_.size(); i++)
@ -225,7 +238,11 @@ void volWeightedAverage::setForce() const
<< ",\n considering cells where the mag(field) < " << upperThreshold_
<< ", and > " << lowerThreshold_ << endl;
}
if(writeToFile_) filePtr_() << volWeightedAverage << " ";
}
if(writeToFile_) filePtr_() << endl;
}// end if time >= startTime_
}

View File

@ -76,6 +76,10 @@ private:
const Switch verbose_;
const Switch writeToFile_;
mutable autoPtr<OFstream> filePtr_;
public:
//- Runtime type information

View File

@ -261,9 +261,9 @@ void trilinearVoidFraction::setvoidFraction(double** const& mask,double**& voidf
// find x,y,z
// TODO changes needed here when generalized for quader cells
offsetOrigin = particleCloud_.mesh().C()[i000] - (partPos + posShift);
x = mag(offsetOrigin[0]) / cellLength_;
y = mag(offsetOrigin[1]) / cellLength_;
z = mag(offsetOrigin[2]) / cellLength_;
x = std::min(1.0, mag(offsetOrigin[0]) / cellLength_);
y = std::min(1.0, mag(offsetOrigin[1]) / cellLength_);
z = std::min(1.0, mag(offsetOrigin[2]) / cellLength_);
// calculate the mapping coeffs
C000 = (1 - x) * (1 - y) * (1 - z);
@ -350,12 +350,6 @@ void trilinearVoidFraction::setvoidFraction(double** const& mask,double**& voidf
alphaLimited = true;
}
if(index==0 && alphaLimited) Info<<"alpha limited to" <<alphaMin_<<endl;*/
// store voidFraction for each particle
voidfractions[index][0] = voidfractionNext_[cellI];
// store cellweight for each particle - this should not live here
particleWeights[index][0] = 1.;
}
}
voidfractionNext_.correctBoundaryConditions();
@ -363,23 +357,18 @@ void trilinearVoidFraction::setvoidFraction(double** const& mask,double**& voidf
// bring voidfraction from Eulerian Field to particle array
for (int index = 0; index < particleCloud_.numberOfParticles(); ++index)
{
label cellID = particleCloud_.cellIDs()[index][0];
for (int subcell = 0; subcell < maxCellsPerParticle_; ++subcell)
{
label cellID = particleCloud_.cellIDs()[index][subcell];
if (cellID >= 0)
{
voidfractions[index][0] = voidfractionNext_[i000];
voidfractions[index][1] = voidfractionNext_[i100];
voidfractions[index][2] = voidfractionNext_[i110];
voidfractions[index][3] = voidfractionNext_[i010];
voidfractions[index][4] = voidfractionNext_[i001];
voidfractions[index][5] = voidfractionNext_[i101];
voidfractions[index][6] = voidfractionNext_[i111];
voidfractions[index][7] = voidfractionNext_[i011];
voidfractions[index][subcell] = voidfractionNext_[cellID];
}
else
{
for (int i = 0; i < 8; ++i)
voidfractions[index][i] = -1.;
voidfractions[index][subcell] = -1.;
}
}
}
}

View File

@ -0,0 +1,122 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / 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;
modelType "A";
couplingInterval 100;
voidFractionModel divided;
locateModel engineSearchMany2Many;
meshMotionModel noMeshMotion;
regionModel allRegion;
IOModel basicIO;
probeModel off;
dataExchangeModel twoWayOne2One;
averagingModel dense;
clockModel standardClock;
smoothingModel off;
forceModels
(
gradPForce
viscForce
KochHillDrag
);
momCoupleModels
(
implicitCouple
);
turbulenceModelType "turbulenceProperties";
//===========================================================================//
// sub-model properties
dividedProps
{
alphaMin 0.01;
scaleUpVol 1.0;
}
engineSearchMany2ManyProps
{
engineProps
{
treeSearch true;
}
}
twoWayOne2OneProps
{
liggghtsPath "../DEM/in.liggghts_run";
verbose true;
}
gradPForceProps
{
pFieldName "p";
voidfractionFieldName "voidfraction";
velocityFieldName "U";
interpolation true;
}
viscForceProps
{
velocityFieldName "U";
interpolation true;
}
KochHillDragProps
{
verbose true;
velFieldName "U";
voidfractionFieldName "voidfraction";
interpolation true;
implForceDEM true;
}
implicitCoupleProps
{
velFieldName "U";
granVelFieldName "Us";
voidfractionFieldName "voidfraction";
}
// ************************************************************************* //

View File

@ -0,0 +1,67 @@
# Pour granular particles into a cylinder, then induce flow
log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt
atom_style granular
atom_modify map array
communicate single vel yes
boundary m m m
newton off
units si
processors 2 2 1
# read the restart file
read_restart ../DEM/post/restart/liggghts.restart
neighbor 0.0005 bin
neigh_modify delay 0
# Material properties required for granular pair styles
fix m1 all property/global youngsModulus peratomtype 5.e6
fix m2 all property/global poissonsRatio peratomtype 0.45
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style
pair_style gran model hertz tangential history
pair_coeff * *
# timestep, gravity
timestep 0.00001
fix gravi all gravity 9.81 vector 0.0 0.0 -1.0
# walls
fix zwalls1 all wall/gran model hertz tangential history primitive type 1 zplane 0.0
fix zwalls2 all wall/gran model hertz tangential history primitive type 1 zplane 0.0553
fix cylwalls all wall/gran model hertz tangential history primitive type 1 zcylinder 0.01385 0. 0.
# change the particles density
set group all density 2000
# cfd coupling
fix cfd all couple/cfd couple_every 100 one2one
fix cfd2 all couple/cfd/force/implicit
#fix cfd2 all couple/cfd/force/implicit/accumulated #CrankNicolson 0.5
# 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 10
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
dump dmp all custom 5000 ../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
run 1

View File

@ -0,0 +1,16 @@
#!/bin/bash
cp ./CFD/constant/couplingProperties.one2one ./CFD/constant/couplingProperties
cp ./DEM/in.liggghts_run.one2one ./DEM/in.liggghts_run
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
# check if mesh was built
if [ -f "$casePath/CFD/constant/polyMesh/boundary" ]; then
echo "mesh was built before - using old mesh"
else
echo "mesh needs to be built"
cd $casePath/CFD
blockMesh
fi

View File

@ -14,6 +14,15 @@
"nprocs" : 4,
"pre_scripts" : ["prerun.sh"],
"post_scripts" : ["postrun.sh"]
},
{
"name" : "cfdemrun-one2one",
"depends_on" : "liggghts-init",
"solver" : "cfdemSolverPiso",
"type" : "CFDEMcoupling/mpi",
"nprocs" : 4,
"pre_scripts" : ["prerun_one2one.sh"],
"post_scripts" : ["postrun.sh"]
}
]
}

View File

@ -0,0 +1,22 @@
#!/bin/bash
#===================================================================#
# allrun script for testcase as part of test routine
# run voidfractionTest
# Christoph Goniva - Jan. 2016
#===================================================================#
#- 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
. $casePath/parCFDDEMrun.sh

View File

@ -0,0 +1,32 @@
/*--------------------------------*- 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
{
"(inlet|outlet|walls)"
{
type zeroGradient;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -11,7 +11,7 @@ FoamFile
format ascii;
class volVectorField;
location "0";
object Us;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -21,24 +21,20 @@ internalField uniform (0 0 0);
boundaryField
{
walls
{
type zeroGradient;
}
nozzle
{
type zeroGradient;
}
inlet
{
type zeroGradient;
type fixedValue;
value uniform (0 0 0);
}
outlet
{
type zeroGradient;
value uniform (0 0 0);
}
walls
{
type fixedValue;
value uniform (0 0 0);
}
}

View File

@ -21,24 +21,10 @@ internalField uniform (0 0 0);
boundaryField
{
walls
{
type zeroGradient;
}
nozzle
{
type zeroGradient;
}
inlet
{
type zeroGradient;
}
outlet
"(inlet|outlet|walls)"
{
type zeroGradient;
value uniform (0 0 0);
}
}

View File

@ -2,7 +2,7 @@
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
@ -10,11 +10,11 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
object addSource;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -3 0 0 0 0];
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
@ -25,7 +25,6 @@ boundaryField
type zeroGradient;
value uniform 0;
}
inlet
{
type zeroGradient;
@ -33,15 +32,15 @@ boundaryField
}
outlet
{
type zeroGradient;
value uniform 0;
}
nozzle
{
type zeroGradient;
type totalPressure;
p0 uniform 0;
U U;
phi phi;
rho rho;
psi none;
gamma 1;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -10,35 +10,20 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
object rho;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -3 0 0 0 0 0];
internalField uniform 1.1885;
internalField uniform 10;
boundaryField
{
walls
{
type zeroGradient;
}
nozzle
{
type zeroGradient;
}
inlet
{
type fixedValue;
value uniform 1.1885;
}
outlet
"(inlet|outlet|walls)"
{
type zeroGradient;
value uniform 10;
}
}

View File

@ -10,35 +10,20 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
object rho;
object voidfraction;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -3 0 0 0 0 0];
dimensions [0 0 0 0 0 0 0];
internalField uniform 1.1885;
internalField uniform 1;
boundaryField
{
walls
{
type zeroGradient;
}
nozzle
{
type zeroGradient;
}
inlet
{
type fixedValue;
value uniform 1.1885;
}
outlet
"(inlet|outlet|walls)"
{
type zeroGradient;
value uniform 1;
}
}

View File

@ -0,0 +1,137 @@
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / 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
solveFlow off;
useDDTvoidfraction;
modelType B;
couplingInterval 100;
voidFractionModel trilinear;
locateModel engine;
meshMotionModel noMeshMotion;
IOModel basicIO;
probeModel off;
dataExchangeModel twoWayMPI;
averagingModel dense;
clockModel off;
smoothingModel off;
forceModels
(
DiFeliceDrag
Archimedes
noDrag
particleCellVolume
volWeightedAverage
);
momCoupleModels
(
implicitCouple
);
turbulenceModelType "turbulenceProperties";
//===========================================================================//
// sub-model properties
noDragProps
{
}
particleCellVolumeProps
{
upperThreshold 1e20;
lowerThreshold 0.;
verbose true;
writeToFile true;
}
volWeightedAverageProps
{
scalarFieldNames
(
ddtVoidfraction
);
vectorFieldNames
(
);
upperThreshold 1e20;
lowerThreshold 0;
writeToFile true;
verbose true;
}
implicitCoupleProps
{
velFieldName "U";
granVelFieldName "Us";
voidfractionFieldName "voidfraction";
}
DiFeliceDragProps
{
velFieldName "U";
voidfractionFieldName "voidfraction";
granVelFieldName "Us";
verbose false;
}
ArchimedesProps
{
densityFieldName "rho";
gravityFieldName "g";
}
twoWayMPIProps
{
liggghtsPath "../DEM/in.liggghts_run";
}
trilinearProps
{
alphaMin 0.3; // unused!
}
engineProps
{
treeSearch true;
}
// ************************************************************************* //

View File

@ -16,7 +16,7 @@ FoamFile
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -2 0 0 0 0];
value ( 0 0 -9.81 );
value ( 0 -9.81 0);
// ************************************************************************* //

View File

@ -26,17 +26,7 @@ FoamFile
liggghtsCommandModels
(
runLiggghts
writeLiggghts
);
// ************************************************************************* //
/*runLiggghtsProps
{
preNo false;
}
writeLiggghtsProps
{
writeLast off;
overwrite off;
}*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -14,14 +14,25 @@ FoamFile
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1.6e-05;
nu nu [ 0 2 -1 0 0 0 0 ] 1e-05;
kf kf [ 1 1 -3 -1 0 0 0 ] 0.026;
CrossPowerLawCoeffs
{
nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06;
nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
m m [ 0 0 1 0 0 0 0 ] 1;
n n [ 0 0 0 0 0 0 0 ] 1;
}
Cp Cp [ 0 2 -2 -1 0 0 0 ] 1005;
Cv Cv [ 0 2 -2 -1 0 0 0 ] 718;
BirdCarreauCoeffs
{
nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06;
nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
k k [ 0 0 1 0 0 0 0 ] 0;
n n [ 0 0 0 0 0 0 0 ] 1;
}
// ************************************************************************* //

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/

View File

@ -0,0 +1,59 @@
%test
close all;
clear;
clc;
%====================================%
% simulation data
%====================================%
path = '../postProcessing/particleCellVolume/0/particleCellVolume.txt';
data = load(path);
Vp_sim = data(:,2);
t_sim = data(:,1);
path = '../postProcessing/volWeightedAverage/0/volWeightedAverage.txt';
data = load(path);
volAvDdtVoidFraction_sim = data(:,2);
t_sim = data(:,1);
%====================================%
dp=2*0.0015;
vp=0.3
deltaT=0.001 % coupling time
%====================================%
% analytical calculation
%====================================%
Vp=dp*dp*dp*pi/6;
np=1000;
Vptot=np*Vp
kernelSize=8
Vc=(0.1/10)^3*kernelSize
Vp=dp^3*pi/6
deltaVpdt=Vp*(deltaT*vp)/dp
avg_ddt_voidfraction=deltaVpdt/(Vc*deltaT)
%====================================%
% plot data
%====================================%
figure(1)
plot(t_sim,(Vp_sim./Vptot)*100,'r-')
hold on;
%legend("error")
title("particle volume represented in cells");
grid on;
xlabel("time in s");
ylabel("particle cell volume / particle volume in %");
print('-dpng','-r450', 'particleCellVolume')
figure(2)
plot(t_sim,volAvDdtVoidFraction_sim,'r-',[min(t_sim),max(t_sim)],[avg_ddt_voidfraction,avg_ddt_voidfraction],'b-')
grid on;
%axis([0,max(t_sim),0,100])
hold on;
legend("simulation",'analytic')
title("average ddt(voidfraction)");
grid on;
xlabel("time in s");
ylabel("average ddt(voidfraction)");
print('-dpng','-r450', 'averageDDTvoidfraction')

View File

@ -9,44 +9,55 @@ FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object thDiff;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
convertToMeters 1;
internalField uniform 0.0;
vertices
(
(0.0 0 0.0)
(0.1 0 0.0)
(0.1 0.1 0.0)
(0.0 0.1 0.0)
(0.0 0 1.0)
(0.1 0 1.0)
(0.1 0.1 1.0)
(0.0 0.1 1.0)
);
boundaryField
{
walls
{
type fixedValue;
// value uniform 2.9703e-05;
value uniform 6e-05;
}
nozzle
{
type fixedValue;
// value uniform 2.9703e-05;
value uniform 6e-05;
}
blocks
(
hex (0 1 2 3 4 5 6 7) (10 10 100) simpleGrading (1 1 1)
);
edges
(
);
inlet
{
type fixedValue;
value uniform 2.9703e-05;
}
patches
(
patch inlet
(
(3 7 6 2)
)
patch outlet
(
(1 5 4 0)
)
wall walls
(
(0 4 7 3)
(2 6 5 1)
(0 3 2 1)
(4 5 6 7)
)
);
outlet
{
type fixedValue;
value uniform 2.9703e-05;
}
}
mergePatchPairs
(
);
// ************************************************************************* //

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -15,7 +15,7 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pisoFoam;
application cfdemSolverPiso;
startFrom startTime;
@ -23,13 +23,13 @@ startTime 0;
stopAt endTime;
endTime 10.0;
endTime 0.2;
deltaT 0.00025;
deltaT 0.001;
writeControl timeStep;
writeControl adjustableRunTime;
writeInterval 4000;
writeInterval 0.001;
purgeWrite 0;
@ -37,51 +37,40 @@ writeFormat ascii;
writePrecision 6;
writeCompression off;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
runTimeModifiable yes;
libs (
// "libOpenFOAM.so"
// "libsimpleSwakFunctionObjects.so"
// "libswakFunctionObjects.so"
// "libgroovyBC.so"
// "libgroovyStandardBCs.so"
);
adjustTimeStep no;
maxCo 1;
maxDeltaT 1;
functions
{
probes1
probes
{
type probes;
functionObjectLibs ("libsampling.so");
#include "probesDict";
}
/* temperatureSum
{
type patchExpression;
outputControl timeStep;
outputInterval 40;
accumulations (
sum
functionObjectLibs ( "libsampling.so" );
// directory for probe data
name probes;
probeLocations
(
(0.05001 0.05001 0.5)
);
patches (
outlet
);
expression "phi*T";
verbose false;
// fields to be probed
fields ( volAverage_ddtVoidfraction voidfraction );
// write at same frequency as fields
writeControl timeStep;//outputTime;
writeInterval 1;
}
*/
}
// ************************************************************************* //

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -15,49 +15,61 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pisoFoam;
application cfdemSolverPiso;
startFrom startTime;
startTime -5;
startTime 0;
stopAt endTime;
endTime -0.005;
endTime 0.2;
deltaT 0.00005;
deltaT 0.001;
writeControl timeStep;
writeControl adjustableRunTime;
writeInterval 100;
writeInterval 0.001;
purgeWrite 2;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
runTimeModifiable yes;
libs (
adjustTimeStep no;
);
maxCo 1;
maxDeltaT 1;
functions
{
probes1
probes
{
type probes;
functionObjectLibs ( "libsampling.so" );
// directory for probe data
name probes;
probeLocations
(
(0.05001 0.05001 0.5)
);
functionObjectLibs ("libsampling.so");
// fields to be probed
fields ( volAverage_ddtVoidfraction voidfraction );
#include "probesDict";
// write at same frequency as fields
writeControl timeStep;//outputTime;
writeInterval 1;
}
}

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -10,18 +10,24 @@ FoamFile
version 2.0;
format ascii;
class dictionary;
object mirrorMeshDict;
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
planeType pointAndNormal;
numberOfSubdomains 2;
pointAndNormalDict
method simple;
simpleCoeffs
{
basePoint (0 0 0);
normalVector (-1 0 0);
n ( 1 1 2 );
delta 0.001;
}
planeTolerance 1e-3;
distributed no;
roots ( );
// ************************************************************************* //

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -23,6 +23,8 @@ ddtSchemes
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
grad(U) Gauss linear;
}
divSchemes
@ -34,14 +36,24 @@ divSchemes
div(phi,R) Gauss limitedLinear 1;
div(R) Gauss linear;
div(phi,nuTilda) Gauss limitedLinear 1;
div((nuEff*dev(grad(U).T()))) Gauss linear;
div((nuEff*dev(T(grad(U))))) Gauss linear;
div(phi,T) Gauss limitedLinear 1;
// div(phi,T) Gauss upwind;
div((viscousTerm*dev(grad(U).T()))) Gauss linear;
div((nu*dev(grad(U).T()))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
laplacian(viscousTerm,U) Gauss linear corrected;
laplacian(nu,U) Gauss linear corrected;
laplacian(nuEff,U) Gauss linear corrected;
laplacian((1|A(U)),p) Gauss linear corrected;
laplacian((voidfraction2|A(U)),p) Gauss linear corrected;
laplacian(DkEff,k) Gauss linear corrected;
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
laplacian(DREff,R) Gauss linear corrected;
laplacian(DnuTildaEff,nuTilda) Gauss linear corrected;
}
interpolationSchemes
@ -58,7 +70,6 @@ fluxRequired
{
default no;
p ;
T ;
}

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -19,45 +19,40 @@ solvers
{
p
{
solver GAMG;
solver PCG;
preconditioner DIC;
tolerance 1e-06;
relTol 0.1;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
cacheAgglomeration on;
agglomerator faceAreaPair;
nCellsInCoarsestLevel 10;
mergeLevels 1;
}
pFinal
{
$p;
solver PCG;
preconditioner DIC;
tolerance 1e-06;
relTol 0;
}
"(U|k|epsilon|R|nuTilda|c)"
"(U|k|epsilon|R|nuTilda)"
{
solver smoothSolver;
smoother GaussSeidel;
solver PBiCG;
preconditioner DILU;
tolerance 1e-05;
relTol 0;
}
T
"(voidfraction|Ksl|UsNext|voidfractionNext|sSmoothField|vSmoothField|fSmooth)"
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-8;
relTol 0;
solver PCG;
preconditioner DIC;
tolerance 1e-09;
relTol 1e-06;
}
}
PISO
{
nCorrectors 2;
nCorrectors 4;
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;

View File

@ -0,0 +1,76 @@
echo both
log ../DEM/log.liggghts
thermo_log ../DEM/post/thermo.txt
atom_style granular
atom_modify map array sort 0 0
communicate single vel yes
boundary f f f
newton off
units si
region reg block 0.0 0.1 0.0 0.1 0.0 1.0 units box
create_box 1 reg
neighbor 0.003 bin
neigh_modify delay 0 binsize 0.01
# material properties required for granular pair style
fix m1 all property/global youngsModulus peratomtype 5.e6
fix m2 all property/global poissonsRatio peratomtype 0.45
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
# pair style
pair_style gran model hertz tangential history
pair_coeff * *
# timestep, gravity
timestep 0.00001
fix gravi all gravity 0.0 vector 0.0 0.0 -1.0
# walls
fix xwalls1 all wall/gran model hertz tangential history primitive type 1 xplane 0.0
fix xwalls2 all wall/gran model hertz tangential history primitive type 1 xplane 0.1
fix ywalls1 all wall/gran model hertz tangential history primitive type 1 yplane 0.0
fix ywalls2 all wall/gran model hertz tangential history primitive type 1 yplane 0.1
fix zwalls1 all wall/gran model hertz tangential history primitive type 1 zplane 0.01
# create particles
region bc block 0.0 0.1 0.0 0.1 0.53 1.0 units box
fix pts1 all particletemplate/sphere 15485863 atom_type 1 density constant 3000 radius constant 0.0015
fix pdd1 all particledistribution/discrete 15485867 1 pts1 1.0
fix ins all insert/pack seed 32452843 distributiontemplate pdd1 vel constant 0. 0. -0.3 &
insert_every once overlapcheck yes all_in yes particles_in_region 1000 region bc
# cfd coupling
fix cfd1 all couple/cfd couple_every 100 mpi
fix cfd2 all couple/cfd/force
variable vx equal vx[1]
variable vy equal vy[1]
variable vz equal vz[1]
variable time equal step*dt
fix extra all print 100 "${time} ${vx} ${vy} ${vz}" file ../DEM/post/velocity.txt title "#" screen no
# 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
# insert the first particles so that dump is not empty
run 0
dump dmp all custom 1000 ../DEM/post/dump.liggghts_run id type x y z vx vy vz &
fx fy fz omegax omegay omegaz radius
run 0 upto

View File

@ -0,0 +1,97 @@
#!/bin/bash
#===================================================================#
# allrun script for testcase as part of test routine
# run voidfractionTest CFD part
# Christoph Goniva - Feb. 2011
#===================================================================#
#- 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_cfdemSolverPiso_voidfractionTest_CFDDEM"
logfileName="log_$headerText"
solverName="cfdemSolverPiso"
nrProcs="2"
machineFileName="none" # yourMachinefileName | none
debugMode="off" # on | off| strict
reconstuctCase="false"
testHarnessPath="$CFDEM_TEST_HARNESS_PATH"
runOctave="true"
cleanUp="true"
postproc="false"
#--------------------------------------------------------------------------------#
#- call function to run a parallel CFD-DEM case
parCFDDEMrun $logpath $logfileName $casePath $headerText $solverName $nrProcs $machineFileName $debugMode $reconstuctCase
if [ $runOctave == "true" ]
then
#- change path
cd octave
#- rmove old graph
rm averageDDTvoidfraction.png
#- run octave
octave --no-gui particleCellVolume.m
#- show plot
eog averageDDTvoidfraction.png
#- copy log file to test harness
cp ../../$logfileName $testHarnessPath
cp averageDDTvoidfraction.png $testHarnessPath
fi
if [ $postproc == "true" ]
then
#- keep terminal open (if started in new terminal)
echo "simulation finished? ...press enter to proceed"
read
#- get VTK data from liggghts dump file
cd $casePath/DEM/post
python -i $CFDEM_LPP_DIR/lpp.py dump.liggghts_run
#- get VTK data from CFD sim
cd $casePath/CFD
foamToVTK #- serial run of foamToVTK
#- start paraview
paraview
#- keep terminal open (if started in new terminal)
echo "...press enter to clean up case"
echo "press Ctr+C to keep data"
read
fi
#- clean up case
if [ $cleanUp == "true" ]
then
echo "deleting data at: $casePath ?:\n"
read
source $WM_PROJECT_DIR/bin/tools/CleanFunctions
cd $casePath/CFD
cleanCase
cd $casePath
rm -r $casePath/CFD/particleProbes
rm -r $casePath/CFD/postProcessing
rm -r $casePath/CFD/clockData
rm -r $casePath/DEM/post/*
rm -r $casePath/DEM/liggghts.restartCFDEM*
echo "done"
fi
#- preserve post directory
touch $casePath/DEM/post/.gitignore

View File

@ -0,0 +1,2 @@
#!/bin/bash
# nothing to see here

View File

@ -0,0 +1,13 @@
#!/bin/bash
#- define variables
casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
# check if mesh was built
if [ -f "$casePath/CFD/constant/polyMesh/boundary" ]; then
echo "mesh was built before - using old mesh"
else
echo "mesh needs to be built"
cd $casePath/CFD
blockMesh
fi

View File

@ -0,0 +1,13 @@
{
"type" : "CFDEMcoupling",
"runs" : [
{
"name" : "cfdemrun",
"solver" : "cfdemSolverPiso",
"type" : "CFDEMcoupling/mpi",
"nprocs" : 2,
"pre_scripts" : ["prerun.sh"],
"post_scripts" : ["postrun.sh"]
}
]
}

View File

@ -81,22 +81,14 @@ fix k0_H2 ore property/atom k0_cfd6 vector yes no no 30 23 160
fix Ea_H2 ore property/atom Ea_cfd6 vector yes no no 63627 85000 105908
# particle parameters
fix porosity ore property/atom porosity_ vector yes no no 0.61 0.34 0.19 0.17
fix tortuosity ore property/global tortuosity_ scalar 3
fix pore_diameter ore property/global pore_diameter_ scalar 1.e-7
fix porosity ore property/global porosity_ore vector 0.61 0.34 0.19 0.17
fix tortuosity ore property/global tortuosity_ore scalar 3
fix pore_diameter ore property/global pore_diameter_ore scalar 1.e-7
fix layerDensities ore property/global density_ore vector 7870. 5740. 5170. 5240.
# define layer properties
fix LayerRelRadii ore property/atom relRadii vector yes no no 1.0 0.998 0.995 0.98
### define fix for mass layer - initial testing
fix LayerMasses ore property/atom massLayer vector yes no no 0. 0. 0. 0.
fix LayerDensities ore property/global density_ore vector 7870. 5740. 5170. 5240.
## define fix for rho_eff and fracRed - initialize as zero
fix fracRed ore property/atom fracRed_ore vector yes no no 0. 0. 0.
fix rhoeff ore property/atom rhoeff vector yes no no 0. 0. 0. 0.
###############
# Write data into files for post-processing
group part type 1

View File

@ -69,21 +69,14 @@ fix k0_H2 all property/atom k0_cfd6 vector yes no no 30 23 160
fix Ea_H2 all property/atom Ea_cfd6 vector yes no no 63627 71162 92092
# particle porosity/tortuosity/pore diameter
fix porosity all property/atom porosity_ vector yes no no 0.65 0.31 0.16 0.15
fix tortuosity all property/global tortuosity_ scalar 3
fix pore_diameter all property/global pore_diameter_ scalar 7e-7
fix porosity all property/global porosity_all vector 0.65 0.31 0.16 0.15
fix tortuosity all property/global tortuosity_all scalar 3
fix pore_diameter all property/global pore_diameter_all scalar 7e-7
fix layerDensities all property/global density_all vector 7870. 5740. 5170. 5240.
# define layer properties
fix LayerRelRadii all property/atom relRadii vector yes no no 1.0 0.998 0.995 0.98
# define fix for mass layer - initial testing
fix LayerMasses all property/atom massLayer vector yes no no 0. 0. 0. 0.
fix LayerDensities all property/global density_all vector 7870. 5740. 5170. 5240.
# define fix for rho_eff and fracRed - initialize as zero
fix fracRed all property/atom fracRed_all vector yes no no 0. 0. 0.
fix rhoeff all property/atom rhoeff vector yes no no 0. 0. 0. 0.
###############
# Write data into files for post-processing

View File

@ -69,21 +69,14 @@ fix k0_H2 all property/atom k0_cfd6 vector yes no no 30 23 160
fix Ea_H2 all property/atom Ea_cfd6 vector yes no no 63627 71162 92092
# particle porosity/tortuosity/pore diameter
fix porosity all property/atom porosity_ vector yes no no 0.65 0.31 0.16 0.15
fix tortuosity all property/global tortuosity_ scalar 3
fix pore_diameter all property/global pore_diameter_ scalar 7e-7
fix porosity all property/global porosity_all vector 0.65 0.31 0.16 0.15
fix tortuosity all property/global tortuosity_all scalar 3
fix pore_diameter all property/global pore_diameter_all scalar 7e-7
fix layerDensities all property/global density_all vector 7870. 5740. 5170. 5240.
# define layer properties
fix LayerRelRadii all property/atom relRadii vector yes no no 1.0 0.998 0.995 0.98
### define fix for mass layer - initial testing
fix LayerMasses all property/atom massLayer vector yes no no 0. 0. 0. 0.
fix LayerDensities all property/global density_all vector 7870. 5740. 5170. 5240.
## define fix for rho_eff and fracRed - initialize as zero
fix fracRed all property/atom fracRed_all vector yes no no 0. 0. 0.
fix rhoeff all property/atom rhoeff vector yes no no 0. 0. 0. 0.
###############
# Write data into files for post-processing

View File

@ -65,21 +65,14 @@ fix k0_CO all property/atom k0_cfd5 vector yes no no 17 25 2700
fix Ea_CO all property/atom Ea_cfd5 vector yes no no 69488 73674 113859
# particle porosity/tortuosity/pore diameter
fix porosity all property/atom porosity_ vector yes no no 0.65 0.31 0.16 0.15
fix tortuosity all property/global tortuosity_ scalar 3
fix pore_diameter all property/global pore_diameter_ scalar 5.5e-7
fix porosity all property/global porosity_all vector 0.65 0.31 0.16 0.15
fix tortuosity all property/global tortuosity_all scalar 3
fix pore_diameter all property/global pore_diameter_all scalar 5.5e-7
fix layerDensities all property/global density_all vector 7870. 5740. 5170. 5240.
# define layer properties
fix LayerRelRadii all property/atom relRadii vector yes no no 1.0 0.998 0.995 0.98
### define fix for mass layer - initial testing
fix LayerMasses all property/atom massLayer vector yes no no 0. 0. 0. 0.
fix LayerDensities all property/global density_all vector 7870. 5740. 5170. 5240.
## define fix for rho_eff and fracRed - initialize as zero
fix fracRed all property/atom fracRed_all vector yes no no 0. 0. 0.
fix rhoeff all property/atom rhoeff vector yes no no 0. 0. 0. 0.
###############
# Write data into files for post-processing

View File

@ -65,21 +65,14 @@ fix k0_CO all property/atom k0_cfd5 vector yes no no 17 25 2700
fix Ea_CO all property/atom Ea_cfd5 vector yes no no 69488 73674 113859
# particle porosity/tortuosity/pore diameter
fix porosity all property/atom porosity_ vector yes no no 0.65 0.31 0.16 0.15
fix tortuosity all property/global tortuosity_ scalar 3
fix pore_diameter all property/global pore_diameter_ scalar 5.5e-7
fix porosity all property/global porosity_all vector 0.65 0.31 0.16 0.15
fix tortuosity all property/global tortuosity_all scalar 3
fix pore_diameter all property/global pore_diameter_all scalar 5.5e-7
fix layerDensities all property/global density_all vector 7870. 5740. 5170. 5240.
# define layer properties
fix LayerRelRadii all property/atom relRadii vector yes no no 1.0 0.998 0.995 0.98
### define fix for mass layer - initial testing
fix LayerMasses all property/atom massLayer vector yes no no 0. 0. 0. 0.
fix LayerDensities all property/global density_all vector 7870. 5740. 5170. 5240.
## define fix for rho_eff and fracRed - initialize as zero
fix fracRed all property/atom fracRed_all vector yes no no 0. 0. 0.
fix rhoeff all property/atom rhoeff vector yes no no 0. 0. 0. 0.
###############
# Write data into files for post-processing

View File

@ -1,4 +1,4 @@
1.) creation of databases
go to folder db1 and execute run.sh; once finished, execute postrun.sh; same for folder db2
execute createDB1.sh and createDB2.sh to create the databases for two different inlet velocities
2.) rCFD run
first transfer and decompose the databases by executing prerun.sh; for the actual rCFD run, execute run.sh
first transfer and decompose the databases by executing prerunRCFD.sh; for the actual rCFD run, execute runRCFD.sh

View File

@ -0,0 +1,19 @@
cd db$1
cd CFD
rm -r proc*
rm -r dynamicCode
rm -r postProcessing*
rm -r clockData
rm -r [0-9]*
rm -r -[0-9]*
rm -r dataBase*
rm log.*
rm *.log
cd ../DEM
cd post
rm *
cd ..
rm *.txt
rm liggghts.restartCFDEM*
cd ../..

View File

@ -0,0 +1 @@
./cleanDB.sh 1

View File

@ -0,0 +1 @@
./cleanDB.sh 2

View File

@ -0,0 +1,11 @@
./cleanRCFD_rundata.sh
cd rCFD
cd CFD
rm -r dataBase*
cd ../DEM
rm liggghts.restart
cd ../..

View File

@ -0,0 +1,23 @@
cd rCFD
cd CFD
rm -r proc*
rm -r dynamicCode
rm -r postProcessing*
rm -r clockData
rm -r [0-9]*
rm -r [0-9]*
rm log.*
rm *.log
rm recurrenceError
rm recurrenceMatrix
rm recurrencePath
cd ../DEM
cd post
rm *
cd ..
rm *.txt
rm liggghts.restartCFDEM*
cd ../..

View File

@ -0,0 +1 @@
./runDB.sh 1

View File

@ -0,0 +1 @@
./runDB.sh 2

View File

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

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -10,7 +10,7 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "-5";
location "0";
object Ksl;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / O peration | Version: 4.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
@ -11,11 +11,11 @@ FoamFile
format ascii;
class volScalarField;
location "0";
object QCoeff;
object NuField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -3 -1 0 0 0];
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
@ -36,11 +36,6 @@ boundaryField
type calculated;
value uniform 0;
}
nozzle
{
type calculated;
value uniform 0;
}
}

View File

@ -10,30 +10,31 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "-5";
object voidfraction;
location "0";
object ReField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1;
internalField uniform 0;
boundaryField
{
walls
{
type zeroGradient;
type calculated;
value uniform 0;
}
inlet
{
type fixedValue;
value uniform 1;
type calculated;
value uniform 0;
}
outlet
{
type fixedValue;
value uniform 1;
type calculated;
value uniform 0;
}
}

View File

@ -10,7 +10,7 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "-5";
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -10,7 +10,7 @@ FoamFile
version 2.0;
format ascii;
class volVectorField;
location "-5";
location "0";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -34,8 +34,8 @@ boundaryField
2
(
(-10 (0 0 0))
(-9.9 (0 0 0.4))
(0 (0 0 0))
(0.5 (0 0 0.4))
)
;
value uniform (0 0 0.4);

View File

@ -10,7 +10,7 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "-5";
location "0";
object addSource;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -10,7 +10,7 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "-5";
location "0";
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -0,0 +1,39 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object partTemp;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
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 | Version: 4.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object particleRelTemp;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type calculated;
value uniform 0;
}
inlet
{
type calculated;
value uniform 0;
}
outlet
{
type calculated;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -10,7 +10,7 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "-5";
location "0";
object rho;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -17,7 +17,7 @@ FoamFile
dimensions [0 0 0 0 0 0 0];
internalField uniform 1;
internalField uniform 1.0;
boundaryField
{
@ -27,12 +27,12 @@ boundaryField
}
inlet
{
type fixedValue;
type calculated;
value uniform 1;
}
outlet
{
type fixedValue;
type calculated;
value uniform 1;
}
}

View File

@ -10,7 +10,7 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "-5";
location "0";
object wallQFactor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -19,11 +19,11 @@ application pisoFoam;
startFrom startTime;
startTime -0.005;
startTime 0.0;
stopAt endTime;
endTime 2.5;
endTime 5.0;
deltaT 0.00005;

View File

@ -1,508 +0,0 @@
/*--------------------------------*- 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;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "../geometry"
actions
(
{
name c0;
type cellSet;
action new;
source boxToCell;
sourceInfo
{
box (#calc "-0.5*$nx" #calc "-0.5*$ny" -0.1)(#calc "0.5*$nx" #calc "0.5*$ny" 0.1);
}
}
{
name nozzle;
type faceSet;
action new;
source patchToFace;
sourceInfo
{
name "inlet";
}
}
{
name nozzle;
type faceSet;
action subset;
source cellToFace;
sourceInfo
{
set c0;
option all;
}
}
);
// List of actions. Each action is a dictionary with e.g.
// // name of set
// name c0;
//
// // type: pointSet/faceSet/cellSet/faceZoneSet/cellZoneSet
// type cellSet;
//
// // action to perform on set. Two types:
// // - require no source : clear/invert/remove
// // clear : clears set or zone
// // invert : select all currently non-selected elements
// // remove : removes set or zone
// // - require source : new/add/delete/subset
// // new : create new set or zone from source
// // add : add source to contents
// // delete : deletes source from contents
// // subset : keeps elements both in contents and source
// action new;
//
// The source entry varies according to the type of set:
//
// cellSet
// ~~~~~~~
//
// // Select by explicitly providing cell labels
// source labelToCell;
// sourceInfo
// {
// value (12 13 56); // labels of cells
// }
//
// // Copy elements from cellSet
// source cellToCell;
// sourceInfo
// {
// set c1;
// }
//
// // Cells in cell zone
// source zoneToCell;
// sourceInfo
// {
// name ".*Zone"; // Name of cellZone, regular expressions allowed
// }
//
// // Cells on master or slave side of faceZone
// source faceZoneToCell;
// sourceInfo
// {
// name ".*Zone"; // Name of faceZone, regular expressions allowed
// option master; // master/slave
// }
//
// // Select based on faceSet
// source faceToCell;
// sourceInfo
// {
// set f0; // Name of faceSet
//
// //option neighbour; // cell with neighbour in faceSet
// //option owner; // ,, owner
// option any; // cell with any face in faceSet
// //option all; // cell with all faces in faceSet
// }
//
// // Select based on pointSet
// source pointToCell;
// sourceInfo
// {
// set p0;
// option any; // cell with any point in pointSet
// //option edge; // cell with an edge with both points in pointSet
// }
//
// // Select based on cellShape
// source shapeToCell;
// sourceInfo
// {
// type hex; // hex/wedge/prism/pyr/tet/tetWedge/splitHex
// }
//
// // Cells with cell centre within box ('box') or multiple boxes ('boxes')
// source boxToCell;
// sourceInfo
// {
// box (0 0 0) (1 1 1);
// //boxes ((0 0 0) (1 1 1) (10 10 10)(11 11 11));
// }
//
// // Cells with cell centre within box
// // Is skewed, rotated box. Given as origin and three spanning vectors.
// source rotatedBoxToCell;
// sourceInfo
// {
// origin (0.2 0.2 -10);
// i (0.2 0.2 0);
// j (-0.2 0.2 0);
// k (10 10 10);
// }
//
// // Cells with centre within cylinder
// source cylinderToCell;
// sourceInfo
// {
// p1 (0.2 0.2 -10); // start point on cylinder axis
// p2 (0.2 0.2 0); // end point on cylinder axis
// radius 5.0;
// }
//
// // Cells with centre within sphere
// source sphereToCell;
// sourceInfo
// {
// centre (0.2 0.2 -10);
// radius 5.0;
// }
//
// // Cells with cellCentre nearest to coordinates
// source nearestToCell;
// sourceInfo
// {
// points ((0 0 0) (1 1 1)(2 2 2));
// }
//
// // Select based on surface
// source surfaceToCell;
// sourceInfo
// {
// file "www.avl.com-geometry.stl";
// useSurfaceOrientation false; // use closed surface inside/outside
// // test (ignores includeCut,
// // outsidePoints)
// outsidePoints ((-99 -99 -59)); // definition of outside
// includeCut false; // cells cut by surface
// includeInside false; // cells not on outside of surf
// includeOutside false; // cells on outside of surf
// nearDistance -1; // cells with centre near surf
// // (set to -1 if not used)
// curvature 0.9; // cells within nearDistance
// // and near surf curvature
// // (set to -100 if not used)
// }
//
// // values of field within certain range
// source fieldToCell;
// sourceInfo
// {
// fieldName U; // Note: uses mag(U) since volVectorField
// min 0.1;
// max 0.5;
// }
//
// // Mesh region (non-face connected part of (subset of)mesh)
// source regionToCell;
// sourceInfo
// {
// set c0; // optional name of cellSet giving mesh subset
// insidePoints ((1 2 3)); // points inside region to select
// nErode 0; // optional number of layers to erode
// // selection
// }
//
// // Cells underneath plane such that volume is reached. E.g. for use
// // in setFields to set the level given a wanted volume.
// source targetVolumeToCell;
// sourceInfo
// {
// volume 2e-05;
// normal (0 1 0); // usually in direction of gravity
// }
//
//
//
// faceSet
// ~~~~~~~
//
// // Copy elements from faceSet
// source faceToFace;
// sourceInfo
// {
// set f1;
// }
//
// // Select based on cellSet
// source cellToFace;
// sourceInfo
// {
// set c0;
// option all; // All faces of cells
// //option both; // Only faces whose owner&neighbour are in cellSet
// }
//
// // Select based on pointSet
// source pointToFace;
// sourceInfo
// {
// set p0;
// option any; // Faces using any point in pointSet
// //option all // Faces with all points in pointSet
// //option edge // Faces with two consecutive points in pointSet
// }
//
// // Select by explicitly providing face labels
// source labelToFace;
// sourceInfo
// {
// value (12 13 56); // labels of faces
// }
//
// // All faces of patch
// source patchToFace;
// sourceInfo
// {
// name ".*Wall"; // Name of patch or patch group,
// // (regular expressions allowed)
// }
//
// // All boundary faces
// source boundaryToFace;
// sourceInfo
// {
// }
//
// // All faces of faceZone
// source zoneToFace;
// sourceInfo
// {
// name ".*Zone1"; // Name of faceZone, regular expressions allowed
// }
//
// // Faces with face centre within box ('box') or multiple boxes ('boxes')
// source boxToFace;
// sourceInfo
// {
// box (0 0 0) (1 1 1);
// //boxes ((0 0 0) (1 1 1) (10 10 10)(11 11 11));
// }
//
// // Faces with normal to within certain angle aligned with vector.
// source normalToFace;
// sourceInfo
// {
// normal (0 0 1); // Vector
// cos 0.01; // Tolerance (max cos of angle)
// }
//
// // Walk on faces in faceSet, starting from face nearest given position
// source regionToFace;
// sourceInfo
// {
// set f0;
// nearPoint (0.1 0.1 0.005);
// }
//
//
//
// pointSet
// ~~~~~~~
//
// // Copy elements from pointSet
// source pointToPoint;
// sourceInfo
// {
// set p1;
// }
//
// // Select based on cellSet
// source cellToPoint;
// sourceInfo
// {
// set c0;
// option all; // all points of cell
// }
//
// // Select based on faceSet
// source faceToPoint;
// sourceInfo
// {
// set f0; // name of faceSet
// option all; // all points of face
// }
//
// // Select by explicitly providing point labels
// source labelToPoint;
// sourceInfo
// {
// value (12 13 56); // labels of points
// }
//
// // All points in pointzone
// source zoneToPoint;
// sourceInfo
// {
// name ".*Zone"; // name of pointZone, regular expressions allowed
// }
//
// // Points nearest to coordinates
// source nearestToPoint;
// sourceInfo
// {
// points ((0 0 0) (1 1 1));
// }
//
// // Points with coordinate within box ('box') or multiple boxes ('boxes')
// source boxToPoint;
// sourceInfo
// {
// box (0 0 0) (1 1 1);
// //boxes ((0 0 0) (1 1 1) (10 10 10)(11 11 11));
// }
//
// // Select based on surface
// source surfaceToPoint;
// sourceInfo
// {
// file "www.avl.com-geometry.stl";
// nearDistance 0.1; // points near to surface
// includeInside false; // points on inside of surface
// // (requires closed surface with consistent
// // normals)
// includeOutside false; // ,, outside ,,
// }
//
//
//
//
// cellZoneSet
// ~~~~~~~~~~~
// (mirrors operations on a cellSet into a cellZone)
//
// // Select based on cellSet
// source setToCellZone;
// sourceInfo
// {
// set c0; // name of cellSet
// }
//
//
//
// faceZoneSet
// ~~~~~~~~~~~
// // Select based on faceSet without orientation
// source setToFaceZone;
// sourceInfo
// {
// faceSet f0; // name of faceSet
// }
//
// // Select based on faceSet, using cellSet to determine orientation
// source setsToFaceZone;
// sourceInfo
// {
// faceSet f0; // name of faceSet
// cellSet c0; // name of cellSet of slave side
// flip false; // optional: flip the faceZone (so now the cellSet
// // is the master side)
// }
//
// // Select based on surface. Orientation from normals on surface
// {
// name fz0;
// type faceZoneSet;
// action new;
// source searchableSurfaceToFaceZone;
// sourceInfo
// {
// surface searchableSphere;
// centre (0.05 0.05 0.005);
// radius 0.025;
// //name sphere.stl; // Optional name if surface triSurfaceMesh
// }
// }
//
//
//
// pointZoneSet
// ~~~~~~~~~~~~
// (mirrors operations on a pointSet into a pointZone)
//
// // Select based on pointSet
// source setToPointZone;
// sourceInfo
// {
// set p0; // name of pointSet
// }
//
//
//
/*
actions
(
// Example:pick up internal faces on outside of cellSet
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Load initial cellSet
{
name c0;
type cellSet;
action new;
source labelToCell;
sourceInfo
{
value (12 13 56);
}
}
// Get all faces in cellSet
{
name f0;
type faceSet;
action new;
source cellToFace;
sourceInfo
{
set c0;
option all;
}
}
// Determine inverse cellSet
{
name c1;
type cellSet;
action new;
source cellToCell;
sourceInfo
{
set c0;
}
}
{
name c1;
type cellSet;
action invert;
}
// Keep in f0 all faces in c1
{
name f0;
type faceSet;
action subset;
source cellToFace;
sourceInfo
{
set c1;
option all;
}
}
);
*/
// ************************************************************************* //

View File

@ -1,6 +0,0 @@
cd CFD
cp system/controlDict_equil system/controlDict
decomposePar -force
mpirun -np 4 cfdemSolverRhoPimple -parallel
cp system/controlDict_record system/controlDict
mpirun -np 4 cfdemSolverRhoPimple -parallel

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -1,9 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 6
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{

View File

@ -10,7 +10,7 @@ FoamFile
version 2.0;
format ascii;
class volScalarField;
location "-5";
location "0";
object Ksl;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object NuField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type calculated;
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 | Version: 4.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object ReField;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
walls
{
type calculated;
value uniform 0;
}
inlet
{
type calculated;
value uniform 0;
}
outlet
{
type calculated;
value uniform 0;
}
}
// ************************************************************************* //

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