#include "globals.h" #include "clusters.h" #include "bonds.h" //// START: Clusters routines void Clusters_Get6Z_C2v(int f) { // Detect 6Z clusters from 2 5A clusters int flg; int i, j, j2, k, l; int cnt; int s1a, s2a, s1b, s2b; char *ach, errMsg[1000]; int binAcnt, binBcnt; int number_of_A; int clusSize=6; int do_up=0; int *dummy_up=NULL; int do_sub=0; int n_sub=2; int sub[2]; s1a=s2a=s1b=s2b=-1; ach=malloc(N*sizeof(char)); if (ach==NULL) { sprintf(errMsg,"Clusters_Get6Z_C2v(): ach[] malloc out of memory\n"); Error(errMsg); } for(i=0; i=1) { m++; break; } scom=sp3c[i][k]; m++; } } if (m>=2) break; } if (m!=1) continue; // exactly one common spindle between 5A_i and 5A_j if (sp3c[i][3] == scom) sother[0]=sp3c[i][4]; else sother[0]=sp3c[i][3]; if (sp3c[mem_sp3c[sp3c[i][j2]][j]][3] == scom) sother[1]=sp3c[mem_sp3c[sp3c[i][j2]][j]][4]; else sother[1]=sp3c[mem_sp3c[sp3c[i][j2]][j]][3]; m=0; for (k=0; k<5; k++) { if (sother[0]==sp3c[mem_sp3c[sp3c[i][j2]][j]][k]) { m++; break; } } if (m!=0 && k!=5) continue; // other spindle of 5A_i distinct from whole 5A_j m=0; for (k=0; k<5; k++) { if (sother[1]==sp3c[i][k]) { m++; break; } } if (m!=0 && k!=5) continue; // other spindle of 5A_j distinct from whole 5A_i m=0; for (k=0; k<3; k++) { for (l=0; l<3; l++) { if (sp3c[i][k] == sp3c[mem_sp3c[sp3c[i][j2]][j]][l]) { if (m>=2) { m++; break; } sp3_com[m]=sp3c[i][k]; m++; } } if (m>=3) break; } if (m!=2) continue; // exactly two common particles in SP3 rings of 5A_i and 5A_j m=0; for (k=0; k<3; k++) { for (l=0; l<2; l++) { if (sp3c[i][k] == sp3_com[l]) break; } if (l==2) { if (m>=1) { m++; break; } sp3c_i_other=sp3c[i][k]; m++; } } if (m!=1) continue; // found other uncommon particle from SP3 ring of 5A_i m=0; for (k=0; k<3; k++) { for (l=0; l<2; l++) { if (sp3c[mem_sp3c[sp3c[i][j2]][j]][k] == sp3_com[l]) break; } if (l==2) { if (m>=1) { m++; break; } sp3c_j_other=sp3c[mem_sp3c[sp3c[i][j2]][j]][k]; m++; } } if (m!=1) continue; // found other uncommon particle from SP3 ring of 5A_i m=0; for (k=0; k<5; k++) { if (sp3c_i_other==sp3c[mem_sp3c[sp3c[i][j2]][j]][k]) { m++; break; } } if (m!=0 && k!=5) continue; // other ring of 5A_i distinct from whole 5A_j m=0; for (k=0; k<5; k++) { if (sp3c_j_other==sp3c[i][k]) { m++; break; } } if (m!=0 && k!=5) continue; // other ring of 5A_j distinct from whole 5A_i if (n7K[f]==m7K) { hc7K=resize_2D_int(hc7K,m7K,m7K+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_7K=resize_1D_double(bl_mom_7K,m7K,m7K+incrStatic); } m7K=m7K+incrStatic; } // Now we have found the 7K cluster hc7K[n7K[f]][0]=scom; hc7K[n7K[f]][1]=sother[0]; hc7K[n7K[f]][2]=sother[1]; hc7K[n7K[f]][3]=sp3_com[0]; hc7K[n7K[f]][4]=sp3_com[1]; hc7K[n7K[f]][5]=sp3c_i_other; hc7K[n7K[f]][6]=sp3c_j_other; quickSort(&hc7K[n7K[f]][1],2); quickSort(&hc7K[n7K[f]][3],2); quickSort(&hc7K[n7K[f]][5],2); // hc7K key: (scom, sother, ring_com, ring_other) if (doDynamics==1 && dyn_m7K!=-1) { if (doSubClusts==1 && dyn_msp3c!=-1) { do_sub=1; sub[0]=dyn_up_sp3c[i]; sub[1]=dyn_up_sp3c[mem_sp3c[sp3c[i][j2]][j]]; quickSort(&sub[0],2); } else do_sub=0; do_up=0; Dyn_add(hc7K[n7K[f]], f, clusSize, &dyn_n7K, &dyn_m7K, &dyn_l7K, &dyn_hc7K, do_up, dummy_up, n7K[f], do_sub, n_sub, &dyn_sub_7K, sub); } ach[hc7K[n7K[f]][0]] = 'O'; ach[hc7K[n7K[f]][1]] = 'O'; ach[hc7K[n7K[f]][2]] = 'O'; if (ach[hc7K[n7K[f]][3]] == 'C') ach[hc7K[n7K[f]][3]] = 'B'; if (ach[hc7K[n7K[f]][4]] == 'C') ach[hc7K[n7K[f]][4]] = 'B'; if (ach[hc7K[n7K[f]][5]] == 'C') ach[hc7K[n7K[f]][5]] = 'B'; if (ach[hc7K[n7K[f]][6]] == 'C') ach[hc7K[n7K[f]][6]] = 'B'; if (doClusBLDistros==1) { for (binAcnt=0; binAcnt k & j, with sp5c[k][6] & sp2i if (do12D==1) n12D[f] += Clusters_Get12D_D2d(f, i, j, k, sp2i, sp5c[k][6], ach2); if (doClusBLDistros==1) { for (binAcnt=0; binAcnt k & j, with sp5c[k][6] & sp2i if (do12D==1) n12D[f] += Clusters_Get12D_D2d(f, i, j, k, sp2i, sp5c[k][5], ach2); if (doClusBLDistros==1) { for (binAcnt=0; binAcnt k & j, with sp5c[k][6] & sp2i if (do12D==1) n12D[f] += Clusters_Get12D_D2d(f, i, j, k, sp2j, sp5c[k][6], ach2); if (doClusBLDistros==1) { for (binAcnt=0; binAcnt k & j, with sp5c[k][6] & sp2i if (do12D==1) n12D[f] += Clusters_Get12D_D2d(f, i, j, k, sp2j, sp5c[k][5], ach2); if (doClusBLDistros==1) { for (binAcnt=0; binAcnt j) m = k; else m = j; for (l=m+1; l=2) { m=3; break; } cp[m]=sp4c[i][k]; m++; } } if (m>2) break; } if(m!=2) continue; if(n9K[f] == m9K) { hc9K=resize_2D_int(hc9K,m9K,m9K+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_9K=resize_1D_double(bl_mom_9K,m9K,m9K+incrStatic); } m9K=m9K+incrStatic; } // hc9K key: (common_SP4_1, common_SP4_2, other_SP4*4, other_spindle_1, other_spindle_2, scom) trial[0]=cp[0]; trial[1]=cp[1]; trial[6]=sother[0]; trial[7]=sother[1]; trial[8]=scom; quickSort(&trial[0],2); quickSort(&trial[6],2); m=2; // find uncommon SP4 ring particles in sp4c[i][k] for(k=0; k<4; ++k) { for (l=0; l<2; l++) { if (sp4c[i][k]==cp[l]) break; } if (l==2) { if (m>=4) { m++; break; } trial[m]=sp4c[i][k]; m++; } } if(m!=4) { sprintf(errMsg,"Clusters_Get9K_10K(): n9K[%d] %d, too many or too few uncommon SP4 ring particles found in cluster sp4c[i=%d][k]\n",f,n9K[f],i); Error(errMsg); } for(k=0; k<4; ++k) { // find uncommon SP4 ring particles in sp4c[mem_sp4c[sp4c[i][j2]][j]][k] for (l=0; l<2; l++) { if (sp4c[mem_sp4c[sp4c[i][j2]][j]][k]==cp[l]) break; } if (l==2) { if (m>=6) { m++; break; } trial[m]=sp4c[mem_sp4c[sp4c[i][j2]][j]][k]; m++; } } if(m!=6) { sprintf(errMsg,"Clusters_Get9K_10K(): n9K[%d] %d, too many or too few uncommon SP4 ring particles found in cluster sp4c[mem_sp4c[sp4c[i=%d][j2=%d]][j=%d]][k]\n",f,n9K[f],i,j2,j); Error(errMsg); } quickSort(&trial[2],4); for (k=0; k<9; k++) hc9K[n9K[f]][k]=trial[k]; if (doDynamics==1 && dyn_m9K!=-1) { if (doSubClusts==1 && dyn_m6A!=-1) { do_sub=1; sub[0]=dyn_up_sp4c[i]; sub[1]=dyn_up_sp4c[mem_sp4c[sp4c[i][j2]][j]]; quickSort(&sub[0],2); } else do_sub=0; if (doSubClusts==1) do_up=1; else do_up=0; Dyn_add(hc9K[n9K[f]], f, clusSize, &dyn_n9K, &dyn_m9K, &dyn_l9K, &dyn_hc9K, do_up, dyn_up_9K, n9K[f], do_sub, n_sub, &dyn_sub_9K, sub); } if(ach_1[hc9K[n9K[f]][0]] == 'C') ach_1[hc9K[n9K[f]][0]] = ach_shell_1[hc9K[n9K[f]][0]] = 'B'; if(ach_1[hc9K[n9K[f]][1]] == 'C') ach_1[hc9K[n9K[f]][1]] = ach_shell_1[hc9K[n9K[f]][1]] = 'B'; if(ach_1[hc9K[n9K[f]][2]] == 'C') ach_1[hc9K[n9K[f]][2]] = ach_shell_1[hc9K[n9K[f]][2]] = 'B'; if(ach_1[hc9K[n9K[f]][3]] == 'C') ach_1[hc9K[n9K[f]][3]] = ach_shell_1[hc9K[n9K[f]][3]] = 'B'; if(ach_1[hc9K[n9K[f]][4]] == 'C') ach_1[hc9K[n9K[f]][4]] = ach_shell_1[hc9K[n9K[f]][4]] = 'B'; if(ach_1[hc9K[n9K[f]][5]] == 'C') ach_1[hc9K[n9K[f]][5]] = ach_shell_1[hc9K[n9K[f]][5]] = 'B'; ach_1[hc9K[n9K[f]][6]] = ach_shell_1[hc9K[n9K[f]][6]] = 'O'; ach_1[hc9K[n9K[f]][7]] = ach_shell_1[hc9K[n9K[f]][7]] = 'O'; ach_1[hc9K[n9K[f]][8]] = ach_cen_1[hc9K[n9K[f]][8]] = 'O'; if (do10K==1) n10K[f] += Clusters_Get10K(f, ach_2, ach_cen_2, ach_shell_2); if (doBondedCen==1) { n_bonded_to_cen_9K+=cnb[hc9K[n9K[f]][8]]; n_distro_bonded_to_cen_9K[cnb[hc9K[n9K[f]][8]]]++; } if (doClusBLDistros==1) { for (binAcnt=0; binAcnt=1) { k++; break; } ep=bNums[hc9K[n9K[f]][8]][i]; k++; } if (k>=2) break; } if (k!=1) return 0; if(n10K[f] == m10K) { hc10K=resize_2D_int(hc10K,m10K,m10K+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_10K=resize_1D_double(bl_mom_10K,m10K,m10K+incrStatic); } m10K=m10K+incrStatic; } // hc10K key: (common_SP4_1, common_SP4_2, other_SP4*4, other_spindle_1, other_spindle_2, scom, ep) for (i=0; i<9; i++) { hc10K[n10K[f]][i]=hc9K[n9K[f]][i]; } hc10K[n10K[f]][9]=ep; if (doDynamics==1 && dyn_m10K!=-1) { if (doSubClusts==1 && dyn_msp5b!=-1) { do_sub=1; sub[0]=dyn_up_9K[n9K[f]]; } else do_sub=0; do_up=0; Dyn_add(hc10K[n10K[f]], f, clusSize, &dyn_n10K, &dyn_m10K, &dyn_l10K, &dyn_hc10K, do_up, dummy_up, n10K[f], do_sub, n_sub, &dyn_sub_10K, sub); } if(ach[hc10K[n10K[f]][0]] == 'C') ach[hc10K[n10K[f]][0]] = ach_shell[hc10K[n10K[f]][0]] = 'B'; if(ach[hc10K[n10K[f]][1]] == 'C') ach[hc10K[n10K[f]][1]] = ach_shell[hc10K[n10K[f]][1]] = 'B'; if(ach[hc10K[n10K[f]][2]] == 'C') ach[hc10K[n10K[f]][2]] = ach_shell[hc10K[n10K[f]][2]] = 'B'; if(ach[hc10K[n10K[f]][3]] == 'C') ach[hc10K[n10K[f]][3]] = ach_shell[hc10K[n10K[f]][3]] = 'B'; if(ach[hc10K[n10K[f]][4]] == 'C') ach[hc10K[n10K[f]][4]] = ach_shell[hc10K[n10K[f]][4]] = 'B'; if(ach[hc10K[n10K[f]][5]] == 'C') ach[hc10K[n10K[f]][5]] = ach_shell[hc10K[n10K[f]][5]] = 'B'; ach[hc10K[n10K[f]][6]] = ach_shell[hc10K[n10K[f]][6]] = 'O'; ach[hc10K[n10K[f]][7]] = ach_shell[hc10K[n10K[f]][7]] = 'O'; ach[hc10K[n10K[f]][8]] = ach_cen[hc10K[n10K[f]][8]] = 'O'; ach[hc10K[n10K[f]][9]] = ach_shell[hc10K[n10K[f]][9]] = 'O'; if (doBondedCen==1) { n_bonded_to_cen_10K+=cnb[hc10K[n10K[f]][8]]; n_distro_bonded_to_cen_10K[cnb[hc10K[n10K[f]][8]]]++; } if (doClusBLDistros==1) { for (binAcnt=0; binAcnt=5) { k++; break; } sp5b_clusts[k]=mem_sp5b[sp5b[i][5]][j]; k++; } if (k!=5) continue; // not correct number of sp5b clusters // now found exactly 5 sp5b clusters common to spindle of sp5b_i for (j=0; j<5; j++) { shell_parts[j]=sp5b[i][j]; } m=5; for (j=0; j<5; j++) { for (k=0; k<5; k++) { for (l=0; l=9) { m++; break; } shell_parts[m]=sp5b[mem_sp5b[sp5b[i][5]][j]][k]; m++; } } if (m>=10) break; } if (m!=9) continue; // not all coordination shell particles of sp5b[i][5] are in the SP5 rings of the 5xsp5b clusters we found if (n10W[f] == m10W) { hc10W=resize_2D_int(hc10W,m10W,m10W+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_10W=resize_1D_double(bl_mom_10W,m10W,m10W+incrStatic); } m10W=m10W+incrStatic; } // hc10W key: (sp5bs_common_central_spindle_particle, sp5bs_SP5_ring_shell_particles) hc10W[n10W[f]][0] = sp5b[i][5]; for (j=0; j<9; j++) hc10W[n10W[f]][j+1]=shell_parts[j]; quickSort(&hc10W[n10W[f]][1],9); if (doDynamics==1 && dyn_m10W!=-1) { if (doSubClusts==1 && dyn_msp5b!=-1) { do_sub=1; sub[0]=dyn_up_sp5b[sp5b_clusts[0]]; sub[1]=dyn_up_sp5b[sp5b_clusts[1]]; sub[2]=dyn_up_sp5b[sp5b_clusts[2]]; sub[3]=dyn_up_sp5b[sp5b_clusts[3]]; sub[4]=dyn_up_sp5b[sp5b_clusts[4]]; quickSort(&sub[0],5); } else do_sub=0; do_up=0; Dyn_add(hc10W[n10W[f]], f, clusSize, &dyn_n10W, &dyn_m10W, &dyn_l10W, &dyn_hc10W, do_up, dummy_up, n10W[f], do_sub, n_sub, &dyn_sub_10W, sub); } if(ach[hc10W[n10W[f]][1]] == 'C') ach[hc10W[n10W[f]][1]] = ach_shell[hc10W[n10W[f]][1]] = 'B'; if(ach[hc10W[n10W[f]][2]] == 'C') ach[hc10W[n10W[f]][2]] = ach_shell[hc10W[n10W[f]][2]] = 'B'; if(ach[hc10W[n10W[f]][3]] == 'C') ach[hc10W[n10W[f]][3]] = ach_shell[hc10W[n10W[f]][3]] = 'B'; if(ach[hc10W[n10W[f]][4]] == 'C') ach[hc10W[n10W[f]][4]] = ach_shell[hc10W[n10W[f]][4]] = 'B'; if(ach[hc10W[n10W[f]][5]] == 'C') ach[hc10W[n10W[f]][5]] = ach_shell[hc10W[n10W[f]][5]] = 'B'; if(ach[hc10W[n10W[f]][6]] == 'C') ach[hc10W[n10W[f]][6]] = ach_shell[hc10W[n10W[f]][6]] = 'B'; if(ach[hc10W[n10W[f]][7]] == 'C') ach[hc10W[n10W[f]][7]] = ach_shell[hc10W[n10W[f]][7]] = 'B'; if(ach[hc10W[n10W[f]][8]] == 'C') ach[hc10W[n10W[f]][8]] = ach_shell[hc10W[n10W[f]][8]] = 'B'; if(ach[hc10W[n10W[f]][9]] == 'C') ach[hc10W[n10W[f]][9]] = ach_shell[hc10W[n10W[f]][9]] = 'B'; ach[hc10W[n10W[f]][0]] = ach_cen[hc10W[n10W[f]][0]] = 'O'; if (doBondedCen==1) { n_bonded_to_cen_10W+=cnb[hc10W[n10W[f]][0]]; n_distro_bonded_to_cen_10W[cnb[hc10W[n10W[f]][0]]]++; } if (doClusBLDistros==1) { for (binAcnt=0; binAcnt=1) { m++; break; } scom=sp4c[i][k]; m++; } } if (m>=2) break; } if(m!=1) continue; // one common spindle // ERROR !! need to check uncommon spindles are not in other cluster at all if (scom==sp4c[i][4]) sother[0]=sp4c[i][5]; else sother[0]=sp4c[i][4]; if (scom==sp4c[j][4]) sother[1]=sp4c[j][5]; else sother[1]=sp4c[j][4]; for(k=0; k<4; ++k) { for(l=0; l<4; ++l) { if(sp4c[i][k] == sp4c[j][l]) break; } if(l<4) break; } if(k<4) continue; // no common ring particles for (k=0; k<8; ++k) { for (l=0; l<3; ++l) shell_SP3[k][l]=-1; } n=0; for(k=0; k<4; ++k) { m = 0; shell_SP3[n][m]=sp4c[i][k]; for(l=0; l<4; ++l) { if(Bonds_BondCheck(sp4c[i][k], sp4c[j][l])) { if (m==2) { m++; break; } m++; shell_SP3[n][m]=sp4c[j][l]; } } if(m!=2) break; n++; } if (k!=4) continue; if (n!=4) continue; for(k=0; k<4; ++k) { m = 0; shell_SP3[n][m]=sp4c[j][k]; for(l=0; l<4; ++l) { if(Bonds_BondCheck(sp4c[j][k], sp4c[i][l])) { if (m==2) { m++; break; } m++; shell_SP3[n][m]=sp4c[i][l]; } } if(m!=2) break; n++; } if (k!=4) continue; if (n!=8) continue; if(n11A[f] == m11A) { hc11A=resize_2D_int(hc11A,m11A,m11A+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_11A=resize_1D_double(bl_mom_11A,m11A,m11A+incrStatic); } m11A=m11A+incrStatic; } // hc11A key: (SP4 going up, sd going up, scom) hc11A[n11A[f]][0] = sp4c[i][0]; hc11A[n11A[f]][1] = sp4c[i][1]; hc11A[n11A[f]][2] = sp4c[i][2]; hc11A[n11A[f]][3] = sp4c[i][3]; hc11A[n11A[f]][4] = sp4c[j][0]; hc11A[n11A[f]][5] = sp4c[j][1]; hc11A[n11A[f]][6] = sp4c[j][2]; hc11A[n11A[f]][7] = sp4c[j][3]; hc11A[n11A[f]][8] = sother[0]; hc11A[n11A[f]][9] = sother[1]; hc11A[n11A[f]][10] = scom; quickSort(&hc11A[n11A[f]][0],8); quickSort(&hc11A[n11A[f]][8],2); if (doDynamics==1 && dyn_m11A!=-1) { if (doSubClusts==1 && dyn_m6A!=-1) { do_sub=1; sub[0]=dyn_up_sp4c[i]; sub[1]=dyn_up_sp4c[j]; quickSort(&sub[0],2); } else do_sub=0; if (doSubClusts==1) do_up=1; else do_up=0; Dyn_add(hc11A[n11A[f]], f, clusSize, &dyn_n11A, &dyn_m11A, &dyn_l11A, &dyn_hc11A, do_up, dyn_up_11A, n11A[f], do_sub, n_sub, &dyn_sub_11A, sub); } if(ach_1[hc11A[n11A[f]][0]] == 'C') ach_1[hc11A[n11A[f]][0]] = ach_shell_1[hc11A[n11A[f]][0]] = 'B'; if(ach_1[hc11A[n11A[f]][1]] == 'C') ach_1[hc11A[n11A[f]][1]] = ach_shell_1[hc11A[n11A[f]][1]] = 'B'; if(ach_1[hc11A[n11A[f]][2]] == 'C') ach_1[hc11A[n11A[f]][2]] = ach_shell_1[hc11A[n11A[f]][2]] = 'B'; if(ach_1[hc11A[n11A[f]][3]] == 'C') ach_1[hc11A[n11A[f]][3]] = ach_shell_1[hc11A[n11A[f]][3]] = 'B'; if(ach_1[hc11A[n11A[f]][4]] == 'C') ach_1[hc11A[n11A[f]][4]] = ach_shell_1[hc11A[n11A[f]][4]] = 'B'; if(ach_1[hc11A[n11A[f]][5]] == 'C') ach_1[hc11A[n11A[f]][5]] = ach_shell_1[hc11A[n11A[f]][5]] = 'B'; if(ach_1[hc11A[n11A[f]][6]] == 'C') ach_1[hc11A[n11A[f]][6]] = ach_shell_1[hc11A[n11A[f]][6]] = 'B'; if(ach_1[hc11A[n11A[f]][7]] == 'C') ach_1[hc11A[n11A[f]][7]] = ach_shell_1[hc11A[n11A[f]][7]] = 'B'; ach_1[hc11A[n11A[f]][8]] = ach_shell_1[hc11A[n11A[f]][8]] = 'O'; ach_1[hc11A[n11A[f]][9]] = ach_shell_1[hc11A[n11A[f]][9]] = 'O'; ach_1[hc11A[n11A[f]][10]] = ach_cen_1[hc11A[n11A[f]][10]] = 'O'; if (do12K==1) { for (k=0; k<8; k++) { n12K[f]+=Clusters_Get12K(f,shell_SP3[k][0],shell_SP3[k][1],shell_SP3[k][2],ach_2, ach_cen_2, ach_shell_2); } } if (doBondedCen==1) { n_bonded_to_cen_11A+=cnb[hc11A[n11A[f]][10]]; n_distro_bonded_to_cen_11A[cnb[hc11A[n11A[f]][10]]]++; } if (doClusBLDistros==1) { for (binAcnt=0; binAcnt=2) break; ep=bNums[SP3_1][i]; } if (nep!=1) return 0; if(n12K[f] == m12K) { hc12K=resize_2D_int(hc12K,m12K,m12K+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_12K=resize_1D_double(bl_mom_12K,m12K,m12K+incrStatic); } m12K=m12K+incrStatic; } // hc12K key: (SP4 going up, sd going up, scom, ep) for (i=0; i<11; i++) hc12K[n12K[f]][i] = hc11A[n11A[f]][i]; hc12K[n12K[f]][11]=ep; if (doDynamics==1 && dyn_m11A!=-1) { if (doSubClusts==1 && dyn_msp5c!=-1) { do_sub=1; sub[0]=dyn_up_11A[n11A[f]]; } else do_sub=0; do_up=0; Dyn_add(hc12K[n12K[f]], f, clusSize, &dyn_n12K, &dyn_m12K, &dyn_l12K, &dyn_hc12K, do_up, dummy_up, n12K[f], do_sub, n_sub, &dyn_sub_12K, sub); } if(ach[hc12K[n12K[f]][0]] == 'C') ach[hc12K[n12K[f]][0]] = ach_shell[hc12K[n12K[f]][0]] = 'B'; if(ach[hc12K[n12K[f]][1]] == 'C') ach[hc12K[n12K[f]][1]] = ach_shell[hc12K[n12K[f]][1]] = 'B'; if(ach[hc12K[n12K[f]][2]] == 'C') ach[hc12K[n12K[f]][2]] = ach_shell[hc12K[n12K[f]][2]] = 'B'; if(ach[hc12K[n12K[f]][3]] == 'C') ach[hc12K[n12K[f]][3]] = ach_shell[hc12K[n12K[f]][3]] = 'B'; if(ach[hc12K[n12K[f]][4]] == 'C') ach[hc12K[n12K[f]][4]] = ach_shell[hc12K[n12K[f]][4]] = 'B'; if(ach[hc12K[n12K[f]][5]] == 'C') ach[hc12K[n12K[f]][5]] = ach_shell[hc12K[n12K[f]][5]] = 'B'; if(ach[hc12K[n12K[f]][6]] == 'C') ach[hc12K[n12K[f]][6]] = ach_shell[hc12K[n12K[f]][6]] = 'B'; if(ach[hc12K[n12K[f]][7]] == 'C') ach[hc12K[n12K[f]][7]] = ach_shell[hc12K[n12K[f]][7]] = 'B'; ach[hc12K[n12K[f]][8]] = ach_shell[hc12K[n12K[f]][8]] = 'O'; ach[hc12K[n12K[f]][9]] = ach_shell[hc12K[n12K[f]][9]] = 'O'; ach[hc12K[n12K[f]][10]] = ach_cen[hc12K[n12K[f]][10]] = 'O'; ach[hc12K[n12K[f]][11]] = ach_shell[hc12K[n12K[f]][11]] = 'O'; if (doBondedCen==1) { n_bonded_to_cen_12K+=cnb[hc12K[n12K[f]][10]]; n_distro_bonded_to_cen_12K[cnb[hc12K[n12K[f]][10]]]++; } if (doClusBLDistros==1) { for (binAcnt=0; binAcnt= 2) { ++ncom; break_out=1; break; } ar[ncom++] = sp5c[i][k]; break; } } if (break_out==1) break; } flg = ncom == 2 && Bonds_BondCheck(ar[0],ar[1]) && break_out==0; // two common SP5 ring particles are bonded if(flg==1) { ncom = 0; for(k=0; k<5; ++k) { if(sp5c[i][k] == ar[0] || sp5c[i][k] == ar[1]) continue; for(l=0; l<5; ++l) { if(sp5c[j][l] == ar[0] || sp5c[j][l] == ar[1]) continue; if(Bonds_BondCheck(sp5c[i][k], sp5c[j][l])) ++ncom; } } if(ncom != 2) flg = 0; } if(flg==1) { // two bonds between non-common SP5 ring particles if(n11C[f] == m11C) { hc11C=resize_2D_int(hc11C,m11C,m11C+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_11C=resize_1D_double(bl_mom_11C,m11C,m11C+incrStatic); } m11C=m11C+incrStatic; } // hc11C key: (s_com, s_i, s_j, r_ca, r_cb, d_i, d_i, d_j, d_j, unc_i, unc_j) hc11C[n11C[f]][0]=spc; hc11C[n11C[f]][1]=sd[0]; hc11C[n11C[f]][2]=sd[1]; hc11C[n11C[f]][3]=ar[0]; hc11C[n11C[f]][4]=ar[1]; l=5; m=7; break_out=0; for(k=0; k<5; ++k) { if(Bonds_BondCheck(sp5c[i][k], ar[0]) && sp5c[i][k]!=ar[0] && sp5c[i][k]!=ar[1]) { if (l==7) { break_out=1; break; } hc11C[n11C[f]][l] = sp5c[i][k]; l++; } if(Bonds_BondCheck(sp5c[i][k], ar[1]) && sp5c[i][k]!=ar[0] && sp5c[i][k]!=ar[1]) { if (l==7) { break_out=1; break; } hc11C[n11C[f]][l] = sp5c[i][k]; l++; } if(Bonds_BondCheck(sp5c[j][k], ar[0]) && sp5c[j][k]!=ar[0] && sp5c[j][k]!=ar[1]) { if (m==9) { break_out=1; break; } hc11C[n11C[f]][m] = sp5c[j][k]; m++; } if(Bonds_BondCheck(sp5c[j][k], ar[1]) && sp5c[j][k]!=ar[0] && sp5c[j][k]!=ar[1]) { if (m==9) { break_out=1; break; } hc11C[n11C[f]][m] = sp5c[j][k]; m++; } } if (break_out==1 || l<7 || m<9) continue; for(k=0; k<5; ++k) { if(Bonds_BondCheck(sp5c[i][k], hc11C[n11C[f]][5]) && Bonds_BondCheck(sp5c[i][k], hc11C[n11C[f]][6])) { hc11C[n11C[f]][9]=sp5c[i][k]; } if(Bonds_BondCheck(sp5c[j][k], hc11C[n11C[f]][7]) && Bonds_BondCheck(sp5c[j][k], hc11C[n11C[f]][8])) { hc11C[n11C[f]][10]=sp5c[j][k]; } } quickSort(&hc11C[n11C[f]][1],2); quickSort(&hc11C[n11C[f]][3],2); quickSort(&hc11C[n11C[f]][5],4); quickSort(&hc11C[n11C[f]][9],2); if (doDynamics==1 && dyn_m11C!=-1) { if (doSubClusts==1 && dyn_msp5c!=-1) { do_sub=1; sub[0]=dyn_up_sp5c[i]; sub[1]=dyn_up_sp5c[j]; quickSort(&sub[0],2); } else do_sub=0; if (doSubClusts==1) do_up=1; else do_up=0; Dyn_add(hc11C[n11C[f]], f, clusSize, &dyn_n11C, &dyn_m11C, &dyn_l11C, &dyn_hc11C, do_up, dyn_up_11C, n11C[f], do_sub, n_sub, &dyn_sub_11C, sub); } if(ach1[hc11C[n11C[f]][3]] == 'C') ach1[hc11C[n11C[f]][3]] = ach1_shell[hc11C[n11C[f]][3]] = 'B'; if(ach1[hc11C[n11C[f]][4]] == 'C') ach1[hc11C[n11C[f]][4]] = ach1_shell[hc11C[n11C[f]][4]] = 'B'; if(ach1[hc11C[n11C[f]][5]] == 'C') ach1[hc11C[n11C[f]][5]] = ach1_shell[hc11C[n11C[f]][5]] = 'B'; if(ach1[hc11C[n11C[f]][6]] == 'C') ach1[hc11C[n11C[f]][6]] = ach1_shell[hc11C[n11C[f]][6]] = 'B'; if(ach1[hc11C[n11C[f]][7]] == 'C') ach1[hc11C[n11C[f]][7]] = ach1_shell[hc11C[n11C[f]][7]] = 'B'; if(ach1[hc11C[n11C[f]][8]] == 'C') ach1[hc11C[n11C[f]][8]] = ach1_shell[hc11C[n11C[f]][8]] = 'B'; if(ach1[hc11C[n11C[f]][9]] == 'C') ach1[hc11C[n11C[f]][9]] = ach1_shell[hc11C[n11C[f]][9]] = 'B'; if(ach1[hc11C[n11C[f]][10]] == 'C') ach1[hc11C[n11C[f]][10]] = ach1_shell[hc11C[n11C[f]][10]] = 'B'; ach1[hc11C[n11C[f]][0]] = ach1_cen[hc11C[n11C[f]][0]] = 'O'; ach1[hc11C[n11C[f]][1]] = ach1_shell[hc11C[n11C[f]][1]] = 'O'; ach1[hc11C[n11C[f]][2]] = ach1_shell[hc11C[n11C[f]][2]] = 'O'; if (doBondedCen==1) { n_bonded_to_cen_11C+=cnb[hc11C[n11C[f]][0]]; n_distro_bonded_to_cen_11C[cnb[hc11C[n11C[f]][0]]]++; } if (do12A==1) { if(Clusters_Get12A_C2v(f, ach2, ach2_cen, ach2_shell)) { ach2_cen[hc11C[n11C[f]][0]] = 'O'; ++n12A[f]; } } if (doClusBLDistros==1) { for (binAcnt=0; binAcnt2) break; } if (ncom!=2) continue; uncom=-1; for (l=0; l<3; ++l) { ncom=0; for (m=0; m<2; ++m) { if(sp3c[k][l] == common[m]) ncom++; } if (ncom==0) { uncom=sp3c[k][l]; break; } } // now we have found the 12E if(n12E[f] == m12E) { hc12E=resize_2D_int(hc12E,m12E,m12E+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_12E=resize_1D_double(bl_mom_12E,m12E,m12E+incrStatic); } m12E=m12E+incrStatic; } hc12E[n12E[f]][11] = uncom; for(l=0; l<10; ++l) hc12E[n12E[f]][l] = hc11F[n11F[f]][l+1]; hc12E[n12E[f]][10] = hc11F[n11F[f]][0]; quickSort(&hc12E[n12E[f]][0],6); quickSort(&hc12E[n12E[f]][6],6); if (doDynamics==1 && dyn_m12E!=-1) { if (doSubClusts==1 && dyn_msp3c!=-1 && dyn_m11F!=-1) { do_sub=1; sub[0]=dyn_up_11F[n11F[f]]; sub[1]=dyn_up_sp3c[k]; } else do_sub=0; do_up=0; Dyn_add(hc12E[n12E[f]], f, clusSize, &dyn_n12E, &dyn_m12E, &dyn_l12E, &dyn_hc12E, do_up, dummy_up, n12E[f], do_sub, n_sub, &dyn_sub_12E, sub); } if(ach[hc12E[n12E[f]][6]] == 'C') ach[hc12E[n12E[f]][6]] = 'B'; if(ach[hc12E[n12E[f]][7]] == 'C') ach[hc12E[n12E[f]][7]] = 'B'; if(ach[hc12E[n12E[f]][8]] == 'C') ach[hc12E[n12E[f]][8]] = 'B'; if(ach[hc12E[n12E[f]][9]] == 'C') ach[hc12E[n12E[f]][9]] = 'B'; if(ach[hc12E[n12E[f]][10]] == 'C') ach[hc12E[n12E[f]][10]] = 'B'; if(ach[hc12E[n12E[f]][11]] == 'C') ach[hc12E[n12E[f]][11]] = 'B'; ach[hc12E[n12E[f]][0]] = 'O'; ach[hc12E[n12E[f]][1]] = 'O'; ach[hc12E[n12E[f]][2]] = 'O'; ach[hc12E[n12E[f]][3]] = 'O'; ach[hc12E[n12E[f]][4]] = 'O'; ach[hc12E[n12E[f]][5]] = 'O'; if (doClusBLDistros==1) { for (binAcnt=0; binAcnt=1) { k++; break; } sp3c_i_unc=sp3c[sp3c_i][i]; k++; } } if (k!=1) return 0; k=0; // Find sp3c_j_unc for (i=0; i<3; i++) { if (sp3c[sp3c_j][i]==hc11F[n11F[f]][0]) continue; for (j=0; j<4; j++) { if (sp3c[sp3c_j][i]==sp4c[the6A_i][j]) break; } if (j==4) { if (k>=1) { k++; break; } sp3c_j_unc=sp3c[sp3c_j][i]; k++; } } if (k!=1) return 0; k=0; for (i=0; i=5) { nSB1++; break; } sj1[nSB1++] = j; } } if (nSB1 == 5 && do13A==1) { // possibly found 13A, definately found 12B, now establish status for (j=i+1; j=5) { nSB2++; break; } sj2[nSB2++] = j; } } if(nSB2 == 5 && do13A==1) { // possibly found 13A, definately found 12B, now establish status for (j=i+1; j 5) && (nSB2 > 5)) continue; for (j=0; j= 5) { nSB1++; break; } sj1[nSB1++] = j; } } if (nSB1 == 5) { if (n12B[f]==m12B) { hc12B=resize_2D_int(hc12B,m12B,m12B+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_12B=resize_1D_double(bl_mom_12B,m12B,m12B+incrStatic); } m12B=m12B+incrStatic; } hc12B[n12B[f]][0] = sp1; hc12B[n12B[f]][1] = sp2; hc12B[n12B[f]][2] = sp5c[i][0]; hc12B[n12B[f]][3] = sp5c[i][1]; hc12B[n12B[f]][4] = sp5c[i][2]; hc12B[n12B[f]][5] = sp5c[i][3]; hc12B[n12B[f]][6] = sp5c[i][4]; m = 7; break_out=0; for (j=0; j<5; ++j) { for (k=0; k<5; ++k) { for (l=0; l= 5) { nSB2++; break; } sj2[nSB2++] = j; } } if(nSB2 == 5) { if (n12B[f]==m12B) { hc12B=resize_2D_int(hc12B,m12B,m12B+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_12B=resize_1D_double(bl_mom_12B,m12B,m12B+incrStatic); } m12B=m12B+incrStatic; } hc12B[n12B[f]][0] = sp2; hc12B[n12B[f]][1] = sp1; hc12B[n12B[f]][2] = sp5c[i][0]; hc12B[n12B[f]][3] = sp5c[i][1]; hc12B[n12B[f]][4] = sp5c[i][2]; hc12B[n12B[f]][5] = sp5c[i][3]; hc12B[n12B[f]][6] = sp5c[i][4]; m = 7; break_out=0; for(j=0; j<5; ++j){ for(k=0; k<5; ++k){ for(l=0; l1) continue; flg=0; for (k=0; k<6; k++) { if (sp4c[i][k]==s_com) continue; for (l=0; l<6; l++) { if (sp4c[mem_sp4c[sp4c[i][j2]][j]][l]==s_com) continue; if (sp4c[i][k]==sp4c[mem_sp4c[sp4c[i][j2]][j]][l]) { flg=1; break; } } if (flg==1) break; } if (flg==1) continue; flg=0; for (k=0; k<4; k++) { m=0; for (l=0; l<4; l++) { if (Bonds_BondCheck(sp4c[i][k],sp4c[mem_sp4c[sp4c[i][j2]][j]][l])) { m++; if (m==2) { flg=1; break; } } } if (flg==1) break; } if (flg==1) continue; flg=0; for (k=0; k<4; k++) { m=0; for (l=0; l<4; l++) { if (Bonds_BondCheck(sp4c[mem_sp4c[sp4c[i][j2]][j]][k],sp4c[i][l])) { m++; if (m==2) { flg=1; break; } } } if (flg==1) break; } if (flg==1) continue; trial[0]=s_com; for (k=0; k<4; k++) { trial[k+1]=sp4c[i][k]; trial[k+5]=sp4c[mem_sp4c[sp4c[i][j2]][j]][k]; } quickSort(&trial[1],8); flg=0; // check trial cluster not already found for (k=0; k1) continue; flg=0; for (k=0; k<4; k++) { for (l=0; l<6; l++) { if (sp4c[mem_sp4c[sp4b[i][j2]][j]][l]==s_com) continue; if (sp4b[i][k]==sp4c[mem_sp4c[sp4b[i][j2]][j]][l]) { flg=1; break; } } if (flg==1) break; } if (flg==1) continue; flg=0; for (k=0; k<4; k++) { m=0; for (l=0; l<4; l++) { if (Bonds_BondCheck(sp4b[i][k],sp4c[mem_sp4c[sp4b[i][j2]][j]][l])) { m++; if (m==2) { flg=1; break; } } } if (flg==1) break; } if (flg==1) continue; flg=0; for (k=0; k<4; k++) { m=0; for (l=0; l<4; l++) { if (Bonds_BondCheck(sp4c[mem_sp4c[sp4b[i][j2]][j]][k],sp4b[i][l])) { m++; if (m==2) { flg=1; break; } } } if (flg==1) break; } if (flg==1) continue; trial[0]=s_com; for (k=0; k<4; k++) { trial[k+1]=sp4b[i][k]; trial[k+5]=sp4c[mem_sp4c[sp4b[i][j2]][j]][k]; } quickSort(&trial[1],8); flg=0; // check trial cluster not already found for (k=0; k=8) { noSP4s++; break; } hcBCC_15[nBCC_15[f]][7+noSP4s]=sp4c[j][k]; noSP4s++; } } sj[no_sp4cs]=j; no_sp4cs++; } } } } } if (no_sp4cs==5 && noSP4s==8) { // We've now found an BCC_15 cluster if (nBCC_15[f] == mBCC_15) { hcBCC_15=resize_2D_int(hcBCC_15,mBCC_15,mBCC_15+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_BCC_15=resize_1D_double(bl_mom_BCC_15,mBCC_15,mBCC_15+incrStatic); } mBCC_15=mBCC_15+incrStatic; } quickSort(&hcBCC_15[nBCC_15[f]][1],6); quickSort(&hcBCC_15[nBCC_15[f]][7],8); if (doDynamics==1 && dyn_mBCC_15!=-1) { if (doSubClusts==1 && dyn_m6A!=-1) { do_sub=1; sub[0]=dyn_up_sp4c[i]; sub[1]=dyn_up_sp4c[sj[0]]; sub[2]=dyn_up_sp4c[sj[1]]; sub[3]=dyn_up_sp4c[sj[2]]; sub[4]=dyn_up_sp4c[sj[3]]; sub[5]=dyn_up_sp4c[sj[4]]; quickSort(&sub[0],n_sub); } else do_sub=0; do_up=0; Dyn_add(hcBCC_15[nBCC_15[f]], f, clusSize, &dyn_nBCC_15, &dyn_mBCC_15, &dyn_lBCC_15, &dyn_hcBCC_15, do_up, dummy_up, nBCC_15[f], do_sub, n_sub, &dyn_sub_BCC_15, sub); } if(ach[hcBCC_15[nBCC_15[f]][7]] == 'C') ach[hcBCC_15[nBCC_15[f]][7]] = ach_shell[hcBCC_15[nBCC_15[f]][7]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][8]] == 'C') ach[hcBCC_15[nBCC_15[f]][8]] = ach_shell[hcBCC_15[nBCC_15[f]][8]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][9]] == 'C') ach[hcBCC_15[nBCC_15[f]][9]] = ach_shell[hcBCC_15[nBCC_15[f]][9]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][10]] == 'C') ach[hcBCC_15[nBCC_15[f]][10]] = ach_shell[hcBCC_15[nBCC_15[f]][10]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][11]] == 'C') ach[hcBCC_15[nBCC_15[f]][11]] = ach_shell[hcBCC_15[nBCC_15[f]][11]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][12]] == 'C') ach[hcBCC_15[nBCC_15[f]][12]] = ach_shell[hcBCC_15[nBCC_15[f]][12]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][13]] == 'C') ach[hcBCC_15[nBCC_15[f]][13]] = ach_shell[hcBCC_15[nBCC_15[f]][13]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][14]] == 'C') ach[hcBCC_15[nBCC_15[f]][14]] = ach_shell[hcBCC_15[nBCC_15[f]][14]] = 'B'; ach[hcBCC_15[nBCC_15[f]][1]] = ach_shell[hcBCC_15[nBCC_15[f]][1]] = 'O'; ach[hcBCC_15[nBCC_15[f]][2]] = ach_shell[hcBCC_15[nBCC_15[f]][2]] = 'O'; ach[hcBCC_15[nBCC_15[f]][3]] = ach_shell[hcBCC_15[nBCC_15[f]][3]] = 'O'; ach[hcBCC_15[nBCC_15[f]][4]] = ach_shell[hcBCC_15[nBCC_15[f]][4]] = 'O'; ach[hcBCC_15[nBCC_15[f]][5]] = ach_shell[hcBCC_15[nBCC_15[f]][5]] = 'O'; ach[hcBCC_15[nBCC_15[f]][6]] = ach_shell[hcBCC_15[nBCC_15[f]][6]] = 'O'; ach[hcBCC_15[nBCC_15[f]][0]] = ach_cen[hcBCC_15[nBCC_15[f]][0]] = 'F'; if (doBondedCen==1) { n_bonded_to_cen_BCC_15+=cnb[hcBCC_15[nBCC_15[f]][0]]; n_distro_bonded_to_cen_BCC_15[cnb[hcBCC_15[nBCC_15[f]][0]]]++; } if (doClusBLDistros==1) { for (binAcnt=0; binAcnt=8) { noSP4s++; break; } hcBCC_15[nBCC_15[f]][7+noSP4s]=sp4c[j][k]; noSP4s++; } } sj[no_sp4cs]=j; no_sp4cs++; } } } } } if (no_sp4cs==5 && noSP4s==8) { // We've now found an BCC_15 cluster if (nBCC_15[f] == mBCC_15) { hcBCC_15=resize_2D_int(hcBCC_15,mBCC_15,mBCC_15+incrStatic,clusSize,-1); if (doClusBLDeviation==1) { bl_mom_BCC_15=resize_1D_double(bl_mom_BCC_15,mBCC_15,mBCC_15+incrStatic); } mBCC_15=mBCC_15+incrStatic; } quickSort(&hcBCC_15[nBCC_15[f]][1],6); quickSort(&hcBCC_15[nBCC_15[f]][7],8); if (doDynamics==1 && dyn_mBCC_15!=-1) { if (doSubClusts==1 && dyn_m6A!=-1) { do_sub=1; sub[0]=dyn_up_sp4c[i]; sub[1]=dyn_up_sp4c[sj[0]]; sub[2]=dyn_up_sp4c[sj[1]]; sub[3]=dyn_up_sp4c[sj[2]]; sub[4]=dyn_up_sp4c[sj[3]]; sub[5]=dyn_up_sp4c[sj[4]]; quickSort(&sub[0],n_sub); } else do_sub=0; do_up=0; Dyn_add(hcBCC_15[nBCC_15[f]], f, clusSize, &dyn_nBCC_15, &dyn_mBCC_15, &dyn_lBCC_15, &dyn_hcBCC_15, do_up, dummy_up, nBCC_15[f], do_sub, n_sub, &dyn_sub_BCC_15, sub); } if(ach[hcBCC_15[nBCC_15[f]][7]] == 'C') ach[hcBCC_15[nBCC_15[f]][7]] = ach_shell[hcBCC_15[nBCC_15[f]][7]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][8]] == 'C') ach[hcBCC_15[nBCC_15[f]][8]] = ach_shell[hcBCC_15[nBCC_15[f]][8]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][9]] == 'C') ach[hcBCC_15[nBCC_15[f]][9]] = ach_shell[hcBCC_15[nBCC_15[f]][9]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][10]] == 'C') ach[hcBCC_15[nBCC_15[f]][10]] = ach_shell[hcBCC_15[nBCC_15[f]][10]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][11]] == 'C') ach[hcBCC_15[nBCC_15[f]][11]] = ach_shell[hcBCC_15[nBCC_15[f]][11]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][12]] == 'C') ach[hcBCC_15[nBCC_15[f]][12]] = ach_shell[hcBCC_15[nBCC_15[f]][12]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][13]] == 'C') ach[hcBCC_15[nBCC_15[f]][13]] = ach_shell[hcBCC_15[nBCC_15[f]][13]] = 'B'; if(ach[hcBCC_15[nBCC_15[f]][14]] == 'C') ach[hcBCC_15[nBCC_15[f]][14]] = ach_shell[hcBCC_15[nBCC_15[f]][14]] = 'B'; ach[hcBCC_15[nBCC_15[f]][1]] = ach_shell[hcBCC_15[nBCC_15[f]][1]] = 'O'; ach[hcBCC_15[nBCC_15[f]][2]] = ach_shell[hcBCC_15[nBCC_15[f]][2]] = 'O'; ach[hcBCC_15[nBCC_15[f]][3]] = ach_shell[hcBCC_15[nBCC_15[f]][3]] = 'O'; ach[hcBCC_15[nBCC_15[f]][4]] = ach_shell[hcBCC_15[nBCC_15[f]][4]] = 'O'; ach[hcBCC_15[nBCC_15[f]][5]] = ach_shell[hcBCC_15[nBCC_15[f]][5]] = 'O'; ach[hcBCC_15[nBCC_15[f]][6]] = ach_shell[hcBCC_15[nBCC_15[f]][6]] = 'O'; ach[hcBCC_15[nBCC_15[f]][0]] = ach_cen[hcBCC_15[nBCC_15[f]][0]] = 'F'; if (doBondedCen==1) { n_bonded_to_cen_BCC_15+=cnb[hcBCC_15[nBCC_15[f]][0]]; n_distro_bonded_to_cen_BCC_15[cnb[hcBCC_15[nBCC_15[f]][0]]]++; } if (doClusBLDistros==1) { for (binAcnt=0; binAcnt