void calc_angles_dihs(t_params *ang, t_params *dih, rvec x[], gmx_bool bPBC, matrix box) { int i, ai, aj, ak, al, t1, t2, t3; rvec r_ij, r_kj, r_kl, m, n; real sign, th, costh, ph; t_pbc pbc; if (bPBC) { set_pbc(&pbc, epbcXYZ, box); } if (debug) { pr_rvecs(debug, 0, "X2TOP", box, DIM); } for (i = 0; (i < ang->nr); i++) { ai = ang->param[i].AI; aj = ang->param[i].AJ; ak = ang->param[i].AK; th = RAD2DEG*bond_angle(x[ai], x[aj], x[ak], bPBC ? &pbc : NULL, r_ij, r_kj, &costh, &t1, &t2); if (debug) { fprintf(debug, "X2TOP: ai=%3d aj=%3d ak=%3d r_ij=%8.3f r_kj=%8.3f th=%8.3f\n", ai, aj, ak, norm(r_ij), norm(r_kj), th); } ang->param[i].C0 = th; } for (i = 0; (i < dih->nr); i++) { ai = dih->param[i].AI; aj = dih->param[i].AJ; ak = dih->param[i].AK; al = dih->param[i].AL; ph = RAD2DEG*dih_angle(x[ai], x[aj], x[ak], x[al], bPBC ? &pbc : NULL, r_ij, r_kj, r_kl, m, n, &sign, &t1, &t2, &t3); if (debug) { fprintf(debug, "X2TOP: ai=%3d aj=%3d ak=%3d al=%3d r_ij=%8.3f r_kj=%8.3f r_kl=%8.3f ph=%8.3f\n", ai, aj, ak, al, norm(r_ij), norm(r_kj), norm(r_kl), ph); } dih->param[i].C0 = ph; } }
static void calc_angles(FILE *log,t_pbc *pbc, int n3,atom_id index[],real ang[],rvec x_s[]) { int i,ix,t1,t2; rvec r_ij,r_kj; real costh; for(i=ix=0; (ix<n3); i++,ix+=3) ang[i]=bond_angle(x_s[index[ix]],x_s[index[ix+1]],x_s[index[ix+2]], pbc,r_ij,r_kj,&costh,&t1,&t2); if (debug) { fprintf(debug,"Angle[0]=%g, costh=%g, index0 = %d, %d, %d\n", ang[0],costh,index[0],index[1],index[2]); pr_rvec(debug,0,"rij",r_ij,DIM,TRUE); pr_rvec(debug,0,"rkj",r_kj,DIM,TRUE); } }