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: ************************ //