OpenFOAM logo
Open Source CFD Toolkit

SFCD.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-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     SFCDLimiter
00027 
00028 Description
00029     Class with limiter function which returns the limiter for the
00030     SFCD differencing scheme based on phict obtained from the LimiterFunc
00031     class.
00032 
00033     Used in conjunction with the template class LimitedScheme.
00034 
00035 SourceFiles
00036     SFCD.C
00037 
00038 \*---------------------------------------------------------------------------*/
00039 
00040 #ifndef SFCD_H
00041 #define SFCD_H
00042 
00043 #include "vector.H"
00044 
00045 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00046 
00047 namespace Foam
00048 {
00049 
00050 /*---------------------------------------------------------------------------*\
00051                            Class SFCDLimiter Declaration
00052 \*---------------------------------------------------------------------------*/
00053 
00054 template<class LimiterFunc>
00055 class SFCDLimiter
00056 :
00057     public LimiterFunc
00058 {
00059 
00060 public:
00061 
00062     SFCDLimiter(Istream&)
00063     {}
00064 
00065     scalar limiter
00066     (
00067         const scalar cdWeight,
00068         const scalar faceFlux,
00069         const typename LimiterFunc::phiType& phiP,
00070         const typename LimiterFunc::phiType& phiN,
00071         const typename LimiterFunc::gradPhiType& gradcP,
00072         const typename LimiterFunc::gradPhiType& gradcN,
00073         const vector& d
00074     ) const
00075     {
00076         scalar phict = LimiterFunc::phict
00077         (
00078             cdWeight, faceFlux, phiP, phiN, gradcP, gradcN, d
00079         );
00080 
00081         scalar limitPhict = min(max(phict, 0), 0.5);
00082         return limitPhict/(1 - limitPhict);
00083     }
00084 };
00085 
00086 
00087 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00088 
00089 } // End namespace Foam
00090 
00091 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00092 
00093 #endif
00094 
00095 // ************************************************************************* //
For further information go to www.openfoam.org