diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelCloudFunctionObjects.H b/src/lagrangian/intermediate/parcels/include/makeParcelCloudFunctionObjects.H index 137e3ecb34..25647e25b4 100644 --- a/src/lagrangian/intermediate/parcels/include/makeParcelCloudFunctionObjects.H +++ b/src/lagrangian/intermediate/parcels/include/makeParcelCloudFunctionObjects.H @@ -45,6 +45,7 @@ License #include "RemoveParcels.H" #include "VoidFraction.H" #include "KinematicReynoldsNumber.H" +#include "KinematicWeberNumber.H" #include "ParticleDose.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -67,6 +68,7 @@ License makeCloudFunctionObjectType(RemoveParcels, CloudType); \ makeCloudFunctionObjectType(VoidFraction, CloudType); \ makeCloudFunctionObjectType(KinematicReynoldsNumber, CloudType); \ + makeCloudFunctionObjectType(KinematicWeberNumber, CloudType); \ makeCloudFunctionObjectType(ParticleDose, CloudType); diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelCloudFunctionObjects.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelCloudFunctionObjects.H index 30bfada4de..7c029ef825 100644 --- a/src/lagrangian/intermediate/parcels/include/makeReactingParcelCloudFunctionObjects.H +++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelCloudFunctionObjects.H @@ -47,7 +47,7 @@ License #include "NusseltNumber.H" #include "HeatTransferCoeff.H" #include "ThermoReynoldsNumber.H" -#include "WeberNumberReacting.H" +#include "ReactingWeberNumber.H" #include "ParticleDose.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -72,7 +72,7 @@ License makeCloudFunctionObjectType(NusseltNumber, CloudType); \ makeCloudFunctionObjectType(HeatTransferCoeff, CloudType); \ makeCloudFunctionObjectType(ThermoReynoldsNumber, CloudType); \ - makeCloudFunctionObjectType(WeberNumberReacting, CloudType); \ + makeCloudFunctionObjectType(ReactingWeberNumber, CloudType); \ makeCloudFunctionObjectType(ParticleDose, CloudType); diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/KinematicWeberNumber/KinematicWeberNumber.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/KinematicWeberNumber/KinematicWeberNumber.C new file mode 100644 index 0000000000..2c067d6923 --- /dev/null +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/KinematicWeberNumber/KinematicWeberNumber.C @@ -0,0 +1,105 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2023 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 . + +\*---------------------------------------------------------------------------*/ + +#include "KinematicWeberNumber.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::KinematicWeberNumber::KinematicWeberNumber +( + const dictionary& dict, + CloudType& owner, + const word& modelName +) +: + CloudFunctionObject(dict, owner, modelName, typeName), + sigma_(dict.getScalar("sigma")) +{} + + +template +Foam::KinematicWeberNumber::KinematicWeberNumber +( + const KinematicWeberNumber& we +) +: + CloudFunctionObject(we), + sigma_(we.sigma_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +void Foam::KinematicWeberNumber::postEvolve +( + const typename parcelType::trackingData& td +) +{ + auto& c = this->owner(); + + auto* resultPtr = c.template getObjectPtr>("We"); + + if (!resultPtr) + { + resultPtr = new IOField + ( + IOobject + ( + "We", + c.time().timeName(), + c, + IOobject::NO_READ, + IOobject::NO_WRITE, + IOobject::REGISTER + ) + ); + + resultPtr->store(); + } + auto& We = *resultPtr; + + We.resize(c.size()); + + label parceli = 0; + forAllConstIters(c, parcelIter) + { + const parcelType& p = parcelIter(); + + We[parceli++] = p.We(td, sigma_); + } + + const bool haveParticles = c.size(); + if (c.time().writeTime() && returnReduceOr(haveParticles)) + { + We.write(haveParticles); + } +} + + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/KinematicWeberNumber/KinematicWeberNumber.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/KinematicWeberNumber/KinematicWeberNumber.H new file mode 100644 index 0000000000..92eab4ac65 --- /dev/null +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/KinematicWeberNumber/KinematicWeberNumber.H @@ -0,0 +1,175 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2023 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 . + +Class + Foam::KinematicWeberNumber + +Group + grpLagrangianIntermediateFunctionObjects + +Description + Calculates and writes particle Weber number field on the cloud. + + \f[ + \mathrm{We}_p = + \frac{\rho_c \, | \mathbf{u}_\mathrm{rel} |^2 \, d_p }{\sigma} + \f] + + \vartable + \mathrm{We}_p | Particle Weber number + \rho_c | Density of carrier + d_p | Particle diameter + \mathbf{u}_\mathrm{rel} | Relative velocity between particle and carrier + \endvartable + + Operands: + \table + Operand | Type | Location + input | - | - + output file | - | - + output field | scalarField | \/lagrangian/\/We + \endtable + +Usage + Minimal example by using \c constant/\: + \verbatim + cloudFunctions + { + KinematicWeberNumber1 + { + // Mandatory entries + type WeberNumber; + sigma ; + } + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Reqd | Deflt + type | Type name: WeberNumber | word | yes | - + sigma | Surface tension [N/m] | scalar | yes | - + \endtable + +See also + - Foam::ReactingWeberNumber + +SourceFiles + KinematicWeberNumber.C + +\*---------------------------------------------------------------------------*/ + +#ifndef KinematicWeberNumber_H +#define KinematicWeberNumber_H + +#include "CloudFunctionObject.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class KinematicWeberNumber Declaration +\*---------------------------------------------------------------------------*/ + +template +class KinematicWeberNumber +: + public CloudFunctionObject +{ + // Private Typedefs + + //- Convenience typedef for parcel type + typedef typename CloudType::parcelType parcelType; + + + // Private Data + + //- Surface tension [N/m] + scalar sigma_; + + +public: + + //- Runtime type information + TypeName("WeberNumber"); + + + // Generated Methods + + //- No copy assignment + void operator=(const KinematicWeberNumber&) = delete; + + + // Constructors + + //- Construct from dictionary + KinematicWeberNumber + ( + const dictionary& dict, + CloudType& owner, + const word& modelName + ); + + //- Copy construct + KinematicWeberNumber(const KinematicWeberNumber& vf); + + //- Construct and return a clone + virtual autoPtr> clone() const + { + return autoPtr> + ( + new KinematicWeberNumber(*this) + ); + } + + + //- Destructor + virtual ~KinematicWeberNumber() = default; + + + // Member Functions + + //- Post-evolve hook + virtual void postEvolve(const typename parcelType::trackingData& td); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "KinematicWeberNumber.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/WeberNumber/WeberNumberReacting.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ReactingWeberNumber/ReactingWeberNumber.C similarity index 92% rename from src/lagrangian/intermediate/submodels/CloudFunctionObjects/WeberNumber/WeberNumberReacting.C rename to src/lagrangian/intermediate/submodels/CloudFunctionObjects/ReactingWeberNumber/ReactingWeberNumber.C index 30a42b12ee..de6821d6c0 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/WeberNumber/WeberNumberReacting.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ReactingWeberNumber/ReactingWeberNumber.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2020,2022 OpenCFD Ltd. + Copyright (C) 2020-2023 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -25,13 +25,13 @@ License \*---------------------------------------------------------------------------*/ -#include "WeberNumberReacting.H" +#include "ReactingWeberNumber.H" #include "SLGThermo.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template -Foam::WeberNumberReacting::WeberNumberReacting +Foam::ReactingWeberNumber::ReactingWeberNumber ( const dictionary& dict, CloudType& owner, @@ -43,9 +43,9 @@ Foam::WeberNumberReacting::WeberNumberReacting template -Foam::WeberNumberReacting::WeberNumberReacting +Foam::ReactingWeberNumber::ReactingWeberNumber ( - const WeberNumberReacting& we + const ReactingWeberNumber& we ) : CloudFunctionObject(we) @@ -55,7 +55,7 @@ Foam::WeberNumberReacting::WeberNumberReacting // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -void Foam::WeberNumberReacting::postEvolve +void Foam::ReactingWeberNumber::postEvolve ( const typename parcelType::trackingData& td ) diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/WeberNumber/WeberNumberReacting.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ReactingWeberNumber/ReactingWeberNumber.H similarity index 85% rename from src/lagrangian/intermediate/submodels/CloudFunctionObjects/WeberNumber/WeberNumberReacting.H rename to src/lagrangian/intermediate/submodels/CloudFunctionObjects/ReactingWeberNumber/ReactingWeberNumber.H index b686fbe041..5886f08d80 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/WeberNumber/WeberNumberReacting.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ReactingWeberNumber/ReactingWeberNumber.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2020 OpenCFD Ltd. + Copyright (C) 2020-2023 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -24,7 +24,7 @@ License along with OpenFOAM. If not, see . Class - Foam::WeberNumberReacting + Foam::ReactingWeberNumber Group grpLagrangianIntermediateFunctionObjects @@ -33,12 +33,12 @@ Description Creates particle Weber number field on the cloud SourceFiles - WeberNumberReacting.C + ReactingWeberNumber.C \*---------------------------------------------------------------------------*/ -#ifndef WeberNumberReacting_H -#define WeberNumberReacting_H +#ifndef ReactingWeberNumber_H +#define ReactingWeberNumber_H #include "CloudFunctionObject.H" @@ -48,11 +48,11 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class WeberNumberReacting Declaration + Class ReactingWeberNumber Declaration \*---------------------------------------------------------------------------*/ template -class WeberNumberReacting +class ReactingWeberNumber : public CloudFunctionObject { @@ -73,7 +73,7 @@ public: // Constructors //- Construct from dictionary - WeberNumberReacting + ReactingWeberNumber ( const dictionary& dict, CloudType& owner, @@ -81,20 +81,20 @@ public: ); //- Construct copy - WeberNumberReacting(const WeberNumberReacting& vf); + ReactingWeberNumber(const ReactingWeberNumber& vf); //- Construct and return a clone virtual autoPtr> clone() const { return autoPtr> ( - new WeberNumberReacting(*this) + new ReactingWeberNumber(*this) ); } //- Destructor - virtual ~WeberNumberReacting() = default; + virtual ~ReactingWeberNumber() = default; // Member Functions @@ -111,7 +111,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository - #include "WeberNumberReacting.C" + #include "ReactingWeberNumber.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/lagrangian/kinematicParcelFoam/spinningDisk/constant/kinematicCloudProperties b/tutorials/lagrangian/kinematicParcelFoam/spinningDisk/constant/kinematicCloudProperties index 0fc5b2d4bc..8d55e96cdc 100644 --- a/tutorials/lagrangian/kinematicParcelFoam/spinningDisk/constant/kinematicCloudProperties +++ b/tutorials/lagrangian/kinematicParcelFoam/spinningDisk/constant/kinematicCloudProperties @@ -102,7 +102,13 @@ subModels cloudFunctions -{} +{ + KinematicWeberNumber1 + { + type WeberNumber; + sigma 1.0; + } +} // ************************************************************************* //