mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Adding parcels and clouds for interacting particles. Creating solver
and test case.
This commit is contained in:
@ -0,0 +1,3 @@
|
||||
interactingKinematicParcelFoam.C
|
||||
|
||||
EXE = $(FOAM_APPBIN)/interactingKinematicParcelFoam
|
||||
@ -0,0 +1,22 @@
|
||||
EXE_INC = \
|
||||
-I$(LIB_SRC)/lagrangian/basic/lnInclude \
|
||||
-I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
|
||||
-I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||
|
||||
EXE_LIBS = \
|
||||
-llagrangian \
|
||||
-llagrangianIntermediate \
|
||||
-lthermophysicalFunctions \
|
||||
-lbasicThermophysicalModels \
|
||||
-lspecie \
|
||||
-lradiation \
|
||||
-lcompressibleRASModels \
|
||||
-lcompressibleLESModels \
|
||||
-lfiniteVolume \
|
||||
-lmeshTools
|
||||
@ -0,0 +1,63 @@
|
||||
Info<< "Reading thermophysical properties\n" << endl;
|
||||
|
||||
autoPtr<basicPsiThermo> pThermo
|
||||
(
|
||||
basicPsiThermo::New(mesh)
|
||||
);
|
||||
basicPsiThermo& thermo = pThermo();
|
||||
|
||||
volScalarField rho
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rho",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
thermo.rho()
|
||||
);
|
||||
|
||||
Info<< "\nReading field U\n" << endl;
|
||||
volVectorField U
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"U",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
|
||||
#include "compressibleCreatePhi.H"
|
||||
|
||||
Info<< "Creating turbulence model\n" << endl;
|
||||
autoPtr<compressible::turbulenceModel> turbulence
|
||||
(
|
||||
compressible::turbulenceModel::New
|
||||
(
|
||||
rho,
|
||||
U,
|
||||
phi,
|
||||
thermo
|
||||
)
|
||||
);
|
||||
|
||||
word interactingKinematicCloudName("interactingKinematicCloud");
|
||||
args.optionReadIfPresent("cloudName", interactingKinematicCloudName);
|
||||
|
||||
Info<< "Constructing interactingKinematicCloud "
|
||||
<< interactingKinematicCloudName << endl;
|
||||
|
||||
basicInteractingKinematicCloud interactingKinematicCloud
|
||||
(
|
||||
interactingKinematicCloudName,
|
||||
rho,
|
||||
U,
|
||||
thermo.mu(),
|
||||
g
|
||||
);
|
||||
@ -0,0 +1,79 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2008-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Application
|
||||
interactingKinematicParcelFoam
|
||||
|
||||
Description
|
||||
Transient solver for the passive transport of a single interactingKinematic
|
||||
particle could, where the particles interact.
|
||||
|
||||
Uses a pre- calculated velocity field to evolve the cloud.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fvCFD.H"
|
||||
#include "basicPsiThermo.H"
|
||||
#include "turbulenceModel.H"
|
||||
#include "basicInteractingKinematicCloud.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
argList::validOptions.insert("cloudName", "cloud name");
|
||||
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
#include "createMesh.H"
|
||||
#include "readGravitationalAcceleration.H"
|
||||
#include "createFields.H"
|
||||
#include "compressibleCourantNo.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
Info<< "\nStarting time loop\n" << endl;
|
||||
|
||||
while (runTime.loop())
|
||||
{
|
||||
Info<< "Time = " << runTime.timeName() << nl << endl;
|
||||
|
||||
Info<< "Evolving " << interactingKinematicCloud.name() << endl;
|
||||
interactingKinematicCloud.evolve();
|
||||
interactingKinematicCloud.info();
|
||||
|
||||
runTime.write();
|
||||
|
||||
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
|
||||
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
|
||||
<< nl << endl;
|
||||
}
|
||||
|
||||
Info<< "End\n" << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -19,17 +19,25 @@ $(BASECLOUDS)/reactingMultiphaseCloud/reactingMultiphaseCloud.C
|
||||
|
||||
|
||||
/* Cloud container/injection mechanisms */
|
||||
$(DERIVEDCLOUDS)/basicKinematicCloud/basicKinematicCloud.C
|
||||
//$(DERIVEDCLOUDS)/basicKinematicCloud/basicKinematicCloud.C
|
||||
$(DERIVEDCLOUDS)/basicInteractingKinematicCloud/basicInteractingKinematicCloud.C
|
||||
$(DERIVEDCLOUDS)/basicThermoCloud/basicThermoCloud.C
|
||||
$(DERIVEDCLOUDS)/BasicReactingCloud/defineBasicReactingCloud.C
|
||||
$(DERIVEDCLOUDS)/BasicReactingMultiphaseCloud/defineBasicReactingMultiphaseCloud.C
|
||||
|
||||
|
||||
/* kinematic parcel sub-models */
|
||||
KINEMATICPARCEL=$(DERIVEDPARCELS)/basicKinematicParcel
|
||||
$(KINEMATICPARCEL)/basicKinematicParcel.C
|
||||
$(KINEMATICPARCEL)/defineBasicKinematicParcel.C
|
||||
$(KINEMATICPARCEL)/makeBasicKinematicParcelSubmodels.C
|
||||
// KINEMATICPARCEL=$(DERIVEDPARCELS)/basicKinematicParcel
|
||||
// $(KINEMATICPARCEL)/basicKinematicParcel.C
|
||||
// $(KINEMATICPARCEL)/defineBasicKinematicParcel.C
|
||||
// $(KINEMATICPARCEL)/makeBasicKinematicParcelSubmodels.C
|
||||
|
||||
|
||||
/* interactingKinematic parcel sub-models */
|
||||
INTERACTINGKINEMATICPARCEL=$(DERIVEDPARCELS)/basicInteractingKinematicParcel
|
||||
$(INTERACTINGKINEMATICPARCEL)/basicInteractingKinematicParcel.C
|
||||
$(INTERACTINGKINEMATICPARCEL)/defineBasicInteractingKinematicParcel.C
|
||||
$(INTERACTINGKINEMATICPARCEL)/makeBasicInteractingKinematicParcelSubmodels.C
|
||||
|
||||
|
||||
/* thermo parcel sub-models */
|
||||
|
||||
@ -0,0 +1,265 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "InteractingKinematicCloud.H"
|
||||
#include "IntegrationScheme.H"
|
||||
#include "interpolation.H"
|
||||
|
||||
#include "DispersionModel.H"
|
||||
#include "DragModel.H"
|
||||
#include "InjectionModel.H"
|
||||
#include "PatchInteractionModel.H"
|
||||
#include "PostProcessingModel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template<class ParcelType>
|
||||
Foam::InteractingKinematicCloud<ParcelType>::InteractingKinematicCloud
|
||||
(
|
||||
const word& cloudName,
|
||||
const volScalarField& rho,
|
||||
const volVectorField& U,
|
||||
const volScalarField& mu,
|
||||
const dimensionedVector& g
|
||||
)
|
||||
:
|
||||
Cloud<ParcelType>(rho.mesh(), cloudName, false),
|
||||
kinematicCloud(),
|
||||
mesh_(rho.mesh()),
|
||||
particleProperties_
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
cloudName + "Properties",
|
||||
rho.mesh().time().constant(),
|
||||
rho.mesh(),
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE
|
||||
)
|
||||
),
|
||||
constProps_(particleProperties_),
|
||||
parcelTypeId_(readLabel(particleProperties_.lookup("parcelTypeId"))),
|
||||
coupled_(particleProperties_.lookup("coupled")),
|
||||
cellValueSourceCorrection_
|
||||
(
|
||||
particleProperties_.lookup("cellValueSourceCorrection")
|
||||
),
|
||||
rndGen_(label(0)),
|
||||
rho_(rho),
|
||||
U_(U),
|
||||
mu_(mu),
|
||||
g_(g),
|
||||
forces_(mesh_, particleProperties_, g_.value()),
|
||||
interpolationSchemes_(particleProperties_.subDict("interpolationSchemes")),
|
||||
dispersionModel_
|
||||
(
|
||||
DispersionModel<InteractingKinematicCloud<ParcelType> >::New
|
||||
(
|
||||
particleProperties_,
|
||||
*this
|
||||
)
|
||||
),
|
||||
dragModel_
|
||||
(
|
||||
DragModel<InteractingKinematicCloud<ParcelType> >::New
|
||||
(
|
||||
particleProperties_,
|
||||
*this
|
||||
)
|
||||
),
|
||||
injectionModel_
|
||||
(
|
||||
InjectionModel<InteractingKinematicCloud<ParcelType> >::New
|
||||
(
|
||||
particleProperties_,
|
||||
*this
|
||||
)
|
||||
),
|
||||
patchInteractionModel_
|
||||
(
|
||||
PatchInteractionModel<InteractingKinematicCloud<ParcelType> >::New
|
||||
(
|
||||
particleProperties_,
|
||||
*this
|
||||
)
|
||||
),
|
||||
postProcessingModel_
|
||||
(
|
||||
PostProcessingModel<InteractingKinematicCloud<ParcelType> >::New
|
||||
(
|
||||
this->particleProperties_,
|
||||
*this
|
||||
)
|
||||
),
|
||||
UIntegrator_
|
||||
(
|
||||
vectorIntegrationScheme::New
|
||||
(
|
||||
"U",
|
||||
particleProperties_.subDict("integrationSchemes")
|
||||
)
|
||||
),
|
||||
UTrans_
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
this->name() + "UTrans",
|
||||
this->db().time().timeName(),
|
||||
this->db(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE,
|
||||
false
|
||||
),
|
||||
mesh_,
|
||||
dimensionedVector("zero", dimMass*dimVelocity, vector::zero)
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class ParcelType>
|
||||
Foam::InteractingKinematicCloud<ParcelType>::~InteractingKinematicCloud()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicCloud<ParcelType>::checkParcelProperties
|
||||
(
|
||||
ParcelType& parcel,
|
||||
const scalar lagrangianDt,
|
||||
const bool fullyDescribed
|
||||
)
|
||||
{
|
||||
if (!fullyDescribed)
|
||||
{
|
||||
parcel.rho() = constProps_.rho0();
|
||||
}
|
||||
|
||||
scalar carrierDt = this->db().time().deltaT().value();
|
||||
parcel.stepFraction() = (carrierDt - lagrangianDt)/carrierDt;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicCloud<ParcelType>::resetSourceTerms()
|
||||
{
|
||||
UTrans_.field() = vector::zero;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicCloud<ParcelType>::preEvolve()
|
||||
{
|
||||
this->dispersion().cacheFields(true);
|
||||
forces_.cacheFields(true);
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicCloud<ParcelType>::postEvolve()
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
this->writePositions();
|
||||
}
|
||||
|
||||
this->dispersion().cacheFields(false);
|
||||
forces_.cacheFields(false);
|
||||
|
||||
this->postProcessing().post();
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicCloud<ParcelType>::evolve()
|
||||
{
|
||||
preEvolve();
|
||||
|
||||
autoPtr<interpolation<scalar> > rhoInterpolator =
|
||||
interpolation<scalar>::New
|
||||
(
|
||||
interpolationSchemes_,
|
||||
rho_
|
||||
);
|
||||
|
||||
autoPtr<interpolation<vector> > UInterpolator =
|
||||
interpolation<vector>::New
|
||||
(
|
||||
interpolationSchemes_,
|
||||
U_
|
||||
);
|
||||
|
||||
autoPtr<interpolation<scalar> > muInterpolator =
|
||||
interpolation<scalar>::New
|
||||
(
|
||||
interpolationSchemes_,
|
||||
mu_
|
||||
);
|
||||
|
||||
typename ParcelType::trackData td
|
||||
(
|
||||
*this,
|
||||
constProps_,
|
||||
rhoInterpolator(),
|
||||
UInterpolator(),
|
||||
muInterpolator(),
|
||||
g_.value()
|
||||
);
|
||||
|
||||
this->injection().inject(td);
|
||||
|
||||
if (coupled_)
|
||||
{
|
||||
resetSourceTerms();
|
||||
}
|
||||
|
||||
Cloud<ParcelType>::move(td);
|
||||
|
||||
postEvolve();
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicCloud<ParcelType>::info() const
|
||||
{
|
||||
Info<< "Cloud: " << this->name() << nl
|
||||
<< " Total number of parcels added = "
|
||||
<< returnReduce(this->injection().parcelsAddedTotal(), sumOp<label>())
|
||||
<< nl
|
||||
<< " Total mass introduced = "
|
||||
<< returnReduce(this->injection().massInjected(), sumOp<scalar>())
|
||||
<< nl
|
||||
<< " Current number of parcels = "
|
||||
<< returnReduce(this->size(), sumOp<label>()) << nl
|
||||
<< " Current mass in system = "
|
||||
<< returnReduce(massInSystem(), sumOp<scalar>()) << nl;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,403 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
Foam::InteractingKinematicCloud
|
||||
|
||||
Description
|
||||
Templated base class for interactingKinematic cloud
|
||||
|
||||
- InteractingKinematic only
|
||||
- Particle collisions
|
||||
- Dispersion model
|
||||
- Drag model
|
||||
- Injection model
|
||||
- Wall interaction model
|
||||
|
||||
SourceFiles
|
||||
InteractingKinematicCloudI.H
|
||||
InteractingKinematicCloud.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef InteractingKinematicCloud_H
|
||||
#define InteractingKinematicCloud_H
|
||||
|
||||
#include "Cloud.H"
|
||||
#include "kinematicCloud.H"
|
||||
#include "IOdictionary.H"
|
||||
#include "autoPtr.H"
|
||||
#include "Random.H"
|
||||
#include "fvMesh.H"
|
||||
#include "volFields.H"
|
||||
#include "fvMatrices.H"
|
||||
#include "particleForces.H"
|
||||
|
||||
#include "IntegrationSchemesFwd.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// Forward declaration of classes
|
||||
|
||||
template<class CloudType>
|
||||
class DispersionModel;
|
||||
|
||||
template<class CloudType>
|
||||
class DragModel;
|
||||
|
||||
template<class CloudType>
|
||||
class InjectionModel;
|
||||
|
||||
template<class CloudType>
|
||||
class PostProcessingModel;
|
||||
|
||||
template<class CloudType>
|
||||
class PatchInteractionModel;
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class InteractingKinematicCloud Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class ParcelType>
|
||||
class InteractingKinematicCloud
|
||||
:
|
||||
public Cloud<ParcelType>,
|
||||
public kinematicCloud
|
||||
{
|
||||
// Private Member Functions
|
||||
|
||||
//- Disallow default bitwise copy construct
|
||||
InteractingKinematicCloud(const InteractingKinematicCloud&);
|
||||
|
||||
//- Disallow default bitwise assignment
|
||||
void operator=(const InteractingKinematicCloud&);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Protected data
|
||||
|
||||
//- References to the mesh and time databases
|
||||
const fvMesh& mesh_;
|
||||
|
||||
//- Dictionary of particle properties
|
||||
IOdictionary particleProperties_;
|
||||
|
||||
//- Parcel constant properties
|
||||
typename ParcelType::constantProperties constProps_;
|
||||
|
||||
//- Parcel type id - used to flag the type of parcels issued by this
|
||||
// cloud
|
||||
const label parcelTypeId_;
|
||||
|
||||
//- Flag to indicate whether parcels are coupled to the carrier phase
|
||||
// i.e. whether or not to generate source terms for carrier phase
|
||||
const Switch coupled_;
|
||||
|
||||
//- Flag to correct cell values with latest transfer information
|
||||
// during the lagrangian timestep
|
||||
const Switch cellValueSourceCorrection_;
|
||||
|
||||
//- Random number generator - used by some injection routines
|
||||
Random rndGen_;
|
||||
|
||||
|
||||
// References to the carrier gas fields
|
||||
|
||||
//- Density
|
||||
const volScalarField& rho_;
|
||||
|
||||
//- Velocity
|
||||
const volVectorField& U_;
|
||||
|
||||
//- Dynamic viscosity
|
||||
const volScalarField& mu_;
|
||||
|
||||
|
||||
// Environmental properties
|
||||
|
||||
//- Gravity
|
||||
const dimensionedVector& g_;
|
||||
|
||||
|
||||
//- Optional particle forces
|
||||
particleForces forces_;
|
||||
|
||||
//- Interpolation schemes dictionary
|
||||
dictionary interpolationSchemes_;
|
||||
|
||||
|
||||
// References to the cloud sub-models
|
||||
|
||||
//- Dispersion model
|
||||
autoPtr<DispersionModel<InteractingKinematicCloud<ParcelType> > >
|
||||
dispersionModel_;
|
||||
|
||||
//- Drag transfer model
|
||||
autoPtr<DragModel<InteractingKinematicCloud<ParcelType> > >
|
||||
dragModel_;
|
||||
|
||||
//- Injector model
|
||||
autoPtr<InjectionModel<InteractingKinematicCloud<ParcelType> > >
|
||||
injectionModel_;
|
||||
|
||||
//- Patch interaction model
|
||||
autoPtr
|
||||
<
|
||||
PatchInteractionModel<InteractingKinematicCloud<ParcelType> >
|
||||
>
|
||||
patchInteractionModel_;
|
||||
|
||||
//- Post-processing model
|
||||
autoPtr
|
||||
<
|
||||
PostProcessingModel<InteractingKinematicCloud<ParcelType> >
|
||||
>
|
||||
postProcessingModel_;
|
||||
|
||||
|
||||
// Reference to the particle integration schemes
|
||||
|
||||
//- Velocity integration
|
||||
autoPtr<vectorIntegrationScheme> UIntegrator_;
|
||||
|
||||
|
||||
// Sources
|
||||
|
||||
//- Momentum
|
||||
DimensionedField<vector, volMesh> UTrans_;
|
||||
|
||||
|
||||
// Cloud evolution functions
|
||||
|
||||
//- Pre-evolve
|
||||
void preEvolve();
|
||||
|
||||
//- Post-evolve
|
||||
void postEvolve();
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct given carrier gas fields
|
||||
InteractingKinematicCloud
|
||||
(
|
||||
const word& cloudName,
|
||||
const volScalarField& rho,
|
||||
const volVectorField& U,
|
||||
const volScalarField& mu,
|
||||
const dimensionedVector& g
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~InteractingKinematicCloud();
|
||||
|
||||
|
||||
//- Type of parcel the cloud was instantiated for
|
||||
typedef ParcelType parcelType;
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Access
|
||||
|
||||
// References to the mesh and databases
|
||||
|
||||
//- Return the parcel type id
|
||||
inline label parcelTypeId() const;
|
||||
|
||||
//- Return refernce to the mesh
|
||||
inline const fvMesh& mesh() const;
|
||||
|
||||
//- Return particle properties dictionary
|
||||
inline const IOdictionary& particleProperties() const;
|
||||
|
||||
//- Return the constant properties
|
||||
inline const typename ParcelType::constantProperties&
|
||||
constProps() const;
|
||||
|
||||
|
||||
//- Return coupled flag
|
||||
inline const Switch coupled() const;
|
||||
|
||||
//- Return cell value correction flag
|
||||
inline const Switch cellValueSourceCorrection() const;
|
||||
|
||||
//- Return refernce to the random object
|
||||
inline Random& rndGen();
|
||||
|
||||
|
||||
// References to the carrier gas fields
|
||||
|
||||
//- Return carrier gas velocity
|
||||
inline const volVectorField& U() const;
|
||||
|
||||
//- Return carrier gas density
|
||||
inline const volScalarField& rho() const;
|
||||
|
||||
//- Return carrier gas dynamic viscosity
|
||||
inline const volScalarField& mu() const;
|
||||
|
||||
|
||||
// Environmental properties
|
||||
|
||||
//- Gravity
|
||||
inline const dimensionedVector& g() const;
|
||||
|
||||
|
||||
//- Optional particle forces
|
||||
inline const particleForces& forces() const;
|
||||
|
||||
|
||||
// Interpolations
|
||||
|
||||
//- Return reference to the interpolation dictionary
|
||||
inline const dictionary& interpolationSchemes() const;
|
||||
|
||||
|
||||
// Sub-models
|
||||
|
||||
//- Return const-access to the dispersion model
|
||||
inline
|
||||
const DispersionModel<InteractingKinematicCloud<ParcelType> >&
|
||||
dispersion() const;
|
||||
|
||||
//- Return reference to the dispersion model
|
||||
inline DispersionModel<InteractingKinematicCloud<ParcelType> >&
|
||||
dispersion();
|
||||
|
||||
//- Return const-access to the drag model
|
||||
inline const DragModel<InteractingKinematicCloud<ParcelType> >&
|
||||
drag() const;
|
||||
|
||||
//- Return const access to the injection model
|
||||
inline
|
||||
const InjectionModel<InteractingKinematicCloud<ParcelType> >&
|
||||
injection() const;
|
||||
|
||||
//- Return reference to the injection model
|
||||
inline InjectionModel<InteractingKinematicCloud<ParcelType> >&
|
||||
injection();
|
||||
|
||||
//- Return const-access to the patch interaction model
|
||||
inline
|
||||
const PatchInteractionModel
|
||||
<
|
||||
InteractingKinematicCloud<ParcelType>
|
||||
>&
|
||||
patchInteraction() const;
|
||||
|
||||
//- Return reference to post-processing model
|
||||
inline
|
||||
PostProcessingModel<InteractingKinematicCloud<ParcelType> >&
|
||||
postProcessing();
|
||||
|
||||
|
||||
// Integration schemes
|
||||
|
||||
//-Return reference to velocity integration
|
||||
inline const vectorIntegrationScheme& UIntegrator() const;
|
||||
|
||||
|
||||
// Sources
|
||||
|
||||
// Momentum
|
||||
|
||||
//- Return reference to momentum source
|
||||
inline DimensionedField<vector, volMesh>& UTrans();
|
||||
|
||||
//- Return tmp momentum source term - fully explicit
|
||||
inline tmp<DimensionedField<vector, volMesh> > SU() const;
|
||||
|
||||
|
||||
// Check
|
||||
|
||||
//- Total mass injected
|
||||
inline scalar massInjected() const;
|
||||
|
||||
//- Total mass in system
|
||||
inline scalar massInSystem() const;
|
||||
|
||||
//- Print cloud information
|
||||
void info() const;
|
||||
|
||||
|
||||
// Fields
|
||||
|
||||
//- Return the particle volume fraction field
|
||||
// Note: for particles belonging to this cloud only
|
||||
inline const tmp<volScalarField> theta() const;
|
||||
|
||||
//- Return the particle mass fraction field
|
||||
// Note: for particles belonging to this cloud only
|
||||
inline const tmp<volScalarField> alpha() const;
|
||||
|
||||
//- Return the particle effective density field
|
||||
// Note: for particles belonging to this cloud only
|
||||
inline const tmp<volScalarField> rhoEff() const;
|
||||
|
||||
|
||||
// Cloud evolution functions
|
||||
|
||||
//- Check parcel properties
|
||||
void checkParcelProperties
|
||||
(
|
||||
ParcelType& parcel,
|
||||
const scalar lagrangianDt,
|
||||
const bool fullyDescribed
|
||||
);
|
||||
|
||||
//- Reset the spray source terms
|
||||
void resetSourceTerms();
|
||||
|
||||
//- Evolve the spray (inject, inject)
|
||||
void evolve();
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "InteractingKinematicCloudI.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "InteractingKinematicCloud.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,367 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fvmSup.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class ParcelType>
|
||||
inline Foam::label
|
||||
Foam::InteractingKinematicCloud<ParcelType>::parcelTypeId() const
|
||||
{
|
||||
return parcelTypeId_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::fvMesh&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::mesh() const
|
||||
{
|
||||
return mesh_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::IOdictionary&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::particleProperties() const
|
||||
{
|
||||
return particleProperties_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const typename ParcelType::constantProperties&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::constProps() const
|
||||
{
|
||||
return constProps_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::Switch
|
||||
Foam::InteractingKinematicCloud<ParcelType>::coupled() const
|
||||
{
|
||||
return coupled_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline const Foam::Switch
|
||||
Foam::InteractingKinematicCloud<ParcelType>::cellValueSourceCorrection() const
|
||||
{
|
||||
return cellValueSourceCorrection_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::volScalarField&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::rho() const
|
||||
{
|
||||
return rho_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::volVectorField&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::U() const
|
||||
{
|
||||
return U_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::volScalarField&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::mu() const
|
||||
{
|
||||
return mu_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::dimensionedVector&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::g() const
|
||||
{
|
||||
return g_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::particleForces&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::forces() const
|
||||
{
|
||||
return forces_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::dictionary&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::interpolationSchemes() const
|
||||
{
|
||||
return interpolationSchemes_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline
|
||||
const Foam::DispersionModel<Foam::InteractingKinematicCloud<ParcelType> >&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::dispersion() const
|
||||
{
|
||||
return dispersionModel_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline Foam::DispersionModel<Foam::InteractingKinematicCloud<ParcelType> >&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::dispersion()
|
||||
{
|
||||
return dispersionModel_();
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::DragModel<Foam::InteractingKinematicCloud<ParcelType> >&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::drag() const
|
||||
{
|
||||
return dragModel_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::InjectionModel<Foam::InteractingKinematicCloud<ParcelType> >&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::injection() const
|
||||
{
|
||||
return injectionModel_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline
|
||||
const Foam::PatchInteractionModel<Foam::InteractingKinematicCloud<ParcelType> >&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::patchInteraction() const
|
||||
{
|
||||
return patchInteractionModel_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline Foam::InjectionModel<Foam::InteractingKinematicCloud<ParcelType> >&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::injection()
|
||||
{
|
||||
return injectionModel_();
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline Foam::PostProcessingModel<Foam::InteractingKinematicCloud<ParcelType> >&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::postProcessing()
|
||||
{
|
||||
return postProcessingModel_();
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::vectorIntegrationScheme&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::UIntegrator() const
|
||||
{
|
||||
return UIntegrator_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline Foam::scalar
|
||||
Foam::InteractingKinematicCloud<ParcelType>::massInSystem() const
|
||||
{
|
||||
scalar sysMass = 0.0;
|
||||
forAllConstIter(typename InteractingKinematicCloud<ParcelType>, *this, iter)
|
||||
{
|
||||
const ParcelType& p = iter();
|
||||
sysMass += p.mass()*p.nParticle();
|
||||
}
|
||||
|
||||
return sysMass;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline Foam::Random& Foam::InteractingKinematicCloud<ParcelType>::rndGen()
|
||||
{
|
||||
return rndGen_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline Foam::DimensionedField<Foam::vector, Foam::volMesh>&
|
||||
Foam::InteractingKinematicCloud<ParcelType>::UTrans()
|
||||
{
|
||||
return UTrans_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline Foam::tmp<Foam::DimensionedField<Foam::vector, Foam::volMesh> >
|
||||
Foam::InteractingKinematicCloud<ParcelType>::SU() const
|
||||
{
|
||||
tmp<DimensionedField<vector, volMesh> > tSU
|
||||
(
|
||||
new DimensionedField<vector, volMesh>
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
this->name() + "SU",
|
||||
this->db().time().timeName(),
|
||||
this->mesh(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
this->mesh(),
|
||||
dimensionedVector
|
||||
(
|
||||
"zero",
|
||||
dimDensity*dimVelocity/dimTime,
|
||||
vector::zero
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
vectorField& SU = tSU().field();
|
||||
SU = UTrans_/(mesh_.V()*this->db().time().deltaT());
|
||||
|
||||
return tSU;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::tmp<Foam::volScalarField>
|
||||
Foam::InteractingKinematicCloud<ParcelType>::theta() const
|
||||
{
|
||||
tmp<volScalarField> ttheta
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
this->name() + "Theta",
|
||||
this->db().time().timeName(),
|
||||
this->db(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE,
|
||||
false
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar("zero", dimless, 0.0)
|
||||
)
|
||||
);
|
||||
|
||||
scalarField& theta = ttheta().internalField();
|
||||
forAllConstIter(typename InteractingKinematicCloud<ParcelType>, *this, iter)
|
||||
{
|
||||
const ParcelType& p = iter();
|
||||
const label cellI = p.cell();
|
||||
|
||||
theta[cellI] += p.nParticle()*p.volume();
|
||||
}
|
||||
|
||||
theta /= mesh().V();
|
||||
|
||||
return ttheta;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::tmp<Foam::volScalarField>
|
||||
Foam::InteractingKinematicCloud<ParcelType>::alpha() const
|
||||
{
|
||||
tmp<volScalarField> talpha
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
this->name() + "Alpha",
|
||||
this->db().time().timeName(),
|
||||
this->db(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE,
|
||||
false
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar("zero", dimless, 0.0)
|
||||
)
|
||||
);
|
||||
|
||||
scalarField& alpha = talpha().internalField();
|
||||
forAllConstIter(typename InteractingKinematicCloud<ParcelType>, *this, iter)
|
||||
{
|
||||
const ParcelType& p = iter();
|
||||
const label cellI = p.cell();
|
||||
|
||||
alpha[cellI] += p.nParticle()*p.mass();
|
||||
}
|
||||
|
||||
alpha /= (mesh().V()*rho_);
|
||||
|
||||
return talpha;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::tmp<Foam::volScalarField>
|
||||
Foam::InteractingKinematicCloud<ParcelType>::rhoEff() const
|
||||
{
|
||||
tmp<volScalarField> trhoEff
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
this->name() + "RhoEff",
|
||||
this->db().time().timeName(),
|
||||
this->db(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE,
|
||||
false
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar("zero", dimDensity, 0.0)
|
||||
)
|
||||
);
|
||||
|
||||
scalarField& rhoEff = trhoEff().internalField();
|
||||
forAllConstIter(typename InteractingKinematicCloud<ParcelType>, *this, iter)
|
||||
{
|
||||
const ParcelType& p = iter();
|
||||
const label cellI = p.cell();
|
||||
|
||||
rhoEff[cellI] += p.nParticle()*p.mass();
|
||||
}
|
||||
|
||||
rhoEff /= mesh().V();
|
||||
|
||||
return trhoEff;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -42,7 +42,7 @@ Foam::ThermoCloud<ParcelType>::ThermoCloud
|
||||
basicThermo& thermo
|
||||
)
|
||||
:
|
||||
KinematicCloud<ParcelType>
|
||||
InteractingKinematicCloud<ParcelType>
|
||||
(
|
||||
cloudName,
|
||||
rho,
|
||||
@ -118,7 +118,7 @@ void Foam::ThermoCloud<ParcelType>::checkParcelProperties
|
||||
const bool fullyDescribed
|
||||
)
|
||||
{
|
||||
KinematicCloud<ParcelType>::checkParcelProperties
|
||||
InteractingKinematicCloud<ParcelType>::checkParcelProperties
|
||||
(
|
||||
parcel,
|
||||
lagrangianDt,
|
||||
@ -136,7 +136,7 @@ void Foam::ThermoCloud<ParcelType>::checkParcelProperties
|
||||
template<class ParcelType>
|
||||
void Foam::ThermoCloud<ParcelType>::resetSourceTerms()
|
||||
{
|
||||
KinematicCloud<ParcelType>::resetSourceTerms();
|
||||
InteractingKinematicCloud<ParcelType>::resetSourceTerms();
|
||||
hsTrans_.field() = 0.0;
|
||||
hcTrans_.field() = 0.0;
|
||||
}
|
||||
@ -145,14 +145,14 @@ void Foam::ThermoCloud<ParcelType>::resetSourceTerms()
|
||||
template<class ParcelType>
|
||||
void Foam::ThermoCloud<ParcelType>::preEvolve()
|
||||
{
|
||||
KinematicCloud<ParcelType>::preEvolve();
|
||||
InteractingKinematicCloud<ParcelType>::preEvolve();
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::ThermoCloud<ParcelType>::postEvolve()
|
||||
{
|
||||
KinematicCloud<ParcelType>::postEvolve();
|
||||
InteractingKinematicCloud<ParcelType>::postEvolve();
|
||||
}
|
||||
|
||||
|
||||
@ -222,7 +222,7 @@ void Foam::ThermoCloud<ParcelType>::evolve()
|
||||
template<class ParcelType>
|
||||
void Foam::ThermoCloud<ParcelType>::info() const
|
||||
{
|
||||
KinematicCloud<ParcelType>::info();
|
||||
InteractingKinematicCloud<ParcelType>::info();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -40,7 +40,7 @@ SourceFiles
|
||||
#ifndef ThermoCloud_H
|
||||
#define ThermoCloud_H
|
||||
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
#include "thermoCloud.H"
|
||||
#include "basicThermo.H"
|
||||
|
||||
@ -61,7 +61,7 @@ class HeatTransferModel;
|
||||
template<class ParcelType>
|
||||
class ThermoCloud
|
||||
:
|
||||
public KinematicCloud<ParcelType>,
|
||||
public InteractingKinematicCloud<ParcelType>,
|
||||
public thermoCloud
|
||||
{
|
||||
// Private Member Functions
|
||||
|
||||
@ -0,0 +1,75 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "basicInteractingKinematicCloud.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
defineTypeNameAndDebug(basicInteractingKinematicCloud, 0);
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::basicInteractingKinematicCloud::basicInteractingKinematicCloud
|
||||
(
|
||||
const word& cloudName,
|
||||
const volScalarField& rho,
|
||||
const volVectorField& U,
|
||||
const volScalarField& mu,
|
||||
const dimensionedVector& g
|
||||
)
|
||||
:
|
||||
InteractingKinematicCloud<basicInteractingKinematicParcel>
|
||||
(
|
||||
cloudName,
|
||||
rho,
|
||||
U,
|
||||
mu,
|
||||
g
|
||||
)
|
||||
{
|
||||
basicInteractingKinematicParcel::readFields(*this);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::basicInteractingKinematicCloud::~basicInteractingKinematicCloud()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::basicInteractingKinematicCloud::writeFields() const
|
||||
{
|
||||
basicInteractingKinematicParcel::writeFields(*this);
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,101 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
Foam::basicInteractingKinematicCloud
|
||||
|
||||
Description
|
||||
Cloud class to introduce interactingKinematic parcels
|
||||
|
||||
SourceFiles
|
||||
basicInteractingKinematicCloud.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef basicInteractingKinematicCloud_H
|
||||
#define basicInteractingKinematicCloud_H
|
||||
|
||||
#include "InteractingKinematicCloud.H"
|
||||
#include "basicInteractingKinematicParcel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class basicInteractingKinematicCloud Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class basicInteractingKinematicCloud
|
||||
:
|
||||
public InteractingKinematicCloud<basicInteractingKinematicParcel>
|
||||
{
|
||||
// Private member functions
|
||||
|
||||
//- Disallow default bitwise copy construct
|
||||
basicInteractingKinematicCloud(const basicInteractingKinematicCloud&);
|
||||
|
||||
//- Disallow default bitwise assignment
|
||||
void operator=(const basicInteractingKinematicCloud&);
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("basicInteractingKinematicCloud");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
basicInteractingKinematicCloud
|
||||
(
|
||||
const word& cloudName,
|
||||
const volScalarField& rho,
|
||||
const volVectorField& U,
|
||||
const volScalarField& mu,
|
||||
const dimensionedVector& g
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
~basicInteractingKinematicCloud();
|
||||
|
||||
|
||||
// Member functions
|
||||
|
||||
//- Write fields
|
||||
virtual void writeFields() const;
|
||||
};
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,385 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "InteractingKinematicParcel.H"
|
||||
#include "dimensionedConstants.H"
|
||||
|
||||
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
|
||||
|
||||
template<class ParcelType>
|
||||
template<class TrackData>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::setCellValues
|
||||
(
|
||||
TrackData& td,
|
||||
const scalar dt,
|
||||
const label cellI
|
||||
)
|
||||
{
|
||||
rhoc_ = td.rhoInterp().interpolate(this->position(), cellI);
|
||||
if (rhoc_ < td.constProps().rhoMin())
|
||||
{
|
||||
WarningIn
|
||||
(
|
||||
"void Foam::InteractingKinematicParcel<ParcelType>::setCellValues"
|
||||
"("
|
||||
"TrackData&, "
|
||||
"const scalar, "
|
||||
"const label"
|
||||
")"
|
||||
) << "Limiting observed density in cell " << cellI << " to "
|
||||
<< td.constProps().rhoMin() << nl << endl;
|
||||
|
||||
rhoc_ = td.constProps().rhoMin();
|
||||
}
|
||||
|
||||
Uc_ = td.UInterp().interpolate(this->position(), cellI);
|
||||
|
||||
muc_ = td.muInterp().interpolate(this->position(), cellI);
|
||||
|
||||
// Apply dispersion components to carrier phase velocity
|
||||
Uc_ = td.cloud().dispersion().update
|
||||
(
|
||||
dt,
|
||||
cellI,
|
||||
U_,
|
||||
Uc_,
|
||||
UTurb_,
|
||||
tTurb_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
template<class TrackData>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::cellValueSourceCorrection
|
||||
(
|
||||
TrackData& td,
|
||||
const scalar dt,
|
||||
const label cellI
|
||||
)
|
||||
{
|
||||
Uc_ += td.cloud().UTrans()[cellI]/massCell(cellI);
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
template<class TrackData>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::calc
|
||||
(
|
||||
TrackData& td,
|
||||
const scalar dt,
|
||||
const label cellI
|
||||
)
|
||||
{
|
||||
// Define local properties at beginning of time step
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
const scalar np0 = nParticle_;
|
||||
const scalar d0 = d_;
|
||||
const vector U0 = U_;
|
||||
const scalar rho0 = rho_;
|
||||
const scalar mass0 = mass();
|
||||
|
||||
|
||||
// Explicit momentum source for particle
|
||||
vector Su = vector::zero;
|
||||
|
||||
// Momentum transfer from the particle to the carrier phase
|
||||
vector dUTrans = vector::zero;
|
||||
|
||||
|
||||
// Motion
|
||||
// ~~~~~~
|
||||
|
||||
// Calculate new particle velocity
|
||||
vector U1 = calcVelocity(td, dt, cellI, d0, U0, rho0, mass0, Su, dUTrans);
|
||||
|
||||
|
||||
// Accumulate carrier phase source terms
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
if (td.cloud().coupled())
|
||||
{
|
||||
// Update momentum transfer
|
||||
td.cloud().UTrans()[cellI] += np0*dUTrans;
|
||||
}
|
||||
|
||||
|
||||
// Set new particle properties
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
U_ = U1;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
template<class TrackData>
|
||||
const Foam::vector Foam::InteractingKinematicParcel<ParcelType>::calcVelocity
|
||||
(
|
||||
TrackData& td,
|
||||
const scalar dt,
|
||||
const label cellI,
|
||||
const scalar d,
|
||||
const vector& U,
|
||||
const scalar rho,
|
||||
const scalar mass,
|
||||
const vector& Su,
|
||||
vector& dUTrans
|
||||
) const
|
||||
{
|
||||
const polyMesh& mesh = this->cloud().pMesh();
|
||||
|
||||
// Momentum transfer coefficient
|
||||
const scalar utc =
|
||||
td.cloud().drag().utc(U - Uc_, d, rhoc_, muc_) + ROOTVSMALL;
|
||||
|
||||
// Momentum source due to particle forces
|
||||
const vector FCoupled =
|
||||
mass*td.cloud().forces().calcCoupled(cellI, dt, rhoc_, rho, Uc_, U);
|
||||
const vector FNonCoupled =
|
||||
mass*td.cloud().forces().calcNonCoupled(cellI, dt, rhoc_, rho, Uc_, U);
|
||||
|
||||
|
||||
// New particle velocity
|
||||
//~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
// Update velocity - treat as 3-D
|
||||
const scalar As = this->areaS(d);
|
||||
const vector ap = Uc_ + (FCoupled + FNonCoupled + Su)/(utc*As);
|
||||
const scalar bp = 6.0*utc/(rho*d);
|
||||
|
||||
IntegrationScheme<vector>::integrationResult Ures =
|
||||
td.cloud().UIntegrator().integrate(U, dt, ap, bp);
|
||||
|
||||
vector Unew = Ures.value();
|
||||
|
||||
dUTrans += dt*(utc*As*(Ures.average() - Uc_) - FCoupled);
|
||||
|
||||
// Apply correction to velocity and dUTrans for reduced-D cases
|
||||
meshTools::constrainDirection(mesh, mesh.solutionD(), Unew);
|
||||
meshTools::constrainDirection(mesh, mesh.solutionD(), dUTrans);
|
||||
|
||||
return Unew;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template <class ParcelType>
|
||||
Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
|
||||
(
|
||||
const InteractingKinematicParcel<ParcelType>& p
|
||||
)
|
||||
:
|
||||
Particle<ParcelType>(p),
|
||||
typeId_(p.typeId_),
|
||||
nParticle_(p.nParticle_),
|
||||
d_(p.d_),
|
||||
U_(p.U_),
|
||||
rho_(p.rho_),
|
||||
tTurb_(p.tTurb_),
|
||||
UTurb_(p.UTurb_),
|
||||
rhoc_(p.rhoc_),
|
||||
Uc_(p.Uc_),
|
||||
muc_(p.muc_)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class ParcelType>
|
||||
template<class TrackData>
|
||||
bool Foam::InteractingKinematicParcel<ParcelType>::move(TrackData& td)
|
||||
{
|
||||
ParcelType& p = static_cast<ParcelType&>(*this);
|
||||
|
||||
td.switchProcessor = false;
|
||||
td.keepParticle = true;
|
||||
|
||||
const polyMesh& mesh = td.cloud().pMesh();
|
||||
const polyBoundaryMesh& pbMesh = mesh.boundaryMesh();
|
||||
|
||||
const scalar deltaT = mesh.time().deltaT().value();
|
||||
scalar tEnd = (1.0 - p.stepFraction())*deltaT;
|
||||
const scalar dtMax = tEnd;
|
||||
|
||||
while (td.keepParticle && !td.switchProcessor && tEnd > ROOTVSMALL)
|
||||
{
|
||||
// Apply correction to position for reduced-D cases
|
||||
meshTools::constrainToMeshCentre(mesh, p.position());
|
||||
|
||||
// Set the Lagrangian time-step
|
||||
scalar dt = min(dtMax, tEnd);
|
||||
|
||||
// Remember which cell the Parcel is in since this will change if a
|
||||
// face is hit
|
||||
label cellI = p.cell();
|
||||
|
||||
dt *= p.trackToFace(p.position() + dt*U_, td);
|
||||
|
||||
tEnd -= dt;
|
||||
p.stepFraction() = 1.0 - tEnd/deltaT;
|
||||
|
||||
// Avoid problems with extremely small timesteps
|
||||
if (dt > ROOTVSMALL)
|
||||
{
|
||||
// Update cell based properties
|
||||
p.setCellValues(td, dt, cellI);
|
||||
|
||||
if (td.cloud().cellValueSourceCorrection())
|
||||
{
|
||||
p.cellValueSourceCorrection(td, dt, cellI);
|
||||
}
|
||||
|
||||
p.calc(td, dt, cellI);
|
||||
}
|
||||
|
||||
if (p.onBoundary() && td.keepParticle)
|
||||
{
|
||||
if (isType<processorPolyPatch>(pbMesh[p.patch(p.face())]))
|
||||
{
|
||||
td.switchProcessor = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return td.keepParticle;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
template<class TrackData>
|
||||
bool Foam::InteractingKinematicParcel<ParcelType>::hitPatch
|
||||
(
|
||||
const polyPatch& pp,
|
||||
TrackData& td,
|
||||
const label patchI
|
||||
)
|
||||
{
|
||||
ParcelType& p = static_cast<ParcelType&>(*this);
|
||||
td.cloud().postProcessing().postPatch(p, patchI);
|
||||
|
||||
return td.cloud().patchInteraction().correct(pp, this->face(), U_);
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
bool Foam::InteractingKinematicParcel<ParcelType>::hitPatch
|
||||
(
|
||||
const polyPatch& pp,
|
||||
int& td,
|
||||
const label patchI
|
||||
)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
template<class TrackData>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::hitProcessorPatch
|
||||
(
|
||||
const processorPolyPatch&,
|
||||
TrackData& td
|
||||
)
|
||||
{
|
||||
td.switchProcessor = true;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::hitProcessorPatch
|
||||
(
|
||||
const processorPolyPatch&,
|
||||
int&
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
template<class TrackData>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::hitWallPatch
|
||||
(
|
||||
const wallPolyPatch& wpp,
|
||||
TrackData& td
|
||||
)
|
||||
{
|
||||
// Wall interactions handled by generic hitPatch function
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::hitWallPatch
|
||||
(
|
||||
const wallPolyPatch&,
|
||||
int&
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
template<class TrackData>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::hitPatch
|
||||
(
|
||||
const polyPatch&,
|
||||
TrackData& td
|
||||
)
|
||||
{
|
||||
td.keepParticle = false;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::hitPatch
|
||||
(
|
||||
const polyPatch&, int&
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::transformProperties
|
||||
(
|
||||
const tensor& T
|
||||
)
|
||||
{
|
||||
Particle<ParcelType>::transformProperties(T);
|
||||
U_ = transform(T, U_);
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::transformProperties
|
||||
(
|
||||
const vector& separation
|
||||
)
|
||||
{
|
||||
Particle<ParcelType>::transformProperties(separation);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * IOStream operators * * * * * * * * * * * * * //
|
||||
|
||||
#include "InteractingKinematicParcelIO.C"
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,565 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
Foam::InteractingKinematicParcel
|
||||
|
||||
Description
|
||||
InteractingKinematic parcel class with one/two-way coupling with
|
||||
the continuous phase.
|
||||
|
||||
Sub-models include:
|
||||
- drag
|
||||
- turbulent dispersion
|
||||
- wall interactions
|
||||
|
||||
SourceFiles
|
||||
InteractingKinematicParcelI.H
|
||||
InteractingKinematicParcel.C
|
||||
InteractingKinematicParcelIO.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef InteractingKinematicParcel_H
|
||||
#define InteractingKinematicParcel_H
|
||||
|
||||
#include "Particle.H"
|
||||
#include "IOstream.H"
|
||||
#include "autoPtr.H"
|
||||
#include "interpolationCellPoint.H"
|
||||
#include "contiguous.H"
|
||||
#include "mathematicalConstants.H"
|
||||
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
template<class ParcelType>
|
||||
class InteractingKinematicParcel;
|
||||
|
||||
// Forward declaration of friend functions
|
||||
|
||||
template<class ParcelType>
|
||||
Ostream& operator<<
|
||||
(
|
||||
Ostream&,
|
||||
const InteractingKinematicParcel<ParcelType>&
|
||||
);
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class InteractingKinematicParcel Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class ParcelType>
|
||||
class InteractingKinematicParcel
|
||||
:
|
||||
public Particle<ParcelType>
|
||||
{
|
||||
public:
|
||||
|
||||
//- Class to hold interactingKinematic particle constant properties
|
||||
class constantProperties
|
||||
{
|
||||
// Private data
|
||||
|
||||
//- Constant properties dictionary
|
||||
const dictionary dict_;
|
||||
|
||||
//- Minimum density [kg/m3]
|
||||
const scalar rhoMin_;
|
||||
|
||||
//- Particle density [kg/m3] (constant)
|
||||
const scalar rho0_;
|
||||
|
||||
//- Minimum particle mass [kg]
|
||||
const scalar minParticleMass_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Constructor
|
||||
constantProperties(const dictionary& parentDict);
|
||||
|
||||
// Member functions
|
||||
|
||||
//- Return const access to the constant properties dictionary
|
||||
inline const dictionary& dict() const;
|
||||
|
||||
//- Return const access to the minimum density
|
||||
inline scalar rhoMin() const;
|
||||
|
||||
//- Return const access to the particle density
|
||||
inline scalar rho0() const;
|
||||
|
||||
//- Return const access to the minimum particle mass
|
||||
inline scalar minParticleMass() const;
|
||||
};
|
||||
|
||||
|
||||
//- Class used to pass interactingKinematic tracking data to the
|
||||
// trackToFace function
|
||||
class trackData
|
||||
:
|
||||
public Particle<ParcelType>::trackData
|
||||
{
|
||||
// Private data
|
||||
|
||||
//- Reference to the cloud containing this particle
|
||||
InteractingKinematicCloud<ParcelType>& cloud_;
|
||||
|
||||
//- Particle constant properties
|
||||
const constantProperties& constProps_;
|
||||
|
||||
|
||||
// Interpolators for continuous phase fields
|
||||
|
||||
//- Density interpolator
|
||||
const interpolation<scalar>& rhoInterp_;
|
||||
|
||||
//- Velocity interpolator
|
||||
const interpolation<vector>& UInterp_;
|
||||
|
||||
//- Dynamic viscosity interpolator
|
||||
const interpolation<scalar>& muInterp_;
|
||||
|
||||
//- Local gravitational or other body-force acceleration
|
||||
const vector& g_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
inline trackData
|
||||
(
|
||||
InteractingKinematicCloud<ParcelType>& cloud,
|
||||
const constantProperties& constProps,
|
||||
const interpolation<scalar>& rhoInterp,
|
||||
const interpolation<vector>& UInterp,
|
||||
const interpolation<scalar>& muInterp,
|
||||
const vector& g
|
||||
);
|
||||
|
||||
|
||||
// Member functions
|
||||
|
||||
//- Return access to the owner cloud
|
||||
inline InteractingKinematicCloud<ParcelType>& cloud();
|
||||
|
||||
//- Return const access to the constant properties
|
||||
inline const constantProperties& constProps() const;
|
||||
|
||||
//- Return conat access to the interpolator for continuous
|
||||
// phase density field
|
||||
inline const interpolation<scalar>& rhoInterp() const;
|
||||
|
||||
//- Return conat access to the interpolator for continuous
|
||||
// phase velocity field
|
||||
inline const interpolation<vector>& UInterp() const;
|
||||
|
||||
//- Return conat access to the interpolator for continuous
|
||||
// phase dynamic viscosity field
|
||||
inline const interpolation<scalar>& muInterp() const;
|
||||
|
||||
// Return const access to the gravitational acceleration vector
|
||||
inline const vector& g() const;
|
||||
};
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Protected data
|
||||
|
||||
// Parcel properties
|
||||
|
||||
//- Parcel type id
|
||||
label typeId_;
|
||||
|
||||
//- Number of particles in Parcel
|
||||
scalar nParticle_;
|
||||
|
||||
//- Diameter [m]
|
||||
scalar d_;
|
||||
|
||||
//- Velocity of Parcel [m/s]
|
||||
vector U_;
|
||||
|
||||
//- Density [kg/m3]
|
||||
scalar rho_;
|
||||
|
||||
//- Time spent in turbulent eddy [s]
|
||||
scalar tTurb_;
|
||||
|
||||
//- Turbulent velocity fluctuation [m/s]
|
||||
vector UTurb_;
|
||||
|
||||
|
||||
// Cell-based quantities
|
||||
|
||||
//- Density [kg/m3]
|
||||
scalar rhoc_;
|
||||
|
||||
//- Velocity [m/s]
|
||||
vector Uc_;
|
||||
|
||||
//- Viscosity [Pa.s]
|
||||
scalar muc_;
|
||||
|
||||
|
||||
// Protected member functions
|
||||
|
||||
//- Calculate new particle velocity
|
||||
template<class TrackData>
|
||||
const vector calcVelocity
|
||||
(
|
||||
TrackData& td,
|
||||
const scalar dt, // timestep
|
||||
const label cellI, // owner cell
|
||||
const scalar d, // diameter
|
||||
const vector& U, // velocity
|
||||
const scalar rho, // density
|
||||
const scalar mass, // mass
|
||||
const vector& Su, // explicit particle momentum source
|
||||
vector& dUTrans // momentum transfer to carrier
|
||||
) const;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// Static data members
|
||||
|
||||
//- String representation of properties
|
||||
static string propHeader;
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("InteractingKinematicParcel");
|
||||
|
||||
|
||||
friend class Cloud<ParcelType>;
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from owner, position, and cloud owner
|
||||
// Other properties initialised as null
|
||||
inline InteractingKinematicParcel
|
||||
(
|
||||
InteractingKinematicCloud<ParcelType>& owner,
|
||||
const vector& position,
|
||||
const label cellI
|
||||
);
|
||||
|
||||
//- Construct from components
|
||||
inline InteractingKinematicParcel
|
||||
(
|
||||
InteractingKinematicCloud<ParcelType>& owner,
|
||||
const vector& position,
|
||||
const label cellI,
|
||||
const label typeId,
|
||||
const scalar nParticle0,
|
||||
const scalar d0,
|
||||
const vector& U0,
|
||||
const constantProperties& constProps
|
||||
);
|
||||
|
||||
//- Construct from Istream
|
||||
InteractingKinematicParcel
|
||||
(
|
||||
const Cloud<ParcelType>& c,
|
||||
Istream& is,
|
||||
bool readFields = true
|
||||
);
|
||||
|
||||
//- Construct as a copy
|
||||
InteractingKinematicParcel(const InteractingKinematicParcel& p);
|
||||
|
||||
//- Construct and return a clone
|
||||
autoPtr<InteractingKinematicParcel> clone() const
|
||||
{
|
||||
return autoPtr<InteractingKinematicParcel>
|
||||
(
|
||||
new InteractingKinematicParcel(*this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Access
|
||||
|
||||
//- Return const access to type id
|
||||
inline label typeId() const;
|
||||
|
||||
//- Return const access to number of particles
|
||||
inline scalar nParticle() const;
|
||||
|
||||
//- Return const access to diameter
|
||||
inline scalar d() const;
|
||||
|
||||
//- Return const access to velocity
|
||||
inline const vector& U() const;
|
||||
|
||||
//- Return const access to density
|
||||
inline scalar rho() const;
|
||||
|
||||
//- Return const access to time spent in turbulent eddy
|
||||
inline scalar tTurb() const;
|
||||
|
||||
//- Return const access to turbulent velocity fluctuation
|
||||
inline const vector& UTurb() const;
|
||||
|
||||
|
||||
// Edit
|
||||
|
||||
//- Return access to type id
|
||||
inline label typeId();
|
||||
|
||||
//- Return access to number of particles
|
||||
inline scalar& nParticle();
|
||||
|
||||
//- Return access to diameter
|
||||
inline scalar& d();
|
||||
|
||||
//- Return access to velocity
|
||||
inline vector& U();
|
||||
|
||||
//- Return access to density
|
||||
inline scalar& rho();
|
||||
|
||||
//- Return access to time spent in turbulent eddy
|
||||
inline scalar& tTurb();
|
||||
|
||||
//- Return access to turbulent velocity fluctuation
|
||||
inline vector& UTurb();
|
||||
|
||||
|
||||
// Helper functions
|
||||
|
||||
//- The nearest distance to a wall that
|
||||
// the particle can be in the n direction
|
||||
inline scalar wallImpactDistance(const vector& n) const;
|
||||
|
||||
//- Return the index of the face to be used in the interpolation
|
||||
// routine
|
||||
inline label faceInterpolation() const;
|
||||
|
||||
//- Cell owner mass
|
||||
inline scalar massCell(const label cellI) const;
|
||||
|
||||
//- Particle mass
|
||||
inline scalar mass() const;
|
||||
|
||||
//- Particle volume
|
||||
inline scalar volume() const;
|
||||
|
||||
//- Particle volume for a given diameter
|
||||
inline scalar volume(const scalar d) const;
|
||||
|
||||
//- Particle projected area
|
||||
inline scalar areaP() const;
|
||||
|
||||
//- Projected area for given diameter
|
||||
inline scalar areaP(const scalar d) const;
|
||||
|
||||
//- Particle surface area
|
||||
inline scalar areaS() const;
|
||||
|
||||
//- Surface area for given diameter
|
||||
inline scalar areaS(const scalar d) const;
|
||||
|
||||
|
||||
// Main calculation loop
|
||||
|
||||
//- Set cell values
|
||||
template<class TrackData>
|
||||
void setCellValues
|
||||
(
|
||||
TrackData& td,
|
||||
const scalar dt,
|
||||
const label cellI
|
||||
);
|
||||
|
||||
//- Correct cell values using latest transfer information
|
||||
template<class TrackData>
|
||||
void cellValueSourceCorrection
|
||||
(
|
||||
TrackData& td,
|
||||
const scalar dt,
|
||||
const label cellI
|
||||
);
|
||||
|
||||
//- Update parcel properties over the time interval
|
||||
template<class TrackData>
|
||||
void calc
|
||||
(
|
||||
TrackData& td,
|
||||
const scalar dt,
|
||||
const label cellI
|
||||
);
|
||||
|
||||
|
||||
// Tracking
|
||||
|
||||
//- Move the parcel
|
||||
template<class TrackData>
|
||||
bool move(TrackData& td);
|
||||
|
||||
|
||||
// Patch interactions
|
||||
|
||||
//- Overridable function to handle the particle hitting a patch
|
||||
// Executed before other patch-hitting functions
|
||||
template<class TrackData>
|
||||
bool hitPatch
|
||||
(
|
||||
const polyPatch& p,
|
||||
TrackData& td,
|
||||
const label patchI
|
||||
);
|
||||
|
||||
|
||||
//- Overridable function to handle the particle hitting a patch
|
||||
// Executed before other patch-hitting functions without trackData
|
||||
bool hitPatch
|
||||
(
|
||||
const polyPatch& p,
|
||||
int& td,
|
||||
const label patchI
|
||||
);
|
||||
|
||||
|
||||
//- Overridable function to handle the particle hitting a
|
||||
// processorPatch
|
||||
template<class TrackData>
|
||||
void hitProcessorPatch
|
||||
(
|
||||
const processorPolyPatch&,
|
||||
TrackData& td
|
||||
);
|
||||
|
||||
//- Overridable function to handle the particle hitting a
|
||||
// processorPatch without trackData
|
||||
void hitProcessorPatch
|
||||
(
|
||||
const processorPolyPatch&,
|
||||
int&
|
||||
);
|
||||
|
||||
//- Overridable function to handle the particle hitting a wallPatch
|
||||
template<class TrackData>
|
||||
void hitWallPatch
|
||||
(
|
||||
const wallPolyPatch&,
|
||||
TrackData& td
|
||||
);
|
||||
|
||||
//- Overridable function to handle the particle hitting a wallPatch
|
||||
// without trackData
|
||||
void hitWallPatch
|
||||
(
|
||||
const wallPolyPatch&,
|
||||
int&
|
||||
);
|
||||
|
||||
//- Overridable function to handle the particle hitting a polyPatch
|
||||
template<class TrackData>
|
||||
void hitPatch
|
||||
(
|
||||
const polyPatch&,
|
||||
TrackData& td
|
||||
);
|
||||
|
||||
//- Overridable function to handle the particle hitting a polyPatch
|
||||
//- without trackData
|
||||
void hitPatch
|
||||
(
|
||||
const polyPatch&,
|
||||
int&
|
||||
);
|
||||
|
||||
//- Transform the physical properties of the particle
|
||||
// according to the given transformation tensor
|
||||
void transformProperties(const tensor& T);
|
||||
|
||||
//- Transform the physical properties of the particle
|
||||
// according to the given separation vector
|
||||
void transformProperties(const vector& separation);
|
||||
|
||||
|
||||
// I-O
|
||||
|
||||
//- Read
|
||||
static void readFields(InteractingKinematicCloud<ParcelType>& c);
|
||||
|
||||
//- Write
|
||||
static void writeFields
|
||||
(
|
||||
const InteractingKinematicCloud<ParcelType>& c
|
||||
);
|
||||
|
||||
|
||||
// Ostream Operator
|
||||
|
||||
friend Ostream& operator<< <ParcelType>
|
||||
(
|
||||
Ostream&,
|
||||
const InteractingKinematicParcel<ParcelType>&
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "InteractingKinematicParcelI.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define defineParcelTypeNameAndDebug(Type, DebugSwitch) \
|
||||
template<> \
|
||||
const Foam::word InteractingKinematicParcel<Type>::typeName(#Type); \
|
||||
template<> \
|
||||
int InteractingKinematicParcel<Type>::debug \
|
||||
( \
|
||||
Foam::debug::debugSwitch(#Type, DebugSwitch) \
|
||||
);
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
#include "InteractingKinematicParcel.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,394 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::InteractingKinematicParcel<ParcelType>::
|
||||
constantProperties::constantProperties
|
||||
(
|
||||
const dictionary& parentDict
|
||||
)
|
||||
:
|
||||
dict_(parentDict.subDict("constantProperties")),
|
||||
rhoMin_(dimensionedScalar(dict_.lookup("rhoMin")).value()),
|
||||
rho0_(dimensionedScalar(dict_.lookup("rho0")).value()),
|
||||
minParticleMass_
|
||||
(
|
||||
dimensionedScalar(dict_.lookup("minParticleMass")).value()
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::InteractingKinematicParcel<ParcelType>::trackData::trackData
|
||||
(
|
||||
InteractingKinematicCloud<ParcelType>& cloud,
|
||||
const constantProperties& constProps,
|
||||
const interpolation<scalar>& rhoInterp,
|
||||
const interpolation<vector>& UInterp,
|
||||
const interpolation<scalar>& muInterp,
|
||||
const vector& g
|
||||
)
|
||||
:
|
||||
Particle<ParcelType>::trackData(cloud),
|
||||
cloud_(cloud),
|
||||
constProps_(constProps),
|
||||
rhoInterp_(rhoInterp),
|
||||
UInterp_(UInterp),
|
||||
muInterp_(muInterp),
|
||||
g_(g)
|
||||
{}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
|
||||
(
|
||||
InteractingKinematicCloud<ParcelType>& owner,
|
||||
const vector& position,
|
||||
const label cellI
|
||||
)
|
||||
:
|
||||
Particle<ParcelType>(owner, position, cellI),
|
||||
typeId_(owner.parcelTypeId()),
|
||||
nParticle_(0),
|
||||
d_(0.0),
|
||||
U_(vector::zero),
|
||||
rho_(0.0),
|
||||
tTurb_(0.0),
|
||||
UTurb_(vector::zero),
|
||||
rhoc_(0.0),
|
||||
Uc_(vector::zero),
|
||||
muc_(0.0)
|
||||
{}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
|
||||
(
|
||||
InteractingKinematicCloud<ParcelType>& owner,
|
||||
const vector& position,
|
||||
const label cellI,
|
||||
const label typeId,
|
||||
const scalar nParticle0,
|
||||
const scalar d0,
|
||||
const vector& U0,
|
||||
const constantProperties& constProps
|
||||
)
|
||||
:
|
||||
Particle<ParcelType>(owner, position, cellI),
|
||||
typeId_(typeId),
|
||||
nParticle_(nParticle0),
|
||||
d_(d0),
|
||||
U_(U0),
|
||||
rho_(constProps.rho0()),
|
||||
tTurb_(0.0),
|
||||
UTurb_(vector::zero),
|
||||
rhoc_(0.0),
|
||||
Uc_(vector::zero),
|
||||
muc_(0.0)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * constantProperties Member Functions * * * * * * * * * * //
|
||||
|
||||
template <class ParcelType>
|
||||
inline const Foam::dictionary&
|
||||
Foam::InteractingKinematicParcel<ParcelType>::constantProperties::dict() const
|
||||
{
|
||||
return dict_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar
|
||||
Foam::InteractingKinematicParcel<ParcelType>::constantProperties::rhoMin() const
|
||||
{
|
||||
return rhoMin_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar
|
||||
Foam::InteractingKinematicParcel<ParcelType>::constantProperties::rho0() const
|
||||
{
|
||||
return rho0_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar
|
||||
Foam::InteractingKinematicParcel<ParcelType>::
|
||||
constantProperties::minParticleMass() const
|
||||
{
|
||||
return minParticleMass_;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * trackData Member Functions * * * * * * * * * * * * //
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::InteractingKinematicCloud<ParcelType>&
|
||||
Foam::InteractingKinematicParcel<ParcelType>::trackData::cloud()
|
||||
{
|
||||
return cloud_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline
|
||||
const typename Foam::InteractingKinematicParcel<ParcelType>::constantProperties&
|
||||
Foam::InteractingKinematicParcel<ParcelType>::trackData::constProps() const
|
||||
{
|
||||
return constProps_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::interpolation<Foam::scalar>&
|
||||
Foam::InteractingKinematicParcel<ParcelType>::trackData::rhoInterp() const
|
||||
{
|
||||
return rhoInterp_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline const Foam::interpolation<Foam::vector>&
|
||||
Foam::InteractingKinematicParcel<ParcelType>::trackData::UInterp() const
|
||||
{
|
||||
return UInterp_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::interpolation<Foam::scalar>&
|
||||
Foam::InteractingKinematicParcel<ParcelType>::trackData::muInterp() const
|
||||
{
|
||||
return muInterp_;
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
inline const Foam::vector&
|
||||
Foam::InteractingKinematicParcel<ParcelType>::trackData::g() const
|
||||
{
|
||||
return g_;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * InteractingKinematicParcel Member Functions * * * * * * * //
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::label Foam::InteractingKinematicParcel<ParcelType>::typeId() const
|
||||
{
|
||||
return typeId_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar
|
||||
Foam::InteractingKinematicParcel<ParcelType>::nParticle() const
|
||||
{
|
||||
return nParticle_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::d() const
|
||||
{
|
||||
return d_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline const Foam::vector&
|
||||
Foam::InteractingKinematicParcel<ParcelType>::U() const
|
||||
{
|
||||
return U_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::rho() const
|
||||
{
|
||||
return rho_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::tTurb() const
|
||||
{
|
||||
return tTurb_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline const Foam::vector&
|
||||
Foam::InteractingKinematicParcel<ParcelType>::UTurb() const
|
||||
{
|
||||
return UTurb_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::label Foam::InteractingKinematicParcel<ParcelType>::typeId()
|
||||
{
|
||||
return typeId_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar& Foam::InteractingKinematicParcel<ParcelType>::nParticle()
|
||||
{
|
||||
return nParticle_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar& Foam::InteractingKinematicParcel<ParcelType>::d()
|
||||
{
|
||||
return d_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::vector& Foam::InteractingKinematicParcel<ParcelType>::U()
|
||||
{
|
||||
return U_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar& Foam::InteractingKinematicParcel<ParcelType>::rho()
|
||||
{
|
||||
return rho_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar& Foam::InteractingKinematicParcel<ParcelType>::tTurb()
|
||||
{
|
||||
return tTurb_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::vector& Foam::InteractingKinematicParcel<ParcelType>::UTurb()
|
||||
{
|
||||
return UTurb_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar
|
||||
Foam::InteractingKinematicParcel<ParcelType>::wallImpactDistance
|
||||
(
|
||||
const vector&
|
||||
) const
|
||||
{
|
||||
return 0.5*d_;
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::label
|
||||
Foam::InteractingKinematicParcel<ParcelType>::faceInterpolation() const
|
||||
{
|
||||
// Use volume-based interpolation if dealing with external faces
|
||||
if (this->cloud().internalFace(this->face()))
|
||||
{
|
||||
return this->face();
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::massCell
|
||||
(
|
||||
const label cellI
|
||||
) const
|
||||
{
|
||||
return rhoc_*this->cloud().pMesh().cellVolumes()[cellI];
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::mass() const
|
||||
{
|
||||
return rho_*volume();
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::volume() const
|
||||
{
|
||||
return volume(d_);
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar
|
||||
Foam::InteractingKinematicParcel<ParcelType>::volume(const scalar d) const
|
||||
{
|
||||
return mathematicalConstant::pi/6.0*pow3(d);
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::areaP() const
|
||||
{
|
||||
return areaP(d_);
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar
|
||||
Foam::InteractingKinematicParcel<ParcelType>::areaP(const scalar d) const
|
||||
{
|
||||
return 0.25*areaS(d);
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::areaS() const
|
||||
{
|
||||
return areaS(d_);
|
||||
}
|
||||
|
||||
|
||||
template <class ParcelType>
|
||||
inline Foam::scalar
|
||||
Foam::InteractingKinematicParcel<ParcelType>::areaS(const scalar d) const
|
||||
{
|
||||
return mathematicalConstant::pi*d*d;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,249 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "InteractingKinematicParcel.H"
|
||||
#include "IOstreams.H"
|
||||
#include "IOField.H"
|
||||
#include "Cloud.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
template <class ParcelType>
|
||||
Foam::string Foam::InteractingKinematicParcel<ParcelType>::propHeader =
|
||||
Particle<ParcelType>::propHeader
|
||||
+ " typeId"
|
||||
+ " nParticle"
|
||||
+ " d"
|
||||
+ " (Ux Uy Uz)"
|
||||
+ " rho"
|
||||
+ " tTurb"
|
||||
+ " UTurb";
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template <class ParcelType>
|
||||
Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
|
||||
(
|
||||
const Cloud<ParcelType>& cloud,
|
||||
Istream& is,
|
||||
bool readFields
|
||||
)
|
||||
:
|
||||
Particle<ParcelType>(cloud, is, readFields),
|
||||
typeId_(0),
|
||||
nParticle_(0.0),
|
||||
d_(0.0),
|
||||
U_(vector::zero),
|
||||
rho_(0.0),
|
||||
tTurb_(0.0),
|
||||
UTurb_(vector::zero),
|
||||
rhoc_(0.0),
|
||||
Uc_(vector::zero),
|
||||
muc_(0.0)
|
||||
{
|
||||
if (readFields)
|
||||
{
|
||||
if (is.format() == IOstream::ASCII)
|
||||
{
|
||||
typeId_ = readLabel(is);
|
||||
nParticle_ = readScalar(is);
|
||||
d_ = readScalar(is);
|
||||
is >> U_;
|
||||
rho_ = readScalar(is);
|
||||
tTurb_ = readScalar(is);
|
||||
is >> UTurb_;
|
||||
}
|
||||
else
|
||||
{
|
||||
is.read
|
||||
(
|
||||
reinterpret_cast<char*>(&typeId_),
|
||||
sizeof(typeId_)
|
||||
+ sizeof(nParticle_)
|
||||
+ sizeof(d_)
|
||||
+ sizeof(U_)
|
||||
+ sizeof(rho_)
|
||||
+ sizeof(tTurb_)
|
||||
+ sizeof(UTurb_)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Check state of Istream
|
||||
is.check
|
||||
(
|
||||
"InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel"
|
||||
"(const Cloud<ParcelType>&, Istream&, bool)"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::readFields
|
||||
(
|
||||
InteractingKinematicCloud<ParcelType>& c
|
||||
)
|
||||
{
|
||||
if (!c.size())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
IOField<label> typeId(c.fieldIOobject("typeId", IOobject::MUST_READ));
|
||||
c.checkFieldIOobject(c, typeId);
|
||||
|
||||
IOField<scalar>
|
||||
nParticle(c.fieldIOobject("nParticle", IOobject::MUST_READ));
|
||||
c.checkFieldIOobject(c, nParticle);
|
||||
|
||||
IOField<scalar> d(c.fieldIOobject("d", IOobject::MUST_READ));
|
||||
c.checkFieldIOobject(c, d);
|
||||
|
||||
IOField<vector> U(c.fieldIOobject("U", IOobject::MUST_READ));
|
||||
c.checkFieldIOobject(c, U);
|
||||
|
||||
IOField<scalar> rho(c.fieldIOobject("rho", IOobject::MUST_READ));
|
||||
c.checkFieldIOobject(c, rho);
|
||||
|
||||
IOField<scalar> tTurb(c.fieldIOobject("tTurb", IOobject::MUST_READ));
|
||||
c.checkFieldIOobject(c, tTurb);
|
||||
|
||||
IOField<vector> UTurb(c.fieldIOobject("UTurb", IOobject::MUST_READ));
|
||||
c.checkFieldIOobject(c, UTurb);
|
||||
|
||||
label i = 0;
|
||||
forAllIter(typename Cloud<ParcelType>, c, iter)
|
||||
{
|
||||
ParcelType& p = iter();
|
||||
|
||||
p.typeId_ = typeId[i];
|
||||
p.nParticle_ = nParticle[i];
|
||||
p.d_ = d[i];
|
||||
p.U_ = U[i];
|
||||
p.rho_ = rho[i];
|
||||
p.tTurb_ = tTurb[i];
|
||||
p.UTurb_ = UTurb[i];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<class ParcelType>
|
||||
void Foam::InteractingKinematicParcel<ParcelType>::writeFields
|
||||
(
|
||||
const InteractingKinematicCloud<ParcelType>& c
|
||||
)
|
||||
{
|
||||
Particle<ParcelType>::writeFields(c);
|
||||
|
||||
label np = c.size();
|
||||
|
||||
IOField<label> typeId(c.fieldIOobject("typeId", IOobject::NO_READ), np);
|
||||
IOField<scalar> nParticle
|
||||
(
|
||||
c.fieldIOobject("nParticle", IOobject::NO_READ),
|
||||
np
|
||||
);
|
||||
IOField<scalar> d(c.fieldIOobject("d", IOobject::NO_READ), np);
|
||||
IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
|
||||
IOField<scalar> rho(c.fieldIOobject("rho", IOobject::NO_READ), np);
|
||||
IOField<scalar> tTurb(c.fieldIOobject("tTurb", IOobject::NO_READ), np);
|
||||
IOField<vector> UTurb(c.fieldIOobject("UTurb", IOobject::NO_READ), np);
|
||||
|
||||
label i = 0;
|
||||
forAllConstIter(typename Cloud<ParcelType>, c, iter)
|
||||
{
|
||||
const InteractingKinematicParcel<ParcelType>& p = iter();
|
||||
|
||||
typeId[i] = p.typeId();
|
||||
nParticle[i] = p.nParticle();
|
||||
d[i] = p.d();
|
||||
U[i] = p.U();
|
||||
rho[i] = p.rho();
|
||||
tTurb[i] = p.tTurb();
|
||||
UTurb[i] = p.UTurb();
|
||||
i++;
|
||||
}
|
||||
|
||||
typeId.write();
|
||||
nParticle.write();
|
||||
d.write();
|
||||
U.write();
|
||||
rho.write();
|
||||
tTurb.write();
|
||||
UTurb.write();
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * //
|
||||
|
||||
template<class ParcelType>
|
||||
Foam::Ostream& Foam::operator<<
|
||||
(
|
||||
Ostream& os,
|
||||
const InteractingKinematicParcel<ParcelType>& p
|
||||
)
|
||||
{
|
||||
if (os.format() == IOstream::ASCII)
|
||||
{
|
||||
os << static_cast<const Particle<ParcelType>&>(p)
|
||||
<< token::SPACE << p.typeId()
|
||||
<< token::SPACE << p.nParticle()
|
||||
<< token::SPACE << p.d()
|
||||
<< token::SPACE << p.U()
|
||||
<< token::SPACE << p.rho()
|
||||
<< token::SPACE << p.tTurb()
|
||||
<< token::SPACE << p.UTurb();
|
||||
}
|
||||
else
|
||||
{
|
||||
os << static_cast<const Particle<ParcelType>&>(p);
|
||||
os.write
|
||||
(
|
||||
reinterpret_cast<const char*>(&p.typeId_),
|
||||
sizeof(p.typeId())
|
||||
+ sizeof(p.nParticle())
|
||||
+ sizeof(p.d())
|
||||
+ sizeof(p.U())
|
||||
+ sizeof(p.rho())
|
||||
+ sizeof(p.tTurb())
|
||||
+ sizeof(p.UTurb())
|
||||
);
|
||||
}
|
||||
|
||||
// Check state of Ostream
|
||||
os.check
|
||||
(
|
||||
"Ostream& operator<< " \
|
||||
"(Ostream&, const InteractingKinematicParcel<ParcelType>&)"
|
||||
);
|
||||
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -37,7 +37,7 @@ void Foam::ThermoParcel<ParcelType>::setCellValues
|
||||
const label cellI
|
||||
)
|
||||
{
|
||||
KinematicParcel<ParcelType>::setCellValues(td, dt, cellI);
|
||||
InteractingKinematicParcel<ParcelType>::setCellValues(td, dt, cellI);
|
||||
|
||||
cpc_ = td.cpInterp().interpolate(this->position(), cellI);
|
||||
|
||||
@ -224,7 +224,7 @@ Foam::ThermoParcel<ParcelType>::ThermoParcel
|
||||
const ThermoParcel<ParcelType>& p
|
||||
)
|
||||
:
|
||||
KinematicParcel<ParcelType>(p),
|
||||
InteractingKinematicParcel<ParcelType>(p),
|
||||
T_(p.T_),
|
||||
cp_(p.cp_),
|
||||
Tc_(p.Tc_),
|
||||
|
||||
@ -27,7 +27,7 @@ Class
|
||||
|
||||
Description
|
||||
Thermodynamic parcel class with one/two-way coupling with the continuous
|
||||
phase. Includes Kinematic parcel sub-models, plus:
|
||||
phase. Includes InteractingKinematic parcel sub-models, plus:
|
||||
- heat transfer
|
||||
|
||||
SourceFiles
|
||||
@ -45,7 +45,7 @@ SourceFiles
|
||||
#include "interpolationCellPoint.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
#include "KinematicParcel.H"
|
||||
#include "InteractingKinematicParcel.H"
|
||||
#include "ThermoCloud.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -70,14 +70,14 @@ Ostream& operator<<
|
||||
template<class ParcelType>
|
||||
class ThermoParcel
|
||||
:
|
||||
public KinematicParcel<ParcelType>
|
||||
public InteractingKinematicParcel<ParcelType>
|
||||
{
|
||||
public:
|
||||
|
||||
//- Class to hold thermo particle constant properties
|
||||
class constantProperties
|
||||
:
|
||||
public KinematicParcel<ParcelType>::constantProperties
|
||||
public InteractingKinematicParcel<ParcelType>::constantProperties
|
||||
{
|
||||
|
||||
// Private data
|
||||
@ -130,7 +130,7 @@ public:
|
||||
//- Class used to pass thermo tracking data to the trackToFace function
|
||||
class trackData
|
||||
:
|
||||
public KinematicParcel<ParcelType>::trackData
|
||||
public InteractingKinematicParcel<ParcelType>::trackData
|
||||
{
|
||||
|
||||
// Private data
|
||||
|
||||
@ -32,7 +32,7 @@ inline Foam::ThermoParcel<ParcelType>::constantProperties::constantProperties
|
||||
const dictionary& parentDict
|
||||
)
|
||||
:
|
||||
KinematicParcel<ParcelType>::constantProperties(parentDict),
|
||||
InteractingKinematicParcel<ParcelType>::constantProperties(parentDict),
|
||||
T0_(dimensionedScalar(this->dict().lookup("T0")).value()),
|
||||
TMin_(dimensionedScalar(this->dict().lookup("TMin")).value()),
|
||||
cp0_(dimensionedScalar(this->dict().lookup("cp0")).value()),
|
||||
@ -54,7 +54,7 @@ inline Foam::ThermoParcel<ParcelType>::trackData::trackData
|
||||
const vector& g
|
||||
)
|
||||
:
|
||||
KinematicParcel<ParcelType>::trackData
|
||||
InteractingKinematicParcel<ParcelType>::trackData
|
||||
(
|
||||
cloud,
|
||||
constProps,
|
||||
@ -78,7 +78,7 @@ inline Foam::ThermoParcel<ParcelType>::ThermoParcel
|
||||
const label cellI
|
||||
)
|
||||
:
|
||||
KinematicParcel<ParcelType>(owner, position, cellI),
|
||||
InteractingKinematicParcel<ParcelType>(owner, position, cellI),
|
||||
T_(0.0),
|
||||
cp_(0.0),
|
||||
Tc_(0.0),
|
||||
@ -99,7 +99,7 @@ inline Foam::ThermoParcel<ParcelType>::ThermoParcel
|
||||
const constantProperties& constProps
|
||||
)
|
||||
:
|
||||
KinematicParcel<ParcelType>
|
||||
InteractingKinematicParcel<ParcelType>
|
||||
(
|
||||
owner,
|
||||
position,
|
||||
|
||||
@ -31,7 +31,7 @@ License
|
||||
|
||||
template <class ParcelType>
|
||||
Foam::string Foam::ThermoParcel<ParcelType>::propHeader =
|
||||
KinematicParcel<ParcelType>::propHeader
|
||||
InteractingKinematicParcel<ParcelType>::propHeader
|
||||
+ " T"
|
||||
+ " cp";
|
||||
|
||||
@ -46,7 +46,7 @@ Foam::ThermoParcel<ParcelType>::ThermoParcel
|
||||
bool readFields
|
||||
)
|
||||
:
|
||||
KinematicParcel<ParcelType>(cloud, is, readFields),
|
||||
InteractingKinematicParcel<ParcelType>(cloud, is, readFields),
|
||||
T_(0.0),
|
||||
cp_(0.0),
|
||||
Tc_(0.0),
|
||||
@ -89,7 +89,7 @@ void Foam::ThermoParcel<ParcelType>::readFields
|
||||
return;
|
||||
}
|
||||
|
||||
KinematicParcel<ParcelType>::readFields(c);
|
||||
InteractingKinematicParcel<ParcelType>::readFields(c);
|
||||
|
||||
IOField<scalar> T(c.fieldIOobject("T", IOobject::MUST_READ));
|
||||
c.checkFieldIOobject(c, T);
|
||||
@ -116,7 +116,7 @@ void Foam::ThermoParcel<ParcelType>::writeFields
|
||||
const ThermoCloud<ParcelType>& c
|
||||
)
|
||||
{
|
||||
KinematicParcel<ParcelType>::writeFields(c);
|
||||
InteractingKinematicParcel<ParcelType>::writeFields(c);
|
||||
|
||||
label np = c.size();
|
||||
|
||||
@ -149,13 +149,13 @@ Foam::Ostream& Foam::operator<<
|
||||
{
|
||||
if (os.format() == IOstream::ASCII)
|
||||
{
|
||||
os << static_cast<const KinematicParcel<ParcelType>&>(p)
|
||||
os << static_cast<const InteractingKinematicParcel<ParcelType>&>(p)
|
||||
<< token::SPACE << p.T()
|
||||
<< token::SPACE << p.cp();
|
||||
}
|
||||
else
|
||||
{
|
||||
os << static_cast<const KinematicParcel<ParcelType>&>(p);
|
||||
os << static_cast<const InteractingKinematicParcel<ParcelType>&>(p);
|
||||
os.write
|
||||
(
|
||||
reinterpret_cast<const char*>(&p.T_),
|
||||
|
||||
@ -0,0 +1,114 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "basicInteractingKinematicParcel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
defineTypeNameAndDebug(basicInteractingKinematicParcel, 0);
|
||||
defineParticleTypeNameAndDebug(basicInteractingKinematicParcel, 0);
|
||||
defineParcelTypeNameAndDebug(basicInteractingKinematicParcel, 0);
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::basicInteractingKinematicParcel::basicInteractingKinematicParcel
|
||||
(
|
||||
InteractingKinematicCloud<basicInteractingKinematicParcel>& owner,
|
||||
const vector& position,
|
||||
const label cellI
|
||||
)
|
||||
:
|
||||
InteractingKinematicParcel<basicInteractingKinematicParcel>
|
||||
(
|
||||
owner,
|
||||
position,
|
||||
cellI
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
Foam::basicInteractingKinematicParcel::basicInteractingKinematicParcel
|
||||
(
|
||||
InteractingKinematicCloud<basicInteractingKinematicParcel>& owner,
|
||||
const vector& position,
|
||||
const label cellI,
|
||||
const label typeId,
|
||||
const scalar nParticle0,
|
||||
const scalar d0,
|
||||
const vector& U0,
|
||||
const constantProperties& constProps
|
||||
)
|
||||
:
|
||||
InteractingKinematicParcel<basicInteractingKinematicParcel>
|
||||
(
|
||||
owner,
|
||||
position,
|
||||
cellI,
|
||||
typeId,
|
||||
nParticle0,
|
||||
d0,
|
||||
U0,
|
||||
constProps
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
Foam::basicInteractingKinematicParcel::basicInteractingKinematicParcel
|
||||
(
|
||||
const Cloud<basicInteractingKinematicParcel>& cloud,
|
||||
Istream& is,
|
||||
bool readFields
|
||||
)
|
||||
:
|
||||
InteractingKinematicParcel<basicInteractingKinematicParcel>
|
||||
(
|
||||
cloud,
|
||||
is,
|
||||
readFields
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
Foam::basicInteractingKinematicParcel::basicInteractingKinematicParcel
|
||||
(
|
||||
const basicInteractingKinematicParcel& p
|
||||
)
|
||||
:
|
||||
InteractingKinematicParcel<basicInteractingKinematicParcel>(p)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::basicInteractingKinematicParcel::~basicInteractingKinematicParcel()
|
||||
{}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,130 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
Foam::basicInteractingKinematicParcel
|
||||
|
||||
Description
|
||||
|
||||
|
||||
SourceFiles
|
||||
basicInteractingKinematicParcel.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef basicInteractingKinematicParcel_H
|
||||
#define basicInteractingKinematicParcel_H
|
||||
|
||||
#include "InteractingKinematicParcel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class basicInteractingKinematicParcel Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class basicInteractingKinematicParcel
|
||||
:
|
||||
public InteractingKinematicParcel<basicInteractingKinematicParcel>
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
//- Run-time type information
|
||||
TypeName("basicInteractingKinematicParcel");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from owner, position, and cloud owner
|
||||
// Other properties initialised as null
|
||||
basicInteractingKinematicParcel
|
||||
(
|
||||
InteractingKinematicCloud<basicInteractingKinematicParcel>& owner,
|
||||
const vector& position,
|
||||
const label cellI
|
||||
);
|
||||
|
||||
//- Construct from components
|
||||
basicInteractingKinematicParcel
|
||||
(
|
||||
InteractingKinematicCloud<basicInteractingKinematicParcel>& owner,
|
||||
const vector& position,
|
||||
const label cellI,
|
||||
const label typeId,
|
||||
const scalar nParticle0,
|
||||
const scalar d0,
|
||||
const vector& U0,
|
||||
const constantProperties& constProps
|
||||
);
|
||||
|
||||
//- Construct from Istream
|
||||
basicInteractingKinematicParcel
|
||||
(
|
||||
const Cloud<basicInteractingKinematicParcel>& c,
|
||||
Istream& is,
|
||||
bool readFields = true
|
||||
);
|
||||
|
||||
//- Construct as a copy
|
||||
basicInteractingKinematicParcel
|
||||
(
|
||||
const basicInteractingKinematicParcel& p
|
||||
);
|
||||
|
||||
//- Construct and return a clone
|
||||
autoPtr<basicInteractingKinematicParcel> clone() const
|
||||
{
|
||||
return
|
||||
autoPtr<basicInteractingKinematicParcel>
|
||||
(
|
||||
new basicInteractingKinematicParcel(*this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~basicInteractingKinematicParcel();
|
||||
};
|
||||
|
||||
|
||||
template<>
|
||||
inline bool contiguous<basicInteractingKinematicParcel>()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,46 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "basicInteractingKinematicParcel.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
#include "makeParcelIOList.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
defineTemplateTypeNameAndDebug(Cloud<basicInteractingKinematicParcel>, 0);
|
||||
|
||||
defineParcelTypeNameAndDebug
|
||||
(
|
||||
InteractingKinematicCloud<basicInteractingKinematicParcel>, 0
|
||||
);
|
||||
|
||||
makeParcelIOList(basicInteractingKinematicParcel);
|
||||
};
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,49 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2008-2009 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "basicInteractingKinematicParcel.H"
|
||||
|
||||
// InteractingKinematic
|
||||
#include "makeParcelDispersionModels.H"
|
||||
#include "makeParcelDragModels.H"
|
||||
#include "makeParcelInjectionModels.H"
|
||||
#include "makeParcelPatchInteractionModels.H"
|
||||
#include "makeParcelPostProcessingModels.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
// InteractingKinematic sub-models
|
||||
makeParcelDispersionModels(basicInteractingKinematicParcel);
|
||||
makeParcelDragModels(basicInteractingKinematicParcel);
|
||||
makeParcelInjectionModels(basicInteractingKinematicParcel);
|
||||
makeParcelPatchInteractionModels(basicInteractingKinematicParcel);
|
||||
makeParcelPostProcessingModels(basicInteractingKinematicParcel);
|
||||
};
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -34,11 +34,17 @@ namespace Foam
|
||||
{
|
||||
defineTemplateTypeNameAndDebug(Cloud<basicThermoParcel>, 0);
|
||||
|
||||
defineParcelTypeNameAndDebug(KinematicParcel<basicThermoParcel>, 0);
|
||||
defineParcelTypeNameAndDebug
|
||||
(
|
||||
InteractingKinematicParcel<basicThermoParcel>, 0
|
||||
);
|
||||
defineParcelTypeNameAndDebug(ThermoParcel<basicThermoParcel>, 0);
|
||||
defineTemplateTypeNameAndDebug(ThermoParcel<basicThermoParcel>, 0);
|
||||
|
||||
defineParcelTypeNameAndDebug(KinematicCloud<basicThermoParcel>, 0);
|
||||
defineParcelTypeNameAndDebug
|
||||
(
|
||||
InteractingKinematicCloud<basicThermoParcel>, 0
|
||||
);
|
||||
|
||||
defineParcelTypeNameAndDebug(ThermoCloud<basicThermoParcel>, 0);
|
||||
|
||||
|
||||
@ -61,10 +61,14 @@ License
|
||||
defineTemplateTypeNameAndDebug(Particle<ParcelType##ThermoType>, 0); \
|
||||
defineTemplateTypeNameAndDebug(Cloud<ParcelType##ThermoType>, 0); \
|
||||
\
|
||||
defineParcelTypeNameAndDebug(KinematicParcel<ParcelType##ThermoType>, 0); \
|
||||
defineParcelTypeNameAndDebug \
|
||||
( \
|
||||
InteractingKinematicParcel<ParcelType##ThermoType>, \
|
||||
0 \
|
||||
); \
|
||||
defineTemplateTypeNameAndDebug \
|
||||
( \
|
||||
KinematicParcel<ParcelType##ThermoType>, \
|
||||
InteractingKinematicParcel<ParcelType##ThermoType>, \
|
||||
0 \
|
||||
); \
|
||||
defineParcelTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0); \
|
||||
@ -82,7 +86,11 @@ License
|
||||
0 \
|
||||
); \
|
||||
\
|
||||
defineParcelTypeNameAndDebug(KinematicCloud<ParcelType##ThermoType>, 0); \
|
||||
defineParcelTypeNameAndDebug \
|
||||
( \
|
||||
InteractingKinematicCloud<ParcelType##ThermoType>, \
|
||||
0 \
|
||||
); \
|
||||
defineParcelTypeNameAndDebug(ThermoCloud<ParcelType##ThermoType>, 0); \
|
||||
defineParcelTypeNameAndDebug(ReactingCloud<ParcelType##ThermoType>, 0); \
|
||||
defineParcelTypeNameAndDebug \
|
||||
|
||||
@ -49,10 +49,14 @@ License
|
||||
defineTemplateTypeNameAndDebug(Particle<ParcelType##ThermoType>, 0); \
|
||||
defineTemplateTypeNameAndDebug(Cloud<ParcelType##ThermoType>, 0); \
|
||||
\
|
||||
defineParcelTypeNameAndDebug(KinematicParcel<ParcelType##ThermoType>, 0); \
|
||||
defineParcelTypeNameAndDebug \
|
||||
( \
|
||||
InteractingKinematicParcel<ParcelType##ThermoType>, \
|
||||
0 \
|
||||
); \
|
||||
defineTemplateTypeNameAndDebug \
|
||||
( \
|
||||
KinematicParcel<ParcelType##ThermoType>, \
|
||||
InteractingKinematicParcel<ParcelType##ThermoType>, \
|
||||
0 \
|
||||
); \
|
||||
defineParcelTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0); \
|
||||
@ -60,7 +64,11 @@ License
|
||||
defineParcelTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0); \
|
||||
defineTemplateTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);\
|
||||
\
|
||||
defineParcelTypeNameAndDebug(KinematicCloud<ParcelType##ThermoType>, 0); \
|
||||
defineParcelTypeNameAndDebug \
|
||||
( \
|
||||
InteractingKinematicCloud<ParcelType##ThermoType>, \
|
||||
0 \
|
||||
); \
|
||||
defineParcelTypeNameAndDebug(ThermoCloud<ParcelType##ThermoType>, 0); \
|
||||
defineParcelTypeNameAndDebug(ReactingCloud<ParcelType##ThermoType>, 0);
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "NoDispersion.H"
|
||||
#include "GradientDispersionRAS.H"
|
||||
@ -39,30 +39,30 @@ License
|
||||
|
||||
#define makeParcelDispersionModels(ParcelType) \
|
||||
\
|
||||
makeDispersionModel(KinematicCloud<ParcelType>); \
|
||||
makeDispersionModel(InteractingKinematicCloud<ParcelType>); \
|
||||
\
|
||||
defineNamedTemplateTypeNameAndDebug \
|
||||
( \
|
||||
DispersionRASModel<KinematicCloud<ParcelType> >, \
|
||||
DispersionRASModel<InteractingKinematicCloud<ParcelType> >, \
|
||||
0 \
|
||||
); \
|
||||
\
|
||||
makeDispersionModelType \
|
||||
( \
|
||||
NoDispersion, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makeDispersionModelType \
|
||||
( \
|
||||
GradientDispersionRAS, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makeDispersionModelType \
|
||||
( \
|
||||
StochasticDispersionRAS, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
);
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "NoDrag.H"
|
||||
#include "SphereDrag.H"
|
||||
@ -38,10 +38,10 @@ License
|
||||
|
||||
#define makeParcelDragModels(ParcelType) \
|
||||
\
|
||||
makeDragModel(KinematicCloud<ParcelType>); \
|
||||
makeDragModel(InteractingKinematicCloud<ParcelType>); \
|
||||
\
|
||||
makeDragModelType(NoDrag, KinematicCloud, ParcelType); \
|
||||
makeDragModelType(SphereDrag, KinematicCloud, ParcelType);
|
||||
makeDragModelType(NoDrag, InteractingKinematicCloud, ParcelType); \
|
||||
makeDragModelType(SphereDrag, InteractingKinematicCloud, ParcelType);
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -29,7 +29,7 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "ConeInjection.H"
|
||||
#include "ConeInjectionMP.H"
|
||||
@ -43,48 +43,48 @@ License
|
||||
|
||||
#define makeParcelInjectionModels(ParcelType) \
|
||||
\
|
||||
makeInjectionModel(KinematicCloud<ParcelType>); \
|
||||
makeInjectionModel(InteractingKinematicCloud<ParcelType>); \
|
||||
\
|
||||
makeInjectionModelType \
|
||||
( \
|
||||
ConeInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makeInjectionModelType \
|
||||
( \
|
||||
ConeInjectionMP, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makeInjectionModelType \
|
||||
( \
|
||||
FieldActivatedInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makeInjectionModelType \
|
||||
( \
|
||||
KinematicLookupTableInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makeInjectionModelType \
|
||||
( \
|
||||
ManualInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makeInjectionModelType \
|
||||
( \
|
||||
NoInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makeInjectionModelType \
|
||||
( \
|
||||
PatchInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
);
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "LocalInteraction.H"
|
||||
#include "Rebound.H"
|
||||
@ -39,24 +39,24 @@ License
|
||||
|
||||
#define makeParcelPatchInteractionModels(ParcelType) \
|
||||
\
|
||||
makePatchInteractionModel(KinematicCloud<ParcelType>); \
|
||||
makePatchInteractionModel(InteractingKinematicCloud<ParcelType>); \
|
||||
\
|
||||
makePatchInteractionModelType \
|
||||
( \
|
||||
LocalInteraction, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makePatchInteractionModelType \
|
||||
( \
|
||||
Rebound, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makePatchInteractionModelType \
|
||||
( \
|
||||
StandardWallInteraction, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
);
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "NoPostProcessing.H"
|
||||
#include "PatchPostProcessing.H"
|
||||
@ -38,18 +38,18 @@ License
|
||||
|
||||
#define makeParcelPostProcessingModels(ParcelType) \
|
||||
\
|
||||
makePostProcessingModel(KinematicCloud<ParcelType>); \
|
||||
makePostProcessingModel(InteractingKinematicCloud<ParcelType>); \
|
||||
\
|
||||
makePostProcessingModelType \
|
||||
( \
|
||||
NoPostProcessing, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
); \
|
||||
makePostProcessingModelType \
|
||||
( \
|
||||
PatchPostProcessing, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType \
|
||||
);
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ License
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "thermoPhysicsTypes.H"
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "ConeInjection.H"
|
||||
#include "ConeInjectionMP.H"
|
||||
@ -64,47 +64,47 @@ License
|
||||
|
||||
#define makeReactingMultiphaseInjectionModelThermoType(ParcelType, ThermoType)\
|
||||
\
|
||||
makeInjectionModel(KinematicCloud<ParcelType<ThermoType> >); \
|
||||
makeInjectionModel(InteractingKinematicCloud<ParcelType<ThermoType> >); \
|
||||
\
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
ConeInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
ConeInjectionMP, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
FieldActivatedInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
ManualInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
NoInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
PatchInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
|
||||
@ -30,7 +30,7 @@ License
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "thermoPhysicsTypes.H"
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "NoDispersion.H"
|
||||
#include "GradientDispersionRAS.H"
|
||||
@ -61,32 +61,32 @@ License
|
||||
|
||||
#define makeReactingDispersionModelThermoType(ParcelType, ThermoType) \
|
||||
\
|
||||
makeDispersionModel(KinematicCloud<ParcelType<ThermoType> >); \
|
||||
makeDispersionModel(InteractingKinematicCloud<ParcelType<ThermoType> >); \
|
||||
\
|
||||
defineNamedTemplateTypeNameAndDebug \
|
||||
( \
|
||||
DispersionRASModel<KinematicCloud<ParcelType<ThermoType> > >, \
|
||||
DispersionRASModel<InteractingKinematicCloud<ParcelType<ThermoType> > >, \
|
||||
0 \
|
||||
); \
|
||||
\
|
||||
makeDispersionModelThermoType \
|
||||
( \
|
||||
NoDispersion, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeDispersionModelThermoType \
|
||||
( \
|
||||
GradientDispersionRAS, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeDispersionModelThermoType \
|
||||
( \
|
||||
StochasticDispersionRAS, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
);
|
||||
|
||||
@ -30,7 +30,7 @@ License
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "thermoPhysicsTypes.H"
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "NoDrag.H"
|
||||
#include "SphereDrag.H"
|
||||
@ -58,19 +58,19 @@ License
|
||||
|
||||
#define makeReactingDragModelThermoType(ParcelType, ThermoType) \
|
||||
\
|
||||
makeDragModel(KinematicCloud<ParcelType<ThermoType> >); \
|
||||
makeDragModel(InteractingKinematicCloud<ParcelType<ThermoType> >); \
|
||||
\
|
||||
makeDragModelThermoType \
|
||||
( \
|
||||
NoDrag, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeDragModelThermoType \
|
||||
( \
|
||||
SphereDrag, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
);
|
||||
|
||||
@ -30,7 +30,7 @@ License
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "thermoPhysicsTypes.H"
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "ConeInjection.H"
|
||||
#include "ConeInjectionMP.H"
|
||||
@ -65,54 +65,54 @@ License
|
||||
|
||||
#define makeReactingInjectionModelThermoType(ParcelType, ThermoType) \
|
||||
\
|
||||
makeInjectionModel(KinematicCloud<ParcelType<ThermoType> >); \
|
||||
makeInjectionModel(InteractingKinematicCloud<ParcelType<ThermoType> >); \
|
||||
\
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
ConeInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
ConeInjectionMP, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
FieldActivatedInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
ManualInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
NoInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
PatchInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makeInjectionModelThermoType \
|
||||
( \
|
||||
ReactingLookupTableInjection, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
);
|
||||
|
||||
@ -30,7 +30,7 @@ License
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "thermoPhysicsTypes.H"
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "LocalInteraction.H"
|
||||
#include "Rebound.H"
|
||||
@ -61,26 +61,26 @@ License
|
||||
|
||||
#define makeReactingPatchInteractionModelThermoType(ParcelType, ThermoType) \
|
||||
\
|
||||
makePatchInteractionModel(KinematicCloud<ParcelType<ThermoType> >); \
|
||||
makePatchInteractionModel(InteractingKinematicCloud<ParcelType<ThermoType> >); \
|
||||
\
|
||||
makePatchInteractionModelThermoType \
|
||||
( \
|
||||
LocalInteraction, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makePatchInteractionModelThermoType \
|
||||
( \
|
||||
Rebound, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makePatchInteractionModelThermoType \
|
||||
( \
|
||||
StandardWallInteraction, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
);
|
||||
|
||||
@ -30,7 +30,7 @@ License
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "thermoPhysicsTypes.H"
|
||||
#include "KinematicCloud.H"
|
||||
#include "InteractingKinematicCloud.H"
|
||||
|
||||
#include "NoPostProcessing.H"
|
||||
#include "PatchPostProcessing.H"
|
||||
@ -60,19 +60,19 @@ License
|
||||
|
||||
#define makeReactingPostProcessingModelThermoType(ParcelType, ThermoType) \
|
||||
\
|
||||
makePostProcessingModel(KinematicCloud<ParcelType<ThermoType> >); \
|
||||
makePostProcessingModel(InteractingKinematicCloud<ParcelType<ThermoType> >); \
|
||||
\
|
||||
makePostProcessingModelThermoType \
|
||||
( \
|
||||
NoPostProcessing, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
); \
|
||||
makePostProcessingModelThermoType \
|
||||
( \
|
||||
PatchPostProcessing, \
|
||||
KinematicCloud, \
|
||||
InteractingKinematicCloud, \
|
||||
ParcelType, \
|
||||
ThermoType \
|
||||
);
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
/*--------------------------------*- 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 volSymmTensorField;
|
||||
location "0";
|
||||
object R;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [ 0 2 -2 0 0 0 0 ];
|
||||
|
||||
internalField uniform ( 0 0 0 0 0 0 );
|
||||
|
||||
boundaryField
|
||||
{
|
||||
movingWall
|
||||
{
|
||||
type kqRWallFunction;
|
||||
value uniform ( 0 0 0 0 0 0 );
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type kqRWallFunction;
|
||||
value uniform ( 0 0 0 0 0 0 );
|
||||
}
|
||||
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,39 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object T;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 0 0 1 0 0 0];
|
||||
|
||||
internalField uniform 300;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
movingWall
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,43 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volVectorField;
|
||||
object U;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform (0 0 0);
|
||||
|
||||
boundaryField
|
||||
{
|
||||
movingWall
|
||||
{
|
||||
type fixedValue;
|
||||
// Field Value
|
||||
value uniform (3 0 0);
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type fixedValue;
|
||||
// Field Value
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,43 @@
|
||||
/*--------------------------------*- 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 alphat;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
movingWall
|
||||
{
|
||||
type compressible::alphatWallFunction;
|
||||
Prt 0.85;
|
||||
value uniform 0;
|
||||
}
|
||||
fixedWalls
|
||||
{
|
||||
type compressible::alphatWallFunction;
|
||||
Prt 0.85;
|
||||
value uniform 0;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,43 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object epsilon;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [ 0 2 -3 0 0 0 0 ];
|
||||
|
||||
internalField uniform 0.000765;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
movingWall
|
||||
{
|
||||
type compressible::epsilonWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type compressible::epsilonWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,41 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object k;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 2 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 0.00325;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
movingWall
|
||||
{
|
||||
type compressible::kqRWallFunction;
|
||||
value uniform 0.00325;
|
||||
}
|
||||
fixedWalls
|
||||
{
|
||||
type compressible::kqRWallFunction;
|
||||
value uniform 0.00325;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,47 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object mut;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
movingWall
|
||||
{
|
||||
type mutkWallFunction;
|
||||
Cmu 0.09;
|
||||
kappa 0.41;
|
||||
E 9.8;
|
||||
value uniform 0;
|
||||
}
|
||||
fixedWalls
|
||||
{
|
||||
type mutkWallFunction;
|
||||
Cmu 0.09;
|
||||
kappa 0.41;
|
||||
E 9.8;
|
||||
value uniform 0;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,47 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object omega;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 0 -1 0 0 0 0];
|
||||
|
||||
internalField uniform 2.6;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
movingWall
|
||||
{
|
||||
type compressible::omegaWallFunction;
|
||||
Cmu 0.09;
|
||||
kappa 0.41;
|
||||
E 9.8;
|
||||
value uniform 2.6;
|
||||
}
|
||||
fixedWalls
|
||||
{
|
||||
type compressible::omegaWallFunction;
|
||||
Cmu 0.09;
|
||||
kappa 0.41;
|
||||
E 9.8;
|
||||
value uniform 2.6;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,39 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 100000;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
movingWall
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,25 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object RASProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
RASModel kOmegaSST;
|
||||
|
||||
turbulence on;
|
||||
|
||||
printCoeffs on;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,22 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class uniformDimensionedVectorField;
|
||||
location "constant";
|
||||
object g;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 1 -2 0 0 0 0];
|
||||
value ( 0 0.0 0 );
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,36 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class vectorField;
|
||||
object interactingKinematicCloudPositions;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
(
|
||||
(0.0075 0.05 0.005)
|
||||
(0.0125 0.05 0.005)
|
||||
(0.0175 0.05 0.005)
|
||||
(0.0225 0.05 0.005)
|
||||
(0.0275 0.05 0.005)
|
||||
(0.0325 0.05 0.005)
|
||||
(0.0375 0.05 0.005)
|
||||
(0.0425 0.05 0.005)
|
||||
(0.0475 0.05 0.005)
|
||||
(0.0075 0.04 0.005)
|
||||
(0.0125 0.04 0.005)
|
||||
(0.0175 0.04 0.005)
|
||||
(0.0225 0.04 0.005)
|
||||
(0.0275 0.04 0.005)
|
||||
(0.0325 0.04 0.005)
|
||||
(0.0375 0.04 0.005)
|
||||
(0.0425 0.04 0.005)
|
||||
(0.0475 0.04 0.005)
|
||||
)
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,112 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object kinematicCloud1Properties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
InjectionModel ManualInjection;
|
||||
|
||||
DragModel SphereDrag;
|
||||
|
||||
DispersionModel StochasticDispersionRAS;
|
||||
|
||||
PatchInteractionModel StandardWallInteraction;
|
||||
|
||||
PostProcessingModel none;
|
||||
|
||||
coupled true;
|
||||
|
||||
cellValueSourceCorrection on;
|
||||
|
||||
parcelTypeId 2;
|
||||
|
||||
constantProperties
|
||||
{
|
||||
rhoMin rhoMin [ 1 -3 0 0 0 ] 1e-15;
|
||||
minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
|
||||
rho0 rho0 [ 1 -3 0 0 0 ] 5000;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
{
|
||||
rho cell;
|
||||
U cellPoint;
|
||||
mu cell;
|
||||
}
|
||||
|
||||
integrationSchemes
|
||||
{
|
||||
U Euler;
|
||||
}
|
||||
|
||||
particleForces
|
||||
{
|
||||
gravity on;
|
||||
virtualMass off;
|
||||
pressureGradient off;
|
||||
}
|
||||
|
||||
ManualInjectionCoeffs
|
||||
{
|
||||
massTotal massTotal [ 1 0 0 0 0 ] 0.0002;
|
||||
parcelBasisType mass;
|
||||
SOI 0;
|
||||
positionsFile "interactingKinematicCloudPositions";
|
||||
U0 ( 0 0 0 );
|
||||
parcelPDF
|
||||
{
|
||||
pdfType RosinRammler;
|
||||
RosinRammlerPDF
|
||||
{
|
||||
minValue 5e-05;
|
||||
maxValue 0.0001;
|
||||
d ( 7.5e-05 );
|
||||
n ( 0.5 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ConeInjectionCoeffs
|
||||
{
|
||||
SOI 0.001;
|
||||
duration 0.005;
|
||||
position ( 0.25 0.25 0.05 );
|
||||
direction ( 0 -1 0 );
|
||||
parcelsPerSecond 10000;
|
||||
volumeFlowRate Constant 0.01;
|
||||
Umag Constant 50;
|
||||
thetaInner Constant 0;
|
||||
thetaOuter Constant 30;
|
||||
|
||||
parcelPDF
|
||||
{
|
||||
pdfType RosinRammler;
|
||||
RosinRammlerPDF
|
||||
{
|
||||
minValue 5e-05;
|
||||
maxValue 0.0001;
|
||||
d ( 7.5e-05 );
|
||||
n ( 0.5 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StandardWallInteractionCoeffs
|
||||
{
|
||||
e e [ 0 0 0 0 0 ] 1;
|
||||
mu mu [ 0 0 0 0 0 ] 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,63 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object blockMeshDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
convertToMeters 0.1;
|
||||
|
||||
vertices
|
||||
(
|
||||
(0 0 0)
|
||||
(1 0 0)
|
||||
(1 1 0)
|
||||
(0 1 0)
|
||||
(0 0 0.1)
|
||||
(1 0 0.1)
|
||||
(1 1 0.1)
|
||||
(0 1 0.1)
|
||||
);
|
||||
|
||||
blocks
|
||||
(
|
||||
hex (0 1 2 3 4 5 6 7) (80 80 1) simpleGrading (1 1 1)
|
||||
);
|
||||
|
||||
edges
|
||||
(
|
||||
);
|
||||
|
||||
patches
|
||||
(
|
||||
wall movingWall
|
||||
(
|
||||
(3 7 6 2)
|
||||
)
|
||||
wall fixedWalls
|
||||
(
|
||||
(0 4 7 3)
|
||||
(2 6 5 1)
|
||||
(1 5 4 0)
|
||||
)
|
||||
empty frontAndBack
|
||||
(
|
||||
(0 3 2 1)
|
||||
(4 5 6 7)
|
||||
)
|
||||
);
|
||||
|
||||
mergePatchPairs
|
||||
(
|
||||
);
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,40 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class polyBoundaryMesh;
|
||||
location "constant/polyMesh";
|
||||
object boundary;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
3
|
||||
(
|
||||
movingWall
|
||||
{
|
||||
type wall;
|
||||
nFaces 80;
|
||||
startFace 12640;
|
||||
}
|
||||
fixedWalls
|
||||
{
|
||||
type wall;
|
||||
nFaces 240;
|
||||
startFace 12720;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
nFaces 12800;
|
||||
startFace 12960;
|
||||
}
|
||||
)
|
||||
|
||||
// ************************************************************************* //
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,23 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object thermophysicalProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
thermoType hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
|
||||
|
||||
mixture air 1 28.9 1007 0 1.84e-05 0.7;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,21 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object turbulenceProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
simulationType RASModel;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,55 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object controlDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
application rhoPisoFoam;
|
||||
|
||||
startFrom startTime;
|
||||
|
||||
startTime 0;
|
||||
|
||||
stopAt endTime;
|
||||
|
||||
endTime 1;
|
||||
|
||||
deltaT 0.0008;
|
||||
|
||||
writeControl runTime;
|
||||
|
||||
writeInterval 1;
|
||||
|
||||
purgeWrite 0;
|
||||
|
||||
writeFormat ascii;
|
||||
|
||||
writePrecision 6;
|
||||
|
||||
writeCompression uncompressed;
|
||||
|
||||
timeFormat general;
|
||||
|
||||
timePrecision 6;
|
||||
|
||||
runTimeModifiable yes;
|
||||
|
||||
adjustTimeStep no;
|
||||
|
||||
maxCo 0.3;
|
||||
|
||||
maxDeltaT 1;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,76 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object fvSchemes;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
ddtSchemes
|
||||
{
|
||||
default Euler;
|
||||
}
|
||||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
grad(p) Gauss linear;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
div(phi,U) Gauss limitedLinearV 1;
|
||||
div(phid,p) Gauss limitedLinear 1;
|
||||
div(phiU,p) Gauss linear;
|
||||
div(phi,h) Gauss limitedLinear 1;
|
||||
div(phi,k) Gauss limitedLinear 1;
|
||||
div(phi,epsilon) Gauss limitedLinear 1;
|
||||
div(phi,R) Gauss limitedLinear 1;
|
||||
div(phi,omega) Gauss limitedLinear 1;
|
||||
div((rho*R)) Gauss linear;
|
||||
div(R) Gauss linear;
|
||||
div(U) Gauss linear;
|
||||
div((muEff*dev2(grad(U).T()))) Gauss linear;
|
||||
}
|
||||
|
||||
laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear corrected;
|
||||
laplacian(mut,U) Gauss linear corrected;
|
||||
laplacian(DkEff,k) Gauss linear corrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||
laplacian(DREff,R) Gauss linear corrected;
|
||||
laplacian(DomegaEff,omega) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
||||
laplacian(alphaEff,h) Gauss linear corrected;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
{
|
||||
default linear;
|
||||
}
|
||||
|
||||
snGradSchemes
|
||||
{
|
||||
default corrected;
|
||||
}
|
||||
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p ;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,52 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object fvSolution;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
solvers
|
||||
{
|
||||
p
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1e-06;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
rho
|
||||
{
|
||||
$p;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
"(U|h|R|k|epsilon|omega)"
|
||||
{
|
||||
solver PBiCG;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
PISO
|
||||
{
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
momentumPredictor yes;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,54 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object G;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 0 -3 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
top
|
||||
{
|
||||
type MarshakRadiation;
|
||||
T T;
|
||||
emissivity 1.0;
|
||||
value uniform 0;
|
||||
}
|
||||
bottom
|
||||
{
|
||||
type MarshakRadiation;
|
||||
T T;
|
||||
emissivity 1.0;
|
||||
value uniform 0;
|
||||
}
|
||||
walls
|
||||
{
|
||||
type MarshakRadiation;
|
||||
T T;
|
||||
emissivity 1.0;
|
||||
value uniform 0;
|
||||
}
|
||||
symmetry
|
||||
{
|
||||
type symmetryPlane;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,50 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object T;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 0 0 1 0 0 0];
|
||||
|
||||
internalField uniform 400;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
top
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform 400;
|
||||
}
|
||||
|
||||
bottom
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
walls
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
symmetry
|
||||
{
|
||||
type symmetryPlane;
|
||||
}
|
||||
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,48 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volVectorField;
|
||||
object U;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform (0 0 0);
|
||||
|
||||
boundaryField
|
||||
{
|
||||
top
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
bottom
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
walls
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
symmetry
|
||||
{
|
||||
type symmetryPlane;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,50 @@
|
||||
/*--------------------------------*- 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 alphat;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
top
|
||||
{
|
||||
type compressible::alphatWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
bottom
|
||||
{
|
||||
type compressible::alphatWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
walls
|
||||
{
|
||||
type compressible::alphatWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
symmetry
|
||||
{
|
||||
type symmetryPlane;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,50 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object epsilon;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 2 -3 0 0 0 0];
|
||||
|
||||
internalField uniform 5390.5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
top
|
||||
{
|
||||
type compressible::epsilonWallFunction;
|
||||
value uniform 5390.5;
|
||||
}
|
||||
bottom
|
||||
{
|
||||
type compressible::epsilonWallFunction;
|
||||
value uniform 5390.5;
|
||||
}
|
||||
walls
|
||||
{
|
||||
type compressible::epsilonWallFunction;
|
||||
value uniform 5390.5;
|
||||
}
|
||||
symmetry
|
||||
{
|
||||
type symmetryPlane;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,50 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object k;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 2 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 37.5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
top
|
||||
{
|
||||
type compressible::kqRWallFunction;
|
||||
value uniform 37.5;
|
||||
}
|
||||
bottom
|
||||
{
|
||||
type compressible::kqRWallFunction;
|
||||
value uniform 37.5;
|
||||
}
|
||||
walls
|
||||
{
|
||||
type compressible::kqRWallFunction;
|
||||
value uniform 37.5;
|
||||
}
|
||||
symmetry
|
||||
{
|
||||
type symmetryPlane;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,50 @@
|
||||
/*--------------------------------*- 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 mut;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
top
|
||||
{
|
||||
type mutkWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
bottom
|
||||
{
|
||||
type mutkWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
walls
|
||||
{
|
||||
type mutkWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
symmetry
|
||||
{
|
||||
type symmetryPlane;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,24 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object RASProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
RASModel kEpsilon;
|
||||
|
||||
turbulence on;
|
||||
|
||||
printCoeffs on;
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,22 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class uniformDimensionedVectorField;
|
||||
location "constant";
|
||||
object g;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 1 -2 0 0 0 0];
|
||||
value ( 0 -9.81 0 );
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,36 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class vectorField;
|
||||
object kinematicCloud1Positions;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
(
|
||||
(0.0075 0.5 0.05)
|
||||
(0.0125 0.5 0.05)
|
||||
(0.0175 0.5 0.05)
|
||||
(0.0225 0.5 0.05)
|
||||
(0.0275 0.5 0.05)
|
||||
(0.0325 0.5 0.05)
|
||||
(0.0375 0.5 0.05)
|
||||
(0.0425 0.5 0.05)
|
||||
(0.0475 0.5 0.05)
|
||||
(0.0075 0.4 0.05)
|
||||
(0.0125 0.4 0.05)
|
||||
(0.0175 0.4 0.05)
|
||||
(0.0225 0.4 0.05)
|
||||
(0.0275 0.4 0.05)
|
||||
(0.0325 0.4 0.05)
|
||||
(0.0375 0.4 0.05)
|
||||
(0.0425 0.4 0.05)
|
||||
(0.0475 0.4 0.05)
|
||||
)
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,112 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object kinematicCloud1Properties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
InjectionModel ManualInjection;
|
||||
|
||||
DragModel SphereDrag;
|
||||
|
||||
DispersionModel StochasticDispersionRAS;
|
||||
|
||||
PatchInteractionModel StandardWallInteraction;
|
||||
|
||||
PostProcessingModel none;
|
||||
|
||||
coupled true;
|
||||
|
||||
cellValueSourceCorrection on;
|
||||
|
||||
parcelTypeId 2;
|
||||
|
||||
constantProperties
|
||||
{
|
||||
rhoMin rhoMin [ 1 -3 0 0 0 ] 1e-15;
|
||||
minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
|
||||
rho0 rho0 [ 1 -3 0 0 0 ] 5000;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
{
|
||||
rho cell;
|
||||
U cellPoint;
|
||||
mu cell;
|
||||
}
|
||||
|
||||
integrationSchemes
|
||||
{
|
||||
U Euler;
|
||||
}
|
||||
|
||||
particleForces
|
||||
{
|
||||
gravity on;
|
||||
virtualMass off;
|
||||
pressureGradient off;
|
||||
}
|
||||
|
||||
ManualInjectionCoeffs
|
||||
{
|
||||
massTotal massTotal [ 1 0 0 0 0 ] 0.0002;
|
||||
parcelBasisType mass;
|
||||
SOI 0;
|
||||
positionsFile "kinematicCloud1Positions";
|
||||
U0 ( 0 0 0 );
|
||||
parcelPDF
|
||||
{
|
||||
pdfType RosinRammler;
|
||||
RosinRammlerPDF
|
||||
{
|
||||
minValue 5e-05;
|
||||
maxValue 0.0001;
|
||||
d ( 7.5e-05 );
|
||||
n ( 0.5 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ConeInjectionCoeffs
|
||||
{
|
||||
SOI 0.001;
|
||||
duration 0.005;
|
||||
position ( 0.25 0.25 0.05 );
|
||||
direction ( 0 -1 0 );
|
||||
parcelsPerSecond 10000;
|
||||
volumeFlowRate Constant 0.01;
|
||||
Umag Constant 50;
|
||||
thetaInner Constant 0;
|
||||
thetaOuter Constant 30;
|
||||
|
||||
parcelPDF
|
||||
{
|
||||
pdfType RosinRammler;
|
||||
RosinRammlerPDF
|
||||
{
|
||||
minValue 5e-05;
|
||||
maxValue 0.0001;
|
||||
d ( 7.5e-05 );
|
||||
n ( 0.5 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StandardWallInteractionCoeffs
|
||||
{
|
||||
e e [ 0 0 0 0 0 ] 1;
|
||||
mu mu [ 0 0 0 0 0 ] 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,87 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object blockMeshDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
convertToMeters 1.0;
|
||||
|
||||
vertices
|
||||
(
|
||||
(0 0 0)
|
||||
(0.05 0 0)
|
||||
(0.05 0.5 0)
|
||||
(0 0.5 0)
|
||||
(0 0 0.1)
|
||||
(0.05 0 0.1)
|
||||
(0.05 0.5 0.1)
|
||||
(0 0.5 0.1)
|
||||
(0.5 0 0)
|
||||
(0.5 0.5 0)
|
||||
(0.5 0 0.1)
|
||||
(0.5 0.5 0.1)
|
||||
(0.05 1 0)
|
||||
(0 1 0)
|
||||
(0.05 1 0.1)
|
||||
(0 1 0.1)
|
||||
);
|
||||
|
||||
blocks
|
||||
(
|
||||
hex (0 1 2 3 4 5 6 7) (5 50 1) simpleGrading (1 1 1)
|
||||
hex (1 8 9 2 5 10 11 6) (40 50 1) simpleGrading (1 1 1)
|
||||
hex (3 2 12 13 7 6 14 15) (5 50 1) simpleGrading (1 1 1)
|
||||
);
|
||||
|
||||
edges
|
||||
(
|
||||
);
|
||||
|
||||
patches
|
||||
(
|
||||
wall top
|
||||
(
|
||||
(13 15 14 12)
|
||||
)
|
||||
wall bottom
|
||||
(
|
||||
(0 1 5 4)
|
||||
(1 8 10 5)
|
||||
)
|
||||
wall walls
|
||||
(
|
||||
(8 9 11 10)
|
||||
(9 2 6 11)
|
||||
(2 12 14 6)
|
||||
)
|
||||
symmetryPlane symmetry
|
||||
(
|
||||
(4 7 3 0)
|
||||
(7 15 13 3)
|
||||
)
|
||||
empty frontAndBack
|
||||
(
|
||||
(0 3 2 1)
|
||||
(3 13 12 2)
|
||||
(1 2 9 8)
|
||||
(5 6 7 4)
|
||||
(6 14 15 7)
|
||||
(10 11 6 5)
|
||||
)
|
||||
);
|
||||
|
||||
mergePatchPairs
|
||||
(
|
||||
);
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,52 @@
|
||||
/*--------------------------------*- 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 polyBoundaryMesh;
|
||||
location "constant/polyMesh";
|
||||
object boundary;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
5
|
||||
(
|
||||
top
|
||||
{
|
||||
type wall;
|
||||
nFaces 5;
|
||||
startFace 4855;
|
||||
}
|
||||
bottom
|
||||
{
|
||||
type wall;
|
||||
nFaces 45;
|
||||
startFace 4860;
|
||||
}
|
||||
walls
|
||||
{
|
||||
type wall;
|
||||
nFaces 140;
|
||||
startFace 4905;
|
||||
}
|
||||
symmetry
|
||||
{
|
||||
type symmetryPlane;
|
||||
nFaces 100;
|
||||
startFace 5045;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
nFaces 5000;
|
||||
startFace 5145;
|
||||
}
|
||||
)
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,36 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class vectorField;
|
||||
object limestonePositions;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
(
|
||||
(0.0075 0.55 0.05)
|
||||
(0.0125 0.55 0.05)
|
||||
(0.0175 0.55 0.05)
|
||||
(0.0225 0.55 0.05)
|
||||
(0.0275 0.55 0.05)
|
||||
(0.0325 0.55 0.05)
|
||||
(0.0375 0.55 0.05)
|
||||
(0.0425 0.55 0.05)
|
||||
(0.0475 0.55 0.05)
|
||||
(0.0075 0.45 0.05)
|
||||
(0.0125 0.45 0.05)
|
||||
(0.0175 0.45 0.05)
|
||||
(0.0225 0.45 0.05)
|
||||
(0.0275 0.45 0.05)
|
||||
(0.0325 0.45 0.05)
|
||||
(0.0375 0.45 0.05)
|
||||
(0.0425 0.45 0.05)
|
||||
(0.0475 0.45 0.05)
|
||||
)
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,104 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object thermoCloud1Properties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
InjectionModel ManualInjection;
|
||||
|
||||
DragModel SphereDrag;
|
||||
|
||||
DispersionModel StochasticDispersionRAS;
|
||||
|
||||
PatchInteractionModel StandardWallInteraction;
|
||||
|
||||
HeatTransferModel RanzMarshall;
|
||||
|
||||
PostProcessingModel none;
|
||||
|
||||
radiation off;
|
||||
|
||||
coupled true;
|
||||
|
||||
cellValueSourceCorrection on;
|
||||
|
||||
parcelTypeId 1;
|
||||
|
||||
constantProperties
|
||||
{
|
||||
rhoMin rhoMin [ 1 -3 0 0 0 ] 1e-15;
|
||||
TMin TMin [ 0 0 0 1 0 ] 200;
|
||||
minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
|
||||
rho0 rho0 [ 1 -3 0 0 0 ] 2500;
|
||||
T0 T0 [ 0 0 0 1 0 ] 300;
|
||||
cp0 cp0 [ 0 2 -2 -1 0 ] 900;
|
||||
epsilon0 epsilon0 [ 0 0 0 0 0 ] 1;
|
||||
f0 f0 [ 0 0 0 0 0 ] 0.5;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
{
|
||||
rho cell;
|
||||
mu cell;
|
||||
U cellPoint;
|
||||
T cell;
|
||||
Cp cell;
|
||||
}
|
||||
|
||||
integrationSchemes
|
||||
{
|
||||
U Euler;
|
||||
T Analytical;
|
||||
}
|
||||
|
||||
particleForces
|
||||
{
|
||||
gravity on;
|
||||
virtualMass off;
|
||||
pressureGradient off;
|
||||
}
|
||||
|
||||
ManualInjectionCoeffs
|
||||
{
|
||||
massTotal massTotal [ 1 0 0 0 0 ] 0.0001;
|
||||
parcelBasisType mass;
|
||||
SOI 0;
|
||||
positionsFile "thermoCloud1Positions";
|
||||
U0 ( 0 0 0 );
|
||||
parcelPDF
|
||||
{
|
||||
pdfType RosinRammler;
|
||||
RosinRammlerPDF
|
||||
{
|
||||
minValue 5e-06;
|
||||
maxValue 0.0005;
|
||||
d ( 5e-05 );
|
||||
n ( 0.5 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StandardWallInteractionCoeffs
|
||||
{
|
||||
e e [ 0 0 0 0 0 ] 1;
|
||||
mu mu [ 0 0 0 0 0 ] 0;
|
||||
}
|
||||
|
||||
RanzMarshallCoeffs
|
||||
{
|
||||
Pr Pr [ 0 0 0 0 0 ] 0.7;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,23 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object thermophysicalProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
thermoType hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
|
||||
|
||||
mixture air 1 28.9 1007 0 1.84e-05 0.7;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,21 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object turbulenceProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
simulationType RASModel;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,55 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object controlDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
application rhoPisoTwinParcelFoam;
|
||||
|
||||
startFrom latestTime;
|
||||
|
||||
startTime 0;
|
||||
|
||||
stopAt endTime;
|
||||
|
||||
endTime 0.5;
|
||||
|
||||
deltaT 0.0001;
|
||||
|
||||
writeControl adjustableRunTime;
|
||||
|
||||
writeInterval 0.01;
|
||||
|
||||
purgeWrite 0;
|
||||
|
||||
writeFormat ascii;
|
||||
|
||||
writePrecision 10;
|
||||
|
||||
writeCompression uncompressed;
|
||||
|
||||
timeFormat general;
|
||||
|
||||
timePrecision 6;
|
||||
|
||||
runTimeModifiable yes;
|
||||
|
||||
adjustTimeStep yes;
|
||||
|
||||
maxCo 0.2;
|
||||
|
||||
maxDeltaT 1;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,50 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object decomposeParDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
numberOfSubdomains 4;
|
||||
|
||||
method metis;
|
||||
|
||||
simpleCoeffs
|
||||
{
|
||||
n ( 2 2 1 );
|
||||
delta 0.001;
|
||||
}
|
||||
|
||||
hierarchicalCoeffs
|
||||
{
|
||||
n ( 1 1 1 );
|
||||
delta 0.001;
|
||||
order xyz;
|
||||
}
|
||||
|
||||
metisCoeffs
|
||||
{
|
||||
processorWeights ( 1 1 1 1 );
|
||||
}
|
||||
|
||||
manualCoeffs
|
||||
{
|
||||
dataFile "";
|
||||
}
|
||||
|
||||
distributed no;
|
||||
|
||||
roots ( );
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,72 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object fvSchemes;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
ddtSchemes
|
||||
{
|
||||
default Euler;
|
||||
}
|
||||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
grad(p) Gauss linear;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
div(phi,U) Gauss upwind;
|
||||
div(phid,p) Gauss upwind;
|
||||
div(phiU,p) Gauss linear;
|
||||
div(phi,h) Gauss upwind;
|
||||
div(phi,k) Gauss upwind;
|
||||
div(phi,epsilon) Gauss upwind;
|
||||
div(U) Gauss linear;
|
||||
div((muEff*dev2(grad(U).T()))) Gauss linear;
|
||||
div(phi,Yi_h) Gauss upwind;
|
||||
}
|
||||
|
||||
laplacianSchemes
|
||||
{
|
||||
default Gauss linear corrected;
|
||||
laplacian(muEff,U) Gauss linear corrected;
|
||||
laplacian(mut,U) Gauss linear corrected;
|
||||
laplacian(DkEff,k) Gauss linear corrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||
laplacian(DREff,R) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
||||
laplacian(alphaEff,h) Gauss linear corrected;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
{
|
||||
default linear;
|
||||
}
|
||||
|
||||
snGradSchemes
|
||||
{
|
||||
default corrected;
|
||||
}
|
||||
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p ;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,58 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 1.6 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object fvSolution;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
solvers
|
||||
{
|
||||
"(rho|G)"
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
p
|
||||
{
|
||||
solver PBiCG;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-06;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
"(U|h|R|k|epsilon)"
|
||||
{
|
||||
$p;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
"(Yi|CO2|O2|N2|CH4|H2|H2O|CO)"
|
||||
{
|
||||
$p;
|
||||
}
|
||||
}
|
||||
|
||||
PISO
|
||||
{
|
||||
transonic yes;
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
momentumPredictor yes;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
Reference in New Issue
Block a user