FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

pressureDirectedInletVelocityFvPatchVectorField.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software: you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by
00013     the Free Software Foundation, either version 3 of the License, or
00014     (at your option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
00023 
00024 Class
00025     Foam::pressureDirectedInletVelocityFvPatchVectorField
00026 
00027 Description
00028     Velocity inlet boundary condition for patches where the pressure is
00029     specified. The inflow velocity is obtained from the flux with the
00030     specified "inletDirection" direction.  If reverse flow is possible or
00031     expected use the "pressureDirectedInletOutletVelocityFvPatchVectorField"
00032     BC instead.
00033 
00034 SourceFiles
00035     pressureDirectedInletVelocityFvPatchVectorField.C
00036 
00037 \*---------------------------------------------------------------------------*/
00038 
00039 #ifndef pressureDirectedInletVelocityFvPatchVectorField_H
00040 #define pressureDirectedInletVelocityFvPatchVectorField_H
00041 
00042 #include <finiteVolume/fvPatchFields.H>
00043 #include <finiteVolume/fixedValueFvPatchFields.H>
00044 
00045 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00046 
00047 namespace Foam
00048 {
00049 
00050 /*---------------------------------------------------------------------------*\
00051                  Class pressureDirectedInletVelocityFvPatch Declaration
00052 \*---------------------------------------------------------------------------*/
00053 
00054 class pressureDirectedInletVelocityFvPatchVectorField
00055 :
00056     public fixedValueFvPatchVectorField
00057 {
00058     // Private data
00059 
00060         word phiName_;
00061         word rhoName_;
00062         vectorField inletDir_;
00063 
00064 
00065 public:
00066 
00067     //- Runtime type information
00068     TypeName("pressureDirectedInletVelocity");
00069 
00070 
00071     // Constructors
00072 
00073         //- Construct from patch and internal field
00074         pressureDirectedInletVelocityFvPatchVectorField
00075         (
00076             const fvPatch&,
00077             const DimensionedField<vector, volMesh>&
00078         );
00079 
00080         //- Construct from patch, internal field and dictionary
00081         pressureDirectedInletVelocityFvPatchVectorField
00082         (
00083             const fvPatch&,
00084             const DimensionedField<vector, volMesh>&,
00085             const dictionary&
00086         );
00087 
00088         //- Construct by mapping given
00089         //  pressureDirectedInletVelocityFvPatchVectorField
00090         //  onto a new patch
00091         pressureDirectedInletVelocityFvPatchVectorField
00092         (
00093             const pressureDirectedInletVelocityFvPatchVectorField&,
00094             const fvPatch&,
00095             const DimensionedField<vector, volMesh>&,
00096             const fvPatchFieldMapper&
00097         );
00098 
00099         //- Construct as copy
00100         pressureDirectedInletVelocityFvPatchVectorField
00101         (
00102             const pressureDirectedInletVelocityFvPatchVectorField&
00103         );
00104 
00105         //- Construct and return a clone
00106         virtual tmp<fvPatchVectorField> clone() const
00107         {
00108             return tmp<fvPatchVectorField>
00109             (
00110                 new pressureDirectedInletVelocityFvPatchVectorField(*this)
00111             );
00112         }
00113 
00114         //- Construct as copy setting internal field reference
00115         pressureDirectedInletVelocityFvPatchVectorField
00116         (
00117             const pressureDirectedInletVelocityFvPatchVectorField&,
00118             const DimensionedField<vector, volMesh>&
00119         );
00120 
00121         //- Construct and return a clone setting internal field reference
00122         virtual tmp<fvPatchVectorField> clone
00123         (
00124             const DimensionedField<vector, volMesh>& iF
00125         ) const
00126         {
00127             return tmp<fvPatchVectorField>
00128             (
00129                 new pressureDirectedInletVelocityFvPatchVectorField
00130                 (
00131                     *this,
00132                     iF
00133                 )
00134             );
00135         }
00136 
00137 
00138     // Member functions
00139 
00140         // Access
00141 
00142             //- Return the name of rho
00143             const word& rhoName() const
00144             {
00145                 return rhoName_;
00146             }
00147 
00148             //- Return reference to the name of rho to allow adjustment
00149             word& rhoName()
00150             {
00151                 return rhoName_;
00152             }
00153 
00154             //- Return the name of phi
00155             const word& phiName() const
00156             {
00157                 return phiName_;
00158             }
00159 
00160             //- Return reference to the name of phi to allow adjustment
00161             word& phiName()
00162             {
00163                 return phiName_;
00164             }
00165 
00166 
00167         // Mapping functions
00168 
00169             //- Map (and resize as needed) from self given a mapping object
00170             virtual void autoMap
00171             (
00172                 const fvPatchFieldMapper&
00173             );
00174 
00175             //- Reverse map the given fvPatchField onto this fvPatchField
00176             virtual void rmap
00177             (
00178                 const fvPatchVectorField&,
00179                 const labelList&
00180             );
00181 
00182 
00183         //- Update the coefficients associated with the patch field
00184         virtual void updateCoeffs();
00185 
00186         //- Write
00187         virtual void write(Ostream&) const;
00188 
00189 
00190     // Member operators
00191 
00192         virtual void operator=(const fvPatchField<vector>& pvf);
00193 };
00194 
00195 
00196 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00197 
00198 } // End namespace Foam
00199 
00200 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00201 
00202 #endif
00203 
00204 // ************************ vim: set sw=4 sts=4 et: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines