double cutoff; /* cutoff radius */
double cutoff_square; /* square of the cutoff radius */
+ double nnd; /* nearest neighbour distance (optional) */
- t_linkcell lc; /* linked cell method */
+ t_linkcell lc; /* linked cell list interface */
double t; /* temperature */
int mfd; /* fd for momentum log */
unsigned int vwrite; /* how often to visualize atom information */
char vfb[64]; /* visualization file name base */
- void *visual; /* pointer (hack!) */
+ //void *visual; /* pointer (hack!) */
unsigned int swrite; /* how often to create a save file */
char sfb[64]; /* visualization file name base */
t_random random; /* random interface */
} t_moldyn;
-#define MOLDYN_LVSTAT_TOTAL_E 0x01
-#define MOLDYN_LVSTAT_TOTAL_M 0x02
-#define MOLDYN_LVSTAT_SAVE 0x04
-#define MOLDYN_LVSTAT_VISUAL 0x08
-#define MOLDYN_LVSTAT_INITIALIZED 0x10
-
#define MOLDYN_STAT_PBX 0x08 /* periodic boudaries in x */
#define MOLDYN_STAT_PBY 0x10 /* y */
#define MOLDYN_STAT_PBZ 0x20 /* and z direction */
-#define MOLDYN_1BP 0x00
-#define MOLDYN_2BP 0x01
-#define MOLDYN_3BP 0x02
+#define MOLDYN_1BP 0x00 /* care about single */
+#define MOLDYN_2BP 0x01 /* 2 body */
+#define MOLDYN_3BP 0x02 /* and 3 body particle pots */
+
+#define VSCALE_INIT_EQUI 0x00 /* initial, eq positions */
+#define VSCALE_BERENDSEN 0x01 /* berendsen control */
/*
#define MOLDYN_CUTOFF 1.0e-9
#define MOLDYN_RUNS 1000000
+#define MOLDYN_CRITICAL_EST_TEMP 5.0
+
#define MOLDYN_INTEGRATE_VERLET 0x00
#define MOLDYN_INTEGRATE_DEFAULT MOLDYN_INTEGRATE_VERLET
#define K_BOLTZMANN 1.3807e-27 /* Nm/K */
#define AMU 1.660540e-27 /* kg */
+#define EV 1.60217733e-19 /* Nm */
#define FCC 0x01
#define DIAMOND 0x02
#define LJ_SIGMA_SI ((0.25*sqrt(3.0)*LC_SI)/1.122462) /* m */
#define LJ_EPSILON_SI (2.1678*1.60e-19) /* Nm */
+#define TM_R_SI 2.7e-10 /* m */
+#define TM_S_SI 3.0e-10 /* m */
+#define TM_A_SI (1830.8*EV) /* Nm */
+#define TM_B_SI (471.18*EV) /* Nm */
+#define TM_LAMBDA_SI 2.4799e10 /* 1/m */
+#define TM_MU_SI 1.7322e10 /* 1/m */
+#define TM_BETA_SI 1.1000e-6
+#define TM_N_SI 0.78734
+#define TM_C_SI 1.0039e5
+#define TM_D_SI 1.62170
+#define TM_H_SI (-0.59825)
+
+#define TM_R_C 1.8e-10 /* m */
+#define TM_S_C 2.1e-10 /* m */
+#define TM_A_C (1393.6*EV) /* Nm */
+#define TM_B_C (346.7*EV) /* Nm */
+#define TM_LAMBDA_C 3.4879e10 /* 1/m */
+#define TM_MU_C 2.2119e10 /* 1/m */
+#define TM_BETA_C 1.5724e-7
+#define TM_N_C 0.72751
+#define TM_C_C 3.8049e4
+#define TM_D_C 4.384
+#define TM_H_C (-0.57058)
+
+#define TM_CHI_SIC 0.9776
+
/*
*
int set_cutoff(t_moldyn *moldyn,double cutoff);
int set_temperature(t_moldyn *moldyn,double t);
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 create_lattice(t_moldyn *moldyn,u8 type,double lc,int element,double mass,
u8 attr,u8 bnum,int a,int b,int c);
int add_atom(t_moldyn *moldyn,int element,double mass,u8 bnum,u8 attr,
- t_3dvec r,t_3dvec v);
+ t_3dvec *r,t_3dvec *v);
int destroy_atoms(t_moldyn *moldyn);
int thermal_init(t_moldyn *moldyn);
-int scale_velocity(t_moldyn *moldyn);
+int scale_velocity(t_moldyn *moldyn,u8 type);
double get_e_kin(t_moldyn *moldyn);
double get_e_pot(t_moldyn *moldyn);
double get_total_energy(t_moldyn *moldyn);
t_3dvec get_total_p(t_moldyn *moldyn);
-double estimate_time_step(t_moldyn *moldyn,double nn_dist,double t);
+double estimate_time_step(t_moldyn *moldyn,double nn_dist);
int link_cell_init(t_moldyn *moldyn);
int link_cell_update(t_moldyn *moldyn);
int check_per_bound(t_moldyn *moldyn,t_3dvec *a);
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_3bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);