extendedCentredFaceToCellStencil.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) 2011-2016 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Class
27  Foam::extendedCentredFaceToCellStencil
28 
29 Description
30 
31 SourceFiles
32  extendedCentredFaceToCellStencil.C
33 
34 \*---------------------------------------------------------------------------*/
35 
36 #ifndef extendedCentredFaceToCellStencil_H
37 #define extendedCentredFaceToCellStencil_H
38 
40 
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 
43 namespace Foam
44 {
45 
46 class faceToCellStencil;
47 
48 /*---------------------------------------------------------------------------*\
49  Class extendedCentredFaceToCellStencil Declaration
50 \*---------------------------------------------------------------------------*/
51 
53 :
55 {
56  // Private data
57 
58  //- Swap map for getting neighbouring data
59  autoPtr<mapDistribute> mapPtr_;
60 
61  //- Per face the stencil.
62  labelListList stencil_;
63 
64 
65  // Private Member Functions
66 
67  //- No copy construct
69  (
71  ) = delete;
72 
73  //- No copy assignment
74  void operator=(const extendedCentredFaceToCellStencil&) = delete;
75 
76 
77 public:
78 
79  // Constructors
80 
81  //- Construct from uncompacted face stencil
83 
84 
85  // Member Functions
86 
87  //- Return reference to the parallel distribution map
88  const mapDistribute& map() const
89  {
90  return *mapPtr_;
91  }
92 
93  //- Return reference to the stencil
94  const labelListList& stencil() const
95  {
96  return stencil_;
97  }
98 
99  //- After removing elements from the stencil adapt the schedule (map).
100  void compact();
101 
102  //- Use map to get the data into stencil order
103  template<class T>
105  (
107  List<List<T>>& stencilFld
108  ) const
109  {
111  (
112  map(),
113  stencil(),
114  fld,
115  stencilFld
116  );
117  }
118 
119  //- Sum surface field contributions to create cell values
120  template<class Type>
122  (
124  const List<List<scalar>>& stencilWeights
125  ) const
126  {
128  (
129  map(),
130  stencil(),
131  fld,
132  stencilWeights
133  );
134  }
135 
136 };
137 
138 
139 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
140 
141 } // End namespace Foam
142 
143 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
144 
145 #endif
146 
147 // ************************************************************************* //
Foam::extendedCentredFaceToCellStencil
Definition: extendedCentredFaceToCellStencil.H:51
Foam::extendedCentredFaceToCellStencil::compact
void compact()
After removing elements from the stencil adapt the schedule (map).
Definition: extendedCentredFaceToCellStencil.C:58
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::extendedFaceToCellStencil
Note: transformations on coupled patches not supported. Problem is the positions of cells reachable t...
Definition: extendedFaceToCellStencil.H:56
Foam::mapDistribute
Class containing processor-to-processor mapping information.
Definition: mapDistribute.H:163
fld
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< ' ';}gmvFile<< nl;for(const word &name :lagrangianScalarNames){ IOField< scalar > fld(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
Definition: gmvOutputLagrangian.H:23
Foam::extendedFaceToCellStencil::weightedSum
static tmp< GeometricField< Type, fvPatchField, volMesh > > weightedSum(const mapDistribute &map, const labelListList &stencil, const GeometricField< Type, fvsPatchField, surfaceMesh > &fld, const List< List< scalar >> &stencilWeights)
Sum surface field contributions to create cell values.
Foam::extendedCentredFaceToCellStencil::stencil
const labelListList & stencil() const
Return reference to the stencil.
Definition: extendedCentredFaceToCellStencil.H:93
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::extendedFaceToCellStencil::collectData
static void collectData(const mapDistribute &map, const labelListList &stencil, const GeometricField< T, fvsPatchField, surfaceMesh > &fld, List< List< T >> &stencilFld)
Use map to get the data into stencil order.
Foam::extendedCentredFaceToCellStencil::map
const mapDistribute & map() const
Return reference to the parallel distribution map.
Definition: extendedCentredFaceToCellStencil.H:87
extendedFaceToCellStencil.H
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::faceToCellStencil
baseclass for extended cell centred addressing. Contains per cell a list of neighbouring faces in glo...
Definition: faceToCellStencil.H:56
Foam::List< labelList >
Foam::extendedCentredFaceToCellStencil::weightedSum
tmp< GeometricField< Type, fvPatchField, volMesh > > weightedSum(const GeometricField< Type, fvsPatchField, surfaceMesh > &fld, const List< List< scalar >> &stencilWeights) const
Sum surface field contributions to create cell values.
Definition: extendedCentredFaceToCellStencil.H:121
Foam::GeometricField
Generic GeometricField class.
Definition: areaFieldsFwd.H:53
Foam::extendedCentredFaceToCellStencil::collectData
void collectData(const GeometricField< T, fvsPatchField, surfaceMesh > &fld, List< List< T >> &stencilFld) const
Use map to get the data into stencil order.
Definition: extendedCentredFaceToCellStencil.H:104