- /* calculation of g(r) */
- do {
- itom=lc->subcell[i].current->data;
-// GO ON HERE ...
- } while(list_next_f(this)!=L_NO_NEXT_ELEMENT););
+ /* brand of atom i */
+ ibrand=itom[i].brand;
+
+ for(j=0;j<27;j++) {
+
+ bc=(j<lc->dnlc)?0:1;
+
+#ifdef STATIC_LISTS
+ p=0;
+
+ while(neighbour[j][p]!=0) {
+
+ jtom=&(moldyn->atom[neighbour[j][p]]);
+ p++;
+#else
+ this=&(neighbour[j]);
+ list_reset_f(this);
+
+ if(this->start==NULL)
+ continue;
+
+ do {
+
+ jtom=this->current->data;
+#endif
+
+ if(jtom==&(itom[i]))
+ continue;
+
+ /* only count pairs once */
+ if(itom[i].tag>jtom->tag)
+ continue;
+
+ /*
+ * pair correlation calc
+ */
+
+ /* distance */
+ v3_sub(&dist,&(jtom->r),&(itom[i].r));
+ if(bc) check_per_bound(moldyn,&dist);
+ d=v3_absolute_square(&dist);
+
+ /* ignore if greater cutoff */
+ if(d>moldyn->cutoff_square)
+ continue;
+
+ /* fill the slots */
+ d=sqrt(d);
+ s=(int)(d/dr);
+
+ if(ibrand!=jtom->brand) {
+ /* mixed */
+ stat[s]+=1;
+ }
+ else {
+ /* type a - type a bonds */
+ if(ibrand==0)
+ stat[s+slots]+=1;
+ else
+ /* type b - type b bonds */
+ stat[s+o]+=1;
+ }
+
+#ifdef STATIC_LISTS
+ }
+#else
+ } while(list_next_f(this)!=L_NO_NEXT_ELEMENT);
+#endif
+ }
+ }