25#ifndef DYNAMICS_INTERACTION_POTENTIAL_CSE_H
26#define DYNAMICS_INTERACTION_POTENTIAL_CSE_H
33namespace interaction {
36struct MCPRpseudoPotential<3> {
38template <
typename _RHOFIELD,
typename __T,
typename _K,
typename _A_C,
typename _B,
typename _T_C,
typename _M,
typename _ALPHA,
typename _G_I,
typename _G_II,
typename _BIGM,
typename V=
typename _RHOFIELD::value_t>
39auto compute(
const _RHOFIELD& rhoField,
const __T& _T,
const _K& k,
const _A_C& a_c,
const _B& b,
const _T_C& T_c,
const _M& m,
const _ALPHA& alpha,
const _G_I& g_I,
const _G_II& g_II,
const _BIGM& bigM)
any_platform
41auto x0 = rhoField[0]/bigM[0];
43auto x2 = rhoField[1]/bigM[1];
45auto x4 = rhoField[2]/bigM[2];
47auto x6 = x1 + x3 + x5;
48auto x7 = _T*g_II[0] + g_I[0];
51auto x10 = _T*g_II[3] + g_I[3];
53auto x12 = _T*g_II[6] + g_I[6];
55auto x14 = _T*g_II[1] + g_I[1];
57auto x16 = _T*g_II[4] + g_I[4];
59auto x18 = _T*g_II[7] + g_I[7];
61auto x20 = _T*g_II[2] + g_I[2];
63auto x22 = _T*g_II[5] + g_I[5];
65auto x24 = _T*g_II[8] + g_I[8];
67return V{2.44948974278318}*
util::sqrt(k*(V{1}*_T*(x0 + x2 + x4)/(x6 + V{-1}) + x6*(x0*((-(
util::sqrt(_T/T_c[0]) + V{-1})*m[0] + V{1})*(-(
util::sqrt(_T/T_c[0]) + V{-1})*m[0] + V{1}))*a_c[0]/b[0] - V{1.60455694171447}*x0*(x10*x11 + x12*x13 + x7*x9)/(x11 + x13 + x9) + x2*((-(
util::sqrt(_T/T_c[1]) + V{-1})*m[1] + V{1})*(-(
util::sqrt(_T/T_c[1]) + V{-1})*m[1] + V{1}))*a_c[1]/b[1] - V{1.60455694171447}*x2*(x14*x15 + x16*x17 + x18*x19)/(x15 + x17 + x19) + x4*((-(
util::sqrt(_T/T_c[2]) + V{-1})*m[2] + V{1})*(-(
util::sqrt(_T/T_c[2]) + V{-1})*m[2] + V{1}))*a_c[2]/b[2] - V{1.60455694171447}*x4*(x20*x21 + x22*x23 + x24*x25)/(x21 + x23 + x25))*V{1} / (V{2}*x1 + V{2}*x3 + V{2}*x5 + V{1} - (x6*x6))) + V{0.333333333333333}*rhoField[0] + V{0.333333333333333}*rhoField[1] + V{0.333333333333333}*rhoField[2]);
70template <
typename _RHOFIELD,
typename __T,
typename _A_C,
typename _B,
typename _T_C,
typename _M,
typename _ALPHA,
typename _G_I,
typename _G_II,
typename _BIGM,
typename V=
typename _RHOFIELD::value_t>
71auto computeP(
const _RHOFIELD& rhoField,
const __T& _T,
const _A_C& a_c,
const _B& b,
const _T_C& T_c,
const _M& m,
const _ALPHA& alpha,
const _G_I& g_I,
const _G_II& g_II,
const _BIGM& bigM)
any_platform
73auto x0 = rhoField[0]/bigM[0];
75auto x2 = rhoField[1]/bigM[1];
77auto x4 = rhoField[2]/bigM[2];
79auto x6 = x1 + x3 + x5;
80auto x7 = _T*g_II[0] + g_I[0];
83auto x10 = _T*g_II[3] + g_I[3];
85auto x12 = _T*g_II[6] + g_I[6];
87auto x14 = _T*g_II[1] + g_I[1];
89auto x16 = _T*g_II[4] + g_I[4];
91auto x18 = _T*g_II[7] + g_I[7];
93auto x20 = _T*g_II[2] + g_I[2];
95auto x22 = _T*g_II[5] + g_I[5];
97auto x24 = _T*g_II[8] + g_I[8];
99return -(V{1}*_T*(x0 + x2 + x4)/(x6 + V{-1}) + x6*(x0*((-(
util::sqrt(_T/T_c[0]) + V{-1})*m[0] + V{1})*(-(
util::sqrt(_T/T_c[0]) + V{-1})*m[0] + V{1}))*a_c[0]/b[0] - V{1.60455694171447}*x0*(x10*x11 + x12*x13 + x7*x9)/(x11 + x13 + x9) + x2*((-(
util::sqrt(_T/T_c[1]) + V{-1})*m[1] + V{1})*(-(
util::sqrt(_T/T_c[1]) + V{-1})*m[1] + V{1}))*a_c[1]/b[1] - V{1.60455694171447}*x2*(x14*x15 + x16*x17 + x18*x19)/(x15 + x17 + x19) + x4*((-(
util::sqrt(_T/T_c[2]) + V{-1})*m[2] + V{1})*(-(
util::sqrt(_T/T_c[2]) + V{-1})*m[2] + V{1}))*a_c[2]/b[2] - V{1.60455694171447}*x4*(x20*x21 + x22*x23 + x24*x25)/(x21 + x23 + x25))*V{1} / (V{2}*x1 + V{2}*x3 + V{2}*x5 + V{1} - (x6*x6)));
cpu::simd::Pack< T > sqrt(cpu::simd::Pack< T > value)
ADf< T, DIM > exp(const ADf< T, DIM > &a)
Top level namespace for all of OpenLB.
V compute(const RHO_FIELD &rhoField, const __T &_T, const K &k, const A_C &a_c, const B &b, const T_C &T_c, const M &m, const ALPHA &alpha, const G_I &g_I, const G_II &g_II, const BIG_M &_M) any_platform
V computeP(const RHO_FIELD &rhoField, V _T, const A_C &a_c, const B &b, const T_C &T_c, const M &m, const ALPHA &alpha, const G_I &g_I, const G_II &g_II, const BIG_M &_M) any_platform