uniformInletOutletFvPatchField.H 6.1 KB
Newer Older
1 2 3 4
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
OpenFOAM bot's avatar
OpenFOAM bot committed
5
    \\  /    A nd           | www.openfoam.com
6
     \\/     M anipulation  |
OpenFOAM bot's avatar
OpenFOAM bot committed
7
-------------------------------------------------------------------------------
OpenFOAM bot's avatar
OpenFOAM bot committed
8
    Copyright (C) 2013-2016 OpenFOAM Foundation
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.

    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.

    You should have received a copy of the GNU General Public License
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.

Class
    Foam::uniformInletOutletFvPatchField

Group
    grpOutletBoundaryConditions

Description
    Variant of inletOutlet boundary condition with uniform inletValue.

35
Usage
36 37 38 39 40 41 42 43
    \table
        Property     | Description             | Required    | Default value
        phi          | flux field name         | no          | phi
        uniformInletValue   | inlet value for reverse flow | yes    |
    \endtable

    Example of the boundary condition specification:
    \verbatim
44
    <patchName>
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
    {
        type                uniformInletOutlet;
        phi                 phi;
        uniformInletValue   0;
        value               uniform 0;
    }
    \endverbatim

    The mode of operation is determined by the sign of the flux across the
    patch faces.

Note
    Sign conventions:
    - positive flux (out of domain): apply zero-gradient condition
    - negative flux (into of domain): apply the user-specified fixed value

61
See also
62
    Foam::inletOutletFvPatchField
63
    Foam::Function1Types
64 65 66 67 68 69 70 71 72 73

SourceFiles
    uniformInletOutletFvPatchField.C

\*---------------------------------------------------------------------------*/

#ifndef uniformInletOutletFvPatchField_H
#define uniformInletOutletFvPatchField_H

#include "mixedFvPatchField.H"
Henry Weller's avatar
Henry Weller committed
74
#include "Function1.H"
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{

/*---------------------------------------------------------------------------*\
                   Class uniformInletOutletFvPatchField Declaration
\*---------------------------------------------------------------------------*/

template<class Type>
class uniformInletOutletFvPatchField
:
    public mixedFvPatchField<Type>
{

protected:

    // Protected data

        //- Name of flux field
        word phiName_;

        //- Value
Henry Weller's avatar
Henry Weller committed
99
        autoPtr<Function1<Type>> uniformInletValue_;
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141


public:

    //- Runtime type information
    TypeName("uniformInletOutlet");


    // Constructors

        //- Construct from patch and internal field
        uniformInletOutletFvPatchField
        (
            const fvPatch&,
            const DimensionedField<Type, volMesh>&
        );

        //- Construct from patch, internal field and dictionary
        uniformInletOutletFvPatchField
        (
            const fvPatch&,
            const DimensionedField<Type, volMesh>&,
            const dictionary&
        );

        //- Construct by mapping given uniformInletOutletFvPatchField
        //  onto a new patch
        uniformInletOutletFvPatchField
        (
            const uniformInletOutletFvPatchField<Type>&,
            const fvPatch&,
            const DimensionedField<Type, volMesh>&,
            const fvPatchFieldMapper&
        );

        //- Construct as copy
        uniformInletOutletFvPatchField
        (
            const uniformInletOutletFvPatchField<Type>&
        );

        //- Construct and return a clone
142
        virtual tmp<fvPatchField<Type>> clone() const
143
        {
144
            return tmp<fvPatchField<Type>>
145 146 147 148 149 150 151 152 153 154 155 156 157
            (
                new uniformInletOutletFvPatchField<Type>(*this)
            );
        }

        //- Construct as copy setting internal field reference
        uniformInletOutletFvPatchField
        (
            const uniformInletOutletFvPatchField<Type>&,
            const DimensionedField<Type, volMesh>&
        );

        //- Construct and return a clone setting internal field reference
158
        virtual tmp<fvPatchField<Type>> clone
159 160 161 162
        (
            const DimensionedField<Type, volMesh>& iF
        ) const
        {
163
            return tmp<fvPatchField<Type>>
164 165 166 167 168 169
            (
                new uniformInletOutletFvPatchField<Type>(*this, iF)
            );
        }


170
    // Member functions
171

172
        // Attributes
173

174 175 176 177 178
            //- Return true: this patch field is altered by assignment
            virtual bool assignable() const
            {
                return true;
            }
179 180


181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
        // Mapping functions

            //- Map (and resize as needed) from self given a mapping object
            virtual void autoMap
            (
                const fvPatchFieldMapper&
            );

            //- Reverse map the given fvPatchField onto this fvPatchField
            virtual void rmap
            (
                const fvPatchField<Type>&,
                const labelList&
            );

196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216

        //- Update the coefficients associated with the patch field
        virtual void updateCoeffs();

        //- Write
        virtual void write(Ostream&) const;


    // Member operators

        virtual void operator=(const fvPatchField<Type>& pvf);
};


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End namespace Foam

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#ifdef NoRepository
217
    #include "uniformInletOutletFvPatchField.C"
218 219 220 221 222 223 224
#endif

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#endif

// ************************************************************************* //