interfaceCompression.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Class
25  Foam::interfaceCompressionLimiter
26 
27 Description
28  Interface compression scheme currently based on the generic limited
29  scheme although it does not use the NVD/TVD functions.
30 
31 SourceFiles
32  interfaceCompression.C
33 
34 \*---------------------------------------------------------------------------*/
35 
36 #ifndef interfaceCompression_H
37 #define interfaceCompression_H
38 
39 #include "vector.H"
40 
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 
43 namespace Foam
44 {
45 
46 /*---------------------------------------------------------------------------*\
47  Class interfaceCompressionWeight Declaration
48 \*---------------------------------------------------------------------------*/
49 
51 {
52 
53 public:
54 
56  {}
57 
58  scalar limiter
59  (
60  const scalar cdWeight,
61  const scalar faceFlux,
62  const scalar phiP,
63  const scalar phiN,
64  const vector&,
65  const scalar
66  ) const
67  {
68  // Quadratic compression scheme
69  //return min(max(4*min(phiP*(1 - phiP), phiN*(1 - phiN)), 0), 1);
70 
71  // Quartic compression scheme
72  return
73  min(max(
74  1 - max(sqr(1 - 4*phiP*(1 - phiP)), sqr(1 - 4*phiN*(1 - phiN))),
75  0), 1);
76  }
77 };
78 
79 
80 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
81 
82 } // End namespace Foam
83 
84 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
85 
86 #endif
87 
88 // ************************************************************************* //
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Definition: Istream.H:57
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
Interface compression scheme currently based on the generic limited scheme although it does not use t...
Namespace for OpenFOAM.
scalar limiter(const scalar cdWeight, const scalar faceFlux, const scalar phiP, const scalar phiN, const vector &, const scalar) const