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

slicedFvPatchField.C

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 \*---------------------------------------------------------------------------*/
00025 
00026 #include <finiteVolume/slicedFvPatchField.H>
00027 
00028 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00029 
00030 namespace Foam
00031 {
00032 
00033 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
00034 
00035 template<class Type>
00036 slicedFvPatchField<Type>::slicedFvPatchField
00037 (
00038     const fvPatch& p,
00039     const DimensionedField<Type, volMesh>& iF,
00040     const Field<Type>& completeField
00041 )
00042 :
00043     fvPatchField<Type>(p, iF, Field<Type>())
00044 {
00045     // Set the fvPatchField to a slice of the given complete field
00046     UList<Type>::operator=(p.patchSlice(completeField));
00047 }
00048 
00049 
00050 template<class Type>
00051 slicedFvPatchField<Type>::slicedFvPatchField
00052 (
00053     const fvPatch& p,
00054     const DimensionedField<Type, volMesh>& iF
00055 )
00056 :
00057     fvPatchField<Type>(p, iF, Field<Type>())
00058 {}
00059 
00060 
00061 template<class Type>
00062 slicedFvPatchField<Type>::slicedFvPatchField
00063 (
00064     const slicedFvPatchField<Type>& ptf,
00065     const fvPatch& p,
00066     const DimensionedField<Type, volMesh>& iF,
00067     const fvPatchFieldMapper& mapper
00068 )
00069 :
00070     fvPatchField<Type>(ptf, p, iF, mapper)
00071 {
00072     notImplemented
00073     (
00074         "slicedFvPatchField<Type>::"
00075         "slicedFvPatchField(const slicedFvPatchField<Type>&, "
00076         "const fvPatch&, const Field<Type>&, const fvPatchFieldMapper&)"
00077     );
00078 }
00079 
00080 
00081 template<class Type>
00082 slicedFvPatchField<Type>::slicedFvPatchField
00083 (
00084     const fvPatch& p,
00085     const DimensionedField<Type, volMesh>& iF,
00086     const dictionary& dict
00087 )
00088 :
00089     fvPatchField<Type>(p, iF, dict)
00090 {
00091     notImplemented
00092     (
00093         "slicedFvPatchField<Type>::"
00094         "slicedFvPatchField(const Field<Type>&, const dictionary&)"
00095     );
00096 }
00097 
00098 
00099 template<class Type>
00100 slicedFvPatchField<Type>::slicedFvPatchField
00101 (
00102     const slicedFvPatchField<Type>& ptf,
00103     const DimensionedField<Type, volMesh>& iF
00104 )
00105 :
00106     fvPatchField<Type>(ptf.patch(), iF, Field<Type>())
00107 {
00108     // Transfer the slice from the argument
00109     UList<Type>::operator=(ptf);
00110 }
00111 
00112 template<class Type>
00113 tmp<fvPatchField<Type> > slicedFvPatchField<Type>::clone() const
00114 {
00115     return tmp<fvPatchField<Type> >
00116     (
00117         new slicedFvPatchField<Type>(*this)
00118     );
00119 }
00120 
00121 
00122 template<class Type>
00123 slicedFvPatchField<Type>::slicedFvPatchField
00124 (
00125     const slicedFvPatchField<Type>& ptf
00126 )
00127 :
00128     fvPatchField<Type>
00129     (
00130         ptf.patch(),
00131         ptf.dimensionedInternalField(),
00132         Field<Type>()
00133     )
00134 {
00135     // Transfer the slice from the argument
00136     UList<Type>::operator=(ptf);
00137 }
00138 
00139 
00140 template<class Type>
00141 tmp<fvPatchField<Type> > slicedFvPatchField<Type>::clone
00142 (
00143     const DimensionedField<Type, volMesh>& iF
00144 ) const
00145 {
00146     return tmp<fvPatchField<Type> >
00147     (
00148         new slicedFvPatchField<Type>(*this, iF)
00149     );
00150 }
00151 
00152 
00153 template<class Type>
00154 slicedFvPatchField<Type>::~slicedFvPatchField<Type>()
00155 {
00156     // Set the fvPatchField storage pointer to NULL before its destruction
00157     // to protect the field it a slice of.
00158     UList<Type>::operator=(UList<Type>(NULL, 0));
00159 }
00160 
00161 
00162 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
00163 
00164 template<class Type>
00165 tmp<Field<Type> > slicedFvPatchField<Type>::snGrad() const
00166 {
00167     notImplemented
00168     (
00169         "slicedFvPatchField<Type>::"
00170         "snGrad()"
00171     );
00172 
00173     return Field<Type>::null();
00174 }
00175 
00176 
00177 template<class Type>
00178 void slicedFvPatchField<Type>::updateCoeffs()
00179 {
00180     notImplemented
00181     (
00182         "slicedFvPatchField<Type>::"
00183         "updateCoeffs()"
00184     );
00185 }
00186 
00187 
00188 template<class Type>
00189 tmp<Field<Type> > slicedFvPatchField<Type>::patchInternalField() const
00190 {
00191     notImplemented
00192     (
00193         "slicedFvPatchField<Type>::"
00194         "patchInternalField()"
00195     );
00196 
00197     return Field<Type>::null();
00198 }
00199 
00200 
00201 template<class Type>
00202 tmp<Field<Type> > slicedFvPatchField<Type>::patchNeighbourField
00203 (
00204     const Field<Type>& iField
00205 ) const
00206 {
00207     notImplemented
00208     (
00209         "slicedFvPatchField<Type>::"
00210         "patchNeighbourField(const DimensionedField<Type, volMesh>& iField)"
00211     );
00212 
00213     return Field<Type>::null();
00214 }
00215 
00216 
00217 template<class Type>
00218 tmp<Field<Type> > slicedFvPatchField<Type>::patchNeighbourField() const
00219 {
00220     notImplemented
00221     (
00222         "slicedFvPatchField<Type>::"
00223         "patchNeighbourField()"
00224     );
00225 
00226     return Field<Type>::null();
00227 }
00228 
00229 
00230 template<class Type>
00231 tmp<Field<Type> > slicedFvPatchField<Type>::valueInternalCoeffs
00232 (
00233     const tmp<scalarField>&
00234 ) const
00235 {
00236     notImplemented
00237     (
00238         "slicedFvPatchField<Type>::"
00239         "valueInternalCoeffs(const tmp<scalarField>&)"
00240     );
00241 
00242     return Field<Type>::null();
00243 }
00244 
00245 
00246 template<class Type>
00247 tmp<Field<Type> > slicedFvPatchField<Type>::valueBoundaryCoeffs
00248 (
00249     const tmp<scalarField>&
00250 ) const
00251 {
00252     notImplemented
00253     (
00254         "slicedFvPatchField<Type>::"
00255         "valueBoundaryCoeffs(const tmp<scalarField>&)"
00256     );
00257 
00258     return Field<Type>::null();
00259 }
00260 
00261 
00262 template<class Type>
00263 tmp<Field<Type> > slicedFvPatchField<Type>::gradientInternalCoeffs() const
00264 {
00265     notImplemented
00266     (
00267         "slicedFvPatchField<Type>::"
00268         "gradientInternalCoeffs()"
00269     );
00270 
00271     return Field<Type>::null();
00272 }
00273 
00274 
00275 template<class Type>
00276 tmp<Field<Type> > slicedFvPatchField<Type>::gradientBoundaryCoeffs() const
00277 {
00278     notImplemented
00279     (
00280         "slicedFvPatchField<Type>::"
00281         "gradientBoundaryCoeffs()"
00282     );
00283 
00284     return Field<Type>::null();
00285 }
00286 
00287 
00288 template<class Type>
00289 void slicedFvPatchField<Type>::write(Ostream& os) const
00290 {
00291     fvPatchField<Type>::write(os);
00292     this->writeEntry("value", os);
00293 }
00294 
00295 
00296 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00297 
00298 } // End namespace Foam
00299 
00300 // ************************ vim: set sw=4 sts=4 et: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines