sphericalTensorFieldTemplates.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) 2019 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 // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * //
29 
30 template<class Cmpt>
31 void Foam::zip
32 (
34  const UList<Cmpt>& ii
35 )
36 {
37  typedef SphericalTensor<Cmpt> value_type;
38 
39  const label len = result.size();
40 
41  #ifdef FULLDEBUG
42  if (len != ii.size())
43  {
45  << "Components sizes do not match: " << len << " ("
46  << ii.size() << ')'
47  << nl
48  << abort(FatalError);
49  }
50  #endif
51 
52  for (label i=0; i < len; ++i)
53  {
54  result[i] = value_type(ii[i]);
55  }
56 }
57 
58 
59 template<class Cmpt>
60 void Foam::unzip
61 (
63  Field<Cmpt>& ii
64 )
65 {
66  const label len = input.size();
67 
68  #ifdef FULLDEBUG
69  if (len != ii.size())
70  {
72  << "Components sizes do not match: " << len << " ("
73  << ii.size() << ')'
74  << nl
75  << abort(FatalError);
76  }
77  #endif
78 
79  for (label i=0; i < len; ++i)
80  {
81  ii[i] = input[i].ii();
82  }
83 }
84 
85 
86 template<class Cmpt>
89 (
90  const Field<Cmpt>& ii
91 )
92 {
93  auto tresult = tmp<Field<SphericalTensor<Cmpt>>>::New(ii.size());
94 
95  Foam::zip(tresult.ref(), ii);
96 
97  return tresult;
98 }
99 
100 
101 // ************************************************************************* //
Foam::unzip
void unzip(const FieldField< Field, SphericalTensor< Cmpt >> &input, FieldField< Field, Cmpt > &ii)
Unzip sphericalTensor field field into components.
Definition: sphericalTensorFieldField.C:55
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::Field
Generic templated field type.
Definition: Field.H:63
Foam::FatalError
error FatalError
Foam::abort
errorManip< error > abort(error &err)
Definition: errorManip.H:144
Foam::SphericalTensor
A templated (3 x 3) diagonal tensor of objects of <T>, effectively containing 1 element,...
Definition: SphericalTensor.H:57
Foam::New
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
Definition: DimensionedFieldReuseFunctions.H:105
FatalErrorInFunction
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Definition: error.H:453
Foam::nl
constexpr char nl
Definition: Ostream.H:404
Foam::UList
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition: HashTable.H:103
Foam::input
static Istream & input(Istream &is, IntRange< T > &range)
Definition: IntRanges.C:55
Foam::zip
void zip(FieldField< Field, SphericalTensor< Cmpt >> &result, const FieldField< Field, Cmpt > &ii)
Zip together sphericalTensor field field from components.
Definition: sphericalTensorFieldField.C:41
Foam::UList::size
void size(const label n)
Older name for setAddressableSize.
Definition: UList.H:114
Foam::VectorSpace::size
static constexpr direction size() noexcept
The number of elements in the VectorSpace = Ncmpts.
Definition: VectorSpace.H:176