X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=potentials%2Falbe_fast.c;h=0db5f66ea3c1596a3115dc62bbf862947e9d18b0;hb=23cc92be2a2ac2eed0fd38fd0c3e59189821bf41;hp=952f1fe41d4dee5e69c816bee96f9906d44228de;hpb=4b18a09781c27d786c32a5ada98929c4c2e38f4b;p=physik%2Fposic.git diff --git a/potentials/albe_fast.c b/potentials/albe_fast.c index 952f1fe..0db5f66 100644 --- a/potentials/albe_fast.c +++ b/potentials/albe_fast.c @@ -23,7 +23,7 @@ #ifdef PTHREADS #include -#define MAX_THREADS 4 +#define MAX_THREADS 2 #endif #include "../moldyn.h" @@ -39,12 +39,12 @@ extern pthread_mutex_t emutex; * virial calculation */ -#define albe_v_calc(a,f,d) a->virial.xx+=f->x*d->x; \ - a->virial.yy+=f->y*d->y; \ - a->virial.zz+=f->z*d->z; \ - a->virial.xy+=f->x*d->y; \ - a->virial.xz+=f->x*d->z; \ - a->virial.yz+=f->y*d->z +#define albe_v_calc(a,f,d) (a)->virial.xx+=(f)->x*(d)->x; \ + (a)->virial.yy+=(f)->y*(d)->y; \ + (a)->virial.zz+=(f)->z*(d)->z; \ + (a)->virial.xy+=(f)->x*(d)->y; \ + (a)->virial.xz+=(f)->x*(d)->z; \ + (a)->virial.yz+=(f)->y*(d)->z #ifndef PTHREADS @@ -461,7 +461,8 @@ int albe_potential_force_calc(t_moldyn *moldyn) { v3_add(&(jtom->f),&(jtom->f),&force); /* virial */ - virial_calc(ai,&force,&(dist_ij)); + albe_v_calc(ai,&force,&(dist_ij)); + //virial_calc(ai,&force,&(dist_ij)); #ifdef DEBUG if(moldyn->time>DSTART&&moldyn->timetime>DSTART&&moldyn->timetime>DSTART&&moldyn->timetime>DSTART&&moldyn->timepot_params; + /* get energy, force and virial for atoms */ - /* get energy, force and virial of every atom */ - - /* first (and only) loop over atoms i */ - for(i=0;istart;iend;i++) { if(!(itom[i].attr&ATOM_ATTR_3BP)) - continue; + return 0; link_cell_neighbour_index(moldyn, (itom[i].r.x+moldyn->dim.x/2)/lc->x, @@ -1096,7 +1097,8 @@ void *potential_force_thread(void *ptr) { /* virial */ pthread_mutex_lock(&(amutex[ai->tag])); - virial_calc(ai,&force,&(dist_ij)); + albe_v_calc(ai,&force,&(dist_ij)); + //virial_calc(ai,&force,&(dist_ij)); pthread_mutex_unlock(&(amutex[ai->tag])); #ifdef DEBUG @@ -1238,7 +1240,8 @@ if(moldyn->time>DSTART&&moldyn->timetag])); - virial_calc(ai,&force,&dist_ij); + albe_v_calc(ai,&force,&dist_ij); + //virial_calc(ai,&force,&dist_ij); /* force contribution to atom i */ v3_scale(&force,&force,-1.0); @@ -1270,7 +1273,8 @@ if(moldyn->time>DSTART&&moldyn->timetag])); - virial_calc(ai,&force,&dist_ik); + albe_v_calc(ai,&force,&dist_ik); + //virial_calc(ai,&force,&dist_ik); /* force contribution to atom i */ v3_scale(&force,&force,-1.0); @@ -1302,6 +1306,8 @@ if(moldyn->time>DSTART&&moldyn->timetime>DSTART&&moldyn->timef.x,itom->f.y,itom->f.z); if(moldyn->time>DSTART&&moldyn->time %d\n",i); + /* join threads */ + for(j=0;j