original_code:
void set_mol_params(FILENAME_PARSE*filename_parse,char fun_key[],
      DICT_WORD mol_dict[], int num_mol_dict,
      CLASS_PARSE *class_parse,ATOMMAPS *atommaps,int mol_ind_chk[],
                    int pi_beads)
{
  int i,num,index,mol_ind,ifound,inum;
  char *strip,*strip2;
  double dnum;
  for(i=1;i<num_mol_dict;i++){
    if(mol_dict[i].iuset==0 && mol_dict[i].key_type==1){
      keyword_miss(mol_dict,filename_parse->molsetname,fun_key,i);}
  }
  sscanf(mol_dict[1].keyarg,"%d",&mol_ind);
  index = 1;
  if((mol_ind <=0)|| (mol_ind> atommaps->nmol_typ)){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  mol_ind_chk[mol_ind] = mol_ind_chk[mol_ind] + 1;
  sscanf(mol_dict[2].keyarg,"%d",&num);
  atommaps->nmol_jmol_typ[mol_ind] = num;
  index = 2;
  if((num<=0)){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  strcpy(filename_parse->mol_param_name[mol_ind],mol_dict[3].keyarg);
  ifound = 0;
  if(strcasecmp(mol_dict[4].keyarg,"none")==0){
    ifound=1; class_parse->imol_nhc_opt[mol_ind]=0;
  }
  if(strcasecmp(mol_dict[4].keyarg,"global")==0){
    ifound=1; class_parse->imol_nhc_opt[mol_ind]=1;
  }
  if(strcasecmp(mol_dict[4].keyarg,"glob_mol")==0){
    ifound=1; class_parse->imol_nhc_opt[mol_ind]=2;
  }
  if(strcasecmp(mol_dict[4].keyarg,"ind_mol")==0){
    ifound=1;class_parse->imol_nhc_opt[mol_ind]=3;
  }
  if(strcasecmp(mol_dict[4].keyarg,"res_mol")==0){
    ifound=1;class_parse->imol_nhc_opt[mol_ind]=4;
  }
  if(strcasecmp(mol_dict[4].keyarg,"atm_mol")==0){
    ifound=1;class_parse->imol_nhc_opt[mol_ind]=5;
  }
  if(strcasecmp(mol_dict[4].keyarg,"mass_mol")==0){
    ifound=1;class_parse->imol_nhc_opt[mol_ind]=6;
  }
  index = 4;
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  sscanf(mol_dict[5].keyarg,"%lg",&dnum);
  class_parse->tau_nhc_mol[mol_ind]=dnum;
  index = 5;
  if((dnum <=0)){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  sscanf(mol_dict[6].keyarg,"%lg",&dnum);
  class_parse->text_nhc_mol[mol_ind]=dnum;
  index = 6;
  if((dnum <=0)){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);}
  strcpy(atommaps->mol_typ[mol_ind],mol_dict[7].keyarg);
  sscanf(mol_dict[8].keyarg,"%d",&inum);
  index = 8;
  if(inum <0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  atommaps->nres_1mol_jmol_typ[mol_ind] = inum;
  index = 9;
  ifound = 0;
  if(strcasecmp(mol_dict[9].keyarg,"on")==0){
    ifound=1;class_parse->ionfo_opt[mol_ind] = 1;
  }
  if(strcasecmp(mol_dict[9].keyarg,"off")==0){
    ifound=1;class_parse->ionfo_opt[mol_ind] = 0;
  }
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  index = 10;
  ifound = 0;
  if(strcasecmp(mol_dict[10].keyarg,"pi_md")==0){
    ifound=1;class_parse->ires_bond_conv[mol_ind] = 1;
  }
  if(strcasecmp(mol_dict[10].keyarg,"charmm")==0){
    ifound=1;class_parse->ires_bond_conv[mol_ind] = 2;
  }
  if(strcasecmp(mol_dict[10].keyarg,"sybyl")==0){
    ifound=1;class_parse->ires_bond_conv[mol_ind] = 3;
  }
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  index = 11;
  ifound = 0;
  if(strcasecmp(mol_dict[11].keyarg,"none")==0){
    ifound=1;class_parse->mol_freeze_opt[mol_ind] = 0;
  }
  if(strcasecmp(mol_dict[11].keyarg,"all")==0){
    ifound=1;class_parse->mol_freeze_opt[mol_ind] = 1;
  }
  if(strcasecmp(mol_dict[11].keyarg,"backbone")==0){
    ifound=1;class_parse->mol_freeze_opt[mol_ind] = 2;
  }
  if(strcasecmp(mol_dict[11].keyarg,"heavy_atoms")==0){
    ifound=1;class_parse->mol_freeze_opt[mol_ind] = 3;
  }
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  index = 12;
  strip = (char *)cmalloc(50*sizeof(char));
  strip2 = (char *)cmalloc(50*sizeof(char));
  strcpy(strip,mol_dict[12].keyarg);
  parse_hydrog_mass(strip,strip2,&(class_parse->mol_hydrog_mass_opt[mol_ind]),
                 &(class_parse->mol_hydrog_mass_val[mol_ind]),&ifound);
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  cfree(strip);
  cfree(strip2);
  index = 13;
  ifound = 0;
  if(strcasecmp(mol_dict[13].keyarg,"off")==0){
    ifound=1;class_parse->mol_hydrog_con_opt[mol_ind] = 0;
  }
  if(strcasecmp(mol_dict[13].keyarg,"all")==0){
    ifound=1;class_parse->mol_hydrog_con_opt[mol_ind] = 1;
  }
  if(strcasecmp(mol_dict[13].keyarg,"polar")==0){
    ifound=1;class_parse->mol_hydrog_con_opt[mol_ind] = 2;
  }
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  if(class_parse->mol_hydrog_con_opt[mol_ind] != 0 && pi_beads>1){
      printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
      printf("The code, while most excellent, cannot as yet perform  \n");
      printf("path integral simulations with constrained bonds, which\n");
      printf("are somewhat nasty.  Contact sales rep.       \n");
      printf("Turn off the \\hydrog_con option \n");
      printf("in file %s molecule %s\n",
              filename_parse->molsetname,atommaps->mol_typ[mol_ind]);
      printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
      fflush(stdout);
      exit(1);
  }
   if((atommaps->nres_1mol_jmol_typ[mol_ind]==0)&&
      (class_parse->imol_nhc_opt[mol_ind]==4)){
     printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
     printf("The molecule type specified %s in file %s      \n",
             atommaps->mol_typ[mol_ind],filename_parse->molsetname);
     printf("does not contain residues. Therefore, the res_mol \n");
     printf("thermostat option is not an appropriate choice    \n");
     printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
     fflush(stdout);
     exit(1);
   }
}

canonical_original_code:
void set_mol_params(struct filename_parse *filename_parse, char fun_key[], struct dict_word mol_dict[], int num_mol_dict, struct class_parse *class_parse, struct atommaps *atommaps, int mol_ind_chk[], int pi_beads)
{
  int i; int num; int index; int mol_ind; int ifound; int inum;
  char *strip; char *strip2;
  double dnum;
  for(i=1;i<num_mol_dict;i++){
    if(mol_dict[i].iuset==0 && mol_dict[i].key_type==1){
      keyword_miss(mol_dict,filename_parse->molsetname,fun_key,i);}
  }
  sscanf(mol_dict[1].keyarg,"%d",&mol_ind);
  index = 1;
  if((mol_ind <=0)|| (mol_ind> atommaps->nmol_typ)){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  mol_ind_chk[mol_ind] = mol_ind_chk[mol_ind] + 1;
  sscanf(mol_dict[2].keyarg,"%d",&num);
  atommaps->nmol_jmol_typ[mol_ind] = num;
  index = 2;
  if((num<=0)){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  strcpy(filename_parse->mol_param_name[mol_ind],mol_dict[3].keyarg);
  ifound = 0;
  if(strcasecmp(mol_dict[4].keyarg,"none")==0){
    ifound=1; class_parse->imol_nhc_opt[mol_ind]=0;
  }
  if(strcasecmp(mol_dict[4].keyarg,"global")==0){
    ifound=1; class_parse->imol_nhc_opt[mol_ind]=1;
  }
  if(strcasecmp(mol_dict[4].keyarg,"glob_mol")==0){
    ifound=1; class_parse->imol_nhc_opt[mol_ind]=2;
  }
  if(strcasecmp(mol_dict[4].keyarg,"ind_mol")==0){
    ifound=1;class_parse->imol_nhc_opt[mol_ind]=3;
  }
  if(strcasecmp(mol_dict[4].keyarg,"res_mol")==0){
    ifound=1;class_parse->imol_nhc_opt[mol_ind]=4;
  }
  if(strcasecmp(mol_dict[4].keyarg,"atm_mol")==0){
    ifound=1;class_parse->imol_nhc_opt[mol_ind]=5;
  }
  if(strcasecmp(mol_dict[4].keyarg,"mass_mol")==0){
    ifound=1;class_parse->imol_nhc_opt[mol_ind]=6;
  }
  index = 4;
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  sscanf(mol_dict[5].keyarg,"%lg",&dnum);
  class_parse->tau_nhc_mol[mol_ind]=dnum;
  index = 5;
  if((dnum <=0)){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  sscanf(mol_dict[6].keyarg,"%lg",&dnum);
  class_parse->text_nhc_mol[mol_ind]=dnum;
  index = 6;
  if((dnum <=0)){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);}
  strcpy(atommaps->mol_typ[mol_ind],mol_dict[7].keyarg);
  sscanf(mol_dict[8].keyarg,"%d",&inum);
  index = 8;
  if(inum <0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  atommaps->nres_1mol_jmol_typ[mol_ind] = inum;
  index = 9;
  ifound = 0;
  if(strcasecmp(mol_dict[9].keyarg,"on")==0){
    ifound=1;class_parse->ionfo_opt[mol_ind] = 1;
  }
  if(strcasecmp(mol_dict[9].keyarg,"off")==0){
    ifound=1;class_parse->ionfo_opt[mol_ind] = 0;
  }
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  index = 10;
  ifound = 0;
  if(strcasecmp(mol_dict[10].keyarg,"pi_md")==0){
    ifound=1;class_parse->ires_bond_conv[mol_ind] = 1;
  }
  if(strcasecmp(mol_dict[10].keyarg,"charmm")==0){
    ifound=1;class_parse->ires_bond_conv[mol_ind] = 2;
  }
  if(strcasecmp(mol_dict[10].keyarg,"sybyl")==0){
    ifound=1;class_parse->ires_bond_conv[mol_ind] = 3;
  }
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  index = 11;
  ifound = 0;
  if(strcasecmp(mol_dict[11].keyarg,"none")==0){
    ifound=1;class_parse->mol_freeze_opt[mol_ind] = 0;
  }
  if(strcasecmp(mol_dict[11].keyarg,"all")==0){
    ifound=1;class_parse->mol_freeze_opt[mol_ind] = 1;
  }
  if(strcasecmp(mol_dict[11].keyarg,"backbone")==0){
    ifound=1;class_parse->mol_freeze_opt[mol_ind] = 2;
  }
  if(strcasecmp(mol_dict[11].keyarg,"heavy_atoms")==0){
    ifound=1;class_parse->mol_freeze_opt[mol_ind] = 3;
  }
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  index = 12;
  strip = (char *)cmalloc(50*sizeof(char));
  strip2 = (char *)cmalloc(50*sizeof(char));
  strcpy(strip,mol_dict[12].keyarg);
  parse_hydrog_mass(strip,strip2,&(class_parse->mol_hydrog_mass_opt[mol_ind]),
                 &(class_parse->mol_hydrog_mass_val[mol_ind]),&ifound);
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  cfree(strip);
  cfree(strip2);
  index = 13;
  ifound = 0;
  if(strcasecmp(mol_dict[13].keyarg,"off")==0){
    ifound=1;class_parse->mol_hydrog_con_opt[mol_ind] = 0;
  }
  if(strcasecmp(mol_dict[13].keyarg,"all")==0){
    ifound=1;class_parse->mol_hydrog_con_opt[mol_ind] = 1;
  }
  if(strcasecmp(mol_dict[13].keyarg,"polar")==0){
    ifound=1;class_parse->mol_hydrog_con_opt[mol_ind] = 2;
  }
  if(ifound==0){
    keyarg_barf(mol_dict,filename_parse->molsetname,fun_key,index);
  }
  if(class_parse->mol_hydrog_con_opt[mol_ind] != 0 && pi_beads>1){
      printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
      printf("The code, while most excellent, cannot as yet perform  \n");
      printf("path integral simulations with constrained bonds, which\n");
      printf("are somewhat nasty.  Contact sales rep.       \n");
      printf("Turn off the \\hydrog_con option \n");
      printf("in file %s molecule %s\n",
              filename_parse->molsetname,atommaps->mol_typ[mol_ind]);
      printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
      fflush(stdout);
      exit(1);
  }
   if((atommaps->nres_1mol_jmol_typ[mol_ind]==0)&&
      (class_parse->imol_nhc_opt[mol_ind]==4)){
     printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
     printf("The molecule type specified %s in file %s      \n",
             atommaps->mol_typ[mol_ind],filename_parse->molsetname);
     printf("does not contain residues. Therefore, the res_mol \n");
     printf("thermostat option is not an appropriate choice    \n");
     printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
     fflush(stdout);
     exit(1);
   }
}

variable_types: struct filename_parse { char *simname; char *molsetname; char *dnamei; char *dnameci; char *input_name; char def_vps_name[50]; char user_vps_name[50]; char def_inter_name[50]; char user_inter_name[50]; char def_surf_name[50]; char user_surf_name[50]; char (*def_intra_name)[50]; char (*mol_param_name)[50]; char (*res_param_name)[50]; char (*res_fix_name)[50]; char (*user_intra_name)[50]; char (*vps_name)[50]; } *

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

variable_types: struct class_parse { int ivx_smpl; int ivx_scale; int kmax_ewd; int istart; int ishift_pot; int initial_spread_opt; int zero_com_vel; double tau_vol; double tau_nhc_def; int *imol_nhc_opt; int *ionfo_opt; int *ires_bond_conv; int *mol_freeze_opt; int *mol_hydrog_mass_opt; int *mol_hydrog_con_opt; double *tau_nhc_mol; double *text_nhc_mol; double *mol_hydrog_mass_val; } *

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: num int

variable_types: index int

variable_types: ifound int

variable_types: inum int

variable_types:
strip
char *

variable_types: dnum double


repo: TuckermanGroup/PINY

decompiled_code:
_BOOL8 __fastcall Init_PINY(int a1, __int64 a2, __int64 a3, __int64 a4)
{
_BOOL8 result; // rax
__int64 v7; // [rsp+0h] [rbp-28h] BYREF
int v8[7]; // [rsp+Ch] [rbp-1Ch] BYREF

v8[0] = a1;
v7 = a2;
Init(v8, &v7, a3 + 3288);
Comm_size(*(unsigned int *)(a3 + 3288), a3 + 3256);
Comm_rank(*(unsigned int *)(a3 + 3288), a3 + 3252);
result = *(_DWORD *)(a3 + 3252) == 0;
*(_DWORD *)(a4 + 4368) = result;
return result;
}

canonical_decompiled_code:
_BOOL8 __fastcall func0(int a1, __int64 a2, __int64 a3, __int64 a4)
{
_BOOL8 result; // rax
__int64 v7; // [rsp+0h] [rbp-28h] BYREF
int v8[7]; // [rsp+Ch] [rbp-1Ch] BYREF

v8[0] = a1;
v7 = a2;
Init(v8, &v7, a3 + 3288);
Comm_size(*(unsigned int *)(a3 + 3288), a3 + 3256);
Comm_rank(*(unsigned int *)(a3 + 3288), a3 + 3252);
result = *(_DWORD *)(a3 + 3252) == 0;
*(_DWORD *)(a4 + 4368) = result;
return result;
}

original_code:
void Init_PINY(int argc, char *argv[], CLASS* class, GENERAL_DATA* general_data) {
  Init(&argc, &argv, &((*class).communicate.world));
  Comm_size((*class).communicate.world, &((*class).communicate.np));
  Comm_rank((*class).communicate.world, &((*class).communicate.myid));
  (*general_data).error_check_on = ((*class).communicate.myid==0?1:0);
}

canonical_original_code:
void Init_PINY(int argc, char *argv[], struct class *class, struct general_data *general_data) {
  Init(&argc, &argv, &((*class).communicate.world));
  Comm_size((*class).communicate.world, &((*class).communicate.np));
  Comm_rank((*class).communicate.world, &((*class).communicate.myid));
  (*general_data).error_check_on = ((*class).communicate.myid==0?1:0);
}

variable_types: argc int

variable_types:
argv
char *[]

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

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


main

canonical_name: main

original_code:
int main (int argc, char *argv[])
   {
  int iii,is;
  CLASS class;
  BONDED bonded;
  GENERAL_DATA general_data;
  CP cp;
  ANALYSIS analysis;
  if(argc < 2) {
    printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
    printf("No input file specified\n");
    printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
    fflush(stdout);
    exit(1);
  }
  Init_PINY(argc, argv, &class, &general_data);
  ("PINY");
  parse(&class,&bonded,&general_data,&cp,&analysis,argv[1]);
  if(general_data.simopts.md==1){
    control_md(&class,&bonded,&general_data,&analysis);
  }
  if(general_data.simopts.pimd==1){
    control_pimd(&class,&bonded,&general_data,&analysis);
  }
  if((general_data.simopts.cp_wave+general_data.simopts.cp) ==1){
      control_cp(&class,&bonded,&general_data,&cp,&analysis);
  }
  if(general_data.simopts.cp_pimd+general_data.simopts.cp_wave_pimd==1){
      control_cp_pimd(&class,&bonded,&general_data,&cp,&analysis);
  }
  if(general_data.simopts.debug==1){
    control_debug(&class,&bonded,&general_data);
  }
  if(general_data.simopts.debug_pimd==1){
    control_debug_pimd(&class,&bonded,&general_data);
  }
  if(general_data.simopts.debug_cp==1){
    control_debug_cp(&class,&bonded,&general_data,&cp);
  }
  if(general_data.simopts.debug_cp_pimd==1){
    control_debug_cp_pimd(&class,&bonded,&general_data,&cp);
  }
  if(general_data.simopts.minimize==1){
   control_min(&class,&bonded,&general_data,&analysis);
  }
  if((general_data.simopts.cp_wave_min+general_data.simopts.cp_min) ==1 ){
    control_cp_min(&class,&bonded,&general_data,&cp,&analysis);
  }
  if((general_data.simopts.cp_wave_min_pimd) ==1 ){
    control_cp_pimd_min(&class,&bonded,&general_data,&cp,&analysis);
  }
  ("PINY");
  if(class.communicate.np>1){
   Barrier(class.communicate.world);
   Finalize();
  }
  fflush(stdout);
  exit(0);
  return 0;
   }

canonical_original_code:
int main(int argc, char *argv[])
   {
  int iii; int is;
  struct class class;
  struct bonded bonded;
  struct general_data general_data;
  struct cp cp;
  struct analysis analysis;
  if(argc < 2) {
    printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
    printf("No input file specified\n");
    printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
    fflush(stdout);
    exit(1);
  }
  Init_PINY(argc, argv, &class, &general_data);
  ("PINY");
  parse(&class,&bonded,&general_data,&cp,&analysis,argv[1]);
  if(general_data.simopts.md==1){
    control_md(&class,&bonded,&general_data,&analysis);
  }
  if(general_data.simopts.pimd==1){
    control_pimd(&class,&bonded,&general_data,&analysis);
  }
  if((general_data.simopts.cp_wave+general_data.simopts.cp) ==1){
      control_cp(&class,&bonded,&general_data,&cp,&analysis);
  }
  if(general_data.simopts.cp_pimd+general_data.simopts.cp_wave_pimd==1){
      control_cp_pimd(&class,&bonded,&general_data,&cp,&analysis);
  }
  if(general_data.simopts.debug==1){
    control_debug(&class,&bonded,&general_data);
  }
  if(general_data.simopts.debug_pimd==1){
    control_debug_pimd(&class,&bonded,&general_data);
  }
  if(general_data.simopts.debug_cp==1){
    control_debug_cp(&class,&bonded,&general_data,&cp);
  }
  if(general_data.simopts.debug_cp_pimd==1){
    control_debug_cp_pimd(&class,&bonded,&general_data,&cp);
  }
  if(general_data.simopts.minimize==1){
   control_min(&class,&bonded,&general_data,&analysis);
  }
  if((general_data.simopts.cp_wave_min+general_data.simopts.cp_min) ==1 ){
    control_cp_min(&class,&bonded,&general_data,&cp,&analysis);
  }
  if((general_data.simopts.cp_wave_min_pimd) ==1 ){
    control_cp_pimd_min(&class,&bonded,&general_data,&cp,&analysis);
  }
  ("PINY");
  if(class.communicate.np>1){
   Barrier(class.communicate.world);
   Finalize();
  }
  fflush(stdout);
  exit(0);
  return 0;
   }

variable_types: iii int

variable_types: is int

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

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

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

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

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

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

user_defined_types: struct therm_pos { double **x_nhc; double x_nhc_tot; }

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

user_defined_types: struct ewd_scr { double *q; double *x; double *fx; double *heli; double *cossc; double *fx2; double *temp; double *helr_now; }

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_free { int num; int j1; int npow; int nhist; double fk; double eq; double del; char *file; double *hist; }

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 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 excl { int nlst; int nlst_root; int num_cp; int *num; int *j; int *j_off; int *j1_cp; }

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

user_defined_types: struct electronic_properties { double *cp_elf_up; }

user_defined_types: struct cpconstrnt { double c_tolshake; double c_tolratl; double c_tolnorb; }

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

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

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

user_defined_types: struct eisf { int calcul_on; int eisf_on; }

user_defined_types: struct harmonic_analysis { int calcul_freq_on; int calcul_thermo_on; int calcul_spectra_on; int nfreqs; double delta; double *harm_freqs; }

user_defined_types: struct clatoms_pos { double *mass; double *x; double *vx; double *fx; double *fxt; double *fxm; double *hess_xx; }

user_defined_types: struct cptherm_pos { double c_nhc_massiv; double **c_nhc; double **vc_nhc; double **fc_nhc; int itherm_form_up; int itherm_form_dn; }

user_defined_types: struct cpscr_loc { double *vextr; double *vextr_dens_cp_box; double *dvextr; }

user_defined_types: struct cpscr_wave { double *zfft; int zfft_mall_size; double *cre_up; double *cre_dn; }

user_defined_types: struct cpscr_therm { double *coef_kin; double *sc_cp; }

user_defined_types: struct therm_scr { double *sc; double *atm_kin; }