BUGFIX: Illegal use of uninitialised value (backport)
[foam-extend-3.2.git] / src / dynamicMesh / dynamicFvMesh / dynamicTopoFvMesh / fieldMapping / topoSurfaceMapperTemplates.C
blob710ef044b8ee53ba185cc92412694610a8a3db94
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 \*---------------------------------------------------------------------------*/
27 namespace Foam
30 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
32 //- Map the internal field
33 template <class Type>
34 void topoSurfaceMapper::mapInternalField
36     const word& fieldName,
37     Field<Type>& iF
38 ) const
40     if (iF.size() != sizeBeforeMapping())
41     {
42         FatalErrorIn
43         (
44             "\n\n"
45             "void topoSurfaceMapper::mapInternalField<Type>\n"
46             "(\n"
47             "    Field<Type>& iF\n"
48             ") const\n"
49         )  << "Incompatible size before mapping." << nl
50            << " Field: " << fieldName << nl
51            << " Field size: " << iF.size() << nl
52            << " map size: " << sizeBeforeMapping() << nl
53            << abort(FatalError);
54     }
56     // Map the internal field
57     iF.autoMap(*this);
59     // Flip the flux
60     const labelList flipFaces = flipFaceFlux().toc();
62     forAll (flipFaces, i)
63     {
64         if (flipFaces[i] < iF.size())
65         {
66             iF[flipFaces[i]] *= -1.0;
67         }
68         else
69         {
70             FatalErrorIn
71             (
72                 "\n\n"
73                 "void topoSurfaceMapper::mapInternalField<Type>\n"
74                 "(\n"
75                 "    Field<Type>& iF\n"
76                 ") const\n"
77             )  << "Cannot flip boundary face fluxes." << nl
78                << " Field: " << fieldName << nl
79                << " Field size: " << iF.size() << nl
80                << " Face flip index: " << flipFaces[i] << nl
81                << abort(FatalError);
82         }
83     }
87 } // End namespace Foam
89 // ************************************************************************* //