OpenLB 1.7
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
olb::collision::PSM< COLLISION >::type< DESCRIPTOR, MOMENTA, EQUILIBRIUM > Struct Template Reference

#include <porousBGKdynamics.h>

+ Collaboration diagram for olb::collision::PSM< COLLISION >::type< DESCRIPTOR, MOMENTA, EQUILIBRIUM >:

Public Types

using MomentaF = typename MOMENTA::template type<DESCRIPTOR>
 
using EquilibriumF = typename EQUILIBRIUM::template type<DESCRIPTOR,MOMENTA>
 
using CollisionO = typename COLLISION::template type<DESCRIPTOR,MOMENTA,EQUILIBRIUM>
 

Public Member Functions

template<typename CELL , typename PARAMETERS , typename V = typename CELL::value_t>
CellStatistic< V > apply (CELL &cell, PARAMETERS &parameters)
 

Detailed Description

template<typename COLLISION>
template<typename DESCRIPTOR, typename MOMENTA, typename EQUILIBRIUM>
struct olb::collision::PSM< COLLISION >::type< DESCRIPTOR, MOMENTA, EQUILIBRIUM >

Definition at line 180 of file porousBGKdynamics.h.

Member Typedef Documentation

◆ CollisionO

template<typename COLLISION >
template<typename DESCRIPTOR , typename MOMENTA , typename EQUILIBRIUM >
using olb::collision::PSM< COLLISION >::type< DESCRIPTOR, MOMENTA, EQUILIBRIUM >::CollisionO = typename COLLISION::template type<DESCRIPTOR,MOMENTA,EQUILIBRIUM>

Definition at line 183 of file porousBGKdynamics.h.

◆ EquilibriumF

template<typename COLLISION >
template<typename DESCRIPTOR , typename MOMENTA , typename EQUILIBRIUM >
using olb::collision::PSM< COLLISION >::type< DESCRIPTOR, MOMENTA, EQUILIBRIUM >::EquilibriumF = typename EQUILIBRIUM::template type<DESCRIPTOR,MOMENTA>

Definition at line 182 of file porousBGKdynamics.h.

◆ MomentaF

template<typename COLLISION >
template<typename DESCRIPTOR , typename MOMENTA , typename EQUILIBRIUM >
using olb::collision::PSM< COLLISION >::type< DESCRIPTOR, MOMENTA, EQUILIBRIUM >::MomentaF = typename MOMENTA::template type<DESCRIPTOR>

Definition at line 181 of file porousBGKdynamics.h.

Member Function Documentation

◆ apply()

template<typename COLLISION >
template<typename DESCRIPTOR , typename MOMENTA , typename EQUILIBRIUM >
template<typename CELL , typename PARAMETERS , typename V = typename CELL::value_t>
CellStatistic< V > olb::collision::PSM< COLLISION >::type< DESCRIPTOR, MOMENTA, EQUILIBRIUM >::apply ( CELL & cell,
PARAMETERS & parameters )
inline

Definition at line 186 of file porousBGKdynamics.h.

186 {
187 V rho, u[DESCRIPTOR::d];
188 const V epsilon = 1. - cell.template getField<descriptors::POROSITY>();
189 const V omega = parameters.template get<descriptors::OMEGA>();
190 const V paramA = V{1.} / omega - V{0.5};
191 MomentaF().computeRhoU(cell, rho, u);
192 // velocity at the boundary
193 auto u_s = cell.template getField<descriptors::VELOCITY_SOLID>();
194 if (epsilon < 1e-5) {
195 return CollisionO().apply(cell, parameters);
196 }
197 else {
198 // speed up paramB
199 V paramB = (epsilon * paramA) / ((1. - epsilon) + paramA);
200 // speed up paramC
201 V paramC = (1. - paramB);
202 V omega_s[DESCRIPTOR::q];
203 V cell_tmp[DESCRIPTOR::q];
204 for (int iPop=0; iPop < DESCRIPTOR::q; ++iPop) {
205 cell_tmp[iPop] = cell[iPop];
207 //if constexpr (MODE == 2) {
208 omega_s[iPop] = (EquilibriumF().compute(iPop, rho, u_s) - cell[iPop])
209 + (V{1} - omega) * (cell[iPop] - EquilibriumF().compute(iPop, rho, u));
210 //} else if constexpr (MODE == 3) {
211 // omega_s[iPop] = (cell[descriptors::opposite<DESCRIPTOR>(iPop)] - EquilibriumF().compute(descriptors::opposite<DESCRIPTOR>(iPop), rho, u_s))
212 // - (cell[iPop] - EquilibriumF().compute(iPop, rho, u_s));
213 //}
214 }
215 CollisionO().apply(cell, parameters);
216 for (int iPop=0; iPop < DESCRIPTOR::q; ++iPop) {
217 cell[iPop] = cell_tmp[iPop] + paramC * (cell[iPop] - cell_tmp[iPop]);
218 cell[iPop] += paramB * omega_s[iPop];
219 }
220 for (int iVel=0; iVel<DESCRIPTOR::d; ++iVel) {
221 u[iVel] = paramC * u[iVel] + paramB * u_s[iVel];
222 }
223 }
224
225 return {rho, util::normSqr<V,DESCRIPTOR::d>(u)};
226 }
typename MOMENTA::template type< DESCRIPTOR > MomentaF
typename EQUILIBRIUM::template type< DESCRIPTOR, MOMENTA > EquilibriumF
typename COLLISION::template type< DESCRIPTOR, MOMENTA, EQUILIBRIUM > CollisionO
typename meta::list< descriptors::OMEGA > parameters

The documentation for this struct was generated from the following file: