Merged legacyheaders/types/ns.h and nblist.h to mdtypes/nblist.h
authorDavid van der Spoel <spoel@xray.bmc.uu.se>
Fri, 20 Nov 2015 15:10:10 +0000 (16:10 +0100)
committerDavid van der Spoel <spoel@xray.bmc.uu.se>
Fri, 20 Nov 2015 17:18:45 +0000 (18:18 +0100)
Also parts moved out of forcerec.h.
In order to make this work some parts of the forcerec structure
had to be made pointers, and the same for nblist structures.

Part of #1415.

Change-Id: Iaaadd76ccca001a11371b9a0ad1b75a727732f00

67 files changed:
src/gromacs/domdec/domdec.cpp
src/gromacs/gmxlib/nonbonded/nb_free_energy.h
src/gromacs/gmxlib/nonbonded/nb_generic.h
src/gromacs/gmxlib/nonbonded/nb_generic_cg.h
src/gromacs/gmxlib/nonbonded/nb_kernel.h
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_avx_128_fma_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecGB_VdwLJ_GeomP1P1_avx_128_fma_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_ElecGB_VdwNone_GeomP1P1_avx_128_fma_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_128_fma_double/nb_kernel_template_avx_128_fma_double.pre
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_128_fma_single/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_avx_128_fma_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_128_fma_single/nb_kernel_ElecGB_VdwLJ_GeomP1P1_avx_128_fma_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_128_fma_single/nb_kernel_ElecGB_VdwNone_GeomP1P1_avx_128_fma_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_128_fma_single/nb_kernel_template_avx_128_fma_single.pre
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_256_double/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_avx_256_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_256_double/nb_kernel_ElecGB_VdwLJ_GeomP1P1_avx_256_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_256_double/nb_kernel_ElecGB_VdwNone_GeomP1P1_avx_256_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_256_double/nb_kernel_template_avx_256_double.pre
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_256_single/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_avx_256_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_256_single/nb_kernel_ElecGB_VdwLJ_GeomP1P1_avx_256_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_256_single/nb_kernel_ElecGB_VdwNone_GeomP1P1_avx_256_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_avx_256_single/nb_kernel_template_avx_256_single.pre
src/gromacs/gmxlib/nonbonded/nb_kernel_c/nb_kernel_ElecGB_VdwBham_GeomP1P1_c.c
src/gromacs/gmxlib/nonbonded/nb_kernel_c/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_c.c
src/gromacs/gmxlib/nonbonded/nb_kernel_c/nb_kernel_ElecGB_VdwLJ_GeomP1P1_c.c
src/gromacs/gmxlib/nonbonded/nb_kernel_c/nb_kernel_ElecGB_VdwNone_GeomP1P1_c.c
src/gromacs/gmxlib/nonbonded/nb_kernel_c/nb_kernel_allvsall.h
src/gromacs/gmxlib/nonbonded/nb_kernel_c/nb_kernel_allvsallgb.c
src/gromacs/gmxlib/nonbonded/nb_kernel_c/nb_kernel_allvsallgb.h
src/gromacs/gmxlib/nonbonded/nb_kernel_c/nb_kernel_template_c.pre
src/gromacs/gmxlib/nonbonded/nb_kernel_sparc64_hpc_ace_double/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_sparc64_hpc_ace_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sparc64_hpc_ace_double/nb_kernel_ElecGB_VdwLJ_GeomP1P1_sparc64_hpc_ace_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sparc64_hpc_ace_double/nb_kernel_ElecGB_VdwNone_GeomP1P1_sparc64_hpc_ace_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sparc64_hpc_ace_double/nb_kernel_template_sparc64_hpc_ace_double.pre
src/gromacs/gmxlib/nonbonded/nb_kernel_sse2_double/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_sse2_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse2_double/nb_kernel_ElecGB_VdwLJ_GeomP1P1_sse2_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse2_double/nb_kernel_ElecGB_VdwNone_GeomP1P1_sse2_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse2_double/nb_kernel_template_sse2_double.pre
src/gromacs/gmxlib/nonbonded/nb_kernel_sse2_single/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_sse2_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse2_single/nb_kernel_ElecGB_VdwLJ_GeomP1P1_sse2_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse2_single/nb_kernel_ElecGB_VdwNone_GeomP1P1_sse2_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse2_single/nb_kernel_template_sse2_single.pre
src/gromacs/gmxlib/nonbonded/nb_kernel_sse4_1_double/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_sse4_1_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse4_1_double/nb_kernel_ElecGB_VdwLJ_GeomP1P1_sse4_1_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse4_1_double/nb_kernel_ElecGB_VdwNone_GeomP1P1_sse4_1_double.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse4_1_double/nb_kernel_template_sse4_1_double.pre
src/gromacs/gmxlib/nonbonded/nb_kernel_sse4_1_single/nb_kernel_ElecGB_VdwCSTab_GeomP1P1_sse4_1_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse4_1_single/nb_kernel_ElecGB_VdwLJ_GeomP1P1_sse4_1_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse4_1_single/nb_kernel_ElecGB_VdwNone_GeomP1P1_sse4_1_single.c
src/gromacs/gmxlib/nonbonded/nb_kernel_sse4_1_single/nb_kernel_template_sse4_1_single.pre
src/gromacs/gmxlib/nonbonded/nonbonded.cpp
src/gromacs/gmxlib/nonbonded/nonbonded.h
src/gromacs/gmxpreprocess/grompp.cpp
src/gromacs/legacyheaders/types/forcerec.h
src/gromacs/legacyheaders/types/ns.h [deleted file]
src/gromacs/listed-forces/pairs.cpp
src/gromacs/mdlib/force.cpp
src/gromacs/mdlib/forcerec.cpp
src/gromacs/mdlib/genborn.cpp
src/gromacs/mdlib/nbnxn_pairlist.h
src/gromacs/mdlib/ns.cpp
src/gromacs/mdlib/qmmm.cpp
src/gromacs/mdlib/sim_util.cpp
src/gromacs/mdlib/wall.cpp
src/gromacs/mdlib/wnblist.cpp
src/gromacs/mdtypes/nblist.h [moved from src/gromacs/legacyheaders/types/nblist.h with 53% similarity]
src/gromacs/tables/forcetable.cpp
src/gromacs/tables/forcetable.h

index 9f2f6669e0ccc29879e3e7e773319b286d7a9de4..e773b0cbaa5cdde424198e2b2057df375790dfa1 100644 (file)
@@ -63,7 +63,6 @@
 #include "gromacs/legacyheaders/types/forcerec.h"
 #include "gromacs/legacyheaders/types/hw_info.h"
 #include "gromacs/legacyheaders/types/ifunc.h"
-#include "gromacs/legacyheaders/types/ns.h"
 #include "gromacs/listed-forces/manage-threading.h"
 #include "gromacs/math/vec.h"
 #include "gromacs/math/vectypes.h"
@@ -82,6 +81,7 @@
 #include "gromacs/mdtypes/inputrec.h"
 #include "gromacs/mdtypes/md_enums.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/mdtypes/state.h"
 #include "gromacs/pbcutil/ishift.h"
 #include "gromacs/pbcutil/pbc.h"
@@ -4599,7 +4599,7 @@ static void dd_redistribute_cg(FILE *fplog, gmx_int64_t step,
         }
         else
         {
-            moved = fr->ns.grid->cell_index;
+            moved = fr->ns->grid->cell_index;
         }
 
         clear_and_mark_ind(dd->ncg_home, move,
@@ -8768,9 +8768,9 @@ static int dd_sort_order(gmx_domdec_t *dd, t_forcerec *fr, int ncg_home_old)
 
     sort = dd->comm->sort;
 
-    a = fr->ns.grid->cell_index;
+    a = fr->ns->grid->cell_index;
 
-    moved = NSGRID_SIGNAL_MOVED_FAC*fr->ns.grid->ncells;
+    moved = NSGRID_SIGNAL_MOVED_FAC*fr->ns->grid->ncells;
 
     if (ncg_home_old >= 0)
     {
@@ -9008,9 +9008,9 @@ static void dd_sort_state(gmx_domdec_t *dd, rvec *cgcm, t_forcerec *fr, t_state
         /* Copy the sorted ns cell indices back to the ns grid struct */
         for (i = 0; i < dd->ncg_home; i++)
         {
-            fr->ns.grid->cell_index[i] = cgsort[i].nsc;
+            fr->ns->grid->cell_index[i] = cgsort[i].nsc;
         }
-        fr->ns.grid->nr = dd->ncg_home;
+        fr->ns->grid->nr = dd->ncg_home;
     }
 }
 
@@ -9408,8 +9408,8 @@ void dd_partition_system(FILE                *fplog,
     switch (fr->cutoff_scheme)
     {
         case ecutsGROUP:
-            copy_ivec(fr->ns.grid->n, ncells_old);
-            grid_first(fplog, fr->ns.grid, dd, &ddbox,
+            copy_ivec(fr->ns->grid->n, ncells_old);
+            grid_first(fplog, fr->ns->grid, dd, &ddbox,
                        state_local->box, cell_ns_x0, cell_ns_x1,
                        fr->rlistlong, grid_density);
             break;
@@ -9457,10 +9457,10 @@ void dd_partition_system(FILE                *fplog,
                 nbnxn_get_ncells(fr->nbv->nbs, &ncells_new[XX], &ncells_new[YY]);
                 break;
             case ecutsGROUP:
-                fill_grid(&comm->zones, fr->ns.grid, dd->ncg_home,
+                fill_grid(&comm->zones, fr->ns->grid, dd->ncg_home,
                           0, dd->ncg_home, fr->cg_cm);
 
-                copy_ivec(fr->ns.grid->n, ncells_new);
+                copy_ivec(fr->ns->grid->n, ncells_new);
                 break;
             default:
                 gmx_incons("unimplemented");
index db73580009c0b175cea2e2ab3036554bb65b38b4..860ce4b8e142cf839a3ac99af6b4bc449b04d1f4 100644 (file)
@@ -40,9 +40,9 @@
 
 #include "gromacs/gmxlib/nrnb.h"
 #include "gromacs/gmxlib/nonbonded/nb_kernel.h"
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/math/vectypes.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 
 struct t_forcerec;
 
index 3e5eaccb4881edb2499b21db522278003c58fe4a..28713fca26460ce96569f38599b63a3f9c63c6b4 100644 (file)
@@ -40,9 +40,9 @@
 
 #include "gromacs/gmxlib/nrnb.h"
 #include "gromacs/gmxlib/nonbonded/nb_kernel.h"
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/math/vectypes.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 
 void
 gmx_nb_generic_kernel(t_nblist *                nlist,
index 680e66aa2ac8d7980959ace5cf136ae4bc09133b..ca8bac3ef72603b2d85357c3ead01a72dcf00da9 100644 (file)
@@ -40,9 +40,9 @@
 
 #include "gromacs/gmxlib/nrnb.h"
 #include "gromacs/gmxlib/nonbonded/nb_kernel.h"
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/math/vectypes.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 
 void
 gmx_nb_generic_cg_kernel(t_nblist *                nlist,
index 56b47b6f63dece3f1bb2c7a0c584ff89311b3f89..94e6968cf2ab1552fee0a8d6f0beacfae02dd1ed 100644 (file)
@@ -37,9 +37,9 @@
 
 #include "gromacs/gmxlib/nrnb.h"
 #include "gromacs/legacyheaders/types/forcerec.h"
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/math/vectypes.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/topology/block.h"
 #include "gromacs/utility/real.h"
 
index df82c50b46f61284368f4b15afe4e86bafd9859d..55eb0f5b2b6d99861f911baec9d81e8a1013164c 100644 (file)
@@ -123,8 +123,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_avx_128_fma_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -544,8 +544,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_avx_128_fma_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 99710c2f8b7874b2147c9c32a1e3f523ff379849..2909ad56a05bde9b4e5bb30471e691a4cce1e7cf 100644 (file)
@@ -120,8 +120,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_avx_128_fma_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -478,8 +478,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_avx_128_fma_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 63eead2401f0bb2e0c07d5562bb0c0b725117536..3c7e359d74168b80a5644b3a339c9d6b5802720b 100644 (file)
@@ -111,8 +111,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_avx_128_fma_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -428,8 +428,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_avx_128_fma_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 3fa840ff57402076a7a9d6a4bff7012112849a47..e1e5918e4aa68c1d820cd57097cac9dd3a5d9a50 100644 (file)
@@ -229,8 +229,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     /* #endif */
 
index 5e21fd34c47e505a3fc64f5c93f0350107e0bc54..ea8de4e2e3039d8793796648daeda0410df5470c 100644 (file)
@@ -126,8 +126,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_avx_128_fma_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -607,8 +607,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_avx_128_fma_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 00fdf740c4a99283c5f7dc03ddcc204aabd68429..3c22ddb41c8c8496c2eb0807bad57068d02eb1a3 100644 (file)
@@ -123,8 +123,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_avx_128_fma_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -545,8 +545,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_avx_128_fma_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 17b44f1f60740c05810d97c87eb635a3aecfa84f..8f513b354fc6ba9ab328ae7ad2efbcd82d127ebc 100644 (file)
@@ -114,8 +114,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_avx_128_fma_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -483,8 +483,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_avx_128_fma_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 43631f80998f1ef4f8905616a3f55d8d7678a559..711d363f7750174c59844be7056375225aa64a53 100644 (file)
@@ -236,8 +236,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     /* #endif */
 
index c0af7e15d5a61c374c6e32bdfeac857b8c028eb7..5a522fa5d8fdb6b1cfbcd16918ce8e093578375f 100644 (file)
@@ -128,8 +128,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_avx_256_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -606,8 +606,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_avx_256_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index f917092e370a31d473d511d5b0bcee8a128b1f16..430dbd76fdadb23badddc461e13a147d34fcf60d 100644 (file)
@@ -125,8 +125,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_avx_256_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -550,8 +550,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_avx_256_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 2f0e305488fe84e054bb01c347aa41d469fa867f..64270f9de7a29bbb2e4e1a18e2f7b2ec331e382b 100644 (file)
@@ -116,8 +116,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_avx_256_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -488,8 +488,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_avx_256_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 83f3fe36bbb179188374ad926e04f29757024bf5..ca84415be29737f726ded98d4acfdbf3560a6a5b 100644 (file)
@@ -242,8 +242,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     /* #endif */
 
index a7b1bfb5f3bd0bfa256d17446ffbbbfc09444a58..c110a8dd5bc7bd9b9fc10bd1ba466cdc00224850 100644 (file)
@@ -131,8 +131,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_avx_256_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -719,8 +719,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_avx_256_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 294cf2facbe34e6de4080581af62ac10768e5358..e3f6a8b9da9b154423bf038a49ac0e7216027b48 100644 (file)
@@ -128,8 +128,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_avx_256_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -637,8 +637,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_avx_256_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 3515aa44135fa8206a7b786410253ce9a526d2cf..f6d12ca2629edfee9fcc3422970521776276388c 100644 (file)
@@ -119,8 +119,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_avx_256_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -559,8 +559,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_avx_256_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 7ea90a5a8da2fdd45a71758326793932c542aa42..ff436836ee744e4ba27bb210b6d4e356e4fbbe23 100644 (file)
@@ -249,8 +249,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm256_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm256_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm256_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     /* #endif */
 
index dfd1c74ed3c2b8792003c232924e1479e2e25f7a..41e5ac409a3afe21843f41d17515a1eb2999a9e2 100644 (file)
@@ -105,8 +105,8 @@ nb_kernel_ElecGB_VdwBham_GeomP1P1_VF_c
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = fr->gbtab.scale;
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = fr->gbtab->scale;
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = (1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent);
 
     outeriter        = 0;
@@ -342,8 +342,8 @@ nb_kernel_ElecGB_VdwBham_GeomP1P1_F_c
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = fr->gbtab.scale;
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = fr->gbtab->scale;
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = (1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent);
 
     outeriter        = 0;
index 0770899479a629945cbe34ab5fc56beaadc6f9ea..6448df5579f8308df3b00802dc033ca2cb45130b 100644 (file)
@@ -108,8 +108,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_c
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = fr->gbtab.scale;
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = fr->gbtab->scale;
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = (1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent);
 
     outeriter        = 0;
@@ -368,8 +368,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_c
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = fr->gbtab.scale;
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = fr->gbtab->scale;
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = (1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent);
 
     outeriter        = 0;
index f38027ff065e82b86aac31224d5083a175b5ee06..48f6fdcab531a3f5c7101690fc8fc7498721a021 100644 (file)
@@ -105,8 +105,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_c
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = fr->gbtab.scale;
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = fr->gbtab->scale;
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = (1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent);
 
     outeriter        = 0;
@@ -341,8 +341,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_c
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = fr->gbtab.scale;
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = fr->gbtab->scale;
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = (1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent);
 
     outeriter        = 0;
index ea56ee7c08036b8a90d9460e203d78ceab4a147f..2fe138f669c2df6db8b97e2935a58917e653806e 100644 (file)
@@ -98,8 +98,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_c
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = fr->gbtab.scale;
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = fr->gbtab->scale;
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = (1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent);
 
     outeriter        = 0;
@@ -310,8 +310,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_c
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = fr->gbtab.scale;
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = fr->gbtab->scale;
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = (1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent);
 
     outeriter        = 0;
index 6bc27dd376026a1e69a92db70a87a54ae6ef69d2..c76fe2d097465b3ecff8c36c47bf8d773829de47 100644 (file)
@@ -39,9 +39,9 @@
 
 #include "gromacs/gmxlib/nrnb.h"
 #include "gromacs/gmxlib/nonbonded/nb_kernel.h"
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/math/vectypes.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 
 #ifdef __cplusplus
 extern "C" {
index 31e6e2681d2b08aaa373527a6ffbaedd46d49209..62d83bb2145c0c4ce5af6ea119f53b9b7e35bbd4 100644 (file)
@@ -289,8 +289,8 @@ nb_kernel_allvsallgb(t_nblist gmx_unused *     nlist,
     type                = mdatoms->typeA;
     gbfactor            = ((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     facel               = fr->epsfac;
-    GBtab               = fr->gbtab.data;
-    gbtabscale          = fr->gbtab.scale;
+    GBtab               = fr->gbtab->data;
+    gbtabscale          = fr->gbtab->scale;
     invsqrta            = fr->invsqrta;
     dvda                = fr->dvda;
     vpol                = kernel_data->energygrp_polarization;
index d336c359bdf155ad649c768c1f3e59681180daed..26634e0f34fc66467df3d0b35cd09f3259d38e8f 100644 (file)
@@ -39,9 +39,9 @@
 
 #include "gromacs/gmxlib/nrnb.h"
 #include "gromacs/gmxlib/nonbonded/nb_kernel.h"
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/math/vectypes.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 
 #ifdef __cplusplus
 extern "C" {
index 1e37f05feed201b25bf89ae6c7d7aa47e07ec887..232866afb7d60e710f6dcec81a1b0eb068f6b576 100644 (file)
@@ -236,8 +236,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = fr->gbtab.scale;
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = fr->gbtab->scale;
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = (1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent);
     /* #endif */
 
index 468c3772cfae15aff8d645ced24b74fc754fc4e3..4a55df08bbaff364512c48fea89ff893a27ed366 100644 (file)
@@ -122,8 +122,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_sparc64_hpc_ace_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = gmx_fjsp_set1_v2r8((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -524,8 +524,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_sparc64_hpc_ace_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = gmx_fjsp_set1_v2r8((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index eec9600d7ed362d5045076e963701a5d41125be9..eff8021263dd501a96161a274cd172a2a69adb81 100644 (file)
@@ -119,8 +119,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_sparc64_hpc_ace_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = gmx_fjsp_set1_v2r8((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -462,8 +462,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_sparc64_hpc_ace_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = gmx_fjsp_set1_v2r8((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 0c885d22ed221e241ccce73849217a16dff4037a..ab0c1408d18cc8198e9e5022886e2afe7e69ed8e 100644 (file)
@@ -110,8 +110,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_sparc64_hpc_ace_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = gmx_fjsp_set1_v2r8((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -411,8 +411,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_sparc64_hpc_ace_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = gmx_fjsp_set1_v2r8((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 3fcbcb6f26d937bca107cd92d40e636467db7862..08969aaafc4b812ac7af4e87a811de9eb4739e19 100644 (file)
@@ -227,8 +227,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = gmx_fjsp_set1_v2r8(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = gmx_fjsp_set1_v2r8((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     /* #endif */
 
index 1d33b738edb3f9151938484eaf98dbf5fd14f1c9..3ee22b2a6ec68f44cdbfac4abd315ae097881414 100644 (file)
@@ -123,8 +123,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_sse2_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -534,8 +534,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_sse2_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 66d20d2d90f47720bffa9b7353112095b6dffc57..df36ced65b80c1b9f4d60a4170fca13a710b3eca 100644 (file)
@@ -120,8 +120,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_sse2_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -474,8 +474,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_sse2_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index f74978371a035417a5f0de519961717534343318..17b9609bbdaf714a5edb424bd2c0e72f80183234 100644 (file)
@@ -111,8 +111,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_sse2_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -424,8 +424,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_sse2_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 08c20dda2158af3b1308af8d84e8b30e83ce8a78..74c49e9e0a1ed85001a8ed4841d123d2faff08d7 100644 (file)
@@ -229,8 +229,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     /* #endif */
 
index 236a9fbc5d8444664e5e253a1dadf3e0c5b82330..919ab10e6c2ed7f1708dc5fa25a4eb79571153b8 100644 (file)
@@ -126,8 +126,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_sse2_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -597,8 +597,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_sse2_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 9b6023464801f0782c71bbe6ddb802c38fcb40b0..fb237b3a1af19d6936aa18acd92e258fe34c24e0 100644 (file)
@@ -123,8 +123,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_sse2_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -541,8 +541,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_sse2_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 6b7373ff6aeee3e854c696d609aaf016e452b2e6..bd8fd991739765cb8bbab53bdc20090522ff1bbd 100644 (file)
@@ -114,8 +114,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_sse2_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -479,8 +479,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_sse2_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index ea0530b9c30042bf05f6390929351a42a192a603..bd3b4a7f4499cff69db1f073c2c1d7a405af42bf 100644 (file)
@@ -232,8 +232,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     /* #endif */
 
index d1622af7700599b605330674174e634eaaeab7a3..f06d13fbc89d48a301225bef8a01025c9c3632cd 100644 (file)
@@ -123,8 +123,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_sse4_1_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -534,8 +534,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_sse4_1_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 0b2532e425abbb245a5f21f692df9ac58b864cab..4a4077b13af2e856329a9899af17cb0081b2b1b5 100644 (file)
@@ -120,8 +120,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_sse4_1_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -474,8 +474,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_sse4_1_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index e22fec3ec30bb5fd24ef0b6864c97268b1502d46..d216e00a0853756c9330e05bca1c6d874bbc9109 100644 (file)
@@ -111,8 +111,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_sse4_1_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -424,8 +424,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_sse4_1_double
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index c8d051b0473b35ed21fc3a7369c75d6fb1302e7c..1d823bffbd068ddb16b910288aee55bc215554cf 100644 (file)
@@ -229,8 +229,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_pd(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_pd(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_pd((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     /* #endif */
 
index 9d569cc0982dbd730d19c585f68a0726fc2a2717..deb30b05e542c36c2160f49aa0313b261a73567a 100644 (file)
@@ -126,8 +126,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_VF_sse4_1_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -595,8 +595,8 @@ nb_kernel_ElecGB_VdwCSTab_GeomP1P1_F_sse4_1_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 2a10f694f4bfec37cd4e5acf1230e92f590b748f..18009b0d10ad6bff7ead5012412c5822ddd34c25 100644 (file)
@@ -123,8 +123,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_VF_sse4_1_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -539,8 +539,8 @@ nb_kernel_ElecGB_VdwLJ_GeomP1P1_F_sse4_1_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 410afa94102e2f8a5041dc3a0a9ef04f68ddb9a8..6548c729609b9e0043af4c8c64845eeafe38f049 100644 (file)
@@ -114,8 +114,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_VF_sse4_1_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
@@ -477,8 +477,8 @@ nb_kernel_ElecGB_VdwNone_GeomP1P1_F_sse4_1_single
 
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
 
     /* Avoid stupid compiler warnings */
index 1a805a286c44251129d7dfff0819cb871700cccc..fab6aceef1a067bff299e78959a5009b41b57880 100644 (file)
@@ -232,8 +232,8 @@ void
     /* #if KERNEL_ELEC=='GeneralizedBorn' */
     invsqrta         = fr->invsqrta;
     dvda             = fr->dvda;
-    gbtabscale       = _mm_set1_ps(fr->gbtab.scale);
-    gbtab            = fr->gbtab.data;
+    gbtabscale       = _mm_set1_ps(fr->gbtab->scale);
+    gbtab            = fr->gbtab->data;
     gbinvepsdiff     = _mm_set1_ps((1.0/fr->epsilon_r) - (1.0/fr->gb_epsilon_solvent));
     /* #endif */
 
index c0fb66726debf7e55a3ee80c6270c63406cb047a..c462b8fc93665b5d84ac120da80d56abe31c224e 100644 (file)
 #include "gromacs/gmxlib/nonbonded/nb_generic_cg.h"
 #include "gromacs/gmxlib/nonbonded/nb_kernel.h"
 #include "gromacs/legacyheaders/types/forcerec.h"
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/listed-forces/bonded.h"
 #include "gromacs/math/utilities.h"
 #include "gromacs/math/vec.h"
 #include "gromacs/mdtypes/md_enums.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/pbcutil/ishift.h"
 #include "gromacs/pbcutil/mshift.h"
 #include "gromacs/pbcutil/pbc.h"
@@ -377,9 +377,9 @@ void do_nonbonded(t_forcerec *fr,
         /* cppcheck-suppress duplicateExpression */
         assert(etiNR == 3);
 
-        kernel_data.table_elec              = &nblists->table_elec;
-        kernel_data.table_vdw               = &nblists->table_vdw;
-        kernel_data.table_elec_vdw          = &nblists->table_elec_vdw;
+        kernel_data.table_elec              = nblists->table_elec;
+        kernel_data.table_vdw               = nblists->table_vdw;
+        kernel_data.table_elec_vdw          = nblists->table_elec_vdw;
 
         for (range = 0; range < 2; range++)
         {
index 1621da665f31bc8308b0110979e7f670cb584e3c..ca4e75b55213b125c39ad1c263e0ea8c053c41df 100644 (file)
@@ -41,9 +41,9 @@
 
 #include "gromacs/gmxlib/nrnb.h"
 #include "gromacs/legacyheaders/types/forcerec.h"
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/math/vectypes.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/topology/block.h"
 #include "gromacs/utility/basedefinitions.h"
 
index 212bc919d30f696cb684a7ddc8457000dacf5808..83064ac61ca97b113071241ee2ec81c21c1ac31d 100644 (file)
@@ -71,7 +71,6 @@
 #include "gromacs/gmxpreprocess/vsite_parm.h"
 #include "gromacs/imd/imd.h"
 #include "gromacs/legacyheaders/types/ifunc.h"
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/math/vec.h"
 #include "gromacs/mdlib/calc_verletbuf.h"
 #include "gromacs/mdlib/compute_io.h"
@@ -79,6 +78,7 @@
 #include "gromacs/mdlib/perf_est.h"
 #include "gromacs/mdtypes/inputrec.h"
 #include "gromacs/mdtypes/md_enums.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/mdtypes/state.h"
 #include "gromacs/pbcutil/boxutilities.h"
 #include "gromacs/pbcutil/pbc.h"
index ad77299783a804902a055b0338cc583374ce0661..8e847d9f7e45273267d304da9f61441cb578610a 100644 (file)
@@ -41,8 +41,6 @@
 #include "gromacs/legacyheaders/types/genborn.h"
 #include "gromacs/legacyheaders/types/hw_info.h"
 #include "gromacs/legacyheaders/types/interaction_const.h"
-#include "gromacs/legacyheaders/types/nblist.h"
-#include "gromacs/legacyheaders/types/ns.h"
 #include "gromacs/legacyheaders/types/qmmmrec.h"
 #include "gromacs/math/vectypes.h"
 #include "gromacs/mdtypes/inputrec.h"
@@ -58,79 +56,13 @@ extern "C" {
 #endif
 
 /* Abstract type for PME that is defined only in the routine that use them. */
+struct gmx_ns_t;
 struct gmx_pme_t;
 struct nonbonded_verlet_t;
 struct bonded_threading_t;
+struct t_forcetable;
 struct t_nblist;
-
-/* The interactions contained in a (possibly merged) table
- * for computing electrostatic, VDW repulsion and/or VDW dispersion
- * contributions.
- */
-enum gmx_table_interaction
-{
-    GMX_TABLE_INTERACTION_ELEC,
-    GMX_TABLE_INTERACTION_VDWREP_VDWDISP,
-    GMX_TABLE_INTERACTION_VDWEXPREP_VDWDISP,
-    GMX_TABLE_INTERACTION_VDWDISP,
-    GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP,
-    GMX_TABLE_INTERACTION_ELEC_VDWEXPREP_VDWDISP,
-    GMX_TABLE_INTERACTION_ELEC_VDWDISP,
-    GMX_TABLE_INTERACTION_NR
-};
-
-/* Different formats for table data. Cubic spline tables are typically stored
- * with the four Y,F,G,H intermediate values (check tables.c for format), which
- * makes it easy to load with a single 4-way SIMD instruction too.
- * Linear tables only need one value per table point, or two if both V and F
- * are calculated. However, with SIMD instructions this makes the loads unaligned,
- * and in that case we store the data as F, D=F(i+1)-F(i), V, and then a blank value,
- * which again makes it possible to load as a single instruction.
- */
-enum gmx_table_format
-{
-    GMX_TABLE_FORMAT_CUBICSPLINE_YFGH,
-    GMX_TABLE_FORMAT_LINEAR_VF,
-    GMX_TABLE_FORMAT_LINEAR_V,
-    GMX_TABLE_FORMAT_LINEAR_F,
-    GMX_TABLE_FORMAT_LINEAR_FDV0,
-    GMX_TABLE_FORMAT_NR
-};
-
-
-/* Structure describing the data in a single table */
-typedef struct
-{
-    enum gmx_table_interaction  interaction; /* Types of interactions stored in this table */
-    enum gmx_table_format       format;      /* Interpolation type and data format */
-
-    real                        r;           /* range of the table */
-    int                         n;           /* n+1 is the number of table points */
-    real                        scale;       /* distance (nm) between two table points */
-    real *                      data;        /* the actual table data */
-
-    /* Some information about the table layout. This can also be derived from the interpolation
-     * type and the table interactions, but it is convenient to have here for sanity checks, and it makes it
-     * much easier to access the tables in the nonbonded kernels when we can set the data from variables.
-     * It is always true that stride = formatsize*ninteractions
-     */
-    int                         formatsize;    /* Number of fp variables for each table point (1 for F, 2 for VF, 4 for YFGH, etc.) */
-    int                         ninteractions; /* Number of interactions in table, 1 for coul-only, 3 for coul+rep+disp. */
-    int                         stride;        /* Distance to next table point (number of fp variables per table point in total) */
-} t_forcetable;
-
-typedef struct
-{
-    t_forcetable   table_elec;
-    t_forcetable   table_vdw;
-    t_forcetable   table_elec_vdw;
-
-    /* The actual neighbor lists, short and long range, see enum above
-     * for definition of neighborlist indices.
-     */
-    t_nblist nlist_sr[eNL_NR];
-    t_nblist nlist_lr[eNL_NR];
-} t_nblists;
+struct t_nblists;
 
 /* macros for the cginfo data in forcerec
  *
@@ -302,10 +234,10 @@ typedef struct t_forcerec {
     real fudgeQQ;
 
     /* Table stuff */
-    gmx_bool     bcoultab;
-    gmx_bool     bvdwtab;
+    gmx_bool             bcoultab;
+    gmx_bool             bvdwtab;
     /* The normal tables are in the nblists struct(s) below */
-    t_forcetable tab14; /* for 1-4 interactions only */
+    struct t_forcetable *tab14; /* for 1-4 interactions only */
 
     /* PPPM & Shifting stuff */
     int   coulomb_modifier;
@@ -345,17 +277,17 @@ typedef struct t_forcerec {
     rvec        *shift_vec;
 
     /* The neighborlists including tables */
-    int                        nnblists;
-    int                       *gid2nblists;
-    t_nblists                 *nblists;
+    int                               nnblists;
+    int                              *gid2nblists;
+    struct t_nblists                 *nblists;
 
-    int                        cutoff_scheme; /* group- or Verlet-style cutoff */
-    gmx_bool                   bNonbonded;    /* true if nonbonded calculations are *not* turned off */
-    struct nonbonded_verlet_t *nbv;
+    int                               cutoff_scheme; /* group- or Verlet-style cutoff */
+    gmx_bool                          bNonbonded;    /* true if nonbonded calculations are *not* turned off */
+    struct nonbonded_verlet_t        *nbv;
 
-    /* The wall tables (if used) */
-    int            nwall;
-    t_forcetable **wall_tab;
+    /* The wall tables (if used). A 2D array of pointers to tables. */
+    int                    nwall;
+    struct t_forcetable ***wall_tab;
 
     /* The number of charge groups participating in do_force_lowlevel */
     int ncg_force;
@@ -417,23 +349,23 @@ typedef struct t_forcerec {
     real fc_stepsize;
 
     /* Generalized born implicit solvent */
-    gmx_bool       bGB;
+    gmx_bool              bGB;
     /* Generalized born stuff */
-    real           gb_epsilon_solvent;
+    real                  gb_epsilon_solvent;
     /* Table data for GB */
-    t_forcetable   gbtab;
+    struct t_forcetable  *gbtab;
     /* VdW radius for each atomtype (dim is thus ntype) */
-    real          *atype_radius;
+    real                 *atype_radius;
     /* Effective radius (derived from effective volume) for each type */
-    real          *atype_vol;
+    real                 *atype_vol;
     /* Implicit solvent - surface tension for each atomtype */
-    real          *atype_surftens;
+    real                 *atype_surftens;
     /* Implicit solvent - radius for GB calculation */
-    real          *atype_gb_radius;
+    real                 *atype_gb_radius;
     /* Implicit solvent - overlap for HCT model */
-    real          *atype_S_hct;
+    real                 *atype_S_hct;
     /* Generalized born interaction data */
-    gmx_genborn_t *born;
+    gmx_genborn_t        *born;
 
     /* Table scale for GB */
     real gbtabscale;
@@ -443,9 +375,9 @@ typedef struct t_forcerec {
      * (for use in the SA calculation) and the lr list will contain
      * for each atom all atoms 1-4 or greater (for use in the GB calculation)
      */
-    t_nblist gblist_sr;
-    t_nblist gblist_lr;
-    t_nblist gblist;
+    struct t_nblist *gblist_sr;
+    struct t_nblist *gblist_lr;
+    struct t_nblist *gblist;
 
     /* Inverse square root of the Born radii for implicit solvent */
     real *invsqrta;
@@ -464,14 +396,14 @@ typedef struct t_forcerec {
     gmx_bool n_tpi;
 
     /* Neighbor searching stuff */
-    gmx_ns_t ns;
+    struct gmx_ns_t *ns;
 
     /* QMMM stuff */
     gmx_bool         bQMMM;
     t_QMMMrec       *qr;
 
     /* QM-MM neighborlists */
-    t_nblist QMMMlist;
+    struct t_nblist        *QMMMlist;
 
     /* Limit for printing large forces, negative is don't print */
     real print_force;
diff --git a/src/gromacs/legacyheaders/types/ns.h b/src/gromacs/legacyheaders/types/ns.h
deleted file mode 100644 (file)
index 699941b..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2008, The GROMACS development team.
- * Copyright (c) 2010,2014,2015, by the GROMACS development team, led by
- * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
- * and including many others, as listed in the AUTHORS file in the
- * top-level source directory and at http://www.gromacs.org.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-
-#ifndef GMX_LEGACYHEADERS_TYPES_NS_H
-#define GMX_LEGACYHEADERS_TYPES_NS_H
-
-#include "gromacs/legacyheaders/types/nblist.h"
-#include "gromacs/utility/basedefinitions.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct t_grid;
-
-enum {
-    eNL_VDWQQ, eNL_VDW, eNL_QQ,
-    eNL_VDWQQ_FREE, eNL_VDW_FREE, eNL_QQ_FREE,
-    eNL_VDWQQ_WATER, eNL_QQ_WATER,
-    eNL_VDWQQ_WATERWATER, eNL_QQ_WATERWATER,
-    eNL_NR
-};
-
-#define MAX_CG 1024
-
-typedef struct {
-    int     ncg;
-    int     nj;
-    int     jcg[MAX_CG];
-} t_ns_buf;
-
-typedef struct gmx_ns_t {
-    gmx_bool      bCGlist;
-    int          *simple_aaj;
-    struct t_grid*grid;
-    t_excl       *bexcl;
-    gmx_bool     *bHaveVdW;
-    t_ns_buf    **ns_buf;
-    gmx_bool     *bExcludeAlleg;
-    int           nra_alloc;
-    int           cg_alloc;
-    int         **nl_sr;
-    int          *nsr;
-    int         **nl_lr_ljc;
-    int         **nl_lr_one;
-    int          *nlr_ljc;
-    int          *nlr_one;
-    /* the nblists should probably go in here */
-    gmx_bool      nblist_initialized; /* has the nblist been initialized?  */
-    int           dump_nl;            /* neighbour list dump level (from env. var. GMX_DUMP_NL)*/
-} gmx_ns_t;
-
-#ifdef __cplusplus
-}
-#endif
-#endif
index 437327d19afe07603ad4aeac793d8a0d137ed0ba..57deab281cb43a65e1e5cc86dcb119de8e597ae1 100644 (file)
@@ -50,6 +50,7 @@
 #include "gromacs/legacyheaders/types/group.h"
 #include "gromacs/math/vec.h"
 #include "gromacs/mdtypes/md_enums.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/pbcutil/ishift.h"
 #include "gromacs/pbcutil/mshift.h"
 #include "gromacs/pbcutil/pbc.h"
@@ -411,7 +412,7 @@ do_pairs(int ftype, int nbonds,
        the table layout, which should be made explicit in future
        cleanup. */
     GMX_ASSERT(etiNR == 3, "Pair-interaction code that uses GROMACS interaction tables supports exactly 3 tables");
-    GMX_ASSERT(fr->tab14.interaction == GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP,
+    GMX_ASSERT(fr->tab14->interaction == GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP,
                "Pair interaction kernels need a table with Coulomb, repulsion and dispersion entries");
 
     bFreeEnergy = FALSE;
@@ -471,13 +472,13 @@ do_pairs(int ftype, int nbonds,
         }
         r2           = norm2(dx);
 
-        if (r2 >= fr->tab14.r*fr->tab14.r)
+        if (r2 >= fr->tab14->r*fr->tab14->r)
         {
             /* This check isn't race free. But it doesn't matter because if a race occurs the only
              * disadvantage is that the warning is printed twice */
             if (warned_rlimit == FALSE)
             {
-                warning_rlimit(x, ai, aj, global_atom_index, sqrt(r2), fr->tab14.r);
+                warning_rlimit(x, ai, aj, global_atom_index, sqrt(r2), fr->tab14->r);
                 warned_rlimit = TRUE;
             }
             continue;
@@ -491,7 +492,7 @@ do_pairs(int ftype, int nbonds,
             c12B             = iparams[itype].lj14.c12B*12.0;
 
             fscal            = free_energy_evaluate_single(r2, fr->sc_r_power, fr->sc_alphacoul, fr->sc_alphavdw,
-                                                           fr->tab14.scale, fr->tab14.data, fr->tab14.stride,
+                                                           fr->tab14->scale, fr->tab14->data, fr->tab14->stride,
                                                            qq, c6, c12, qqB, c6B, c12B,
                                                            LFC, LFV, DLF, lfac_coul, lfac_vdw, dlfac_coul, dlfac_vdw,
                                                            fr->sc_sigma6_def, fr->sc_sigma6_min, sigma2_def, sigma2_min, &velec, &vvdw, dvdl);
@@ -499,7 +500,7 @@ do_pairs(int ftype, int nbonds,
         else
         {
             /* Evaluate tabulated interaction without free energy */
-            fscal            = evaluate_single(r2, fr->tab14.scale, fr->tab14.data, fr->tab14.stride, qq, c6, c12, &velec, &vvdw);
+            fscal            = evaluate_single(r2, fr->tab14->scale, fr->tab14->data, fr->tab14->stride, qq, c6, c12, &velec, &vvdw);
         }
 
         energygrp_elec[gid]  += velec;
index f11fb4faea3355bbbd19bb6a0fb2711d742bc2c1..33b29f7b70680a1af936010401946fe93f54a4c9 100644 (file)
@@ -85,7 +85,7 @@ void ns(FILE              *fp,
     int     nsearch;
 
 
-    if (!fr->ns.nblist_initialized)
+    if (!fr->ns->nblist_initialized)
     {
         init_neighbor_list(fp, fr, md->homenr);
     }
@@ -107,9 +107,9 @@ void ns(FILE              *fp,
        count_nb(cr,nsb,&(top->blocks[ebCGS]),nns,fr->nlr,
        &(top->idef),opts->ngener);
      */
-    if (fr->ns.dump_nl > 0)
+    if (fr->ns->dump_nl > 0)
     {
-        dump_nblist(fp, cr, fr, fr->ns.dump_nl);
+        dump_nblist(fp, cr, fr, fr->ns->dump_nl);
     }
 }
 
@@ -219,7 +219,7 @@ void do_force_lowlevel(t_forcerec *fr,      t_inputrec *ir,
 
         if (bBornRadii)
         {
-            calc_gb_rad(cr, fr, ir, top, x, &(fr->gblist), born, md, nrnb);
+            calc_gb_rad(cr, fr, ir, top, x, fr->gblist, born, md, nrnb);
         }
 
         wallcycle_sub_stop(wcycle, ewcsNONBONDED);
index 2b81d1c82a45b0a3afe2397ca63af0dfb039dc49..b565f9063c53a02ae4de11b3da9c28d35fc0b22d 100644 (file)
@@ -1314,35 +1314,37 @@ static void make_nbf_tables(FILE *fp,
      * the table data to be aligned to 16-byte. The pointers could be freed
      * but currently aren't.
      */
-    nbl->table_elec.interaction   = GMX_TABLE_INTERACTION_ELEC;
-    nbl->table_elec.format        = nbl->table_elec_vdw.format;
-    nbl->table_elec.r             = nbl->table_elec_vdw.r;
-    nbl->table_elec.n             = nbl->table_elec_vdw.n;
-    nbl->table_elec.scale         = nbl->table_elec_vdw.scale;
-    nbl->table_elec.formatsize    = nbl->table_elec_vdw.formatsize;
-    nbl->table_elec.ninteractions = 1;
-    nbl->table_elec.stride        = nbl->table_elec.formatsize * nbl->table_elec.ninteractions;
-    snew_aligned(nbl->table_elec.data, nbl->table_elec.stride*(nbl->table_elec.n+1), 32);
-
-    nbl->table_vdw.interaction   = GMX_TABLE_INTERACTION_VDWREP_VDWDISP;
-    nbl->table_vdw.format        = nbl->table_elec_vdw.format;
-    nbl->table_vdw.r             = nbl->table_elec_vdw.r;
-    nbl->table_vdw.n             = nbl->table_elec_vdw.n;
-    nbl->table_vdw.scale         = nbl->table_elec_vdw.scale;
-    nbl->table_vdw.formatsize    = nbl->table_elec_vdw.formatsize;
-    nbl->table_vdw.ninteractions = 2;
-    nbl->table_vdw.stride        = nbl->table_vdw.formatsize * nbl->table_vdw.ninteractions;
-    snew_aligned(nbl->table_vdw.data, nbl->table_vdw.stride*(nbl->table_vdw.n+1), 32);
-
-    for (i = 0; i <= nbl->table_elec_vdw.n; i++)
+    snew(nbl->table_elec, 1);
+    nbl->table_elec->interaction   = GMX_TABLE_INTERACTION_ELEC;
+    nbl->table_elec->format        = nbl->table_elec_vdw->format;
+    nbl->table_elec->r             = nbl->table_elec_vdw->r;
+    nbl->table_elec->n             = nbl->table_elec_vdw->n;
+    nbl->table_elec->scale         = nbl->table_elec_vdw->scale;
+    nbl->table_elec->formatsize    = nbl->table_elec_vdw->formatsize;
+    nbl->table_elec->ninteractions = 1;
+    nbl->table_elec->stride        = nbl->table_elec->formatsize * nbl->table_elec->ninteractions;
+    snew_aligned(nbl->table_elec->data, nbl->table_elec->stride*(nbl->table_elec->n+1), 32);
+
+    snew(nbl->table_vdw, 1);
+    nbl->table_vdw->interaction   = GMX_TABLE_INTERACTION_VDWREP_VDWDISP;
+    nbl->table_vdw->format        = nbl->table_elec_vdw->format;
+    nbl->table_vdw->r             = nbl->table_elec_vdw->r;
+    nbl->table_vdw->n             = nbl->table_elec_vdw->n;
+    nbl->table_vdw->scale         = nbl->table_elec_vdw->scale;
+    nbl->table_vdw->formatsize    = nbl->table_elec_vdw->formatsize;
+    nbl->table_vdw->ninteractions = 2;
+    nbl->table_vdw->stride        = nbl->table_vdw->formatsize * nbl->table_vdw->ninteractions;
+    snew_aligned(nbl->table_vdw->data, nbl->table_vdw->stride*(nbl->table_vdw->n+1), 32);
+
+    for (i = 0; i <= nbl->table_elec_vdw->n; i++)
     {
         for (j = 0; j < 4; j++)
         {
-            nbl->table_elec.data[4*i+j] = nbl->table_elec_vdw.data[12*i+j];
+            nbl->table_elec->data[4*i+j] = nbl->table_elec_vdw->data[12*i+j];
         }
         for (j = 0; j < 8; j++)
         {
-            nbl->table_vdw.data[8*i+j] = nbl->table_elec_vdw.data[12*i+4+j];
+            nbl->table_vdw->data[8*i+j] = nbl->table_elec_vdw->data[12*i+4+j];
         }
     }
 }
@@ -3141,7 +3143,8 @@ void init_forcerec(FILE              *fp,
     fr->timesteps = 0;
 
     /* Initialize neighbor search */
-    init_ns(fp, cr, &fr->ns, fr, mtop);
+    snew(fr->ns, 1);
+    init_ns(fp, cr, fr->ns, fr, mtop);
 
     if (cr->duty & DUTY_PP)
     {
@@ -3193,7 +3196,7 @@ void pr_forcerec(FILE *fp, t_forcerec *fr)
        pr_int(fp,fr->hcg);*/
     for (i = 0; i < fr->nnblists; i++)
     {
-        pr_int(fp, fr->nblists[i].table_elec_vdw.n);
+        pr_int(fp, fr->nblists[i].table_elec_vdw->n);
     }
     pr_real(fp, fr->rcoulomb_switch);
     pr_real(fp, fr->rcoulomb);
index 39ea3cd7e6972bf768dfdda15ccd1196b5d173c5..fa3d0c9f15deaaabf7712ddd1d63da4a36826497 100644 (file)
@@ -54,6 +54,7 @@
 #include "gromacs/math/vec.h"
 #include "gromacs/mdlib/genborn_allvsall.h"
 #include "gromacs/mdtypes/md_enums.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/pbcutil/ishift.h"
 #include "gromacs/pbcutil/mshift.h"
 #include "gromacs/pbcutil/pbc.h"
@@ -271,7 +272,8 @@ int init_gb(gmx_genborn_t **p_born,
     /* snew(born->dasurf,natoms); */
 
     /* Initialize the gb neighbourlist */
-    init_gb_nblist(natoms, &(fr->gblist));
+    snew(fr->gblist, 1);
+    init_gb_nblist(natoms, fr->gblist);
 
     /* Do the Vsites exclusions (if any) */
     for (i = 0; i < natoms; i++)
@@ -1361,7 +1363,7 @@ calc_gb_forces(t_commrec *cr, t_mdatoms *md, gmx_genborn_t *born, gmx_localtop_t
 
     /* Calculate the bonded GB-interactions using either table or analytical formula */
     enerd->term[F_GBPOL]       += gb_bonds_tab(x, f, fr->fshift, md->chargeA, &(fr->gbtabscale),
-                                               fr->invsqrta, fr->dvda, fr->gbtab.data, idef, born->epsilon_r, born->gb_epsilon_solvent, fr->epsfac, pbc_null, graph);
+                                               fr->invsqrta, fr->dvda, fr->gbtab->data, idef, born->epsilon_r, born->gb_epsilon_solvent, fr->epsfac, pbc_null, graph);
 
     /* Calculate self corrections to the GB energies - currently only A state used! (FIXME) */
     enerd->term[F_GBPOL]       += calc_gb_selfcorrections(cr, born->nr, md->chargeA, born, fr->dvda, fr->epsfac);
@@ -1382,13 +1384,13 @@ calc_gb_forces(t_commrec *cr, t_mdatoms *md, gmx_genborn_t *born, gmx_localtop_t
         return;
     }
 
-    calc_gb_chainrule(fr->natoms_force, &(fr->gblist), fr->dadx, fr->dvda,
+    calc_gb_chainrule(fr->natoms_force, fr->gblist, fr->dadx, fr->dvda,
                       x, f, fr->fshift, fr->shift_vec, gb_algorithm, born);
 
     if (!fr->bAllvsAll)
     {
         /* 9 flops for outer loop, 15 for inner */
-        inc_nrnb(nrnb, eNR_BORN_CHAINRULE, fr->gblist.nri*9+fr->gblist.nrj*15);
+        inc_nrnb(nrnb, eNR_BORN_CHAINRULE, fr->gblist->nri*9+fr->gblist->nrj*15);
     }
 }
 
@@ -1563,10 +1565,10 @@ int make_gb_nblist(t_commrec *cr, int gb_algorithm,
     }
 
     /* Zero out some counters */
-    fr->gblist.nri = 0;
-    fr->gblist.nrj = 0;
+    fr->gblist->nri = 0;
+    fr->gblist->nrj = 0;
 
-    fr->gblist.jindex[0] = fr->gblist.nri;
+    fr->gblist->jindex[0] = fr->gblist->nri;
 
     for (i = 0; i < fr->natoms_force; i++)
     {
@@ -1577,23 +1579,23 @@ int make_gb_nblist(t_commrec *cr, int gb_algorithm,
             /* Only add those atoms that actually have neighbours */
             if (born->use[i] != 0)
             {
-                fr->gblist.iinr[fr->gblist.nri]  = i;
-                fr->gblist.shift[fr->gblist.nri] = list->shift;
-                fr->gblist.nri++;
+                fr->gblist->iinr[fr->gblist->nri]  = i;
+                fr->gblist->shift[fr->gblist->nri] = list->shift;
+                fr->gblist->nri++;
 
                 for (k = 0; k < list->naj; k++)
                 {
                     /* Memory allocation for jjnr */
-                    if (fr->gblist.nrj >= fr->gblist.maxnrj)
+                    if (fr->gblist->nrj >= fr->gblist->maxnrj)
                     {
-                        fr->gblist.maxnrj += over_alloc_large(fr->gblist.maxnrj);
+                        fr->gblist->maxnrj += over_alloc_large(fr->gblist->maxnrj);
 
                         if (debug)
                         {
-                            fprintf(debug, "Increasing GB neighbourlist j size to %d\n", fr->gblist.maxnrj);
+                            fprintf(debug, "Increasing GB neighbourlist j size to %d\n", fr->gblist->maxnrj);
                         }
 
-                        srenew(fr->gblist.jjnr, fr->gblist.maxnrj);
+                        srenew(fr->gblist->jjnr, fr->gblist->maxnrj);
                     }
 
                     /* Put in list */
@@ -1601,10 +1603,10 @@ int make_gb_nblist(t_commrec *cr, int gb_algorithm,
                     {
                         gmx_incons("i == list->aj[k]");
                     }
-                    fr->gblist.jjnr[fr->gblist.nrj++] = list->aj[k];
+                    fr->gblist->jjnr[fr->gblist->nrj++] = list->aj[k];
                 }
 
-                fr->gblist.jindex[fr->gblist.nri] = fr->gblist.nrj;
+                fr->gblist->jindex[fr->gblist->nri] = fr->gblist->nrj;
             }
         }
     }
index 09163178a358aa1f5e7bc2cab50cf0763c35069b..c5c39319f3c2090f47cd7c855509d895dbdbfa86 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014,2015, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -40,8 +40,8 @@
 
 #include "thread_mpi/atomic.h"
 
-#include "gromacs/legacyheaders/types/nblist.h"
 #include "gromacs/math/vectypes.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/utility/basedefinitions.h"
 #include "gromacs/utility/bitmask.h"
 #include "gromacs/utility/real.h"
index b5610d8785cb03daf5746d3f42949b24f08ea54d..560684cbe1c2197bf7af404749b3d581b26bf170 100644 (file)
@@ -237,8 +237,8 @@ void init_neighbor_list(FILE *log, t_forcerec *fr, int homenr)
     type                     = GMX_NBLIST_INTERACTION_STANDARD;
     bElecAndVdwSwitchDiffers = ( (fr->rcoulomb_switch != fr->rvdw_switch) || (fr->rcoulomb != fr->rvdw));
 
-    fr->ns.bCGlist = (getenv("GMX_NBLISTCG") != 0);
-    if (!fr->ns.bCGlist)
+    fr->ns->bCGlist = (getenv("GMX_NBLISTCG") != 0);
+    if (!fr->ns->bCGlist)
     {
         igeometry_def = GMX_NBLIST_GEOMETRY_PARTICLE_PARTICLE;
     }
@@ -307,7 +307,11 @@ void init_neighbor_list(FILE *log, t_forcerec *fr, int homenr)
     /* QMMM MM list */
     if (fr->bQMMM && fr->qr->QMMMscheme != eQMMMschemeoniom)
     {
-        init_nblist(log, &fr->QMMMlist, NULL,
+        if (NULL == fr->QMMMlist)
+        {
+            snew(fr->QMMMlist, 1);
+        }
+        init_nblist(log, fr->QMMMlist, NULL,
                     maxsr, maxlr, 0, 0, ielec, ielecmod, GMX_NBLIST_GEOMETRY_PARTICLE_PARTICLE, GMX_NBLIST_INTERACTION_STANDARD, bElecAndVdwSwitchDiffers);
     }
 
@@ -316,7 +320,7 @@ void init_neighbor_list(FILE *log, t_forcerec *fr, int homenr)
         fprintf(log, "\n");
     }
 
-    fr->ns.nblist_initialized = TRUE;
+    fr->ns->nblist_initialized = TRUE;
 }
 
 static void reset_nblist(t_nblist *nl)
@@ -336,7 +340,7 @@ static void reset_neighbor_lists(t_forcerec *fr, gmx_bool bResetSR, gmx_bool bRe
     if (fr->bQMMM)
     {
         /* only reset the short-range nblist */
-        reset_nblist(&(fr->QMMMlist));
+        reset_nblist(fr->QMMMlist);
     }
 
     for (n = 0; n < fr->nnblists; n++)
@@ -461,7 +465,7 @@ static gmx_inline void close_neighbor_lists(t_forcerec *fr, gmx_bool bMakeQMMMnb
 
     if (bMakeQMMMnblist)
     {
-        close_nblist(&(fr->QMMMlist));
+        close_nblist(fr->QMMMlist);
     }
 
     for (n = 0; n < fr->nnblists; n++)
@@ -1104,7 +1108,7 @@ put_in_list_qmmm(gmx_bool gmx_unused              bHaveVdW[],
     /* Get the i charge group info */
     igid   = GET_CGINFO_GID(fr->cginfo[icg]);
 
-    coul = &fr->QMMMlist;
+    coul = fr->QMMMlist;
 
     /* Loop over atoms in the ith charge group */
     for (i = 0; i < nicg; i++)
@@ -1798,7 +1802,7 @@ static int nsgrid_core(t_commrec *cr, t_forcerec *fr,
     gmx_bool      bDomDec, bTriclinicX, bTriclinicY;
     ivec          ncpddc;
 
-    ns = &fr->ns;
+    ns = fr->ns;
 
     bDomDec = DOMAINDECOMP(cr);
     dd      = cr->dd;
@@ -2328,7 +2332,7 @@ int search_neighbours(FILE *log, t_forcerec *fr,
     gmx_domdec_zones_t *dd_zones;
     put_in_list_t      *put_in_list;
 
-    ns = &fr->ns;
+    ns = fr->ns;
 
     /* Set some local variables */
     bGrid = fr->bGrid;
@@ -2417,7 +2421,7 @@ int search_neighbours(FILE *log, t_forcerec *fr,
         fill_grid(NULL, ns->grid, fr->hcg, fr->hcg-1, fr->hcg, fr->cg_cm);
     }
 
-    if (!fr->ns.bCGlist)
+    if (!fr->ns->bCGlist)
     {
         put_in_list = put_in_list_at;
     }
index 364be043ce1b85c74f6ead2a4ed46f90eeadd2a6..d120cd437661616438ae156d3d6bbef434205fa3 100644 (file)
@@ -60,6 +60,7 @@
 #include "gromacs/mdlib/ns.h"
 #include "gromacs/mdtypes/md_enums.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/pbcutil/ishift.h"
 #include "gromacs/pbcutil/pbc.h"
 #include "gromacs/topology/mtop_util.h"
@@ -780,7 +781,7 @@ void update_QMMMrec(t_commrec      *cr,
     t_QMMMrec
        *qr;
     t_nblist
-        QMMMlist;
+       *QMMMlist;
     rvec
         dx, crd;
     t_QMrec
@@ -831,18 +832,18 @@ void update_QMMMrec(t_commrec      *cr,
          * the shifts are used for computing virial of the QM/MM particles.
          */
         qm = qr->qm[0]; /* in case of normal QMMM, there is only one group */
-        snew(qm_i_particles, QMMMlist.nri);
-        if (QMMMlist.nri)
+        snew(qm_i_particles, QMMMlist->nri);
+        if (QMMMlist->nri)
         {
             qm_i_particles[0].shift = XYZ2IS(0, 0, 0);
-            for (i = 0; i < QMMMlist.nri; i++)
+            for (i = 0; i < QMMMlist->nri; i++)
             {
-                qm_i_particles[i].j     = QMMMlist.iinr[i];
+                qm_i_particles[i].j     = QMMMlist->iinr[i];
 
                 if (i)
                 {
-                    qm_i_particles[i].shift = pbc_dx_aiuc(&pbc, x[QMMMlist.iinr[0]],
-                                                          x[QMMMlist.iinr[i]], dx);
+                    qm_i_particles[i].shift = pbc_dx_aiuc(&pbc, x[QMMMlist->iinr[0]],
+                                                          x[QMMMlist->iinr[i]], dx);
 
                 }
                 /* However, since nri >= nrQMatoms, we do a quicksort, and throw
@@ -854,12 +855,12 @@ void update_QMMMrec(t_commrec      *cr,
                  * the QM i-particle and store them.
                  */
 
-                crd[0] = IS2X(QMMMlist.shift[i]) + IS2X(qm_i_particles[i].shift);
-                crd[1] = IS2Y(QMMMlist.shift[i]) + IS2Y(qm_i_particles[i].shift);
-                crd[2] = IS2Z(QMMMlist.shift[i]) + IS2Z(qm_i_particles[i].shift);
+                crd[0] = IS2X(QMMMlist->shift[i]) + IS2X(qm_i_particles[i].shift);
+                crd[1] = IS2Y(QMMMlist->shift[i]) + IS2Y(qm_i_particles[i].shift);
+                crd[2] = IS2Z(QMMMlist->shift[i]) + IS2Z(qm_i_particles[i].shift);
                 is     = static_cast<int>(XYZ2IS(crd[0], crd[1], crd[2]));
-                for (j = QMMMlist.jindex[i];
-                     j < QMMMlist.jindex[i+1];
+                for (j = QMMMlist->jindex[i];
+                     j < QMMMlist->jindex[i+1];
                      j++)
                 {
                     if (mm_nr >= mm_max)
@@ -868,7 +869,7 @@ void update_QMMMrec(t_commrec      *cr,
                         srenew(mm_j_particles, mm_max);
                     }
 
-                    mm_j_particles[mm_nr].j     = QMMMlist.jjnr[j];
+                    mm_j_particles[mm_nr].j     = QMMMlist->jjnr[j];
                     mm_j_particles[mm_nr].shift = is;
                     mm_nr++;
                 }
@@ -878,7 +879,7 @@ void update_QMMMrec(t_commrec      *cr,
 
 
 
-            qsort(qm_i_particles, QMMMlist.nri,
+            qsort(qm_i_particles, QMMMlist->nri,
                   (size_t)sizeof(qm_i_particles[0]),
                   struct_comp);
             /* The mm_j_particles argument to qsort is not allowed to be NULL */
@@ -893,7 +894,7 @@ void update_QMMMrec(t_commrec      *cr,
              * here matches the one of QMindex already.
              */
             j = 0;
-            for (i = 0; i < QMMMlist.nri; i++)
+            for (i = 0; i < QMMMlist->nri; i++)
             {
                 if (i == 0 || qm_i_particles[i].j != qm_i_particles[i-1].j)
                 {
index f66d4e18aae00eb0c16131cff66a1c5504ea7bcc..58f3757c2463b77630fe79f86aff86a4a826481e 100644 (file)
@@ -2222,10 +2222,10 @@ void calc_enervirdiff(FILE *fplog, int eDispCorr, t_forcerec *fr)
             /* TODO This code depends on the logic in tables.c that
                constructs the table layout, which should be made
                explicit in future cleanup. */
-            GMX_ASSERT(fr->nblists[0].table_vdw.interaction == GMX_TABLE_INTERACTION_VDWREP_VDWDISP,
+            GMX_ASSERT(fr->nblists[0].table_vdw->interaction == GMX_TABLE_INTERACTION_VDWREP_VDWDISP,
                        "Dispersion-correction code needs a table with both repulsion and dispersion terms");
-            scale  = fr->nblists[0].table_vdw.scale;
-            vdwtab = fr->nblists[0].table_vdw.data;
+            scale  = fr->nblists[0].table_vdw->scale;
+            vdwtab = fr->nblists[0].table_vdw->data;
 
             /* Round the cut-offs to exact table values for precision */
             ri0  = static_cast<int>(floor(fr->rvdw_switch*scale));
index 61a68a9cec3508cdd2b012247cdf744408364c47..5cd898d43d9098e9fc47d9d879f23b0e00dcc2ea 100644 (file)
@@ -49,6 +49,7 @@
 #include "gromacs/mdtypes/inputrec.h"
 #include "gromacs/mdtypes/md_enums.h"
 #include "gromacs/mdtypes/mdatom.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/tables/forcetable.h"
 #include "gromacs/topology/topology.h"
 #include "gromacs/utility/cstringutil.h"
@@ -63,7 +64,6 @@ void make_wall_tables(FILE *fplog,
     int           negp_pp;
     int          *nm_ind;
     char          buf[STRLEN];
-    t_forcetable *tab;
 
     negp_pp = ir->opts.ngener - ir->nwall;
     nm_ind  = groups->grps[egcENER].nm_ind;
@@ -83,19 +83,21 @@ void make_wall_tables(FILE *fplog,
             /* If the energy group pair is excluded, we don't need a table */
             if (!(fr->egp_flags[egp*ir->opts.ngener+negp_pp+w] & EGP_EXCL))
             {
-                tab = &fr->wall_tab[w][egp];
+                fr->wall_tab[w][egp] = make_tables(fplog, fr, buf, 0,
+                                                   GMX_MAKETABLES_FORCEUSER);
                 sprintf(buf, "%s", tabfn);
                 sprintf(buf + strlen(tabfn) - strlen(ftp2ext(efXVG)) - 1, "_%s_%s.%s",
                         *groups->grpname[nm_ind[egp]],
                         *groups->grpname[nm_ind[negp_pp+w]],
                         ftp2ext(efXVG));
-                *tab = make_tables(fplog, fr, buf, 0, GMX_MAKETABLES_FORCEUSER);
+
                 /* Since wall have no charge, we can compress the table */
-                for (int i = 0; i <= tab->n; i++)
+                for (int i = 0; i <= fr->wall_tab[w][egp]->n; i++)
                 {
                     for (int j = 0; j < 8; j++)
                     {
-                        tab->data[8*i+j] = tab->data[12*i+4+j];
+                        fr->wall_tab[w][egp]->data[8*i+j] =
+                            fr->wall_tab[w][egp]->data[12*i+4+j];
                     }
                 }
             }
@@ -209,7 +211,7 @@ real do_walls(t_inputrec *ir, t_forcerec *fr, matrix box, t_mdatoms *md,
                             {
                                 wall_error(i, x, r);
                             }
-                            tab      = &(fr->wall_tab[w][gid[i]]);
+                            tab      = fr->wall_tab[w][gid[i]];
                             tabscale = tab->scale;
                             VFtab    = tab->data;
 
index b901576c0a508752eca7708e1aa0fa2c92c2b640..05d066109a6a82a5f2392421a25c57fa6f73185f 100644 (file)
@@ -49,6 +49,7 @@
 #include "gromacs/mdlib/force.h"
 #include "gromacs/mdlib/ns.h"
 #include "gromacs/mdtypes/md_enums.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/utility/fatalerror.h"
 #include "gromacs/utility/futil.h"
 #include "gromacs/utility/smalloc.h"
similarity index 53%
rename from src/gromacs/legacyheaders/types/nblist.h
rename to src/gromacs/mdtypes/nblist.h
index 1567200b4b3f5334240b5ac30ed6997d4a04e5a2..e8c060a40bc21d9795fa8e505f07c1efdc4118e4 100644 (file)
  * To help us fund GROMACS development, we humbly ask that you cite
  * the research papers on the package. Check out http://www.gromacs.org.
  */
-#ifndef _nblist_h
-#define _nblist_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
+#ifndef GMX_MDTYPES_NBLIST_H
+#define GMX_MDTYPES_NBLIST_H
 
+#include "gromacs/utility/basedefinitions.h"
+#include "gromacs/utility/real.h"
 
 typedef unsigned long t_excl;
 
+/* The interactions contained in a (possibly merged) table
+ * for computing electrostatic, VDW repulsion and/or VDW dispersion
+ * contributions.
+ */
+enum gmx_table_interaction
+{
+    GMX_TABLE_INTERACTION_ELEC,
+    GMX_TABLE_INTERACTION_VDWREP_VDWDISP,
+    GMX_TABLE_INTERACTION_VDWEXPREP_VDWDISP,
+    GMX_TABLE_INTERACTION_VDWDISP,
+    GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP,
+    GMX_TABLE_INTERACTION_ELEC_VDWEXPREP_VDWDISP,
+    GMX_TABLE_INTERACTION_ELEC_VDWDISP,
+    GMX_TABLE_INTERACTION_NR
+};
+
+/* Different formats for table data. Cubic spline tables are typically stored
+ * with the four Y,F,G,H intermediate values (check tables.c for format), which
+ * makes it easy to load with a single 4-way SIMD instruction too.
+ * Linear tables only need one value per table point, or two if both V and F
+ * are calculated. However, with SIMD instructions this makes the loads unaligned,
+ * and in that case we store the data as F, D=F(i+1)-F(i), V, and then a blank value,
+ * which again makes it possible to load as a single instruction.
+ */
+enum gmx_table_format
+{
+    GMX_TABLE_FORMAT_CUBICSPLINE_YFGH,
+    GMX_TABLE_FORMAT_LINEAR_VF,
+    GMX_TABLE_FORMAT_LINEAR_V,
+    GMX_TABLE_FORMAT_LINEAR_F,
+    GMX_TABLE_FORMAT_LINEAR_FDV0,
+    GMX_TABLE_FORMAT_NR
+};
+
+enum {
+    eNL_VDWQQ, eNL_VDW, eNL_QQ,
+    eNL_VDWQQ_FREE, eNL_VDW_FREE, eNL_QQ_FREE,
+    eNL_VDWQQ_WATER, eNL_QQ_WATER,
+    eNL_VDWQQ_WATERWATER, eNL_QQ_WATERWATER,
+    eNL_NR
+};
+
+#define MAX_CG 1024
+
+typedef struct {
+    int     ncg;
+    int     nj;
+    int     jcg[MAX_CG];
+} t_ns_buf;
+
+
 /* The maximum charge group size because of minimum size of t_excl
  * could be 32 bits.
  */
@@ -92,7 +141,6 @@ typedef struct t_nblist
 
 } t_nblist;
 
-
 /* For atom I =  nblist->iinr[N] (0 <= N < nblist->nri) there can be
  * several neighborlists (N's), for different energy groups (gid) and
  * different shifts (shift).
@@ -109,8 +157,59 @@ typedef struct t_nblist
  * Clear?
  */
 
-#ifdef __cplusplus
-}
-#endif
+/* Structure describing the data in a single table */
+typedef struct t_forcetable
+{
+    enum gmx_table_interaction  interaction; /* Types of interactions stored in this table */
+    enum gmx_table_format       format;      /* Interpolation type and data format */
+
+    real                        r;           /* range of the table */
+    int                         n;           /* n+1 is the number of table points */
+    real                        scale;       /* distance (nm) between two table points */
+    real *                      data;        /* the actual table data */
+
+    /* Some information about the table layout. This can also be derived from the interpolation
+     * type and the table interactions, but it is convenient to have here for sanity checks, and it makes it
+     * much easier to access the tables in the nonbonded kernels when we can set the data from variables.
+     * It is always true that stride = formatsize*ninteractions
+     */
+    int                         formatsize;    /* Number of fp variables for each table point (1 for F, 2 for VF, 4 for YFGH, etc.) */
+    int                         ninteractions; /* Number of interactions in table, 1 for coul-only, 3 for coul+rep+disp. */
+    int                         stride;        /* Distance to next table point (number of fp variables per table point in total) */
+} t_forcetable;
+
+typedef struct t_nblists
+{
+    struct t_forcetable   *table_elec;
+    struct t_forcetable   *table_vdw;
+    struct t_forcetable   *table_elec_vdw;
+
+    /* The actual neighbor lists, short and long range, see enum above
+     * for definition of neighborlist indices.
+     */
+    struct t_nblist nlist_sr[eNL_NR];
+    struct t_nblist nlist_lr[eNL_NR];
+} t_nblists;
+
+typedef struct gmx_ns_t {
+    gmx_bool      bCGlist;
+    int          *simple_aaj;
+    struct t_grid*grid;
+    t_excl       *bexcl;
+    gmx_bool     *bHaveVdW;
+    t_ns_buf    **ns_buf;
+    gmx_bool     *bExcludeAlleg;
+    int           nra_alloc;
+    int           cg_alloc;
+    int         **nl_sr;
+    int          *nsr;
+    int         **nl_lr_ljc;
+    int         **nl_lr_one;
+    int          *nlr_ljc;
+    int          *nlr_one;
+    /* the nblists should probably go in here */
+    gmx_bool      nblist_initialized; /* has the nblist been initialized?  */
+    int           dump_nl;            /* neighbour list dump level (from env. var. GMX_DUMP_NL)*/
+} gmx_ns_t;
 
-#endif
+#endif /* GMX_MDTYPES_NBLIST_H */
index 611169994fd7d585835001276812df7b2ab0a248..123d31246f5942bd73fe5d65dc7f4e48c232b795 100644 (file)
@@ -48,6 +48,7 @@
 #include "gromacs/math/utilities.h"
 #include "gromacs/math/vec.h"
 #include "gromacs/mdtypes/md_enums.h"
+#include "gromacs/mdtypes/nblist.h"
 #include "gromacs/utility/cstringutil.h"
 #include "gromacs/utility/fatalerror.h"
 #include "gromacs/utility/futil.h"
@@ -1341,18 +1342,19 @@ static void set_table_type(int tabsel[], const t_forcerec *fr, gmx_bool b14only)
     }
 }
 
-t_forcetable make_tables(FILE *out,
-                         const t_forcerec *fr,
-                         const char *fn,
-                         real rtab, int flags)
+t_forcetable *make_tables(FILE *out,
+                          const t_forcerec *fr,
+                          const char *fn,
+                          real rtab, int flags)
 {
     t_tabledata    *td;
     gmx_bool        b14only, useUserTable;
     int             nx0, tabsel[etiNR];
     real            scalefactor;
 
-    t_forcetable    table;
+    t_forcetable   *table;
 
+    snew(table, 1);
     b14only = (flags & GMX_MAKETABLES_14ONLY);
 
     if (flags & GMX_MAKETABLES_FORCEUSER)
@@ -1366,15 +1368,15 @@ t_forcetable make_tables(FILE *out,
         set_table_type(tabsel, fr, b14only);
     }
     snew(td, etiNR);
-    table.r         = rtab;
-    table.scale     = 0;
-    table.n         = 0;
+    table->r         = rtab;
+    table->scale     = 0;
+    table->n         = 0;
 
-    table.interaction   = GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP;
-    table.format        = GMX_TABLE_FORMAT_CUBICSPLINE_YFGH;
-    table.formatsize    = 4;
-    table.ninteractions = etiNR;
-    table.stride        = table.formatsize*table.ninteractions;
+    table->interaction   = GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP;
+    table->format        = GMX_TABLE_FORMAT_CUBICSPLINE_YFGH;
+    table->formatsize    = 4;
+    table->ninteractions = etiNR;
+    table->stride        = table->formatsize*table->ninteractions;
 
     /* Check whether we have to read or generate */
     useUserTable = FALSE;
@@ -1390,7 +1392,7 @@ t_forcetable make_tables(FILE *out,
         read_tables(out, fn, etiNR, 0, td);
         if (rtab == 0 || (flags & GMX_MAKETABLES_14ONLY))
         {
-            table.n   = td[0].nx;
+            table->n   = td[0].nx;
         }
         else
         {
@@ -1399,28 +1401,28 @@ t_forcetable make_tables(FILE *out,
                 gmx_fatal(FARGS, "Tables in file %s not long enough for cut-off:\n"
                           "\tshould be at least %f nm\n", fn, rtab);
             }
-            table.n = (int)(rtab*td[0].tabscale + 0.5);
+            table->n = (int)(rtab*td[0].tabscale + 0.5);
         }
-        table.scale = td[0].tabscale;
-        nx0         = td[0].nx0;
+        table->scale = td[0].tabscale;
+        nx0          = td[0].nx0;
     }
     else
     {
         // No tables are read
 #ifdef GMX_DOUBLE
-        table.scale = 2000.0;
+        table->scale = 2000.0;
 #else
-        table.scale = 500.0;
+        table->scale = 500.0;
 #endif
-        table.n = static_cast<int>(rtab*table.scale);
-        nx0     = 10;
+        table->n = static_cast<int>(rtab*table->scale);
+        nx0      = 10;
     }
 
     /* Each table type (e.g. coul,lj6,lj12) requires four
-     * numbers per table.n+1 data points. For performance reasons we want
+     * numbers per table->n+1 data points. For performance reasons we want
      * the table data to be aligned to a 32-byte boundary.
      */
-    snew_aligned(table.data, table.stride*(table.n+1)*sizeof(real), 32);
+    snew_aligned(table->data, table->stride*(table->n+1)*sizeof(real), 32);
 
     for (int k = 0; (k < etiNR); k++)
     {
@@ -1428,12 +1430,12 @@ t_forcetable make_tables(FILE *out,
            overwriting data that was read but should not be used) */
         if (!ETAB_USER(tabsel[k]))
         {
-            real scale = table.scale;
+            real scale = table->scale;
             if (fr->bBHAM && (fr->bham_b_max != 0) && tabsel[k] == etabEXPMIN)
             {
                 scale /= fr->bham_b_max;
             }
-            init_table(table.n, nx0, scale, &(td[k]), !useUserTable);
+            init_table(table->n, nx0, scale, &(td[k]), !useUserTable);
 
             fill_table(&(td[k]), tabsel[k], fr, b14only);
             if (out)
@@ -1464,7 +1466,7 @@ t_forcetable make_tables(FILE *out,
             scalefactor = 1.0;
         }
 
-        copy2table(table.n, k*table.formatsize, table.stride, td[k].x, td[k].v, td[k].f, scalefactor, table.data);
+        copy2table(table->n, k*table->formatsize, table->stride, td[k].x, td[k].v, td[k].f, scalefactor, table->data);
 
         done_tabledata(&(td[k]));
     }
@@ -1473,27 +1475,28 @@ t_forcetable make_tables(FILE *out,
     return table;
 }
 
-t_forcetable make_gb_table(const t_forcerec              *fr)
+t_forcetable *make_gb_table(const t_forcerec              *fr)
 {
     t_tabledata    *td;
     int             nx0;
     double          r, r2, Vtab, Ftab, expterm;
 
-    t_forcetable    table;
+    t_forcetable   *table;
 
     /* Set the table dimensions for GB, not really necessary to
      * use etiNR (since we only have one table, but ...)
      */
+    snew(table, 1);
     snew(td, 1);
-    table.interaction   = GMX_TABLE_INTERACTION_ELEC;
-    table.format        = GMX_TABLE_FORMAT_CUBICSPLINE_YFGH;
-    table.r             = fr->gbtabr;
-    table.scale         = fr->gbtabscale;
-    table.n             = static_cast<int>(table.scale*table.r);
-    table.formatsize    = 4;
-    table.ninteractions = 1;
-    table.stride        = table.formatsize*table.ninteractions;
-    nx0                 = 0;
+    table->interaction   = GMX_TABLE_INTERACTION_ELEC;
+    table->format        = GMX_TABLE_FORMAT_CUBICSPLINE_YFGH;
+    table->r             = fr->gbtabr;
+    table->scale         = fr->gbtabscale;
+    table->n             = static_cast<int>(table->scale*table->r);
+    table->formatsize    = 4;
+    table->ninteractions = 1;
+    table->stride        = table->formatsize*table->ninteractions;
+    nx0                  = 0;
 
     /* Each table type (e.g. coul,lj6,lj12) requires four numbers per
      * datapoint. For performance reasons we want the table data to be
@@ -1502,9 +1505,9 @@ t_forcetable make_gb_table(const t_forcerec              *fr)
      * to do this :-)
      */
 
-    snew_aligned(table.data, table.stride*table.n, 32);
+    snew_aligned(table->data, table->stride*table->n, 32);
 
-    init_table(table.n, nx0, table.scale, &(td[0]), TRUE);
+    init_table(table->n, nx0, table->scale, &(td[0]), TRUE);
 
     /* Local implementation so we don't have to use the etabGB
      * enum above, which will cause problems later when
@@ -1514,7 +1517,7 @@ t_forcetable make_gb_table(const t_forcerec              *fr)
      * be defined in fill_table and set_table_type
      */
 
-    for (int i = nx0; i < table.n; i++)
+    for (int i = nx0; i < table->n; i++)
     {
         r       = td->x[i];
         r2      = r*r;
@@ -1524,13 +1527,13 @@ t_forcetable make_gb_table(const t_forcerec              *fr)
         Ftab = (r-0.25*r*expterm)/((r2+expterm)*sqrt(r2+expterm));
 
         /* Convert to single precision when we store to mem */
-        td->x[i]  = i/table.scale;
+        td->x[i]  = i/table->scale;
         td->v[i]  = Vtab;
         td->f[i]  = Ftab;
 
     }
 
-    copy2table(table.n, 0, table.stride, td[0].x, td[0].v, td[0].f, 1.0, table.data);
+    copy2table(table->n, 0, table->stride, td[0].x, td[0].v, td[0].f, 1.0, table->data);
 
     done_tabledata(&(td[0]));
     sfree(td);
index 5d7bf0222d1999d1d987151b80573dfc70884e1a..563179e56de9ddad91742532c85e73c9d34237ea 100644 (file)
@@ -77,9 +77,9 @@ double v_q_ewald_lr(double beta, double r);
 double v_lj_ewald_lr(double beta, double r);
 /* Return the real space grid contribution for LJ-Ewald*/
 
-t_forcetable make_tables(FILE *fp,
-                         const t_forcerec *fr,
-                         const char *fn, real rtab, int flags);
+t_forcetable *make_tables(FILE *fp,
+                          const t_forcerec *fr,
+                          const char *fn, real rtab, int flags);
 /* Return tables for inner loops. */
 
 bondedtable_t make_bonded_table(FILE *fplog, char *fn, int angle);
@@ -88,6 +88,6 @@ bondedtable_t make_bonded_table(FILE *fplog, char *fn, int angle);
  */
 
 /* Return a table for GB calculations */
-t_forcetable make_gb_table(const t_forcerec              *fr);
+t_forcetable *make_gb_table(const t_forcerec              *fr);
 
 #endif  /* GMX_TABLES_FORCETABLE_H */