Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / fields / Fields / transformList / transformList.C
blob73353620d98a4b848981be5d4cea2d3da7dc1810
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2011 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "transformList.H"
28 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
30 template <class T>
31 Foam::List<T> Foam::transform
33     const tensor& rotTensor,
34     const UList<T>& field
37     List<T> newField(field.size());
39     forAll(field, i)
40     {
41         newField[i] = transform(rotTensor, field[i]);
42     }
44     return newField;
48 template <class T>
49 void Foam::transformList(const tensor& rotTensor, UList<T>& field)
51     forAll(field, i)
52     {
53         field[i] = transform(rotTensor, field[i]);
54     }
58 template <class T>
59 void Foam::transformList(const tensorField& rotTensor, UList<T>& field)
61     if (rotTensor.size() == 1)
62     {
63         forAll(field, i)
64         {
65             field[i] = transform(rotTensor[0], field[i]);
66         }
67     }
68     else if (rotTensor.size() == field.size())
69     {
70         forAll(field, i)
71         {
72             field[i] = transform(rotTensor[i], field[i]);
73         }
74     }
75     else
76     {
77         FatalErrorIn
78         (
79             "transformList(const tensorField&, UList<T>&)"
80         )   << "Sizes of field and transformation not equal. field:"
81             << field.size() << " transformation:" << rotTensor.size()
82             << abort(FatalError);
83     }
87 template <class T>
88 void Foam::transformList(const tensor& rotTensor, Map<T>& field)
90     forAllIter(typename Map<T>, field, iter)
91     {
92         iter() = transform(rotTensor[0], iter());
93     }
97 template <class T>
98 void Foam::transformList(const tensorField& rotTensor, Map<T>& field)
100     if (rotTensor.size() == 1)
101     {
102         forAllIter(typename Map<T>, field, iter)
103         {
104             iter() = transform(rotTensor[0], iter());
105         }
106     }
107     else
108     {
109         FatalErrorIn
110         (
111             "transformList(const tensorField&, Map<T>&)"
112         )   << "Multiple transformation tensors not supported. field:"
113             << field.size() << " transformation:" << rotTensor.size()
114             << abort(FatalError);
115     }
119 template <class T>
120 void Foam::transformList(const tensor& rotTensor, EdgeMap<T>& field)
122     forAllIter(typename EdgeMap<T>, field, iter)
123     {
124         iter() = transform(rotTensor[0], iter());
125     }
129 template <class T>
130 void Foam::transformList(const tensorField& rotTensor, EdgeMap<T>& field)
132     if (rotTensor.size() == 1)
133     {
134         forAllIter(typename EdgeMap<T>, field, iter)
135         {
136             iter() = transform(rotTensor[0], iter());
137         }
138     }
139     else
140     {
141         FatalErrorIn
142         (
143             "transformList(const tensorField&, EdgeMap<T>&)"
144         )   << "Multiple transformation tensors not supported. field:"
145             << field.size() << " transformation:" << rotTensor.size()
146             << abort(FatalError);
147     }
151 // ************************************************************************* //