/* 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;
+ void *pot_params;
//int (*potential_force_function)(struct s_moldyn *moldyn);
double cutoff; /* cutoff radius */
double debug; /* debugging stuff, ignore */
} t_moldyn;
+/*
+ *
+ * defines
+ *
+ */
+
#define MOLDYN_STAT_PBX 0x01 /* periodic boudaries in x */
#define MOLDYN_STAT_PBY 0x02 /* y */
#define MOLDYN_STAT_PBZ 0x04 /* and z direction */
#define P_SCALE_BERENDSEN 0x04 /* berendsen p control */
#define P_SCALE_DIRECT 0x08 /* direct p control */
-/*
- *
- * potential parameter structures
- *
- */
-
-/*
- * harmonic oscillator potential parameter structure
- */
-
-typedef struct s_ho_params {
- double spring_constant;
- double equilibrium_distance;
-} t_ho_params;
-
-/*
- * lennard jones potential parameter structure
- */
-
-typedef struct s_lj_params {
- double sigma6;
- double sigma12;
- double epsilon4;
- double uc;
-} t_lj_params;
-
-/*
- * tersoff
- */
-
-/* tersoff exchange structure to exchange 2bp and 3bp calculated values */
-typedef struct s_tersoff_exchange {
- double f_c,df_c;
- double f_a,df_a;
-
- t_3dvec dist_ij;
- double d_ij2;
- double d_ij;
-
- double chi;
-
- double *beta_i;
- double *beta_j;
- double *n_i;
- double *n_j;
- double *c_i;
- double *c_j;
- double *d_i;
- double *d_j;
- double *h_i;
- double *h_j;
-
- double ci2;
- double cj2;
- double di2;
- double dj2;
- double ci2di2;
- double cj2dj2;
- double betaini;
- double betajnj;
-
- u8 run3bp;
- u8 run2bp_post;
- u8 d_ij_between_rs;
-
- double zeta_ij;
- double zeta_ji;
- t_3dvec dzeta_ij;
- t_3dvec dzeta_ji;
-} t_tersoff_exchange;
-
-/* tersoff mult (2!) potential parameters */
-typedef struct s_tersoff_mult_params {
- double S[2]; /* tersoff cutoff radii */
- double S2[2]; /* tersoff cutoff radii squared */
- double R[2]; /* tersoff cutoff radii */
- double Smixed; /* mixed S radius */
- double S2mixed; /* mixed S radius squared */
- double Rmixed; /* mixed R radius */
- double A[2]; /* factor of tersoff attractive part */
- double B[2]; /* factor of tersoff repulsive part */
- double Amixed; /* mixed A factor */
- double Bmixed; /* mixed B factor */
- double lambda[2]; /* tersoff lambda */
- double lambda_m; /* mixed lambda */
- double mu[2]; /* tersoff mu */
- double mu_m; /* mixed mu */
-
- double chi;
-
- double beta[2];
- double n[2];
- double c[2];
- double d[2];
- double h[2];
-
- t_tersoff_exchange exchange; /* exchange between 2bp and 3bp calc */
-} t_tersoff_mult_params;
-
-
-
-/*
- *
- * defines
- *
- */
-
-#define ONE_THIRD (1.0/3.0)
-
/*
* default values
*
#define TRUE 1
#define FALSE 0
+#define VERBOSE 1
+#define QUIET 0
+
/*
*
* phsical values / constants
*
*/
+#define ONE_THIRD (1.0/3.0)
+
#define K_BOLTZMANN (1.380650524e-23*METER*NEWTON) /* NA/K */
#define EV (1.6021765314e-19*METER*NEWTON) /* NA */
#define LC_SI (0.543105e-9*METER) /* A */
#define M_SI 28.08553 /* amu */
-//#define LJ_SIGMA_SI ((0.25*sqrt(3.0)*LC_SI)/1.122462) /* A */
-#define LJ_SIGMA_SI (LC_SI/1.122462) /* A */
+#define LJ_SIGMA_SI ((0.25*sqrt(3.0)*LC_SI)/1.122462) /* A */
+//#define LJ_SIGMA_SI (LC_SI/1.122462) /* A */
+//#define LJ_SIGMA_SI (0.5*sqrt(2.0)*LC_SI/1.122462) /* A */
#define LJ_EPSILON_SI (2.1678*EV) /* NA */
#define TM_R_SI (2.7e-10*METER) /* A */
int set_dim(t_moldyn *moldyn,double x,double y,double z,u8 visualize);
int set_nn_dist(t_moldyn *moldyn,double dist);
int set_pbc(t_moldyn *moldyn,u8 x,u8 y,u8 z);
-int set_potential1b(t_moldyn *moldyn,pf_func1b func,void *params);
-int set_potential2b(t_moldyn *moldyn,pf_func2b func,void *params);
-int set_potential2b_post(t_moldyn *moldyn,pf_func2b_post func,void *params);
-int set_potential3b(t_moldyn *moldyn,pf_func3b func,void *params);
+int set_potential1b(t_moldyn *moldyn,pf_func1b func);
+int set_potential2b(t_moldyn *moldyn,pf_func2b func);
+int set_potential2b_post(t_moldyn *moldyn,pf_func2b_post func);
+int set_potential3b(t_moldyn *moldyn,pf_func3b func);
+int set_potential_params(t_moldyn *moldyn,void *params);
int moldyn_set_log_dir(t_moldyn *moldyn,char *dir);
int moldyn_set_report(t_moldyn *moldyn,char *author,char *title);
double estimate_time_step(t_moldyn *moldyn,double nn_dist);
-int link_cell_init(t_moldyn *moldyn);
+int link_cell_init(t_moldyn *moldyn,u8 vol);
int link_cell_update(t_moldyn *moldyn);
int link_cell_neighbour_index(t_moldyn *moldyn,int i,int j,int k,t_list *cell);
int link_cell_shutdown(t_moldyn *moldyn);
int velocity_verlet(t_moldyn *moldyn);
int potential_force_calc(t_moldyn *moldyn);
-inline int virial_calc(t_atom *a,t_3dvec *f,t_3dvec *d)
- __attribute__((always_inline));
-inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a)
- __attribute__((always_inline));
-int harmonic_oscillator(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-int lennard_jones(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-int tersoff_mult_complete_params(t_tersoff_mult_params *p);
-int tersoff_mult_1bp(t_moldyn *moldyn,t_atom *ai);
-int tersoff_mult_2bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-int tersoff_mult_post_2bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-int tersoff_mult_3bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
+int virial_calc(t_atom *a,t_3dvec *f,t_3dvec *d);
+//inline int virial_calc(t_atom *a,t_3dvec *f,t_3dvec *d)
+// __attribute__((always_inline));
+int check_per_bound(t_moldyn *moldyn,t_3dvec *a);
+//inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a)
+// __attribute__((always_inline));
int moldyn_bc_check(t_moldyn *moldyn);