5 #ifndef _SIMPLE_PHYSICS_SOLVER_HPP_
6 #define _SIMPLE_PHYSICS_SOLVER_HPP_
28 double external_e_field_matrix[3][3];
29 double b_field_matrix[3][3];
32 const double epsilon =
double(-1.0),
const double sigma =
double(0.1));
38 const size_t num_particles,
const double t,
44 const size_t num_particles,
const double t,
46 double* exyz,
double* phis);
49 void evaluate_e_field(
const double* positions,
const double* charges,
const double* masses,
50 const size_t num_particles,
const double t,
56 double* b_field_vector);
59 void evaluate_b_field(
const double* velocities,
const double* masses,
const double* charges,
60 const size_t num_particles,
const double t,
65 double compute_energy(
const double* positions,
const double* velocities,
const double* masses,
66 const double* charges,
67 const size_t num_particles,
const double t,
75 inline double scalar_prod(
const double first[
DIM],
const double second[DIM]);
77 inline void scale_mat_mul_vec(
const double mat[
DIM][
DIM],
const double vec[DIM],
const double factor,
double prod[DIM]);
void evaluate_external_e_field(const double *positions, const double *charges, const double *masses, const size_t num_particles, const double t, const SimplePhysicsSolverConfig *config, double *forces)
void evaluate_internal_e_field(const double *positions, const double *charges, const double *masses, const size_t num_particles, const double t, const SimplePhysicsSolverConfig *config, double *exyz, double *phis)
double scalar_prod(const double first[DIM], const double second[DIM])
void cross_prod(const double first[DIM], const double second[DIM], double cross_prod[DIM])
void get_b_field_vector(const SimplePhysicsSolverConfig *config, double *b_field_vector)
void evaluate_b_field(const double *velocities, const double *charges, const double *masses, const size_t num_particles, const double t, const SimplePhysicsSolverConfig *config, double *forces)
void scale_mat_mul_vec(const double mat[DIM][DIM], const double vec[DIM], const double factor, double prod[DIM])
double compute_energy(const double *positions, const double *velocities, const double *charges, const double *masses, const size_t num_particles, const double t, const SimplePhysicsSolverConfig *config)
void evaluate_e_field(const double *positions, const double *charges, const double *masses, const size_t num_particles, const double t, const SimplePhysicsSolverConfig *config, double *forces)
void print_vec(const double vec[DIM])