Memosa-FVM  0.2
GradientModel.h File Reference
#include "Model.h"
#include "Gradient.h"
#include "GradientMatrix.h"
#include "GeomFields.h"
#include "NumType.h"
#include "SquareTensor.h"
#include "Mesh.h"
Include dependency graph for GradientModel.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  GradientModelBase
 
class  GradientModel< X >
 

Functions

template<class T >
void reflectGradient (Gradient< T > &gr, const Gradient< T > &g0, const Vector< T, 3 > &en)
 
template<class T , int N>
void reflectGradient (Gradient< Vector< T, N > > &gr, const Gradient< Vector< T, N > > &g0, const Vector< T, 3 > &en)
 
template<class T >
void reflectGradient (Gradient< Vector< T, 2 > > &gr, const Gradient< Vector< T, 2 > > &g0, const Vector< T, 3 > &en)
 
template<class T >
void reflectGradient (Gradient< Vector< T, 3 > > &gr, const Gradient< Vector< T, 3 > > &g0, const Vector< T, 3 > &en)
 

Function Documentation

template<class T >
void reflectGradient ( Gradient< T > &  gr,
const Gradient< T > &  g0,
const Vector< T, 3 > &  en 
)

Definition at line 23 of file GradientModel.h.

Referenced by GradientModel< Vector< T, 3 > >::compute(), and MomentumPressureGradientDiscretization< X >::discretize().

24 {
25  const T g0_dot_en_x2 = T(2.0)*(g0*en);
26  for(int i=0; i<3; i++)
27  gr[i] = g0[i] - g0_dot_en_x2*en[i];
28 }
template<class T , int N>
void reflectGradient ( Gradient< Vector< T, N > > &  gr,
const Gradient< Vector< T, N > > &  g0,
const Vector< T, 3 > &  en 
)

Definition at line 34 of file GradientModel.h.

36 {
37  for(int k=0; k<N; k++)
38  {
39  const T g0_dot_en_x2 = T(2.0)*(g0[0][k]*en[0] + g0[1][k]*en[1] + g0[2][k]*en[2]);
40  for(int i=0; i<3; i++)
41  gr[i][k] = g0[i][k] - g0_dot_en_x2*en[i];
42  }
43 }
template<class T >
void reflectGradient ( Gradient< Vector< T, 2 > > &  gr,
const Gradient< Vector< T, 2 > > &  g0,
const Vector< T, 3 > &  en 
)

Definition at line 51 of file GradientModel.h.

53 {
54  const Vector<T,2> g0_dot_en_x2 = T(2.0)*(g0*en);
55  for(int i=0; i<3; i++)
56  {
57  gr[i][0] = g0[i][0] - g0_dot_en_x2[0]*en[i];
58  gr[i][1] = g0[i][1] - g0_dot_en_x2[1]*en[i];
59  }
60 }
Definition: Vector.h:19
template<class T >
void reflectGradient ( Gradient< Vector< T, 3 > > &  gr,
const Gradient< Vector< T, 3 > > &  g0,
const Vector< T, 3 > &  en 
)

Definition at line 64 of file GradientModel.h.

66 {
67  SquareTensor<T,3> R, GT0;
68 
69  for(int i=0;i<3;i++)
70  for(int j=0; j<3; j++)
71  {
72  if (i==j)
73  R(i,j) = 1.0 - 2*en[i]*en[j];
74  else
75  R(i,j) = - 2*en[i]*en[j];
76 
77  GT0(i,j) = g0[j][i];
78  }
79 
80  SquareTensor<T,3> GTR(R*GT0*R);
81 
82  for(int i=0;i<3;i++)
83  for(int j=0; j<3; j++)
84  {
85  gr[j][i] = GTR(i,j);
86  }
87 }