23namespace weighting_function
29 const real_t atomisticRadius_;
30 const real_t atomisticRadiusSqr_;
31 const real_t hybridRegionDiameter_;
32 const real_t coarseRadiusSqr_;
36 KOKKOS_INLINE_FUNCTION
45 real_t dx[3] = {x - center_[0], y - center_[1], z - center_[2]};
46 auto dxSqr = dx[0] * dx[0] + dx[1] * dx[1] + dx[2] * dx[2];
48 if (dxSqr < atomisticRadiusSqr_)
56 if (dxSqr > coarseRadiusSqr_)
65 const auto r = std::sqrt(dxSqr);
66 const real_t arg =
pi / (2_r * hybridRegionDiameter_) * (r - atomisticRadius_);
67 auto base = std::cos(arg);
70 auto factor = -
pi / (2_r * hybridRegionDiameter_) *
real_c(exponent_) * std::sin(arg) *
72 gradLambdaX = factor * dx[0];
73 gradLambdaY = factor * dx[1];
74 gradLambdaZ = factor * dx[2];
77 KOKKOS_INLINE_FUNCTION
87 const real_t atomisticRadius,
88 const real_t hybridRegionDiameter,
91 atomisticRadius_(atomisticRadius),
92 hybridRegionDiameter_(hybridRegionDiameter),
94 atomisticRadiusSqr_(atomisticRadius * atomisticRadius),
95 coarseRadiusSqr_((atomisticRadius + hybridRegionDiameter) *
96 (atomisticRadius + hybridRegionDiameter))
Definition Spherical.hpp:26
KOKKOS_INLINE_FUNCTION real_t operator()(const real_t x, const real_t y, const real_t z) const
Definition Spherical.hpp:78
KOKKOS_INLINE_FUNCTION void operator()(const real_t x, const real_t y, const real_t z, real_t &lambda, real_t &gradLambdaX, real_t &gradLambdaY, real_t &gradLambdaZ) const
Definition Spherical.hpp:37
Spherical(const Point3D ¢er, const real_t atomisticRadius, const real_t hybridRegionDiameter, const int exponent)
Definition Spherical.hpp:86
KOKKOS_INLINE_FUNCTION real_t powInt(const real_t &x, const idx_t n)
Definition math.hpp:31
Definition BerendsenBarostat.cpp:18
Kokkos::Array< real_t, 3 > Point3D
Definition datatypes.hpp:100
constexpr auto pi
Definition constants.hpp:26
double real_t
Definition datatypes.hpp:99
KOKKOS_INLINE_FUNCTION constexpr real_t real_c(T t)
Definition datatypes.hpp:114