original_code:
void zero_bnd(BONDED *bonded)
{
int i;
    bonded->bond.npow = 0;
    bonded->bond.ntyp_pow = 0;
    bonded->bond.ncon = 0;
    bonded->bond.ntyp_con = 0;
    bonded->bond.nblock_pow = 0;
    bonded->bond.nblock_size_pow = 0;
    bonded->bond.block_pow_on = 0;
    bonded->bond.nblock_con = 0;
    bonded->bond.nblock_size_con = 0;
    bonded->bond.block_con_on = 0;
    bonded->bond.nbond_pow_mall = 0;
    bonded->bond.nbond_typ_pow_mall = 0;
    bonded->bond.nbond_con_mall = 0;
    bonded->bond.nbond_typ_con_mall = 0;
    bonded->grp_bond_con.max_iter = 0;
    bonded->grp_bond_con.num_33 = 0;
    bonded->grp_bond_con.num_21 = 0;
    bonded->grp_bond_con.num_43 = 0;
    bonded->grp_bond_con.num_23 = 0;
    bonded->grp_bond_con.num_46 = 0;
    bonded->grp_bond_con.ntyp_33 = 0;
    bonded->grp_bond_con.ntyp_46 = 0;
    bonded->grp_bond_con.ntyp_23 = 0;
    bonded->grp_bond_con.ntyp_21 = 0;
    bonded->grp_bond_con.ntyp_43 = 0;
    bonded->grp_bond_con.ngrp_21_mall = 0;
    bonded->grp_bond_con.ngrp_33_mall = 0;
    bonded->grp_bond_con.ngrp_43_mall = 0;
    bonded->grp_bond_con.ngrp_23_mall = 0;
    bonded->grp_bond_con.ngrp_46_mall = 0;
    bonded->grp_bond_con.ngrp_typ_21_mall = 0;
    bonded->grp_bond_con.ngrp_typ_33_mall = 0;
    bonded->grp_bond_con.ngrp_typ_43_mall = 0;
    bonded->grp_bond_con.ngrp_typ_23_mall = 0;
    bonded->grp_bond_con.ngrp_typ_46_mall = 0;
  bonded->bond_free.num = 0;
  bonded->bond_free.j1 = 0;
  bonded->bond_free.j2 = 0;
  bonded->bond_free.npow = 0;
  bonded->bond_free.nhist = 0;
    bonded->bend.npow = 0;
    bonded->bend.ntyp_pow = 0;
    bonded->bend.ncon = 0;
    bonded->bend.ntyp_con = 0;
    bonded->bend.nblock_pow = 0;
    bonded->bend.nblock_size_pow = 0;
    bonded->bend.block_pow_on = 0;
    bonded->bend.nblock_con = 0;
    bonded->bend.nblock_size_con = 0;
    bonded->bend.block_con_on = 0;
    bonded->bend.nbend_pow_mall = 0;
    bonded->bend.nbend_typ_pow_mall = 0;
    bonded->bend.nbend_con_mall = 0;
    bonded->bend.nbend_typ_con_mall = 0;
    bonded->bend_free.num = 0;
    bonded->bend_free.j1 = 0;
    bonded->bend_free.j2 = 0;
    bonded->bend_free.j3 = 0;
    bonded->bend_free.npow = 0;
    bonded->bend_free.nhist = 0;
    bonded->bend_bnd.num = 0;
    bonded->bend_bnd.ntyp = 0;
    bonded->bend_bnd.nblock = 0;
    bonded->bend_bnd.nblock_size = 0;
    bonded->bend_bnd.block_on = 0;
    bonded->bend_bnd.nbend_bnd_mall = 0;
    bonded->bend_bnd.nbend_bnd_typ_mall = 0;
    bonded->tors.npow = 0;
    bonded->tors.ntyp_pow = 0;
    bonded->tors.nimpr = 0;
    bonded->tors.ncon = 0;
    bonded->tors.ntyp_con = 0;
    bonded->tors.nblock_con = 0;
    bonded->tors.nblock_size_con = 0;
    bonded->tors.block_con_on = 0;
    bonded->tors.nblock_pow = 0;
    bonded->tors.nblock_size_pow = 0;
    bonded->tors.block_pow_on = 0;
    bonded->tors.ntors_pow_mall = 0;
    bonded->tors.ntors_typ_pow_mall = 0;
    bonded->tors.ntors_con_mall = 0;
    bonded->tors.ntors_typ_con_mall = 0;
    bonded->tors_free.num = 0;
    for(i=1;i<=2;i++){
     bonded->tors_free.j1[i] = 0;
     bonded->tors_free.j2[i] = 0;
     bonded->tors_free.j3[i] = 0;
     bonded->tors_free.j4[i] = 0;
     bonded->tors_free.eq[i] = 0.0;
    }
    bonded->tors_free.fk = 0;
    bonded->tors_free.del = 1;
    bonded->tors_free.npow = 0;
    bonded->tors_free.nhist = 0;
    bonded->onfo.num = 0;
    bonded->onfo.ntyp = 0;
    bonded->onfo.nblock = 0;
    bonded->onfo.nblock_size = 0;
    bonded->onfo.block_on = 0;
    bonded->onfo.nonfo_mall = 0;
    bonded->onfo.nonfo_typ_mall = 0;
    bonded->ecor.num = 0;
    bonded->ecor.alp_ewd = 0.0;
    bonded->ecor.nblock = 0;
    bonded->ecor.nblock_size = 0;
    bonded->ecor.block_on = 0;
    bonded->ecor.necor_mall = 0;
}

canonical_original_code:
void zero_bnd(struct bonded *bonded)
{
int i;
    bonded->bond.npow = 0;
    bonded->bond.ntyp_pow = 0;
    bonded->bond.ncon = 0;
    bonded->bond.ntyp_con = 0;
    bonded->bond.nblock_pow = 0;
    bonded->bond.nblock_size_pow = 0;
    bonded->bond.block_pow_on = 0;
    bonded->bond.nblock_con = 0;
    bonded->bond.nblock_size_con = 0;
    bonded->bond.block_con_on = 0;
    bonded->bond.nbond_pow_mall = 0;
    bonded->bond.nbond_typ_pow_mall = 0;
    bonded->bond.nbond_con_mall = 0;
    bonded->bond.nbond_typ_con_mall = 0;
    bonded->grp_bond_con.max_iter = 0;
    bonded->grp_bond_con.num_33 = 0;
    bonded->grp_bond_con.num_21 = 0;
    bonded->grp_bond_con.num_43 = 0;
    bonded->grp_bond_con.num_23 = 0;
    bonded->grp_bond_con.num_46 = 0;
    bonded->grp_bond_con.ntyp_33 = 0;
    bonded->grp_bond_con.ntyp_46 = 0;
    bonded->grp_bond_con.ntyp_23 = 0;
    bonded->grp_bond_con.ntyp_21 = 0;
    bonded->grp_bond_con.ntyp_43 = 0;
    bonded->grp_bond_con.ngrp_21_mall = 0;
    bonded->grp_bond_con.ngrp_33_mall = 0;
    bonded->grp_bond_con.ngrp_43_mall = 0;
    bonded->grp_bond_con.ngrp_23_mall = 0;
    bonded->grp_bond_con.ngrp_46_mall = 0;
    bonded->grp_bond_con.ngrp_typ_21_mall = 0;
    bonded->grp_bond_con.ngrp_typ_33_mall = 0;
    bonded->grp_bond_con.ngrp_typ_43_mall = 0;
    bonded->grp_bond_con.ngrp_typ_23_mall = 0;
    bonded->grp_bond_con.ngrp_typ_46_mall = 0;
  bonded->bond_free.num = 0;
  bonded->bond_free.j1 = 0;
  bonded->bond_free.j2 = 0;
  bonded->bond_free.npow = 0;
  bonded->bond_free.nhist = 0;
    bonded->bend.npow = 0;
    bonded->bend.ntyp_pow = 0;
    bonded->bend.ncon = 0;
    bonded->bend.ntyp_con = 0;
    bonded->bend.nblock_pow = 0;
    bonded->bend.nblock_size_pow = 0;
    bonded->bend.block_pow_on = 0;
    bonded->bend.nblock_con = 0;
    bonded->bend.nblock_size_con = 0;
    bonded->bend.block_con_on = 0;
    bonded->bend.nbend_pow_mall = 0;
    bonded->bend.nbend_typ_pow_mall = 0;
    bonded->bend.nbend_con_mall = 0;
    bonded->bend.nbend_typ_con_mall = 0;
    bonded->bend_free.num = 0;
    bonded->bend_free.j1 = 0;
    bonded->bend_free.j2 = 0;
    bonded->bend_free.j3 = 0;
    bonded->bend_free.npow = 0;
    bonded->bend_free.nhist = 0;
    bonded->bend_bnd.num = 0;
    bonded->bend_bnd.ntyp = 0;
    bonded->bend_bnd.nblock = 0;
    bonded->bend_bnd.nblock_size = 0;
    bonded->bend_bnd.block_on = 0;
    bonded->bend_bnd.nbend_bnd_mall = 0;
    bonded->bend_bnd.nbend_bnd_typ_mall = 0;
    bonded->tors.npow = 0;
    bonded->tors.ntyp_pow = 0;
    bonded->tors.nimpr = 0;
    bonded->tors.ncon = 0;
    bonded->tors.ntyp_con = 0;
    bonded->tors.nblock_con = 0;
    bonded->tors.nblock_size_con = 0;
    bonded->tors.block_con_on = 0;
    bonded->tors.nblock_pow = 0;
    bonded->tors.nblock_size_pow = 0;
    bonded->tors.block_pow_on = 0;
    bonded->tors.ntors_pow_mall = 0;
    bonded->tors.ntors_typ_pow_mall = 0;
    bonded->tors.ntors_con_mall = 0;
    bonded->tors.ntors_typ_con_mall = 0;
    bonded->tors_free.num = 0;
    for(i=1;i<=2;i++){
     bonded->tors_free.j1[i] = 0;
     bonded->tors_free.j2[i] = 0;
     bonded->tors_free.j3[i] = 0;
     bonded->tors_free.j4[i] = 0;
     bonded->tors_free.eq[i] = 0.0;
    }
    bonded->tors_free.fk = 0;
    bonded->tors_free.del = 1;
    bonded->tors_free.npow = 0;
    bonded->tors_free.nhist = 0;
    bonded->onfo.num = 0;
    bonded->onfo.ntyp = 0;
    bonded->onfo.nblock = 0;
    bonded->onfo.nblock_size = 0;
    bonded->onfo.block_on = 0;
    bonded->onfo.nonfo_mall = 0;
    bonded->onfo.nonfo_typ_mall = 0;
    bonded->ecor.num = 0;
    bonded->ecor.alp_ewd = 0.0;
    bonded->ecor.nblock = 0;
    bonded->ecor.nblock_size = 0;
    bonded->ecor.block_on = 0;
    bonded->ecor.necor_mall = 0;
}

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; } *

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; }


repo: TuckermanGroup/PINY

original_code:
void energy_control_inter_recip(CLASS *class, BONDED *bonded,
                                GENERAL_DATA *general_data)
   {
  double vrecip,vself,vbgr,vecor,wght_now,vdummy;
  double press_inter;
  int i,iii,iver_get,irespa,ip;
  int pimd_on,ewald_on;
  int iget_full_intra = class->energy_ctrl.iget_full_intra;
  int iget_res_intra = class->energy_ctrl.iget_res_intra;
  int iget_full_inter = class->energy_ctrl.iget_full_inter;
  int iget_res_inter = class->energy_ctrl.iget_res_inter;
  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 pi_beads = class->clatoms_info.pi_beads;
  int pi_beads_proc = class->clatoms_info.pi_beads_proc;
  int nchrg = class->clatoms_info.nchrg;
  int np_tot = class->communicate.np;
  int np_beads = class->communicate.np_beads;
  int np_forc = class->communicate.np_forc;
  int comm_forc = class->communicate.comm_forc;
  int myid = class->communicate.myid;
  int myid_bead = class->communicate.myid_bead;
  int pme_on = class->part_mesh.pme_on;
  int pme_res_on = class->part_mesh.pme_res_on;
  double alp_ewd = general_data->ewald.alp_ewd;
  double alp_clus = general_data->ewald.alp_clus;
  int nktot = general_data->ewald.nktot;
  int nktot_res = general_data->ewald.nktot_res;
  int *kastr = general_data->ewald.kastr;
  int *kbstr = general_data->ewald.kbstr;
  int *kcstr = general_data->ewald.kcstr;
  int *kastr_res = general_data->ewald.kastr_res;
  int *kbstr_res = general_data->ewald.kbstr_res;
  int *kcstr_res = general_data->ewald.kcstr_res;
  int *ibrk1 = general_data->ewald.ibrk1;
  int *ibrk2 = general_data->ewald.ibrk2;
  int *ibrk3 = general_data->ewald.ibrk3;
  int *ibrk1_res = general_data->ewald.ibrk1_res;
  int *ibrk2_res = general_data->ewald.ibrk2_res;
  double *clus_corr_r = general_data->ewald.clus_corr_r;
  double *dclus_corr_r = general_data->ewald.dclus_corr_r;
  int error_check_on = general_data->error_check_on;
  double pext = general_data->statepoint.pext;
  double vol = general_data->cell.vol;
  int iperd = general_data->cell.iperd;
  double *pvten_tot = general_data->ptens.pvten_tot;
  double wght_ter_res = class->for_scr.wght_ter_res;
  double wght_ter = class->for_scr.wght_ter;
  double wght_tra_res = bonded->intra_scr.wght_tra_res;
  int necor = bonded->ecor.num;
  int np_send_self_bgr;
  double wght_diff;
  wght_diff = wght_ter_res - wght_ter;
  ("energy control intermolecular reciprocal");
  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;
  np_send_self_bgr = ((pimd_on == 1 && (np_beads + np_forc) == np_tot)
                      ? np_tot : np_forc);
  iver_get = 0; if( (pimd_on==1) && (iget_full_inter==1) ){iver_get = 1;}
  ewald_on = 0; if( (nchrg>0) && (iperd>0) ){ewald_on=1;}
  vself = 0.0;
  vbgr = 0.0;
  vecor = 0.0;
  vrecip = 0.0;
  if(ewald_on == 1){
    if( (myid_bead==0) || (np_forc > 1) ){
      if( (iget_full_intra==1) || (iget_res_intra==0) ){
        ewald3d_selfbgr(&(class->clatoms_info),&general_data->ewald,
                        &(general_data->ptens),vol,wght_tra_res,
                        &vself,&vbgr,np_send_self_bgr,iget_pv_real_inter,iperd);
      }
    }
  }
  if(ewald_on == 1){
   for(ip=1;ip<=pi_beads_proc;ip++){
   if(pme_on==0 && pme_res_on==0){
     if( (iget_res_inter == 0) && (iget_full_inter == 1) ){
        ewald3d_recip(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,alp_clus,
                   nktot,kastr,kbstr,kcstr,ibrk1,ibrk2,
                   &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 0) && (nktot_res > 0)){
        ewald3d_recip(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,alp_clus,
                   nktot_res,kastr_res,kbstr_res,kcstr_res,ibrk1_res,ibrk2_res,
                   &(class->ewd_scr),&vrecip,wght_ter_res,iver_get,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) && (nktot_res > 0)){
        ewald3d_recip_both(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot,kastr,kbstr,kcstr,ibrk1,ibrk2,ibrk3,
                   &(class->ewd_scr),&vrecip,wght_ter,wght_ter_res,
                   iver_get,&(class->class_comm_forc_pkg),iget_pv_real_inter,
                   clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) && (nktot_res == 0)){
        ewald3d_recip(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,alp_clus,
                   nktot,kastr,kbstr,kcstr,ibrk1,ibrk2,
                   &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   clus_corr_r,dclus_corr_r);
     }
   }
   if(pme_on==1 && pme_res_on==0){
     if( (iget_res_inter == 1) && nktot_res > 0){
        irespa = 0;
        ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot,kastr,kbstr,kcstr,
                   &(class->ewd_scr),&vrecip,wght_ter_res,iver_get,
                   &(class->part_mesh),irespa,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   &(general_data->pme_fft_pkg),&(class->for_scr),
                   clus_corr_r,dclus_corr_r);
     }else{
      if( iget_full_inter == 1 ){
        irespa = 0;
        ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot,kastr,kbstr,kcstr,
                   &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                   &(class->part_mesh),irespa,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   &(general_data->pme_fft_pkg),&(class->for_scr),
                   clus_corr_r,dclus_corr_r);
      }
     }
   }
   if(pme_on==1 && pme_res_on==1 ){
     if( (iget_res_inter == 1) && (iget_full_inter == 0) && (nktot_res > 0)){
        irespa = 1;
        ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot_res,kastr_res,kbstr_res,kcstr_res,
                   &(class->ewd_scr),&vrecip,wght_ter_res,iver_get,
                   &(class->part_mesh),irespa,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   &(general_data->pme_res_fft_pkg),&(class->for_scr),
                   clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) && (nktot_res > 0)){
         irespa = 1;vdummy = 0.0;
         ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot_res,kastr_res,kbstr_res,kcstr_res,
                   &(class->ewd_scr),&vdummy,wght_diff,iver_get,
                   &(class->part_mesh),irespa,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   &(general_data->pme_res_fft_pkg),&(class->for_scr),
                   clus_corr_r,dclus_corr_r);
         irespa = 0;
         ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                  &(general_data->cell),&(general_data->ptens),alp_ewd,
                  nktot,kastr,kbstr,kcstr,
                  &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                  &(class->part_mesh),irespa,
                  &(class->class_comm_forc_pkg),iget_pv_real_inter,
                  &(general_data->pme_fft_pkg),&(class->for_scr),
                  clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) && (nktot_res == 0)){
         irespa = 0;
         ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                 &(general_data->cell),&(general_data->ptens),alp_ewd,
                 nktot,kastr,kbstr,kcstr,
                 &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                 &(class->part_mesh),irespa,
                 &(class->class_comm_forc_pkg),iget_pv_real_inter,
                 &(general_data->pme_fft_pkg),&(class->for_scr),
                 clus_corr_r,dclus_corr_r);
     }
   }
   }
   vrecip /= (double) pi_beads;
  }
  if( (ewald_on==1) && (necor > 0) ){
   for(ip=1;ip<=pi_beads_proc;ip++){
    if( (nktot_res == 0) && (iget_full_inter == 1) ){
       ecor(&(class->clatoms_info),&(class->clatoms_pos[ip]),
            &(bonded->ecor),&(general_data->cell),&(bonded->intra_scr),
            &(general_data->ptens),&vecor,iver_get,
            &(class->class_comm_forc_pkg),
            iget_pe_real_inter,iget_pv_real_inter);
    }
    if(nktot_res > 0 ){
     if( (iget_res_inter == 1) && (iget_full_inter == 0) ){
       ecor(&(class->clatoms_info),&(class->clatoms_pos[ip]),
            &(bonded->ecor),&(general_data->cell),&(bonded->intra_scr),
            &(general_data->ptens),&vecor,iver_get,
            &(class->class_comm_forc_pkg),
            iget_pe_real_inter,iget_pv_real_inter);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) ){
       ecor_both(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                 &(bonded->ecor),&(general_data->cell),&(bonded->intra_scr),
                 &(general_data->ptens),&vecor,iver_get,
                 &(class->class_comm_forc_pkg),
                 iget_pe_real_inter,iget_pv_real_inter);
     }
    }
   }
   vecor /= (double) pi_beads;
  }
  if(iget_full_inter==1){
    if(pimd_on==0){
     if(iget_pv_real_inter==1){
       general_data->stat_avg.press_inter = (pvten_tot[1]
                                           + pvten_tot[5]
                                           + pvten_tot[9])/(3.0*vol);
     }
    }else{
       get_vir_press(class,general_data,&press_inter);
       general_data->stat_avg.press_inter = (press_inter)/(vol);
    }
  }
  if( (iget_full_intra==1) || (iget_full_inter==1) ){
    general_data->stat_avg.vrecip = vrecip+vself+vbgr+vecor;
    if(iget_pe_real_inter==1){
      general_data->stat_avg.vintert += (vrecip+vself+vbgr+vecor);
      general_data->stat_avg.vcoul += (vrecip+vself+vbgr+vecor);
    }
  }
  ("energy control intermolecular reciprocal");
    }

canonical_original_code:
void energy_control_inter_recip(struct class *class, struct bonded *bonded, struct general_data *general_data)
   {
  double vrecip; double vself; double vbgr; double vecor; double wght_now; double vdummy;
  double press_inter;
  int i; int iii; int iver_get; int irespa; int ip;
  int pimd_on; int ewald_on;
  int iget_full_intra = class->energy_ctrl.iget_full_intra;
  int iget_res_intra = class->energy_ctrl.iget_res_intra;
  int iget_full_inter = class->energy_ctrl.iget_full_inter;
  int iget_res_inter = class->energy_ctrl.iget_res_inter;
  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 pi_beads = class->clatoms_info.pi_beads;
  int pi_beads_proc = class->clatoms_info.pi_beads_proc;
  int nchrg = class->clatoms_info.nchrg;
  int np_tot = class->communicate.np;
  int np_beads = class->communicate.np_beads;
  int np_forc = class->communicate.np_forc;
  int comm_forc = class->communicate.comm_forc;
  int myid = class->communicate.myid;
  int myid_bead = class->communicate.myid_bead;
  int pme_on = class->part_mesh.pme_on;
  int pme_res_on = class->part_mesh.pme_res_on;
  double alp_ewd = general_data->ewald.alp_ewd;
  double alp_clus = general_data->ewald.alp_clus;
  int nktot = general_data->ewald.nktot;
  int nktot_res = general_data->ewald.nktot_res;
  int *kastr = general_data->ewald.kastr;
  int *kbstr = general_data->ewald.kbstr;
  int *kcstr = general_data->ewald.kcstr;
  int *kastr_res = general_data->ewald.kastr_res;
  int *kbstr_res = general_data->ewald.kbstr_res;
  int *kcstr_res = general_data->ewald.kcstr_res;
  int *ibrk1 = general_data->ewald.ibrk1;
  int *ibrk2 = general_data->ewald.ibrk2;
  int *ibrk3 = general_data->ewald.ibrk3;
  int *ibrk1_res = general_data->ewald.ibrk1_res;
  int *ibrk2_res = general_data->ewald.ibrk2_res;
  double *clus_corr_r = general_data->ewald.clus_corr_r;
  double *dclus_corr_r = general_data->ewald.dclus_corr_r;
  int error_check_on = general_data->error_check_on;
  double pext = general_data->statepoint.pext;
  double vol = general_data->cell.vol;
  int iperd = general_data->cell.iperd;
  double *pvten_tot = general_data->ptens.pvten_tot;
  double wght_ter_res = class->for_scr.wght_ter_res;
  double wght_ter = class->for_scr.wght_ter;
  double wght_tra_res = bonded->intra_scr.wght_tra_res;
  int necor = bonded->ecor.num;
  int np_send_self_bgr;
  double wght_diff;
  wght_diff = wght_ter_res - wght_ter;
  ("energy control intermolecular reciprocal");
  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;
  np_send_self_bgr = ((pimd_on == 1 && (np_beads + np_forc) == np_tot)
                      ? np_tot : np_forc);
  iver_get = 0; if( (pimd_on==1) && (iget_full_inter==1) ){iver_get = 1;}
  ewald_on = 0; if( (nchrg>0) && (iperd>0) ){ewald_on=1;}
  vself = 0.0;
  vbgr = 0.0;
  vecor = 0.0;
  vrecip = 0.0;
  if(ewald_on == 1){
    if( (myid_bead==0) || (np_forc > 1) ){
      if( (iget_full_intra==1) || (iget_res_intra==0) ){
        ewald3d_selfbgr(&(class->clatoms_info),&general_data->ewald,
                        &(general_data->ptens),vol,wght_tra_res,
                        &vself,&vbgr,np_send_self_bgr,iget_pv_real_inter,iperd);
      }
    }
  }
  if(ewald_on == 1){
   for(ip=1;ip<=pi_beads_proc;ip++){
   if(pme_on==0 && pme_res_on==0){
     if( (iget_res_inter == 0) && (iget_full_inter == 1) ){
        ewald3d_recip(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,alp_clus,
                   nktot,kastr,kbstr,kcstr,ibrk1,ibrk2,
                   &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 0) && (nktot_res > 0)){
        ewald3d_recip(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,alp_clus,
                   nktot_res,kastr_res,kbstr_res,kcstr_res,ibrk1_res,ibrk2_res,
                   &(class->ewd_scr),&vrecip,wght_ter_res,iver_get,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) && (nktot_res > 0)){
        ewald3d_recip_both(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot,kastr,kbstr,kcstr,ibrk1,ibrk2,ibrk3,
                   &(class->ewd_scr),&vrecip,wght_ter,wght_ter_res,
                   iver_get,&(class->class_comm_forc_pkg),iget_pv_real_inter,
                   clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) && (nktot_res == 0)){
        ewald3d_recip(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,alp_clus,
                   nktot,kastr,kbstr,kcstr,ibrk1,ibrk2,
                   &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   clus_corr_r,dclus_corr_r);
     }
   }
   if(pme_on==1 && pme_res_on==0){
     if( (iget_res_inter == 1) && nktot_res > 0){
        irespa = 0;
        ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot,kastr,kbstr,kcstr,
                   &(class->ewd_scr),&vrecip,wght_ter_res,iver_get,
                   &(class->part_mesh),irespa,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   &(general_data->pme_fft_pkg),&(class->for_scr),
                   clus_corr_r,dclus_corr_r);
     }else{
      if( iget_full_inter == 1 ){
        irespa = 0;
        ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot,kastr,kbstr,kcstr,
                   &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                   &(class->part_mesh),irespa,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   &(general_data->pme_fft_pkg),&(class->for_scr),
                   clus_corr_r,dclus_corr_r);
      }
     }
   }
   if(pme_on==1 && pme_res_on==1 ){
     if( (iget_res_inter == 1) && (iget_full_inter == 0) && (nktot_res > 0)){
        irespa = 1;
        ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot_res,kastr_res,kbstr_res,kcstr_res,
                   &(class->ewd_scr),&vrecip,wght_ter_res,iver_get,
                   &(class->part_mesh),irespa,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   &(general_data->pme_res_fft_pkg),&(class->for_scr),
                   clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) && (nktot_res > 0)){
         irespa = 1;vdummy = 0.0;
         ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                   &(general_data->cell),&(general_data->ptens),alp_ewd,
                   nktot_res,kastr_res,kbstr_res,kcstr_res,
                   &(class->ewd_scr),&vdummy,wght_diff,iver_get,
                   &(class->part_mesh),irespa,
                   &(class->class_comm_forc_pkg),iget_pv_real_inter,
                   &(general_data->pme_res_fft_pkg),&(class->for_scr),
                   clus_corr_r,dclus_corr_r);
         irespa = 0;
         ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                  &(general_data->cell),&(general_data->ptens),alp_ewd,
                  nktot,kastr,kbstr,kcstr,
                  &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                  &(class->part_mesh),irespa,
                  &(class->class_comm_forc_pkg),iget_pv_real_inter,
                  &(general_data->pme_fft_pkg),&(class->for_scr),
                  clus_corr_r,dclus_corr_r);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) && (nktot_res == 0)){
         irespa = 0;
         ewald3d_recip_pme(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                 &(general_data->cell),&(general_data->ptens),alp_ewd,
                 nktot,kastr,kbstr,kcstr,
                 &(class->ewd_scr),&vrecip,wght_ter,iver_get,
                 &(class->part_mesh),irespa,
                 &(class->class_comm_forc_pkg),iget_pv_real_inter,
                 &(general_data->pme_fft_pkg),&(class->for_scr),
                 clus_corr_r,dclus_corr_r);
     }
   }
   }
   vrecip /= (double) pi_beads;
  }
  if( (ewald_on==1) && (necor > 0) ){
   for(ip=1;ip<=pi_beads_proc;ip++){
    if( (nktot_res == 0) && (iget_full_inter == 1) ){
       ecor(&(class->clatoms_info),&(class->clatoms_pos[ip]),
            &(bonded->ecor),&(general_data->cell),&(bonded->intra_scr),
            &(general_data->ptens),&vecor,iver_get,
            &(class->class_comm_forc_pkg),
            iget_pe_real_inter,iget_pv_real_inter);
    }
    if(nktot_res > 0 ){
     if( (iget_res_inter == 1) && (iget_full_inter == 0) ){
       ecor(&(class->clatoms_info),&(class->clatoms_pos[ip]),
            &(bonded->ecor),&(general_data->cell),&(bonded->intra_scr),
            &(general_data->ptens),&vecor,iver_get,
            &(class->class_comm_forc_pkg),
            iget_pe_real_inter,iget_pv_real_inter);
     }
     if( (iget_res_inter == 1) && (iget_full_inter == 1) ){
       ecor_both(&(class->clatoms_info),&(class->clatoms_pos[ip]),
                 &(bonded->ecor),&(general_data->cell),&(bonded->intra_scr),
                 &(general_data->ptens),&vecor,iver_get,
                 &(class->class_comm_forc_pkg),
                 iget_pe_real_inter,iget_pv_real_inter);
     }
    }
   }
   vecor /= (double) pi_beads;
  }
  if(iget_full_inter==1){
    if(pimd_on==0){
     if(iget_pv_real_inter==1){
       general_data->stat_avg.press_inter = (pvten_tot[1]
                                           + pvten_tot[5]
                                           + pvten_tot[9])/(3.0*vol);
     }
    }else{
       get_vir_press(class,general_data,&press_inter);
       general_data->stat_avg.press_inter = (press_inter)/(vol);
    }
  }
  if( (iget_full_intra==1) || (iget_full_inter==1) ){
    general_data->stat_avg.vrecip = vrecip+vself+vbgr+vecor;
    if(iget_pe_real_inter==1){
      general_data->stat_avg.vintert += (vrecip+vself+vbgr+vecor);
      general_data->stat_avg.vcoul += (vrecip+vself+vbgr+vecor);
    }
  }
  ("energy control intermolecular reciprocal");
    }

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 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: vrecip double

variable_types: vself double

variable_types: vbgr double

variable_types: vecor double

variable_types: vdummy double

variable_types: i int

variable_types: iii int

variable_types: irespa int

variable_types: ip int

variable_types: nchrg int

variable_types: myid int

variable_types: nktot int

variable_types:
kastr
int *

variable_types:
kbstr
int *

variable_types:
kcstr
int *

variable_types: pext double

variable_types: vol double

variable_types: iperd int

variable_types: necor int

return_type: void

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 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; }

user_defined_types: 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; }

user_defined_types: 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; }

user_defined_types: 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; }

user_defined_types: struct constrnt { int iconstrnt; int iroll; int max_iter; double tolshake; double tolratl; }

user_defined_types: 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; }

user_defined_types: 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; }

user_defined_types: struct bend_free { int num; int j1; int npow; int nhist; double fk; double eq; double del; char *file; double *hist; }

user_defined_types: 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; }

user_defined_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; }

user_defined_types: 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; }

user_defined_types: 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; }

user_defined_types: 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; }

user_defined_types: 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; }

user_defined_types: struct excl { int nlst; int nlst_root; int num_cp; int *num; int *j; int *j_off; int *j1_cp; }

user_defined_types: 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; }


original_code:
void set_mol_name_params(DICT_WORD mol_name_dict[],int num_mol_name_dict,
                         char fun_key[],char filename[],NAME mol_typ[],
                         int natm_1mol_jmol_typ[],int jmol_typ,int nres_expt)
{
  int num,i,index;
  for(i=1;i<=num_mol_name_dict;i++){
    if(mol_name_dict[i].iuset==0 && mol_name_dict[i].key_type==1){
      keyword_miss(mol_name_dict,filename,fun_key,i);}
  }
  index = 1;
  if(strcasecmp(mol_typ[jmol_typ],mol_name_dict[1].keyarg)!=0){
    keyarg_barf(mol_name_dict,filename,fun_key,index);}
  sscanf(mol_name_dict[2].keyarg,"%d",&num);
  index = 2;
  if(num < 0){
    keyarg_barf(mol_name_dict,filename,fun_key,index);
  }
  if(num != nres_expt){
   printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
   printf("Number of residue's specified %d not equal to number expected %d\n",
          num,nres_expt);
   printf("in file %s\n",filename);
   printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
   fflush(stdout);
   exit(1);
  }
  sscanf(mol_name_dict[3].keyarg,"%d",&num);
  index = 3;
  if(num<0){
    keyarg_barf(mol_name_dict,filename,fun_key,index);
  }
  natm_1mol_jmol_typ[jmol_typ] = num;
}

canonical_original_code:
void set_mol_name_params(struct dict_word mol_name_dict[], int num_mol_name_dict, char fun_key[], char filename[], char mol_typ[][50], int natm_1mol_jmol_typ[], int jmol_typ, int nres_expt)
{
  int num; int i; int index;
  for(i=1;i<=num_mol_name_dict;i++){
    if(mol_name_dict[i].iuset==0 && mol_name_dict[i].key_type==1){
      keyword_miss(mol_name_dict,filename,fun_key,i);}
  }
  index = 1;
  if(strcasecmp(mol_typ[jmol_typ],mol_name_dict[1].keyarg)!=0){
    keyarg_barf(mol_name_dict,filename,fun_key,index);}
  sscanf(mol_name_dict[2].keyarg,"%d",&num);
  index = 2;
  if(num < 0){
    keyarg_barf(mol_name_dict,filename,fun_key,index);
  }
  if(num != nres_expt){
   printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
   printf("Number of residue's specified %d not equal to number expected %d\n",
          num,nres_expt);
   printf("in file %s\n",filename);
   printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
   fflush(stdout);
   exit(1);
  }
  sscanf(mol_name_dict[3].keyarg,"%d",&num);
  index = 3;
  if(num<0){
    keyarg_barf(mol_name_dict,filename,fun_key,index);
  }
  natm_1mol_jmol_typ[jmol_typ] = num;
}

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

variable_types:
filename
char []

variable_types: num int

variable_types: index int


original_code:
void set_potsurf_dict(DICT_WORD *surf_dict[],int *num_surf_dict, int ifirst)
{
  int i;
  if(ifirst==1){
    *num_surf_dict=7;
    *surf_dict = (DICT_WORD *)cmalloc(*num_surf_dict*sizeof(DICT_WORD))-1;
  }
  for(i=1;i<=*num_surf_dict;i++){(*surf_dict)[i].iuset = 0;}
  for(i=1;i<=*num_surf_dict;i++){(*surf_dict)[i].key_type = 0;}
  strcpy((*surf_dict)[1].keyword,"surface_type");
  strcpy((*surf_dict)[1].keyarg,"");
  strcpy((*surf_dict)[1].error_mes,"");
  (*surf_dict)[1].key_type = 1;
  strcpy((*surf_dict)[2].keyword,"ad_atom");
  strcpy((*surf_dict)[2].keyarg,"");
  strcpy((*surf_dict)[2].error_mes,"");
  (*surf_dict)[2].key_type = 1;
  strcpy((*surf_dict)[3].keyword,"pot_type");
  strcpy((*surf_dict)[3].keyarg,"");
  strcpy((*surf_dict)[3].error_mes,
       "lennard-jones_12-3,lennard-jones_9-3,null");
  (*surf_dict)[3].key_type = 1;
  strcpy((*surf_dict)[4].keyword,"min_dist");
  strcpy((*surf_dict)[4].keyarg,"");
  strcpy((*surf_dict)[4].keyarg,"0.1");
  strcpy((*surf_dict)[4].error_mes,"a number >0");
  strcpy((*surf_dict)[5].keyword,"max_dist");
  strcpy((*surf_dict)[5].keyarg,"10.0");
  strcpy((*surf_dict)[5].error_mes,"a number >0");
  (*surf_dict)[5].key_type = 1;
  strcpy((*surf_dict)[6].keyword,"sig");
  strcpy((*surf_dict)[6].keyarg,"0.0");
  strcpy((*surf_dict)[6].error_mes,"a number >=0");
  strcpy((*surf_dict)[7].keyword,"eps");
  strcpy((*surf_dict)[7].keyarg,"0.0");
  strcpy((*surf_dict)[7].error_mes,"a number >=0");
}

canonical_original_code:
void set_potsurf_dict(struct dict_word *surf_dict[], int *num_surf_dict, int ifirst)
{
  int i;
  if(ifirst==1){
    *num_surf_dict=7;
    *surf_dict = (struct dict_word *)cmalloc(*num_surf_dict*sizeof(DICT_WORD))-1;
  }
  for(i=1;i<=*num_surf_dict;i++){(*surf_dict)[i].iuset = 0;}
  for(i=1;i<=*num_surf_dict;i++){(*surf_dict)[i].key_type = 0;}
  strcpy((*surf_dict)[1].keyword,"surface_type");
  strcpy((*surf_dict)[1].keyarg,"");
  strcpy((*surf_dict)[1].error_mes,"");
  (*surf_dict)[1].key_type = 1;
  strcpy((*surf_dict)[2].keyword,"ad_atom");
  strcpy((*surf_dict)[2].keyarg,"");
  strcpy((*surf_dict)[2].error_mes,"");
  (*surf_dict)[2].key_type = 1;
  strcpy((*surf_dict)[3].keyword,"pot_type");
  strcpy((*surf_dict)[3].keyarg,"");
  strcpy((*surf_dict)[3].error_mes,
       "lennard-jones_12-3,lennard-jones_9-3,null");
  (*surf_dict)[3].key_type = 1;
  strcpy((*surf_dict)[4].keyword,"min_dist");
  strcpy((*surf_dict)[4].keyarg,"");
  strcpy((*surf_dict)[4].keyarg,"0.1");
  strcpy((*surf_dict)[4].error_mes,"a number >0");
  strcpy((*surf_dict)[5].keyword,"max_dist");
  strcpy((*surf_dict)[5].keyarg,"10.0");
  strcpy((*surf_dict)[5].error_mes,"a number >0");
  (*surf_dict)[5].key_type = 1;
  strcpy((*surf_dict)[6].keyword,"sig");
  strcpy((*surf_dict)[6].keyarg,"0.0");
  strcpy((*surf_dict)[6].error_mes,"a number >=0");
  strcpy((*surf_dict)[7].keyword,"eps");
  strcpy((*surf_dict)[7].keyarg,"0.0");
  strcpy((*surf_dict)[7].error_mes,"a number >=0");
}

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

variable_types: ifirst int

variable_types: i int


original_code:
void force_verlst(CLATOMS_INFO *clatoms_info,CLATOMS_POS *clatoms_pos,
                  FOR_SCR *for_scr,ATOMMAPS *atommaps,
                  CELL *cell,PTENS *ptens,INTERACT *interact,
                  ENERGY_CTRL *energy_ctrl,
                  int nter[],int jter[],int jver_off[],
                  INTRA_SCR *intra_scr,double *vreal,double *vvdw,
                double *vcoul)
{
  int ipart, jpart;
  int intact_tot;
  int intact_save;
  int num_call;
  int num_call_save;
  int lower,upper;
  int ifor_call;
  int joff, jind_off;
  int iii,itemp;
  int natm_tot,nlen;
  int lst_typ=1;
  int *for_scr_intact = &(for_scr->intact);
  int *for_scr_num_brk = &(for_scr->num_brk);
  int *for_scr_num_brk_i = for_scr->num_brk_i;
  int *for_scr_i_index = for_scr->i_index;
  int *for_scr_j_index = for_scr->j_index;
  ("force evaluation - Verlet list");
  intact_save = 0;
  natm_tot = clatoms_info->natm_tot;
  nlen = (for_scr->nlen);
  for(ipart=1;ipart<=natm_tot;ipart++){
    intact_save += nter[ipart];
  }
  num_call_save = intact_save/(nlen);
  if( (intact_save % (nlen))!=0 ){num_call_save += 1;}
  (*for_scr_intact) = 0;
  (*for_scr_num_brk) = 0;
  num_call = 0;
  intact_tot = 0;
  for(ipart=2;ipart<=(natm_tot);ipart++){
    lower = 1;
    upper = 0;
    while(upper!=nter[ipart]){
      upper = nter[ipart];
      if(upper-lower+1+(*for_scr_intact)>(nlen)){
       upper = nlen - (*for_scr_intact) + lower-1;
      }
      jind_off = (*for_scr_intact)-lower+1;
      joff = jver_off[ipart];
      for(jpart=lower;jpart<=upper;jpart++){
       for_scr_j_index[(jpart+jind_off)]=jter[jpart+joff];
       for_scr_i_index[(jpart+jind_off)]=ipart;
      }
      (*for_scr_intact) += upper-lower+1;
      (*for_scr_num_brk)++;
      for_scr_num_brk_i[(*for_scr_num_brk)] = upper-lower+1;
      lower = upper+1;
      itemp = (((((nlen)-(*for_scr_intact)))<(1))?(((nlen)-(*for_scr_intact))):(1));
      if(!(itemp)){
       force_npol(clatoms_info,clatoms_pos,
                  for_scr,atommaps,
                  cell,ptens,interact,energy_ctrl,intra_scr,vreal,
                  vvdw,vcoul,num_call,lst_typ);
       num_call += 1;
       intact_tot += (*for_scr_intact);
       (*for_scr_intact) = 0;
       (*for_scr_num_brk) = 0;
     }
     if((*for_scr_num_brk)>=nlen){
       printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
       printf("Internal Error: If statement to dump force not performed\n ");
       printf("in routine for_verlst \n ");
       printf("Contact product support \n ");
       printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
       fflush(stdout);
       exit(1);
      }
    }
  }
  if((*for_scr_intact)!=0) {
     force_npol(clatoms_info,clatoms_pos,
                for_scr,atommaps,
                cell,ptens,interact,energy_ctrl,intra_scr,vreal,
                vvdw,vcoul,num_call,lst_typ);
      num_call += 1;
      intact_tot += (*for_scr_intact);
      (*for_scr_intact) = 0;
      (*for_scr_num_brk) = 0;
  }
  if(intact_tot!=intact_save){
    printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
    printf("Internal Error:\n ");
    printf("Incorrect number of interactions calculated\n ");
    printf("   in routine for_verlst \n ");
    printf("%d vs %d \n",intact_tot,intact_save);
    printf("Contact product support \n ");
    printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
    fflush(stdout);
    exit(1);
             }
   if(num_call!=num_call_save){
     printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
     printf("Internal Error:\n ");
     printf("Incorrect number of force calls\n ");
     printf("   in routine for_verlst \n ");
     printf("%d vs %d \n",num_call,num_call_save);
     printf("Contact product support \n ");
     fflush(stdout);
     printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
     exit(1);
              }
  ("force evaluation - Verlet list");
}

canonical_original_code:
void force_verlst(struct clatoms_info *clatoms_info, struct clatoms_pos *clatoms_pos, struct for_scr *for_scr, struct atommaps *atommaps, struct cell *cell, struct ptens *ptens, struct interact *interact, struct energy_ctrl *energy_ctrl, int nter[], int jter[], int jver_off[], struct intra_scr *intra_scr, double *vreal, double *vvdw, double *vcoul)
{
  int ipart; int jpart;
  int intact_tot;
  int intact_save;
  int num_call;
  int num_call_save;
  int lower; int upper;
  int ifor_call;
  int joff; int jind_off;
  int iii; int itemp;
  int natm_tot; int nlen;
  int lst_typ = 1;
  int *for_scr_intact = &(for_scr->intact);
  int *for_scr_num_brk = &(for_scr->num_brk);
  int *for_scr_num_brk_i = for_scr->num_brk_i;
  int *for_scr_i_index = for_scr->i_index;
  int *for_scr_j_index = for_scr->j_index;
  ("force evaluation - Verlet list");
  intact_save = 0;
  natm_tot = clatoms_info->natm_tot;
  nlen = (for_scr->nlen);
  for(ipart=1;ipart<=natm_tot;ipart++){
    intact_save += nter[ipart];
  }
  num_call_save = intact_save/(nlen);
  if( (intact_save % (nlen))!=0 ){num_call_save += 1;}
  (*for_scr_intact) = 0;
  (*for_scr_num_brk) = 0;
  num_call = 0;
  intact_tot = 0;
  for(ipart=2;ipart<=(natm_tot);ipart++){
    lower = 1;
    upper = 0;
    while(upper!=nter[ipart]){
      upper = nter[ipart];
      if(upper-lower+1+(*for_scr_intact)>(nlen)){
       upper = nlen - (*for_scr_intact) + lower-1;
      }
      jind_off = (*for_scr_intact)-lower+1;
      joff = jver_off[ipart];
      for(jpart=lower;jpart<=upper;jpart++){
       for_scr_j_index[(jpart+jind_off)]=jter[jpart+joff];
       for_scr_i_index[(jpart+jind_off)]=ipart;
      }
      (*for_scr_intact) += upper-lower+1;
      (*for_scr_num_brk)++;
      for_scr_num_brk_i[(*for_scr_num_brk)] = upper-lower+1;
      lower = upper+1;
      itemp = (((((nlen)-(*for_scr_intact)))<(1))?(((nlen)-(*for_scr_intact))):(1));
      if(!(itemp)){
       force_npol(clatoms_info,clatoms_pos,
                  for_scr,atommaps,
                  cell,ptens,interact,energy_ctrl,intra_scr,vreal,
                  vvdw,vcoul,num_call,lst_typ);
       num_call += 1;
       intact_tot += (*for_scr_intact);
       (*for_scr_intact) = 0;
       (*for_scr_num_brk) = 0;
     }
     if((*for_scr_num_brk)>=nlen){
       printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
       printf("Internal Error: If statement to dump force not performed\n ");
       printf("in routine for_verlst \n ");
       printf("Contact product support \n ");
       printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
       fflush(stdout);
       exit(1);
      }
    }
  }
  if((*for_scr_intact)!=0) {
     force_npol(clatoms_info,clatoms_pos,
                for_scr,atommaps,
                cell,ptens,interact,energy_ctrl,intra_scr,vreal,
                vvdw,vcoul,num_call,lst_typ);
      num_call += 1;
      intact_tot += (*for_scr_intact);
      (*for_scr_intact) = 0;
      (*for_scr_num_brk) = 0;
  }
  if(intact_tot!=intact_save){
    printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
    printf("Internal Error:\n ");
    printf("Incorrect number of interactions calculated\n ");
    printf("   in routine for_verlst \n ");
    printf("%d vs %d \n",intact_tot,intact_save);
    printf("Contact product support \n ");
    printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
    fflush(stdout);
    exit(1);
             }
   if(num_call!=num_call_save){
     printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
     printf("Internal Error:\n ");
     printf("Incorrect number of force calls\n ");
     printf("   in routine for_verlst \n ");
     printf("%d vs %d \n",num_call,num_call_save);
     printf("Contact product support \n ");
     fflush(stdout);
     printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
     exit(1);
              }
  ("force evaluation - Verlet list");
}

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 clatoms_pos { double *mass; double *x; double *vx; double *fx; double *fxt; double *fxm; double *hess_xx; } *

variable_types: 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; } *

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 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 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; } *

variable_types: 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; } *

variable_types: 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; } *

variable_types:
nter
int []

variable_types:
jter
int []

variable_types: 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; } *

variable_types:
vreal
double *

variable_types:
vvdw
double *

variable_types:
vcoul
double *

variable_types: ipart int

variable_types: jpart int

variable_types: lower int

variable_types: upper int

variable_types: joff int

variable_types: iii int

variable_types: itemp int

variable_types: nlen int