mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
In most boundary conditions, fvOptions etc. required and optional fields
to be looked-up from the objectRegistry are selected by setting the
keyword corresponding to the standard field name in the BC etc. to the
appropriate name in the objectRegistry. Usually a default is provided
with sets the field name to the keyword name, e.g. in the
totalPressureFvPatchScalarField the velocity is selected by setting the
keyword 'U' to the appropriate name which defaults to 'U':
Property | Description | Required | Default value
U | velocity field name | no | U
phi | flux field name | no | phi
.
.
.
However, in some BCs and functionObjects and many fvOptions another
convention is used in which the field name keyword is appended by 'Name'
e.g.
Property | Description | Required | Default value
pName | pressure field name | no | p
UName | velocity field name | no | U
This difference in convention is unnecessary and confusing, hinders code
and dictionary reuse and complicates code maintenance. In this commit
the appended 'Name' is removed from the field selection keywords
standardizing OpenFOAM on the first convention above.
275 lines
7.5 KiB
C++
275 lines
7.5 KiB
C++
/*---------------------------------------------------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration |
|
|
\\ / A nd | Copyright (C) 2011-2016 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::functionObjects::wallBoundedStreamLine
|
|
|
|
Group
|
|
grpFieldFunctionObjects
|
|
|
|
Description
|
|
This function object generates streamline data by sampling a set of
|
|
user-specified fields along a particle track, transported by a
|
|
user-specified velocity field, constrained to a patch.
|
|
|
|
Example of function object specification:
|
|
\verbatim
|
|
wallBoundedStreamLine1
|
|
{
|
|
type wallBoundedStreamLine;
|
|
libs ("libfieldFunctionObjects.so");
|
|
...
|
|
setFormat vtk;
|
|
U UNear;
|
|
trackForward yes;
|
|
fields
|
|
(
|
|
UNear
|
|
p
|
|
);
|
|
lifeTime 10000;
|
|
trackLength 1e-3;
|
|
nSubCycle 5;
|
|
cloudName particleTracks;
|
|
seedSampleSet patchSeed;
|
|
patchSeedCoeffs
|
|
{
|
|
type patchSeed;
|
|
patches (wall);
|
|
axis x;
|
|
maxPoints 20000;
|
|
}
|
|
}
|
|
\endverbatim
|
|
|
|
\heading Function object usage
|
|
\table
|
|
Property | Description | Required | Default value
|
|
type | Type name: wallBoundedStreamLine| yes |
|
|
setFormat | Output data type | yes |
|
|
U | Tracking velocity field name | yes |
|
|
fields | Fields to sample | yes |
|
|
lifetime | Maximum number of particle tracking steps | yes |
|
|
trackLength | Tracking segment length | no |
|
|
nSubCycle | Number of tracking steps per cell | no|
|
|
cloudName | Cloud name to use | yes |
|
|
seedSampleSet| Seeding method (see below)| yes |
|
|
\endtable
|
|
|
|
\linebreak
|
|
Where \c seedSampleSet is typically one of
|
|
\plaintable
|
|
uniform | uniform particle seeding
|
|
cloud | cloud of points
|
|
patchSeed | seeding via patch faces
|
|
triSurfaceMeshPointSet | points according to a tri-surface mesh
|
|
\endplaintable
|
|
|
|
Note
|
|
When specifying the track resolution, the \c trackLength OR \c nSubCycle
|
|
option should be used
|
|
|
|
SeeAlso
|
|
Foam::functionObject
|
|
Foam::functionObjects::timeControl
|
|
Foam::sampledSet
|
|
Foam::streamLine
|
|
|
|
SourceFiles
|
|
wallBoundedStreamLine.C
|
|
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef functionObjects_wallBoundedStreamLine_H
|
|
#define functionObjects_wallBoundedStreamLine_H
|
|
|
|
#include "functionObject.H"
|
|
#include "volFieldsFwd.H"
|
|
#include "DynamicList.H"
|
|
#include "scalarList.H"
|
|
#include "vectorList.H"
|
|
#include "writer.H"
|
|
#include "indirectPrimitivePatch.H"
|
|
#include "tetIndices.H"
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
namespace Foam
|
|
{
|
|
|
|
// Forward declaration of classes
|
|
class objectRegistry;
|
|
class meshSearch;
|
|
class sampledSet;
|
|
|
|
namespace functionObjects
|
|
{
|
|
|
|
/*---------------------------------------------------------------------------*\
|
|
Class wallBoundedStreamLine Declaration
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
class wallBoundedStreamLine
|
|
:
|
|
public functionObject
|
|
{
|
|
// Private data
|
|
|
|
//- Database this class is registered to
|
|
const objectRegistry& obr_;
|
|
|
|
//- Input dictionary
|
|
dictionary dict_;
|
|
|
|
//- List of fields to sample
|
|
wordList fields_;
|
|
|
|
//- Field to transport particle with
|
|
word UName_;
|
|
|
|
//- Interpolation scheme to use
|
|
word interpolationScheme_;
|
|
|
|
//- Whether to use +u or -u
|
|
bool trackForward_;
|
|
|
|
//- Maximum lifetime (= number of cells) of particle
|
|
label lifeTime_;
|
|
|
|
//- Track length
|
|
scalar trackLength_;
|
|
|
|
//- Optional specified name of particles
|
|
word cloudName_;
|
|
|
|
//- Type of seed
|
|
word seedSet_;
|
|
|
|
//- Names of scalar fields
|
|
wordList scalarNames_;
|
|
|
|
//- Names of vector fields
|
|
wordList vectorNames_;
|
|
|
|
|
|
// Demand driven
|
|
|
|
//- Mesh searching enigne
|
|
autoPtr<meshSearch> meshSearchPtr_;
|
|
|
|
//- Seed set engine
|
|
autoPtr<sampledSet> sampledSetPtr_;
|
|
|
|
//- Axis of the sampled points to output
|
|
word sampledSetAxis_;
|
|
|
|
//- File output writer
|
|
autoPtr<writer<scalar>> scalarFormatterPtr_;
|
|
|
|
autoPtr<writer<vector>> vectorFormatterPtr_;
|
|
|
|
|
|
// Generated data
|
|
|
|
//- All tracks. Per particle the points it passed through
|
|
DynamicList<List<point>> allTracks_;
|
|
|
|
//- Per scalarField, per particle, the sampled value.
|
|
List<DynamicList<scalarList>> allScalars_;
|
|
|
|
//- Per scalarField, per particle, the sampled value.
|
|
List<DynamicList<vectorList>> allVectors_;
|
|
|
|
|
|
//- Construct patch out of all wall patch faces
|
|
autoPtr<indirectPrimitivePatch> wallPatch() const;
|
|
|
|
//- Find wall tet on cell
|
|
tetIndices findNearestTet
|
|
(
|
|
const PackedBoolList& isWallPatch,
|
|
const point& seedPt,
|
|
const label celli
|
|
) const;
|
|
|
|
//- Do all seeding and tracking
|
|
void track();
|
|
|
|
//- Disallow default bitwise copy construct
|
|
wallBoundedStreamLine(const wallBoundedStreamLine&);
|
|
|
|
//- Disallow default bitwise assignment
|
|
void operator=(const wallBoundedStreamLine&);
|
|
|
|
|
|
public:
|
|
|
|
//- Runtime type information
|
|
TypeName("wallBoundedStreamLine");
|
|
|
|
|
|
// Constructors
|
|
|
|
//- Construct from Time and dictionary
|
|
wallBoundedStreamLine
|
|
(
|
|
const word& name,
|
|
const Time& runTime,
|
|
const dictionary& dict
|
|
);
|
|
|
|
|
|
//- Destructor
|
|
virtual ~wallBoundedStreamLine();
|
|
|
|
|
|
// Member Functions
|
|
|
|
//- Read the field average data
|
|
virtual bool read(const dictionary&);
|
|
|
|
//- Do nothing
|
|
virtual bool execute(const bool postProcess = false);
|
|
|
|
//- Calculate and write the wall-bounded streamlines
|
|
virtual bool write(const bool postProcess = false);
|
|
|
|
//- Update for changes of mesh
|
|
virtual void updateMesh(const mapPolyMesh&);
|
|
|
|
//- Update for mesh point-motion
|
|
virtual void movePoints(const polyMesh&);
|
|
};
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
} // End namespace functionObjects
|
|
} // End namespace Foam
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
#endif
|
|
|
|
// ************************************************************************* //
|