Files
OpenFOAM-12/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.H
Will Bainbridge efca6df9f7 mappedPolyPatch, mappedWallPolyPatch: Added "reMapAfterMove" control
This is an optimisation control that allows the user to specify whether
or not mapping is re-calculated as a result of mesh motion. It is true
by default, as this is guaranteed to work in all scenarios.

Setting this control to false will provide computational benefit for
cases in which mapped patches move consistently, but if the patches do
not move consistently then it will result in incorrect behaviour.
2023-02-02 12:23:30 +00:00

197 lines
5.4 KiB
C++

/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2023 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::mappedWallPolyPatch
Description
Wall patch which holds a mapping engine to map values from another patch
SourceFiles
mappedWallPolyPatch.C
\*---------------------------------------------------------------------------*/
#ifndef mappedWallPolyPatch_H
#define mappedWallPolyPatch_H
#include "wallPolyPatch.H"
#include "mappedPatchBase.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
class polyMesh;
/*---------------------------------------------------------------------------*\
Class mappedWallPolyPatch Declaration
\*---------------------------------------------------------------------------*/
class mappedWallPolyPatch
:
public wallPolyPatch,
public mappedPatchBase
{
// Private Data
//- Do we need to re-calculate the mapping if mesh motion takes place?
// Defaults to true.
const bool reMapAfterMove_;
protected:
// Protected Member Functions
//- Initialise the calculation of the patch geometry
virtual void initCalcGeometry(PstreamBuffers&);
//- Calculate the patch geometry
virtual void calcGeometry(PstreamBuffers&);
//- Initialise the patches for moving points
virtual void initMovePoints(PstreamBuffers&, const pointField&);
//- Correct patches after moving points
virtual void movePoints(PstreamBuffers&, const pointField&);
//- Initialise the update of the patch topology
virtual void initTopoChange(PstreamBuffers&);
//- Update of the patch topology
virtual void topoChange(PstreamBuffers&);
public:
//- Runtime type information
TypeName("mappedWall");
// Constructors
//- Construct from components
mappedWallPolyPatch
(
const word& name,
const label size,
const label start,
const label index,
const polyBoundaryMesh& bm,
const word& patchType
);
//- Construct from components
mappedWallPolyPatch
(
const word& name,
const label size,
const label start,
const label index,
const word& neighbourRegion,
const word& neighbourPatch,
const polyBoundaryMesh& bm
);
//- Construct from dictionary
mappedWallPolyPatch
(
const word& name,
const dictionary& dict,
const label index,
const polyBoundaryMesh& bm,
const word& patchType
);
//- Construct as copy, resetting the boundary mesh
mappedWallPolyPatch
(
const mappedWallPolyPatch&,
const polyBoundaryMesh&
);
//- Construct given the original patch and resetting the
// face list and boundary mesh information
mappedWallPolyPatch
(
const mappedWallPolyPatch& pp,
const polyBoundaryMesh& bm,
const label index,
const label newSize,
const label newStart
);
//- Construct and return a clone, resetting the boundary mesh
virtual autoPtr<polyPatch> clone(const polyBoundaryMesh& bm) const
{
return autoPtr<polyPatch>(new mappedWallPolyPatch(*this, bm));
}
//- Construct and return a clone, resetting the face list
// and boundary mesh
virtual autoPtr<polyPatch> clone
(
const polyBoundaryMesh& bm,
const label index,
const label newSize,
const label newStart
) const
{
return autoPtr<polyPatch>
(
new mappedWallPolyPatch
(
*this,
bm,
index,
newSize,
newStart
)
);
}
//- Destructor
virtual ~mappedWallPolyPatch();
// Member Functions
//- Write the polyPatch data as a dictionary
virtual void write(Ostream&) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //