Carmen Code
 All Classes Files Functions Variables Macros Pages
Functions
Limiter.cpp File Reference

Limiter functions for the conservative variables. More...

#include "Carmen.h"
Include dependency graph for Limiter.cpp:

Functions

real Limiter (const real r)
 Returns the valur of slope limiter from a real value x. More...
 
Vector Limiter (const Vector u, const Vector v)
 Returns the value of the slope limiter between the slopes u and v. More...
 

Detailed Description

Limiter functions for the conservative variables.

Function Documentation

real Limiter ( const real  x)

Returns the valur of slope limiter from a real value x.

Parameters
x...
Returns
double
23 {
24  real Result = 0.;
25 
26  switch (LimiterNo)
27  {
28  case 1: // Min-Mod
29  Result = Max(0., Min(1.,r));
30  break;
31 
32  case 2: // Van Albada
33  Result = (r<=0.)? 0.: (r*r+r)/(r*r+1.);
34  break;
35 
36  case 3: // Van Leer
37  Result = (r<=0.) ? 0.: (r+Abs(r))/(1.+Abs(r));
38  break;
39 
40  case 4: // Superbee
41  Result = (r<=0.) ? 0.: Max(0.,Max(Min(2.*r,1.),Min(r,2.)));
42  break;
43  case 5: // Monotonized Central
44  Result = max(0.0,min(min(2*r,0.5*(1+r)),2.0));
45  break;
46 
47  };
48 
49  return Result;
50 }
#define Min(x, y)
Definition: Carmen.h:62
#define Abs(x)
Definition: Carmen.h:78
int LimiterNo
Definition: Parameters.cpp:68
#define Max(x, y)
Definition: Carmen.h:54
#define real
Definition: PreProcessor.h:31
Vector Limiter ( const Vector  u,
const Vector  v 
)

Returns the value of the slope limiter between the slopes u and v.

Parameters
uVector
vVector
Returns
Vector
57 {
58  // Min Mod limiter
59 
60  int LimiterNo = 3;
61 
62  Vector Result(u.dimension());
63  int i;
64  real x, y; // slopes
65 
66  for (i=1; i<=u.dimension(); i++)
67  {
68  x = u.value(i);
69  y = v.value(i);
70 
71  switch(LimiterNo)
72  {
73  // MIN-MOD
74  case 1:
75  if (x == y)
76  Result.setValue(i, 0.);
77  else
78  Result.setValue(i,Min(1., fabs(x)/fabs(x-y)));
79  break;
80 
81  // VAN LEER
82  case 3:
83  default:
84  if ((fabs(x) + fabs(y)) == 0.)
85  Result.setValue(i, 0.);
86  else
87  Result.setValue(i,fabs(x)/(fabs(x)+fabs(y)));
88  break;
89  };
90  }
91 
92  return Result;
93 }
Standard class for every vector in Carmen.
Definition: Vector.h:29
#define Min(x, y)
Definition: Carmen.h:62
int dimension() const
Returns the dimension of the vector.
Definition: Vector.h:535
real value(const int n) const
Returns the value of the component n.
Definition: Vector.h:565
int LimiterNo
Definition: Parameters.cpp:68
#define real
Definition: PreProcessor.h:31

Here is the caller graph for this function: