OpenLB 1.7
Loading...
Searching...
No Matches
Static Public Member Functions | List of all members
olb::opti::dualLbDynamicsHelpers< T, DESCRIPTOR > Struct Template Reference

All helper functions are inside this structure. More...

#include <dualLbHelpers.h>

+ Collaboration diagram for olb::opti::dualLbDynamicsHelpers< T, DESCRIPTOR >:

Static Public Member Functions

static T equilibrium (int iPop, int jPop, T rho, const T u[DESCRIPTOR::d])
 Computation of adjoint equilibrium distribution operator dEq_i/dF_j -> Mathias J. Krause.
 
static T equilibrium2 (int iPop, int jPop, T rho, const T u[DESCRIPTOR::d])
 Computation of adjoint equilibrium distribution operator dEq_i/dF_j (discrete approach) -> Geng Liu.
 
static void computeRhoU (T const *cell, T &rho, T u[DESCRIPTOR::d])
 Computation of hydrodynamic variables.
 
static void computeRhoJ (T const *cell, T &rho, T j[DESCRIPTOR::d])
 Computation of hydrodynamic variables.
 

Detailed Description

template<typename T, typename DESCRIPTOR>
struct olb::opti::dualLbDynamicsHelpers< T, DESCRIPTOR >

All helper functions are inside this structure.

Definition at line 148 of file dualLbHelpers.h.

Member Function Documentation

◆ computeRhoJ()

template<typename T , typename DESCRIPTOR >
static void olb::opti::dualLbDynamicsHelpers< T, DESCRIPTOR >::computeRhoJ ( T const * cell,
T & rho,
T j[DESCRIPTOR::d] )
inlinestatic

Computation of hydrodynamic variables.

Definition at line 276 of file dualLbHelpers.h.

277 {
278
279 lbm<DESCRIPTOR>::computeRhoJ(&cell[0], rho, j);
280 rho-=T(1);
281 }
static void computeRhoJ(CELL &cell, RHO &rho, J &j) any_platform
Computation of hydrodynamic variables.
Definition lbm.h:211

References olb::lbm< DESCRIPTOR >::computeRhoJ().

+ Here is the call graph for this function:

◆ computeRhoU()

template<typename T , typename DESCRIPTOR >
static void olb::opti::dualLbDynamicsHelpers< T, DESCRIPTOR >::computeRhoU ( T const * cell,
T & rho,
T u[DESCRIPTOR::d] )
inlinestatic

Computation of hydrodynamic variables.

Definition at line 257 of file dualLbHelpers.h.

258 {
259
260 rho = T();
261 for (int iD=0; iD < DESCRIPTOR::d; ++iD) {
262 u[iD] = T();
263 }
264 for (int iPop=0; iPop < DESCRIPTOR::q; ++iPop) {
265 rho += cell[iPop];
266 for (int iD=0; iD < DESCRIPTOR::d; ++iD) {
267 u[iD] += cell[iPop]*descriptors::c<DESCRIPTOR>(iPop,iD);
268 }
269 }
270 for (int iD=0; iD < DESCRIPTOR::d; ++iD) {
271 u[iD] /= rho;
272 }
273 }
+ Here is the caller graph for this function:

◆ equilibrium()

template<typename T , typename DESCRIPTOR >
static T olb::opti::dualLbDynamicsHelpers< T, DESCRIPTOR >::equilibrium ( int iPop,
int jPop,
T rho,
const T u[DESCRIPTOR::d] )
inlinestatic

Computation of adjoint equilibrium distribution operator dEq_i/dF_j -> Mathias J. Krause.

Definition at line 150 of file dualLbHelpers.h.

151 {
152 T eq = olb::equilibrium<DESCRIPTOR>::template secondOrder(iPop, rho, u) + descriptors::t<T,DESCRIPTOR>(iPop);
153 T sum = T();
154 for (int iD=0; iD < DESCRIPTOR::d; ++iD) {
155 sum += (u[iD] - descriptors::c<DESCRIPTOR>(jPop,iD))*(u[iD] - descriptors::c<DESCRIPTOR>(iPop,iD));
156 } //std::cout<<u[0]<<std::endl;
157 return (descriptors::invCs2<T,DESCRIPTOR>()*sum + T(1))/rho*eq;
158 }

◆ equilibrium2()

template<typename T , typename DESCRIPTOR >
static T olb::opti::dualLbDynamicsHelpers< T, DESCRIPTOR >::equilibrium2 ( int iPop,
int jPop,
T rho,
const T u[DESCRIPTOR::d] )
inlinestatic

Computation of adjoint equilibrium distribution operator dEq_i/dF_j (discrete approach) -> Geng Liu.

Definition at line 161 of file dualLbHelpers.h.

162 {
163 T u_c = T();
164 for (int iD=0; iD < DESCRIPTOR::d; ++iD) {
165 u_c += u[iD]*descriptors::c<DESCRIPTOR>(iPop,iD);
166 }
167 T sum = T();
168 for (int iD=0; iD < DESCRIPTOR::d; ++iD) {
169 sum += (u[iD]*u[iD] + 2.*descriptors::c<DESCRIPTOR>(jPop,iD)*(descriptors::c<DESCRIPTOR>(iPop,iD)-u[iD]) )
170 * descriptors::invCs2<T,DESCRIPTOR>()*0.5
171 + (u_c*descriptors::c<DESCRIPTOR>(iPop,iD)*(2.*descriptors::c<DESCRIPTOR>(jPop,iD)-u[iD]))
172 * descriptors::invCs2<T,DESCRIPTOR>()*descriptors::invCs2<T,DESCRIPTOR>()*0.5;
173 }
174 return descriptors::t<T,DESCRIPTOR>(iPop)*(1.+sum);
175 }

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