Advertisement
R3P3T

Untitled

Jan 5th, 2021
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <omp.h>
  5. #include <sys/time.h>
  6. #include "wtime.h"
  7. #include "definitions.h"
  8. #include "energy_struct.h"
  9.  
  10. * Funcion que implementa la solvatacion en openmp
  11. */
  12. extern void forces_OMP_AU (int atoms_r, int atoms_l, int nlig, float *rec_x, float *rec_y, float *rec_z, float *lig_x, float *lig_y, float *lig_z, int* rectype, int* ligtype, float *ql ,float *qr, float *energy, struct autodock_param_t *a_params, int nconformations){
  13.  
  14. omp_set_num_threads(10);
  15.  
  16. float dist, temp_desolv = 0,miatomo[3], e_desolv;
  17. int j,i;
  18. int ind1, ind2;
  19. int total;
  20.  
  21. float difx,dify,difz, solv_asp_1, solv_asp_2, solv_vol_1, solv_vol_2,solv_qasp_1,solv_qasp_2;
  22. float mod2x, mod2y, mod2z;
  23.  
  24. total = nconformations * nlig;
  25. #pragma omp parallel for reduction(+:temp_desolv) private(mod2x,mod2y,mod2z,difx,dify,difz,solv_asp_1,solv_vol_1,solv_asp_2,solv_vol_2,miatomo)
  26. for (int k=0; k < (nconformations*nlig); k+=nlig)
  27. {
  28. #pragma omp parallel for
  29. for(int i=0;i<atoms_l;i++){
  30. e_desolv = 0;
  31. ind1 = ligtype[i];
  32. miatomo[0] = *(lig_x + k + i);
  33. miatomo[1] = *(lig_y + k + i);
  34. miatomo[2] = *(lig_z + k + i);
  35. solv_asp_1 = a_params[ind1].asp;
  36. solv_vol_1 = a_params[ind1].vol;
  37. #pragma omp parallel for
  38. for(int j=0;j<atoms_r;j++){
  39. e_desolv = 0;
  40. ind2 = rectype[j];
  41. solv_asp_2 = a_params[ind2].asp;
  42. solv_vol_2 = a_params[ind2].vol;
  43. difx= (rec_x[j]) - miatomo[0];
  44. dify= (rec_y[j]) - miatomo[1];
  45. difz= (rec_z[j]) - miatomo[2];
  46. mod2x=difx*difx;
  47. mod2y=dify*dify;
  48. mod2z=difz*difz;
  49.  
  50. difx=mod2x+mod2y+mod2z;
  51. dist = sqrtf(difx);
  52.  
  53. e_desolv = ((solv_asp_1 * solv_vol_2) + (QASP * fabs(ql[i]) * solv_vol_2) + (solv_asp_2 * solv_vol_1) + (QASP * fabs(qr[j]) * solv_vol_1)) * exp(-difx/(2*G_D_2));
  54. temp_desolv += e_desolv;
  55.  
  56. }
  57. }
  58. energy[k/nlig] = temp_desolv;
  59. temp_desolv = 0;
  60. }
  61. printf("Desolvation term value: %f\n",energy[0]);
  62. }
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement