![]() |
|
00001 /*---------------------------------------------------------------------------*\ 00002 ========= | 00003 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox 00004 \\ / O peration | 00005 \\ / A nd | Copyright (C) 1991-2005 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 the 00013 Free Software Foundation; either version 2 of the License, or (at your 00014 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, write to the Free Software Foundation, 00023 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00024 00025 Class 00026 fixedGradientFvPatchField 00027 00028 Description 00029 00030 SourceFiles 00031 fixedGradientFvPatchField.C 00032 00033 \*---------------------------------------------------------------------------*/ 00034 00035 #ifndef fixedGradientFvPatchField_H 00036 #define fixedGradientFvPatchField_H 00037 00038 #include "fvPatchField.H" 00039 00040 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00041 00042 namespace Foam 00043 { 00044 00045 /*---------------------------------------------------------------------------*\ 00046 Class fixedGradientFvPatch Declaration 00047 \*---------------------------------------------------------------------------*/ 00048 00049 template<class Type> 00050 class fixedGradientFvPatchField 00051 : 00052 public fvPatchField<Type> 00053 { 00054 // Private data 00055 00056 Field<Type> gradient_; 00057 00058 00059 public: 00060 00061 //- Runtime type information 00062 TypeName("fixedGradient"); 00063 00064 00065 // Constructors 00066 00067 //- Construct from patch and internal field 00068 fixedGradientFvPatchField 00069 ( 00070 const fvPatch&, 00071 const Field<Type>& 00072 ); 00073 00074 //- Construct from patch, internal field and dictionary 00075 fixedGradientFvPatchField 00076 ( 00077 const fvPatch&, 00078 const Field<Type>&, 00079 const dictionary& 00080 ); 00081 00082 //- Construct by mapping the given fixedGradientFvPatchField 00083 // onto a new patch 00084 fixedGradientFvPatchField 00085 ( 00086 const fixedGradientFvPatchField<Type>&, 00087 const fvPatch&, 00088 const Field<Type>&, 00089 const fvPatchFieldMapper& 00090 ); 00091 00092 //- Construct and return a clone 00093 virtual tmp<fvPatchField<Type> > clone() const 00094 { 00095 return tmp<fvPatchField<Type> > 00096 ( 00097 new fixedGradientFvPatchField<Type>(*this) 00098 ); 00099 } 00100 00101 //- Construct as copy setting internal field reference 00102 fixedGradientFvPatchField 00103 ( 00104 const fixedGradientFvPatchField<Type>&, 00105 const Field<Type>& 00106 ); 00107 00108 //- Construct and return a clone setting internal field reference 00109 virtual tmp<fvPatchField<Type> > clone(const Field<Type>& iF) const 00110 { 00111 return tmp<fvPatchField<Type> > 00112 ( 00113 new fixedGradientFvPatchField<Type>(*this, iF) 00114 ); 00115 } 00116 00117 00118 // Member functions 00119 00120 // Return defining fields 00121 00122 //- Return gradient at boundary 00123 virtual Field<Type>& gradient() 00124 { 00125 return gradient_; 00126 } 00127 00128 virtual const Field<Type>& gradient() const 00129 { 00130 return gradient_; 00131 } 00132 00133 00134 // Mapping functions 00135 00136 //- Map (and resize as needed) from self given a mapping object 00137 virtual void autoMap 00138 ( 00139 const fvPatchFieldMapper& 00140 ); 00141 00142 //- Reverse map the given fvPatchField onto this fvPatchField 00143 virtual void rmap 00144 ( 00145 const fvPatchField<Type>&, 00146 const labelList& 00147 ); 00148 00149 00150 // Evaluation functions 00151 00152 //- Return gradient at boundary 00153 virtual tmp<Field<Type> > snGrad() const 00154 { 00155 return gradient_; 00156 } 00157 00158 //- Evaluate the patch field 00159 virtual void evaluate(); 00160 00161 00162 //- Return the matrix diagonal coefficients corresponding to the 00163 // evaluation of the value of this patchField with given weights 00164 virtual tmp<Field<Type> > valueInternalCoeffs 00165 ( 00166 const tmp<scalarField>& 00167 ) const; 00168 00169 //- Return the matrix source coefficients corresponding to the 00170 // evaluation of the value of this patchField with given weights 00171 virtual tmp<Field<Type> > valueBoundaryCoeffs 00172 ( 00173 const tmp<scalarField>& 00174 ) const; 00175 00176 //- Return the matrix diagonal coefficients corresponding to the 00177 // evaluation of the gradient of this patchField 00178 virtual tmp<Field<Type> > gradientInternalCoeffs() const; 00179 00180 //- Return the matrix source coefficients corresponding to the 00181 // evaluation of the gradient of this patchField 00182 virtual tmp<Field<Type> > gradientBoundaryCoeffs() const; 00183 00184 00185 //- Write 00186 virtual void write(Ostream&) const; 00187 }; 00188 00189 00190 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00191 00192 } // End namespace Foam 00193 00194 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00195 00196 #ifdef NoRepository 00197 # include "fixedGradientFvPatchField.C" 00198 #endif 00199 00200 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00201 00202 #endif 00203 00204 // ************************************************************************* //