Finish removing ENCAD shifts and table generation
authorMark Abraham <mark.j.abraham@gmail.com>
Sun, 12 Apr 2020 10:08:16 +0000 (10:08 +0000)
committerPaul Bauer <paul.bauer.q@gmail.com>
Sun, 12 Apr 2020 10:08:16 +0000 (10:08 +0000)
The force field was removed in 2014, and the functional forms can't be
used any more since the group scheme is removed. The table-generation
functions were also broken in several ways. Anybody wanting to use
this force field in the recent past (or perhaps future) needs to use
user tables.

The tpr-facing enums have their numerical values preserved, along with
changes to indicate that the symbol values are unused. This means that
old tpr files can still be read correctly, while maintainers don't
have extra work to understand what is going on. The internal code can
be fully removed.

Fixes #3477

src/gromacs/mdlib/forcerec.cpp
src/gromacs/mdtypes/inputrec.cpp
src/gromacs/mdtypes/md_enums.cpp
src/gromacs/mdtypes/md_enums.h
src/gromacs/tables/forcetable.cpp

index 8d3c5fbf03f8dc78fd246c5630a41f506184f756..7f78c142baf6ea5679f1c60044e5ff29ad79bbb9 100644 (file)
@@ -1108,7 +1108,6 @@ void init_forcerec(FILE*                            fp,
         case eelSWITCH:
         case eelSHIFT:
         case eelUSER:
-        case eelENCADSHIFT:
         case eelPMESWITCH:
         case eelPMEUSER:
         case eelPMEUSERSWITCH:
@@ -1141,10 +1140,7 @@ void init_forcerec(FILE*                            fp,
 
         case evdwSWITCH:
         case evdwSHIFT:
-        case evdwUSER:
-        case evdwENCADSHIFT:
-            fr->nbkernel_vdw_interaction = GMX_NBKERNEL_VDW_CUBICSPLINETABLE;
-            break;
+        case evdwUSER: fr->nbkernel_vdw_interaction = GMX_NBKERNEL_VDW_CUBICSPLINETABLE; break;
 
         default: gmx_fatal(FARGS, "Unsupported vdw interaction: %s", evdw_names[ic->vdwtype]);
     }
index 616abbdd0b25a775a8273cb8e8508b537aa498e9..92e1fb9312b0349d2fe8df8a729fd96909c4d653 100644 (file)
@@ -215,7 +215,7 @@ int ir_optimal_nstpcouple(const t_inputrec* ir)
 
 gmx_bool ir_coulomb_switched(const t_inputrec* ir)
 {
-    return (ir->coulombtype == eelSWITCH || ir->coulombtype == eelSHIFT || ir->coulombtype == eelENCADSHIFT
+    return (ir->coulombtype == eelSWITCH || ir->coulombtype == eelSHIFT
             || ir->coulombtype == eelPMESWITCH || ir->coulombtype == eelPMEUSERSWITCH
             || ir->coulomb_modifier == eintmodPOTSWITCH || ir->coulomb_modifier == eintmodFORCESWITCH);
 }
@@ -233,7 +233,7 @@ gmx_bool ir_coulomb_might_be_zero_at_cutoff(const t_inputrec* ir)
 
 gmx_bool ir_vdw_switched(const t_inputrec* ir)
 {
-    return (ir->vdwtype == evdwSWITCH || ir->vdwtype == evdwSHIFT || ir->vdwtype == evdwENCADSHIFT
+    return (ir->vdwtype == evdwSWITCH || ir->vdwtype == evdwSHIFT
             || ir->vdw_modifier == eintmodPOTSWITCH || ir->vdw_modifier == eintmodFORCESWITCH);
 }
 
index 6cca8b9df1127de9e58581cffff0f3cc53da9896..0f7c687f7e921a6a45e3950a4740779c5f93a972 100644 (file)
@@ -73,8 +73,8 @@ const char* eel_names[eelNR + 1] = { "Cut-off",
                                      "Shift",
                                      "User",
                                      "Generalized-Born (unused)",
-                                     "Reaction-Field-nec",
-                                     "Encad-shift",
+                                     "Reaction-Field-nec (unsupported)",
+                                     "Encad-shift (unused)",
                                      "PME-User",
                                      "PME-Switch",
                                      "PME-User-Switch",
@@ -85,8 +85,8 @@ const char* eewg_names[eewgNR + 1] = { "3d", "3dc", nullptr };
 
 const char* eljpme_names[eljpmeNR + 1] = { "Geometric", "Lorentz-Berthelot", nullptr };
 
-const char* evdw_names[evdwNR + 1] = { "Cut-off",     "Switch", "Shift", "User",
-                                       "Encad-shift", "PME",    nullptr };
+const char* evdw_names[evdwNR + 1] = { "Cut-off", "Switch", "Shift", "User", "Encad-shift (unused)",
+                                       "PME",     nullptr };
 
 const char* econstr_names[econtNR + 1] = { "Lincs", "Shake", nullptr };
 
index 7bd8336f1c1cffc4497965e966ee4a38f0a5903b..2fb7296bdac60bb1928e9202b754a56027384ad2 100644 (file)
@@ -239,7 +239,7 @@ enum
     eelUSER,
     eelGB_NOTUSED,
     eelRF_NEC_UNSUPPORTED,
-    eelENCADSHIFT,
+    eelENCADSHIFT_NOTUSED,
     eelPMEUSER,
     eelPMESWITCH,
     eelPMEUSERSWITCH,
@@ -282,7 +282,7 @@ enum
     evdwSWITCH,
     evdwSHIFT,
     evdwUSER,
-    evdwENCADSHIFT,
+    evdwENCADSHIFT_UNUSED,
     evdwPME,
     evdwNR
 };
index 20aa4bd3e99024e54603b42a348bcb6d1ac95be7..abddc26cc1789d1479492ca0297453af0a29c530 100644 (file)
@@ -79,9 +79,6 @@ enum
     etabLJ6Switch,
     etabLJ12Switch,
     etabCOULSwitch,
-    etabLJ6Encad,
-    etabLJ12Encad,
-    etabCOULEncad,
     etabEXPMIN,
     etabUSER,
     etabNR
@@ -99,27 +96,12 @@ typedef struct
 /* This structure holds name and a flag that tells whether
    this is a Coulomb type funtion */
 static const t_tab_props tprops[etabNR] = {
-    { "LJ6", FALSE },
-    { "LJ12", FALSE },
-    { "LJ6Shift", FALSE },
-    { "LJ12Shift", FALSE },
-    { "Shift", TRUE },
-    { "RF", TRUE },
-    { "RF-zero", TRUE },
-    { "COUL", TRUE },
-    { "Ewald", TRUE },
-    { "Ewald-Switch", TRUE },
-    { "Ewald-User", TRUE },
-    { "Ewald-User-Switch", TRUE },
-    { "LJ6Ewald", FALSE },
-    { "LJ6Switch", FALSE },
-    { "LJ12Switch", FALSE },
-    { "COULSwitch", TRUE },
-    { "LJ6-Encad shift", FALSE },
-    { "LJ12-Encad shift", FALSE },
-    { "COUL-Encad shift", TRUE },
-    { "EXPMIN", FALSE },
-    { "USER", FALSE },
+    { "LJ6", FALSE },         { "LJ12", FALSE },      { "LJ6Shift", FALSE },
+    { "LJ12Shift", FALSE },   { "Shift", TRUE },      { "RF", TRUE },
+    { "RF-zero", TRUE },      { "COUL", TRUE },       { "Ewald", TRUE },
+    { "Ewald-Switch", TRUE }, { "Ewald-User", TRUE }, { "Ewald-User-Switch", TRUE },
+    { "LJ6Ewald", FALSE },    { "LJ6Switch", FALSE }, { "LJ12Switch", FALSE },
+    { "COULSwitch", TRUE },   { "EXPMIN", FALSE },    { "USER", FALSE },
 };
 
 typedef struct
@@ -1016,30 +998,6 @@ static void fill_table(t_tabledata* td, int tp, const interaction_const_t* ic, g
                     Ftab = reppow * Vtab / r;
                 }
                 break;
-            case etabLJ6Encad:
-                if (r < rc)
-                {
-                    Vtab = -(r6 - 6.0 * (rc - r) * rc6 / rc - rc6);
-                    Ftab = -(6.0 * r6 / r - 6.0 * rc6 / rc);
-                }
-                else /* r>rc */
-                {
-                    Vtab = 0;
-                    Ftab = 0;
-                }
-                break;
-            case etabLJ12Encad:
-                if (r < rc)
-                {
-                    Vtab = -(r12 - 12.0 * (rc - r) * rc12 / rc - rc12);
-                    Ftab = -(12.0 * r12 / r - 12.0 * rc12 / rc);
-                }
-                else /* r>rc */
-                {
-                    Vtab = 0;
-                    Ftab = 0;
-                }
-                break;
             case etabCOUL:
                 Vtab = 1.0 / r;
                 Ftab = 1.0 / r2;
@@ -1084,18 +1042,6 @@ static void fill_table(t_tabledata* td, int tp, const interaction_const_t* ic, g
                 Vtab = expr;
                 Ftab = expr;
                 break;
-            case etabCOULEncad:
-                if (r < rc)
-                {
-                    Vtab = 1.0 / r - (rc - r) / (rc * rc) - 1.0 / rc;
-                    Ftab = 1.0 / r2 - 1.0 / (rc * rc);
-                }
-                else /* r>rc */
-                {
-                    Vtab = 0;
-                    Ftab = 0;
-                }
-                break;
             default:
                 gmx_fatal(FARGS, "Table type %d not implemented yet. (%s,%d)", tp, __FILE__, __LINE__);
         }
@@ -1218,7 +1164,6 @@ static void set_table_type(int tabsel[], const interaction_const_t* ic, gmx_bool
         case eelRF_ZERO: tabsel[etiCOUL] = etabRF_ZERO; break;
         case eelSWITCH: tabsel[etiCOUL] = etabCOULSwitch; break;
         case eelUSER: tabsel[etiCOUL] = etabUSER; break;
-        case eelENCADSHIFT: tabsel[etiCOUL] = etabCOULEncad; break;
         default: gmx_fatal(FARGS, "Invalid eeltype %d", eltype);
     }
 
@@ -1257,10 +1202,6 @@ static void set_table_type(int tabsel[], const interaction_const_t* ic, gmx_bool
                 tabsel[etiLJ6]  = etabLJ6;
                 tabsel[etiLJ12] = etabLJ12;
                 break;
-            case evdwENCADSHIFT:
-                tabsel[etiLJ6]  = etabLJ6Encad;
-                tabsel[etiLJ12] = etabLJ12Encad;
-                break;
             case evdwPME:
                 tabsel[etiLJ6]  = etabLJ6Ewald;
                 tabsel[etiLJ12] = etabLJ12;