OpenLB 1.7
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | List of all members
olb::PlaneFdBoundaryProcessor3D< T, DESCRIPTOR, direction, orientation > Class Template Reference

This class computes the skordos BC on a plane wall in 3D but with a limited number of terms added to the equilibrium distributions (i.e. More...

#include <boundaryPostProcessors3D.h>

+ Collaboration diagram for olb::PlaneFdBoundaryProcessor3D< T, DESCRIPTOR, direction, orientation >:

Public Member Functions

int getPriority () const
 
template<CONCEPT(Cell) CELL>
void apply (CELL &cell) any_platform
 

Static Public Attributes

static constexpr OperatorScope scope = OperatorScope::PerCell
 

Detailed Description

template<typename T, typename DESCRIPTOR, int direction, int orientation>
class olb::PlaneFdBoundaryProcessor3D< T, DESCRIPTOR, direction, orientation >

This class computes the skordos BC on a plane wall in 3D but with a limited number of terms added to the equilibrium distributions (i.e.

only the Q_i : Pi term)

Definition at line 42 of file boundaryPostProcessors3D.h.

Member Function Documentation

◆ apply()

template<typename T , typename DESCRIPTOR , int direction, int orientation>
template<CONCEPT(Cell) CELL>
void olb::PlaneFdBoundaryProcessor3D< T, DESCRIPTOR, direction, orientation >::apply ( CELL & cell)

Definition at line 41 of file boundaryPostProcessors3D.hh.

42{
43 using namespace olb::util::tensorIndices3D;
44
45 T dx_u[DESCRIPTOR::d], dy_u[DESCRIPTOR::d], dz_u[DESCRIPTOR::d];
46 T rho, u[DESCRIPTOR::d];
47
48 auto& dynamics = cell.getDynamics();
49
50 cell.computeRhoU(rho,u);
51
52 interpolateGradients<0>(cell, dx_u);
53 interpolateGradients<1>(cell, dy_u);
54 interpolateGradients<2>(cell, dz_u);
55
56 T dx_ux = dx_u[0];
57 T dy_ux = dy_u[0];
58 T dz_ux = dz_u[0];
59 T dx_uy = dx_u[1];
60 T dy_uy = dy_u[1];
61 T dz_uy = dz_u[1];
62 T dx_uz = dx_u[2];
63 T dy_uz = dy_u[2];
64 T dz_uz = dz_u[2];
65 T omega = dynamics.getOmegaOrFallback(std::numeric_limits<T>::signaling_NaN());
66 T sToPi = - rho / descriptors::invCs2<T,DESCRIPTOR>() / omega;
68 pi[xx] = (T)2 * dx_ux * sToPi;
69 pi[yy] = (T)2 * dy_uy * sToPi;
70 pi[zz] = (T)2 * dz_uz * sToPi;
71 pi[xy] = (dx_uy + dy_ux) * sToPi;
72 pi[xz] = (dx_uz + dz_ux) * sToPi;
73 pi[yz] = (dy_uz + dz_uy) * sToPi;
74
75 // Computation of the particle distribution functions
76 // according to the regularized formula
77 for (int iPop = 0; iPop < DESCRIPTOR::q; ++iPop) {
78 cell[iPop] = dynamics.computeEquilibrium(iPop,rho,u)
79 + equilibrium<DESCRIPTOR>::template fromPiToFneq<T>(iPop, pi);
80 }
81}
Compute number of elements of a symmetric d-dimensional tensor.
Definition util.h:210

◆ getPriority()

template<typename T , typename DESCRIPTOR , int direction, int orientation>
int olb::PlaneFdBoundaryProcessor3D< T, DESCRIPTOR, direction, orientation >::getPriority ( ) const
inline

Definition at line 46 of file boundaryPostProcessors3D.h.

46 {
47 return 0;
48 }

Member Data Documentation

◆ scope

template<typename T , typename DESCRIPTOR , int direction, int orientation>
constexpr OperatorScope olb::PlaneFdBoundaryProcessor3D< T, DESCRIPTOR, direction, orientation >::scope = OperatorScope::PerCell
staticconstexpr

Definition at line 44 of file boundaryPostProcessors3D.h.


The documentation for this class was generated from the following files: