Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration | Website: https://openfoam.org
|
\\ / O peration | Website: https://openfoam.org
|
||||||
\\ / A nd | Copyright (C) 2018-2021 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2018-2022 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -40,14 +40,14 @@ void Foam::PatchCollisionDensity<CloudType>::write()
|
|||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
this->owner().name() + ":collisionDensity",
|
this->owner().name() + ":numberCollisionDensity",
|
||||||
this->owner().mesh().time().timeName(),
|
this->owner().mesh().time().timeName(),
|
||||||
this->owner().mesh()
|
this->owner().mesh()
|
||||||
),
|
),
|
||||||
this->owner().mesh(),
|
this->owner().mesh(),
|
||||||
dimless/dimArea,
|
dimless/dimArea,
|
||||||
z,
|
z,
|
||||||
collisionDensity_
|
numberCollisionDensity_
|
||||||
)
|
)
|
||||||
.write();
|
.write();
|
||||||
|
|
||||||
@ -55,19 +55,51 @@ void Foam::PatchCollisionDensity<CloudType>::write()
|
|||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
this->owner().name() + ":collisionDensityRate",
|
this->owner().name() + ":numberCollisionDensityRate",
|
||||||
this->owner().mesh().time().timeName(),
|
this->owner().mesh().time().timeName(),
|
||||||
this->owner().mesh()
|
this->owner().mesh()
|
||||||
),
|
),
|
||||||
this->owner().mesh(),
|
this->owner().mesh(),
|
||||||
dimless/dimArea/dimTime,
|
dimless/dimArea/dimTime,
|
||||||
z,
|
z,
|
||||||
(collisionDensity_ - collisionDensity0_)
|
(numberCollisionDensity_ - numberCollisionDensity0_)
|
||||||
/(this->owner().mesh().time().value() - time0_)
|
/(this->owner().mesh().time().value() - time0_)
|
||||||
)
|
)
|
||||||
.write();
|
.write();
|
||||||
|
|
||||||
collisionDensity0_ == collisionDensity_;
|
volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
this->owner().name() + ":massCollisionDensity",
|
||||||
|
this->owner().mesh().time().timeName(),
|
||||||
|
this->owner().mesh()
|
||||||
|
),
|
||||||
|
this->owner().mesh(),
|
||||||
|
dimMass/dimArea,
|
||||||
|
z,
|
||||||
|
massCollisionDensity_
|
||||||
|
)
|
||||||
|
.write();
|
||||||
|
|
||||||
|
volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
this->owner().name() + ":massCollisionDensityRate",
|
||||||
|
this->owner().mesh().time().timeName(),
|
||||||
|
this->owner().mesh()
|
||||||
|
),
|
||||||
|
this->owner().mesh(),
|
||||||
|
dimMass/dimArea/dimTime,
|
||||||
|
z,
|
||||||
|
(massCollisionDensity_ - massCollisionDensity0_)
|
||||||
|
/(this->owner().mesh().time().value() - time0_)
|
||||||
|
)
|
||||||
|
.write();
|
||||||
|
|
||||||
|
numberCollisionDensity0_ == numberCollisionDensity_;
|
||||||
|
massCollisionDensity0_ == massCollisionDensity_;
|
||||||
time0_ = this->owner().mesh().time().value();
|
time0_ = this->owner().mesh().time().value();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,13 +116,25 @@ Foam::PatchCollisionDensity<CloudType>::PatchCollisionDensity
|
|||||||
:
|
:
|
||||||
CloudFunctionObject<CloudType>(dict, owner, modelName, typeName),
|
CloudFunctionObject<CloudType>(dict, owner, modelName, typeName),
|
||||||
minSpeed_(dict.lookupOrDefault<scalar>("minSpeed", -1)),
|
minSpeed_(dict.lookupOrDefault<scalar>("minSpeed", -1)),
|
||||||
collisionDensity_
|
numberCollisionDensity_
|
||||||
(
|
(
|
||||||
this->owner().mesh().boundary(),
|
this->owner().mesh().boundary(),
|
||||||
volScalarField::Internal::null(),
|
volScalarField::Internal::null(),
|
||||||
calculatedFvPatchField<scalar>::typeName
|
calculatedFvPatchField<scalar>::typeName
|
||||||
),
|
),
|
||||||
collisionDensity0_
|
numberCollisionDensity0_
|
||||||
|
(
|
||||||
|
this->owner().mesh().boundary(),
|
||||||
|
volScalarField::Internal::null(),
|
||||||
|
calculatedFvPatchField<scalar>::typeName
|
||||||
|
),
|
||||||
|
massCollisionDensity_
|
||||||
|
(
|
||||||
|
this->owner().mesh().boundary(),
|
||||||
|
volScalarField::Internal::null(),
|
||||||
|
calculatedFvPatchField<scalar>::typeName
|
||||||
|
),
|
||||||
|
massCollisionDensity0_
|
||||||
(
|
(
|
||||||
this->owner().mesh().boundary(),
|
this->owner().mesh().boundary(),
|
||||||
volScalarField::Internal::null(),
|
volScalarField::Internal::null(),
|
||||||
@ -98,23 +142,49 @@ Foam::PatchCollisionDensity<CloudType>::PatchCollisionDensity
|
|||||||
),
|
),
|
||||||
time0_(this->owner().mesh().time().value())
|
time0_(this->owner().mesh().time().value())
|
||||||
{
|
{
|
||||||
collisionDensity_ == 0;
|
numberCollisionDensity_ == 0;
|
||||||
collisionDensity0_ == 0;
|
numberCollisionDensity0_ == 0;
|
||||||
|
massCollisionDensity_ == 0;
|
||||||
|
massCollisionDensity0_ == 0;
|
||||||
|
|
||||||
typeIOobject<volScalarField> io
|
typeIOobject<volScalarField> numberIo
|
||||||
(
|
(
|
||||||
this->owner().name() + ":collisionDensity",
|
this->owner().name() + ":numberCollisionDensity",
|
||||||
this->owner().mesh().time().timeName(),
|
this->owner().mesh().time().timeName(),
|
||||||
this->owner().mesh(),
|
this->owner().mesh(),
|
||||||
IOobject::MUST_READ,
|
IOobject::MUST_READ,
|
||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (io.headerOk())
|
if (numberIo.headerOk())
|
||||||
{
|
{
|
||||||
const volScalarField collisionDensity(io, this->owner().mesh());
|
const volScalarField numberCollisionDensity
|
||||||
collisionDensity_ == collisionDensity.boundaryField();
|
(
|
||||||
collisionDensity0_ == collisionDensity.boundaryField();
|
numberIo,
|
||||||
|
this->owner().mesh()
|
||||||
|
);
|
||||||
|
numberCollisionDensity_ == numberCollisionDensity.boundaryField();
|
||||||
|
numberCollisionDensity0_ == numberCollisionDensity.boundaryField();
|
||||||
|
}
|
||||||
|
|
||||||
|
typeIOobject<volScalarField> massIo
|
||||||
|
(
|
||||||
|
this->owner().name() + ":massCollisionDensity",
|
||||||
|
this->owner().mesh().time().timeName(),
|
||||||
|
this->owner().mesh(),
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
);
|
||||||
|
|
||||||
|
if (massIo.headerOk())
|
||||||
|
{
|
||||||
|
const volScalarField massCollisionDensity
|
||||||
|
(
|
||||||
|
massIo,
|
||||||
|
this->owner().mesh()
|
||||||
|
);
|
||||||
|
massCollisionDensity_ == massCollisionDensity.boundaryField();
|
||||||
|
massCollisionDensity0_ == massCollisionDensity.boundaryField();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,15 +197,25 @@ Foam::PatchCollisionDensity<CloudType>::PatchCollisionDensity
|
|||||||
:
|
:
|
||||||
CloudFunctionObject<CloudType>(ppm),
|
CloudFunctionObject<CloudType>(ppm),
|
||||||
minSpeed_(ppm.minSpeed_),
|
minSpeed_(ppm.minSpeed_),
|
||||||
collisionDensity_
|
numberCollisionDensity_
|
||||||
(
|
(
|
||||||
volScalarField::Internal::null(),
|
volScalarField::Internal::null(),
|
||||||
ppm.collisionDensity_
|
ppm.numberCollisionDensity_
|
||||||
),
|
),
|
||||||
collisionDensity0_
|
numberCollisionDensity0_
|
||||||
(
|
(
|
||||||
volScalarField::Internal::null(),
|
volScalarField::Internal::null(),
|
||||||
ppm.collisionDensity0_
|
ppm.numberCollisionDensity0_
|
||||||
|
),
|
||||||
|
massCollisionDensity_
|
||||||
|
(
|
||||||
|
volScalarField::Internal::null(),
|
||||||
|
ppm.massCollisionDensity_
|
||||||
|
),
|
||||||
|
massCollisionDensity0_
|
||||||
|
(
|
||||||
|
volScalarField::Internal::null(),
|
||||||
|
ppm.massCollisionDensity0_
|
||||||
),
|
),
|
||||||
time0_(ppm.time0_)
|
time0_(ppm.time0_)
|
||||||
{}
|
{}
|
||||||
@ -167,8 +247,10 @@ void Foam::PatchCollisionDensity<CloudType>::postPatch
|
|||||||
const scalar speed = (p.U() - Up) & nw;
|
const scalar speed = (p.U() - Up) & nw;
|
||||||
if (speed > minSpeed_)
|
if (speed > minSpeed_)
|
||||||
{
|
{
|
||||||
collisionDensity_[patchi][patchFacei] +=
|
const scalar magSf =
|
||||||
1/this->owner().mesh().magSf().boundaryField()[patchi][patchFacei];
|
this->owner().mesh().magSf().boundaryField()[patchi][patchFacei];
|
||||||
|
numberCollisionDensity_[patchi][patchFacei] += 1/magSf;
|
||||||
|
massCollisionDensity_[patchi][patchFacei] += p.mass()/magSf;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration | Website: https://openfoam.org
|
\\ / O peration | Website: https://openfoam.org
|
||||||
\\ / A nd | Copyright (C) 2018-2020 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2018-2022 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -25,9 +25,9 @@ Class
|
|||||||
Foam::PatchCollisionDensity
|
Foam::PatchCollisionDensity
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Function object which generates fields of the number and rate of collisions
|
Function object which generates fields of the number and mass and rates
|
||||||
per unit area on all patches. Can optionally take a minimum speed below
|
thereof of collisions per unit area on all patches. Can optionally take a
|
||||||
which a collision is not counted.
|
minimum speed below which a collision is not counted.
|
||||||
|
|
||||||
Example usage:
|
Example usage:
|
||||||
\verbatim
|
\verbatim
|
||||||
@ -70,11 +70,18 @@ class PatchCollisionDensity
|
|||||||
const scalar minSpeed_;
|
const scalar minSpeed_;
|
||||||
|
|
||||||
//- The field of the number of collisions per unit area
|
//- The field of the number of collisions per unit area
|
||||||
volScalarField::Boundary collisionDensity_;
|
volScalarField::Boundary numberCollisionDensity_;
|
||||||
|
|
||||||
//- The field of the number of collisions per unit area at the last
|
//- The field of the number of collisions per unit area at the last
|
||||||
// output
|
// output
|
||||||
volScalarField::Boundary collisionDensity0_;
|
volScalarField::Boundary numberCollisionDensity0_;
|
||||||
|
|
||||||
|
//- The field of the mass of collisions per unit area
|
||||||
|
volScalarField::Boundary massCollisionDensity_;
|
||||||
|
|
||||||
|
//- The field of the mass of collisions per unit area at the last
|
||||||
|
// output
|
||||||
|
volScalarField::Boundary massCollisionDensity0_;
|
||||||
|
|
||||||
//- The time at the last output
|
//- The time at the last output
|
||||||
scalar time0_;
|
scalar time0_;
|
||||||
|
|||||||
Reference in New Issue
Block a user