/** @file typedefs.hpp
 *
 *  @author Cory Alexander Balaton (coryab)
 *  @author Janita Ovidie Sandtrøen Willumsen (janitaws)
 *
 *  @version 1.0
 *
 *  @brief Useful typedefs for cleaner code.
 *
 *  @details These typedefs make the code more readable and easy to follow
 *  along.
 *
 *  @bug No known bugs
 * */
#ifndef __TYPEDEFS__
#define __TYPEDEFS__

#include <armadillo>
#include <vector>

/** @brief Typedef for a fixed 3d arma vector.
 * */
typedef arma::vec::fixed<3> vec3;

/** @brief Typedef for the column of the result vector from simulating
 *  particles.
 * */
typedef std::vector<vec3> sim_cols;

/** @brief Typedef for the row of the result vector from simulating particles.
 * */
typedef std::vector<vec3> sim_rows;

/** @brief Typedef for the result of the simulate method.
 * */
typedef std::vector<sim_cols> sim_arr;

/** @brief Typedef for PenningTrap::simulation return value.
 * */
typedef struct simulation {
    sim_arr r_vecs;
    sim_arr v_vecs;
} simulation_t;

#endif
