Loading...
Searching...
No Matches
faceAreaWeightAMI.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2013-2016 OpenFOAM Foundation
9 Copyright (C) 2016 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
12 This file is part of OpenFOAM.
13
14 OpenFOAM is free software: you can redistribute it and/or modify it
15 under the terms of the GNU General Public License as published by
16 the Free Software Foundation, either version 3 of the License, or
17 (at your option) any later version.
18
19 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26
27Class
28 Foam::faceAreaWeightAMI
29
30Description
31 Face area weighted Arbitrary Mesh Interface (AMI) method
32
33 Searching is performed using an advancing front.
34
35SourceFiles
36 faceAreaWeightAMI.C
37
38\*---------------------------------------------------------------------------*/
39
40#ifndef faceAreaWeightAMI_H
41#define faceAreaWeightAMI_H
42
43#include "advancingFrontAMI.H"
44
45// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46
47namespace Foam
48{
50/*---------------------------------------------------------------------------*\
51 Class faceAreaWeightAMI Declaration
52\*---------------------------------------------------------------------------*/
53
55:
57{
58private:
59
60 // Private data
61
62 //- Flag to restart uncovered source faces
63 const bool restartUncoveredSourceFace_;
64
65
66protected:
67
68 // Protected Member Functions
69
70 //- No copy assignment
71 void operator=(const faceAreaWeightAMI&) = delete;
72
73
74 // Marching front
75
76 //- Calculate addressing, weights and centroids using temporary
77 //- storage
78 virtual void calcAddressing
79 (
85 label srcFacei,
86 label tgtFacei
87 );
88
89 //- Determine overlap contributions for source face srcFacei
90 virtual bool processSourceFace
91 (
92 const label srcFacei,
93 const label tgtStartFacei,
94 DynamicList<label>& nbrFaces,
95 DynamicList<label>& visitedFaces,
96 List<DynamicList<label>>& srcAddr,
97 List<DynamicList<scalar>>& srcWght,
98 List<DynamicList<point>>& srcCtr,
99 List<DynamicList<label>>& tgtAddr,
100 List<DynamicList<scalar>>& tgtWght
101 );
102
103 //- Attempt to re-evaluate source faces that have not been included
104 virtual void restartUncoveredSourceFace
105 (
106 List<DynamicList<label>>& srcAddr,
107 List<DynamicList<scalar>>& srcWght,
108 List<DynamicList<point>>& srcCtr,
109 List<DynamicList<label>>& tgtAddr,
110 List<DynamicList<scalar>>& tgtWght
111 );
112
113 //- Set the source and target seed faces
114 virtual bool setNextFaces
115 (
116 label& startSeedi,
117 label& srcFacei,
118 label& tgtFacei,
119 const bitSet& mapFlag,
120 labelList& seedFaces,
121 const labelUList& visitedFaces,
122 const bool errorOnNotFound = true
123 ) const;
124
125
126 // Evaluation
127
128 //- Area of intersection between source and target faces
129 virtual void calcInterArea
130 (
131 const label srcFacei,
132 const label tgtFacei,
133 scalar& area,
134 vector& centroid
135 ) const;
136
137 //- Return true if faces overlap
138 virtual bool overlaps
139 (
140 const label srcFacei,
141 const label tgtFacei,
142 const scalar threshold
143 ) const;
144
145
146public:
147
148 //- Runtime type information
149 TypeName("faceAreaWeightAMI");
150
151
152 // Constructors
153
154 //- Construct from dictionary
156 (
157 const dictionary& dict,
158 const bool reverseTarget = false
159 );
160
161 //- Construct from components
163 (
164 const bool requireMatch,
165 const bool reverseTarget = false,
166 const scalar lowWeightCorrection = -1,
169 const bool restartUncoveredSourceFace = true
170 );
171
172 //- Construct as copy
174
175 //- Construct and return a clone
176 virtual autoPtr<AMIInterpolation> clone() const
177 {
179 }
180
181
182 //- Destructor
183 virtual ~faceAreaWeightAMI() = default;
184
185
186 // Member Functions
187
188 //- Update addressing, weights and (optional) centroids
189 virtual bool calculate
190 (
193 const autoPtr<searchableSurface>& surfPtr = nullptr
194 );
195
196 //- Write
197 virtual void write(Ostream& os) const;
198};
199
200
201// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
202
203} // End namespace Foam
204
205// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
207#endif
208
209// ************************************************************************* //
bool reverseTarget() const noexcept
Access to the reverseTarget flag.
const scalarListList & tgtWeights() const
Return const access to target patch weights.
const labelListList & srcAddress() const
Return const access to source patch addressing.
bool requireMatch() const noexcept
Return the requireMatch flag.
const scalarListList & srcWeights() const
Return const access to source patch weights.
const pointListList & srcCentroids() const
Return const access to source patch face centroids.
scalar lowWeightCorrection() const
Threshold weight below which interpolation is deactivated.
const labelListList & tgtAddress() const
Return const access to target patch addressing.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
Definition DynamicList.H:68
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition List.H:72
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition Ostream.H:59
const primitivePatch & tgtPatch() const
Return const access to the target patch.
advancingFrontAMI(const dictionary &dict, const bool reverseTarget)
Construct from components.
const primitivePatch & srcPatch() const
Return const access to the source patch.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition autoPtr.H:65
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
Definition bitSet.H:61
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
virtual void calcAddressing(List< DynamicList< label > > &srcAddress, List< DynamicList< scalar > > &srcWeights, List< DynamicList< point > > &srcCentroids, List< DynamicList< label > > &tgtAddress, List< DynamicList< scalar > > &tgtWeights, label srcFacei, label tgtFacei)
Calculate addressing, weights and centroids using temporary storage.
virtual autoPtr< AMIInterpolation > clone() const
Construct and return a clone.
virtual bool processSourceFace(const label srcFacei, const label tgtStartFacei, DynamicList< label > &nbrFaces, DynamicList< label > &visitedFaces, List< DynamicList< label > > &srcAddr, List< DynamicList< scalar > > &srcWght, List< DynamicList< point > > &srcCtr, List< DynamicList< label > > &tgtAddr, List< DynamicList< scalar > > &tgtWght)
Determine overlap contributions for source face srcFacei.
faceAreaWeightAMI(const dictionary &dict, const bool reverseTarget=false)
Construct from dictionary.
virtual bool calculate(const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const autoPtr< searchableSurface > &surfPtr=nullptr)
Update addressing, weights and (optional) centroids.
virtual ~faceAreaWeightAMI()=default
Destructor.
virtual void restartUncoveredSourceFace(List< DynamicList< label > > &srcAddr, List< DynamicList< scalar > > &srcWght, List< DynamicList< point > > &srcCtr, List< DynamicList< label > > &tgtAddr, List< DynamicList< scalar > > &tgtWght)
Attempt to re-evaluate source faces that have not been included.
virtual void calcInterArea(const label srcFacei, const label tgtFacei, scalar &area, vector &centroid) const
Area of intersection between source and target faces.
virtual bool setNextFaces(label &startSeedi, label &srcFacei, label &tgtFacei, const bitSet &mapFlag, labelList &seedFaces, const labelUList &visitedFaces, const bool errorOnNotFound=true) const
Set the source and target seed faces.
TypeName("faceAreaWeightAMI")
Runtime type information.
virtual bool overlaps(const label srcFacei, const label tgtFacei, const scalar threshold) const
Return true if faces overlap.
void operator=(const faceAreaWeightAMI &)=delete
No copy assignment.
OBJstream os(runTime.globalPath()/outputName)
Namespace for OpenFOAM.
List< label > labelList
A List of labels.
Definition List.H:62
PrimitivePatch< SubList< face >, const pointField & > primitivePatch
A PrimitivePatch with a SubList addressing for the faces, const reference for the point field.
Vector< scalar > vector
Definition vector.H:57
UList< label > labelUList
A UList of labels.
Definition UList.H:75
runTime write()
dictionary dict
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68