You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the LB particle coupling code, real particles are folded onto the local domain to eliminate edge cases, such as when a particle is located at pos=[-1e-30,-1e-30,-1e-30] in unfolded coordinates. Here is the corresponding code:
In addition, the inertialess tracers code converts positions from MD units to LB units, even though add_md_force() expects positions in MD units since it calls LB::Solver::add_force_density(), which converts positions from MD units to LB units:
if (not ptr->add_force_at_pos(pos / ptr->get_agrid(), force_density)) {
throwstd::runtime_error("Cannot apply force to LB");
}
When using agrid values other than unity, inertialess tracers are converted twice. The confusion is probably due to the fact that LB::Solver methods don't convert all quantities. For example, forces aren't converted, but positions and velocities are.
The virtual_sites_tracers.py test fails when agrid=0.5 in virtual_sites_tracers_common.py.
This bug most likely affects all waLBerla versions of ESPResSo. Here is the same bug in the original commit that introduced waLBerla on the python branch:
In the LB particle coupling code, real particles are folded onto the local domain to eliminate edge cases, such as when a particle is located at
pos=[-1e-30,-1e-30,-1e-30]
in unfolded coordinates. Here is the corresponding code:espresso/src/core/lb/particle_coupling.cpp
Lines 179 to 180 in 4285bb6
The LB inertialess tracers do not take this precaution:
espresso/src/core/virtual_sites/lb_tracers.cpp
Lines 63 to 65 in 4285bb6
In addition, the inertialess tracers code converts positions from MD units to LB units, even though
add_md_force()
expects positions in MD units since it callsLB::Solver::add_force_density()
, which converts positions from MD units to LB units:espresso/src/core/lb/Solver.cpp
Lines 198 to 200 in 4285bb6
When using
agrid
values other than unity, inertialess tracers are converted twice. The confusion is probably due to the fact thatLB::Solver
methods don't convert all quantities. For example, forces aren't converted, but positions and velocities are.Here is a MWE:
Output:
Expected output:
The
virtual_sites_tracers.py
test fails whenagrid=0.5
invirtual_sites_tracers_common.py
.This bug most likely affects all waLBerla versions of ESPResSo. Here is the same bug in the original commit that introduced waLBerla on the python branch:
espresso/src/core/virtual_sites/VirtualSitesInertialessTracers.cpp
Lines 74 to 76 in 3fd1709
The text was updated successfully, but these errors were encountered: