Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / finiteVolume / fields / fvPatchFields / derived / outletInlet / outletInletFvPatchField.C
blob49715eea42a2829e816f26fd9f5a0db9241b8959
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 \*---------------------------------------------------------------------------*/
26 #include "outletInletFvPatchField.H"
28 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
30 namespace Foam
33 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
35 template<class Type>
36 outletInletFvPatchField<Type>::outletInletFvPatchField
38     const fvPatch& p,
39     const DimensionedField<Type, volMesh>& iF
42     mixedFvPatchField<Type>(p, iF)
44     this->refValue() = *this;
45     this->refGrad() = pTraits<Type>::zero;
46     this->valueFraction() = 0.0;
50 template<class Type>
51 outletInletFvPatchField<Type>::outletInletFvPatchField
53     const outletInletFvPatchField<Type>& ptf,
54     const fvPatch& p,
55     const DimensionedField<Type, volMesh>& iF,
56     const fvPatchFieldMapper& mapper
59     mixedFvPatchField<Type>(ptf, p, iF, mapper)
63 template<class Type>
64 outletInletFvPatchField<Type>::outletInletFvPatchField
66     const fvPatch& p,
67     const DimensionedField<Type, volMesh>& iF,
68     const dictionary& dict
71     mixedFvPatchField<Type>(p, iF)
73     this->refValue() = Field<Type>("outletValue", dict, p.size());
75     if (dict.found("value"))
76     {
77         fvPatchField<Type>::operator=
78         (
79             Field<Type>("value", dict, p.size())
80         );
81     }
82     else
83     {
84         fvPatchField<Type>::operator=(this->refValue());
85     }
87     this->refGrad() = pTraits<Type>::zero;
88     this->valueFraction() = 0.0;
92 template<class Type>
93 outletInletFvPatchField<Type>::outletInletFvPatchField
95     const outletInletFvPatchField<Type>& ptf
98     mixedFvPatchField<Type>(ptf)
102 template<class Type>
103 outletInletFvPatchField<Type>::outletInletFvPatchField
105     const outletInletFvPatchField<Type>& ptf,
106     const DimensionedField<Type, volMesh>& iF
109     mixedFvPatchField<Type>(ptf, iF)
113 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
115 template<class Type>
116 void outletInletFvPatchField<Type>::updateCoeffs()
118     if (this->updated())
119     {
120         return;
121     }
123     const fvsPatchField<scalar>& phip = this->lookupPatchField
124     (
125         "phi",
126         reinterpret_cast<const surfaceScalarField*>(0),
127         reinterpret_cast<const scalar*>(0)
128     );
130     this->valueFraction() = pos(phip);
132     mixedFvPatchField<Type>::updateCoeffs();
136 template<class Type>
137 void outletInletFvPatchField<Type>::write(Ostream& os) const
139     fvPatchField<Type>::write(os);
140     this->refValue().writeEntry("outletValue", os);
141     this->writeEntry("value", os);
145 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
147 } // End namespace Foam
149 // ************************************************************************* //