86 using V =
typename CELLS::template value_t<names::NavierStokes>::value_t;
88 auto particle = cells.template get<names::Points>();
89 auto f_cell = cells.template get<names::NavierStokes>();
90 auto f_physR = f_cell.template getField<descriptors::LOCATION>();
91 auto p_physR = particle.template getField<fields::PHYS_R>();
92 V dx =
parameters.template get<fields::converter::PHYS_DELTA_X>();
94 for (
int d = 0; d < 3; ++d) {
95 rel_lat_min[d] =
static_cast<int>(
util::floor((p_physR[d] - f_physR[d]) / dx - WIDTH / 2.) + 1);
98 for (
int x = rel_lat_min[0]; x < WIDTH + rel_lat_min[0]; ++x) {
99 for (
int y = rel_lat_min[1]; y < WIDTH + rel_lat_min[1]; ++y) {
100 for (
int z = rel_lat_min[2]; z < WIDTH + rel_lat_min[2]; ++z) {
101 auto n_physR = f_cell.neighbor({x, y, z}).
template getField<descriptors::LOCATION>();
102 auto dist = (n_physR - p_physR) / dx;
103 auto f_F = f_cell.neighbor({x,y,z}).
template getField<descriptors::FORCE>();
104 auto p_F = particle.template getField<fields::membrane::FORCE>();
108 f_cell.neighbor({x,y,z}).
template setField<descriptors::FORCE>(f_F + p_F);