File leapfrog.hpp

template<typename Point, typename NT, typename Polytope, typename func>
struct LeapfrogODESolver

Public Types

typedef std::vector<Point> pts
typedef Eigen::Matrix<NT, Eigen::Dynamic, Eigen::Dynamic> MT
typedef std::vector<Polytope*> bounds
typedef Polytope::VT VT

Public Functions

inline LeapfrogODESolver(NT initial_time, NT step, pts initial_state, func oracle, bounds boundaries, bool adaptive_ = true)
inline void initialize()
inline void disable_adaptive()
inline void enable_adaptive()
inline void step(int k, bool accepted)
inline void print_state()
inline void steps(int num_steps, bool accepted)
inline Point get_state(int index)
inline void set_state(int index, Point p)
inline NT get_eta()
inline void set_eta(NT &eta_)
inline bounds get_bounds()

Public Members

update_parameters _update_parameters
unsigned int dim
std::vector<VT> Ar
std::vector<VT> Av
std::vector<NT> lambda_prev
NT eta
NT eta0
NT t
NT dl = 0.995
func F
bounds Ks
pts xs
pts xs_prev
Point grad_x
MT _AA
std::pair<NT, int> pbpair
unsigned long long num_reflections = 0
unsigned long long num_steps = 0
bool adaptive = true
struct update_parameters

Public Functions

inline update_parameters()

Public Members

int facet_prev
bool hit_ball
double inner_vi_ak
double ball_inner_norm