Merge branch 'feature-weber-number' into 'develop'

New Weber number cloud function object

See merge request Development/openfoam!369
This commit is contained in:
Andrew Heather
2020-06-11 15:00:36 +01:00
31 changed files with 553 additions and 170 deletions

View File

@ -104,7 +104,7 @@ void Foam::KinematicCloud<CloudType>::solve
{
cloud.storeState();
cloud.preEvolve();
cloud.preEvolve(td);
evolveCloud(cloud, td);
@ -115,7 +115,7 @@ void Foam::KinematicCloud<CloudType>::solve
}
else
{
cloud.preEvolve();
cloud.preEvolve(td);
evolveCloud(cloud, td);
@ -127,7 +127,7 @@ void Foam::KinematicCloud<CloudType>::solve
cloud.info();
cloud.postEvolve();
cloud.postEvolve(td);
if (solution_.steadyState())
{
@ -230,7 +230,10 @@ void Foam::KinematicCloud<CloudType>::evolveCloud
template<class CloudType>
void Foam::KinematicCloud<CloudType>::postEvolve()
void Foam::KinematicCloud<CloudType>::postEvolve
(
const typename parcelType::trackingData& td
)
{
Info<< endl;
@ -243,7 +246,7 @@ void Foam::KinematicCloud<CloudType>::postEvolve()
forces_.cacheFields(false);
functions_.postEvolve();
functions_.postEvolve(td);
solution_.nextIter();
@ -306,8 +309,8 @@ Foam::KinematicCloud<CloudType>::KinematicCloud
IOobject
(
cloudName + "Properties",
rho.mesh().time().constant(),
rho.mesh(),
mesh_.time().constant(),
mesh_,
IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE
)
@ -506,8 +509,8 @@ Foam::KinematicCloud<CloudType>::KinematicCloud
IOobject
(
name + "Properties",
mesh.time().constant(),
mesh,
mesh_.time().constant(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
@ -657,7 +660,10 @@ void Foam::KinematicCloud<CloudType>::scaleSources()
template<class CloudType>
void Foam::KinematicCloud<CloudType>::preEvolve()
void Foam::KinematicCloud<CloudType>::preEvolve
(
const typename parcelType::trackingData& td
)
{
// force calculation of mesh dimensions - needed for parallel runs
// with topology change due to lazy evaluation of valid mesh dimensions
@ -672,7 +678,7 @@ void Foam::KinematicCloud<CloudType>::preEvolve()
pAmbient_ = constProps_.dict().template
getOrDefault<scalar>("pAmbient", pAmbient_);
functions_.preEvolve();
functions_.preEvolve(td);
}

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2016-2019 OpenCFD Ltd.
Copyright (C) 2016-2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -273,7 +273,7 @@ protected:
);
//- Post-evolve
void postEvolve();
void postEvolve(const typename parcelType::trackingData& td);
//- Reset state of cloud
void cloudReset(KinematicCloud<CloudType>& c);
@ -590,7 +590,7 @@ public:
void scaleSources();
//- Pre-evolve
void preEvolve();
void preEvolve(const typename parcelType::trackingData& td);
//- Evolve the cloud
void evolve();

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -446,9 +447,12 @@ void Foam::ThermoCloud<CloudType>::scaleSources()
template<class CloudType>
void Foam::ThermoCloud<CloudType>::preEvolve()
void Foam::ThermoCloud<CloudType>::preEvolve
(
const typename parcelType::trackingData& td
)
{
CloudType::preEvolve();
CloudType::preEvolve(td);
this->pAmbient() = thermo_.thermo().p().average().value();
}

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -358,7 +359,7 @@ public:
void scaleSources();
//- Pre-evolve
void preEvolve();
void preEvolve(const typename parcelType::trackingData& td);
//- Evolve the cloud
void evolve();

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2016-2019 OpenCFD Ltd.
Copyright (C) 2016-2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -339,6 +339,18 @@ public:
//- Return const access to mass fractions of mixture []
inline const scalarField& Y() const;
//- Return const access to mass fractions of gases
// Note: for compatibilty only - returns Y()
inline const scalarField& YGas() const;
//- Return const access to mass fractions of liquids
// Note: for compatibilty only - returns Y()
inline const scalarField& YLiquid() const;
//- Return const access to mass fractions of solids
// Note: for compatibilty only - returns Y()
inline const scalarField& YSolid() const;
// Edit

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -170,6 +171,29 @@ inline const Foam::scalarField& Foam::ReactingParcel<ParcelType>::Y() const
}
template<class ParcelType>
inline const Foam::scalarField& Foam::ReactingParcel<ParcelType>::YGas() const
{
return Y_;
}
template<class ParcelType>
inline const Foam::scalarField&
Foam::ReactingParcel<ParcelType>::YLiquid() const
{
return Y_;
}
template<class ParcelType>
inline const Foam::scalarField&
Foam::ReactingParcel<ParcelType>::YSolid() const
{
return Y_;
}
template<class ParcelType>
inline Foam::scalar& Foam::ReactingParcel<ParcelType>::mass0()
{

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -27,7 +28,7 @@ License
#include "basicReactingMultiphaseCloud.H"
#include "makeParcelCloudFunctionObjects.H"
#include "makeReactingParcelCloudFunctionObjects.H" // Reacting variant
// Kinematic
#include "makeThermoParcelForces.H" // thermo variant

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -27,7 +28,7 @@ License
#include "basicReactingCloud.H"
#include "makeParcelCloudFunctionObjects.H"
#include "makeReactingParcelCloudFunctionObjects.H" // Reacting variant
// Kinematic
#include "makeThermoParcelForces.H" // thermo variant

View File

@ -0,0 +1,65 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2018 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
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 makeReactingParcelCloudFunctionObjects_H
#define makeReactingParcelCloudFunctionObjects_H
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "FacePostProcessing.H"
#include "ParticleCollector.H"
#include "ParticleErosion.H"
#include "ParticleTracks.H"
#include "ParticleTrap.H"
#include "PatchCollisionDensity.H"
#include "PatchPostProcessing.H"
#include "VoidFraction.H"
#include "WeberNumberReacting.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#define makeParcelCloudFunctionObjects(CloudType) \
\
makeCloudFunctionObject(CloudType); \
\
makeCloudFunctionObjectType(FacePostProcessing, CloudType); \
makeCloudFunctionObjectType(ParticleCollector, CloudType); \
makeCloudFunctionObjectType(ParticleErosion, CloudType); \
makeCloudFunctionObjectType(ParticleTracks, CloudType); \
makeCloudFunctionObjectType(ParticleTrap, CloudType); \
makeCloudFunctionObjectType(PatchCollisionDensity, CloudType); \
makeCloudFunctionObjectType(PatchPostProcessing, CloudType); \
makeCloudFunctionObjectType(VoidFraction, CloudType); \
makeCloudFunctionObjectType(WeberNumberReacting, CloudType);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2019 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -84,22 +85,21 @@ Foam::CloudFunctionObject<CloudType>::CloudFunctionObject
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template<class CloudType>
Foam::CloudFunctionObject<CloudType>::~CloudFunctionObject()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>
void Foam::CloudFunctionObject<CloudType>::preEvolve()
void Foam::CloudFunctionObject<CloudType>::preEvolve
(
const typename parcelType::trackingData& td
)
{}
template<class CloudType>
void Foam::CloudFunctionObject<CloudType>::postEvolve()
void Foam::CloudFunctionObject<CloudType>::postEvolve
(
const typename parcelType::trackingData& td
)
{
if (this->owner().time().writeTime())
{
@ -111,7 +111,7 @@ void Foam::CloudFunctionObject<CloudType>::postEvolve()
template<class CloudType>
void Foam::CloudFunctionObject<CloudType>::postMove
(
typename CloudType::parcelType&,
parcelType&,
const scalar,
const point&,
bool&
@ -122,7 +122,7 @@ void Foam::CloudFunctionObject<CloudType>::postMove
template<class CloudType>
void Foam::CloudFunctionObject<CloudType>::postPatch
(
const typename CloudType::parcelType&,
const parcelType&,
const polyPatch&,
bool&
)
@ -132,7 +132,7 @@ void Foam::CloudFunctionObject<CloudType>::postPatch
template<class CloudType>
void Foam::CloudFunctionObject<CloudType>::postFace
(
const typename CloudType::parcelType&,
const parcelType&,
bool&
)
{}

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -63,6 +64,11 @@ class CloudFunctionObject
:
public CloudSubModelBase<CloudType>
{
private:
//- Convenience typedef for parcel type
typedef typename CloudType::parcelType parcelType;
// Private data
//- Output path
@ -126,7 +132,7 @@ public:
//- Destructor
virtual ~CloudFunctionObject();
virtual ~CloudFunctionObject() = default;
//- Selector
@ -144,15 +150,18 @@ public:
// Evaluation
//- Pre-evolve hook
virtual void preEvolve();
virtual void preEvolve(const typename parcelType::trackingData& td);
//- Post-evolve hook
virtual void postEvolve();
virtual void postEvolve
(
const typename parcelType::trackingData& td
);
//- Post-move hook
virtual void postMove
(
typename CloudType::parcelType& p,
parcelType& p,
const scalar dt,
const point& position0,
bool& keepParticle
@ -161,7 +170,7 @@ public:
//- Post-patch hook
virtual void postPatch
(
const typename CloudType::parcelType& p,
const parcelType& p,
const polyPatch& pp,
bool& keepParticle
);
@ -169,7 +178,7 @@ public:
//- Post-face hook
virtual void postFace
(
const typename CloudType::parcelType& p,
const parcelType& p,
bool& keepParticle
);

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -103,31 +104,30 @@ Foam::CloudFunctionObjectList<CloudType>::CloudFunctionObjectList
{}
// * * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * //
template<class CloudType>
Foam::CloudFunctionObjectList<CloudType>::~CloudFunctionObjectList()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>
void Foam::CloudFunctionObjectList<CloudType>::preEvolve()
void Foam::CloudFunctionObjectList<CloudType>::preEvolve
(
const typename parcelType::trackingData& td
)
{
forAll(*this, i)
{
this->operator[](i).preEvolve();
this->operator[](i).preEvolve(td);
}
}
template<class CloudType>
void Foam::CloudFunctionObjectList<CloudType>::postEvolve()
void Foam::CloudFunctionObjectList<CloudType>::postEvolve
(
const typename parcelType::trackingData& td
)
{
forAll(*this, i)
{
this->operator[](i).postEvolve();
this->operator[](i).postEvolve(td);
}
}
@ -135,7 +135,7 @@ void Foam::CloudFunctionObjectList<CloudType>::postEvolve()
template<class CloudType>
void Foam::CloudFunctionObjectList<CloudType>::postMove
(
typename CloudType::parcelType& p,
parcelType& p,
const scalar dt,
const point& position0,
bool& keepParticle
@ -156,7 +156,7 @@ void Foam::CloudFunctionObjectList<CloudType>::postMove
template<class CloudType>
void Foam::CloudFunctionObjectList<CloudType>::postPatch
(
const typename CloudType::parcelType& p,
const parcelType& p,
const polyPatch& pp,
bool& keepParticle
)
@ -176,7 +176,7 @@ void Foam::CloudFunctionObjectList<CloudType>::postPatch
template<class CloudType>
void Foam::CloudFunctionObjectList<CloudType>::postFace
(
const typename CloudType::parcelType& p,
const parcelType& p,
bool& keepParticle
)
{

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -55,6 +56,12 @@ class CloudFunctionObjectList
:
public PtrList<CloudFunctionObject<CloudType>>
{
private:
//- Convenience typedef for parcel type
typedef typename CloudType::parcelType parcelType;
protected:
// Protected Data
@ -86,7 +93,7 @@ public:
//- Destructor
virtual ~CloudFunctionObjectList();
virtual ~CloudFunctionObjectList() = default;
// Member Functions
@ -106,15 +113,21 @@ public:
// Evaluation
//- Pre-evolve hook
virtual void preEvolve();
virtual void preEvolve
(
const typename parcelType::trackingData& td
);
//- Post-evolve hook
virtual void postEvolve();
virtual void postEvolve
(
const typename parcelType::trackingData& td
);
//- Post-move hook
virtual void postMove
(
typename CloudType::parcelType& p,
parcelType& p,
const scalar dt,
const point& position0,
bool& keepParticle
@ -123,7 +136,7 @@ public:
//- Post-patch hook
virtual void postPatch
(
const typename CloudType::parcelType& p,
const parcelType& p,
const polyPatch& pp,
bool& keepParticle
);
@ -131,7 +144,7 @@ public:
//- Post-face hook
virtual void postFace
(
const typename CloudType::parcelType& p,
const parcelType& p,
bool& keepParticle
);
};

View File

@ -347,13 +347,6 @@ Foam::FacePostProcessing<CloudType>::FacePostProcessing
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template<class CloudType>
Foam::FacePostProcessing<CloudType>::~FacePostProcessing()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>

View File

@ -149,19 +149,14 @@ public:
//- Destructor
virtual ~FacePostProcessing();
virtual ~FacePostProcessing() = default;
// Member Functions
// Access
//- Should data be reset on write?
inline bool resetOnWrite() const;
// Evaluation
//- Post-face hook
virtual void postFace(const parcelType& p, bool& keepParticle);
};

View File

@ -636,13 +636,6 @@ Foam::ParticleCollector<CloudType>::ParticleCollector
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template<class CloudType>
Foam::ParticleCollector<CloudType>::~ParticleCollector()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>

View File

@ -273,19 +273,14 @@ public:
//- Destructor
virtual ~ParticleCollector();
virtual ~ParticleCollector() = default;
// Member Functions
// Access
//- Should data be reset on write?
inline bool resetOnWrite() const;
// Evaluation
//- Post-move hook
virtual void postMove
(

View File

@ -30,6 +30,37 @@ License
// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * //
template<class CloudType>
void Foam::ParticleErosion<CloudType>::resetQ()
{
if (QPtr_.valid())
{
QPtr_->primitiveFieldRef() = 0.0;
}
else
{
const fvMesh& mesh = this->owner().mesh();
QPtr_.reset
(
new volScalarField
(
IOobject
(
this->owner().name() + "Q",
mesh.time().timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::NO_WRITE
),
mesh,
dimensionedScalar(dimVolume, Zero)
)
);
}
}
template<class CloudType>
Foam::label Foam::ParticleErosion<CloudType>::applyToPatch
(
@ -103,8 +134,8 @@ Foam::ParticleErosion<CloudType>::ParticleErosion
patchIDs_ = uniqIds.sortedToc();
// trigger creation of the Q field
preEvolve();
// Trigger creation of the Q field
resetQ();
}
@ -126,33 +157,12 @@ Foam::ParticleErosion<CloudType>::ParticleErosion
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>
void Foam::ParticleErosion<CloudType>::preEvolve()
void Foam::ParticleErosion<CloudType>::preEvolve
(
const typename parcelType::trackingData& td
)
{
if (QPtr_.valid())
{
QPtr_->primitiveFieldRef() = 0.0;
}
else
{
const fvMesh& mesh = this->owner().mesh();
QPtr_.reset
(
new volScalarField
(
IOobject
(
this->owner().name() + "Q",
mesh.time().timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::NO_WRITE
),
mesh,
dimensionedScalar(dimVolume, Zero)
)
);
}
resetQ();
}

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -85,6 +86,9 @@ protected:
// Protected Member Functions
//- Create|read|reset the Q field
void resetQ();
//- Returns local patchi if patch is in patchIds_ list
label applyToPatch(const label globalPatchi) const;
@ -130,7 +134,10 @@ public:
// Evaluation
//- Pre-evolve hook
virtual void preEvolve();
virtual void preEvolve
(
const typename parcelType::trackingData& td
);
//- Post-patch hook
virtual void postPatch

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2019 OpenCFD Ltd.
Copyright (C) 2019-2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -86,17 +86,13 @@ Foam::ParticleTracks<CloudType>::ParticleTracks
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template<class CloudType>
Foam::ParticleTracks<CloudType>::~ParticleTracks()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>
void Foam::ParticleTracks<CloudType>::preEvolve()
void Foam::ParticleTracks<CloudType>::preEvolve
(
const typename parcelType::trackingData& td
)
{
if (!cloudPtr_.valid())
{

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2019 OpenCFD Ltd.
Copyright (C) 2019-2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -118,7 +118,7 @@ public:
//- Destructor
virtual ~ParticleTracks();
virtual ~ParticleTracks() = default;
// Member Functions
@ -144,7 +144,10 @@ public:
// Evaluation
//- Pre-evolve hook
virtual void preEvolve();
virtual void preEvolve
(
const typename parcelType::trackingData& td
);
//- Post-face hook
virtual void postFace(const parcelType& p, bool& keepParticle);

View File

@ -64,17 +64,13 @@ Foam::ParticleTrap<CloudType>::ParticleTrap
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template<class CloudType>
Foam::ParticleTrap<CloudType>::~ParticleTrap()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>
void Foam::ParticleTrap<CloudType>::preEvolve()
void Foam::ParticleTrap<CloudType>::preEvolve
(
const typename parcelType::trackingData& td
)
{
if (alphaPtr_ == nullptr)
{
@ -97,7 +93,10 @@ void Foam::ParticleTrap<CloudType>::preEvolve()
template<class CloudType>
void Foam::ParticleTrap<CloudType>::postEvolve()
void Foam::ParticleTrap<CloudType>::postEvolve
(
const typename parcelType::trackingData& td
)
{
gradAlphaPtr_.clear();
}

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2012-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -119,7 +120,7 @@ public:
//- Destructor
virtual ~ParticleTrap();
virtual ~ParticleTrap() = default;
// Member Functions
@ -127,15 +128,21 @@ public:
// Evaluation
//- Pre-evolve hook
virtual void preEvolve();
virtual void preEvolve
(
const typename parcelType::trackingData& td
);
//- Post-evolve hook
virtual void postEvolve();
virtual void postEvolve
(
const typename parcelType::trackingData& td
);
//- Post-move hook
virtual void postMove
(
typename CloudType::parcelType& p,
parcelType& p,
const scalar dt,
const point& position0,
bool& keepParticle

View File

@ -136,13 +136,6 @@ Foam::PatchCollisionDensity<CloudType>::PatchCollisionDensity
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template<class CloudType>
Foam::PatchCollisionDensity<CloudType>::~PatchCollisionDensity()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>

View File

@ -120,20 +120,18 @@ public:
//- Destructor
virtual ~PatchCollisionDensity();
virtual ~PatchCollisionDensity() = default;
// Member Functions
// Evaluation
//- Post-patch hook
virtual void postPatch
(
const parcelType& p,
const polyPatch& pp,
bool& keepParticle
);
//- Post-patch hook
virtual void postPatch
(
const parcelType& p,
const polyPatch& pp,
bool& keepParticle
);
};

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -70,17 +71,13 @@ Foam::VoidFraction<CloudType>::VoidFraction
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template<class CloudType>
Foam::VoidFraction<CloudType>::~VoidFraction()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>
void Foam::VoidFraction<CloudType>::preEvolve()
void Foam::VoidFraction<CloudType>::preEvolve
(
const typename parcelType::trackingData& td
)
{
if (thetaPtr_.valid())
{
@ -111,7 +108,10 @@ void Foam::VoidFraction<CloudType>::preEvolve()
template<class CloudType>
void Foam::VoidFraction<CloudType>::postEvolve()
void Foam::VoidFraction<CloudType>::postEvolve
(
const typename parcelType::trackingData& td
)
{
volScalarField& theta = thetaPtr_();
@ -119,7 +119,7 @@ void Foam::VoidFraction<CloudType>::postEvolve()
theta.primitiveFieldRef() /= mesh.time().deltaTValue()*mesh.V();
CloudFunctionObject<CloudType>::postEvolve();
CloudFunctionObject<CloudType>::postEvolve(td);
}

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -107,7 +108,7 @@ public:
//- Destructor
virtual ~VoidFraction();
virtual ~VoidFraction() = default;
// Member Functions
@ -115,10 +116,16 @@ public:
// Evaluation
//- Pre-evolve hook
virtual void preEvolve();
virtual void preEvolve
(
const typename parcelType::trackingData& td
);
//- Post-evolve hook
virtual void postEvolve();
virtual void postEvolve
(
const typename parcelType::trackingData& td
);
//- Post-move hook
virtual void postMove

View File

@ -0,0 +1,124 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
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 "WeberNumberReacting.H"
#include "SLGThermo.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template<class CloudType>
Foam::WeberNumberReacting<CloudType>::WeberNumberReacting
(
const dictionary& dict,
CloudType& owner,
const word& modelName
)
:
CloudFunctionObject<CloudType>(dict, owner, modelName, typeName)
{}
template<class CloudType>
Foam::WeberNumberReacting<CloudType>::WeberNumberReacting
(
const WeberNumberReacting<CloudType>& we
)
:
CloudFunctionObject<CloudType>(we)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class CloudType>
void Foam::WeberNumberReacting<CloudType>::postEvolve
(
const typename parcelType::trackingData& td
)
{
const auto& c = this->owner();
if (!c.template foundObject<IOField<scalar>>("We"))
{
IOField<scalar>* WePtr =
new IOField<scalar>
(
IOobject
(
"We",
c.time().timeName(),
c,
IOobject::NO_READ
)
);
WePtr->store();
}
auto& We = c.template lookupObjectRef<IOField<scalar>>("We");
We.setSize(c.size());
const auto& thermo = c.db().template lookupObject<SLGThermo>("SLGThermo");
const auto& liquids = thermo.liquids();
const auto& UInterp = td.UInterp();
const auto& pInterp = td.pInterp();
const auto& rhoInterp = td.rhoInterp();
label parceli = 0;
forAllConstIters(c, parcelIter)
{
const parcelType& p = parcelIter();
const auto& coords = p.coordinates();
const auto& tetIs = p.currentTetIndices();
const vector Uc(UInterp.interpolate(coords, tetIs));
const scalar pc =
max
(
pInterp.interpolate(coords, tetIs),
c.constProps().pMin()
);
const scalar rhoc(rhoInterp.interpolate(coords, tetIs));
const scalarField X(liquids.X(p.YLiquid()));
const scalar sigma = liquids.sigma(pc, p.T(), X);
We[parceli++] = rhoc*magSqr(p.U() - Uc)*p.d()/sigma;
}
if (c.size() && c.time().writeTime())
{
We.write();
}
}
// ************************************************************************* //

View File

@ -0,0 +1,121 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
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::WeberNumberReacting
Group
grpLagrangianIntermediateFunctionObjects
Description
Creates particle Weber number field on the cloud
SourceFiles
WeberNumberReacting.C
\*---------------------------------------------------------------------------*/
#ifndef WeberNumberReacting_H
#define WeberNumberReacting_H
#include "CloudFunctionObject.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class WeberNumberReacting Declaration
\*---------------------------------------------------------------------------*/
template<class CloudType>
class WeberNumberReacting
:
public CloudFunctionObject<CloudType>
{
// Private Data
// Typedefs
//- Convenience typedef for parcel type
typedef typename CloudType::parcelType parcelType;
public:
//- Runtime type information
TypeName("WeberNumber");
// Constructors
//- Construct from dictionary
WeberNumberReacting
(
const dictionary& dict,
CloudType& owner,
const word& modelName
);
//- Construct copy
WeberNumberReacting(const WeberNumberReacting<CloudType>& vf);
//- Construct and return a clone
virtual autoPtr<CloudFunctionObject<CloudType>> clone() const
{
return autoPtr<CloudFunctionObject<CloudType>>
(
new WeberNumberReacting<CloudType>(*this)
);
}
//- Destructor
virtual ~WeberNumberReacting() = default;
// Member Functions
//- Post-evolve hook
virtual void postEvolve(const typename parcelType::trackingData& td);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository
#include "WeberNumberReacting.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -27,7 +28,7 @@ License
#include "basicSprayCloud.H"
#include "makeParcelCloudFunctionObjects.H"
#include "makeReactingParcelCloudFunctionObjects.H" // Reacting variant
// Kinematic
#include "makeThermoParcelForces.H" // thermo variant

View File

@ -228,7 +228,12 @@ subModels
cloudFunctions
{}
{
WeberNumber1
{
type WeberNumber;
}
}
// ************************************************************************* //