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

#include <freeEnergyDynamics.h>

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

Public Types

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

Public Member Functions

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

Detailed Description

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

Definition at line 90 of file freeEnergyDynamics.h.

Member Typedef Documentation

◆ EquilibriumF

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

Definition at line 91 of file freeEnergyDynamics.h.

Member Function Documentation

◆ apply()

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

Definition at line 94 of file freeEnergyDynamics.h.

94 {
95 V fEq[DESCRIPTOR::q] { };
96 const auto statistic = EquilibriumF().compute(cell, parameters, fEq);
97 const V omega = parameters.template get<descriptors::OMEGA>();
98 const V gamma = parameters.template get<GAMMA>();
99 for (int iPop=0; iPop < DESCRIPTOR::q; ++iPop) {
100 cell[iPop] *= V{1} - omega;
101 cell[iPop] += omega * fEq[iPop];
102 }
103 const V tmp = gamma * descriptors::invCs2<V,DESCRIPTOR>()
104 * cell.template getField<descriptors::CHEM_POTENTIAL>();
105 for (int iPop=1; iPop < DESCRIPTOR::q; ++iPop) {
106 cell[iPop] -= omega * descriptors::t<V,DESCRIPTOR>(iPop) * (statistic.rho - tmp);
107 }
108 cell[0] += omega * (V{1} - descriptors::t<V,DESCRIPTOR>(0)) * (statistic.rho - tmp);
109 return statistic;
110 };
typename EQUILIBRIUM::template type< DESCRIPTOR, MOMENTA > EquilibriumF
typename meta::list< descriptors::OMEGA, GAMMA > parameters

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