From ac802bbe446b2294abdf0f312b92e7eb427a5091 Mon Sep 17 00:00:00 2001 From: Mark Abraham Date: Sun, 12 Apr 2020 10:08:16 +0000 Subject: [PATCH] Finish removing ENCAD shifts and table generation 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 | 6 +--- src/gromacs/mdtypes/inputrec.cpp | 4 +-- src/gromacs/mdtypes/md_enums.cpp | 8 ++--- src/gromacs/mdtypes/md_enums.h | 4 +-- src/gromacs/tables/forcetable.cpp | 71 ++++----------------------------------- 5 files changed, 15 insertions(+), 78 deletions(-) diff --git a/src/gromacs/mdlib/forcerec.cpp b/src/gromacs/mdlib/forcerec.cpp index 8d3c5fbf03..7f78c142ba 100644 --- a/src/gromacs/mdlib/forcerec.cpp +++ b/src/gromacs/mdlib/forcerec.cpp @@ -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]); } diff --git a/src/gromacs/mdtypes/inputrec.cpp b/src/gromacs/mdtypes/inputrec.cpp index 616abbdd0b..92e1fb9312 100644 --- a/src/gromacs/mdtypes/inputrec.cpp +++ b/src/gromacs/mdtypes/inputrec.cpp @@ -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); } diff --git a/src/gromacs/mdtypes/md_enums.cpp b/src/gromacs/mdtypes/md_enums.cpp index 6cca8b9df1..0f7c687f7e 100644 --- a/src/gromacs/mdtypes/md_enums.cpp +++ b/src/gromacs/mdtypes/md_enums.cpp @@ -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 }; diff --git a/src/gromacs/mdtypes/md_enums.h b/src/gromacs/mdtypes/md_enums.h index 7bd8336f1c..2fb7296bda 100644 --- a/src/gromacs/mdtypes/md_enums.h +++ b/src/gromacs/mdtypes/md_enums.h @@ -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 }; diff --git a/src/gromacs/tables/forcetable.cpp b/src/gromacs/tables/forcetable.cpp index 20aa4bd3e9..abddc26cc1 100644 --- a/src/gromacs/tables/forcetable.cpp +++ b/src/gromacs/tables/forcetable.cpp @@ -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; -- 2.11.4.GIT