MAIA bb96820c
Multiphysics at AIA
|
This class represents all LB models. More...
#include <lbsolverdxqy.h>
Public Types | |
using | Base = LbSolver< nDim > |
using | GridProxy = typename LbSolver< nDim >::GridProxy |
using | LbBndCnd = LbBndCndDxQy< nDim, nDist, SysEqn > |
using | Ld = LbLatticeDescriptor< nDim, nDist > |
Public Member Functions | |
LbSolverDxQy (MInt id, MInt noDistributions, GridProxy &gridProxy_, Geometry< nDim > &geometry_, const MPI_Comm comm) | |
~LbSolverDxQy () | |
constexpr SysEqn | sysEqn () const |
virtual void | initializeLatticeBgk () |
Initializes standard Lattice BGK. More... | |
void | initLatticeBgkFftPipe () |
void | initLatticeBgkFftChannel () |
void | initLatticeBgkFftMixing () |
void | initLatticeBgkFftMixingFilter () |
void | initLatticeBgkFftIsotropicTurbulence () |
virtual void | initLatticeBgkLaminarChannel () |
virtual void | initLatticeBgkTurbulentChannel () |
virtual void | initLatticeBgkTurbulentMixing () |
virtual void | initLatticeBgkTurbulentBoundary () |
virtual void | initLatticeBgkTurbulentPipe () |
virtual void | initLatticeBgkTurbulentDuct () |
virtual void | initLatticeBgkLaminarPipe () |
virtual void | initLatticeBgkVortex () |
virtual void | initLatticeBgkTGV () |
void | initLatticeBgkSpinningVorticies () |
void | initLatticeBgkGaussPulse () |
void | initLatticeBgkGaussDiffusion () |
void | initLatticeBgkGaussAdvection () |
void | initLatticeBgkLaminarCylinder () |
virtual void | initLatticeBgkLaminarDir (MInt dir) |
Initializes standard Lattice BGK laminar with or without a direction. More... | |
virtual void | initLatticeBgkLaminar () |
void | initEqDistFunctions () |
Calculates equilibrium distribution functions after initialization of macroscopic variables. More... | |
void | initNonEqDistFunctions () |
virtual void | initThermalEqDistFunctions () |
Calculates equilibrium distribution functions after initialization of macroscopic variables. More... | |
virtual void | initTransportEqDistFunctions () |
Calculates equilibrium distribution functions after initialization of macroscopic variables. More... | |
virtual void | restartInitLb () |
virtual void | propagation_step () override |
standard OpenMP propagation step More... | |
virtual void | propagation_step_vol () override |
This function propagates the locally calculated PPDFs to the neighboring cells after the collision step. The volumetric refinement scheme requires prolongation to take place before propagation. More... | |
virtual void | propagation_step_thermal () override |
virtual void | propagation_step_thermal_vol () override |
Propagation step for Thermal Lattice-Boltzmann. More... | |
virtual void | propagation_step_transport () override |
Propagation step for Transport Lattice-Boltzmann. More... | |
virtual void | propagation_step_transport_vol () override |
Propagation step for Transport Lattice-Boltzmann. More... | |
virtual void | propagation_step_thermaltransport () override |
Propagation step for coupled Thermal Transport Lattice-Boltzmann. More... | |
virtual void | propagation_step_thermaltransport_vol () override |
Propagation step for coupled Thermal Transport Lattice-Boltzmann. More... | |
template<MInt timeStepOffset = 0> | |
void | updateVariablesFromOldDist_ () |
virtual void | updateVariablesFromOldDist () override |
virtual void | updateVariablesFromOldDist_preCollision () override |
virtual void | volumeForces () |
apply volumeForces to the oldDistributions More... | |
virtual void | controlVelocity () |
control velocity of a periodic channel flow via volume forces More... | |
virtual void | averageGlobalVelocity (const MInt dir) |
calculate average velocity of velocity component dir More... | |
virtual void | removeChildsLb (const MInt parentId) |
: Initialize parent variables from children More... | |
virtual void | refineCellLb (const MInt parentId, const MInt *childIds) |
: Initialize child variables from parent More... | |
virtual void | restartBndCnd () |
Restart bndCnd object. More... | |
void | sensorVorticity (std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override |
void | sensorDivergence (std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override |
void | sensorTotalPressure (std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override |
void | sensorInterface (std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override |
Simple boundary sensor for ensuring boundary refinement during adaptation. More... | |
void | sensorMeanStress (std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override |
template<MBool useSmagorinsky> | |
void | clb_collision_step_base () |
void | clb_collision_step () override |
void | clb_smagorinsky_collision_step () override |
void | cumulant_collision_step () override |
virtual void | bgki_collision_step () |
virtual void | bgki_thermal_collision_step () |
virtual void | bgki_innerEnergy_collision_step () |
virtual void | bgki_totalEnergy_collision_step () |
virtual void | bgkc_transport_collision_step () |
Collision step for Transport Lattice-Boltzmann. More... | |
virtual void | bgkc_thermal_transport_collision_step () |
Collision step for coupled Thermal Transport Lattice-Boltzmann. More... | |
virtual void | bgkc_innerenergy_transport_collision_step () |
Collision step for coupled Thermal Transport Lattice-Boltzmann. More... | |
virtual void | bgkc_totalenergy_transport_collision_step () |
Collision step for coupled Thermal Transport Lattice-Boltzmann. More... | |
void | bgki_collision_step_Guo_forcing () override |
template<MBool compressible = false> | |
void | calculateMomentumFlux (const MInt pCellId) |
Calculate and set momentum flux for a given cell. More... | |
template<MBool compressible = false> | |
void | calculateMomentumFlux (const MInt pCellId, MFloat *const momentumFlux) |
Calculate and set momentum flux for a given cell. More... | |
template<MBool compressible = false> | |
void | calculateMacroscopicVariables (const MInt cellId, MFloat &rho, MFloat *const u) |
Calculate macroscopic variables for a given cell. More... | |
void | calculateDissipation () |
Calculate total energy, dissipation, and subgrid dissipation for Smagorinsky. More... | |
template<MBool optimized, MBool useSmagorinsky> | |
void | mrt_collision_step_base () |
Collision step for the MRT-Algorithm. More... | |
void | mrt_collision_step () override |
void | mrt2_collision_step () override |
void | mrt_smagorinsky_collision_step () override |
void | bgki_euler_collision_step () override |
void | bgki_init_collision_step () override |
Consistent initialization step of the LBGK algorithm. More... | |
void | bgkc_collision_step () override |
void | bgki_dynamic_smago_collision_step () override |
template<MInt mode> | |
void | bgki_smagorinsky_collision_step_base () |
template<MInt thermalMode> | |
void | bgki_thermal_collision_step_base () |
template<MInt thermalMode> | |
void | bgki_thermal_and_transport_collision_step_base () |
Collision step for coupled Thermal Transport Lattice-Boltzmann. More... | |
void | bgki_smagorinsky_collision_step () override |
void | bgki_smagorinsky_collision_step2 () override |
void | bgki_smago_wall_collision_step () override |
template<MBool useSmagorinsky> | |
void | rbgk_collision_step_base () |
void | rbgk_collision_step () override |
void | rbgk_smagorinsky_collision_step () override |
void | rbgk_dynamic_smago_collision_step () override |
virtual void | calculateResidual () |
Calculates residuals and prints to file. More... | |
void | initSrcTermController () override |
Initialize the source term controller. More... | |
void | initSrcTerms () override |
Initialize the source term controller. More... | |
void | preCollisionSrcTerm () override |
Calls the pre collision routine of the source term controller. More... | |
void | postCollisionSrcTerm () override |
Calls the post collision routine of the source term controller. More... | |
void | postPropagationSrcTerm () override |
Calls the post collision routine of the source term controller. More... | |
void | postCollisionBc () override |
void | postPropagationBc () override |
virtual void | calcNodalLsValues () |
virtual MBool | maxResidual () |
void | averageSGSTensors (const MInt direction, MInt &count, std::vector< MFloat > &meanTensors) |
Calculate average SGS tensor. More... | |
void | updateMacroscopicVariables () |
Update macroscopic variables according to incoming PPDF. More... | |
void | updateViscosity () override |
Update viscosity (a_nu and a_oldNu) More... | |
void | calculateSGSTensors () |
Calculate tensors for dynamic Smagorinsky constant. More... | |
void | initArraysForPSTL () |
void | setEqDists (const MInt cellId, const MFloat rho, const MFloat *const velocity) |
Set BOTH distributions to equilibrium. More... | |
void | setEqDists (const MInt cellId, const MFloat rho, const MFloat squaredVelocity, const MFloat *const velocity) |
Set BOTH distributions to equilibrium. More... | |
void | setEqDistsThermal (const MInt cellId, const MFloat T, const MFloat rho, const MFloat *const velocity) |
Calls function for setting thermal distributions to equilibrium. More... | |
void | setEqDistsThermal (const MInt cellId, const MFloat T, const MFloat rho, const MFloat squaredVelocity, const MFloat *const velocity) |
Calls function for setting thermal distributions to equilibrium. More... | |
template<MInt thermalMode> | |
void | setEqDistsThermal_ (const MInt cellId, const MFloat T, const MFloat rho, const MFloat *const velocity) |
Set BOTH thermal distributions to equilibrium. More... | |
template<MInt thermalMode> | |
void | setEqDistsThermal_ (const MInt cellId, const MFloat T, const MFloat rho, const MFloat squaredVelocity, const MFloat *const velocity) |
Set BOTH thermal distributions to equilibrium. More... | |
void | setEqDistsTransport (const MInt cellId, const MFloat C, const MFloat *const velocity) |
Set BOTH transport distributions to equilibrium. More... | |
void | setEqDistsTransport (const MInt cellId, const MFloat C, const MFloat squaredVelocity, const MFloat *const velocity) |
Set BOTH transport distributions to equilibrium. More... | |
std::array< MFloat, nDist > | getEqDists (const MFloat rho, const MFloat *const velocity) |
Calls function to return the equilibrium distribution. More... | |
std::array< MFloat, nDist > | getEqDists (const MFloat rho, const MFloat squaredVelocity, const MFloat *const velocity) |
Calls function to return the equilibrium distribution. More... | |
std::array< MFloat, nDist > | getEqDistsThermal (const MFloat t, const MFloat rho, const MFloat *const velocity) |
Calls function to return the thermal equilibrium distribution. More... | |
std::array< MFloat, nDist > | getEqDistsThermal (const MFloat t, const MFloat rho, const MFloat squaredVelocity, const MFloat *const velocity) |
Calls function to return the thermal equilibrium distribution. More... | |
template<MInt thermalMode> | |
std::array< MFloat, nDist > | getEqDistsThermal_ (const MFloat t, const MFloat rho, const MFloat *const velocity) |
Return thermal distributions to equilibrium. More... | |
template<MInt thermalMode> | |
std::array< MFloat, nDist > | getEqDistsThermal_ (const MFloat t, const MFloat rho, const MFloat squaredVelocity, const MFloat *const velocity) |
Return thermal distributions to equilibrium. More... | |
std::array< MFloat, nDist > | getEqDistsTransport (const MFloat c, const MFloat *const velocity) |
Return transport distributions to equilibrium. More... | |
std::array< MFloat, nDist > | getEqDistsTransport (const MFloat c, const MFloat squaredVelocity, const MFloat *const velocity) |
Return transport distributions to equilibrium. More... | |
void | clb_collision_step_base () |
void | clb_collision_step_base () |
void | clb_collision_step_base () |
void | cumulant_collision_step () |
void | mrt_collision_step_base () |
void | mrt_collision_step_base () |
void | initLatticeBgkFftChannel () |
void | initLatticeBgkFftPipe () |
void | initLatticeBgkFftMixing () |
void | initLatticeBgkFftMixingFilter () |
void | initLatticeBgkFftIsotropicTurbulence () |
Public Attributes | |
const SysEqn | m_sysEqn {} |
std::mt19937 | randNumGen |
std::uniform_real_distribution | distrib {0.0, 1.0} |
Static Public Attributes | |
static constexpr MInt | m_noDistributions = nDist |
Protected Attributes | |
LbBndCnd * | m_bndCnd |
Pointers for the Boundary Conditions, for flow solving. More... | |
maia::lb::LbSrcTermController< nDim, nDist, SysEqn > | m_srcTermController |
LbInterfaceDxQy< nDim, nDist, SysEqn > * | m_interface |
void(LbSolverDxQy< nDim, nDist, SysEqn >::* | m_initMethodPtr )() |
Pointers for the Boundary Conditions, for flow solving. More... | |
Private Member Functions | |
void | prolongation () |
void | restriction () |
void | initPressureForce () override |
void | initVolumeForces () override |
template<MBool compressible> | |
void | initRunCorrection_ () |
Iterative initialize routine to obtained a valid density and non-eq field. More... | |
void | initRunCorrection () override |
Private Attributes | |
MFloat | m_smallestCellLength {} |
const MFloat | C1 |
const MFloat | C2 |
const MFloat | C3 |
const MFloat | C4 |
Friends | |
template<MInt nDim_, MInt nDist_, class SysEqn_ > | |
class | LbBndCndDxQy |
template<MInt nDim_, MInt nDist_, class SysEqn_ > | |
class | LbInterfaceDxQy |
template<MInt nDim_> | |
class | LbInterface |
template<MInt nDim_, MInt nDist_, class SysEqn_ > | |
class | CouplingLB |
Definition at line 29 of file lbsolverdxqy.h.
using LbSolverDxQy< nDim, nDist, SysEqn >::Base = LbSolver<nDim> |
Definition at line 33 of file lbsolverdxqy.h.
using LbSolverDxQy< nDim, nDist, SysEqn >::GridProxy = typename LbSolver<nDim>::GridProxy |
Definition at line 34 of file lbsolverdxqy.h.
using LbSolverDxQy< nDim, nDist, SysEqn >::LbBndCnd = LbBndCndDxQy<nDim, nDist, SysEqn> |
Definition at line 35 of file lbsolverdxqy.h.
using LbSolverDxQy< nDim, nDist, SysEqn >::Ld = LbLatticeDescriptor<nDim, nDist> |
Definition at line 179 of file lbsolverdxqy.h.
LbSolverDxQy< nDim, nDist, SysEqn >::LbSolverDxQy | ( | MInt | id, |
MInt | noDistributions, | ||
GridProxy & | gridProxy_, | ||
Geometry< nDim > & | geometry_, | ||
const MPI_Comm | comm | ||
) |
Definition at line 25 of file lbsolverdxqy.cpp.
LbSolverDxQy< nDim, nDist, SysEqn >::~LbSolverDxQy |
Definition at line 60 of file lbsolverdxqy.cpp.
|
virtual |
This function calculates the average velocity of all leaf cells (weighted by their volume) thoughout all domains. The value is saved to m_velocityControl.lastGlobalAvgV
[in] | dir | the velocity component to average |
Definition at line 563 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::averageSGSTensors | ( | const MInt | direction, |
MInt & | count, | ||
std::vector< MFloat > & | meanTensors | ||
) |
[in] | direction | direction of the line |
[out] | count | number of points in direction |
[out] | meanTensors | Mean SGS tensor |
Calculate average values for Cs along a line in chosen direction and return mean tensor and number of points of the line.
Definition at line 4578 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_BGKC
Common BGK collision step.
Definition at line 1737 of file lbsolverdxqy.cpp.
|
virtual |
Definition at line 2616 of file lbsolverdxqy.cpp.
|
virtual |
Definition at line 2604 of file lbsolverdxqy.cpp.
|
virtual |
Definition at line 2628 of file lbsolverdxqy.cpp.
|
virtual |
Definition at line 2111 of file lbsolverdxqy.cpp.
|
virtual |
MAIA_LATTICE_BGK
Collision step of the incompressible LBGK algorithm
Definition at line 1770 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_BGK_GUO_FORCING
Collision step of the incompressible LBGK algorithm with forcing method of Guo et al.
adapted from conventional bgki-collision step Discrete lattice effects on the forcing term in the lattice Boltzmann method DOI: 0.1103/PhysRevE.65.046308
Definition at line 1968 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_BGKI_DYNAMIC_SMAGO
Collision step of the incompressible LBGK algorithm with SGS modelling
only for D3Q19
Definition at line 3334 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_BGKI_EULER_2D
The collision step for the Euler BGK-Algorithm Why is the equilibrium set if Q < eps??? Not tested yet, use with caution!!!!
Definition at line 3445 of file lbsolverdxqy.cpp.
|
override |
The initial velocity field is held constant. Only the pressure is changed by collision. (Mei et al. 2006)
Regularized pre-collision functions are used for sake of stability and accuracy !!!
Definition at line 4505 of file lbsolverdxqy.cpp.
|
virtual |
MAIA_LATTICE_BGK_INNERENERGY
Collision step of the incompressible LBGK algorithm with TLBGK extension using an inner energy distribution function approach
Performs the collision step for the BGK method with TLBGK extension:
Definition at line 3035 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_BGKI_SMAGO_WALL
Collision step of the incompressible LBGK algorithm with SGS modelling and van Driest damping function
only for D3Q19 and channel flow
Definition at line 3090 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_BGKI_SMAGORINSKY
Collision step of the incompressible LBGK algorithm with SGS modelling
only for D3Q19
Definition at line 3076 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_BGKI_SMAGORINSKY2
Collision step of the incompressible LBGK algorithm with SGS modelling and calculation of sgs terms along y axis
only for D3Q19
Definition at line 3104 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::bgki_smagorinsky_collision_step_base |
Definition at line 3110 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::bgki_thermal_and_transport_collision_step_base |
Definition at line 2305 of file lbsolverdxqy.cpp.
|
virtual |
MAIA_LATTICE_BGK_THERMAL
Collision step of the incompressible LBGK algorithm for thermal LB
Definition at line 3004 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::bgki_thermal_collision_step_base |
Definition at line 2636 of file lbsolverdxqy.cpp.
|
virtual |
MAIA_LATTICE_BGK_TOTALENERGY
Collision step of the incompressible LBGK algorithm with TLBGK extension using a total energy distribution function approach
Performs the collision step for the BGK method with TLBGK extension:
Definition at line 3061 of file lbsolverdxqy.cpp.
|
virtual |
Definition at line 7137 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::calculateDissipation |
Definition at line 3564 of file lbsolverdxqy.cpp.
|
inline |
[in] | cellId | Cell id for which the macroscopic variables are calculated |
[out] | rho | Macroscopic density |
[out] | u | Macroscopic velocity |
Definition at line 898 of file lbsolverdxqy.h.
|
inline |
[in] | pCellId | Cell id for which the momentum flux is calculated |
Definition at line 950 of file lbsolverdxqy.h.
|
inline |
[in] | pCellId | Cell id for which the momentum flux is calculated |
[out] | momentumFlux | momentumFlux tensor |
Definition at line 920 of file lbsolverdxqy.h.
|
virtual |
Calculates the local max. and averaged max. residual for this process. The maximum over all processes is found by using a MPI_Allreduce with the MAX_LOC option. Only the processor with the max. of all values writes to disk. The averaged max. resiudal is found by averaging over the number of cells per process and then summing up and collecting the information on proc. 0 by using MPI_Reduce with the SUM option. Then this residual is additionally averaged by the number of processes.
Definition at line 6340 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::calculateSGSTensors |
only for D3Q19 and uniform grids
Calculation of MijMij and MijLij according to Pope p.620. The test filter is a box filter with a width 2*m_deltaX.
Definition at line 4761 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_CLB
This function wraps clb_collision_step_base to access CLB-Algorithm without a Smagorisnky turbulence model.
Definition at line 1338 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 2, 9, maia::lb::LbSysEqnIncompressible< 2, 9 > >::clb_collision_step_base< false > | ( | ) |
Definition at line 600 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 3, 19, maia::lb::LbSysEqnIncompressible< 3, 19 > >::clb_collision_step_base< false > | ( | ) |
Definition at line 699 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 3, 27, maia::lb::LbSysEqnIncompressible< 3, 27 > >::clb_collision_step_base | ( | ) |
Smagorinsky constant
Definition at line 927 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::clb_collision_step_base |
Definition at line 587 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_CLB_SMAGORINSKY
This function wraps clb_collision_step_base to access CLB-Algorithm with a Smagorisnky turbulence model.
Definition at line 1352 of file lbsolverdxqy.cpp.
|
virtual |
This function determines the necessary volume forces to keep periodic channel flow at a bulk velocity of u_inf.
Definition at line 504 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 3, 27, maia::lb::LbSysEqnCompressible< 3, 27 > >::cumulant_collision_step | ( | ) |
Definition at line 1371 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_CUMULANT
Collision step based on countable cumulants.
Ref: Geier et al. 2015, https://doi.org/10.1016/j.camwa.2015.05.001
Definition at line 1366 of file lbsolverdxqy.cpp.
std::array< MFloat, nDist > LbSolverDxQy< nDim, nDist, SysEqn >::getEqDists | ( | const MFloat | rho, |
const MFloat *const | velocity | ||
) |
Use this version if the squaredVelocity is not already precomputed
[in] | rho | Macroscopic density |
[in] | velocity | Macroscopic velocity |
Definition at line 668 of file lbsolverdxqy.h.
std::array< MFloat, nDist > LbSolverDxQy< nDim, nDist, SysEqn >::getEqDists | ( | const MFloat | rho, |
const MFloat | squaredVelocity, | ||
const MFloat *const | velocity | ||
) |
Use this version if the squaredVelocity is already precomputed
[in] | rho | Macroscopic density |
[in] | squaredVelocity | Macroscopic velocity squared |
[in] | velocity | Macroscopic velocity |
Definition at line 691 of file lbsolverdxqy.h.
std::array< MFloat, nDist > LbSolverDxQy< nDim, nDist, SysEqn >::getEqDistsThermal | ( | const MFloat | t, |
const MFloat | rho, | ||
const MFloat *const | velocity | ||
) |
Use this version if the squaredVelocity is not already precomputed
[in] | t | Macroscopic temperature |
[in] | rho | Macroscopic density |
[in] | velocity | Macroscopic velocity |
Definition at line 715 of file lbsolverdxqy.h.
std::array< MFloat, nDist > LbSolverDxQy< nDim, nDist, SysEqn >::getEqDistsThermal | ( | const MFloat | t, |
const MFloat | rho, | ||
const MFloat | squaredVelocity, | ||
const MFloat *const | velocity | ||
) |
Use this version if the squaredVelocity is already precomputed
[in] | t | Macroscopic temperature |
[in] | rho | Macroscopic density |
[in] | squaredVelocity | Macroscopic velocity squared |
[in] | velocity | Macroscopic velocity |
Definition at line 778 of file lbsolverdxqy.h.
std::array< MFloat, nDist > LbSolverDxQy< nDim, nDist, SysEqn >::getEqDistsThermal_ | ( | const MFloat | t, |
const MFloat | rho, | ||
const MFloat *const | velocity | ||
) |
Use this version if the squaredVelocity is not already precomputed
thermalMode | Determines which equilibrium formulation is used |
[in] | t | Macroscopic temperature |
[in] | rho | Macroscopic density |
[in] | velocity | Macroscopic velocity |
Definition at line 741 of file lbsolverdxqy.h.
std::array< MFloat, nDist > LbSolverDxQy< nDim, nDist, SysEqn >::getEqDistsThermal_ | ( | const MFloat | t, |
const MFloat | rho, | ||
const MFloat | squaredVelocity, | ||
const MFloat *const | velocity | ||
) |
Use this version if the squaredVelocity is already precomputed
thermalMode | Determines which equilibrium formulation is used |
[in] | t | Macroscopic temperature |
[in] | rho | Macroscopic density |
[in] | squaredVelocity | Macroscopic velocity squared |
[in] | velocity | Macroscopic velocity |
Definition at line 806 of file lbsolverdxqy.h.
std::array< MFloat, nDist > LbSolverDxQy< nDim, nDist, SysEqn >::getEqDistsTransport | ( | const MFloat | c, |
const MFloat *const | velocity | ||
) |
Use this version if the squaredVelocity is not already precomputed
[in] | c | Macroscopic transport quantity |
[in] | rho | Macroscopic density |
[in] | velocity | Macroscopic velocity |
Definition at line 849 of file lbsolverdxqy.h.
std::array< MFloat, nDist > LbSolverDxQy< nDim, nDist, SysEqn >::getEqDistsTransport | ( | const MFloat | c, |
const MFloat | squaredVelocity, | ||
const MFloat *const | velocity | ||
) |
Use this version if the squaredVelocity is already precomputed
[in] | c | Macroscopic transport quantity |
[in] | rho | Macroscopic density |
[in] | squaredVelocity | Macroscopic velocity squared |
[in] | velocity | Macroscopic velocity |
Definition at line 874 of file lbsolverdxqy.h.
void LbSolverDxQy< nDim, nDist, SysEqn >::initArraysForPSTL |
Definition at line 8853 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::initEqDistFunctions |
Definition at line 6224 of file lbsolverdxqy.cpp.
|
virtual |
This function sets a function pointer for the right initailization method and then finally calls that method. The decision is based on the property "initMethod" and decides between an initialization with and without FFT.
Definition at line 5014 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 2, 9, maia::lb::LbSysEqnIncompressible< 2, 9 > >::initLatticeBgkFftChannel | ( | ) |
Definition at line 7815 of file lbsolverdxqy.cpp.
|
inline |
LB_TURBULENT_CHANNEL_INIT
Initializes standard Lattice BGK Turbulent channel with FFT initialization. Set property "initMethod" to "LB_TURBULENT_CHANNEL_INIT" and the property "FFTInit" to "1" to use this function.
\LBIC{LbSolverDxQy::initLatticeBgkFftChannel(), initLatticeBgkFftChannel, FftChannelInit}
Definition at line 7660 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 2, 9, maia::lb::LbSysEqnIncompressible< 2, 9 > >::initLatticeBgkFftIsotropicTurbulence | ( | ) |
Definition at line 8847 of file lbsolverdxqy.cpp.
|
inline |
LB_TURBULENCE_ISOTROPIC_INIT
Creates isotropic Turbulence in box shaped domain, adapted from FV In comparison to FV, where the pressure field is calulated by solving a poisson equation for the pressure in fourier-transformed wavespace, an iterative initialization run for the initialization of the pressure/density field is necessary. See function: initRunCorrection()
\LBIC{LbSolverDxQy::initLatticeBgkFftIsotropicTurbulence(), initLatticeBgkFftIsotropicTurbulence, FftIsotropicTurbulenceInit}
Definition at line 8341 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 2, 9, maia::lb::LbSysEqnIncompressible< 2, 9 > >::initLatticeBgkFftMixing | ( | ) |
Definition at line 8148 of file lbsolverdxqy.cpp.
|
inline |
LB_TURBULENT_MIXING_FILTER_INIT
Initializes standard Lattice BGK Turbulent Boundary with FFT initialization. Set property "initMethod" to "LB_TURBULENT_MIXING_INIT" and the property "FFTInit" to "1" to use this function.
\LBIC{LbSolverDxQy::initLatticeBgkFftMixing(), initLatticeBgkFftMixing, FftMixingInit}
Definition at line 7997 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 2, 9, maia::lb::LbSysEqnIncompressible< 2, 9 > >::initLatticeBgkFftMixingFilter | ( | ) |
Definition at line 8322 of file lbsolverdxqy.cpp.
|
inline |
LB_TURBULENT_MIXING_FILTER_INIT
Initializes standard Lattice BGK Turbulent Boundary with FFT initialization. The disturbances are filtered to a resolution 4 times lower than the resolution of the disturbance field. Set property "initMethod" to "LB_TURBULENT_MIXING_FILTER_INIT" and the property "FFTInit" to "1" to use this function.
\LBIC{LbSolverDxQy::initLatticeBgkFftMixingFilter(), initLatticeBgkFftMixingFilter, FftMixingFilterInit}
Definition at line 8165 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 2, 9, maia::lb::LbSysEqnIncompressible< 2, 9 > >::initLatticeBgkFftPipe | ( | ) |
Definition at line 7981 of file lbsolverdxqy.cpp.
|
inline |
LB_TURBULENT_PIPE_INIT
Initializes standard Lattice BGK Turbulent Pipe with FFT initialization. Set property "initMethod" to "LB_TURBULENT_PIPE_INIT" and the property "FFTInit" to "1" to use this function.
\LBIC{LbSolverDxQy::initLatticeBgkFftPipe(), initLatticeBgkFftPipe, FftPipeInit}
Definition at line 7830 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::initLatticeBgkGaussAdvection |
Definition at line 6037 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::initLatticeBgkGaussDiffusion |
Definition at line 5975 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::initLatticeBgkGaussPulse |
LB_GAUSS_PULSE_INIT
Initializes a Gaussian pulse. Set property "initMethod" to "LB_GAUSS_PULSE_INIT" to use this function.
\LBIC{LbSolverDxQy::initLatticeBgkGaussPulse(), initLatticeBgkGaussPulse, GaussPulseInit}
Definition at line 5949 of file lbsolverdxqy.cpp.
|
virtual |
LB_FROM_ZERO_INIT
LB_LAMINAR_INIT_[PM][XYZ]
Set property "initMethod" to "LB_FROM_ZERO_INIT" or to "LB_LAMINAR_INIT_[PM][XYZ]" to use this function. Simply calls initLatticeBgkLaminarDir(...) with a velocity direction or -1 for zero velocity.
\LBIC{LbSolverDxQy::initLatticeBgkLaminar(), initLatticeBgkLaminar, LaminarInit}
Definition at line 5846 of file lbsolverdxqy.cpp.
|
virtual |
LB_LAMINAR_CHANNEL_INIT
Initializes standard Lattice BGK Laminar Channel. Set property "initMethod" to "LB_LAMINAR_CHANNEL_INIT"
\LBIC{LbSolverDxQy::initLatticeBgkLaminarChannel(), initLatticeBgkLaminarChannel, LaminarChannelInit}
Definition at line 5137 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::initLatticeBgkLaminarCylinder |
LB_LAMINAR_CYLINDER_INIT
Initializes a laminar cylinder with perturbation. Set property "initMethod" to "LB_LAMINAR_CYLINDER_INIT" to use this function. Perturbation forces a shorter transient.
\LBIC{LbSolverDxQy::initLatticeBgkLaminarCylinder(), initLatticeBgkLaminarCylinder, LaminarCylinderInit}
Definition at line 6108 of file lbsolverdxqy.cpp.
|
virtual |
The direction parameter is given by:
[in] | dir | the direction to set |
Definition at line 6141 of file lbsolverdxqy.cpp.
|
virtual |
LB_LAMINAR_PIPE_INIT
Initializes standard Lattice BGK Laminar Pipe. Set property "initMethod" to "LB_LAMINAR_PIPE_INIT"
\LBIC{LbSolverDxQy::initLatticeBgkLaminarPipe(), initLatticeBgkLaminarPipe, LaminarPipeInit}
Definition at line 5217 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::initLatticeBgkSpinningVorticies |
LB_SPINNING_VORTICIES_INIT
Initializes standard Lattice BGK spinning vorticies. Set property "initMethod" to "LB_SPINNING_VORTICIES_INIT" to use this function.
\LBIC{LbSolverDxQy::initLatticeBgkSpinningVorticies(), initLatticeBgkSpinningVorticies, SpinningVorticiesInit}
Definition at line 5762 of file lbsolverdxqy.cpp.
|
virtual |
LB_TGV_INIT
Initializes standard Lattice BGK TGV. Set property "initMethod" to "LB_TGV_INIT"
\LBIC{LbSolverDxQy::initLatticeBgkTGV(), initLatticeBgkTGV, TGVlInit}
Definition at line 5306 of file lbsolverdxqy.cpp.
|
virtual |
LB_TURBULENT_BOUNDARY
Initializes standard Lattice BGK Turbulent Boundary. Set property "initMethod" to "LB_TURBULENT_BOUNDARY"
\LBIC{LbSolverDxQy::initLatticeBgkTurbulentBoundary(), initLatticeBgkTurbulentBoundary, TurbulentBoundaryInit}
Definition at line 5357 of file lbsolverdxqy.cpp.
|
virtual |
LB_TURBULENT_CHANNEL_INIT
Initializes standard Lattice BGK Turbulent Channel. Set property "initMethod" to "LB_TURBULENT_CHANNEL_INIT"
\LBIC{LbSolverDxQy::initLatticeBgkTurbulentChannel(), initLatticeBgkTurbulentChannel, TurbulentChannelInit}
Definition at line 5420 of file lbsolverdxqy.cpp.
|
virtual |
LB_TURBULENT_DUCT_INIT
Initializes standard Lattice BGK Turbulent Duct. Set property "initMethod" to "LB_TURBULENT_DUCT_INIT"
\LBIC{LbSolverDxQy::initLatticeBgkTurbulentDuct(), initLatticeBgkTurbulentDuct, TurbulentDuctInit}
Definition at line 5482 of file lbsolverdxqy.cpp.
|
virtual |
LB_TURBULENT_MIXING_INIT
Initializes standard Lattice BGK Turbulent Mixing Layer. Set property "initMethod" to "LB_TURBULENT_MIXING_INIT"
\LBIC{LbSolverDxQy::initLatticeBgkTurbulentMixing(), initLatticeBgkTurbulentMixing, TurbulentMixingInit}
Definition at line 5551 of file lbsolverdxqy.cpp.
|
virtual |
LB_TURBULENT_PIPE_INIT
Initializes standard Lattice BGK Turbulent Pipe. Set property "initMethod" to "LB_TURBULENT_PIPE_INIT"
\LBIC{LbSolverDxQy::initLatticeBgkTurbulentPipe(), initLatticeBgkTurbulentPipe, TurbulentPipeInit}
Definition at line 5615 of file lbsolverdxqy.cpp.
|
virtual |
LB_STEADY_VORTEX_INIT
LB_CONVECTING_VORTEX_INIT
Initializes standard Lattice BGK Vortex (at rest or convecting). Set property "initMethod" to "LB_SPINNING_VORTICIES_INIT" or "LB_CONVECTING_VORTEX_INIT" to use this function.
Vortex is represented by vortex core model A. Najafi-Yazdi, 2012. (http://dx.doi.org/10.1016/j.compfluid.2012.07.017)
\LBIC{LbSolverDxQy::initLatticeBgkVortex(), initLatticeBgkVortex, VortexInit}
Definition at line 5690 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::initNonEqDistFunctions |
Definition at line 6238 of file lbsolverdxqy.cpp.
|
overrideprivate |
brief activate all cells, but the halo cells
The pressure force is calculated on the lowest level of Refinement. One half of the forcing term is added after the collision, and the other half is added after streaming. This ensures correct forcing at half-way bounce-back boundaries.
Definition at line 7413 of file lbsolverdxqy.cpp.
|
overrideprivate |
Definition at line 7641 of file lbsolverdxqy.cpp.
|
private |
For the init method following Mei et al. the initial velocity field is kept constant and only density/pressure and the non-equilibrium field is updated. This function does the correction independent of chosen methods. This is done by Resetting 1) .. macroscopic state from (rho, u) to (rho, u0) 2) .. mesoscopic state from f=f_neq + f_eq(rho,u) to f=f_neq + f_eq(rho,u0) Thus, LBM solves only a Poisson equation for the pressure. ref.: Mei et al. 2006: https://doi.org/10.1016/j.compfluid.2005.08.008
Definition at line 7586 of file lbsolverdxqy.cpp.
|
override |
Definition at line 4924 of file lbsolverdxqy.cpp.
|
override |
Definition at line 4934 of file lbsolverdxqy.cpp.
|
virtual |
This is pretty much the same function as initEqDistFunctions(), except that the thermal macroscopic variable \(T\) (temperature) is initilized as well with \(T = 1.0\). After that, the equilibrium distribution functions are calculated for all the LBGK- and the TLBGK-case.
Definition at line 6288 of file lbsolverdxqy.cpp.
|
virtual |
This is pretty much the same function as initEqDistFunctions(), except that the transport macroscopic variable \(C\) (concentration) is initilized as well with \(C = 1.0\). After that, the equilibrium distribution functions are calculated for all the LBGK- and the Transport-LBGK-case.
Definition at line 6313 of file lbsolverdxqy.cpp.
|
overrideprivate |
Definition at line 7540 of file lbsolverdxqy.cpp.
|
virtual |
Definition at line 7395 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_MRT2
Collision step for the MRT-Algorithm with optimized parameters This function wraps mrt_collision_step_base to access MRT-Algorithm with optimized parameters.
Definition at line 4104 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_MRT
Collision step for the MRT-Algorithm with standard parameters This function wraps mrt_collision_step_base to access MRT-Algorithm with standard parameters.
Definition at line 4089 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 2, 9, maia::lb::LbSysEqnIncompressible< 2, 9 > >::mrt_collision_step_base | ( | ) |
Definition at line 3682 of file lbsolverdxqy.cpp.
void LbSolverDxQy< 3, 19, maia::lb::LbSysEqnIncompressible< 3, 19 > >::mrt_collision_step_base | ( | ) |
Definition at line 3758 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::mrt_collision_step_base |
This function provides a collision step based on the MRT-Algorithm. It provides a version based on standard and optimized parameters Ref. :
Definition at line 3676 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_MRT_SMAGORINSKY
Collision step for the MRT-Algorithm + Smagorinsky turbulence model This function wraps mrt_collision_step_base to access MRT-Algorithm with standard parameters. It features a Smagorinsky turbulence model for calculating the turbulent viscosity with a van-Driest damping for turbulent channel.
Definition at line 4121 of file lbsolverdxqy.cpp.
|
override |
Definition at line 4973 of file lbsolverdxqy.cpp.
|
override |
Definition at line 4954 of file lbsolverdxqy.cpp.
|
override |
Definition at line 4983 of file lbsolverdxqy.cpp.
|
override |
Definition at line 4964 of file lbsolverdxqy.cpp.
|
override |
Definition at line 4944 of file lbsolverdxqy.cpp.
|
private |
Definition at line 6529 of file lbsolverdxqy.cpp.
|
overridevirtual |
This function propagates the locally calculated PPDFs to the neighboring cells after the collision step.
Definition at line 74 of file lbsolverdxqy.cpp.
|
overridevirtual |
Definition at line 160 of file lbsolverdxqy.cpp.
|
overridevirtual |
This function propagates the locally calculated PPDFs to the neighboring cells after the collision step. The volumetric refinement scheme requires prolongation to take place before propagation
Definition at line 277 of file lbsolverdxqy.cpp.
|
overridevirtual |
This function propagates the locally computed PPDFs to the neighboring cells after the collision step.
Definition at line 236 of file lbsolverdxqy.cpp.
|
overridevirtual |
Definition at line 349 of file lbsolverdxqy.cpp.
|
overridevirtual |
This function propagates the locally computed PPDFs to the neighboring cells after the collision step.
Definition at line 198 of file lbsolverdxqy.cpp.
|
overridevirtual |
This function does the same as the propagation_step_thermal_vol but for Transport Lattice Boltzmann.
Definition at line 314 of file lbsolverdxqy.cpp.
|
overridevirtual |
Definition at line 113 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_RBGK
Collision step for the regularized LBGK-Algorithm
Definition at line 4270 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::rbgk_collision_step_base |
Definition at line 4131 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_RBGK_DYNAMIC_SMAGO
Collision step for the regularized LBGK-Algorithm + dynamic Smagorinsky turbulence model
Definition at line 4292 of file lbsolverdxqy.cpp.
|
override |
MAIA_LATTICE_RBGK_SMAGORINSKY
Collision step for the regularized LBGK-Algorithm + Smagorinsky turbulence model
Definition at line 4281 of file lbsolverdxqy.cpp.
|
virtual |
: Call interface function that performs initialization
[in] |
parentId: Solver id of cell that is refined childIds: Solver ids of new finde cells
Definition at line 6560 of file lbsolverdxqy.cpp.
|
virtual |
: Call interface function that performs initialization
[in] |
parentId: Solver cell id of parent that will be coarsen
Definition at line 6548 of file lbsolverdxqy.cpp.
|
virtual |
Definition at line 7123 of file lbsolverdxqy.cpp.
|
virtual |
Definition at line 4993 of file lbsolverdxqy.cpp.
|
private |
Definition at line 6536 of file lbsolverdxqy.cpp.
|
override |
Definition at line 6843 of file lbsolverdxqy.cpp.
|
override |
Definition at line 6577 of file lbsolverdxqy.cpp.
|
override |
Definition at line 7050 of file lbsolverdxqy.cpp.
|
override |
Definition at line 6987 of file lbsolverdxqy.cpp.
|
override |
Definition at line 6686 of file lbsolverdxqy.cpp.
|
inline |
compressible | Determines which equilibrium formulation is used |
[in] | cellId | Cell id in which the equilibrium is set |
[in] | rho | Macroscropic density |
[in] | velocity | Macroscopic velocity |
Definition at line 401 of file lbsolverdxqy.h.
|
inline |
compressible | Determines which equilibrium formulation is used |
[in] | cellId | Cell id in which the equilibrium is set |
[in] | rho | Macroscropic density |
[in] | squaredVelocity | Macroscopic velocity squared |
[in] | velocity | Macroscopic velocity |
Definition at line 431 of file lbsolverdxqy.h.
|
inline |
Use this version if the squaredVelocity is not already precomputed
[in] | cellId | Cell id in which the equilibrium is set |
[in] | T | Macroscopic temperature |
[in] | rho | Macroscopic density |
[in] | velocity | Macroscopic velocity |
Definition at line 462 of file lbsolverdxqy.h.
|
inline |
Use this version if the squaredVelocity is already precomputed
[in] | cellId | Cell id in which the equilibrium is set |
[in] | T | Macroscopic temperature |
[in] | rho | Macroscopic density |
[in] | squaredVelocity | Macroscopic velocity squared |
[in] | velocity | Macroscopic velocity |
Definition at line 532 of file lbsolverdxqy.h.
|
inline |
Use this version if the squaredVelocity is not already precomputed
thermalMode | Determines which equilibrium formulation is used |
[in] | cellId | Cell id in which the equilibrium is set |
[in] | T | Macroscopic temperature |
[in] | rho | Macroscopic density |
[in] | velocity | Macroscopic velocity |
Definition at line 489 of file lbsolverdxqy.h.
|
inline |
Use this version if the squaredVelocity is already precomputed
thermalMode | Determines which equilibrium formulation is used |
[in] | cellId | Cell id in which the equilibrium is set |
[in] | T | Macroscopic temperature |
[in] | rho | Macroscopic density |
[in] | squaredVelocity | Macroscopic velocity squared |
[in] | velocity | Macroscopic velocity |
Definition at line 561 of file lbsolverdxqy.h.
|
inline |
This uses the basic transport equilibrium model
[in] | cellId | Cell id in which the equilibrium is set |
[in] | C | Macroscopic concentration |
[in] | velocity | Macroscopic velocity |
Definition at line 607 of file lbsolverdxqy.h.
|
inline |
This uses the basic transport equilibrium model
Use this version if the squaredVelocity is already precomputed
[in] | cellId | Cell id in which the equilibrium is set |
[in] | C | Macroscopic concentration |
[in] | squaredVelocity | Macroscopic velocity squared |
[in] | velocity | Macroscopic velocity |
Definition at line 638 of file lbsolverdxqy.h.
|
inlineconstexpr |
Definition at line 194 of file lbsolverdxqy.h.
void LbSolverDxQy< nDim, nDist, SysEqn >::updateMacroscopicVariables |
Definition at line 4730 of file lbsolverdxqy.cpp.
|
overridevirtual |
Definition at line 434 of file lbsolverdxqy.cpp.
void LbSolverDxQy< nDim, nDist, SysEqn >::updateVariablesFromOldDist_ |
Definition at line 383 of file lbsolverdxqy.cpp.
|
overridevirtual |
Definition at line 439 of file lbsolverdxqy.cpp.
|
override |
Definition at line 4689 of file lbsolverdxqy.cpp.
|
virtual |
apply volumeForces to the oldDistributions. Should be called after propagation.
Definition at line 456 of file lbsolverdxqy.cpp.
|
friend |
Definition at line 192 of file lbsolverdxqy.h.
|
friend |
Definition at line 183 of file lbsolverdxqy.h.
Definition at line 189 of file lbsolverdxqy.h.
|
friend |
Definition at line 186 of file lbsolverdxqy.h.
|
private |
Definition at line 354 of file lbsolverdxqy.h.
|
private |
Definition at line 354 of file lbsolverdxqy.h.
|
private |
Definition at line 354 of file lbsolverdxqy.h.
|
private |
Definition at line 354 of file lbsolverdxqy.h.
std::uniform_real_distribution LbSolverDxQy< nDim, nDist, SysEqn >::distrib {0.0, 1.0} |
Definition at line 323 of file lbsolverdxqy.h.
|
protected |
Definition at line 332 of file lbsolverdxqy.h.
|
protected |
Definition at line 339 of file lbsolverdxqy.h.
|
protected |
Definition at line 334 of file lbsolverdxqy.h.
|
staticconstexpr |
Definition at line 180 of file lbsolverdxqy.h.
|
private |
Definition at line 351 of file lbsolverdxqy.h.
|
protected |
Definition at line 333 of file lbsolverdxqy.h.
const SysEqn LbSolverDxQy< nDim, nDist, SysEqn >::m_sysEqn {} |
Definition at line 31 of file lbsolverdxqy.h.
std::mt19937 LbSolverDxQy< nDim, nDist, SysEqn >::randNumGen |
Definition at line 322 of file lbsolverdxqy.h.