original_code:
void fetch_free_energy_index(BUILD_INTRA *build_intra,FREE_PARSE *free_parse,
                       BONDED *bonded,int jmol_typ,int iresidue,int natm_tot,
                       int natm_mol)
{
  int itemp,i,iii;
  int bond_free_num = bonded->bond_free.num;
  int bend_free_num = bonded->bend_free.num;
  int tors_free_num = bonded->tors_free.num;
  int rbar_sig_free_iopt = bonded->rbar_sig_free.iopt;
  int *imoltyp_bond_free = free_parse->imoltyp_bond_free;
  int *imol_bond_free = free_parse->imol_bond_free;
  int *ires_bond_free = free_parse->ires_bond_free;
  int *iatm_bond_free = free_parse->iatm_bond_free;
  int *bond_free_j1 = &(bonded->bond_free.j1);
  int *bond_free_j2 = &(bonded->bond_free.j2);
  int *imoltyp_bend_free = free_parse->imoltyp_bend_free;
  int *imol_bend_free = free_parse->imol_bend_free;
  int *ires_bend_free = free_parse->ires_bend_free;
  int *iatm_bend_free = free_parse->iatm_bend_free;
  int *bend_free_j1 = &(bonded->bend_free.j1);
  int *bend_free_j2 = &(bonded->bend_free.j2);
  int *bend_free_j3 = &(bonded->bend_free.j3);
  int *imoltyp_tors_free = free_parse->imoltyp_tors_free;
  int *imol_tors_free = free_parse->imol_tors_free;
  int *ires_tors_free = free_parse->ires_tors_free;
  int *iatm_tors_free = free_parse->iatm_tors_free;
  int *tors_free_j1 = bonded->tors_free.j1;
  int *tors_free_j2 = bonded->tors_free.j2;
  int *tors_free_j3 = bonded->tors_free.j3;
  int *tors_free_j4 = bonded->tors_free.j4;
  int *imoltyp_rbar1_free = free_parse->imoltyp_rbar1_free;
  int *imoltyp_rbar2_free = free_parse->imoltyp_rbar2_free;
  int *imol_rbar1_free = free_parse->imol_rbar1_free;
  int *imol_rbar2_free = free_parse->imol_rbar2_free;
  int *ires_rbar1_free = free_parse->ires_rbar1_free;
  int *ires_rbar2_free = free_parse->ires_rbar2_free;
  int *iatm_rbar1_free = free_parse->iatm_rbar1_free;
  int *iatm_rbar2_free = free_parse->iatm_rbar2_free;
  int nbar_bond = free_parse->nbar_bond;
  int *rbar_sig_free_j1 = bonded->rbar_sig_free.j1;
  int *rbar_sig_free_j2 = bonded->rbar_sig_free.j2;
  if(bond_free_num>0){
    if(imoltyp_bond_free[1]==jmol_typ){
      if(ires_bond_free[1]==iresidue){
        free_chk_fix(&itemp,iatm_bond_free[1],build_intra,jmol_typ,iresidue);
        (*bond_free_j1) = (imol_bond_free[1]-1)*natm_mol + itemp + natm_tot;
      }
    }
    if(imoltyp_bond_free[2]==jmol_typ){
      if(ires_bond_free[2]==iresidue){
        free_chk_fix(&itemp,iatm_bond_free[2],build_intra,jmol_typ,iresidue);
        (*bond_free_j2) = (imol_bond_free[2]-1)*natm_mol + itemp + natm_tot;
      }
   }
  }
  if(bend_free_num>0){
    if(imoltyp_bend_free[1]==jmol_typ){
      if(ires_bend_free[1]==iresidue){
        free_chk_fix(&itemp,iatm_bend_free[1],build_intra,jmol_typ,iresidue);
        (*bend_free_j1) = (imol_bend_free[1]-1)*natm_mol + itemp + natm_tot;
      }
    }
    if(imoltyp_bend_free[2]==jmol_typ){
      if(ires_bend_free[2]==iresidue){
        free_chk_fix(&itemp,iatm_bend_free[2],build_intra,jmol_typ,iresidue);
        (*bend_free_j2) = (imol_bend_free[2]-1)*natm_mol + itemp + natm_tot;
      }
    }
    if(imoltyp_bend_free[3]==jmol_typ){
      if(ires_bend_free[3]==iresidue){
        free_chk_fix(&itemp,iatm_bend_free[3],build_intra,jmol_typ,iresidue);
        (*bend_free_j3) = (imol_bend_free[3]-1)*natm_mol + itemp + natm_tot;
      }
    }
   }
  if(tors_free_num>0){
    if(imoltyp_tors_free[1]==jmol_typ){
       if(ires_tors_free[1]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[1],build_intra,jmol_typ,iresidue);
         tors_free_j1[1] = (imol_tors_free[1]-1)*natm_mol + itemp + natm_tot;
       }
    }
    if(imoltyp_tors_free[2]==jmol_typ){
       if(ires_tors_free[2]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[2],build_intra,jmol_typ,iresidue);
         tors_free_j2[1] = (imol_tors_free[2]-1)*natm_mol + itemp + natm_tot;
       }
    }
    if(imoltyp_tors_free[3]==jmol_typ){
       if(ires_tors_free[3]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[3],build_intra,jmol_typ,iresidue);
         tors_free_j3[1] = (imol_tors_free[3]-1)*natm_mol + itemp + natm_tot;
       }
    }
    if(imoltyp_tors_free[4]==jmol_typ){
       if(ires_tors_free[4]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[4],build_intra,jmol_typ,iresidue);
         tors_free_j4[1] = (imol_tors_free[4]-1)*natm_mol + itemp + natm_tot;
       }
    }
    if(tors_free_num==2){
      if(imoltyp_tors_free[5]==jmol_typ){
       if(ires_tors_free[5]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[5],build_intra,jmol_typ,iresidue);
         tors_free_j1[2] = (imol_tors_free[5]-1)*natm_mol + itemp + natm_tot;
       }
      }
      if(imoltyp_tors_free[6]==jmol_typ){
       if(ires_tors_free[6]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[6],build_intra,jmol_typ,iresidue);
         tors_free_j2[2] = (imol_tors_free[6]-1)*natm_mol + itemp + natm_tot;
       }
      }
      if(imoltyp_tors_free[7]==jmol_typ){
       if(ires_tors_free[7]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[7],build_intra,jmol_typ,iresidue);
         tors_free_j3[2] = (imol_tors_free[7]-1)*natm_mol + itemp + natm_tot;
       }
      }
      if(imoltyp_tors_free[8]==jmol_typ){
       if(ires_tors_free[8]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[8],build_intra,jmol_typ,iresidue);
         tors_free_j4[2] = (imol_tors_free[8]-1)*natm_mol + itemp + natm_tot;
       }
      }
    }
  }
  if(rbar_sig_free_iopt>0){
   for(i=1;i<=nbar_bond;i++){
     if(imoltyp_rbar1_free[i]==jmol_typ){
       if(ires_rbar1_free[i]==iresidue){
         free_chk_fix(&itemp,iatm_rbar1_free[i],build_intra,jmol_typ,iresidue);
         rbar_sig_free_j1[i] = (imol_rbar1_free[i]-1)*natm_mol+itemp+natm_tot;
       }
     }
     if(imoltyp_rbar2_free[i]==jmol_typ){
       if(ires_rbar2_free[i]==iresidue){
         free_chk_fix(&itemp,iatm_rbar2_free[i],build_intra,jmol_typ,iresidue);
         rbar_sig_free_j2[i] = (imol_rbar2_free[i]-1)*natm_mol+itemp+natm_tot;
       }
     }
   }
  }
    }

canonical_original_code:
void fetch_free_energy_index(struct build_intra *build_intra, struct free_parse *free_parse, struct bonded *bonded, int jmol_typ, int iresidue, int natm_tot, int natm_mol)
{
  int itemp; int i; int iii;
  int bond_free_num = bonded->bond_free.num;
  int bend_free_num = bonded->bend_free.num;
  int tors_free_num = bonded->tors_free.num;
  int rbar_sig_free_iopt = bonded->rbar_sig_free.iopt;
  int *imoltyp_bond_free = free_parse->imoltyp_bond_free;
  int *imol_bond_free = free_parse->imol_bond_free;
  int *ires_bond_free = free_parse->ires_bond_free;
  int *iatm_bond_free = free_parse->iatm_bond_free;
  int *bond_free_j1 = &(bonded->bond_free.j1);
  int *bond_free_j2 = &(bonded->bond_free.j2);
  int *imoltyp_bend_free = free_parse->imoltyp_bend_free;
  int *imol_bend_free = free_parse->imol_bend_free;
  int *ires_bend_free = free_parse->ires_bend_free;
  int *iatm_bend_free = free_parse->iatm_bend_free;
  int *bend_free_j1 = &(bonded->bend_free.j1);
  int *bend_free_j2 = &(bonded->bend_free.j2);
  int *bend_free_j3 = &(bonded->bend_free.j3);
  int *imoltyp_tors_free = free_parse->imoltyp_tors_free;
  int *imol_tors_free = free_parse->imol_tors_free;
  int *ires_tors_free = free_parse->ires_tors_free;
  int *iatm_tors_free = free_parse->iatm_tors_free;
  int *tors_free_j1 = bonded->tors_free.j1;
  int *tors_free_j2 = bonded->tors_free.j2;
  int *tors_free_j3 = bonded->tors_free.j3;
  int *tors_free_j4 = bonded->tors_free.j4;
  int *imoltyp_rbar1_free = free_parse->imoltyp_rbar1_free;
  int *imoltyp_rbar2_free = free_parse->imoltyp_rbar2_free;
  int *imol_rbar1_free = free_parse->imol_rbar1_free;
  int *imol_rbar2_free = free_parse->imol_rbar2_free;
  int *ires_rbar1_free = free_parse->ires_rbar1_free;
  int *ires_rbar2_free = free_parse->ires_rbar2_free;
  int *iatm_rbar1_free = free_parse->iatm_rbar1_free;
  int *iatm_rbar2_free = free_parse->iatm_rbar2_free;
  int nbar_bond = free_parse->nbar_bond;
  int *rbar_sig_free_j1 = bonded->rbar_sig_free.j1;
  int *rbar_sig_free_j2 = bonded->rbar_sig_free.j2;
  if(bond_free_num>0){
    if(imoltyp_bond_free[1]==jmol_typ){
      if(ires_bond_free[1]==iresidue){
        free_chk_fix(&itemp,iatm_bond_free[1],build_intra,jmol_typ,iresidue);
        (*bond_free_j1) = (imol_bond_free[1]-1)*natm_mol + itemp + natm_tot;
      }
    }
    if(imoltyp_bond_free[2]==jmol_typ){
      if(ires_bond_free[2]==iresidue){
        free_chk_fix(&itemp,iatm_bond_free[2],build_intra,jmol_typ,iresidue);
        (*bond_free_j2) = (imol_bond_free[2]-1)*natm_mol + itemp + natm_tot;
      }
   }
  }
  if(bend_free_num>0){
    if(imoltyp_bend_free[1]==jmol_typ){
      if(ires_bend_free[1]==iresidue){
        free_chk_fix(&itemp,iatm_bend_free[1],build_intra,jmol_typ,iresidue);
        (*bend_free_j1) = (imol_bend_free[1]-1)*natm_mol + itemp + natm_tot;
      }
    }
    if(imoltyp_bend_free[2]==jmol_typ){
      if(ires_bend_free[2]==iresidue){
        free_chk_fix(&itemp,iatm_bend_free[2],build_intra,jmol_typ,iresidue);
        (*bend_free_j2) = (imol_bend_free[2]-1)*natm_mol + itemp + natm_tot;
      }
    }
    if(imoltyp_bend_free[3]==jmol_typ){
      if(ires_bend_free[3]==iresidue){
        free_chk_fix(&itemp,iatm_bend_free[3],build_intra,jmol_typ,iresidue);
        (*bend_free_j3) = (imol_bend_free[3]-1)*natm_mol + itemp + natm_tot;
      }
    }
   }
  if(tors_free_num>0){
    if(imoltyp_tors_free[1]==jmol_typ){
       if(ires_tors_free[1]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[1],build_intra,jmol_typ,iresidue);
         tors_free_j1[1] = (imol_tors_free[1]-1)*natm_mol + itemp + natm_tot;
       }
    }
    if(imoltyp_tors_free[2]==jmol_typ){
       if(ires_tors_free[2]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[2],build_intra,jmol_typ,iresidue);
         tors_free_j2[1] = (imol_tors_free[2]-1)*natm_mol + itemp + natm_tot;
       }
    }
    if(imoltyp_tors_free[3]==jmol_typ){
       if(ires_tors_free[3]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[3],build_intra,jmol_typ,iresidue);
         tors_free_j3[1] = (imol_tors_free[3]-1)*natm_mol + itemp + natm_tot;
       }
    }
    if(imoltyp_tors_free[4]==jmol_typ){
       if(ires_tors_free[4]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[4],build_intra,jmol_typ,iresidue);
         tors_free_j4[1] = (imol_tors_free[4]-1)*natm_mol + itemp + natm_tot;
       }
    }
    if(tors_free_num==2){
      if(imoltyp_tors_free[5]==jmol_typ){
       if(ires_tors_free[5]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[5],build_intra,jmol_typ,iresidue);
         tors_free_j1[2] = (imol_tors_free[5]-1)*natm_mol + itemp + natm_tot;
       }
      }
      if(imoltyp_tors_free[6]==jmol_typ){
       if(ires_tors_free[6]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[6],build_intra,jmol_typ,iresidue);
         tors_free_j2[2] = (imol_tors_free[6]-1)*natm_mol + itemp + natm_tot;
       }
      }
      if(imoltyp_tors_free[7]==jmol_typ){
       if(ires_tors_free[7]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[7],build_intra,jmol_typ,iresidue);
         tors_free_j3[2] = (imol_tors_free[7]-1)*natm_mol + itemp + natm_tot;
       }
      }
      if(imoltyp_tors_free[8]==jmol_typ){
       if(ires_tors_free[8]==iresidue){
         free_chk_fix(&itemp,iatm_tors_free[8],build_intra,jmol_typ,iresidue);
         tors_free_j4[2] = (imol_tors_free[8]-1)*natm_mol + itemp + natm_tot;
       }
      }
    }
  }
  if(rbar_sig_free_iopt>0){
   for(i=1;i<=nbar_bond;i++){
     if(imoltyp_rbar1_free[i]==jmol_typ){
       if(ires_rbar1_free[i]==iresidue){
         free_chk_fix(&itemp,iatm_rbar1_free[i],build_intra,jmol_typ,iresidue);
         rbar_sig_free_j1[i] = (imol_rbar1_free[i]-1)*natm_mol+itemp+natm_tot;
       }
     }
     if(imoltyp_rbar2_free[i]==jmol_typ){
       if(ires_rbar2_free[i]==iresidue){
         free_chk_fix(&itemp,iatm_rbar2_free[i],build_intra,jmol_typ,iresidue);
         rbar_sig_free_j2[i] = (imol_rbar2_free[i]-1)*natm_mol+itemp+natm_tot;
       }
     }
   }
  }
    }

variable_types: struct free_parse { int *imoltyp_bond_free; int *imol_bond_free; int *ires_bond_free; int *iatm_bond_free; int *imoltyp_bend_free; int *imol_bend_free; int *ires_bend_free; int *iatm_bend_free; int *imoltyp_tors_free; int *imol_tors_free; int *ires_tors_free; int *iatm_tors_free; int nbar_bond; int *imoltyp_rbar1_free; int *imoltyp_rbar2_free; int *imol_rbar1_free; int *imol_rbar2_free; int *ires_rbar1_free; int *ires_rbar2_free; int *iatm_rbar1_free; int *iatm_rbar2_free; } *

variable_types: iresidue int

variable_types: itemp int

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

user_defined_types: struct bond_site { char bond_site_name[5][50]; int branch_1[5]; int branch_2[5]; int valence; int improper_ind[5]; }


repo: TuckermanGroup/PINY

original_code:
void prelim_analysis(CLASS *class, GENERAL_DATA *general_data,
       ANALYSIS *analysis)
{
  int find,na,nat,natr,natm_tot,nga,natm_real,iii;
  int natm_typ,natm_typ_real,natm_typ_ghost;
  int natm_typ_ghost_now;
  int nm,nmr,nmol_tot,nmol_typ_real;
  int count_real_atoms_this_molecule;
  int mol_typ_now;
  int nmol_typ_tot;
  int count_real_mol_typ;
  int *iatm_atm_typ;
  int *natm_1mol_jmol_typ_real;
  int *natm_typ_real_or_ghost;
  int *natm_real_this_kind;
  int *map_atm_nb_to_atm_real_kind_nb;
  int *map_atm_nb_to_real_mol_or_atm;
  int *map_atm_nb_to_nmol_real_typ;
  int *natm_this_kind;
  double *mass_mol_real;
   natm_typ = class->atommaps.natm_typ;
   iatm_atm_typ = class->atommaps.iatm_atm_typ;
   natm_tot = class->clatoms_info.natm_tot;
   nga = class->ghost_atoms.nghost_tot;
   natm_real = natm_tot-nga;
   analysis->info.natm_typ_real_or_ghost =
       (int *) malloc((natm_typ+1)*sizeof(int));
   if (analysis->info.natm_typ_real_or_ghost==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   natm_typ_real_or_ghost = analysis->info.natm_typ_real_or_ghost;
   for(nat=1;nat<=natm_typ;nat++)
   {
    find=0; na=1;
    while ((find != 1)&&(na<=natm_tot))
    {
     if (iatm_atm_typ[na]==nat)
     {
      if (class->atommaps.ighost_flag[na]==0)
      {
       natm_typ_real_or_ghost[nat]=0; find++;
      }
      else
      {
       natm_typ_real_or_ghost[nat]=1; find++;
      };
     };
     na++;
    };
   };
   natm_typ_ghost = 0;
   for(nat=1;nat<=natm_typ;nat++)
   {
    if (natm_typ_real_or_ghost[nat]==1) {natm_typ_ghost++;};
   };
   natm_typ_real = natm_typ-natm_typ_ghost;
   analysis->info.nb_atm_typ_tot = natm_typ;
   analysis->info.nb_atm_typ_real = natm_typ_real;
   analysis->info.nb_atm_typ_ghost = natm_typ_ghost;
   analysis->info.natm_real_this_kind =
                            (int *) malloc((natm_typ_real+1)*sizeof(int));
   if (analysis->info.natm_real_this_kind==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   natm_real_this_kind = analysis->info.natm_real_this_kind;
     natr=1;
     for(nat=1;nat<=natm_typ;nat++)
     {
      if (natm_typ_real_or_ghost[nat]==0)
      {
       natm_real_this_kind[natr]=0;
       for(na=1;na<=natm_tot;na++)
       {
 if (iatm_atm_typ[na]==nat) { natm_real_this_kind[natr]++; };
       };
       natr++;
      };
     };
   analysis->info.natm_this_kind =
                            (int *) malloc((natm_typ+1)*sizeof(int));
   if (analysis->info.natm_this_kind==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   natm_this_kind = analysis->info.natm_this_kind;
   for(nat=1;nat<=natm_typ;nat++)
   {
    natm_this_kind[nat] = 0;
    for(na=1;na<=natm_tot;na++)
    {
     if (iatm_atm_typ[na]==nat) { natm_this_kind[nat]++; };
    };
   };
   analysis->info.natm_real = natm_real;
   analysis->info.natm_ghost = nga;
   analysis->info.map_atm_nb_to_atm_real_kind_nb =
                                   (int *) malloc((natm_tot+1)*sizeof(int));
   if (analysis->info.map_atm_nb_to_atm_real_kind_nb==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   map_atm_nb_to_atm_real_kind_nb =
                            analysis->info.map_atm_nb_to_atm_real_kind_nb;
   for (na=1;na<=natm_tot;na++)
   {
    if (class->atommaps.ighost_flag[na]==0)
    {
    natm_typ_ghost_now = 0;
    for (nat=1;nat<=iatm_atm_typ[na];nat++)
    {
    natm_typ_ghost_now += natm_typ_real_or_ghost[nat];
    };
     map_atm_nb_to_atm_real_kind_nb[na] = iatm_atm_typ[na]
                                        - natm_typ_ghost_now;
    }
    else
    {
     map_atm_nb_to_atm_real_kind_nb[na] = 0;
    };
   };
    nmol_typ_tot = class->atommaps.nmol_typ;
   analysis->info.nmol_typ_atm_or_mol =
                             (int *) malloc((nmol_typ_tot+1)*sizeof(int));
   if (analysis->info.nmol_typ_atm_or_mol==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   for(nm=1;nm<=nmol_typ_tot;nm++)
   {
    count_real_atoms_this_molecule = 0;
    for (na=1;na<=natm_tot;na++)
    {
     if ((class->atommaps.natm_1mol_jmol_typ[nm]>1)
       &&(class->atommaps.ighost_flag[na]==0))
     {
      count_real_atoms_this_molecule++;
     };
    };
    if (count_real_atoms_this_molecule>=2)
    {
     analysis->info.nmol_typ_atm_or_mol[nm] = 1;
    }
    else
    {
     analysis->info.nmol_typ_atm_or_mol[nm] = 0;
    };
   };
   nmol_typ_real = 0;
   for(nm=1;nm<=nmol_typ_tot;nm++)
   {
    if (analysis->info.nmol_typ_atm_or_mol[nm]==1)
    {
      nmol_typ_real++;
    };
   };
   analysis->info.nmol_typ_real = nmol_typ_real;
   analysis->info.map_atm_nb_to_real_mol_or_atm =
                               (int *) malloc((natm_tot+1)*sizeof(int));
   if (analysis->info.map_atm_nb_to_real_mol_or_atm==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   map_atm_nb_to_real_mol_or_atm =
                          analysis->info.map_atm_nb_to_real_mol_or_atm;
   for (na=1;na<=natm_tot;na++)
   {
    mol_typ_now = class->atommaps.iatm_mol_typ[na];
    map_atm_nb_to_real_mol_or_atm[na] =
                       analysis->info.nmol_typ_atm_or_mol[mol_typ_now];
   };
   analysis->info.map_atm_nb_to_nmol_real_typ =
                               (int *) malloc((natm_tot+1)*sizeof(int));
   if (analysis->info.map_atm_nb_to_nmol_real_typ==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   map_atm_nb_to_nmol_real_typ =
                            analysis->info.map_atm_nb_to_nmol_real_typ;
   for (na=1;na<=natm_tot;na++)
   {
    if (map_atm_nb_to_real_mol_or_atm[na]==0)
    {
     map_atm_nb_to_nmol_real_typ[na] = 0;
    };
    if (map_atm_nb_to_real_mol_or_atm[na]==1)
    {
     count_real_mol_typ = 0;
     mol_typ_now = class->atommaps.iatm_mol_typ[na];
     for (nm=1;nm<=mol_typ_now;nm++)
     {
      if (analysis->info.nmol_typ_atm_or_mol[nm]==1)
      {
       count_real_mol_typ++;
      };
     };
     map_atm_nb_to_nmol_real_typ[na] = count_real_mol_typ;
    };
   };
    analysis->info.name_real_mol =
                    (NAME *) cmalloc(nmol_typ_real*sizeof(NAME))-1;
    nmr = 1;
    for (nm=1;nm<=nmol_typ_tot;nm++)
    {
     if (analysis->info.nmol_typ_atm_or_mol[nm]==1)
     {
      strcpy(analysis->info.name_real_mol[nmr],class->atommaps.mol_typ[nm]);
      nmr++;
     };
    };
}

canonical_original_code:
void prelim_analysis(struct class *class, struct general_data *general_data, struct analysis *analysis)
{
  int find; int na; int nat; int natr; int natm_tot; int nga; int natm_real; int iii;
  int natm_typ; int natm_typ_real; int natm_typ_ghost;
  int natm_typ_ghost_now;
  int nm; int nmr; int nmol_tot; int nmol_typ_real;
  int count_real_atoms_this_molecule;
  int mol_typ_now;
  int nmol_typ_tot;
  int count_real_mol_typ;
  int *iatm_atm_typ;
  int *natm_1mol_jmol_typ_real;
  int *natm_typ_real_or_ghost;
  int *natm_real_this_kind;
  int *map_atm_nb_to_atm_real_kind_nb;
  int *map_atm_nb_to_real_mol_or_atm;
  int *map_atm_nb_to_nmol_real_typ;
  int *natm_this_kind;
  double *mass_mol_real;
   natm_typ = class->atommaps.natm_typ;
   iatm_atm_typ = class->atommaps.iatm_atm_typ;
   natm_tot = class->clatoms_info.natm_tot;
   nga = class->ghost_atoms.nghost_tot;
   natm_real = natm_tot-nga;
   analysis->info.natm_typ_real_or_ghost =
       (int *) malloc((natm_typ+1)*sizeof(int));
   if (analysis->info.natm_typ_real_or_ghost==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   natm_typ_real_or_ghost = analysis->info.natm_typ_real_or_ghost;
   for(nat=1;nat<=natm_typ;nat++)
   {
    find=0; na=1;
    while ((find != 1)&&(na<=natm_tot))
    {
     if (iatm_atm_typ[na]==nat)
     {
      if (class->atommaps.ighost_flag[na]==0)
      {
       natm_typ_real_or_ghost[nat]=0; find++;
      }
      else
      {
       natm_typ_real_or_ghost[nat]=1; find++;
      };
     };
     na++;
    };
   };
   natm_typ_ghost = 0;
   for(nat=1;nat<=natm_typ;nat++)
   {
    if (natm_typ_real_or_ghost[nat]==1) {natm_typ_ghost++;};
   };
   natm_typ_real = natm_typ-natm_typ_ghost;
   analysis->info.nb_atm_typ_tot = natm_typ;
   analysis->info.nb_atm_typ_real = natm_typ_real;
   analysis->info.nb_atm_typ_ghost = natm_typ_ghost;
   analysis->info.natm_real_this_kind =
                            (int *) malloc((natm_typ_real+1)*sizeof(int));
   if (analysis->info.natm_real_this_kind==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   natm_real_this_kind = analysis->info.natm_real_this_kind;
     natr=1;
     for(nat=1;nat<=natm_typ;nat++)
     {
      if (natm_typ_real_or_ghost[nat]==0)
      {
       natm_real_this_kind[natr]=0;
       for(na=1;na<=natm_tot;na++)
       {
 if (iatm_atm_typ[na]==nat) { natm_real_this_kind[natr]++; };
       };
       natr++;
      };
     };
   analysis->info.natm_this_kind =
                            (int *) malloc((natm_typ+1)*sizeof(int));
   if (analysis->info.natm_this_kind==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   natm_this_kind = analysis->info.natm_this_kind;
   for(nat=1;nat<=natm_typ;nat++)
   {
    natm_this_kind[nat] = 0;
    for(na=1;na<=natm_tot;na++)
    {
     if (iatm_atm_typ[na]==nat) { natm_this_kind[nat]++; };
    };
   };
   analysis->info.natm_real = natm_real;
   analysis->info.natm_ghost = nga;
   analysis->info.map_atm_nb_to_atm_real_kind_nb =
                                   (int *) malloc((natm_tot+1)*sizeof(int));
   if (analysis->info.map_atm_nb_to_atm_real_kind_nb==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   map_atm_nb_to_atm_real_kind_nb =
                            analysis->info.map_atm_nb_to_atm_real_kind_nb;
   for (na=1;na<=natm_tot;na++)
   {
    if (class->atommaps.ighost_flag[na]==0)
    {
    natm_typ_ghost_now = 0;
    for (nat=1;nat<=iatm_atm_typ[na];nat++)
    {
    natm_typ_ghost_now += natm_typ_real_or_ghost[nat];
    };
     map_atm_nb_to_atm_real_kind_nb[na] = iatm_atm_typ[na]
                                        - natm_typ_ghost_now;
    }
    else
    {
     map_atm_nb_to_atm_real_kind_nb[na] = 0;
    };
   };
    nmol_typ_tot = class->atommaps.nmol_typ;
   analysis->info.nmol_typ_atm_or_mol =
                             (int *) malloc((nmol_typ_tot+1)*sizeof(int));
   if (analysis->info.nmol_typ_atm_or_mol==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   for(nm=1;nm<=nmol_typ_tot;nm++)
   {
    count_real_atoms_this_molecule = 0;
    for (na=1;na<=natm_tot;na++)
    {
     if ((class->atommaps.natm_1mol_jmol_typ[nm]>1)
       &&(class->atommaps.ighost_flag[na]==0))
     {
      count_real_atoms_this_molecule++;
     };
    };
    if (count_real_atoms_this_molecule>=2)
    {
     analysis->info.nmol_typ_atm_or_mol[nm] = 1;
    }
    else
    {
     analysis->info.nmol_typ_atm_or_mol[nm] = 0;
    };
   };
   nmol_typ_real = 0;
   for(nm=1;nm<=nmol_typ_tot;nm++)
   {
    if (analysis->info.nmol_typ_atm_or_mol[nm]==1)
    {
      nmol_typ_real++;
    };
   };
   analysis->info.nmol_typ_real = nmol_typ_real;
   analysis->info.map_atm_nb_to_real_mol_or_atm =
                               (int *) malloc((natm_tot+1)*sizeof(int));
   if (analysis->info.map_atm_nb_to_real_mol_or_atm==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   map_atm_nb_to_real_mol_or_atm =
                          analysis->info.map_atm_nb_to_real_mol_or_atm;
   for (na=1;na<=natm_tot;na++)
   {
    mol_typ_now = class->atommaps.iatm_mol_typ[na];
    map_atm_nb_to_real_mol_or_atm[na] =
                       analysis->info.nmol_typ_atm_or_mol[mol_typ_now];
   };
   analysis->info.map_atm_nb_to_nmol_real_typ =
                               (int *) malloc((natm_tot+1)*sizeof(int));
   if (analysis->info.map_atm_nb_to_nmol_real_typ==((void *)0))
   {
    printf("Not enough memory for dynamical allocation");
    exit(1);
   };
   map_atm_nb_to_nmol_real_typ =
                            analysis->info.map_atm_nb_to_nmol_real_typ;
   for (na=1;na<=natm_tot;na++)
   {
    if (map_atm_nb_to_real_mol_or_atm[na]==0)
    {
     map_atm_nb_to_nmol_real_typ[na] = 0;
    };
    if (map_atm_nb_to_real_mol_or_atm[na]==1)
    {
     count_real_mol_typ = 0;
     mol_typ_now = class->atommaps.iatm_mol_typ[na];
     for (nm=1;nm<=mol_typ_now;nm++)
     {
      if (analysis->info.nmol_typ_atm_or_mol[nm]==1)
      {
       count_real_mol_typ++;
      };
     };
     map_atm_nb_to_nmol_real_typ[na] = count_real_mol_typ;
    };
   };
    analysis->info.name_real_mol =
                    (char (*)[50]) cmalloc(nmol_typ_real*sizeof(NAME))-1;
    nmr = 1;
    for (nm=1;nm<=nmol_typ_tot;nm++)
    {
     if (analysis->info.nmol_typ_atm_or_mol[nm]==1)
     {
      strcpy(analysis->info.name_real_mol[nmr],class->atommaps.mol_typ[nm]);
      nmr++;
     };
    };
}

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: struct analysis { struct info { int natm_real; int natm_ghost; int nmol_tot; int nmol_typ_real; int *nmol_jmol_typ_real; int *iatm_mol_typ_real; int *nmol_typ_atm_or_mol; double *masse_nmol_real; int nb_atm_typ_tot; int nb_atm_typ_ghost; int nb_atm_typ_real; int nb_atm_in_real_mol; int nb_mol_real_mol; int *natm_real_this_kind; int *natm_this_kind; int *natm_typ_real_or_ghost; int *map_atm_nb_to_atm_real_kind_nb; int *map_atm_nb_to_real_mol_or_atm; int *map_atm_nb_to_nmol_real_typ; int *nb_mol_real_jmol_typ; double *mass_real_mol; char (*name_real_mol)[50]; } info; struct pimd_bead { double **sc_op_x; double **sc_op_y; double **sc_op_z; double **sc_op_x2; double **sc_op_y2; double **sc_op_z2; double **sc_op_vx; double **sc_op_vy; double **sc_op_vz; double **sc_op_vx2; double **sc_op_vy2; double **sc_op_vz2; double ***bead_x; double ***bead_y; double ***bead_z; double ***bead_vx; double ***bead_vy; double ***bead_vz; } pimd_bead; struct rdf { int calcul_gr_on; int calcul_intra_on; int calcul_sq_from_gr_on; int njump; int periodic_write; int number_of_points; int nbk; double dr; double rmax; double dk; char *rdfname; int **iatm_pos; double *rbin; double *vol_diff; double ***rhist; double ***rhist_out; double ***gr; double ***sq; } rdf; struct velocorel { int calcul_atm_on; int ncor; int njump; int nwrite; int normalize; char *vovtname; char *output_kind; double **tmp_vtx; double **tmp_vty; double **tmp_vtz; double **vovtx; double **vovty; double **vovtz; int calcul_com_on; int ncor_com; int njump_com; int nwrite_com; int normalize_com; char *vovtname_com; char *output_kind_com; double **tmp_com_vtx; double **tmp_com_vty; double **tmp_com_vtz; double **com_vovtx; double **com_vovty; double **com_vovtz; } velocorel; struct msqdcorel { int calcul_atm_on; int ncor; int njump; char *msqdname; char *output_kind; double **tmp_msqdx; double **tmp_msqdy; double **tmp_msqdz; double **msqdx; double **msqdy; double **msqdz; } msqdcorel; struct eisf { int calcul_on; int eisf_on; } eisf; struct iikt_iso_corel { int calcul_on; int eisf_on; int ncor; int njump; int nbk_ask; int nb_kvecx; int nb_kvecy; int nb_kvecz; int full_iso; int calc_all_atm_typ; int natm_typ_calc; int natm_tot_calc; double kmin_ask; double kmax_ask; double kmin_calc_x; double kmin_calc_y; double kmin_calc_z; double dk_calc_x; double dk_calc_y; double dk_calc_z; int *natm_jmol_typ; int *map_calc_atm_on; int *map_calc_atm_typ; char *iikt_iso_name; char *output_kind; char (*list_atm_typ)[50]; double *kvec_x; double *kvec_y; double *kvec_z; double **tmp_0_tcosx; double **tmp_0_tcosy; double **tmp_0_tcosz; double **tmp_1_tcosx; double **tmp_1_tcosy; double **tmp_1_tcosz; double **tmp_0_tsinx; double **tmp_0_tsiny; double **tmp_0_tsinz; double **tmp_1_tsinx; double **tmp_1_tsiny; double **tmp_1_tsinz; double **ceisf_x; double **seisf_x; double **ceisf_y; double **seisf_y; double **ceisf_z; double **seisf_z; double **eisf_x; double **eisf_y; double **eisf_z; double ***ciikt_real_x; double ***ciikt_real_y; double ***ciikt_real_z; double ***ciikt_imag_x; double ***ciikt_imag_y; double ***ciikt_imag_z; } iikt_iso_corel; struct ickt_iso_corel { int calcul_on; int ncor; int njump; int nbk_ask; int nb_kvecx; int nb_kvecy; int nb_kvecz; int full_iso; double kmin_ask; double kmax_ask; double kmin_calc_x; double kmin_calc_y; double kmin_calc_z; double dk_calc_x; double dk_calc_y; double dk_calc_z; char *ickt_iso_name; double *kvec_x; double *kvec_y; double *kvec_z; double ***tmp_rho_real_x; double ***tmp_rho_real_y; double ***tmp_rho_real_z; double ***tmp_rho_imag_x; double ***tmp_rho_imag_y; double ***tmp_rho_imag_z; double ****cickt_real_x; double ****cickt_real_y; double ****cickt_real_z; double ****cickt_imag_x; double ****cickt_imag_y; double ****cickt_imag_z; } ickt_iso_corel; struct dip_self_corel { int calcul_on; int ncor; int njump; int normalize; char *momtname; char *output_kind; double **tmp_mx; double **tmp_my; double **tmp_mz; double **momtx; double **momty; double **momtz; } dip_self_corel; struct harmonic_analysis { int calcul_freq_on; int calcul_thermo_on; int calcul_spectra_on; int nfreqs; double delta; double *harm_freqs; } harmonic_analysis; } *

variable_types: find int

variable_types: nat int

variable_types: natr int

variable_types: nga int

variable_types: iii int

variable_types: nm int

variable_types: nmr 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 analysis { struct info info; struct pimd_bead pimd_bead; struct rdf rdf; struct velocorel velocorel; struct msqdcorel msqdcorel; struct eisf eisf; struct iikt_iso_corel iikt_iso_corel; struct ickt_iso_corel ickt_iso_corel; struct dip_self_corel dip_self_corel; struct harmonic_analysis harmonic_analysis; }

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 surf_vspl_fetch(int n,double del[], double spl_out[],
                     int i_index[],double c0_data[])
    {
  int i,ktemp0,ktemp1,ktemp2,ktemp3,iii;
  double del_tmp,c0,c1,c2,c3;
  double f0,fp1,fm1,fm2;
  static double oneth = (1.0/3.0);
  static double onesi = (1.0/6.0);
  for(i=1;i<=n;i++){
    ktemp0 = i_index[i];
    ktemp1 = ktemp0 + 1;
    ktemp2 = ktemp0 - 1;
    ktemp3 = ktemp0 - 2;
    c0 = c0_data[ktemp0];
    fp1 = c0_data[ktemp1];
    fm1 = c0_data[ktemp2];
    fm2 = c0_data[ktemp3];
    c1 = oneth*fp1+0.5*c0-fm1+onesi*fm2;
    c2 = 0.5*fp1-c0+0.5*fm1;
    c3 = onesi*fp1-0.5*c0+0.5*fm1-onesi*fm2;
    del_tmp = del[i];
    spl_out[i] = (c0 + del_tmp*(c1 + del_tmp* (c2 + del_tmp*c3)));
  }
  }

canonical_original_code:
void surf_vspl_fetch(int n, double del[], double spl_out[], int i_index[], double c0_data[])
    {
  int i; int ktemp0; int ktemp1; int ktemp2; int ktemp3; int iii;
  double del_tmp; double c0; double c1; double c2; double c3;
  double f0; double fp1; double fm1; double fm2;
  static double oneth = (1.0/3.0);
  static double onesi = (1.0/6.0);
  for(i=1;i<=n;i++){
    ktemp0 = i_index[i];
    ktemp1 = ktemp0 + 1;
    ktemp2 = ktemp0 - 1;
    ktemp3 = ktemp0 - 2;
    c0 = c0_data[ktemp0];
    fp1 = c0_data[ktemp1];
    fm1 = c0_data[ktemp2];
    fm2 = c0_data[ktemp3];
    c1 = oneth*fp1+0.5*c0-fm1+onesi*fm2;
    c2 = 0.5*fp1-c0+0.5*fm1;
    c3 = onesi*fp1-0.5*c0+0.5*fm1-onesi*fm2;
    del_tmp = del[i];
    spl_out[i] = (c0 + del_tmp*(c1 + del_tmp* (c2 + del_tmp*c3)));
  }
  }

variable_types: n int

variable_types:
del
double []

variable_types: i int

variable_types: oneth double

variable_types: onesi double


original_code:
void surf_pot(CLATOMS_INFO *clatoms_info, CLATOMS_POS *clatoms_pos,
              ATOMMAPS *atommaps,SURFACE *surface, CELL *cell,
              INTRA_SCR *intra_scr, PTENS *ptens, double *vsurf_ret,
              int iver_get, CLASS_COMM_FORC_PKG *class_comm_forc_pkg,
              int iget_pv_real_inter,int iget_pe_real_inter)
  {
  int isurf,ibig,ibig1,ioff,iend,nnow;
  int isoff;
  int nlen_now;
  int ktemp,kktemp;
  double dz,zsp,pvten_tmp,vsurf;
  double zmin_spl_now;
  double dz_spl_now;
  double dzi_spl_now;
  double *scr_dz1 = intra_scr->dz12;
  double *scr_fz1 = intra_scr->fz1;
  double *scr_vpot = intra_scr->vpot;
  double *scr_p33 = intra_scr->p33;
  double wfor = intra_scr->wght_tra;
  int nlen_use = intra_scr->nlen;
  double *del_z = intra_scr->del_r;
  int *index = intra_scr->iatm_typ;
  double *spl_tmp = intra_scr->spl_tmp;
  double *pvten = ptens->pvten;
  double *pvten_tot = ptens->pvten_tot;
  double *clatoms_z = clatoms_pos->z;
  double *clatoms_fz = clatoms_pos->fz;
  double *clatoms_fzt = clatoms_pos->fzt;
  int *iatm_atm_typ = atommaps->iatm_atm_typ;
  int iperd = cell->iperd;
  int np_forc = class_comm_forc_pkg->num_proc;
  int myid_forc = class_comm_forc_pkg->myid;
  int myatm_start = class_comm_forc_pkg->myatm_start;
  int myatm_end = class_comm_forc_pkg->myatm_end;
  int ntot = class_comm_forc_pkg->myatm_end;
  int nsplin = surface->nsplin_surf;
  double z_surf = surface->surface_height;
  double *surface_pot = surface->surface_pot;
  double *surface_forc = surface->surface_forc;
  double *zmin_spl = surface->zmin_spl;
  double *dz_spl = surface->dz_spl;
  double *dzi_spl = surface->dzi_spl;
  int nsplin_m2;
      nsplin_m2 = nsplin-2;
  pvten_tmp = 0.0;
  vsurf = 0.0;
  for(ibig=myatm_start;ibig <= myatm_end;ibig += nlen_use) {
    ibig1 = ibig-1;
    ioff = -ibig1;
    iend = (((ntot)<(ibig1+nlen_use))?(ntot):(ibig1+nlen_use));
    nnow = iend-ibig1;
    for(isoff=1,isurf=ibig;isurf <= iend; ++isurf,++isoff) {
      dz = clatoms_z[isurf]-z_surf;
      ktemp = iatm_atm_typ[isurf];
      zmin_spl_now = zmin_spl[ktemp];
      dz_spl_now = dz_spl[ktemp];
      dzi_spl_now = dzi_spl[ktemp];
      kktemp = (int) (((dz - zmin_spl_now)*dzi_spl_now)+0.5) + 3;
      kktemp = (((kktemp)<(nsplin_m2))?(kktemp):(nsplin_m2));
      kktemp = (((kktemp)>(3))?(kktemp):(3));
      zsp = ((double)(kktemp-3))*dz_spl_now+zmin_spl_now;
      del_z[isoff] = (dz - zsp)*dzi_spl_now;
      index[isoff] = kktemp;
      scr_dz1[isoff] = dz;
    }
    if(iget_pe_real_inter==1){
      surf_vspl_fetch(nnow,del_z,spl_tmp,index,surface_pot);
      for(isoff=1;isoff<=nnow;++isoff){ vsurf += spl_tmp[isoff]; }
    }
    surf_vspl_fetch(nnow,del_z,scr_fz1,index,surface_forc);
    if(iver_get==1){
      for(isoff=1,isurf=ibig;isurf <= iend; ++isurf,++isoff) {
        clatoms_fzt[isurf] += scr_fz1[isoff];
      }
    }
    for(isoff=1;isoff <= nnow; ++isoff) {
      pvten_tmp += scr_fz1[isoff]*scr_dz1[isoff];
    }
    for(isoff=1;isoff <= nnow; ++isoff) {
      scr_fz1[isoff] *= wfor;
    }
    for(isoff=1,isurf=ibig;isurf <= iend; ++isurf,++isoff) {
      clatoms_fz[isurf] += scr_fz1[isoff];
    }
 }
  (*vsurf_ret) += vsurf;
  pvten[9] += pvten_tmp*wfor;
  if(iget_pv_real_inter==1){
    pvten_tot[9] += pvten_tmp;
  }
   }

canonical_original_code:
void surf_pot(struct clatoms_info *clatoms_info, struct clatoms_pos *clatoms_pos, struct atommaps *atommaps, struct surface *surface, struct cell *cell, struct intra_scr *intra_scr, struct ptens *ptens, double *vsurf_ret, int iver_get, struct class_comm_forc_pkg *class_comm_forc_pkg, int iget_pv_real_inter, int iget_pe_real_inter)
  {
  int isurf; int ibig; int ibig1; int ioff; int iend; int nnow;
  int isoff;
  int nlen_now;
  int ktemp; int kktemp;
  double dz; double zsp; double pvten_tmp; double vsurf;
  double zmin_spl_now;
  double dz_spl_now;
  double dzi_spl_now;
  double *scr_dz1 = intra_scr->dz12;
  double *scr_fz1 = intra_scr->fz1;
  double *scr_vpot = intra_scr->vpot;
  double *scr_p33 = intra_scr->p33;
  double wfor = intra_scr->wght_tra;
  int nlen_use = intra_scr->nlen;
  double *del_z = intra_scr->del_r;
  int *index = intra_scr->iatm_typ;
  double *spl_tmp = intra_scr->spl_tmp;
  double *pvten = ptens->pvten;
  double *pvten_tot = ptens->pvten_tot;
  double *clatoms_z = clatoms_pos->z;
  double *clatoms_fz = clatoms_pos->fz;
  double *clatoms_fzt = clatoms_pos->fzt;
  int *iatm_atm_typ = atommaps->iatm_atm_typ;
  int iperd = cell->iperd;
  int np_forc = class_comm_forc_pkg->num_proc;
  int myid_forc = class_comm_forc_pkg->myid;
  int myatm_start = class_comm_forc_pkg->myatm_start;
  int myatm_end = class_comm_forc_pkg->myatm_end;
  int ntot = class_comm_forc_pkg->myatm_end;
  int nsplin = surface->nsplin_surf;
  double z_surf = surface->surface_height;
  double *surface_pot = surface->surface_pot;
  double *surface_forc = surface->surface_forc;
  double *zmin_spl = surface->zmin_spl;
  double *dz_spl = surface->dz_spl;
  double *dzi_spl = surface->dzi_spl;
  int nsplin_m2;
      nsplin_m2 = nsplin-2;
  pvten_tmp = 0.0;
  vsurf = 0.0;
  for(ibig=myatm_start;ibig <= myatm_end;ibig += nlen_use) {
    ibig1 = ibig-1;
    ioff = -ibig1;
    iend = (((ntot)<(ibig1+nlen_use))?(ntot):(ibig1+nlen_use));
    nnow = iend-ibig1;
    for(isoff=1,isurf=ibig;isurf <= iend; ++isurf,++isoff) {
      dz = clatoms_z[isurf]-z_surf;
      ktemp = iatm_atm_typ[isurf];
      zmin_spl_now = zmin_spl[ktemp];
      dz_spl_now = dz_spl[ktemp];
      dzi_spl_now = dzi_spl[ktemp];
      kktemp = (int) (((dz - zmin_spl_now)*dzi_spl_now)+0.5) + 3;
      kktemp = (((kktemp)<(nsplin_m2))?(kktemp):(nsplin_m2));
      kktemp = (((kktemp)>(3))?(kktemp):(3));
      zsp = ((double)(kktemp-3))*dz_spl_now+zmin_spl_now;
      del_z[isoff] = (dz - zsp)*dzi_spl_now;
      index[isoff] = kktemp;
      scr_dz1[isoff] = dz;
    }
    if(iget_pe_real_inter==1){
      surf_vspl_fetch(nnow,del_z,spl_tmp,index,surface_pot);
      for(isoff=1;isoff<=nnow;++isoff){ vsurf += spl_tmp[isoff]; }
    }
    surf_vspl_fetch(nnow,del_z,scr_fz1,index,surface_forc);
    if(iver_get==1){
      for(isoff=1,isurf=ibig;isurf <= iend; ++isurf,++isoff) {
        clatoms_fzt[isurf] += scr_fz1[isoff];
      }
    }
    for(isoff=1;isoff <= nnow; ++isoff) {
      pvten_tmp += scr_fz1[isoff]*scr_dz1[isoff];
    }
    for(isoff=1;isoff <= nnow; ++isoff) {
      scr_fz1[isoff] *= wfor;
    }
    for(isoff=1,isurf=ibig;isurf <= iend; ++isurf,++isoff) {
      clatoms_fz[isurf] += scr_fz1[isoff];
    }
 }
  (*vsurf_ret) += vsurf;
  pvten[9] += pvten_tmp*wfor;
  if(iget_pv_real_inter==1){
    pvten_tot[9] += pvten_tmp;
  }
   }

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

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

variable_types: isurf int

variable_types: ibig int

variable_types: ioff int

variable_types: iend int

variable_types: nnow int

variable_types: isoff int

variable_types: ktemp int

variable_types: kktemp int

variable_types: dz double

variable_types: zsp double

variable_types: vsurf double

variable_types: wfor double

variable_types:
index
int *

variable_types:
pvten
double *

variable_types: iperd int

variable_types: ntot int

variable_types: nsplin int


original_code:
void mall_properties(CP *cp)
{
  int nfft2_up,nfft2_dn;
  int nfft2_mall_up,nfft2_mall_dn;
  int nfft2_mall_up_proc,nfft2_mall_dn_proc;
  int nfft_dn,nfft2_dn_proc;
  int nfft2_up_proc;
  int nfft_up_proc_dens_cp_box,nfft_up_dens_cp_box;
  int nfft2_up_proc_dens_cp_box,nfft2_up_dens_cp_box;
  int nfft_dn_proc_dens_cp_box,nfft_dn_dens_cp_box;
  int nfft2_dn_proc_dens_cp_box,nfft2_dn_dens_cp_box;
  int cp_lsda = cp->cpopts.cp_lsda;
  int nfft_up_proc = cp->cp_para_fft_pkg3d_lg.nfft_proc;
  int nfft_up = cp->cp_para_fft_pkg3d_lg.nfft;
  int cp_dual_grid_opt_on = cp->cpopts.cp_dual_grid_opt;
  if(cp_dual_grid_opt_on >= 1){
    nfft_up_proc_dens_cp_box = cp->cp_para_fft_pkg3d_dens_cp_box.nfft_proc;
    nfft_up_dens_cp_box = cp->cp_para_fft_pkg3d_dens_cp_box.nfft;
    nfft2_up_dens_cp_box = nfft_up_dens_cp_box/2;
    nfft_dn_proc_dens_cp_box = (cp_lsda == 1 ? nfft_up_proc_dens_cp_box : 0);
    nfft_dn_dens_cp_box = (cp_lsda == 1 ? nfft_up_dens_cp_box : 0);
    nfft2_dn_dens_cp_box = nfft_dn_dens_cp_box/2;
  }
 nfft2_up = nfft_up/2;
 nfft2_up_proc = nfft_up_proc/2;
 nfft_dn = (cp_lsda == 1 ? nfft_up : 0);
 nfft2_dn = (cp_lsda == 1 ? nfft2_up : 0);
 nfft2_dn_proc = (cp_lsda == 1 ? nfft2_up_proc : 0);
  nfft2_mall_up = (cp_dual_grid_opt_on >= 1 ?
                        nfft_up_dens_cp_box/2 : nfft2_up);
  nfft2_mall_up_proc = (cp_dual_grid_opt_on >= 1 ?
                        nfft_up_proc_dens_cp_box/2 : nfft2_up_proc);
  nfft2_mall_dn = (cp_dual_grid_opt_on >= 1 ?
                        nfft_dn_dens_cp_box/2 : nfft2_dn);
  nfft2_mall_dn_proc = (cp_dual_grid_opt_on >= 1 ?
                        nfft_dn_proc_dens_cp_box/2 : nfft2_dn_proc);
  cp->electronic_properties.cp_elf_up =
               (double *) cmalloc(nfft2_mall_up_proc*sizeof(double))-1;
  cp->electronic_properties.cp_elf_dn =
               (double *) cmalloc(nfft2_mall_dn_proc*sizeof(double))-1;
}

canonical_original_code:
void mall_properties(struct cp *cp)
{
  int nfft2_up; int nfft2_dn;
  int nfft2_mall_up; int nfft2_mall_dn;
  int nfft2_mall_up_proc; int nfft2_mall_dn_proc;
  int nfft_dn; int nfft2_dn_proc;
  int nfft2_up_proc;
  int nfft_up_proc_dens_cp_box; int nfft_up_dens_cp_box;
  int nfft2_up_proc_dens_cp_box; int nfft2_up_dens_cp_box;
  int nfft_dn_proc_dens_cp_box; int nfft_dn_dens_cp_box;
  int nfft2_dn_proc_dens_cp_box; int nfft2_dn_dens_cp_box;
  int cp_lsda = cp->cpopts.cp_lsda;
  int nfft_up_proc = cp->cp_para_fft_pkg3d_lg.nfft_proc;
  int nfft_up = cp->cp_para_fft_pkg3d_lg.nfft;
  int cp_dual_grid_opt_on = cp->cpopts.cp_dual_grid_opt;
  if(cp_dual_grid_opt_on >= 1){
    nfft_up_proc_dens_cp_box = cp->cp_para_fft_pkg3d_dens_cp_box.nfft_proc;
    nfft_up_dens_cp_box = cp->cp_para_fft_pkg3d_dens_cp_box.nfft;
    nfft2_up_dens_cp_box = nfft_up_dens_cp_box/2;
    nfft_dn_proc_dens_cp_box = (cp_lsda == 1 ? nfft_up_proc_dens_cp_box : 0);
    nfft_dn_dens_cp_box = (cp_lsda == 1 ? nfft_up_dens_cp_box : 0);
    nfft2_dn_dens_cp_box = nfft_dn_dens_cp_box/2;
  }
 nfft2_up = nfft_up/2;
 nfft2_up_proc = nfft_up_proc/2;
 nfft_dn = (cp_lsda == 1 ? nfft_up : 0);
 nfft2_dn = (cp_lsda == 1 ? nfft2_up : 0);
 nfft2_dn_proc = (cp_lsda == 1 ? nfft2_up_proc : 0);
  nfft2_mall_up = (cp_dual_grid_opt_on >= 1 ?
                        nfft_up_dens_cp_box/2 : nfft2_up);
  nfft2_mall_up_proc = (cp_dual_grid_opt_on >= 1 ?
                        nfft_up_proc_dens_cp_box/2 : nfft2_up_proc);
  nfft2_mall_dn = (cp_dual_grid_opt_on >= 1 ?
                        nfft_dn_dens_cp_box/2 : nfft2_dn);
  nfft2_mall_dn_proc = (cp_dual_grid_opt_on >= 1 ?
                        nfft_dn_proc_dens_cp_box/2 : nfft2_dn_proc);
  cp->electronic_properties.cp_elf_up =
               (double *) cmalloc(nfft2_mall_up_proc*sizeof(double))-1;
  cp->electronic_properties.cp_elf_dn =
               (double *) cmalloc(nfft2_mall_dn_proc*sizeof(double))-1;
}

variable_types: struct cp { struct cpopts { int cp_lda; int cp_sic; int cp_gga; int cp_nonint; int cp_norb; int cp_gauss; int cp_ptens_calc; int cp_init_orthog; int cp_gs; int cp_ngrid_skip; int cp_hess_calc; int zero_cp_vel; int iwrite_coef_binary; int iread_coef_binary; int icheck_perd_size; int icheck_dual_size; int cp_para_opt; int cp_becke; int cp_pw91x; int cp_fila_1x; int cp_fila_2x; int cp_pbe_x; int cp_revpbe_x; int cp_rpbe_x; int cp_xpbe_x; int cp_brx89; int cp_brx2k; int cp_lyp; int cp_lypm1; int cp_pw91c; int cp_pbe_c; int cp_xpbe_c; int cp_tau1_c; int cp_debug_xc; int cp_dual_grid_opt; int cp_isok_opt; double te_ext; double tol_edge_dist; double tol_coef; double *occ_up; double *rocc_sum_up; double *rocc_sum_dn; } cpopts; struct cpcoeffs_info { int pi_beads; int nstate_up; int icmass_unif; int ks_rot_on; int n_ks_rot; int cp_ke_dens_on; int cp_tau_functional; int cp_elf_calc_frq; int cp_laplacian_on; int cp_nfree; int cp_nfree_up; int cp_nfree_dn; int pi_beads_proc; int pi_beads_proc_st; int pi_beads_proc_end; int nstate_up_proc; int istate_up_st; int istate_up_end; int cg_reset_flag; int diis_reset_flag; int ncoef; int ncoef_l; int ncoef_l_dens_cp_box; int icoef_start_up; int nstate_ncoef_proc_up; int nstate_ncoef_proc_max_up; int icoef_start_dn; int nstate_ncoef_proc_dn; int nstate_ncoef_proc_max_dn; int *ioff_up; int *ioff_upt; double ecut; double ecut_dens_cp_box; double cp_hess_cut; double pseud_hess_loc; double max_off_diag; double max_diag; double *cmass; double k0_up; } cpcoeffs_info; struct cpcoeffs_pos { double *cre_up; double *cre_dn; double *vcre_up; double *vcre_dn; double *fcre_up; double *fcre_dn; double *cp_hess_re_up; double *cp_hess_im_up; double *cp_hess_re_dn; double *cp_hess_im_dn; double *ksmat_up; double *ksmat_eig_up; double *ksmat_eig_dn; double ks_offset; double *norbmat_up; double *norbmati_up; double *ovmat_eigv_up; double *ovmat_eigv_dn; int icoef_form_up; int ivcoef_form_up; int ifcoef_form_up; int icoef_orth_up; int ivcoef_orth_up; int ifcoef_orth_up; double max_diag; } *cpcoeffs_pos; struct cptherm_info { int num_c_nhc; int num_c_nhc_proc; int num_c_nhc_norm; int len_c_nhc; int nres_c_nhc; int nyosh_c_nhc; int massiv_flag; int istate_nhc_opt; double cp_therm_heat_fact; double dt_nhc; double c_gkt_massiv; double cmass_nhc_massiv; int *icmapup_nhc; int *icmapdn_nhc; double *wdti; double **c_gkt; double **cmass_nhc; } cptherm_info; struct cptherm_pos { double c_nhc_massiv; double **c_nhc; double **vc_nhc; double **fc_nhc; int itherm_form_up; int itherm_form_dn; } *cptherm_pos; struct electronic_properties { double *cp_elf_up; } electronic_properties; struct cpewald { int nktot_sm; int nktot_dens_cp_box; int nktot_cp_mall; int nktot_cp_sm_mall; int nktot_dens_cp_box_mall; int box_rat; double dbox_rat; double gw_gmin; double gw_gmin_dens_cp_box; int *kmax_cp; int *kmax_cp_dens_cp_box; int *kastr_sm; int *kastr_dens_cp_box; int *ibrk1_sm; int *ibrk1_dens_cp_box; double *ak2; double *ak2_dens_cp_box; } cpewald; struct cpconstrnt { double c_tolshake; double c_tolratl; double c_tolnorb; } cpconstrnt; struct pseudo { int n_ang_max; int n_ang_max_gh; int n_ang_max_kb; int n_rad_max; int nsplin_g; int nsplin_g_tot; int num_nl_lst; int nl_cut_on; int n_ang_mall; int nsplin_g_mall; int nvpsnorm_mall; int nlist_mall; int n_interp_pme_dual; int natm_typ_nl; int natm_typ_gh; int ngh; double gmin_true; double gmin_spl; double gmax_spl; double dg_spl; double gga_cut; double nlvps_skin; double alpha_conv_dual; int *n_ang; int *nrad_0; int *nrad_max_l; int *loc_opt; int *ivps_label; int *np_nl; int *np_nl_gh; int **np_nl_rad_str; int **np_nl_rad_end; int *ip_nl; int *ip_nl_rev; int *ip_nl_gh; int *ip_nl_rev_gh; int *map_nl; int np_loc_cp_box; int np_nonloc_cp_box; int np_nonloc_cp_box_kb; int np_nonloc_cp_box_gh; int *ip_loc_cp_box; int *ip_nonloc_cp_box; double *vps0; double *dvps0; double *gzvps; double *gzvps0; double *vpsnorm; double *rcut_nl; double *rgh; double *x0w; double *q_pseud; char *vxc_typ; char *ggax_typ; char *ggac_typ; } pseudo; struct cpscr { struct cpscr_loc { double *vextr; double *vextr_dens_cp_box; double *dvextr; } cpscr_loc; struct cpscr_nonloc { int natm_nls_max; int nlscr_up; int nlscr_dn; double *vnlre_up; double *vnlre_dn; double *dvnlre_x_up; double *dvnlim_x_up; double *dvnlre_x_dn; double *dvnlim_x_dn; double *dvnlre_gxgx_up; double *dvnlre_gygy_up; double *dvnlre_gzgz_up; double *dvnlre_gxgy_up; double *dvnlre_gygz_up; double *dvnlre_gxgz_up; double *dvnlre_gxgx_dn; double *dvnlre_gygy_dn; double *dvnlre_gzgz_dn; double *dvnlre_gxgy_dn; double *dvnlre_gygz_dn; double *dvnlre_gxgz_dn; } cpscr_nonloc; struct cpscr_rho { int iset_map_flag; int iset_map_upack_flag; int iset_map_flag_pme; int iset_map_upack_flag_pme; int *map_dual; int *map_dual_upack; double *v_ks_up; double *v_ks_dn; double *v_ks_tau_up; double *v_ks_tau_dn; double *rho_up; double *rho_dn; double *rhocr_up; double *rhocr_scr; double *rhocr_up_dens_cp_box; double *rhocr_dn; double *rhocr_dn_dens_cp_box; } cpscr_rho; struct cpscr_grho { double *d2_rho_up; double *d2_rho_dn; double *d2_rho_up_store; double *d2_rho_dn_store; double *d_rhox_up; double *d_rhox_dn; double *dm_rhox_up; double *dm_rhox_dn; double *elec_ke_dens_up; double *g_rhor_x; double *g_rhoi_x; double *g2_rhor; double *rhocr_up_st; double *rhocr_dn_st; } cpscr_grho; struct cpscr_ovmat { double *ovlap1; double *ovlap3; double *ovlap5; double *ovlap7; double *state_vec1; double *state_vec2; double *state_vec3; double *state_vec4; double *state_vec5; double *state_vec6; double *state_vec7; } cpscr_ovmat; struct cpscr_wave { double *zfft; int zfft_mall_size; double *cre_up; double *cre_dn; } cpscr_wave; struct cpscr_therm { double *coef_kin; double *sc_cp; } cpscr_therm; struct cpscr_dual_pme { int *iatemp; int **igrid_a; int **igrid_now; double *a_pme; double *frac_a; double *aj; double **mn_a; double **ua; double *bw_r; int nfft_send_big_small; int nfft_recv_big_small; int num_rows_tot; int *ioff_lg_sm; int **joff_sm_lg; } cpscr_dual_pme; struct cpscr_atom_pme { int pme_on; int n_interp; int pme_para_opt; int nlen_pme; int nktot_pme; int nkf1; int ngrid_a; int *iatemp; int *nc; int **igrid_a; int **igrid_now; double *frac_a; double *aj; double **ua; double **mn_a; double **dmn_a; double **qgrid_now; double *qgrid; double *qgrid_scr; double *qgrid_tmp_real; double *qgrid_tmp_imag; double *bweight_tot; double *bw_r; } cpscr_atom_pme; } cpscr; 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 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; } cp_sclr_fft_pkg3d_sm; struct para_fft_pkg3d cp_para_fft_pkg3d_sm; struct para_fft_pkg3d cp_sclr_fft_pkg3d_dens_cp_box; struct para_fft_pkg3d cp_para_fft_pkg3d_dens_cp_box; struct para_fft_pkg3d cp_sclr_fft_pkg3d_lg; struct para_fft_pkg3d cp_para_fft_pkg3d_lg; struct cp_comm_state_pkg { int num_proc; int myid; int nstate; int nstate_max; int ncoef; int nstate_proc; int nstate_proc_max; int nstate_ncoef_proc_max; int nstate_ncoef_proc; int icoef_start; int comm; int world; int ioff_therm_norm[3]; } cp_comm_state_pkg_up; struct cp_comm_state_pkg cp_comm_state_pkg_dn; struct vel_samp_cp { int ivelc_smpl_on; int ivelc_scal_on; int nvc_smpl; int nvcnhc_smpl; int nvc_scal; int iseed; int iauto_vc_scal_opt; double qseed; double vc_scal_tol; double div_scal; } vel_samp_cp; } *

user_defined_types: struct cp { struct cpopts cpopts; struct cpcoeffs_info cpcoeffs_info; struct cpcoeffs_pos *cpcoeffs_pos; struct cptherm_info cptherm_info; struct cptherm_pos *cptherm_pos; struct electronic_properties electronic_properties; struct cpewald cpewald; struct cpconstrnt cpconstrnt; struct pseudo pseudo; struct cpscr cpscr; struct communicate communicate; struct para_fft_pkg3d cp_sclr_fft_pkg3d_sm; struct para_fft_pkg3d cp_para_fft_pkg3d_sm; struct para_fft_pkg3d cp_sclr_fft_pkg3d_dens_cp_box; struct para_fft_pkg3d cp_para_fft_pkg3d_dens_cp_box; struct para_fft_pkg3d cp_sclr_fft_pkg3d_lg; struct para_fft_pkg3d cp_para_fft_pkg3d_lg; struct cp_comm_state_pkg cp_comm_state_pkg_up; struct cp_comm_state_pkg cp_comm_state_pkg_dn; struct vel_samp_cp vel_samp_cp; }

user_defined_types: struct cpscr { struct cpscr_loc cpscr_loc; struct cpscr_nonloc cpscr_nonloc; struct cpscr_rho cpscr_rho; struct cpscr_grho cpscr_grho; struct cpscr_ovmat cpscr_ovmat; struct cpscr_wave cpscr_wave; struct cpscr_therm cpscr_therm; struct cpscr_dual_pme cpscr_dual_pme; struct cpscr_atom_pme cpscr_atom_pme; }