1 #ifndef HNBODY_KERNEL_H
2 #define HNBODY_KERNEL_H
104 hnb_vector_t x, hnb_vector_t v,
const double m[],
113 double t, hnb_vector_t x, hnb_vector_t v,
120 double G, c, Msun, dm, J2, J4, J6, obRad, dzH, dzZ, eps, tinit,
121 tH[2], dtH[2], tZ[2], dtZ[2];
122 int nH, nHL, n, fixedH, enc, prune;
123 hnb_vector_t x0, dx0, v0, dv0, x1, dx1, v1, dv1;
124 double *m, *rcapt, *renc, *r2coll, *tcoll;
128 int *id, *imap, *jindex, *smult, *prune_ctrl;
145 hnb_vector_t *tmpvec;
153 double dzODE, *tmpODE;
154 double *deta, *ieta, *dsZ, *E0, *E1, *t, *tt;
155 hnb_vector_t xH, vH, xt, vt, xHtab, vHtab;
156 int iZ0, ntab, maxtab, itmax;
160 hnb_vector_t xh0, xh1, xha, xhb, vh0, vh1, vha, vhb, xa, xb, va, vb;
166 hnb_angmom(
double L[], hnb_vector_t x, hnb_vector_t v,
hnb_data_t *sys),
167 hnb_calcCoord(hnb_vector_t xNew, hnb_vector_t vNew,
172 hnb_util_version(FILE *f,
const char *name,
const char *revision,
174 hnb_print_info(FILE *f,
void (*custom)(FILE *f,
const char *prefix),
178 DLLSPEC
extern const char
179 *hnb_contact(
void), *hnb_version(
void), *
hnb_website(
void);
181 DLLSPEC
extern const int
190 hnb_save(
const char *save,
double key,
hnb_data_t *sys),
191 hnb_restore(
double *key,
const char *save,
hnb_data_t *sys),
194 hnb_energy_t energy,
void (*custom)(FILE *f,
const char *prefix));
200 DLLSPEC
extern const double
205 DLLSPEC
extern double
212 hnb_output(
double *t,
double (**x)[3],
double (**v)[3],
hnb_data_t *sys);
216 *hnb_read(
const char *file),
217 *hnb_init_file(
const char *hnbfile, FILE *logfile),
218 *hnb_init_extra(
const char *hnbfile, FILE *logfile,
hnb_extra_t extra_kick,
222 *hnb_ode_init(
double tinit,
const double xinit[][3],
const double vinit[][3],
223 const double m[],
const int id[],
224 int nH,
int nL,
int nZ,
hnb_LWP_t ltype,
int fixedH,
225 int enc,
const double rcapt[],
double G,
double c,
double Msun,
226 double J2,
double J4,
double J6,
double obRadius,
227 double dt,
double eps,
231 *hnb_init(
double tinit,
const double xinit[][3],
const double vinit[][3],
232 const double m[],
const int id[],
const int jindex[],
const int smult[],
233 int nH,
int nL,
int nZ,
hnb_LWP_t ltype,
int fixedH,
235 const double renc[],
const double rcapt[],
double G,
double c,
double Msun,
236 double J2,
double J4,
double J6,
double obRadius,
237 double dm,
double dzH,
double dzZ,
hnb_integcoord_enum
Symplectic integration scheme variations (bit-mask layout).
Definition: kernel.h:22
void(* hnb_extra_t)(hnb_vector_t, double t, hnb_vector_t, const double m[], int nHL, int n, double dt, const struct hnb_data_struct *sys)
Prototype for extra_kick() and extra_shift() functions.
Definition: kernel.h:99
enum LWP_enum hnb_LWP_t
Choices for LWP perturbations type.
enum hnb_integcoord_enum hnb_integcoord_t
Symplectic integration scheme variations (bit-mask layout).
void hnb_checkpoint(hnb_data_t *sys, const char *file, int halt)
Sets on-demand checkpointing of an integration.
Definition: driver.c:55
int(* hnb_derivs_t)(hnb_vector_t dxdt, hnb_vector_t dvdt, double t, hnb_vector_t x, hnb_vector_t v, const double m[], int nHL, int n, const struct hnb_data_struct *sys)
Prototype for extra_derivs() functions.
Definition: kernel.h:112
struct hnb_data_struct hnb_data_t
Main HNBody system data structure.
DLLSPEC const char * hnb_website(void)
Definition: version.c:41
The MathUtils miscellaneous utilities library.
LWP_enum
Choices for LWP perturbations type.
Definition: kernel.h:86
hnb_integ_enum
Integration scheme choices.
Definition: kernel.h:79
Main HNBody system data structure.
Definition: kernel.h:118
double(* hnb_energy_t)(double t, hnb_vector_t x, hnb_vector_t v, const double m[], int nHL, const struct hnb_data_struct *sys)
Prototype for extra_energy() functions.
Definition: kernel.h:108
void(* hnb_drift_t)(hnb_vector_t dx, hnb_vector_t dv, double t, hnb_vector_t x, hnb_vector_t v, const double m[], int nHL, int n, double dt, const struct hnb_data_struct *sys)
Prototype for extra_drift() functions.
Definition: kernel.h:103
double(* hnb_vector_t)[3]
System particle 3-vector type.
Definition: kernel.h:92
DLLSPEC int hnb_argv_driver(int argc, char *argv[], hnb_extra_t kick, hnb_extra_t shift, hnb_drift_t drift, hnb_derivs_t derivs, hnb_energy_t energy, void(*custom)(FILE *f, const char *prefix))
Performs an integration given a set of command line arguments.
Definition: driver.c:337
enum hnb_integ_enum hnb_integ_t
Integration scheme choices.