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.
197 lines
5.4 KiB
C++
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
|
|
|
|
// ************************************************************************* //
|