extendedCentredCellToCellStencil.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 -------------------------------------------------------------------------------
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::extendedCentredCellToCellStencil
28 
29 Description
30 
31 SourceFiles
32  extendedCentredCellToCellStencil.C
33 
34 \*---------------------------------------------------------------------------*/
35 
36 #ifndef extendedCentredCellToCellStencil_H
37 #define extendedCentredCellToCellStencil_H
38 
41 
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 
44 namespace Foam
45 {
46 
47 class cellToCellStencil;
48 
49 /*---------------------------------------------------------------------------*\
50  Class extendedCentredCellToCellStencil Declaration
51 \*---------------------------------------------------------------------------*/
52 
54 :
56 {
57  // Private data
58 
59  //- Swap map for getting neighbouring data
60  autoPtr<mapDistribute> mapPtr_;
61 
62  //- Per cell the stencil.
63  labelListList stencil_;
64 
65 
66  // Private Member Functions
67 
68  //- No copy construct
70  (
72  ) = delete;
73 
74  //- No copy assignment
75  void operator=(const extendedCentredCellToCellStencil&) = delete;
76 
77 
78 public:
79 
80  // Constructors
81 
82  //- Construct from uncompacted cell stencil
84 
85 
86  // Member Functions
87 
88  //- Return reference to the parallel distribution map
89  const mapDistribute& map() const
90  {
91  return *mapPtr_;
92  }
93 
94  //- Return reference to the stencil
95  const labelListList& stencil() const
96  {
97  return stencil_;
98  }
99 
100  //- After removing elements from the stencil adapt the schedule (map).
101  void compact();
102 
103  //- Use map to get the data into stencil order
104  template<class Type>
106  (
108  List<List<Type>>& stencilFld
109  ) const
110  {
112  (
113  map(),
114  stencil(),
115  fld,
116  stencilFld
117  );
118  }
119 
120  //- Sum vol field contributions to create cell values
121  template<class Type, class WeightType>
122  tmp
123  <
125  <
127  fvPatchField,
128  volMesh
129  >
131  (
133  const List<List<WeightType>>& stencilWeights
134  ) const
135  {
137  (
138  map(),
139  stencil(),
140  fld,
141  stencilWeights
142  );
143  }
144 };
145 
146 
147 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
148 
149 } // End namespace Foam
150 
151 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
152 
153 #endif
154 
155 // ************************************************************************* //
Foam::fvPatchField
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
Definition: volSurfaceMapping.H:50
extendedCellToFaceStencil.H
Foam::extendedCellToCellStencil
Baseclass for cell-to-cell stencils.
Definition: extendedCellToCellStencil.H:54
Foam::extendedCellToFaceStencil::collectData
static void collectData(const mapDistribute &map, const labelListList &stencil, const GeometricField< T, fvPatchField, volMesh > &fld, List< List< T >> &stencilFld)
Use map to get the data into stencil order.
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:59
Foam::volMesh
Mesh data needed to do the Finite Volume discretisation.
Definition: volMesh.H:50
Foam::outerProduct::type
typeOfRank< typename pTraits< arg1 >::cmptType, direction(pTraits< arg1 >::rank)+direction(pTraits< arg2 >::rank) >::type type
Definition: products.H:114
Foam::extendedCentredCellToCellStencil
Definition: extendedCentredCellToCellStencil.H:52
Foam::extendedCellToCellStencil::weightedSum
static tmp< GeometricField< typename outerProduct< WeightType, Type >::type, fvPatchField, volMesh > > weightedSum(const mapDistribute &map, const labelListList &stencil, const GeometricField< Type, fvPatchField, volMesh > &fld, const List< List< WeightType >> &stencilWeights)
Sum surface field contributions to create cell values.
Foam::extendedCentredCellToCellStencil::collectData
void collectData(const GeometricField< Type, fvPatchField, volMesh > &fld, List< List< Type >> &stencilFld) const
Use map to get the data into stencil order.
Definition: extendedCentredCellToCellStencil.H:105
extendedCellToCellStencil.H
Foam::extendedCentredCellToCellStencil::compact
void compact()
After removing elements from the stencil adapt the schedule (map).
Definition: extendedCentredCellToCellStencil.C:58
Foam::extendedCentredCellToCellStencil::map
const mapDistribute & map() const
Return reference to the parallel distribution map.
Definition: extendedCentredCellToCellStencil.H:88
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
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::extendedCentredCellToCellStencil::stencil
const labelListList & stencil() const
Return reference to the stencil.
Definition: extendedCentredCellToCellStencil.H:94
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::extendedCentredCellToCellStencil::weightedSum
tmp< GeometricField< typename outerProduct< WeightType, Type >::type, fvPatchField, volMesh > > weightedSum(const GeometricField< Type, fvPatchField, volMesh > &fld, const List< List< WeightType >> &stencilWeights) const
Sum vol field contributions to create cell values.
Definition: extendedCentredCellToCellStencil.H:130
Foam::List< labelList >
Foam::GeometricField< Type, fvPatchField, volMesh >
Foam::cellToCellStencil
baseclass for extended cell centred addressing. Contains per cell a list of neighbouring cells and/or...
Definition: cellToCellStencil.H:56