original_code:
void set_tors_params(DICT_WORD intra_dict[],int num_intra_dict,
       char *fun_key,char *file_name,int jmol_typ,
       CLATOMS_INFO *clatoms_info,ATOMMAPS *atommaps,
       TORS *tors,NULL_INTER_PARSE *null_inter_parse,
       BUILD_INTRA *build_intra, int iresidue, int ires_off)
{
  int num,index,ifound,igo;
  int itype1,itype2,itype3,itype4;
  int iatm_ind1,iatm_ind2,iatm_ind3,iatm_ind4;
  int imask1,imask2,imask3,imask4;
  int i,itype;
  for(i=1;i<=num_intra_dict;i++){
    if(intra_dict[i].iuset==0 && intra_dict[i].key_type==1){
      keyword_miss(intra_dict,file_name,fun_key,i);
    }
  }
  index = 1;
  sscanf(intra_dict[1].keyarg,"%d",&num);
  iatm_ind1 = num;
  if(iatm_ind1>build_intra->natmind_1res_now||iatm_ind1<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask1 = build_intra->mask_atm[iatm_ind1];
  if(imask1>0)iatm_ind1 = build_intra->index_atm[iatm_ind1];
  index = 2;
  sscanf(intra_dict[2].keyarg,"%d",&num);
  iatm_ind2 = num;
  if(iatm_ind2>build_intra->natmind_1res_now||iatm_ind2<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask2 = build_intra->mask_atm[iatm_ind2];
  if(imask2>0)iatm_ind2 = build_intra->index_atm[iatm_ind2];
  index = 3;
  sscanf(intra_dict[3].keyarg,"%d",&num);
  iatm_ind3 = num;
  if(iatm_ind3>build_intra->natmind_1res_now||iatm_ind3<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask3 = build_intra->mask_atm[iatm_ind3];
  if(imask3>0)iatm_ind3 = build_intra->index_atm[iatm_ind3];
  index = 4;
  sscanf(intra_dict[4].keyarg,"%d",&num);
  iatm_ind4 = num;
  if(iatm_ind4>build_intra->natmind_1res_now||iatm_ind4<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask4 = build_intra->mask_atm[iatm_ind4];
  if(imask4>0)iatm_ind4 = build_intra->index_atm[iatm_ind4];
  index = 5;
  ifound = 0;
  if(strcasecmp(intra_dict[5].keyarg,"on")==0) {ifound = 1;}
  if(strcasecmp(intra_dict[5].keyarg,"con")==0){ifound = 2;}
  if(strcasecmp(intra_dict[5].keyarg,"off")==0){ifound = 3;}
  if(ifound==0){
    keyarg_barf(intra_dict,file_name,fun_key,index);
  }
  if(ifound == 2 && clatoms_info->pi_beads>1){
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        printf("Constraints not implemented under  \n");
        printf(" path integral dynamics.            \n");
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        fflush(stdout);
        exit(1);
  }
  igo = imask1*imask2*imask3*imask4;
  if(igo==1){
    itype1 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind1)];
    itype2 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind2)];
    itype3 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind3)];
    itype4 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind4)];
    strcpy(build_intra->ctors_typ_now->atm1,atommaps->atm_typ[itype1]);
    strcpy(build_intra->ctors_typ_now->atm2,atommaps->atm_typ[itype2]);
    strcpy(build_intra->ctors_typ_now->atm3,atommaps->atm_typ[itype3]);
    strcpy(build_intra->ctors_typ_now->atm4,atommaps->atm_typ[itype4]);
    strcpy(build_intra->ctors_typ_now->label,intra_dict[6].keyarg);
    if(strcasecmp(build_intra->ctors_typ_now->label,"improper")==0){
      tors->nimpr++;
    }
  }
  if(ifound==1&&igo==1){
    if((tors->npow)+1 > build_intra->ntors_pow_max){
      build_intra->ntors_pow_max += 100;
      tors->j1_pow =(int*)crealloc(&(tors->j1_pow)[1],
       build_intra->ntors_pow_max*sizeof(int))-1;
      tors->j2_pow =(int*)crealloc(&(tors->j2_pow)[1],
       build_intra->ntors_pow_max*sizeof(int))-1;
      tors->j3_pow =(int*)crealloc(&(tors->j3_pow)[1],
       build_intra->ntors_pow_max*sizeof(int))-1;
      tors->j4_pow =(int*)crealloc(&(tors->j4_pow)[1],
       build_intra->ntors_pow_max*sizeof(int))-1;
      tors->jtyp_pow=(int*)crealloc(&(tors->jtyp_pow)[1],
        build_intra->ntors_pow_max*sizeof(int))-1;
    }
    itype = tors->ntyp_pow+1;
    for(i=1;i<=tors->ntyp_pow;i++){
      if((strcasecmp(build_intra->ctors_typ_pow[i].atm1,
       build_intra->ctors_typ_now->atm1)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm2,
         build_intra->ctors_typ_now->atm2)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm3,
         build_intra->ctors_typ_now->atm3)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm4,
         build_intra->ctors_typ_now->atm4)==0)
  &&(strcasecmp(build_intra->ctors_typ_pow[i].label,
         build_intra->ctors_typ_now->label)==0)) {itype=i;}
      if((strcasecmp(build_intra->ctors_typ_pow[i].atm1,
       build_intra->ctors_typ_now->atm4)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm2,
         build_intra->ctors_typ_now->atm3)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm3,
         build_intra->ctors_typ_now->atm2)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm4,
         build_intra->ctors_typ_now->atm1)==0)
  &&(strcasecmp(build_intra->ctors_typ_pow[i].label,
         build_intra->ctors_typ_now->label)==0)) {itype=i;}
    }
    if(itype>build_intra->ntors_typ_pow_max){
      build_intra->ntors_typ_pow_max += 100;
      build_intra->ctors_typ_pow =
 (CTORS *) crealloc(&(build_intra->ctors_typ_pow)[1],
      build_intra->ntors_typ_pow_max*sizeof(CTORS))-1;
    }
    if(itype==tors->ntyp_pow+1){
      tors->ntyp_pow++;
      strcpy(build_intra->ctors_typ_pow[itype].atm1,
      build_intra->ctors_typ_now->atm1);
       strcpy(build_intra->ctors_typ_pow[itype].atm2,
       build_intra->ctors_typ_now->atm2);
       strcpy(build_intra->ctors_typ_pow[itype].atm3,
       build_intra->ctors_typ_now->atm3);
       strcpy(build_intra->ctors_typ_pow[itype].atm4,
       build_intra->ctors_typ_now->atm4);
       strcpy(build_intra->ctors_typ_pow[itype].label,
       build_intra->ctors_typ_now->label);
    }
    tors->npow++;
    tors->j1_pow[tors->npow] = iatm_ind1 + clatoms_info->natm_tot;
    tors->j2_pow[tors->npow] = iatm_ind2 + clatoms_info->natm_tot;
    tors->j3_pow[tors->npow] = iatm_ind3 + clatoms_info->natm_tot;
    tors->j4_pow[tors->npow] = iatm_ind4 + clatoms_info->natm_tot;
    tors->jtyp_pow[tors->npow] = itype;
  }
  if(ifound==2&&igo==1){
    ires_off = atommaps->jres_jmol_typ_strt[jmol_typ]-1;
    atommaps->nfree_jres_jmol_typ[ires_off+iresidue] -= 1;
    atommaps->icons_jres_jmol_typ[ires_off+iresidue] = 1;
     if(tors->ncon+1 > build_intra->ntors_con_max){
       build_intra->ntors_con_max += 100;
       tors->j1_con = (int *) crealloc(&(tors->j1_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
       tors->j2_con = (int *) crealloc(&(tors->j2_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
       tors->j3_con = (int *) crealloc(&(tors->j3_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
       tors->j4_con = (int *) crealloc(&(tors->j4_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
       tors->jtyp_con = (int *) crealloc(&(tors->jtyp_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
     }
     itype = tors->ntyp_con+1;
     for(i=1;i<= tors->ntyp_con;i++){
       if((strcasecmp(build_intra->ctors_typ_con[i].atm1,
        build_intra->ctors_typ_now->atm1)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm2,
   build_intra->ctors_typ_now->atm2)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm3,
   build_intra->ctors_typ_now->atm3)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm4,
   build_intra->ctors_typ_now->atm4)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].label,
   build_intra->ctors_typ_now->label)==0)) {itype=i;}
       if((strcasecmp(build_intra->ctors_typ_con[i].atm1,
        build_intra->ctors_typ_now->atm4)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm2,
   build_intra->ctors_typ_now->atm3)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm3,
   build_intra->ctors_typ_now->atm2)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm4,
   build_intra->ctors_typ_now->atm1)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].label,
   build_intra->ctors_typ_now->label)==0)) {itype=i;}
     }
     if(itype>build_intra->ntors_typ_con_max){
       build_intra->ntors_typ_con_max += 100;
       build_intra->ctors_typ_con = (CTORS *)
  crealloc(&(build_intra->ctors_typ_con)[1],
    build_intra->ntors_typ_con_max*sizeof(CTORS))-1;
     }
     if(itype==tors->ntyp_con+1){
       tors->ntyp_con+=1;
       strcpy(build_intra->ctors_typ_con[itype].atm1,
       build_intra->ctors_typ_now->atm1);
       strcpy(build_intra->ctors_typ_con[itype].atm2,
       build_intra->ctors_typ_now->atm2);
       strcpy(build_intra->ctors_typ_con[itype].atm3,
       build_intra->ctors_typ_now->atm3);
       strcpy(build_intra->ctors_typ_con[itype].atm4,
       build_intra->ctors_typ_now->atm4);
       strcpy(build_intra->ctors_typ_con[itype].label,
       build_intra->ctors_typ_now->label);
     }
     tors->ncon += 1;
     tors->j1_con[tors->ncon] = iatm_ind1 + clatoms_info->natm_tot;
     tors->j2_con[tors->ncon] = iatm_ind2 + clatoms_info->natm_tot;
     tors->j3_con[tors->ncon] = iatm_ind3 + clatoms_info->natm_tot;
     tors->j4_con[tors->ncon] = iatm_ind4 + clatoms_info->natm_tot;
     tors->jtyp_con[tors->ncon] = itype;
    if((atommaps->ighost_flag[tors->j1_con[tors->ncon]]!=0)||
       (atommaps->ighost_flag[tors->j2_con[tors->ncon]]!=0)||
       (atommaps->ighost_flag[tors->j3_con[tors->ncon]]!=0)||
       (atommaps->ighost_flag[tors->j4_con[tors->ncon]]!=0)){
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        printf("Ghost atoms are not permitted in constrained torsion\n");
        printf("in molecule index %d in residue index %d in file %s\n",
                jmol_typ,iresidue,file_name);
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        fflush(stdout);
        exit(1);
    }
   }
  if(ifound==3&&igo==1){
    if(null_inter_parse->ntors_nul+1> build_intra->ntors_nul_max){
      build_intra->ntors_nul_max += 100;
      null_inter_parse->jtors1_nul =
 (int *) crealloc(&(null_inter_parse->jtors1_nul[1]),
    build_intra->ntors_nul_max*sizeof(int))-1;
      null_inter_parse->jtors2_nul =
         (int *) crealloc(&(null_inter_parse->jtors2_nul[1]),
     build_intra->ntors_nul_max*sizeof(int))-1;
      null_inter_parse->jtors3_nul =
 (int *) crealloc(&(null_inter_parse->jtors3_nul[1]),
    build_intra->ntors_nul_max*sizeof(int))-1;
      null_inter_parse->jtors4_nul =
 (int *) crealloc(&(null_inter_parse->jtors4_nul[1]),
    build_intra->ntors_nul_max*sizeof(int))-1;
    }
    null_inter_parse->ntors_nul += 1;
    null_inter_parse->jtors1_nul[null_inter_parse->ntors_nul] =
                                      iatm_ind1 + clatoms_info->natm_tot ;
    null_inter_parse->jtors2_nul[null_inter_parse->ntors_nul] =
                                        iatm_ind2 + clatoms_info->natm_tot;
    null_inter_parse->jtors3_nul[null_inter_parse->ntors_nul] =
                                 iatm_ind3 + clatoms_info->natm_tot;
    null_inter_parse->jtors4_nul[null_inter_parse->ntors_nul] =
                                 iatm_ind4 + clatoms_info->natm_tot;
  }
}

canonical_original_code:
void set_tors_params(struct dict_word intra_dict[], int num_intra_dict, char *fun_key, char *file_name, int jmol_typ, struct clatoms_info *clatoms_info, struct atommaps *atommaps, struct tors *tors, struct null_inter_parse *null_inter_parse, struct build_intra *build_intra, int iresidue, int ires_off)
{
  int num; int index; int ifound; int igo;
  int itype1; int itype2; int itype3; int itype4;
  int iatm_ind1; int iatm_ind2; int iatm_ind3; int iatm_ind4;
  int imask1; int imask2; int imask3; int imask4;
  int i; int itype;
  for(i=1;i<=num_intra_dict;i++){
    if(intra_dict[i].iuset==0 && intra_dict[i].key_type==1){
      keyword_miss(intra_dict,file_name,fun_key,i);
    }
  }
  index = 1;
  sscanf(intra_dict[1].keyarg,"%d",&num);
  iatm_ind1 = num;
  if(iatm_ind1>build_intra->natmind_1res_now||iatm_ind1<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask1 = build_intra->mask_atm[iatm_ind1];
  if(imask1>0)iatm_ind1 = build_intra->index_atm[iatm_ind1];
  index = 2;
  sscanf(intra_dict[2].keyarg,"%d",&num);
  iatm_ind2 = num;
  if(iatm_ind2>build_intra->natmind_1res_now||iatm_ind2<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask2 = build_intra->mask_atm[iatm_ind2];
  if(imask2>0)iatm_ind2 = build_intra->index_atm[iatm_ind2];
  index = 3;
  sscanf(intra_dict[3].keyarg,"%d",&num);
  iatm_ind3 = num;
  if(iatm_ind3>build_intra->natmind_1res_now||iatm_ind3<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask3 = build_intra->mask_atm[iatm_ind3];
  if(imask3>0)iatm_ind3 = build_intra->index_atm[iatm_ind3];
  index = 4;
  sscanf(intra_dict[4].keyarg,"%d",&num);
  iatm_ind4 = num;
  if(iatm_ind4>build_intra->natmind_1res_now||iatm_ind4<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask4 = build_intra->mask_atm[iatm_ind4];
  if(imask4>0)iatm_ind4 = build_intra->index_atm[iatm_ind4];
  index = 5;
  ifound = 0;
  if(strcasecmp(intra_dict[5].keyarg,"on")==0) {ifound = 1;}
  if(strcasecmp(intra_dict[5].keyarg,"con")==0){ifound = 2;}
  if(strcasecmp(intra_dict[5].keyarg,"off")==0){ifound = 3;}
  if(ifound==0){
    keyarg_barf(intra_dict,file_name,fun_key,index);
  }
  if(ifound == 2 && clatoms_info->pi_beads>1){
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        printf("Constraints not implemented under  \n");
        printf(" path integral dynamics.            \n");
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        fflush(stdout);
        exit(1);
  }
  igo = imask1*imask2*imask3*imask4;
  if(igo==1){
    itype1 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind1)];
    itype2 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind2)];
    itype3 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind3)];
    itype4 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind4)];
    strcpy(build_intra->ctors_typ_now->atm1,atommaps->atm_typ[itype1]);
    strcpy(build_intra->ctors_typ_now->atm2,atommaps->atm_typ[itype2]);
    strcpy(build_intra->ctors_typ_now->atm3,atommaps->atm_typ[itype3]);
    strcpy(build_intra->ctors_typ_now->atm4,atommaps->atm_typ[itype4]);
    strcpy(build_intra->ctors_typ_now->label,intra_dict[6].keyarg);
    if(strcasecmp(build_intra->ctors_typ_now->label,"improper")==0){
      tors->nimpr++;
    }
  }
  if(ifound==1&&igo==1){
    if((tors->npow)+1 > build_intra->ntors_pow_max){
      build_intra->ntors_pow_max += 100;
      tors->j1_pow =(int *)crealloc(&(tors->j1_pow)[1],
       build_intra->ntors_pow_max*sizeof(int))-1;
      tors->j2_pow =(int *)crealloc(&(tors->j2_pow)[1],
       build_intra->ntors_pow_max*sizeof(int))-1;
      tors->j3_pow =(int *)crealloc(&(tors->j3_pow)[1],
       build_intra->ntors_pow_max*sizeof(int))-1;
      tors->j4_pow =(int *)crealloc(&(tors->j4_pow)[1],
       build_intra->ntors_pow_max*sizeof(int))-1;
      tors->jtyp_pow=(int *)crealloc(&(tors->jtyp_pow)[1],
        build_intra->ntors_pow_max*sizeof(int))-1;
    }
    itype = tors->ntyp_pow+1;
    for(i=1;i<=tors->ntyp_pow;i++){
      if((strcasecmp(build_intra->ctors_typ_pow[i].atm1,
       build_intra->ctors_typ_now->atm1)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm2,
         build_intra->ctors_typ_now->atm2)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm3,
         build_intra->ctors_typ_now->atm3)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm4,
         build_intra->ctors_typ_now->atm4)==0)
  &&(strcasecmp(build_intra->ctors_typ_pow[i].label,
         build_intra->ctors_typ_now->label)==0)) {itype=i;}
      if((strcasecmp(build_intra->ctors_typ_pow[i].atm1,
       build_intra->ctors_typ_now->atm4)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm2,
         build_intra->ctors_typ_now->atm3)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm3,
         build_intra->ctors_typ_now->atm2)==0)
         &&(strcasecmp(build_intra->ctors_typ_pow[i].atm4,
         build_intra->ctors_typ_now->atm1)==0)
  &&(strcasecmp(build_intra->ctors_typ_pow[i].label,
         build_intra->ctors_typ_now->label)==0)) {itype=i;}
    }
    if(itype>build_intra->ntors_typ_pow_max){
      build_intra->ntors_typ_pow_max += 100;
      build_intra->ctors_typ_pow =
 (struct CTORS *) crealloc(&(build_intra->ctors_typ_pow)[1],
      build_intra->ntors_typ_pow_max*sizeof(CTORS))-1;
    }
    if(itype==tors->ntyp_pow+1){
      tors->ntyp_pow++;
      strcpy(build_intra->ctors_typ_pow[itype].atm1,
      build_intra->ctors_typ_now->atm1);
       strcpy(build_intra->ctors_typ_pow[itype].atm2,
       build_intra->ctors_typ_now->atm2);
       strcpy(build_intra->ctors_typ_pow[itype].atm3,
       build_intra->ctors_typ_now->atm3);
       strcpy(build_intra->ctors_typ_pow[itype].atm4,
       build_intra->ctors_typ_now->atm4);
       strcpy(build_intra->ctors_typ_pow[itype].label,
       build_intra->ctors_typ_now->label);
    }
    tors->npow++;
    tors->j1_pow[tors->npow] = iatm_ind1 + clatoms_info->natm_tot;
    tors->j2_pow[tors->npow] = iatm_ind2 + clatoms_info->natm_tot;
    tors->j3_pow[tors->npow] = iatm_ind3 + clatoms_info->natm_tot;
    tors->j4_pow[tors->npow] = iatm_ind4 + clatoms_info->natm_tot;
    tors->jtyp_pow[tors->npow] = itype;
  }
  if(ifound==2&&igo==1){
    ires_off = atommaps->jres_jmol_typ_strt[jmol_typ]-1;
    atommaps->nfree_jres_jmol_typ[ires_off+iresidue] -= 1;
    atommaps->icons_jres_jmol_typ[ires_off+iresidue] = 1;
     if(tors->ncon+1 > build_intra->ntors_con_max){
       build_intra->ntors_con_max += 100;
       tors->j1_con = (int *) crealloc(&(tors->j1_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
       tors->j2_con = (int *) crealloc(&(tors->j2_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
       tors->j3_con = (int *) crealloc(&(tors->j3_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
       tors->j4_con = (int *) crealloc(&(tors->j4_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
       tors->jtyp_con = (int *) crealloc(&(tors->jtyp_con)[1],
     build_intra->ntors_con_max*sizeof(int))-1;
     }
     itype = tors->ntyp_con+1;
     for(i=1;i<= tors->ntyp_con;i++){
       if((strcasecmp(build_intra->ctors_typ_con[i].atm1,
        build_intra->ctors_typ_now->atm1)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm2,
   build_intra->ctors_typ_now->atm2)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm3,
   build_intra->ctors_typ_now->atm3)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm4,
   build_intra->ctors_typ_now->atm4)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].label,
   build_intra->ctors_typ_now->label)==0)) {itype=i;}
       if((strcasecmp(build_intra->ctors_typ_con[i].atm1,
        build_intra->ctors_typ_now->atm4)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm2,
   build_intra->ctors_typ_now->atm3)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm3,
   build_intra->ctors_typ_now->atm2)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].atm4,
   build_intra->ctors_typ_now->atm1)==0)
   &&(strcasecmp(build_intra->ctors_typ_con[i].label,
   build_intra->ctors_typ_now->label)==0)) {itype=i;}
     }
     if(itype>build_intra->ntors_typ_con_max){
       build_intra->ntors_typ_con_max += 100;
       build_intra->ctors_typ_con = (struct CTORS *)
  crealloc(&(build_intra->ctors_typ_con)[1],
    build_intra->ntors_typ_con_max*sizeof(CTORS))-1;
     }
     if(itype==tors->ntyp_con+1){
       tors->ntyp_con+=1;
       strcpy(build_intra->ctors_typ_con[itype].atm1,
       build_intra->ctors_typ_now->atm1);
       strcpy(build_intra->ctors_typ_con[itype].atm2,
       build_intra->ctors_typ_now->atm2);
       strcpy(build_intra->ctors_typ_con[itype].atm3,
       build_intra->ctors_typ_now->atm3);
       strcpy(build_intra->ctors_typ_con[itype].atm4,
       build_intra->ctors_typ_now->atm4);
       strcpy(build_intra->ctors_typ_con[itype].label,
       build_intra->ctors_typ_now->label);
     }
     tors->ncon += 1;
     tors->j1_con[tors->ncon] = iatm_ind1 + clatoms_info->natm_tot;
     tors->j2_con[tors->ncon] = iatm_ind2 + clatoms_info->natm_tot;
     tors->j3_con[tors->ncon] = iatm_ind3 + clatoms_info->natm_tot;
     tors->j4_con[tors->ncon] = iatm_ind4 + clatoms_info->natm_tot;
     tors->jtyp_con[tors->ncon] = itype;
    if((atommaps->ighost_flag[tors->j1_con[tors->ncon]]!=0)||
       (atommaps->ighost_flag[tors->j2_con[tors->ncon]]!=0)||
       (atommaps->ighost_flag[tors->j3_con[tors->ncon]]!=0)||
       (atommaps->ighost_flag[tors->j4_con[tors->ncon]]!=0)){
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        printf("Ghost atoms are not permitted in constrained torsion\n");
        printf("in molecule index %d in residue index %d in file %s\n",
                jmol_typ,iresidue,file_name);
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        fflush(stdout);
        exit(1);
    }
   }
  if(ifound==3&&igo==1){
    if(null_inter_parse->ntors_nul+1> build_intra->ntors_nul_max){
      build_intra->ntors_nul_max += 100;
      null_inter_parse->jtors1_nul =
 (int *) crealloc(&(null_inter_parse->jtors1_nul[1]),
    build_intra->ntors_nul_max*sizeof(int))-1;
      null_inter_parse->jtors2_nul =
         (int *) crealloc(&(null_inter_parse->jtors2_nul[1]),
     build_intra->ntors_nul_max*sizeof(int))-1;
      null_inter_parse->jtors3_nul =
 (int *) crealloc(&(null_inter_parse->jtors3_nul[1]),
    build_intra->ntors_nul_max*sizeof(int))-1;
      null_inter_parse->jtors4_nul =
 (int *) crealloc(&(null_inter_parse->jtors4_nul[1]),
    build_intra->ntors_nul_max*sizeof(int))-1;
    }
    null_inter_parse->ntors_nul += 1;
    null_inter_parse->jtors1_nul[null_inter_parse->ntors_nul] =
                                      iatm_ind1 + clatoms_info->natm_tot ;
    null_inter_parse->jtors2_nul[null_inter_parse->ntors_nul] =
                                        iatm_ind2 + clatoms_info->natm_tot;
    null_inter_parse->jtors3_nul[null_inter_parse->ntors_nul] =
                                 iatm_ind3 + clatoms_info->natm_tot;
    null_inter_parse->jtors4_nul[null_inter_parse->ntors_nul] =
                                 iatm_ind4 + clatoms_info->natm_tot;
  }
}

variable_types: struct dict_word { int iflag; char keyword[50]; char error_mes[100]; } []

variable_types: struct clatoms_info { int natm_tot; int pi_beads; int pi_beads_proc; int pi_beads_proc_st; int pi_beads_proc_end; int nfree; int nfree_pimd; int nchrg; int pi_beads_full_ter; int pi_beads_res_ter; int pi_beads_full_tra; int pi_beads_res_tra; int cg_reset_flag; int natm_mall; int nchrg_mall; int hess_calc; int natm_proc; int N_H2; int i_H2_start; int nab_initio; int myatm_start; double gamma_adb; double wght_pimd; double pi_temperature; double pi_beads_full_ter_wght; double pi_beads_res_ter_wght; double pi_beads_full_tra_wght; double pi_beads_res_tra_wght; double rcut_spread; double mass_sc_fact; int *ip_lab; int *ichrg; int *cp_vlnc_up; int *cp_atm_flag; double *mass; double *q; double *alp_pol; double *b_neut; double *roll_sc; double *text_atm; double *text_mol; double *xold; double *prekf; double *xmod; double alp_ewd; } *

variable_types: struct atommaps { int nmol_typ; int nres_typ; int natm_typ; int nfreeze; int nfreeze_mall; int natm_typ_mall; int nres_typ_max; int nres_max; int nres_tot; int nres_sum; int pimd_freez_typ; char (*atm_typ)[50]; char (*res_typ)[50]; char (*mol_typ)[50]; int *nmol_jmol_typ; int *nres_1mol_jmol_typ; int *jatm_jmol_typ_strt; int *jres_jmol_typ_strt; int *ires_typ_jres_jmol_typ; int *jatm_jres_1mol_jmol_typ_strt; int *natm_1mol_jmol_typ; int *natm_jres_jmol_typ; int *nfree_1mol_jmol_typ; int *nfree_jres_jmol_typ; int *icons_jmol_typ; int *icons_jres_jmol_typ; int *natm_jmol_typ; int *iatm_mol_typ; int *iatm_res_typ; int *iatm_atm_typ; int *iatm_atm_typ_nl; int *iatm_atm_typ_nl_rev; int *imap_atm_typ_nl; int *imap_atm_typ_nl_gh; int *iatm_mol_num; int *iatm_proc_num; int *iatm_res_num; int *ighost_flag; int *freeze_flag; int *freeze_map; int *atom_label; int *cp_atm_lst; } *

variable_types: struct tors { int npow; int ntyp_pow; int nimpr; int ncon; int ntyp_con; int ntors_pow_mall; int ntors_typ_pow_mall; int ntors_con_mall; int ntors_typ_con_mall; int block_pow_on; int block_con_on; int ncon_tot; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_pow_conflict_3; int *iblock_con_size; int *iblock_con_conflict_1; int *iblock_con_conflict_3; double *c_0; double *s_0; double *dc_0; double *ds_0; double *eq_pow; double *al_con; double *eq_con; } *

variable_types: struct null_inter_parse { int nbond_nul; int ntors_nul; int *jbond1_nul; int *jbend1_nul; int *jtors1_nul; int *jonfo1_nul; } *

variable_types: struct build_intra { struct bond_site { char bond_site_name[5][50]; int branch_1[5]; int branch_2[5]; int valence; int improper_ind[5]; } *bond_site; int *mask_atm; int *index_atm; int *iatm_ind_chk; int *ires_ind_chk; int natm_1res_pure_now; int natm_tot_max; int nfreeze_max; int nfreeze_now; int natm_1res_now; int natm_1res_max; int natmind_1res_now; int natmind_1res_max; int nghost_now; int nghost_tot_max; int nbond_pow_max; int nbond_con_max; int nbond_nul_max; int nbond_typ_pow_max; int nbond_typ_con_max; struct CBOND { char atm1[50]; } *cbond_typ_pow; struct CBOND *cbond_typ_con; struct CBOND *cbond_typ_now; int nbend_pow_max; int nbend_con_max; int nbend_nul_max; int nbend_typ_pow_max; int nbend_typ_con_max; struct CBEND { char atm1[50]; } *cbend_typ_pow; struct CBEND *cbend_typ_con; struct CBEND *cbend_typ_now; int ntors_pow_max; int ntors_con_max; int ntors_nul_max; int ntors_typ_pow_max; int ntors_typ_con_max; struct CTORS { char atm1[50]; } *ctors_typ_pow; struct CTORS *ctors_typ_con; struct CTORS *ctors_typ_now; int nonfo_max; int nonfo_nul_max; int nonfo_typ_max; struct CBOND *confo_typ; struct CBOND *confo_typ_now; int nbend_bnd_max; int nbend_bnd_typ_max; struct CBEND *cbend_bnd_typ; struct CBEND *cbend_bnd_typ_now; int ngrp_33_max; int ngrp_watt_33_max; int ngrp_21_max; int ngrp_43_max; int ngrp_23_max; int ngrp_46_max; int ngrp_typ_21_max; int ngrp_typ_43_max; int ngrp_typ_33_max; int ngrp_typ_watt_33_max; int ngrp_typ_23_max; int ngrp_typ_46_max; struct CGRP_CONS { char atm1[50]; } *cgrp_typ_now; struct CGRP_CONS *cgrp_typ_21; struct CGRP_CONS *cgrp_typ_43; struct CGRP_CONS *cgrp_typ_33; struct CGRP_CONS *cgrp_typ_watt_33; struct CGRP_CONS *cgrp_typ_23; struct CGRP_CONS *cgrp_typ_46; int natm_typ_max; int nres_typ_max; char *strip1; int *ibend_bnd_typ_pure; int *ibend_bnd_typ_map; } *

variable_types: iresidue int

variable_types: num int

variable_types: index int

variable_types: ifound int

variable_types: igo int

variable_types: i int

variable_types: itype int

user_defined_types: struct build_intra { struct bond_site *bond_site; int *mask_atm; int *index_atm; int *iatm_ind_chk; int *ires_ind_chk; int natm_1res_pure_now; int natm_tot_max; int nfreeze_max; int nfreeze_now; int natm_1res_now; int natm_1res_max; int natmind_1res_now; int natmind_1res_max; int nghost_now; int nghost_tot_max; int nbond_pow_max; int nbond_con_max; int nbond_nul_max; int nbond_typ_pow_max; int nbond_typ_con_max; struct CBOND *cbond_typ_pow; struct CBOND *cbond_typ_con; struct CBOND *cbond_typ_now; int nbend_pow_max; int nbend_con_max; int nbend_nul_max; int nbend_typ_pow_max; int nbend_typ_con_max; struct CBEND *cbend_typ_pow; struct CBEND *cbend_typ_con; struct CBEND *cbend_typ_now; int ntors_pow_max; int ntors_con_max; int ntors_nul_max; int ntors_typ_pow_max; int ntors_typ_con_max; struct CTORS *ctors_typ_pow; struct CTORS *ctors_typ_con; struct CTORS *ctors_typ_now; int nonfo_max; int nonfo_nul_max; int nonfo_typ_max; struct CBOND *confo_typ; struct CBOND *confo_typ_now; int nbend_bnd_max; int nbend_bnd_typ_max; struct CBEND *cbend_bnd_typ; struct CBEND *cbend_bnd_typ_now; int ngrp_33_max; int ngrp_watt_33_max; int ngrp_21_max; int ngrp_43_max; int ngrp_23_max; int ngrp_46_max; int ngrp_typ_21_max; int ngrp_typ_43_max; int ngrp_typ_33_max; int ngrp_typ_watt_33_max; int ngrp_typ_23_max; int ngrp_typ_46_max; struct CGRP_CONS *cgrp_typ_now; struct CGRP_CONS *cgrp_typ_21; struct CGRP_CONS *cgrp_typ_43; struct CGRP_CONS *cgrp_typ_33; struct CGRP_CONS *cgrp_typ_watt_33; struct CGRP_CONS *cgrp_typ_23; struct CGRP_CONS *cgrp_typ_46; int natm_typ_max; int nres_typ_max; char *strip1; int *ibend_bnd_typ_pure; int *ibend_bnd_typ_map; }


repo: TuckermanGroup/PINY

original_code:
void move_pos_box(CELL *cell,PAR_RAHMAN *par_rahman,
                  double *clatoms_x,double *clatoms_y,
                  double *clatoms_z,double *clatoms_vx,
                  double *clatoms_vy,double *clatoms_vz,
                  double dt,int natm_tot)
    {
  int MPI_INT = 1;
  int MPI_DOUBLE = 1;
  int MPI_CHAR = 1;
  int MPI_MAX = 1;
  int MPI_SUM = 1;
  int MPI_ANY_TAG = 1;
  int MPI_ANY_SOURCE = 1;
  int *MPI_BOTTOM = {0};
  int i,j,ip,ipart,joff,n;
  double e2,e4,e6,e8;
  double tempx,tempy,tempz;
  double tempvx,tempvy,tempvz;
  double dt2,aa,arg2,poly;
  double *roll_mtx = par_rahman->roll_mtx;
  double *roll_mtv = par_rahman->roll_mtv;
  double *vtemps = par_rahman->vtemps;
  double *vgmat = par_rahman->vgmat;
  double *vtempx = par_rahman->vtempx;
  double *vtempv = par_rahman->vtempv;
  double *veig = par_rahman->veig;
  double *veigv = par_rahman->veigv;
  double *fv1 = par_rahman->fv1;
  double *fv2 = par_rahman->fv2;
  double *vexpdt = par_rahman->vexpdt;
  double *vsindt = par_rahman->vsindt;
  double *hmat_t = par_rahman->hmat_t;
  double *hmato = par_rahman->hmato;
  double *hmat = cell->hmat;
  double *hmati = cell->hmati;
  int iperd = cell->iperd;
  e2=1.0/(2.0*3.0);e4=e2/(4.0*5.0);
  e6= e4/(6.0*7.0);e8=e6/(8.0*9.0);
  dt2 = dt/2.0;
  for(i=1;i<=9;i++){vtemps[i]=vgmat[i];}
  diag33(vtemps,veig,veigv,fv1,fv2);
  for(i=1;i<=3;i++){
    aa = exp(dt2*(veig)[i]);
    vexpdt[i] = aa*aa;
    arg2 = ((veig)[i]*dt2)*(veig[i]*dt2);
    poly = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
    vsindt[i] = aa*poly;
  }
  for(i=1;i<=3;i++){
    joff = (i-1)*3 ;
    for(j=1;j<=3;j++){
      vtempx[j+joff] = veigv[j+joff]*vexpdt[i];
      vtempv[j+joff] = veigv[j+joff]*vsindt[i];
    }
  }
  n = 3;
  matmul_t2(veigv,vtempx,roll_mtx,n);
  matmul_t2(veigv,vtempv,roll_mtv,n);
  for(ipart=1;ipart<=(natm_tot); ++ipart) {
    tempx = clatoms_x[ipart]*roll_mtx[1]
             +clatoms_y[ipart]*roll_mtx[2]
             +clatoms_z[ipart]*roll_mtx[3];
    tempy = clatoms_x[ipart]*roll_mtx[4]
             +clatoms_y[ipart]*roll_mtx[5]
             +clatoms_z[ipart]*roll_mtx[6];
    tempz = clatoms_x[ipart]*roll_mtx[7]
             +clatoms_y[ipart]*roll_mtx[8]
             +clatoms_z[ipart]*roll_mtx[9];
    tempvx = clatoms_vx[ipart]*roll_mtv[1]
            +clatoms_vy[ipart]*roll_mtv[2]
            +clatoms_vz[ipart]*roll_mtv[3];
    tempvy = clatoms_vx[ipart]*roll_mtv[4]
            +clatoms_vy[ipart]*roll_mtv[5]
            +clatoms_vz[ipart]*roll_mtv[6];
    tempvz = clatoms_vx[ipart]*roll_mtv[7]
            +clatoms_vy[ipart]*roll_mtv[8]
            +clatoms_vz[ipart]*roll_mtv[9];
    clatoms_x[ipart] = tempx+tempvx*dt;
    clatoms_y[ipart] = tempy+tempvy*dt;
    clatoms_z[ipart] = tempz+tempvz*dt;
  }
  n = 3;
  matmul_t(hmato,veigv,hmat_t,n);
  for(i=1;i<=3;i++){
    joff = (i-1)*3 ;
    for(j=1;j<=3;j++){
      hmat_t[j+joff] *= vexpdt[j];
    }
  }
  matmul_tt(hmat_t,veigv,hmat,n);
  gethinv(hmat,hmati,&(cell->vol),iperd);
   }

canonical_original_code:
void move_pos_box(struct cell *cell, struct par_rahman *par_rahman, double *clatoms_x, double *clatoms_y, double *clatoms_z, double *clatoms_vx, double *clatoms_vy, double *clatoms_vz, double dt, int natm_tot)
    {
  int MPI_INT = 1;
  int MPI_DOUBLE = 1;
  int MPI_CHAR = 1;
  int MPI_MAX = 1;
  int MPI_SUM = 1;
  int MPI_ANY_TAG = 1;
  int MPI_ANY_SOURCE = 1;
  int *MPI_BOTTOM = {0};
  int i; int j; int ip; int ipart; int joff; int n;
  double e2; double e4; double e6; double e8;
  double tempx; double tempy; double tempz;
  double tempvx; double tempvy; double tempvz;
  double dt2; double aa; double arg2; double poly;
  double *roll_mtx = par_rahman->roll_mtx;
  double *roll_mtv = par_rahman->roll_mtv;
  double *vtemps = par_rahman->vtemps;
  double *vgmat = par_rahman->vgmat;
  double *vtempx = par_rahman->vtempx;
  double *vtempv = par_rahman->vtempv;
  double *veig = par_rahman->veig;
  double *veigv = par_rahman->veigv;
  double *fv1 = par_rahman->fv1;
  double *fv2 = par_rahman->fv2;
  double *vexpdt = par_rahman->vexpdt;
  double *vsindt = par_rahman->vsindt;
  double *hmat_t = par_rahman->hmat_t;
  double *hmato = par_rahman->hmato;
  double *hmat = cell->hmat;
  double *hmati = cell->hmati;
  int iperd = cell->iperd;
  e2=1.0/(2.0*3.0);e4=e2/(4.0*5.0);
  e6= e4/(6.0*7.0);e8=e6/(8.0*9.0);
  dt2 = dt/2.0;
  for(i=1;i<=9;i++){vtemps[i]=vgmat[i];}
  diag33(vtemps,veig,veigv,fv1,fv2);
  for(i=1;i<=3;i++){
    aa = exp(dt2*(veig)[i]);
    vexpdt[i] = aa*aa;
    arg2 = ((veig)[i]*dt2)*(veig[i]*dt2);
    poly = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
    vsindt[i] = aa*poly;
  }
  for(i=1;i<=3;i++){
    joff = (i-1)*3 ;
    for(j=1;j<=3;j++){
      vtempx[j+joff] = veigv[j+joff]*vexpdt[i];
      vtempv[j+joff] = veigv[j+joff]*vsindt[i];
    }
  }
  n = 3;
  matmul_t2(veigv,vtempx,roll_mtx,n);
  matmul_t2(veigv,vtempv,roll_mtv,n);
  for(ipart=1;ipart<=(natm_tot); ++ipart) {
    tempx = clatoms_x[ipart]*roll_mtx[1]
             +clatoms_y[ipart]*roll_mtx[2]
             +clatoms_z[ipart]*roll_mtx[3];
    tempy = clatoms_x[ipart]*roll_mtx[4]
             +clatoms_y[ipart]*roll_mtx[5]
             +clatoms_z[ipart]*roll_mtx[6];
    tempz = clatoms_x[ipart]*roll_mtx[7]
             +clatoms_y[ipart]*roll_mtx[8]
             +clatoms_z[ipart]*roll_mtx[9];
    tempvx = clatoms_vx[ipart]*roll_mtv[1]
            +clatoms_vy[ipart]*roll_mtv[2]
            +clatoms_vz[ipart]*roll_mtv[3];
    tempvy = clatoms_vx[ipart]*roll_mtv[4]
            +clatoms_vy[ipart]*roll_mtv[5]
            +clatoms_vz[ipart]*roll_mtv[6];
    tempvz = clatoms_vx[ipart]*roll_mtv[7]
            +clatoms_vy[ipart]*roll_mtv[8]
            +clatoms_vz[ipart]*roll_mtv[9];
    clatoms_x[ipart] = tempx+tempvx*dt;
    clatoms_y[ipart] = tempy+tempvy*dt;
    clatoms_z[ipart] = tempz+tempvz*dt;
  }
  n = 3;
  matmul_t(hmato,veigv,hmat_t,n);
  for(i=1;i<=3;i++){
    joff = (i-1)*3 ;
    for(j=1;j<=3;j++){
      hmat_t[j+joff] *= vexpdt[j];
    }
  }
  matmul_tt(hmat_t,veigv,hmat,n);
  gethinv(hmat,hmati,&(cell->vol),iperd);
   }

variable_types: struct cell { int iperd; int intra_perds; int cubic_box_flag; int hmat_int_typ; int hmat_cons_typ; int imov_cp_box; double vol; double vol_cp; double vol0; double area; double alpha_conv_dual; double *hmat; double *hmat_ewd; double *hmat_cp; double *cp_box_center; double *cp_box_center_rel; double *cp_vbox_center; double *cp_fbox_center; } *

variable_types: struct par_rahman { double vol; double mass_hm; double c1_hm; double roll_scg; double roll_scg0; double area; double *vgmat; double *vgmat_glob; double *fgmat_p; double *roll_mtv; double *roll_mtvv; double *vtemps; double *vexpdt; double *vtempx; double *hmat_t; double *fv1; double *vgmat_g_wght; } *

variable_types: dt double

variable_types: j int

variable_types: ip int

variable_types: ipart int

variable_types: joff int

variable_types: n int

variable_types: tempx double

variable_types: tempy double

variable_types: tempz double

variable_types: tempvx double

variable_types: tempvy double

variable_types: tempvz double

variable_types: aa double

variable_types: poly double

variable_types:
vtemps
double *

variable_types:
vgmat
double *

variable_types:
vtempx
double *

variable_types:
vtempv
double *

variable_types:
veig
double *

variable_types:
veigv
double *

variable_types:
vexpdt
double *

variable_types:
vsindt
double *

variable_types:
hmato
double *

variable_types:
hmat
double *

variable_types:
hmati
double *

variable_types: iperd int

return_type: void


original_code:
void move_pos_box_upper(double *clatoms_x,double *clatoms_y,
                        double *clatoms_z,double *clatoms_vx,
                        double *clatoms_vy,double *clatoms_vz,
                        double *hmat, double *hmati,double *vgmat,
                        double dt,int natm_tot,int myatm_start, int myatm_end)
                 {
   int i,ip,iatm,iii,ires,nres;
   double dti24,vg48,dt_res,dt2_res,dt24_res;
   double vg15,vg19,vg59,dt2,dt24;
   double gamma11,gamma22,gamma33;
   double sinh11,sinh22,sinh33;
   double sindt,arg2;
   double e2,e4,e6,e8;
   double ax,ay,az,bx,by,bz;
   double hmat_old[10],hmat_temp[10];
   e2=1.0/(2.0*3.0);e4=e2/(4.0*5.0);
   e6= e4/(6.0*7.0);e8=e6/(8.0*9.0);
   dt2 = dt/2.0;
   dt24 = dt2*dt2;
   vg48 = vgmat[4]*vgmat[8];
   nres = 1;
   dt_res = dt /((double)nres);
   dt2_res = dt2 /((double)nres);
   dt24_res = dt24/((double)(nres*nres));
   gamma11 = (vgmat[1]*dt_res)/2.0;
   arg2 = gamma11*gamma11;
   sinh11 = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
   gamma22 = (vgmat[5]*dt_res)/2.0;
   arg2 = gamma22*gamma22;
   sinh22 = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
   gamma33 = (vgmat[9]*dt_res)/2.0;
   arg2 = gamma33*gamma33;
   sinh33 = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
   ax = dt_res*sinh11*exp(vgmat[1]*dt2_res);
   ay = dt_res*sinh22*exp(vgmat[5]*dt2_res);
   az = dt_res*sinh33*exp(vgmat[9]*dt2_res);
   bx = exp(vgmat[1]*dt_res);
   by = exp(vgmat[5]*dt_res);
   bz = exp(vgmat[9]*dt_res);
   for(ires=1;ires<=nres;ires++){
     for(iatm=myatm_start;iatm<=myatm_end;iatm++){
       clatoms_x[iatm] += (vgmat[4]*clatoms_y[iatm]*dt2_res
                           +0.5*vg48*dt24_res*clatoms_z[iatm]
                           +vgmat[7]*clatoms_z[iatm]*dt2_res);
       clatoms_y[iatm] += (vgmat[8]*clatoms_z[iatm]*dt2_res);
       clatoms_x[iatm] = ax*clatoms_vx[iatm] + bx*clatoms_x[iatm];
       clatoms_y[iatm] = ay*clatoms_vy[iatm] + by*clatoms_y[iatm];
       clatoms_z[iatm] = az*clatoms_vz[iatm] + bz*clatoms_z[iatm];
       clatoms_x[iatm] += (vgmat[4]*clatoms_y[iatm]*dt2_res
                           +0.5*vg48*dt24_res*clatoms_z[iatm]
                           +vgmat[7]*clatoms_z[iatm]*dt2_res);
       clatoms_y[iatm] += (vgmat[8]*clatoms_z[iatm]*dt2_res);
     }
   }
   nres = 5;
   dt_res = dt/((double)nres);
   dt24_res = dt24/((double)(nres*nres));
   for(ires=1;ires<=nres;ires++){
     hmat[7] += (vgmat[4]*hmat[8]*dt_res);
     for(i=1;i<=9;i++){hmat_old[i] = hmat[i];}
     hmat[1] = hmat_old[1]*exp(vgmat[1]*dt_res);
     hmat[5] = hmat_old[5]*exp(vgmat[5]*dt_res);
     hmat[9] = hmat_old[9]*exp(vgmat[9]*dt_res);
     vg15 = (vgmat[1]-vgmat[5])*dt_res/2.0;
     arg2 = vg15*vg15;
     sindt = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
     hmat[4] = hmat_old[4]*exp(vgmat[1]*dt_res)
              + hmat_old[5]*vgmat[4]*dt_res
                *exp((vgmat[1]+vgmat[5])*dt_res/2.0)*sindt;
     vg59 = (vgmat[5]-vgmat[9])*dt_res/2.0;
     arg2 = vg59*vg59;
     sindt = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
     hmat[8] = hmat_old[8]*exp(vgmat[5]*dt_res)
              + hmat_old[9]*vgmat[8]*dt_res
                *exp((vgmat[5]+vgmat[9])*dt_res/2.0)*sindt;
     vg19 = (vgmat[1]-vgmat[9])*dt_res;
     arg2 = vg19*vg19;
     sindt = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
     hmat[7] = hmat_old[7]*exp(vgmat[1]*dt_res)
              + hmat_old[9]*vgmat[7]*dt_res
                *exp((vgmat[1]+vgmat[9])*dt_res)*sindt;
        hmat[7] += vgmat[4]*hmat[8]*dt_res;
   }
     }

canonical_original_code:
void move_pos_box_upper(double *clatoms_x, double *clatoms_y, double *clatoms_z, double *clatoms_vx, double *clatoms_vy, double *clatoms_vz, double *hmat, double *hmati, double *vgmat, double dt, int natm_tot, int myatm_start, int myatm_end)
                 {
   int i; int ip; int iatm; int iii; int ires; int nres;
   double dti24; double vg48; double dt_res; double dt2_res; double dt24_res;
   double vg15; double vg19; double vg59; double dt2; double dt24;
   double gamma11; double gamma22; double gamma33;
   double sinh11; double sinh22; double sinh33;
   double sindt; double arg2;
   double e2; double e4; double e6; double e8;
   double ax; double ay; double az; double bx; double by; double bz;
   double hmat_old[10]; double hmat_temp[10];
   e2=1.0/(2.0*3.0);e4=e2/(4.0*5.0);
   e6= e4/(6.0*7.0);e8=e6/(8.0*9.0);
   dt2 = dt/2.0;
   dt24 = dt2*dt2;
   vg48 = vgmat[4]*vgmat[8];
   nres = 1;
   dt_res = dt /((double)nres);
   dt2_res = dt2 /((double)nres);
   dt24_res = dt24/((double)(nres*nres));
   gamma11 = (vgmat[1]*dt_res)/2.0;
   arg2 = gamma11*gamma11;
   sinh11 = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
   gamma22 = (vgmat[5]*dt_res)/2.0;
   arg2 = gamma22*gamma22;
   sinh22 = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
   gamma33 = (vgmat[9]*dt_res)/2.0;
   arg2 = gamma33*gamma33;
   sinh33 = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
   ax = dt_res*sinh11*exp(vgmat[1]*dt2_res);
   ay = dt_res*sinh22*exp(vgmat[5]*dt2_res);
   az = dt_res*sinh33*exp(vgmat[9]*dt2_res);
   bx = exp(vgmat[1]*dt_res);
   by = exp(vgmat[5]*dt_res);
   bz = exp(vgmat[9]*dt_res);
   for(ires=1;ires<=nres;ires++){
     for(iatm=myatm_start;iatm<=myatm_end;iatm++){
       clatoms_x[iatm] += (vgmat[4]*clatoms_y[iatm]*dt2_res
                           +0.5*vg48*dt24_res*clatoms_z[iatm]
                           +vgmat[7]*clatoms_z[iatm]*dt2_res);
       clatoms_y[iatm] += (vgmat[8]*clatoms_z[iatm]*dt2_res);
       clatoms_x[iatm] = ax*clatoms_vx[iatm] + bx*clatoms_x[iatm];
       clatoms_y[iatm] = ay*clatoms_vy[iatm] + by*clatoms_y[iatm];
       clatoms_z[iatm] = az*clatoms_vz[iatm] + bz*clatoms_z[iatm];
       clatoms_x[iatm] += (vgmat[4]*clatoms_y[iatm]*dt2_res
                           +0.5*vg48*dt24_res*clatoms_z[iatm]
                           +vgmat[7]*clatoms_z[iatm]*dt2_res);
       clatoms_y[iatm] += (vgmat[8]*clatoms_z[iatm]*dt2_res);
     }
   }
   nres = 5;
   dt_res = dt/((double)nres);
   dt24_res = dt24/((double)(nres*nres));
   for(ires=1;ires<=nres;ires++){
     hmat[7] += (vgmat[4]*hmat[8]*dt_res);
     for(i=1;i<=9;i++){hmat_old[i] = hmat[i];}
     hmat[1] = hmat_old[1]*exp(vgmat[1]*dt_res);
     hmat[5] = hmat_old[5]*exp(vgmat[5]*dt_res);
     hmat[9] = hmat_old[9]*exp(vgmat[9]*dt_res);
     vg15 = (vgmat[1]-vgmat[5])*dt_res/2.0;
     arg2 = vg15*vg15;
     sindt = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
     hmat[4] = hmat_old[4]*exp(vgmat[1]*dt_res)
              + hmat_old[5]*vgmat[4]*dt_res
                *exp((vgmat[1]+vgmat[5])*dt_res/2.0)*sindt;
     vg59 = (vgmat[5]-vgmat[9])*dt_res/2.0;
     arg2 = vg59*vg59;
     sindt = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
     hmat[8] = hmat_old[8]*exp(vgmat[5]*dt_res)
              + hmat_old[9]*vgmat[8]*dt_res
                *exp((vgmat[5]+vgmat[9])*dt_res/2.0)*sindt;
     vg19 = (vgmat[1]-vgmat[9])*dt_res;
     arg2 = vg19*vg19;
     sindt = (((e8*arg2+e6)*arg2+e4)*arg2+e2)*arg2+1.0;
     hmat[7] = hmat_old[7]*exp(vgmat[1]*dt_res)
              + hmat_old[9]*vgmat[7]*dt_res
                *exp((vgmat[1]+vgmat[9])*dt_res)*sindt;
        hmat[7] += vgmat[4]*hmat[8]*dt_res;
   }
     }

variable_types: dt double

variable_types: i int

variable_types: ip int

variable_types: iatm int

variable_types: iii int

variable_types: ires int

variable_types: nres int

variable_types: sindt double

variable_types: ax double

variable_types: ay double

variable_types: az double

variable_types: bx double

variable_types: by double

variable_types: bz double


original_code:
void int_NVE(CLASS *class,BONDED *bonded,GENERAL_DATA *general_data)
{
  int MPI_INT = 1;
  int MPI_DOUBLE = 1;
  int MPI_CHAR = 1;
  int MPI_MAX = 1;
  int MPI_SUM = 1;
  int MPI_ANY_TAG = 1;
  int MPI_ANY_SOURCE = 1;
  int *MPI_BOTTOM = {0};
    int i,ipart,ifirst=1,ip,iflag,iflag_mass=1;
    int exit_flag=0;
    double dt,dt2,tol_glob;
    int natm_tot,iii,istart,iend,nsec,nsec_now,n,iproc;
    int ir_tra = 1;
    int ir_tor = 1;
    int ir_ter = 1;
    int anneal_opt = general_data->simopts.anneal_opt;
    double ann_rate = general_data->simopts.ann_rate;
    double anneal_target_temp = general_data->simopts.ann_target_temp;
    double *x = class->clatoms_pos[1].x;
    double *y = class->clatoms_pos[1].y;
    double *z = class->clatoms_pos[1].z;
    double *vx = class->clatoms_pos[1].vx;
    double *vy = class->clatoms_pos[1].vy;
    double *vz = class->clatoms_pos[1].vz;
    double *fx = class->clatoms_pos[1].fx;
    double *fy = class->clatoms_pos[1].fy;
    double *fz = class->clatoms_pos[1].fz;
    int np_forc = class->communicate.np_forc;
    int myid_forc = class->communicate.myid_forc;
    int pi_beads_proc = class->clatoms_info.pi_beads_proc;
    int comm_forc = class->communicate.comm_forc;
    natm_tot = class->clatoms_info.natm_tot;
    n = natm_tot;
    general_data->timeinfo.int_res_tra = 0;
    general_data->timeinfo.int_res_ter = 0;
    dt = general_data->timeinfo.dt;
    dt2 = general_data->timeinfo.dt/2.0;
    zero_constrt_iters(&(general_data->stat_avg));
    general_data->timeinfo.exit_flag = 0;
    int_0_to_dt2_nve(class,bonded,general_data,ir_tra,ir_tor,ir_ter,dt);
    (class->energy_ctrl.iget_full_inter)= 1;
    (class->energy_ctrl.iget_res_inter) = 0;
    (class->energy_ctrl.iget_full_intra)= 1;
    (class->energy_ctrl.iget_res_intra) = 0;
     energy_control(class, bonded, general_data);
    int_dt2_to_dt_nve(class,bonded,general_data,ir_tra,ir_tor,ir_ter,dt);
   iflag=-1;
   if(anneal_opt == 1){
      anneal_class(class,ann_rate,iflag,iflag_mass,anneal_target_temp,&exit_flag);
      general_data->timeinfo.exit_flag = exit_flag;
   }
   int_final_class(class,bonded,general_data,iflag);
               }

canonical_original_code:
void int_NVE(struct class *class, struct bonded *bonded, struct general_data *general_data)
{
  int MPI_INT = 1;
  int MPI_DOUBLE = 1;
  int MPI_CHAR = 1;
  int MPI_MAX = 1;
  int MPI_SUM = 1;
  int MPI_ANY_TAG = 1;
  int MPI_ANY_SOURCE = 1;
  int *MPI_BOTTOM = {0};
    int i; int ipart; int ifirst = 1; int ip; int iflag; int iflag_mass = 1;
    int exit_flag = 0;
    double dt; double dt2; double tol_glob;
    int natm_tot; int iii; int istart; int iend; int nsec; int nsec_now; int n; int iproc;
    int ir_tra = 1;
    int ir_tor = 1;
    int ir_ter = 1;
    int anneal_opt = general_data->simopts.anneal_opt;
    double ann_rate = general_data->simopts.ann_rate;
    double anneal_target_temp = general_data->simopts.ann_target_temp;
    double *x = class->clatoms_pos[1].x;
    double *y = class->clatoms_pos[1].y;
    double *z = class->clatoms_pos[1].z;
    double *vx = class->clatoms_pos[1].vx;
    double *vy = class->clatoms_pos[1].vy;
    double *vz = class->clatoms_pos[1].vz;
    double *fx = class->clatoms_pos[1].fx;
    double *fy = class->clatoms_pos[1].fy;
    double *fz = class->clatoms_pos[1].fz;
    int np_forc = class->communicate.np_forc;
    int myid_forc = class->communicate.myid_forc;
    int pi_beads_proc = class->clatoms_info.pi_beads_proc;
    int comm_forc = class->communicate.comm_forc;
    natm_tot = class->clatoms_info.natm_tot;
    n = natm_tot;
    general_data->timeinfo.int_res_tra = 0;
    general_data->timeinfo.int_res_ter = 0;
    dt = general_data->timeinfo.dt;
    dt2 = general_data->timeinfo.dt/2.0;
    zero_constrt_iters(&(general_data->stat_avg));
    general_data->timeinfo.exit_flag = 0;
    int_0_to_dt2_nve(class,bonded,general_data,ir_tra,ir_tor,ir_ter,dt);
    (class->energy_ctrl.iget_full_inter)= 1;
    (class->energy_ctrl.iget_res_inter) = 0;
    (class->energy_ctrl.iget_full_intra)= 1;
    (class->energy_ctrl.iget_res_intra) = 0;
     energy_control(class, bonded, general_data);
    int_dt2_to_dt_nve(class,bonded,general_data,ir_tra,ir_tor,ir_ter,dt);
   iflag=-1;
   if(anneal_opt == 1){
      anneal_class(class,ann_rate,iflag,iflag_mass,anneal_target_temp,&exit_flag);
      general_data->timeinfo.exit_flag = exit_flag;
   }
   int_final_class(class,bonded,general_data,iflag);
               }

variable_types: struct class { struct clatoms_info { int natm_tot; int pi_beads; int pi_beads_proc; int pi_beads_proc_st; int pi_beads_proc_end; int nfree; int nfree_pimd; int nchrg; int pi_beads_full_ter; int pi_beads_res_ter; int pi_beads_full_tra; int pi_beads_res_tra; int cg_reset_flag; int natm_mall; int nchrg_mall; int hess_calc; int natm_proc; int N_H2; int i_H2_start; int nab_initio; int myatm_start; double gamma_adb; double wght_pimd; double pi_temperature; double pi_beads_full_ter_wght; double pi_beads_res_ter_wght; double pi_beads_full_tra_wght; double pi_beads_res_tra_wght; double rcut_spread; double mass_sc_fact; int *ip_lab; int *ichrg; int *cp_vlnc_up; int *cp_atm_flag; double *mass; double *q; double *alp_pol; double *b_neut; double *roll_sc; double *text_atm; double *text_mol; double *xold; double *prekf; double *xmod; double alp_ewd; } clatoms_info; struct clatoms_tran { int pi_beads_proc; int pi_atm_proc; int pi_atm_proc_use; int pi_proc_rem; int nwork; int *sendcounts; int *senddspls; int *ifax; double *rat1_stag; double *path_eig; double *work; double *work3; double *x_trans; double *x_temp; double *xt_temp; } clatoms_tran; struct clatoms_pos { double *mass; double *x; double *vx; double *fx; double *fxt; double *fxm; double *hess_xx; } *clatoms_pos; struct ghost_atoms { int nghost_tot; int natm_comp_max; int nghost_mall; int nghost_old; int ncomp_mall; int ncomp_old; int *ighost_map; int *natm_comp; int **iatm_comp; double **coef; } ghost_atoms; struct atommaps { int nmol_typ; int nres_typ; int natm_typ; int nfreeze; int nfreeze_mall; int natm_typ_mall; int nres_typ_max; int nres_max; int nres_tot; int nres_sum; int pimd_freez_typ; char (*atm_typ)[50]; char (*res_typ)[50]; char (*mol_typ)[50]; int *nmol_jmol_typ; int *nres_1mol_jmol_typ; int *jatm_jmol_typ_strt; int *jres_jmol_typ_strt; int *ires_typ_jres_jmol_typ; int *jatm_jres_1mol_jmol_typ_strt; int *natm_1mol_jmol_typ; int *natm_jres_jmol_typ; int *nfree_1mol_jmol_typ; int *nfree_jres_jmol_typ; int *icons_jmol_typ; int *icons_jres_jmol_typ; int *natm_jmol_typ; int *iatm_mol_typ; int *iatm_res_typ; int *iatm_atm_typ; int *iatm_atm_typ_nl; int *iatm_atm_typ_nl_rev; int *imap_atm_typ_nl; int *imap_atm_typ_nl_gh; int *iatm_mol_num; int *iatm_proc_num; int *iatm_res_num; int *ighost_flag; int *freeze_flag; int *freeze_map; int *atom_label; int *cp_atm_lst; } atommaps; struct therm_info { int num_nhc; int len_nhc; int nres_nhc; int nyosh_nhc; int therm_typ; int num_nhc_proc; int num_nhc_share; int mytherm_start; double dt_nhc; int *inhc_x; int *itherm_nshare; double *ditherm_nshare_i; int *map_share; double *text_nhc; double *wdti; double **mass_nhc; } therm_info_class; struct therm_info therm_info_bead; struct therm_pos { double **x_nhc; double x_nhc_tot; } therm_class; struct therm_pos *therm_bead; struct vel_samp_class { int ivel_smpl_on; int ivel_scale_on; int nvx_smpl; int nvx_scale; int nvnhc_smpl; int iseed; double qseed; } vel_samp_class; struct energy_ctrl { int pme_on; int int_res_ter; int isep_vvdw; int iswit_vdw; int block_std_on; int iget_pe_real_inter_freq; int iget_pe_real_inter; int itime; int iget_full_inter; int iget_full_intra; int iget_full_pimd; } energy_ctrl; struct nbr_list { int iver; int ilnk; int nolst; int brnch_root_list_opt; double *x0; struct verlist { int iver_init; int iver_fill; int nolst_ver_update; int jver_pad; int nmem_min_lst; int nver_lst; int nver_lst_res; int nver_lst_now; int nver_lst_now_res; int *nter; int *jter; int *jver_off; int *nter_res; int *jter_res; int *jver_off_res; double mem_safe; } verlist; struct lnklist { int ilnk_init; int lnk_for_odd; int ncell_div_avg; int lnk_excl_safe; int lnk_vol_safe; int ncell_a; int natm_cell_max; int lnk_list_dim; int nshft_lnk; int nshft_lnk_res; double vol_lnk_map; double rcut_max; int *lnk_list; int *ishft_a; int *iexl_chk; int *ishft_a_res; int *iexl_chk_res; int *natm_cell; double *shft_wght; double *shft_wght_res; double *hmat_lnk; } lnklist; struct brnch_root { int nbrnch_tot; int nroot_tot; int natm_add_tot; int nbrnch_root_max; double brnch_root_dist_max; double cutdif_min_brnch_root; double cutdif_min_brnch_brnch; double cutdif_min_brnch_root_res; double cutdif_min_brnch_brnch_res; double r2_nocheck_dist; double r2_nocheck_dist_res; double cutskin_bb_min; double cutskin_bb_min_res; int *brnch_atm_list; int *brnch_atm_root; int *root_atm_list; int *root_atm_map; int *brnch_atm_map; int *nbrnch_of_root_big; int *nbrnch_of_root; int **ibrnch_of_root; int *natm_add; int *iatm_add; int *iatm_add_off; } brnch_root; } nbr_list; struct interact { int nsplin; int iswit_vdw; int dielectric_opt; int ishave_opt; int nter_typ; int nsplin_tot; int ninter_mall; int nsplin_mall_tot; int *inter_map_index; double dielectric_rheal; double dielectric_cut; double dielectric_eps; double brnch_root_skin; double skin; double brnch_root_cut; double rheal_res; double pten_inter_guess; double pten_kin_guess; double clong; double clong_res; double spread_now; double spread_lnk; double brnch_root_skin_lnk; double cutoff_max; double *cutoff; double *cutoff_res; double *cutti; double *cutskin; double *cutskin_res; double *cutskin_root; double *cutskin_root_res; double *vcut_coul; double *rmin_spl; double *dr_spl; double *cv0; double *cdv0; double *cv0_c; double *cdv0_c; } interact; struct int_scr { double v_lnv; double *x; double *vx; double *gx; double **x_nhc; double *vgmat; double *x_vol_nhc; double *sc; double *sc_temp; double *atm_kin; double *step_up; struct therm_scr { double *sc; double *atm_kin; } *therm_scr; } int_scr; struct ewd_scr { double *q; double *x; double *fx; double *heli; double *cossc; double *fx2; double *temp; double *helr_now; } ewd_scr; struct for_scr { int nlen; int nsplin_t; int num_brk; int intact; double wght_lnk; double wght_ter; double wght_ter_res; double wght_tra; double wght_tra_res; double wght_pimd; int *j_indext; int *i_indext2; int *j_lnk; int *j_index; int *num_brk_i; int *iexcl; int *index_atm; } for_scr; double tot_memory; struct part_mesh { int pme_on; int kmax_pme; int n_interp; int pme_res_on; int kmax_pme_res; int n_interp_res; int pme_para_opt; int nlen_pme; int nktot_pme; int ngrid_a; int nktot_pme_res; int ngrid_a_res; int ninterp_mall; int ninterp_tot_mall; int *iatemp; int *nc; int **igrid_a; int **igrid_now; double ecut; double ecut_res; double *bweight_tot_res; double *bweight_tot; double *qgrid; double *qgrid_scr; double *qgrid_tmp_real; double *qgrid_tmp_imag; double *frac_a; double *aj; double **ua; double **mn_a; double **dmn_a; double **qgrid_now; } part_mesh; struct surface { int isurf_on; int natm_typ; int nsplin_surf; int nsplin_tot; double zheal; double surface_height; double *surface_pot; double *surface_forc; double *zcut_off; double *dz_spl; double *dzi_spl; double *zmin_spl; char surface_type[50]; } surface; struct communicate { int np_beads; int myid; int myid_bead_forc; int myid_bead; int myid_bead_prime; int myid_state; int myid_forc; int myid_forc_source; int myid_forc_target; int world; int comm_beads; int comm_beads_forc; int comm_states; int comm_forc; int comm_forc_source; int comm_forc_target; int comm_faux; } communicate; struct class_comm_forc_pkg { int num_proc; int myid; int myatm_start; int mytherm_start; int *displs_atm; int *displs_therm; int comm; int world; double dbl_num_proc; struct class_plimpton_ind { int num_proc_source; int num_proc_target; int myid_source; int myid_target; int natoms_tot; int *index_src; int *index_src_even; int *index_src_odd; int *index_trg; int *index_trg_even; int *index_trg_odd; int *displs_atm_trg; int *displs_atm_src; int *src_odd_end; int *src_even_end; int *trg_odd_end; int *trg_even_end; int *src_odd_begin; int *src_even_begin; int *trg_odd_begin; int *trg_even_begin; int my_src_odd_counts; int my_src_even_counts; int my_trg_odd_counts; int my_trg_even_counts; int *my_src_odd; int *my_src_even; int *my_trg_odd; int *my_trg_even; int **jmax; int *jmin; int **imax; int source; int target; } plimpton_ind; } class_comm_forc_pkg; } *

variable_types: struct bonded { struct bond { int npow; int ntyp_pow; int ncon; int ntyp_con; int nbond_pow_mall; int nbond_typ_pow_mall; int nbond_con_mall; int nbond_typ_con_mall; int block_pow_on; int ncon_tot; int ncon_max; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_con_size; int *iblock_con_conflict_1; double *eq_pow; double *eq_pow_res; double *c_0; double *dc_0; double *al_con; double *eq_con; } bond; struct grp_bond_con { int num_33; int num_21; int num_43; int ntyp_33; int num_23; int ntyp_23; int num_46; int ntyp_46; int max_iter; int ngrp_21_mall; int ngrp_33_mall; int ngrp_43_mall; int ngrp_23_mall; int ngrp_46_mall; int ngrp_typ_21_mall; int ngrp_typ_33_mall; int ngrp_typ_43_mall; int ngrp_typ_23_mall; int ngrp_typ_46_mall; int num_21_tot; double tol; int *j1_33; int *j1_21; int *j2_43; int *jtyp_33; int *j1_23; int *jtyp_23; int *j1_46; int *jtyp_46; double **al_33; double **al_23; double **al_21; double **eq_21; double **al_46; int ncons_gather_tot; int ncons_gather; int ncons_gather_max; int *ind_gather_fwd; int *ind_gather_bck; int *ind_gather_scr; } grp_bond_con; struct grp_bond_watts { int num_33; int num_33_tot; int ntyp_33; int ngrp_33_mall; int ngrp_typ_33_mall; int *j1_33; int *jtyp_33; double *cos_thet0_2; double **eq_33; double **c_0_33; double **c_4_33; double **dc_0_33; double **dc_4_33; } grp_bond_watts; struct constrnt { int iconstrnt; int iroll; int max_iter; double tolshake; double tolratl; } constrnt; struct bond_free { int num; int j1; int npow; int nhist; double fk; double eq; double del; double rmin; double rmax; char *file; double *hist; } bond_free; struct bend { int npow; int ntyp_pow; int ncon; int ntyp_con; int nbend_pow_mall; int nbend_typ_pow_mall; int nbend_con_mall; int nbend_typ_con_mall; int block_pow_on; int ncon_tot; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_pow_conflict_3; int *iblock_con_size; int *iblock_con_conflict_1; int *iblock_con_conflict_3; double *eq_pow; double *c_0; double *s_0; double *dc_0; double *ds_0; double *al_con; double *eq_con; } bend; struct bend_free { int num; int j1; int npow; int nhist; double fk; double eq; double del; char *file; double *hist; } bend_free; struct bend_bnd { int num; int ntyp; int nbend_bnd_mall; int nbend_bnd_typ_mall; int block_on; int nblock; int *j1; int *jtyp; int *iblock_size; int *iblock_conflict_1; int *iblock_conflict_3; double *eq_bond; double *eq_bend; double *cbond_0; double *dcbond_0; double *cbend_0; double *sbend_0; double *dcbend_0; double *dsbend_0; } bend_bnd; struct tors { int npow; int ntyp_pow; int nimpr; int ncon; int ntyp_con; int ntors_pow_mall; int ntors_typ_pow_mall; int ntors_con_mall; int ntors_typ_con_mall; int block_pow_on; int block_con_on; int ncon_tot; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_pow_conflict_3; int *iblock_con_size; int *iblock_con_conflict_1; int *iblock_con_conflict_3; double *c_0; double *s_0; double *dc_0; double *ds_0; double *eq_pow; double *al_con; double *eq_con; } tors; struct tors_free { int num; int npow; int nhist; int j1[3]; double fk; double eq[3]; double del; char *file; double *hist; double **hist_2d; } tors_free; struct rbar_sig_free { int nfree; int nhist_bar; int iopt; int *j1; double fk_bar; double fk_sigma; double eq_bar; double eq_sigma; double del_bar; double rmin; double smin; double rnfree; double **hist; double **hist_rn; char *file; } rbar_sig_free; struct onfo { int num; int ntyp; int nonfo_mall; int nonfo_typ_mall; int block_on; int nblock; int *j1; int *jtyp; int *iblock_size; int *iblock_conflict_1; double *feps; double *s6; double *sc; } onfo; struct ecor { int nsplin; int num; int block_on; int nblock; int nktot_res; int necor_mall; double alp_ewd; double ecut; double rmin_spl; double rmax_spl; double dr_spl; int *j1; int *iblock_size; int *iblock_conflict_1; double *cv0; } ecor; struct excl { int nlst; int nlst_root; int num_cp; int *num; int *j; int *j_off; int *j1_cp; } excl; struct intra_scr { int nlen; double wght_ter; double wght_ter_res; double wght_tra; double wght_tra_res; double int_res_inter; int *iatm_typ; int *jatm_typ; double *vpot; double *p11; double *p21; double *p31; double *x1; double *x2; double *x3; double *x4; double *x5; double *x6; double *x7; double *x8; double *fx1; double *fx2; double *fx3; double *fx4; double *dx12; double *dx13; double *dx23; double *dx42; double *dx43; double *dx56; double *dx57; double *dx67; double *dx86; double *dx87; double *c_0; double *dc_0; double *ds_0; double *s_0; double *eq; double *m1; double *vx1; double *vx2; double *sc_1; double *sc; double *q1; double *rmin; double *dri; double *vcut_coul; double *del_r; double *swit; double *cutoff_res; } intra_scr; } *

variable_types: struct general_data { struct simopts { int md; int pimd; int minimize; int cp; int cp_pimd; int cp_wave; int cp_wave_pimd; int cp_wave_min_pimd; int cp_min; int cp_wave_min; int debug; int debug_pimd; int debug_cp; int debug_cp_pimd; int pi_beads; int pi_md_typ; int initial_spread_opt; int anneal_opt; double ann_rate; double ann_start_temp; double ann_target_temp; } simopts; struct minopts { int min_std; int min_cg; int min_diis; int diis_hist_len; int cp_min_std; int cp_min_cg; int cp_min_diis; int cp_diis_hist_len; int cp_cg_line_min_len; int min_atm_com_fix_opt; double tol_coef; double tol_atom; } minopts; struct ensopts { int nve; } ensopts; struct filenames { char *iname; char *dname; char *dnamec; char *cpname; char *ksname; char *elfname; char *cvname; char *ccname; char *cpparname; char *centname; char *forcename; int low_lim_par; int high_lim_par; int iwrite_screen; int iwrite_inst; int iwrite_dump; int iwrite_kseigs; int iwrite_confv; int iwrite_confp; int iwrite_par_confp; int iwrite_confc; int iwrite_path_cent; int ifile_open; int iwrite_conf_binary; int iwrite_units; int iwrite_atm_for; int iwrite_elf; } filenames; struct statepoint { double pext; } statepoint; struct cell { int iperd; int intra_perds; int cubic_box_flag; int hmat_int_typ; int hmat_cons_typ; int imov_cp_box; double vol; double vol_cp; double vol0; double area; double alpha_conv_dual; double *hmat; double *hmat_ewd; double *hmat_cp; double *cp_box_center; double *cp_box_center_rel; double *cp_vbox_center; double *cp_fbox_center; } cell; struct timeinfo { int ntime; int ix_respa; int int_res_ter; int nres_ter; int int_res_tor; int int_res_pimd; int iget_pe_real_inter_freq; int exit_flag; double dt; } timeinfo; struct baro { int len_nhc; double x_lnv; double v_lnv_glob; double v_lnv_g; double f_lnv_p; double vol; double mass_lnv; double c2_lnv; double roll_scv; double roll_scg; double roll_scg0; double x_lnv_o; double v_lnv_g_wght; double area; double *x_vol_nhc; double *f_vol_nhc; double *hmato; } baro; struct par_rahman { double vol; double mass_hm; double c1_hm; double roll_scg; double roll_scg0; double area; double *vgmat; double *vgmat_glob; double *fgmat_p; double *roll_mtv; double *roll_mtvv; double *vtemps; double *vexpdt; double *vtempx; double *hmat_t; double *fv1; double *vgmat_g_wght; } par_rahman; struct ptens { double *tvten; double *pvten; double *pvten_inc; double *pvten_tmp_res; double *pvten_inc_t1; double *pvten_inc_a; double *pvten_inc_old; double *count_inc; double *pvten_inc_glob; double *pvten_mode; } ptens; struct stat_avg { int nexclt; int iter_shake; int iswit_vdw; int itime_update; int iter_shake_cp; int write_cp_atm_flag; double vintert; double vintrat; double vsurft; double vbondt; double vbend_bndt; double vbend_bnd_bond; double vbondt_watts; double vreal; double vvdw; double vlong; double vbond_free; double vbar_free; double kinet; double kinet_v; double vol; double kinet_nhc; double kinet_nhc_bead; double aikinet_nhc_bead; double akinet_nhc_bead; double vpot_v; double vpotnhc; double aiter_shake; double iter_23; double aiter_23; double aiter_21; double iter_23r; double aiter_23r; double aiter_21r; double acella; double aicella; double acellab; double aicellab; double apress; double press_inter; double apress_inter; double apress_intra; double press_kin; double apress_kin; double econv0; double cp_kconv0; double cpu1; double updates; double kinet_cp_up; double kinet_cp_dn; double kinet_cp; double kinet_nhc_cp; double vpotnhc_cp; double cp_ehart; double cp_eext; double cp_exc; double cp_muxc; double cp_eke; double cp_enl; double aiter_shake_cp; double maxfc; double pi_ke_prim; double api_ke_prim; double aipi_ke_prim; double kin_harm; double *apten; double fc_mag_up; double fc_max_up; double fatm_max; double count_diag_srot; double econv_now; double isokconv; } stat_avg; struct ewald { int nsplin_g; int nktot; int nktot_res; int nktot_mall; int nktot_res_mall; int nkc_max; int nkb_max; double alp_ewd; double self_erf; double ecut; double ecut_clus; double alp_clus; double gs_max; int *kastr; int *ibrk1; int *kastr_res; int *ibrk1_res; double *clus_corr_r; double *clus_corr_r_res; double *cvgs_2d0; double *vgc_1d_y; } ewald; struct para_fft_pkg3d { int nktot; int ncoef_use; int nfft_size; int nfft; int igeneric_opt; int scale_opt; int len_ifax; int nwork1; double ecut; int comm; int num_proc; int *map_proc; int *recv_counts_rho; int *recv_counts_coef; int *map_pme_dn; int *recvcounts_pme_dn; int *sendcounts_pme_dn; int *map_pme_up; int *recvcounts_pme_up; int *sendcounts_pme_up; int ndata_kc; int nkf3; int str_fft_kc_proc; int ska_fft_kc_proc; int skb_fft_kc_proc; int *sendcounts_fft_kc; int *recvcounts_fft_kc; int *sum_fft_kc_proc; int nka_fft_kc; int *ka_fft_kc; int *ifax_c_f; double *work_1c_f; double *work_1c_r; int ndata_kb; int nkf2; int str_fft_kb_proc; int ska_fft_kb_proc; int skc_fft_kb_proc; int *ska_fft_kb_proc_all; int *skc_fft_kb_proc_all; int *sendcounts_fft_kb; int *recvcounts_fft_kb; int *sum_fft_kb_proc; int *ifax_b_f; double *work_1b_f; double *work_1b_r; int ndata_ka; int nkf1; int str_fft_ka_proc; int skb_fft_ka_proc; int skc_fft_ka_proc; int *skb_fft_ka_proc_all; int *skc_fft_ka_proc_all; int *sendcounts_fft_ka; int *recvcounts_fft_ka; int *ifax_a_f; double *work_1a_f; double *work_1a_r; int *send_counts_row_big_small; int *recv_counts_row_big_small; int *sdispls_row_big_small; int *rdispls_row_big_small; int *send_counts_dual_map; int *recv_counts_dual_map; int *sdispls_dual_map; int *rdispls_dual_map; int *send_counts_row_big_small_upack; int *recv_counts_row_big_small_upack; int *sdispls_row_big_small_upack; int *rdispls_row_big_small_upack; int *send_counts_dual_map_upack; int *recv_counts_dual_map_upack; int *sdispls_dual_map_upack; int *rdispls_dual_map_upack; int *send_counts_ioff_big_small; int *recv_counts_ioff_big_small; int *sdispls_ioff_big_small; int *rdispls_ioff_big_small; } pme_fft_pkg; struct para_fft_pkg3d pme_res_fft_pkg; int error_check_on; } *

variable_types: ipart int

variable_types: ifirst int

variable_types: iflag int

variable_types: istart int

variable_types: iend int

variable_types: nsec int

variable_types: n int

variable_types: iproc int

variable_types:
x
double *

variable_types:
y
double *

variable_types:
z
double *

variable_types:
vx
double *

variable_types:
vy
double *

variable_types:
vz
double *

variable_types:
fx
double *

variable_types:
fy
double *

variable_types:
fz
double *

user_defined_types: struct class { struct clatoms_info clatoms_info; struct clatoms_tran clatoms_tran; struct clatoms_pos *clatoms_pos; struct ghost_atoms ghost_atoms; struct atommaps atommaps; struct therm_info therm_info_class; struct therm_info therm_info_bead; struct therm_pos therm_class; struct therm_pos *therm_bead; struct vel_samp_class vel_samp_class; struct energy_ctrl energy_ctrl; struct nbr_list nbr_list; struct interact interact; struct int_scr int_scr; struct ewd_scr ewd_scr; struct for_scr for_scr; double tot_memory; struct part_mesh part_mesh; struct surface surface; struct communicate communicate; struct class_comm_forc_pkg class_comm_forc_pkg; }

user_defined_types: struct bonded { struct bond bond; struct grp_bond_con grp_bond_con; struct grp_bond_watts grp_bond_watts; struct constrnt constrnt; struct bond_free bond_free; struct bend bend; struct bend_free bend_free; struct bend_bnd bend_bnd; struct tors tors; struct tors_free tors_free; struct rbar_sig_free rbar_sig_free; struct onfo onfo; struct ecor ecor; struct excl excl; struct intra_scr intra_scr; }

user_defined_types: struct general_data { struct simopts simopts; struct minopts minopts; struct ensopts ensopts; struct filenames filenames; struct statepoint statepoint; struct cell cell; struct timeinfo timeinfo; struct baro baro; struct par_rahman par_rahman; struct ptens ptens; struct stat_avg stat_avg; struct ewald ewald; struct para_fft_pkg3d pme_fft_pkg; struct para_fft_pkg3d pme_res_fft_pkg; int error_check_on; }

user_defined_types: struct nbr_list { int iver; int ilnk; int nolst; int brnch_root_list_opt; double *x0; struct verlist verlist; struct lnklist lnklist; struct brnch_root brnch_root; }

user_defined_types: struct int_scr { double v_lnv; double *x; double *vx; double *gx; double **x_nhc; double *vgmat; double *x_vol_nhc; double *sc; double *sc_temp; double *atm_kin; double *step_up; struct therm_scr *therm_scr; }

user_defined_types: struct class_comm_forc_pkg { int num_proc; int myid; int myatm_start; int mytherm_start; int *displs_atm; int *displs_therm; int comm; int world; double dbl_num_proc; struct class_plimpton_ind plimpton_ind; }


original_code:
void energy_control_surf(CLASS *class, BONDED *bonded,
                         GENERAL_DATA *general_data)
{
  int ip,iver_get;
  double vsurf;
  int iget_full_inter = class->energy_ctrl.iget_full_inter;
  int iget_full_intra = class->energy_ctrl.iget_full_intra;
  int pi_beads = class->clatoms_info.pi_beads;
  int pi_beads_proc = class->clatoms_info.pi_beads_proc;
  int isurf_on = class->surface.isurf_on;
  int iget_pe_real_inter= class->energy_ctrl.iget_pe_real_inter;
  int iget_pv_real_inter= class->energy_ctrl.iget_pv_real_inter;
  int pimd_on;
  pimd_on = general_data->simopts.pimd
                          +general_data->simopts.debug_pimd
                          +general_data->simopts.cp_pimd
                          +general_data->simopts.cp_wave_pimd
                          +general_data->simopts.cp_wave_min_pimd
                          +general_data->simopts.debug_cp_pimd;
  vsurf = 0.0;
  iver_get = 0;
  if((pimd_on==1)&&(iget_full_inter==1)){iver_get = 1;}
  if(iget_full_intra==1){
    if(isurf_on != 0){
     for(ip=1;ip<=pi_beads_proc;ip++){
       surf_pot(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                &(class->atommaps),&(class->surface),&(general_data->cell),
                &(bonded->intra_scr),&(general_data->ptens),&vsurf,iver_get,
                &(class->class_comm_forc_pkg),
                iget_pv_real_inter,iget_pe_real_inter);
     }
     vsurf/=pi_beads;
    }
  }
  if( iget_full_intra==1 ){
    if(iget_pe_real_inter==1){
      general_data->stat_avg.vvdw += vsurf;
      general_data->stat_avg.vintert += (vsurf);
    }
    general_data->stat_avg.vsurft = vsurf;
  }
   }

canonical_original_code:
void energy_control_surf(struct class *class, struct bonded *bonded, struct general_data *general_data)
{
  int ip; int iver_get;
  double vsurf;
  int iget_full_inter = class->energy_ctrl.iget_full_inter;
  int iget_full_intra = class->energy_ctrl.iget_full_intra;
  int pi_beads = class->clatoms_info.pi_beads;
  int pi_beads_proc = class->clatoms_info.pi_beads_proc;
  int isurf_on = class->surface.isurf_on;
  int iget_pe_real_inter = class->energy_ctrl.iget_pe_real_inter;
  int iget_pv_real_inter = class->energy_ctrl.iget_pv_real_inter;
  int pimd_on;
  pimd_on = general_data->simopts.pimd
                          +general_data->simopts.debug_pimd
                          +general_data->simopts.cp_pimd
                          +general_data->simopts.cp_wave_pimd
                          +general_data->simopts.cp_wave_min_pimd
                          +general_data->simopts.debug_cp_pimd;
  vsurf = 0.0;
  iver_get = 0;
  if((pimd_on==1)&&(iget_full_inter==1)){iver_get = 1;}
  if(iget_full_intra==1){
    if(isurf_on != 0){
     for(ip=1;ip<=pi_beads_proc;ip++){
       surf_pot(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                &(class->atommaps),&(class->surface),&(general_data->cell),
                &(bonded->intra_scr),&(general_data->ptens),&vsurf,iver_get,
                &(class->class_comm_forc_pkg),
                iget_pv_real_inter,iget_pe_real_inter);
     }
     vsurf/=pi_beads;
    }
  }
  if( iget_full_intra==1 ){
    if(iget_pe_real_inter==1){
      general_data->stat_avg.vvdw += vsurf;
      general_data->stat_avg.vintert += (vsurf);
    }
    general_data->stat_avg.vsurft = vsurf;
  }
   }

variable_types: struct class { struct clatoms_info { int natm_tot; int pi_beads; int pi_beads_proc; int pi_beads_proc_st; int pi_beads_proc_end; int nfree; int nfree_pimd; int nchrg; int pi_beads_full_ter; int pi_beads_res_ter; int pi_beads_full_tra; int pi_beads_res_tra; int cg_reset_flag; int natm_mall; int nchrg_mall; int hess_calc; int natm_proc; int N_H2; int i_H2_start; int nab_initio; int myatm_start; double gamma_adb; double wght_pimd; double pi_temperature; double pi_beads_full_ter_wght; double pi_beads_res_ter_wght; double pi_beads_full_tra_wght; double pi_beads_res_tra_wght; double rcut_spread; double mass_sc_fact; int *ip_lab; int *ichrg; int *cp_vlnc_up; int *cp_atm_flag; double *mass; double *q; double *alp_pol; double *b_neut; double *roll_sc; double *text_atm; double *text_mol; double *xold; double *prekf; double *xmod; double alp_ewd; } clatoms_info; struct clatoms_tran { int pi_beads_proc; int pi_atm_proc; int pi_atm_proc_use; int pi_proc_rem; int nwork; int *sendcounts; int *senddspls; int *ifax; double *rat1_stag; double *path_eig; double *work; double *work3; double *x_trans; double *x_temp; double *xt_temp; } clatoms_tran; struct clatoms_pos { double *mass; double *x; double *vx; double *fx; double *fxt; double *fxm; double *hess_xx; } *clatoms_pos; struct ghost_atoms { int nghost_tot; int natm_comp_max; int nghost_mall; int nghost_old; int ncomp_mall; int ncomp_old; int *ighost_map; int *natm_comp; int **iatm_comp; double **coef; } ghost_atoms; struct atommaps { int nmol_typ; int nres_typ; int natm_typ; int nfreeze; int nfreeze_mall; int natm_typ_mall; int nres_typ_max; int nres_max; int nres_tot; int nres_sum; int pimd_freez_typ; char (*atm_typ)[50]; char (*res_typ)[50]; char (*mol_typ)[50]; int *nmol_jmol_typ; int *nres_1mol_jmol_typ; int *jatm_jmol_typ_strt; int *jres_jmol_typ_strt; int *ires_typ_jres_jmol_typ; int *jatm_jres_1mol_jmol_typ_strt; int *natm_1mol_jmol_typ; int *natm_jres_jmol_typ; int *nfree_1mol_jmol_typ; int *nfree_jres_jmol_typ; int *icons_jmol_typ; int *icons_jres_jmol_typ; int *natm_jmol_typ; int *iatm_mol_typ; int *iatm_res_typ; int *iatm_atm_typ; int *iatm_atm_typ_nl; int *iatm_atm_typ_nl_rev; int *imap_atm_typ_nl; int *imap_atm_typ_nl_gh; int *iatm_mol_num; int *iatm_proc_num; int *iatm_res_num; int *ighost_flag; int *freeze_flag; int *freeze_map; int *atom_label; int *cp_atm_lst; } atommaps; struct therm_info { int num_nhc; int len_nhc; int nres_nhc; int nyosh_nhc; int therm_typ; int num_nhc_proc; int num_nhc_share; int mytherm_start; double dt_nhc; int *inhc_x; int *itherm_nshare; double *ditherm_nshare_i; int *map_share; double *text_nhc; double *wdti; double **mass_nhc; } therm_info_class; struct therm_info therm_info_bead; struct therm_pos { double **x_nhc; double x_nhc_tot; } therm_class; struct therm_pos *therm_bead; struct vel_samp_class { int ivel_smpl_on; int ivel_scale_on; int nvx_smpl; int nvx_scale; int nvnhc_smpl; int iseed; double qseed; } vel_samp_class; struct energy_ctrl { int pme_on; int int_res_ter; int isep_vvdw; int iswit_vdw; int block_std_on; int iget_pe_real_inter_freq; int iget_pe_real_inter; int itime; int iget_full_inter; int iget_full_intra; int iget_full_pimd; } energy_ctrl; struct nbr_list { int iver; int ilnk; int nolst; int brnch_root_list_opt; double *x0; struct verlist { int iver_init; int iver_fill; int nolst_ver_update; int jver_pad; int nmem_min_lst; int nver_lst; int nver_lst_res; int nver_lst_now; int nver_lst_now_res; int *nter; int *jter; int *jver_off; int *nter_res; int *jter_res; int *jver_off_res; double mem_safe; } verlist; struct lnklist { int ilnk_init; int lnk_for_odd; int ncell_div_avg; int lnk_excl_safe; int lnk_vol_safe; int ncell_a; int natm_cell_max; int lnk_list_dim; int nshft_lnk; int nshft_lnk_res; double vol_lnk_map; double rcut_max; int *lnk_list; int *ishft_a; int *iexl_chk; int *ishft_a_res; int *iexl_chk_res; int *natm_cell; double *shft_wght; double *shft_wght_res; double *hmat_lnk; } lnklist; struct brnch_root { int nbrnch_tot; int nroot_tot; int natm_add_tot; int nbrnch_root_max; double brnch_root_dist_max; double cutdif_min_brnch_root; double cutdif_min_brnch_brnch; double cutdif_min_brnch_root_res; double cutdif_min_brnch_brnch_res; double r2_nocheck_dist; double r2_nocheck_dist_res; double cutskin_bb_min; double cutskin_bb_min_res; int *brnch_atm_list; int *brnch_atm_root; int *root_atm_list; int *root_atm_map; int *brnch_atm_map; int *nbrnch_of_root_big; int *nbrnch_of_root; int **ibrnch_of_root; int *natm_add; int *iatm_add; int *iatm_add_off; } brnch_root; } nbr_list; struct interact { int nsplin; int iswit_vdw; int dielectric_opt; int ishave_opt; int nter_typ; int nsplin_tot; int ninter_mall; int nsplin_mall_tot; int *inter_map_index; double dielectric_rheal; double dielectric_cut; double dielectric_eps; double brnch_root_skin; double skin; double brnch_root_cut; double rheal_res; double pten_inter_guess; double pten_kin_guess; double clong; double clong_res; double spread_now; double spread_lnk; double brnch_root_skin_lnk; double cutoff_max; double *cutoff; double *cutoff_res; double *cutti; double *cutskin; double *cutskin_res; double *cutskin_root; double *cutskin_root_res; double *vcut_coul; double *rmin_spl; double *dr_spl; double *cv0; double *cdv0; double *cv0_c; double *cdv0_c; } interact; struct int_scr { double v_lnv; double *x; double *vx; double *gx; double **x_nhc; double *vgmat; double *x_vol_nhc; double *sc; double *sc_temp; double *atm_kin; double *step_up; struct therm_scr { double *sc; double *atm_kin; } *therm_scr; } int_scr; struct ewd_scr { double *q; double *x; double *fx; double *heli; double *cossc; double *fx2; double *temp; double *helr_now; } ewd_scr; struct for_scr { int nlen; int nsplin_t; int num_brk; int intact; double wght_lnk; double wght_ter; double wght_ter_res; double wght_tra; double wght_tra_res; double wght_pimd; int *j_indext; int *i_indext2; int *j_lnk; int *j_index; int *num_brk_i; int *iexcl; int *index_atm; } for_scr; double tot_memory; struct part_mesh { int pme_on; int kmax_pme; int n_interp; int pme_res_on; int kmax_pme_res; int n_interp_res; int pme_para_opt; int nlen_pme; int nktot_pme; int ngrid_a; int nktot_pme_res; int ngrid_a_res; int ninterp_mall; int ninterp_tot_mall; int *iatemp; int *nc; int **igrid_a; int **igrid_now; double ecut; double ecut_res; double *bweight_tot_res; double *bweight_tot; double *qgrid; double *qgrid_scr; double *qgrid_tmp_real; double *qgrid_tmp_imag; double *frac_a; double *aj; double **ua; double **mn_a; double **dmn_a; double **qgrid_now; } part_mesh; struct surface { int isurf_on; int natm_typ; int nsplin_surf; int nsplin_tot; double zheal; double surface_height; double *surface_pot; double *surface_forc; double *zcut_off; double *dz_spl; double *dzi_spl; double *zmin_spl; char surface_type[50]; } surface; struct communicate { int np_beads; int myid; int myid_bead_forc; int myid_bead; int myid_bead_prime; int myid_state; int myid_forc; int myid_forc_source; int myid_forc_target; int world; int comm_beads; int comm_beads_forc; int comm_states; int comm_forc; int comm_forc_source; int comm_forc_target; int comm_faux; } communicate; struct class_comm_forc_pkg { int num_proc; int myid; int myatm_start; int mytherm_start; int *displs_atm; int *displs_therm; int comm; int world; double dbl_num_proc; struct class_plimpton_ind { int num_proc_source; int num_proc_target; int myid_source; int myid_target; int natoms_tot; int *index_src; int *index_src_even; int *index_src_odd; int *index_trg; int *index_trg_even; int *index_trg_odd; int *displs_atm_trg; int *displs_atm_src; int *src_odd_end; int *src_even_end; int *trg_odd_end; int *trg_even_end; int *src_odd_begin; int *src_even_begin; int *trg_odd_begin; int *trg_even_begin; int my_src_odd_counts; int my_src_even_counts; int my_trg_odd_counts; int my_trg_even_counts; int *my_src_odd; int *my_src_even; int *my_trg_odd; int *my_trg_even; int **jmax; int *jmin; int **imax; int source; int target; } plimpton_ind; } class_comm_forc_pkg; } *

variable_types: struct bonded { struct bond { int npow; int ntyp_pow; int ncon; int ntyp_con; int nbond_pow_mall; int nbond_typ_pow_mall; int nbond_con_mall; int nbond_typ_con_mall; int block_pow_on; int ncon_tot; int ncon_max; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_con_size; int *iblock_con_conflict_1; double *eq_pow; double *eq_pow_res; double *c_0; double *dc_0; double *al_con; double *eq_con; } bond; struct grp_bond_con { int num_33; int num_21; int num_43; int ntyp_33; int num_23; int ntyp_23; int num_46; int ntyp_46; int max_iter; int ngrp_21_mall; int ngrp_33_mall; int ngrp_43_mall; int ngrp_23_mall; int ngrp_46_mall; int ngrp_typ_21_mall; int ngrp_typ_33_mall; int ngrp_typ_43_mall; int ngrp_typ_23_mall; int ngrp_typ_46_mall; int num_21_tot; double tol; int *j1_33; int *j1_21; int *j2_43; int *jtyp_33; int *j1_23; int *jtyp_23; int *j1_46; int *jtyp_46; double **al_33; double **al_23; double **al_21; double **eq_21; double **al_46; int ncons_gather_tot; int ncons_gather; int ncons_gather_max; int *ind_gather_fwd; int *ind_gather_bck; int *ind_gather_scr; } grp_bond_con; struct grp_bond_watts { int num_33; int num_33_tot; int ntyp_33; int ngrp_33_mall; int ngrp_typ_33_mall; int *j1_33; int *jtyp_33; double *cos_thet0_2; double **eq_33; double **c_0_33; double **c_4_33; double **dc_0_33; double **dc_4_33; } grp_bond_watts; struct constrnt { int iconstrnt; int iroll; int max_iter; double tolshake; double tolratl; } constrnt; struct bond_free { int num; int j1; int npow; int nhist; double fk; double eq; double del; double rmin; double rmax; char *file; double *hist; } bond_free; struct bend { int npow; int ntyp_pow; int ncon; int ntyp_con; int nbend_pow_mall; int nbend_typ_pow_mall; int nbend_con_mall; int nbend_typ_con_mall; int block_pow_on; int ncon_tot; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_pow_conflict_3; int *iblock_con_size; int *iblock_con_conflict_1; int *iblock_con_conflict_3; double *eq_pow; double *c_0; double *s_0; double *dc_0; double *ds_0; double *al_con; double *eq_con; } bend; struct bend_free { int num; int j1; int npow; int nhist; double fk; double eq; double del; char *file; double *hist; } bend_free; struct bend_bnd { int num; int ntyp; int nbend_bnd_mall; int nbend_bnd_typ_mall; int block_on; int nblock; int *j1; int *jtyp; int *iblock_size; int *iblock_conflict_1; int *iblock_conflict_3; double *eq_bond; double *eq_bend; double *cbond_0; double *dcbond_0; double *cbend_0; double *sbend_0; double *dcbend_0; double *dsbend_0; } bend_bnd; struct tors { int npow; int ntyp_pow; int nimpr; int ncon; int ntyp_con; int ntors_pow_mall; int ntors_typ_pow_mall; int ntors_con_mall; int ntors_typ_con_mall; int block_pow_on; int block_con_on; int ncon_tot; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_pow_conflict_3; int *iblock_con_size; int *iblock_con_conflict_1; int *iblock_con_conflict_3; double *c_0; double *s_0; double *dc_0; double *ds_0; double *eq_pow; double *al_con; double *eq_con; } tors; struct tors_free { int num; int npow; int nhist; int j1[3]; double fk; double eq[3]; double del; char *file; double *hist; double **hist_2d; } tors_free; struct rbar_sig_free { int nfree; int nhist_bar; int iopt; int *j1; double fk_bar; double fk_sigma; double eq_bar; double eq_sigma; double del_bar; double rmin; double smin; double rnfree; double **hist; double **hist_rn; char *file; } rbar_sig_free; struct onfo { int num; int ntyp; int nonfo_mall; int nonfo_typ_mall; int block_on; int nblock; int *j1; int *jtyp; int *iblock_size; int *iblock_conflict_1; double *feps; double *s6; double *sc; } onfo; struct ecor { int nsplin; int num; int block_on; int nblock; int nktot_res; int necor_mall; double alp_ewd; double ecut; double rmin_spl; double rmax_spl; double dr_spl; int *j1; int *iblock_size; int *iblock_conflict_1; double *cv0; } ecor; struct excl { int nlst; int nlst_root; int num_cp; int *num; int *j; int *j_off; int *j1_cp; } excl; struct intra_scr { int nlen; double wght_ter; double wght_ter_res; double wght_tra; double wght_tra_res; double int_res_inter; int *iatm_typ; int *jatm_typ; double *vpot; double *p11; double *p21; double *p31; double *x1; double *x2; double *x3; double *x4; double *x5; double *x6; double *x7; double *x8; double *fx1; double *fx2; double *fx3; double *fx4; double *dx12; double *dx13; double *dx23; double *dx42; double *dx43; double *dx56; double *dx57; double *dx67; double *dx86; double *dx87; double *c_0; double *dc_0; double *ds_0; double *s_0; double *eq; double *m1; double *vx1; double *vx2; double *sc_1; double *sc; double *q1; double *rmin; double *dri; double *vcut_coul; double *del_r; double *swit; double *cutoff_res; } intra_scr; } *

variable_types: struct general_data { struct simopts { int md; int pimd; int minimize; int cp; int cp_pimd; int cp_wave; int cp_wave_pimd; int cp_wave_min_pimd; int cp_min; int cp_wave_min; int debug; int debug_pimd; int debug_cp; int debug_cp_pimd; int pi_beads; int pi_md_typ; int initial_spread_opt; int anneal_opt; double ann_rate; double ann_start_temp; double ann_target_temp; } simopts; struct minopts { int min_std; int min_cg; int min_diis; int diis_hist_len; int cp_min_std; int cp_min_cg; int cp_min_diis; int cp_diis_hist_len; int cp_cg_line_min_len; int min_atm_com_fix_opt; double tol_coef; double tol_atom; } minopts; struct ensopts { int nve; } ensopts; struct filenames { char *iname; char *dname; char *dnamec; char *cpname; char *ksname; char *elfname; char *cvname; char *ccname; char *cpparname; char *centname; char *forcename; int low_lim_par; int high_lim_par; int iwrite_screen; int iwrite_inst; int iwrite_dump; int iwrite_kseigs; int iwrite_confv; int iwrite_confp; int iwrite_par_confp; int iwrite_confc; int iwrite_path_cent; int ifile_open; int iwrite_conf_binary; int iwrite_units; int iwrite_atm_for; int iwrite_elf; } filenames; struct statepoint { double pext; } statepoint; struct cell { int iperd; int intra_perds; int cubic_box_flag; int hmat_int_typ; int hmat_cons_typ; int imov_cp_box; double vol; double vol_cp; double vol0; double area; double alpha_conv_dual; double *hmat; double *hmat_ewd; double *hmat_cp; double *cp_box_center; double *cp_box_center_rel; double *cp_vbox_center; double *cp_fbox_center; } cell; struct timeinfo { int ntime; int ix_respa; int int_res_ter; int nres_ter; int int_res_tor; int int_res_pimd; int iget_pe_real_inter_freq; int exit_flag; double dt; } timeinfo; struct baro { int len_nhc; double x_lnv; double v_lnv_glob; double v_lnv_g; double f_lnv_p; double vol; double mass_lnv; double c2_lnv; double roll_scv; double roll_scg; double roll_scg0; double x_lnv_o; double v_lnv_g_wght; double area; double *x_vol_nhc; double *f_vol_nhc; double *hmato; } baro; struct par_rahman { double vol; double mass_hm; double c1_hm; double roll_scg; double roll_scg0; double area; double *vgmat; double *vgmat_glob; double *fgmat_p; double *roll_mtv; double *roll_mtvv; double *vtemps; double *vexpdt; double *vtempx; double *hmat_t; double *fv1; double *vgmat_g_wght; } par_rahman; struct ptens { double *tvten; double *pvten; double *pvten_inc; double *pvten_tmp_res; double *pvten_inc_t1; double *pvten_inc_a; double *pvten_inc_old; double *count_inc; double *pvten_inc_glob; double *pvten_mode; } ptens; struct stat_avg { int nexclt; int iter_shake; int iswit_vdw; int itime_update; int iter_shake_cp; int write_cp_atm_flag; double vintert; double vintrat; double vsurft; double vbondt; double vbend_bndt; double vbend_bnd_bond; double vbondt_watts; double vreal; double vvdw; double vlong; double vbond_free; double vbar_free; double kinet; double kinet_v; double vol; double kinet_nhc; double kinet_nhc_bead; double aikinet_nhc_bead; double akinet_nhc_bead; double vpot_v; double vpotnhc; double aiter_shake; double iter_23; double aiter_23; double aiter_21; double iter_23r; double aiter_23r; double aiter_21r; double acella; double aicella; double acellab; double aicellab; double apress; double press_inter; double apress_inter; double apress_intra; double press_kin; double apress_kin; double econv0; double cp_kconv0; double cpu1; double updates; double kinet_cp_up; double kinet_cp_dn; double kinet_cp; double kinet_nhc_cp; double vpotnhc_cp; double cp_ehart; double cp_eext; double cp_exc; double cp_muxc; double cp_eke; double cp_enl; double aiter_shake_cp; double maxfc; double pi_ke_prim; double api_ke_prim; double aipi_ke_prim; double kin_harm; double *apten; double fc_mag_up; double fc_max_up; double fatm_max; double count_diag_srot; double econv_now; double isokconv; } stat_avg; struct ewald { int nsplin_g; int nktot; int nktot_res; int nktot_mall; int nktot_res_mall; int nkc_max; int nkb_max; double alp_ewd; double self_erf; double ecut; double ecut_clus; double alp_clus; double gs_max; int *kastr; int *ibrk1; int *kastr_res; int *ibrk1_res; double *clus_corr_r; double *clus_corr_r_res; double *cvgs_2d0; double *vgc_1d_y; } ewald; struct para_fft_pkg3d { int nktot; int ncoef_use; int nfft_size; int nfft; int igeneric_opt; int scale_opt; int len_ifax; int nwork1; double ecut; int comm; int num_proc; int *map_proc; int *recv_counts_rho; int *recv_counts_coef; int *map_pme_dn; int *recvcounts_pme_dn; int *sendcounts_pme_dn; int *map_pme_up; int *recvcounts_pme_up; int *sendcounts_pme_up; int ndata_kc; int nkf3; int str_fft_kc_proc; int ska_fft_kc_proc; int skb_fft_kc_proc; int *sendcounts_fft_kc; int *recvcounts_fft_kc; int *sum_fft_kc_proc; int nka_fft_kc; int *ka_fft_kc; int *ifax_c_f; double *work_1c_f; double *work_1c_r; int ndata_kb; int nkf2; int str_fft_kb_proc; int ska_fft_kb_proc; int skc_fft_kb_proc; int *ska_fft_kb_proc_all; int *skc_fft_kb_proc_all; int *sendcounts_fft_kb; int *recvcounts_fft_kb; int *sum_fft_kb_proc; int *ifax_b_f; double *work_1b_f; double *work_1b_r; int ndata_ka; int nkf1; int str_fft_ka_proc; int skb_fft_ka_proc; int skc_fft_ka_proc; int *skb_fft_ka_proc_all; int *skc_fft_ka_proc_all; int *sendcounts_fft_ka; int *recvcounts_fft_ka; int *ifax_a_f; double *work_1a_f; double *work_1a_r; int *send_counts_row_big_small; int *recv_counts_row_big_small; int *sdispls_row_big_small; int *rdispls_row_big_small; int *send_counts_dual_map; int *recv_counts_dual_map; int *sdispls_dual_map; int *rdispls_dual_map; int *send_counts_row_big_small_upack; int *recv_counts_row_big_small_upack; int *sdispls_row_big_small_upack; int *rdispls_row_big_small_upack; int *send_counts_dual_map_upack; int *recv_counts_dual_map_upack; int *sdispls_dual_map_upack; int *rdispls_dual_map_upack; int *send_counts_ioff_big_small; int *recv_counts_ioff_big_small; int *sdispls_ioff_big_small; int *rdispls_ioff_big_small; } pme_fft_pkg; struct para_fft_pkg3d pme_res_fft_pkg; int error_check_on; } *

variable_types: ip int

variable_types: vsurf double