88 auto const S1 =
Qd.norm2();
109 S[1] = Utils::dot(
Qd,
Qdd);
151 auto const scale = p.
quat().norm();
189 for (
auto &p : particles) {
Vector implementation and trait types for boost qvm interoperability.
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
T mask(std::unsigned_integral auto mask, T const &t)
Pick elements of a tuple-like by a bit mask.
void convert_initial_torques(const ParticleRange &particles)
Convert torques to the body-fixed frame before the integration loop.
void propagate_omega_quat_particle(Particle &p, double time_step)
See .
void convert_torque_propagate_omega(Particle &p, double time_step)
static void define_Qdd(Particle const &p, Utils::Quaternion< double > &Qd, Utils::Quaternion< double > &Qdd, Utils::Vector3d &S, Utils::Vector3d &Wd)
Calculate the derivatives of the quaternion and angular acceleration for a given particle.
This file contains all subroutines required to process rotational motion.
void convert_torque_to_body_frame_apply_fix(Particle &p)
Struct holding all information for one particle.
auto const & rinertia() const
auto const & quat() const
auto const & rotation() const
bool can_rotate_around(unsigned int const axis) const
auto const & torque() const
auto const & omega() const
Quaternion representation.
static Quaternion< T > identity()
Construct an identity quaternion.