mus_mrt_d3q27_module Module

This module provides the definition and methods for MRT advection relaxation scheme for D3Q27 stencil. This implementation is based on the paper K. Suga et al, "A D3Q27 multiple-relaxation-time lattice Boltzmann method for turbulent flows", Computers and Mathematics with Applications 69 (2015) 518-529 \n

The LB equaton using MRT is f(t+dt,x+dx) = f - M^(-1) * S * ( (Mf) - m^(eq) ) The moments m(1:27) = M * f(1:27) are labeled as ! Density m( 1) = rho ! momentum m( 2) = jx = rho * ux m( 3) = jy = rho * uy m( 4) = jz = rho * uz ! kinetic energy m( 5) = e = rho * (ux^2 + uy^2 + uz^2) m( 6) = XX = rho * (2ux2 - uy^2 - uz^2) m( 7) = WW = rho * (uy^2 - uz^2) m( 8) = XY = rho * ux * uy m( 9) = YZ = rho * ux * uy m(10) = ZX = rho * uz * ux ! fluxes of the energy and square of energy m(11) = phix = 3 * rho * (ux^2 + uy^2 + uz^2) * ux m(12) = phiy = 3 * rho * (ux^2 + uy^2 + uz^2) * uy m(13) = phiz = 3 * rho * (ux^2 + uy^2 + uz^2) * uz m(14) = psix = (9/2) * rho * (ux^2 + uy^2 + uz^2)^2 * ux m(15) = psix = (9/2) * rho * (ux^2 + uy^2 + uz^2)^2 * uy m(16) = psix = (9/2) * rho * (ux^2 + uy^2 + uz^2)^2 * uz ! Square and cube of the energy m(17) = e2 = (3/2) * rho * (ux^2 + uy^2 + uz^2)^2 m(18) = e3 = (9/2) * rho * (ux^2 + uy^2 + uz^2)^3 ! Product of the second order tensor and the energy m(19) = XXe = rho * (2ux2 - uy^2 - uz^2) * (ux2 + uy^2 + uz^2) m(20) = WWe = rho * (uy^2 - uz^2) * (ux2 + uy^2 + uz^2) m(21) = XY = rho * ux * uy * (ux2 + uy^2 + uz^2) m(22) = YZ = rho * uy * uz * (ux2 + uy^2 + uz^2) m(23) = ZX = rho * uz * ux * (ux2 + uy^2 + uz^2) ! third order psuedo-vector and totally antisymmetric tensor XYZ m(24) = taux = rho * ux * (uy^2 - uz^2) m(25) = tauy = rho * uy * (uz^2 - ux^2) m(26) = tauz = rho * uz * (ux^2 - uy^2) m(27) = XYX = rho * ux * uy * uz

The non-zero equilibrium moments are given by meq( 1) = rho meq( 2) = rhoux meq( 3) = rhouy meq( 4) = rhouz meq( 5) = rhoux^2 + rhouy^2 + rhouz^2 - rho meq( 6) = 2rhoux^2 - rhouy^2 - rhouz^2 meq( 7) = rhouy^2 - rhouz^2 meq( 8) = rhouxuy meq( 9) = rhouyuz meq(10) = rhouxuz meq(11) = -2rhoux meq(12) = -2rhouy meq(13) = -2rhouz meq(14) = rhoux meq(15) = rhouy meq(16) = rhouz meq(17) = -2rhoux^2 - 2rhouy^2 - 2rhouz^2 + rho meq(18) = 3rhoux^2 + 3rhouy^2 + 3rhouz^2 - rho meq(19) = -2rhoux^2 + rhouy^2 + rhouz^2 meq(20) = -rhouy^2 + rhouz^2 meq(21) = -rhouxuy meq(22) = -rhouyuz meq(23) = -rhoux*uz meq(24) = 0 meq(25) = 0 meq(26) = 0 meq(27) = 0

Density (rho) and velocity (ux, uy, uz) are conserved during collision. i.e. m(1) = meq(1) --> mneq(1) = 0 m(2) = meq(2) --> mneq(2) = 0 m(3) = meq(3) --> mneq(3) = 0 m(4) = meq(4) --> mneq(4) = 0

Collision parameters are chosen as s(1:4) = max(omega, 1.0) s(5) = bulk_omega s(6:10) = omega s(11:13) = 1.5 s(14:16) = 1.83 s(17:18) = 1.61 s(19:23) = 1.98 s(23:27) = 1.74

SubGrid Stress model (SGS) The implementation here is taken from:\n M. Stiebler, M. Krafczyk, S. Freudiger, M. Geier "Lattice Boltzmann large eddy simulation of subcritical flows around a sphere on non-uniform grids", Computers and Mathematics with Applications, vol. 61 (2011), pp. 3475-3484 Equation 12:\n tau_{total} = 3 * nu0 + dt * 0.5 + 0.5 * ( sqrt( tau0*tau0 + 18 * Cs * Cs * dt * dt * Q ) - tau0 ) = 0.5 * ( tau0 + sqrt( tau0 * tau0 + 18 * Cs * Cs * dt * dt * Q) ) Q = sqrt( 2.0 * sum( Pi^{neq} * Pi^{neq} ) )

For single field LBM: QQ=nScalars


Uses

Used by

  • module~~mus_mrt_d3q27_module~~UsedByGraph module~mus_mrt_d3q27_module mus_mrt_d3q27_module module~mus_initfluid_module mus_initFluid_module module~mus_initfluid_module->module~mus_mrt_d3q27_module module~mus_initfluidincomp_module mus_initFluidIncomp_module module~mus_initfluidincomp_module->module~mus_mrt_d3q27_module module~mus_flow_module mus_flow_module module~mus_flow_module->module~mus_initfluid_module module~mus_flow_module->module~mus_initfluidincomp_module program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_flow_module module~mus_program_module mus_program_module module~mus_program_module->module~mus_flow_module module~mus_dynloadbal_module mus_dynLoadBal_module module~mus_program_module->module~mus_dynloadbal_module module~mus_dynloadbal_module->module~mus_flow_module program~musubi musubi program~musubi->module~mus_program_module

Contents


Variables

TypeVisibilityAttributesNameInitial
real(kind=rk), public, parameter, dimension(27,27):: MMtrD3Q27 =reshape((/1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 0.0, -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 0.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -2.0, 2.0, -1.0, -1.0, 2.0, -1.0, -1.0, -2.0, -2.0, -2.0, -2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 0.0, 0.0, 0.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, -1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, -1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 0.0, 4.0, 0.0, 0.0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -2.0, -2.0, -2.0, -2.0, 2.0, 2.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, -4.0, 0.0, 1.0, 1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, -2.0, -2.0, 2.0, 2.0, -2.0, -2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 4.0, 0.0, 0.0, -4.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0, -2.0, 2.0, -2.0, 2.0, -2.0, 2.0, -2.0, 2.0, 0.0, -4.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, -2.0, 2.0, -2.0, 2.0, 2.0, -2.0, -2.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, -4.0, 0.0, 0.0, 4.0, 0.0, 2.0, 2.0, -2.0, -2.0, 0.0, 0.0, 0.0, 0.0, 2.0, -2.0, 2.0, -2.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, -4.0, 0.0, 0.0, 4.0, 2.0, -2.0, 2.0, -2.0, 2.0, 2.0, -2.0, -2.0, 0.0, 0.0, 0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -8.0, -4.0, 2.0, 2.0, -4.0, 2.0, 2.0, -2.0, -2.0, -2.0, -2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, 2.0, 0.0, -2.0, 2.0, 0.0, 0.0, 0.0, 0.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, 2.0, 2.0, -2.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, 2.0, 2.0, -2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, 2.0, 2.0, -2.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 0.0/), (/27, 27/), order=(/2, 1/))
real(kind=rk), public, parameter, dimension(27,27):: MMIvD3Q27 =reshape((/1/27.0, -1/18.0, 0.0, 0.0, -1/18.0, 1/18.0, 0.0, 0.0, 0.0, 0.0, 1/18.0, 0.0, 0.0, -1/18.0, 0.0, 0.0, 0.0, 1/54.0, -1/18.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1/27.0, 0.0, -1/18.0, 0.0, -1/18.0, -1/36.0, 1/12.0, 0.0, 0.0, 0.0, 0.0, 1/18.0, 0.0, 0.0, -1/18.0, 0.0, 0.0, 1/54.0, 1/36.0, -1/12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1/27.0, 0.0, 0.0, -1/18.0, -1/18.0, -1/36.0, -1/12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1/18.0, 0.0, 0.0, -1/18.0, 0.0, 1/54.0, 1/36.0, 1/12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1/27.0, 1/18.0, 0.0, 0.0, -1/18.0, 1/18.0, 0.0, 0.0, 0.0, 0.0, -1/18.0, 0.0, 0.0, 1/18.0, 0.0, 0.0, 0.0, 1/54.0, -1/18.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1/27.0, 0.0, 1/18.0, 0.0, -1/18.0, -1/36.0, 1/12.0, 0.0, 0.0, 0.0, 0.0, -1/18.0, 0.0, 0.0, 1/18.0, 0.0, 0.0, 1/54.0, 1/36.0, -1/12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1/27.0, 0.0, 0.0, 1/18.0, -1/18.0, -1/36.0, -1/12.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1/18.0, 0.0, 0.0, 1/18.0, 0.0, 1/54.0, 1/36.0, 1/12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1/27.0, 0.0, -1/18.0, -1/18.0, 0.0, -1/18.0, 0.0, 0.0, 1/12.0, 0.0, 0.0, 1/72.0, 1/72.0, 0.0, 1/36.0, 1/36.0, -1/36.0, -1/108.0, -1/36.0, 0.0, 0.0, -1/12.0, 0.0, 0.0, -1/8.0, 1/8.0, 0.0, 1/27.0, 0.0, -1/18.0, 1/18.0, 0.0, -1/18.0, 0.0, 0.0, -1/12.0, 0.0, 0.0, 1/72.0, -1/72.0, 0.0, 1/36.0, -1/36.0, -1/36.0, -1/108.0, -1/36.0, 0.0, 0.0, 1/12.0, 0.0, 0.0, -1/8.0, -1/8.0, 0.0, 1/27.0, 0.0, 1/18.0, -1/18.0, 0.0, -1/18.0, 0.0, 0.0, -1/12.0, 0.0, 0.0, -1/72.0, 1/72.0, 0.0, -1/36.0, 1/36.0, -1/36.0, -1/108.0, -1/36.0, 0.0, 0.0, 1/12.0, 0.0, 0.0, 1/8.0, 1/8.0, 0.0, 1/27.0, 0.0, 1/18.0, 1/18.0, 0.0, -1/18.0, 0.0, 0.0, 1/12.0, 0.0, 0.0, -1/72.0, -1/72.0, 0.0, -1/36.0, -1/36.0, -1/36.0, -1/108.0, -1/36.0, 0.0, 0.0, -1/12.0, 0.0, 0.0, 1/8.0, -1/8.0, 0.0, 1/27.0, -1/18.0, 0.0, -1/18.0, 0.0, 1/36.0, -1/12.0, 0.0, 0.0, 1/12.0, 1/72.0, 0.0, 1/72.0, 1/36.0, 0.0, 1/36.0, -1/36.0, -1/108.0, 1/72.0, -1/24.0, 0.0, 0.0, -1/12.0, 1/8.0, 0.0, -1/8.0, 0.0, 1/27.0, 1/18.0, 0.0, -1/18.0, 0.0, 1/36.0, -1/12.0, 0.0, 0.0, -1/12.0, -1/72.0, 0.0, 1/72.0, -1/36.0, 0.0, 1/36.0, -1/36.0, -1/108.0, 1/72.0, -1/24.0, 0.0, 0.0, 1/12.0, -1/8.0, 0.0, -1/8.0, 0.0, 1/27.0, -1/18.0, 0.0, 1/18.0, 0.0, 1/36.0, -1/12.0, 0.0, 0.0, -1/12.0, 1/72.0, 0.0, -1/72.0, 1/36.0, 0.0, -1/36.0, -1/36.0, -1/108.0, 1/72.0, -1/24.0, 0.0, 0.0, 1/12.0, 1/8.0, 0.0, 1/8.0, 0.0, 1/27.0, 1/18.0, 0.0, 1/18.0, 0.0, 1/36.0, -1/12.0, 0.0, 0.0, 1/12.0, -1/72.0, 0.0, -1/72.0, -1/36.0, 0.0, -1/36.0, -1/36.0, -1/108.0, 1/72.0, -1/24.0, 0.0, 0.0, -1/12.0, -1/8.0, 0.0, 1/8.0, 0.0, 1/27.0, -1/18.0, -1/18.0, 0.0, 0.0, 1/36.0, 1/12.0, 1/12.0, 0.0, 0.0, 1/72.0, 1/72.0, 0.0, 1/36.0, 1/36.0, 0.0, -1/36.0, -1/108.0, 1/72.0, 1/24.0, -1/12.0, 0.0, 0.0, -1/8.0, 1/8.0, 0.0, 0.0, 1/27.0, -1/18.0, 1/18.0, 0.0, 0.0, 1/36.0, 1/12.0, -1/12.0, 0.0, 0.0, 1/72.0, -1/72.0, 0.0, 1/36.0, -1/36.0, 0.0, -1/36.0, -1/108.0, 1/72.0, 1/24.0, 1/12.0, 0.0, 0.0, -1/8.0, -1/8.0, 0.0, 0.0, 1/27.0, 1/18.0, -1/18.0, 0.0, 0.0, 1/36.0, 1/12.0, -1/12.0, 0.0, 0.0, -1/72.0, 1/72.0, 0.0, -1/36.0, 1/36.0, 0.0, -1/36.0, -1/108.0, 1/72.0, 1/24.0, 1/12.0, 0.0, 0.0, 1/8.0, 1/8.0, 0.0, 0.0, 1/27.0, 1/18.0, 1/18.0, 0.0, 0.0, 1/36.0, 1/12.0, 1/12.0, 0.0, 0.0, -1/72.0, -1/72.0, 0.0, -1/36.0, -1/36.0, 0.0, -1/36.0, -1/108.0, 1/72.0, 1/24.0, -1/12.0, 0.0, 0.0, 1/8.0, -1/8.0, 0.0, 0.0, 1/27.0, -1/18.0, -1/18.0, -1/18.0, 1/18.0, 0.0, 0.0, 1/12.0, 1/12.0, 1/12.0, -1/36.0, -1/36.0, -1/36.0, -1/72.0, -1/72.0, -1/72.0, 1/36.0, 1/216.0, 0.0, 0.0, 1/24.0, 1/24.0, 1/24.0, 0.0, 0.0, 0.0, -1/8.0, 1/27.0, -1/18.0, -1/18.0, 1/18.0, 1/18.0, 0.0, 0.0, 1/12.0, -1/12.0, -1/12.0, -1/36.0, -1/36.0, 1/36.0, -1/72.0, -1/72.0, 1/72.0, 1/36.0, 1/216.0, 0.0, 0.0, 1/24.0, -1/24.0, -1/24.0, 0.0, 0.0, 0.0, 1/8.0, 1/27.0, -1/18.0, 1/18.0, -1/18.0, 1/18.0, 0.0, 0.0, -1/12.0, -1/12.0, 1/12.0, -1/36.0, 1/36.0, -1/36.0, -1/72.0, 1/72.0, -1/72.0, 1/36.0, 1/216.0, 0.0, 0.0, -1/24.0, -1/24.0, 1/24.0, 0.0, 0.0, 0.0, 1/8.0, 1/27.0, -1/18.0, 1/18.0, 1/18.0, 1/18.0, 0.0, 0.0, -1/12.0, 1/12.0, -1/12.0, -1/36.0, 1/36.0, 1/36.0, -1/72.0, 1/72.0, 1/72.0, 1/36.0, 1/216.0, 0.0, 0.0, -1/24.0, 1/24.0, -1/24.0, 0.0, 0.0, 0.0, -1/8.0, 1/27.0, 1/18.0, -1/18.0, -1/18.0, 1/18.0, 0.0, 0.0, -1/12.0, 1/12.0, -1/12.0, 1/36.0, -1/36.0, -1/36.0, 1/72.0, -1/72.0, -1/72.0, 1/36.0, 1/216.0, 0.0, 0.0, -1/24.0, 1/24.0, -1/24.0, 0.0, 0.0, 0.0, 1/8.0, 1/27.0, 1/18.0, -1/18.0, 1/18.0, 1/18.0, 0.0, 0.0, -1/12.0, -1/12.0, 1/12.0, 1/36.0, -1/36.0, 1/36.0, 1/72.0, -1/72.0, 1/72.0, 1/36.0, 1/216.0, 0.0, 0.0, -1/24.0, -1/24.0, 1/24.0, 0.0, 0.0, 0.0, -1/8.0, 1/27.0, 1/18.0, 1/18.0, -1/18.0, 1/18.0, 0.0, 0.0, 1/12.0, -1/12.0, -1/12.0, 1/36.0, 1/36.0, -1/36.0, 1/72.0, 1/72.0, -1/72.0, 1/36.0, 1/216.0, 0.0, 0.0, 1/24.0, -1/24.0, -1/24.0, 0.0, 0.0, 0.0, -1/8.0, 1/27.0, 1/18.0, 1/18.0, 1/18.0, 1/18.0, 0.0, 0.0, 1/12.0, 1/12.0, 1/12.0, 1/36.0, 1/36.0, 1/36.0, 1/72.0, 1/72.0, 1/72.0, 1/36.0, 1/216.0, 0.0, 0.0, 1/24.0, 1/24.0, 1/24.0, 0.0, 0.0, 0.0, 1/8.0, 1/27.0, 0.0, 0.0, 0.0, -1/9.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1/9.0, -1/27.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/), (/27, 27/), order=(/2, 1/))
integer, private, parameter:: QQ =27

Definition of the discrete velocity set

integer, private, parameter:: q000 =27

Subroutines

public subroutine mrt_advRel_d3q27(fieldProp, inState, outState, auxField, neigh, nElems, nSolve, level, layout, params, varSys, derVarPos)

Semi-optimized explicit implementation

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_field_prop_type), intent(in) :: fieldProp(:)

Array of field properties (fluid or species)

real(kind=rk), intent(in) :: inState(nElems*varSys%nScalars)

input pdf vector

real(kind=rk), intent(out) :: outState(nElems*varSys%nScalars)

output pdf vector

real(kind=rk), intent(inout) :: auxField(nElems*varSys%nAuxScalars)

Auxiliary field computed from pre-collision state Is updated with correct velocity field for multicomponent models

integer, intent(in) :: neigh(nElems*layout%fStencil%QQ)

connectivity vector

integer, intent(in) :: nElems

number of elements in state Array

integer, intent(in) :: nSolve

number of elements solved in kernel

integer, intent(in) :: level

current level

type(mus_scheme_layout_type), intent(in) :: layout

current layout

type(mus_param_type), intent(in) :: params

global parameters

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys for all fields

public subroutine mrt_advRel_d3q27_incomp(fieldProp, inState, outState, auxField, neigh, nElems, nSolve, level, layout, params, varSys, derVarPos)

Semi-optimized explicit implementation for incompressible model

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_field_prop_type), intent(in) :: fieldProp(:)

Array of field properties (fluid or species)

real(kind=rk), intent(in) :: inState(nElems*varSys%nScalars)

input pdf vector

real(kind=rk), intent(out) :: outState(nElems*varSys%nScalars)

output pdf vector

real(kind=rk), intent(inout) :: auxField(nElems*varSys%nAuxScalars)

Auxiliary field computed from pre-collision state Is updated with correct velocity field for multicomponent models

integer, intent(in) :: neigh(nElems*layout%fStencil%QQ)

connectivity vector

integer, intent(in) :: nElems

number of elements in state Array

integer, intent(in) :: nSolve

number of elements solved in kernel

integer, intent(in) :: level

current level

type(mus_scheme_layout_type), intent(in) :: layout

current layout

type(mus_param_type), intent(in) :: params

global parameters

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys for all fields

public subroutine mrt_advRel_d3q27_generic(fieldProp, inState, outState, auxField, neigh, nElems, nSolve, level, layout, params, varSys, derVarPos)

Unoptimized explicit implementation

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_field_prop_type), intent(in) :: fieldProp(:)

Array of field properties (fluid or species)

real(kind=rk), intent(in) :: inState(nElems*varSys%nScalars)

input pdf vector

real(kind=rk), intent(out) :: outState(nElems*varSys%nScalars)

output pdf vector

real(kind=rk), intent(inout) :: auxField(nElems*varSys%nAuxScalars)

Auxiliary field computed from pre-collision state Is updated with correct velocity field for multicomponent models

integer, intent(in) :: neigh(nElems*layout%fStencil%QQ)

connectivity vector

integer, intent(in) :: nElems

number of elements in state Array

integer, intent(in) :: nSolve

number of elements solved in kernel

integer, intent(in) :: level

current level

type(mus_scheme_layout_type), intent(in) :: layout

current layout

type(mus_param_type), intent(in) :: params

global parameters

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys for all fields

public subroutine mrt_advRel_d3q27_incomp_generic(fieldProp, inState, outState, auxField, neigh, nElems, nSolve, level, layout, params, varSys, derVarPos)

Unoptimized explicit implementation

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_field_prop_type), intent(in) :: fieldProp(:)

Array of field properties (fluid or species)

real(kind=rk), intent(in) :: inState(nElems*varSys%nScalars)

input pdf vector

real(kind=rk), intent(out) :: outState(nElems*varSys%nScalars)

output pdf vector

real(kind=rk), intent(inout) :: auxField(nElems*varSys%nAuxScalars)

Auxiliary field computed from pre-collision state Is updated with correct velocity field for multicomponent models

integer, intent(in) :: neigh(nElems*layout%fStencil%QQ)

connectivity vector

integer, intent(in) :: nElems

number of elements in state Array

integer, intent(in) :: nSolve

number of elements solved in kernel

integer, intent(in) :: level

current level

type(mus_scheme_layout_type), intent(in) :: layout

current layout

type(mus_param_type), intent(in) :: params

global parameters

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys for all fields