X-Git-Url: https://www.hackdaworld.org/gitweb/?a=blobdiff_plain;f=moldyn.h;h=8254568af609f69d171862a7ba9d8023bee8decc;hb=9f6af2cd82a72451741b68ca333f94c6c1d2eec5;hp=dd94b0eaab544d51cadef9ab4303ecc65047b819;hpb=150c5f804a5088a01ef2bb1e934b5e65d10ac23e;p=physik%2Fposic.git diff --git a/moldyn.h b/moldyn.h index dd94b0e..8254568 100644 --- a/moldyn.h +++ b/moldyn.h @@ -71,7 +71,7 @@ typedef struct s_moldyn_schedule { int total_sched; int *runs; double *tau; - int (*hook)(void *moldyn,void *hook); + int (*hook)(void *moldyn,void *hook_params); void *hook_params; } t_moldyn_schedule; @@ -82,6 +82,7 @@ typedef struct s_moldyn { t_3dvec dim; /* dimensions of the simulation volume */ double volume; /* volume of sim cell (dim.x*dim.y*dim.z) */ + double vt1,vt2; /* potential force function and parameter pointers */ int (*func1b)(struct s_moldyn *moldyn,t_atom *ai); @@ -183,6 +184,7 @@ typedef struct s_lj_params { double sigma6; double sigma12; double epsilon4; + double uc; } t_lj_params; /* @@ -195,6 +197,7 @@ typedef struct s_tersoff_exchange { double f_a,df_a; t_3dvec dist_ij; + double d_ij2; double d_ij; double chi; @@ -400,11 +403,15 @@ int add_atom(t_moldyn *moldyn,int element,double mass,u8 brand,u8 attr, int destroy_atoms(t_moldyn *moldyn); int thermal_init(t_moldyn *moldyn,u8 equi_init); +double temperature_calc(t_moldyn *moldyn); +double get_temperature(t_moldyn *moldyn); int scale_velocity(t_moldyn *moldyn,u8 equi_init); +double pressure_calc(t_moldyn *moldyn); +double get_pressure(t_moldyn *moldyn); int scale_volume(t_moldyn *moldyn); double get_e_kin(t_moldyn *moldyn); -double get_e_pot(t_moldyn *moldyn); +double update_e_kin(t_moldyn *moldyn); double get_total_energy(t_moldyn *moldyn); t_3dvec get_total_p(t_moldyn *moldyn); @@ -415,16 +422,19 @@ 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); +typedef int (*set_hook)(void *,void *); + int moldyn_add_schedule(t_moldyn *moldyn,int runs,double tau); -int moldyn_set_schedule_hook(t_moldyn *moldyn,void *hook,void *hook_params); +int moldyn_set_schedule_hook(t_moldyn *moldyn,set_hook hook,void *hook_params); int moldyn_integrate(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 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);