6#include <deal.II/base/point.h>
13#include <prismspf/config.h>
22template <
unsigned int dim,
typename real>
24distance(
const dealii::Point<dim, real> &point1,
25 const dealii::Point<dim, real> &point2,
30 return point1.distance(point2);
33 real dist = real(0.0);
34 for (
unsigned int d = 0; d < dim; ++d)
36 real delta = point2[d] - point1[d];
39 const real length = rectangular_mesh.
size[d];
40 const real half_length = length / 2.0;
41 delta =
pmod(delta - half_length, length) - half_length;
43 dist += delta * delta;
45 return std::sqrt(dist);
48PRISMS_PF_END_NAMESPACE
Definition conditional_ostreams.cc:20
PRISMS_PF_BEGIN_NAMESPACE real distance(const dealii::Point< dim, real > &point1, const dealii::Point< dim, real > &point2, const RectangularMesh< dim > &rectangular_mesh)
Calculate the distance between two points considering periodic boundaries. Note: templates must be pr...
Definition periodic_distance.h:24
Class for rectangular mesh parameters.
Definition spatial_discretization.h:43
dealii::Tensor< 1, dim, double > size
Domain extents in each cartesian direction.
Definition spatial_discretization.h:84
std::set< unsigned int > periodic_directions
Which directions have periodic conditions.
Definition spatial_discretization.h:99
DEAL_II_ALWAYS_INLINE Number pmod(const Number &value, const Number &modulus)
Positive moldulo (remainder) returns the normal remainder. (c++ fmod is defined abnormally for negati...
Definition utilities.h:142