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

fluxCorrectedVelocityFvPatchVectorField.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::fluxCorrectedVelocityFvPatchVectorField
00026 
00027 Description
00028     Velocity outlet boundary condition for patches where the pressure is
00029     specified. The outflow velocity is obtained by "zeroGradient" and then
00030     corrected from the flux.  If reverse flow is possible or expected use
00031     the "pressureInletOutletVelocityFvPatchVectorField" BC instead.
00032 
00033 SourceFiles
00034     fluxCorrectedVelocityFvPatchVectorField.C
00035 
00036 \*---------------------------------------------------------------------------*/
00037 
00038 #ifndef fluxCorrectedVelocityFvPatchVectorField_H
00039 #define fluxCorrectedVelocityFvPatchVectorField_H
00040 
00041 #include <finiteVolume/fvPatchFields.H>
00042 #include <finiteVolume/zeroGradientFvPatchFields.H>
00043 
00044 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00045 
00046 namespace Foam
00047 {
00048 
00049 /*---------------------------------------------------------------------------*\
00050                    Class fluxCorrectedVelocityFvPatch Declaration
00051 \*---------------------------------------------------------------------------*/
00052 
00053 class fluxCorrectedVelocityFvPatchVectorField
00054 :
00055     public zeroGradientFvPatchVectorField
00056 {
00057     // Private data
00058 
00059         word phiName_;
00060         word rhoName_;
00061 
00062 
00063 public:
00064 
00065     //- Runtime type information
00066     TypeName("fluxCorrectedVelocity");
00067 
00068 
00069     // Constructors
00070 
00071         //- Construct from patch and internal field
00072         fluxCorrectedVelocityFvPatchVectorField
00073         (
00074             const fvPatch&,
00075             const DimensionedField<vector, volMesh>&
00076         );
00077 
00078         //- Construct from patch, internal field and dictionary
00079         fluxCorrectedVelocityFvPatchVectorField
00080         (
00081             const fvPatch&,
00082             const DimensionedField<vector, volMesh>&,
00083             const dictionary&
00084         );
00085 
00086         //- Construct by mapping given fluxCorrectedVelocityFvPatchVectorField
00087         //  onto a new patch
00088         fluxCorrectedVelocityFvPatchVectorField
00089         (
00090             const fluxCorrectedVelocityFvPatchVectorField&,
00091             const fvPatch&,
00092             const DimensionedField<vector, volMesh>&,
00093             const fvPatchFieldMapper&
00094         );
00095 
00096         //- Construct and return a clone
00097         virtual tmp<fvPatchVectorField> clone() const
00098         {
00099             return tmp<fvPatchVectorField>
00100             (
00101                 new fluxCorrectedVelocityFvPatchVectorField(*this)
00102             );
00103         }
00104 
00105         //- Construct as copy setting internal field reference
00106         fluxCorrectedVelocityFvPatchVectorField
00107         (
00108             const fluxCorrectedVelocityFvPatchVectorField&,
00109             const DimensionedField<vector, volMesh>&
00110         );
00111 
00112         //- Construct and return a clone setting internal field reference
00113         virtual tmp<fvPatchVectorField> clone
00114         (
00115             const DimensionedField<vector, volMesh>& iF
00116         ) const
00117         {
00118             return tmp<fvPatchVectorField>
00119             (
00120                 new fluxCorrectedVelocityFvPatchVectorField(*this, iF)
00121             );
00122         }
00123 
00124 
00125     // Member functions
00126 
00127         // Evaluation functions
00128 
00129             //- Evaluate the patch field
00130             virtual void evaluate
00131             (
00132                 const Pstream::commsTypes commsType=Pstream::blocking
00133             );
00134 
00135 
00136         //- Write
00137         virtual void write(Ostream&) const;
00138 };
00139 
00140 
00141 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00142 
00143 } // End namespace Foam
00144 
00145 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00146 
00147 #endif
00148 
00149 // ************************ vim: set sw=4 sts=4 et: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines