X-Git-Url: https://hackdaworld.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=moldyn.h;h=c910d7f13de6b26ccdcb1f6d61927184a68d3dc4;hb=fb951c04e522e4637618bf622fc67194c2a7b15f;hp=c5cc064cedc85c1cd417b8b65a7f20fb74c44311;hpb=15b4727e1137600f8f46af027aefd2b5c7a56420;p=physik%2Fposic.git diff --git a/moldyn.h b/moldyn.h index c5cc064..c910d7f 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; @@ -105,7 +105,9 @@ typedef struct s_moldyn { double t; /* actual temperature */ double p_ref; /* reference pressure */ - double p; /* actual pressure */ + double p; /* actual pressure (computed by virial) */ + t_3dvec tp; /* thermodynamic pressure dU/dV */ + double dv; /* dV for thermodynamic pressure calc */ /* pressure and temperature control (velocity/volume scaling) */ /* (t_tc in units of tau, p_tc in units of tau * isoth. compressib.) */ @@ -407,8 +409,11 @@ 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 thermodynamic_pressure_calc(t_moldyn *moldyn); double get_pressure(t_moldyn *moldyn); int scale_volume(t_moldyn *moldyn); +int scale_dim(t_moldyn *moldyn,double scale,u8 x,u8 y,u8 z); +int scale_atoms(t_moldyn *moldyn,double scale,u8 x,u8 y,u8 z); double get_e_kin(t_moldyn *moldyn); double update_e_kin(t_moldyn *moldyn); @@ -422,8 +427,10 @@ 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);