Refactor gmx_group_t to SimulationAtomGroups
[alexxy/gromacs.git] / src / gromacs / mdlib / energyoutput.cpp
index f90aabe1630fa82f45f46e729ae8187605d39da2..bee8e0cfba5511c67d7f6b770ac9bfb196f645ad 100644 (file)
@@ -164,50 +164,50 @@ t_mdebin *init_mdebin(ener_file_t       fp_ene,
                       FILE             *fp_dhdl,
                       bool              isRerun)
 {
-    const char         *ener_nm[F_NRE];
-    static const char  *vir_nm[] = {
+    const char                *ener_nm[F_NRE];
+    static const char         *vir_nm[] = {
         "Vir-XX", "Vir-XY", "Vir-XZ",
         "Vir-YX", "Vir-YY", "Vir-YZ",
         "Vir-ZX", "Vir-ZY", "Vir-ZZ"
     };
-    static const char  *sv_nm[] = {
+    static const char         *sv_nm[] = {
         "ShakeVir-XX", "ShakeVir-XY", "ShakeVir-XZ",
         "ShakeVir-YX", "ShakeVir-YY", "ShakeVir-YZ",
         "ShakeVir-ZX", "ShakeVir-ZY", "ShakeVir-ZZ"
     };
-    static const char  *fv_nm[] = {
+    static const char         *fv_nm[] = {
         "ForceVir-XX", "ForceVir-XY", "ForceVir-XZ",
         "ForceVir-YX", "ForceVir-YY", "ForceVir-YZ",
         "ForceVir-ZX", "ForceVir-ZY", "ForceVir-ZZ"
     };
-    static const char  *pres_nm[] = {
+    static const char         *pres_nm[] = {
         "Pres-XX", "Pres-XY", "Pres-XZ",
         "Pres-YX", "Pres-YY", "Pres-YZ",
         "Pres-ZX", "Pres-ZY", "Pres-ZZ"
     };
-    static const char  *surft_nm[] = {
+    static const char         *surft_nm[] = {
         "#Surf*SurfTen"
     };
-    static const char  *mu_nm[] = {
+    static const char         *mu_nm[] = {
         "Mu-X", "Mu-Y", "Mu-Z"
     };
-    static const char  *vcos_nm[] = {
+    static const char         *vcos_nm[] = {
         "2CosZ*Vel-X"
     };
-    static const char  *visc_nm[] = {
+    static const char         *visc_nm[] = {
         "1/Viscosity"
     };
-    static const char  *baro_nm[] = {
+    static const char         *baro_nm[] = {
         "Barostat"
     };
 
-    const gmx_groups_t *groups;
-    char              **gnm;
-    char                buf[256];
-    const char         *bufi;
-    t_mdebin           *md;
-    int                 i, j, ni, nj, n, k, kk, ncon, nset;
-    gmx_bool            bBHAM, b14;
+    const SimulationGroups    *groups;
+    char                     **gnm;
+    char                       buf[256];
+    const char                *bufi;
+    t_mdebin                  *md;
+    int                        i, j, ni, nj, n, k, kk, ncon, nset;
+    gmx_bool                   bBHAM, b14;
 
     snew(md, 1);
 
@@ -449,8 +449,7 @@ t_mdebin *init_mdebin(ener_file_t       fp_ene,
             md->nEc++;
         }
     }
-
-    n       = groups->grps[egcENER].nr;
+    n       = groups->groups[SimulationAtomGroupType::EnergyOutput].nr;
     md->nEg = n;
     md->nE  = (n*(n+1))/2;
 
@@ -463,18 +462,18 @@ t_mdebin *init_mdebin(ener_file_t       fp_ene,
         {
             snew(gnm[k], STRLEN);
         }
-        for (i = 0; (i < groups->grps[egcENER].nr); i++)
+        for (i = 0; (i < groups->groups[SimulationAtomGroupType::EnergyOutput].nr); i++)
         {
-            ni = groups->grps[egcENER].nm_ind[i];
-            for (j = i; (j < groups->grps[egcENER].nr); j++)
+            ni = groups->groups[SimulationAtomGroupType::EnergyOutput].nm_ind[i];
+            for (j = i; (j < groups->groups[SimulationAtomGroupType::EnergyOutput].nr); j++)
             {
-                nj = groups->grps[egcENER].nm_ind[j];
+                nj = groups->groups[SimulationAtomGroupType::EnergyOutput].nm_ind[j];
                 for (k = kk = 0; (k < egNR); k++)
                 {
                     if (md->bEInd[k])
                     {
                         sprintf(gnm[kk], "%s:%s-%s", egrp_nm[k],
-                                *(groups->grpname[ni]), *(groups->grpname[nj]));
+                                *(groups->groupNames[ni]), *(groups->groupNames[nj]));
                         kk++;
                     }
                 }
@@ -495,7 +494,7 @@ t_mdebin *init_mdebin(ener_file_t       fp_ene,
         }
     }
 
-    md->nTC  = isRerun ? 0 : groups->grps[egcTC].nr;
+    md->nTC  = isRerun ? 0 : groups->groups[SimulationAtomGroupType::TemperatureCoupling].nr;
     md->nNHC = ir->opts.nhchainlength; /* shorthand for number of NH chains */
     if (md->bMTTK)
     {
@@ -534,8 +533,8 @@ t_mdebin *init_mdebin(ener_file_t       fp_ene,
 
     for (i = 0; (i < md->nTC); i++)
     {
-        ni = groups->grps[egcTC].nm_ind[i];
-        sprintf(buf, "T-%s", *(groups->grpname[ni]));
+        ni = groups->groups[SimulationAtomGroupType::TemperatureCoupling].nm_ind[i];
+        sprintf(buf, "T-%s", *(groups->groupNames[ni]));
         grpnms[i] = gmx_strdup(buf);
     }
     md->itemp = get_ebin_space(md->ebin, md->nTC, grpnms,
@@ -549,8 +548,8 @@ t_mdebin *init_mdebin(ener_file_t       fp_ene,
             {
                 for (i = 0; (i < md->nTC); i++)
                 {
-                    ni   = groups->grps[egcTC].nm_ind[i];
-                    bufi = *(groups->grpname[ni]);
+                    ni   = groups->groups[SimulationAtomGroupType::TemperatureCoupling].nm_ind[i];
+                    bufi = *(groups->groupNames[ni]);
                     for (j = 0; (j < md->nNHC); j++)
                     {
                         sprintf(buf, "Xi-%d-%s", j, bufi);
@@ -582,8 +581,8 @@ t_mdebin *init_mdebin(ener_file_t       fp_ene,
             {
                 for (i = 0; (i < md->nTC); i++)
                 {
-                    ni   = groups->grps[egcTC].nm_ind[i];
-                    bufi = *(groups->grpname[ni]);
+                    ni   = groups->groups[SimulationAtomGroupType::TemperatureCoupling].nm_ind[i];
+                    bufi = *(groups->groupNames[ni]);
                     sprintf(buf, "Xi-%s", bufi);
                     grpnms[2*i] = gmx_strdup(buf);
                     sprintf(buf, "vXi-%s", bufi);
@@ -599,8 +598,8 @@ t_mdebin *init_mdebin(ener_file_t       fp_ene,
     {
         for (i = 0; (i < md->nTC); i++)
         {
-            ni = groups->grps[egcTC].nm_ind[i];
-            sprintf(buf, "Lamb-%s", *(groups->grpname[ni]));
+            ni = groups->groups[SimulationAtomGroupType::TemperatureCoupling].nm_ind[i];
+            sprintf(buf, "Lamb-%s", *(groups->groupNames[ni]));
             grpnms[i] = gmx_strdup(buf);
         }
         md->itc = get_ebin_space(md->ebin, md->mde_n, grpnms, "");
@@ -612,18 +611,18 @@ t_mdebin *init_mdebin(ener_file_t       fp_ene,
     }
     sfree(grpnms);
 
-    md->nU = groups->grps[egcACC].nr;
+    md->nU = groups->groups[SimulationAtomGroupType::Acceleration].nr;
     if (md->nU > 1)
     {
         snew(grpnms, 3*md->nU);
         for (i = 0; (i < md->nU); i++)
         {
-            ni = groups->grps[egcACC].nm_ind[i];
-            sprintf(buf, "Ux-%s", *(groups->grpname[ni]));
+            ni = groups->groups[SimulationAtomGroupType::Acceleration].nm_ind[i];
+            sprintf(buf, "Ux-%s", *(groups->groupNames[ni]));
             grpnms[3*i+XX] = gmx_strdup(buf);
-            sprintf(buf, "Uy-%s", *(groups->grpname[ni]));
+            sprintf(buf, "Uy-%s", *(groups->groupNames[ni]));
             grpnms[3*i+YY] = gmx_strdup(buf);
-            sprintf(buf, "Uz-%s", *(groups->grpname[ni]));
+            sprintf(buf, "Uz-%s", *(groups->groupNames[ni]));
             grpnms[3*i+ZZ] = gmx_strdup(buf);
         }
         md->iu = get_ebin_space(md->ebin, 3*md->nU, grpnms, unit_vel);
@@ -1319,7 +1318,7 @@ void print_ebin(ener_file_t fp_ene, gmx_bool bEne, gmx_bool bDR, gmx_bool bOR,
                 int64_t step, double time,
                 int mode,
                 t_mdebin *md, t_fcdata *fcd,
-                gmx_groups_t *groups, t_grpopts *opts,
+                SimulationGroups *groups, t_grpopts *opts,
                 gmx::Awh *awh)
 {
     /*static char **grpnms=NULL;*/
@@ -1482,7 +1481,7 @@ void print_ebin(ener_file_t fp_ene, gmx_bool bEne, gmx_bool bDR, gmx_bool bOR,
                 if (opts->annealing[i] != eannNO)
                 {
                     fprintf(log, "Current ref_t for group %s: %8.1f\n",
-                            *(groups->grpname[groups->grps[egcTC].nm_ind[i]]),
+                            *(groups->groupNames[groups->groups[SimulationAtomGroupType::TemperatureCoupling].nm_ind[i]]),
                             opts->ref_t[i]);
                 }
             }
@@ -1536,12 +1535,12 @@ void print_ebin(ener_file_t fp_ene, gmx_bool bEne, gmx_bool bDR, gmx_bool bOR,
                     n = 0;
                     for (i = 0; (i < md->nEg); i++)
                     {
-                        ni = groups->grps[egcENER].nm_ind[i];
+                        ni = groups->groups[SimulationAtomGroupType::EnergyOutput].nm_ind[i];
                         for (j = i; (j < md->nEg); j++)
                         {
-                            nj = groups->grps[egcENER].nm_ind[j];
-                            sprintf(buf, "%s-%s", *(groups->grpname[ni]),
-                                    *(groups->grpname[nj]));
+                            nj = groups->groups[SimulationAtomGroupType::EnergyOutput].nm_ind[j];
+                            sprintf(buf, "%s-%s", *(groups->groupNames[ni]),
+                                    *(groups->groupNames[nj]));
                             md->print_grpnms[n++] = gmx_strdup(buf);
                         }
                     }
@@ -1575,8 +1574,8 @@ void print_ebin(ener_file_t fp_ene, gmx_bool bEne, gmx_bool bDR, gmx_bool bOR,
                         "Group", "Ux", "Uy", "Uz");
                 for (i = 0; (i < md->nU); i++)
                 {
-                    ni = groups->grps[egcACC].nm_ind[i];
-                    fprintf(log, "%15s", *groups->grpname[ni]);
+                    ni = groups->groups[SimulationAtomGroupType::Acceleration].nm_ind[i];
+                    fprintf(log, "%15s", *groups->groupNames[ni]);
                     pr_ebin(log, md->ebin, md->iu+3*i, 3, 3, mode, FALSE);
                 }
                 fprintf(log, "\n");
@@ -1712,7 +1711,7 @@ void EnergyOutput::printStepToEnergyFile(ener_file *fp_ene, bool bEne, bool bDR,
                                          int64_t step, double time,
                                          int mode,
                                          t_fcdata *fcd,
-                                         gmx_groups_t *groups, t_grpopts *opts,
+                                         SimulationGroups *groups, t_grpopts *opts,
                                          gmx::Awh *awh)
 {
     print_ebin(fp_ene, bEne, bDR, bOR, log, step, time, mode,