Adding parcels and clouds for interacting particles. Creating solver

and test case.
This commit is contained in:
graham
2009-08-18 20:27:14 +01:00
parent 3e0ec9d835
commit 698fa32b3f
84 changed files with 85385 additions and 102 deletions

View File

@ -0,0 +1,3 @@
interactingKinematicParcelFoam.C
EXE = $(FOAM_APPBIN)/interactingKinematicParcelFoam

View File

@ -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

View File

@ -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
);

View File

@ -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;
}
// ************************************************************************* //

View File

@ -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 */

View File

@ -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;
}
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -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;
}
// ************************************************************************* //

View File

@ -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();
}

View File

@ -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

View File

@ -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);
}
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -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"
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -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;
}
// ************************************************************************* //

View File

@ -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;
}
// ************************************************************************* //

View File

@ -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_),

View File

@ -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

View File

@ -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,

View File

@ -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_),

View File

@ -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()
{}
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -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);
};
// ************************************************************************* //

View File

@ -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);
};
// ************************************************************************* //

View File

@ -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);

View File

@ -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 \

View File

@ -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);

View File

@ -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 \
);

View File

@ -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);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -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 \
);

View File

@ -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 \
);

View File

@ -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 \
);

View File

@ -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 \
); \

View File

@ -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 \
);

View File

@ -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 \
);

View File

@ -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 \
);

View File

@ -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 \
);

View File

@ -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 \
);

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class 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;
}
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object 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;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object 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;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object 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;
}
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

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

View File

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

View File

@ -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)
)
// ************************************************************************* //

View File

@ -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;
}
// ************************************************************************* //

View File

@ -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
(
);
// ************************************************************************* //

View File

@ -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

View File

@ -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;
// ************************************************************************* //

View File

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

View File

@ -0,0 +1,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;
// ************************************************************************* //

View File

@ -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 ;
}
// ************************************************************************* //

View File

@ -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;
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -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;
}
}
// ************************************************************************* //

View File

@ -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

View File

@ -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;
// ************************************************************************* //

View File

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

View File

@ -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)
)
// ************************************************************************* //

View File

@ -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;
}
// ************************************************************************* //

View File

@ -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
(
);
// ************************************************************************* //

View File

@ -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;
}
)
// ************************************************************************* //

View File

@ -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)
)
// ************************************************************************* //

View File

@ -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;
}
// ************************************************************************* //

View File

@ -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;
// ************************************************************************* //

View File

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

View File

@ -0,0 +1,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;
// ************************************************************************* //

View File

@ -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 ( );
// ************************************************************************* //

View File

@ -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 ;
}
// ************************************************************************* //

View File

@ -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;
}
// ************************************************************************* //