+ int total_sched;
+ int *runs;
+ double *tau;
+ int (*hook)(void *moldyn,void *hook);
+ void *hook_params;
+} t_moldyn_schedule;
+
+/* moldyn main structure */
+typedef struct s_moldyn {
+ int count; /* total amount of atoms */
+ t_atom *atom; /* pointer to the atoms */
+
+ t_3dvec dim; /* dimensions of the simulation volume */
+ double volume; /* volume of sim cell (dim.x*dim.y*dim.z) */
+
+ /* potential force function and parameter pointers */
+ int (*func1b)(struct s_moldyn *moldyn,t_atom *ai);
+ void *pot1b_params;
+ int (*func2b)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+ int (*func2b_post)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+ void *pot2b_params;
+ int (*func3b)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,t_atom *ak,
+ u8 bck);
+ void *pot3b_params;
+ //int (*potential_force_function)(struct s_moldyn *moldyn);
+
+ double cutoff; /* cutoff radius */
+ double cutoff_square; /* square of the cutoff radius */
+ double nnd; /* nearest neighbour distance (optional) */
+
+ t_linkcell lc; /* linked cell list interface */
+
+ double t_ref; /* reference temperature */
+ double t; /* actual temperature */
+
+ double p_ref; /* reference pressure */
+ double p; /* actual pressure */
+
+ /* pressure and temperature control (velocity/volume scaling) */
+ /* (t_tc in units of tau, p_tc in units of tau * isoth. compressib.) */
+ unsigned char pt_scale; /* type of p and t scaling */
+ double t_tc; /* t berendsen control time constant */
+ double p_tc; /* p berendsen control time constant */
+
+ /* simulation schedule */
+ t_moldyn_schedule schedule;
+ int current; /* current position in schedule */
+
+ /* integration function pointer */