33std::tuple<Utils::Vector3d, Utils::Vector3d, Utils::Vector3d, Utils::Vector3d>
50 auto const Ai =
n1.norm();
53 auto const Aj =
n2.norm();
57 auto const sc = std::clamp(
n1 *
n2, -1., 1.);
62 auto const theta = std::acos(
sc) * std::copysign(1.,
desc);
67 auto const v1 = (
n2 -
sc *
n1).normalize();
68 auto const v2 = (
n1 -
sc *
n2).normalize();
111 auto const sc = std::clamp(
n1 *
n2, -1., 1.);
Vector implementation and trait types for boost qvm interoperability.
ESPRESSO_ATTR_ALWAYS_INLINE Utils::Vector3< T > get_mi_vector(Utils::Vector3< T > const &a, Utils::Vector3< T > const &b) const
Get the minimum-image vector between two coordinates.
Describes a cell structure / cell system.
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
__device__ void vector_product(float const *a, float const *b, float *out)
Utils::Vector3d get_ibm_particle_position(CellStructure const &cell_structure, int pid)
Returns the position of a given particle.
std::tuple< int, int, int, int > p_ids
Particle ids.
double theta0
Reference angle.
std::tuple< Utils::Vector3d, Utils::Vector3d, Utils::Vector3d, Utils::Vector3d > calc_forces(BoxGeometry const &box_geo, Utils::Vector3d const &pos1, Utils::Vector3d const &pos2, Utils::Vector3d const &pos3, Utils::Vector3d const &pos4) const
Calculate the forces The equations can be found in Appendix C of .
double kb
Bare bending modulus.
void initialize(BoxGeometry const &box_geo, CellStructure const &cell_structure)
Set the IBM Tribend parameters.