lduAddressingTemplates.C
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) 2024 OpenCFD Ltd.
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 \*---------------------------------------------------------------------------*/
27 
28 #include "lduAddressing.H"
29 
30 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
31 
32 template<class Type>
34 (
35  const UList<Type>& faceVals,
36  List<Type>& vals
37 ) const
38 {
39  const auto& offsets = losortStartAddr();
40  const auto& indexToFace = losortAddr();
41 
42  const label n = offsets.size()-1;
43 
44  vals.resize_nocopy(faceVals.size());
45 
46  for (label celli = 0; celli < n; celli++)
47  {
48  const label start = offsets[celli];
49  const label end = offsets[celli+1];
50 
51  for (label i = start; i < end; i++)
52  {
53  const label facei = indexToFace[i];
54  vals[i] = faceVals[facei];
55  }
56  }
57 }
58 
59 
60 // ************************************************************************* //
void size(const label n)
Older name for setAddressableSize.
Definition: UList.H:116
const labelUList & losortStartAddr() const
Return losort start addressing.
void resize_nocopy(const label len)
Adjust allocated size of list without necessarily.
Definition: ListI.H:168
void map(const UList< Type > &faceVals, List< Type > &vals) const
Helper to convert lower addressing & data into CSR format.
const char * end
Definition: SVGTools.H:223
const labelUList & losortAddr() const
Return losort addressing.
label n