mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: Mantis #1259: created lagrangian turbulence library for new turbulent structure
This commit is contained in:
@ -22,6 +22,7 @@ EXE_LIBS = \
|
|||||||
-lmeshTools \
|
-lmeshTools \
|
||||||
-llagrangian \
|
-llagrangian \
|
||||||
-llagrangianIntermediate \
|
-llagrangianIntermediate \
|
||||||
|
-llagrangianTurbulentSubModels \
|
||||||
-lthermophysicalFunctions \
|
-lthermophysicalFunctions \
|
||||||
-lspecie \
|
-lspecie \
|
||||||
-lradiationModels \
|
-lradiationModels \
|
||||||
|
|||||||
@ -21,6 +21,7 @@ EXE_LIBS = \
|
|||||||
-lmeshTools \
|
-lmeshTools \
|
||||||
-llagrangian \
|
-llagrangian \
|
||||||
-llagrangianIntermediate \
|
-llagrangianIntermediate \
|
||||||
|
-llagrangianTurbulentSubModels \
|
||||||
-lthermophysicalFunctions \
|
-lthermophysicalFunctions \
|
||||||
-lspecie \
|
-lspecie \
|
||||||
-lradiationModels \
|
-lradiationModels \
|
||||||
|
|||||||
@ -8,6 +8,7 @@ wmake $makeType basic
|
|||||||
wmake $makeType solidParticle
|
wmake $makeType solidParticle
|
||||||
wmake $makeType intermediate
|
wmake $makeType intermediate
|
||||||
wmake $makeType turbulence
|
wmake $makeType turbulence
|
||||||
|
wmake $makeType Turbulence
|
||||||
wmake $makeType spray
|
wmake $makeType spray
|
||||||
wmake $makeType dsmc
|
wmake $makeType dsmc
|
||||||
wmake $makeType coalCombustion
|
wmake $makeType coalCombustion
|
||||||
|
|||||||
10
src/lagrangian/Turbulence/Make/files
Normal file
10
src/lagrangian/Turbulence/Make/files
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
PARCELS=parcels
|
||||||
|
DERIVEDPARCELS=$(PARCELS)/derived
|
||||||
|
|
||||||
|
KINEMATICCOLLIDINGPARCEL=$(DERIVEDPARCELS)/basicKinematicCollidingParcel
|
||||||
|
$(KINEMATICCOLLIDINGPARCEL)/makeBasicKinematicCollidingParcelSubmodels.C
|
||||||
|
|
||||||
|
KINEMATICMPPICPARCEL=$(DERIVEDPARCELS)/basicKinematicMPPICParcel
|
||||||
|
$(KINEMATICMPPICPARCEL)/makeBasicKinematicMPPICParcelSubmodels.C
|
||||||
|
|
||||||
|
LIB = $(FOAM_LIBBIN)/liblagrangianTurbulentSubModels
|
||||||
45
src/lagrangian/Turbulence/Make/options
Normal file
45
src/lagrangian/Turbulence/Make/options
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
EXE_INC = \
|
||||||
|
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||||
|
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||||
|
-I$(LIB_SRC)/lagrangian/basic/lnInclude \
|
||||||
|
-I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
|
||||||
|
-I$(LIB_SRC)/lagrangian/distributionModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/transportModels \
|
||||||
|
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
|
||||||
|
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
|
||||||
|
-I$(LIB_SRC)/sampling/lnInclude
|
||||||
|
|
||||||
|
LIB_LIBS = \
|
||||||
|
-lfiniteVolume \
|
||||||
|
-lmeshTools \
|
||||||
|
-llagrangian \
|
||||||
|
-llagrangianIntermediate \
|
||||||
|
-ldistributionModels \
|
||||||
|
-lspecie \
|
||||||
|
-lfluidThermophysicalModels \
|
||||||
|
-lliquidProperties \
|
||||||
|
-lliquidMixtureProperties \
|
||||||
|
-lsolidProperties \
|
||||||
|
-lsolidMixtureProperties \
|
||||||
|
-lreactionThermophysicalModels \
|
||||||
|
-lSLGThermo \
|
||||||
|
-lradiationModels \
|
||||||
|
-lturbulenceModels \
|
||||||
|
-lincompressibleTurbulenceModels \
|
||||||
|
-lcompressibleTurbulenceModels \
|
||||||
|
-lincompressibleTransportModels \
|
||||||
|
-lregionModels \
|
||||||
|
-lsurfaceFilmModels \
|
||||||
|
-ldynamicFvMesh \
|
||||||
|
-lsampling
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
|
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "basicKinematicCollidingCloud.H"
|
||||||
|
#include "makeParcelTurbulenceDispersionModels.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
makeParcelTurbulenceDispersionModels(basicKinematicCollidingCloud);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
|
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "basicKinematicMPPICCloud.H"
|
||||||
|
#include "makeParcelTurbulenceDispersionModels.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
makeParcelTurbulenceDispersionModels(basicKinematicMPPICCloud);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
|
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef makeParcelTurbulenceDispersionModels_h
|
||||||
|
#define makeParcelTurbulenceDispersionModels_h
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#include "GradientDispersionRAS.H"
|
||||||
|
#include "StochasticDispersionRAS.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#define makeParcelTurbulenceDispersionModels(CloudType) \
|
||||||
|
\
|
||||||
|
typedef CloudType::kinematicCloudType kinematicCloudType; \
|
||||||
|
defineNamedTemplateTypeNameAndDebug \
|
||||||
|
( \
|
||||||
|
DispersionRASModel<kinematicCloudType>, \
|
||||||
|
0 \
|
||||||
|
); \
|
||||||
|
\
|
||||||
|
makeDispersionModelType(GradientDispersionRAS, CloudType); \
|
||||||
|
makeDispersionModelType(StochasticDispersionRAS, CloudType); \
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,201 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
|
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "DispersionRASModel.H"
|
||||||
|
#include "demandDrivenData.H"
|
||||||
|
#include "turbulenceModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::tmp<Foam::volScalarField>
|
||||||
|
Foam::DispersionRASModel<CloudType>::kModel() const
|
||||||
|
{
|
||||||
|
const objectRegistry& obr = this->owner().mesh();
|
||||||
|
const word turbName =
|
||||||
|
IOobject::groupName
|
||||||
|
(
|
||||||
|
turbulenceModel::propertiesName,
|
||||||
|
this->owner().U().group()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (obr.foundObject<turbulenceModel>(turbName))
|
||||||
|
{
|
||||||
|
const turbulenceModel& model =
|
||||||
|
obr.lookupObject<turbulenceModel>(turbName);
|
||||||
|
return model.k();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"Foam::tmp<Foam::volScalarField>"
|
||||||
|
"Foam::DispersionRASModel<CloudType>::kModel() const"
|
||||||
|
)
|
||||||
|
<< "Turbulence model not found in mesh database" << nl
|
||||||
|
<< "Database objects include: " << obr.sortedToc()
|
||||||
|
<< abort(FatalError);
|
||||||
|
|
||||||
|
return tmp<volScalarField>(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::tmp<Foam::volScalarField>
|
||||||
|
Foam::DispersionRASModel<CloudType>::epsilonModel() const
|
||||||
|
{
|
||||||
|
const objectRegistry& obr = this->owner().mesh();
|
||||||
|
const word turbName =
|
||||||
|
IOobject::groupName
|
||||||
|
(
|
||||||
|
turbulenceModel::propertiesName,
|
||||||
|
this->owner().U().group()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (obr.foundObject<turbulenceModel>(turbName))
|
||||||
|
{
|
||||||
|
const turbulenceModel& model =
|
||||||
|
obr.lookupObject<turbulenceModel>(turbName);
|
||||||
|
return model.epsilon();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"Foam::tmp<Foam::volScalarField>"
|
||||||
|
"Foam::DispersionRASModel<CloudType>::epsilonModel() const"
|
||||||
|
)
|
||||||
|
<< "Turbulence model not found in mesh database" << nl
|
||||||
|
<< "Database objects include: " << obr.sortedToc()
|
||||||
|
<< abort(FatalError);
|
||||||
|
|
||||||
|
return tmp<volScalarField>(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::DispersionRASModel<CloudType>::DispersionRASModel
|
||||||
|
(
|
||||||
|
const dictionary&,
|
||||||
|
CloudType& owner
|
||||||
|
)
|
||||||
|
:
|
||||||
|
DispersionModel<CloudType>(owner),
|
||||||
|
kPtr_(NULL),
|
||||||
|
ownK_(false),
|
||||||
|
epsilonPtr_(NULL),
|
||||||
|
ownEpsilon_(false)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::DispersionRASModel<CloudType>::DispersionRASModel
|
||||||
|
(
|
||||||
|
DispersionRASModel<CloudType>& dm
|
||||||
|
)
|
||||||
|
:
|
||||||
|
DispersionModel<CloudType>(dm),
|
||||||
|
kPtr_(dm.kPtr_),
|
||||||
|
ownK_(dm.ownK_),
|
||||||
|
epsilonPtr_(dm.epsilonPtr_),
|
||||||
|
ownEpsilon_(dm.ownEpsilon_)
|
||||||
|
{
|
||||||
|
dm.ownK_ = false;
|
||||||
|
dm.ownEpsilon_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::DispersionRASModel<CloudType>::~DispersionRASModel()
|
||||||
|
{
|
||||||
|
cacheFields(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
void Foam::DispersionRASModel<CloudType>::cacheFields(const bool store)
|
||||||
|
{
|
||||||
|
if (store)
|
||||||
|
{
|
||||||
|
tmp<volScalarField> tk = this->kModel();
|
||||||
|
if (tk.isTmp())
|
||||||
|
{
|
||||||
|
kPtr_ = tk.ptr();
|
||||||
|
ownK_ = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
kPtr_ = tk.operator->();
|
||||||
|
ownK_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp<volScalarField> tepsilon = this->epsilonModel();
|
||||||
|
if (tepsilon.isTmp())
|
||||||
|
{
|
||||||
|
epsilonPtr_ = tepsilon.ptr();
|
||||||
|
ownEpsilon_ = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
epsilonPtr_ = tepsilon.operator->();
|
||||||
|
ownEpsilon_ = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ownK_ && kPtr_)
|
||||||
|
{
|
||||||
|
deleteDemandDrivenData(kPtr_);
|
||||||
|
ownK_ = false;
|
||||||
|
}
|
||||||
|
if (ownEpsilon_ && epsilonPtr_)
|
||||||
|
{
|
||||||
|
deleteDemandDrivenData(epsilonPtr_);
|
||||||
|
ownEpsilon_ = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
void Foam::DispersionRASModel<CloudType>::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
DispersionModel<CloudType>::write(os);
|
||||||
|
|
||||||
|
os.writeKeyword("ownK") << ownK_ << token::END_STATEMENT << endl;
|
||||||
|
os.writeKeyword("ownEpsilon") << ownEpsilon_ << token::END_STATEMENT
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,135 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
|
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::DispersionRASModel
|
||||||
|
|
||||||
|
Description
|
||||||
|
Base class for particle dispersion models based on RAS turbulence.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef DispersionRASModel_H
|
||||||
|
#define DispersionRASModel_H
|
||||||
|
|
||||||
|
#include "DispersionModel.H"
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class DispersionRASModel Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
class DispersionRASModel
|
||||||
|
:
|
||||||
|
public DispersionModel<CloudType>
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected data
|
||||||
|
|
||||||
|
// Locally cached turbulence fields
|
||||||
|
|
||||||
|
//- Turbulence k
|
||||||
|
const volScalarField* kPtr_;
|
||||||
|
|
||||||
|
//- Take ownership of the k field
|
||||||
|
bool ownK_;
|
||||||
|
|
||||||
|
//- Turbulence epsilon
|
||||||
|
const volScalarField* epsilonPtr_;
|
||||||
|
|
||||||
|
//- Take ownership of the epsilon field
|
||||||
|
bool ownEpsilon_;
|
||||||
|
|
||||||
|
|
||||||
|
// Protected Functions
|
||||||
|
|
||||||
|
//- Return the k field from the turbulence model
|
||||||
|
tmp<volScalarField> kModel() const;
|
||||||
|
|
||||||
|
//- Return the epsilon field from the turbulence model
|
||||||
|
tmp<volScalarField> epsilonModel() const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("dispersionRASModel");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
DispersionRASModel(const dictionary& dict, CloudType& owner);
|
||||||
|
|
||||||
|
//- Construct copy
|
||||||
|
DispersionRASModel(DispersionRASModel<CloudType>& dm);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual autoPtr<DispersionModel<CloudType> > clone()
|
||||||
|
{
|
||||||
|
return autoPtr<DispersionModel<CloudType> >
|
||||||
|
(
|
||||||
|
new DispersionRASModel<CloudType>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~DispersionRASModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Cache carrier fields
|
||||||
|
virtual void cacheFields(const bool store);
|
||||||
|
|
||||||
|
|
||||||
|
// I-O
|
||||||
|
|
||||||
|
//- Write
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "DispersionRASModel.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,169 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
|
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "GradientDispersionRAS.H"
|
||||||
|
#include "demandDrivenData.H"
|
||||||
|
#include "fvcGrad.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner
|
||||||
|
)
|
||||||
|
:
|
||||||
|
DispersionRASModel<CloudType>(dict, owner),
|
||||||
|
gradkPtr_(NULL),
|
||||||
|
ownGradK_(false)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
|
||||||
|
(
|
||||||
|
GradientDispersionRAS<CloudType>& dm
|
||||||
|
)
|
||||||
|
:
|
||||||
|
DispersionRASModel<CloudType>(dm),
|
||||||
|
gradkPtr_(dm.gradkPtr_),
|
||||||
|
ownGradK_(dm.ownGradK_)
|
||||||
|
{
|
||||||
|
dm.ownGradK_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::GradientDispersionRAS<CloudType>::~GradientDispersionRAS()
|
||||||
|
{
|
||||||
|
cacheFields(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
void Foam::GradientDispersionRAS<CloudType>::cacheFields(const bool store)
|
||||||
|
{
|
||||||
|
DispersionRASModel<CloudType>::cacheFields(store);
|
||||||
|
|
||||||
|
if (store)
|
||||||
|
{
|
||||||
|
gradkPtr_ = fvc::grad(*this->kPtr_).ptr();
|
||||||
|
ownGradK_ = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ownGradK_)
|
||||||
|
{
|
||||||
|
deleteDemandDrivenData(gradkPtr_);
|
||||||
|
gradkPtr_ = NULL;
|
||||||
|
ownGradK_ = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::vector Foam::GradientDispersionRAS<CloudType>::update
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label cellI,
|
||||||
|
const vector& U,
|
||||||
|
const vector& Uc,
|
||||||
|
vector& UTurb,
|
||||||
|
scalar& tTurb
|
||||||
|
)
|
||||||
|
{
|
||||||
|
cachedRandom& rnd = this->owner().rndGen();
|
||||||
|
|
||||||
|
const scalar cps = 0.16432;
|
||||||
|
|
||||||
|
const scalar k = this->kPtr_->internalField()[cellI];
|
||||||
|
const scalar epsilon =
|
||||||
|
this->epsilonPtr_->internalField()[cellI] + ROOTVSMALL;
|
||||||
|
const vector& gradk = this->gradkPtr_->internalField()[cellI];
|
||||||
|
|
||||||
|
const scalar UrelMag = mag(U - Uc - UTurb);
|
||||||
|
|
||||||
|
const scalar tTurbLoc =
|
||||||
|
min(k/epsilon, cps*pow(k, 1.5)/epsilon/(UrelMag + SMALL));
|
||||||
|
|
||||||
|
|
||||||
|
// Parcel is perturbed by the turbulence
|
||||||
|
if (dt < tTurbLoc)
|
||||||
|
{
|
||||||
|
tTurb += dt;
|
||||||
|
|
||||||
|
if (tTurb > tTurbLoc)
|
||||||
|
{
|
||||||
|
tTurb = 0.0;
|
||||||
|
|
||||||
|
scalar sigma = sqrt(2.0*k/3.0);
|
||||||
|
vector dir = -gradk/(mag(gradk) + SMALL);
|
||||||
|
|
||||||
|
// Numerical Recipes... Ch. 7. Random Numbers...
|
||||||
|
scalar x1 = 0.0;
|
||||||
|
scalar x2 = 0.0;
|
||||||
|
scalar rsq = 10.0;
|
||||||
|
while ((rsq > 1.0) || (rsq == 0.0))
|
||||||
|
{
|
||||||
|
x1 = 2.0*rnd.sample01<scalar>() - 1.0;
|
||||||
|
x2 = 2.0*rnd.sample01<scalar>() - 1.0;
|
||||||
|
rsq = x1*x1 + x2*x2;
|
||||||
|
}
|
||||||
|
|
||||||
|
scalar fac = sqrt(-2.0*log(rsq)/rsq);
|
||||||
|
|
||||||
|
// In 2D calculations the -grad(k) is always
|
||||||
|
// away from the axis of symmetry
|
||||||
|
// This creates a 'hole' in the spray and to
|
||||||
|
// prevent this we let x1 be both negative/positive
|
||||||
|
if (this->owner().mesh().nSolutionD() == 2)
|
||||||
|
{
|
||||||
|
fac *= x1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fac *= mag(x1);
|
||||||
|
}
|
||||||
|
|
||||||
|
UTurb = sigma*fac*dir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tTurb = GREAT;
|
||||||
|
UTurb = vector::zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Uc + UTurb;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,126 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
|
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::GradientDispersionRAS
|
||||||
|
|
||||||
|
Description
|
||||||
|
The velocity is perturbed in the direction of -grad(k), with a
|
||||||
|
Gaussian random number distribution with variance sigma.
|
||||||
|
where sigma is defined below
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef GradientDispersionRAS_H
|
||||||
|
#define GradientDispersionRAS_H
|
||||||
|
|
||||||
|
#include "DispersionRASModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class GradientDispersionRAS Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
class GradientDispersionRAS
|
||||||
|
:
|
||||||
|
public DispersionRASModel<CloudType>
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected data
|
||||||
|
|
||||||
|
// Locally cached turbulence fields
|
||||||
|
|
||||||
|
//- Gradient of k
|
||||||
|
const volVectorField* gradkPtr_;
|
||||||
|
|
||||||
|
//- Take ownership of the grad(k)
|
||||||
|
bool ownGradK_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("gradientDispersionRAS");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
GradientDispersionRAS(const dictionary& dict, CloudType& owner);
|
||||||
|
|
||||||
|
//- Construct copy
|
||||||
|
GradientDispersionRAS(GradientDispersionRAS<CloudType>& dm);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual autoPtr<DispersionModel<CloudType> > clone()
|
||||||
|
{
|
||||||
|
return autoPtr<DispersionModel<CloudType> >
|
||||||
|
(
|
||||||
|
new GradientDispersionRAS<CloudType>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~GradientDispersionRAS();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Cache carrier fields
|
||||||
|
virtual void cacheFields(const bool store);
|
||||||
|
|
||||||
|
//- Update (disperse particles)
|
||||||
|
virtual vector update
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label cellI,
|
||||||
|
const vector& U,
|
||||||
|
const vector& Uc,
|
||||||
|
vector& UTurb,
|
||||||
|
scalar& tTurb
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "GradientDispersionRAS.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,127 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
|
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "StochasticDispersionRAS.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::StochasticDispersionRAS<CloudType>::StochasticDispersionRAS
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner
|
||||||
|
)
|
||||||
|
:
|
||||||
|
DispersionRASModel<CloudType>(dict, owner)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::StochasticDispersionRAS<CloudType>::StochasticDispersionRAS
|
||||||
|
(
|
||||||
|
StochasticDispersionRAS<CloudType>& dm
|
||||||
|
)
|
||||||
|
:
|
||||||
|
DispersionRASModel<CloudType>(dm)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::StochasticDispersionRAS<CloudType>::~StochasticDispersionRAS()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::vector Foam::StochasticDispersionRAS<CloudType>::update
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label cellI,
|
||||||
|
const vector& U,
|
||||||
|
const vector& Uc,
|
||||||
|
vector& UTurb,
|
||||||
|
scalar& tTurb
|
||||||
|
)
|
||||||
|
{
|
||||||
|
cachedRandom& rnd = this->owner().rndGen();
|
||||||
|
|
||||||
|
const scalar cps = 0.16432;
|
||||||
|
|
||||||
|
const scalar k = this->kPtr_->internalField()[cellI];
|
||||||
|
const scalar epsilon =
|
||||||
|
this->epsilonPtr_->internalField()[cellI] + ROOTVSMALL;
|
||||||
|
|
||||||
|
const scalar UrelMag = mag(U - Uc - UTurb);
|
||||||
|
|
||||||
|
const scalar tTurbLoc =
|
||||||
|
min(k/epsilon, cps*pow(k, 1.5)/epsilon/(UrelMag + SMALL));
|
||||||
|
|
||||||
|
|
||||||
|
// Parcel is perturbed by the turbulence
|
||||||
|
if (dt < tTurbLoc)
|
||||||
|
{
|
||||||
|
tTurb += dt;
|
||||||
|
|
||||||
|
if (tTurb > tTurbLoc)
|
||||||
|
{
|
||||||
|
tTurb = 0.0;
|
||||||
|
|
||||||
|
scalar sigma = sqrt(2.0*k/3.0);
|
||||||
|
vector dir = 2.0*rnd.sample01<vector>() - vector::one;
|
||||||
|
dir /= mag(dir) + SMALL;
|
||||||
|
|
||||||
|
// Numerical Recipes... Ch. 7. Random Numbers...
|
||||||
|
scalar x1 = 0.0;
|
||||||
|
scalar x2 = 0.0;
|
||||||
|
scalar rsq = 10.0;
|
||||||
|
while ((rsq > 1.0) || (rsq == 0.0))
|
||||||
|
{
|
||||||
|
x1 = 2.0*rnd.sample01<scalar>() - 1.0;
|
||||||
|
x2 = 2.0*rnd.sample01<scalar>() - 1.0;
|
||||||
|
rsq = x1*x1 + x2*x2;
|
||||||
|
}
|
||||||
|
|
||||||
|
scalar fac = sqrt(-2.0*log(rsq)/rsq);
|
||||||
|
|
||||||
|
fac *= mag(x1);
|
||||||
|
|
||||||
|
UTurb = sigma*fac*dir;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tTurb = GREAT;
|
||||||
|
UTurb = vector::zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Uc + UTurb;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,110 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
|
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::StochasticDispersionRAS
|
||||||
|
|
||||||
|
Description
|
||||||
|
The velocity is perturbed in random direction, with a
|
||||||
|
Gaussian random number distribution with variance sigma.
|
||||||
|
where sigma is defined below
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef StochasticDispersionRAS_H
|
||||||
|
#define StochasticDispersionRAS_H
|
||||||
|
|
||||||
|
#include "DispersionRASModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class StochasticDispersionRAS Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
class StochasticDispersionRAS
|
||||||
|
:
|
||||||
|
public DispersionRASModel<CloudType>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("stochasticDispersionRAS");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
StochasticDispersionRAS(const dictionary& dict, CloudType& owner);
|
||||||
|
|
||||||
|
//- Construct copy
|
||||||
|
StochasticDispersionRAS(StochasticDispersionRAS<CloudType>& dm);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual autoPtr<DispersionModel<CloudType> > clone()
|
||||||
|
{
|
||||||
|
return autoPtr<DispersionModel<CloudType> >
|
||||||
|
(
|
||||||
|
new StochasticDispersionRAS<CloudType>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~StochasticDispersionRAS();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Update (disperse particles)
|
||||||
|
virtual vector update
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label cellI,
|
||||||
|
const vector& U,
|
||||||
|
const vector& Uc,
|
||||||
|
vector& UTurb,
|
||||||
|
scalar& tTurb
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "StochasticDispersionRAS.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
Reference in New Issue
Block a user