Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / dynamicMesh / meshMotion / tetMotionSolver / motionDiffs / patchEnhanced / patchEnhancedDiff.C
blob1e973061c15bddaf32ab8b886cf3650a3f27e4d9
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Description
25     Patch-enhanced motion diffusion.
27 \*---------------------------------------------------------------------------*/
29 #include "patchEnhancedDiff.H"
30 #include "addToRunTimeSelectionTable.H"
31 #include "elementFields.H"
33 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
35 namespace Foam
37     defineTypeNameAndDebug(patchEnhancedDiff, 0);
38     addToRunTimeSelectionTable(motionDiff, patchEnhancedDiff, dictionary);
42 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
44 // Construct from components
45 Foam::patchEnhancedDiff::patchEnhancedDiff
47     const tetMotionSolver& mSolver
50     motionDiff(mSolver),
51     patchNames_(mSolver.lookup("distancePatches")),
52     motionGamma_
53     (
54         IOobject
55         (
56             "motionGamma",
57             tetMesh().time().timeName(),
58             tetMesh()(),
59             IOobject::NO_READ,
60             IOobject::NO_WRITE
61         ),
62         tetMesh(),
63         dimensionedScalar("1.0", dimless, 1.0)
64     )
66     enhance(motionGamma_);
70 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
72 Foam::patchEnhancedDiff::~patchEnhancedDiff()
76 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
78 void Foam::patchEnhancedDiff::enhance(elementScalarField& g) const
80     const polyMesh& m = tetMesh()();
81     const polyBoundaryMesh& bdry = m.boundaryMesh();
83     forAll (patchNames_, i)
84     {
85         label pID = bdry.findPatchID(patchNames_[i]);
87         if (pID > -1)
88         {
89             // Cannot use patch operations: they are made for point fields
90             const unallocLabelList& fc =
91                 m.boundaryMesh()[pID].faceCells();
93             forAll (fc, fcI)
94             {
95                 g[fc[fcI]] *= 2;
96             }
97         }
98     }
102 // ************************************************************************* //