int set_potential1b(t_moldyn *moldyn,pf_func1b func,void *params) {
moldyn->func1b=func;
- moldyn->pot1b_params=params;
return 0;
}
int set_potential2b(t_moldyn *moldyn,pf_func2b func,void *params) {
moldyn->func2b=func;
- moldyn->pot2b_params=params;
return 0;
}
int set_potential2b_post(t_moldyn *moldyn,pf_func2b_post func,void *params) {
moldyn->func2b_post=func;
- moldyn->pot2b_params=params;
return 0;
}
int set_potential3b(t_moldyn *moldyn,pf_func3b func,void *params) {
moldyn->func3b=func;
- moldyn->pot3b_params=params;
+
+ return 0;
+}
+
+int set_potential_params(t_moldyn *moldyn,void *params) {
+
+ moldyn->pot_params=params;
return 0;
}
* virial calculation
*/
-inline 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) {
+int virial_calc(t_atom *a,t_3dvec *f,t_3dvec *d) {
a->virial.xx+=f->x*d->x;
a->virial.yy+=f->y*d->y;
* periodic boundayr checking
*/
-inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a) {
+//inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a) {
+int check_per_bound(t_moldyn *moldyn,t_3dvec *a) {
double x,y,z;
t_3dvec *dim;
return 0;
}
-
-/*
- * example potentials
- */
-
-/* harmonic oscillator potential and force */
-
-int harmonic_oscillator(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc) {
-
- t_ho_params *params;
- t_3dvec force,distance;
- double d,f;
- double sc,equi_dist;
-
- params=moldyn->pot2b_params;
- sc=params->spring_constant;
- equi_dist=params->equilibrium_distance;
-
- if(ai<aj) return 0;
-
- v3_sub(&distance,&(aj->r),&(ai->r));
-
- if(bc) check_per_bound(moldyn,&distance);
- d=v3_norm(&distance);
- if(d<=moldyn->cutoff) {
- moldyn->energy+=(0.5*sc*(d-equi_dist)*(d-equi_dist));
- /* f = -grad E; grad r_ij = -1 1/r_ij distance */
- f=sc*(1.0-equi_dist/d);
- v3_scale(&force,&distance,f);
- v3_add(&(ai->f),&(ai->f),&force);
- virial_calc(ai,&force,&distance);
- virial_calc(aj,&force,&distance); /* f and d signe switched */
- v3_scale(&force,&distance,-f);
- v3_add(&(aj->f),&(aj->f),&force);
- }
-
- return 0;
-}
-
/*
* debugging / critical check functions
*/