Implemented nbnxn LJ switch functions
authorBerk Hess <hess@kth.se>
Thu, 14 Nov 2013 08:59:50 +0000 (09:59 +0100)
committerMark Abraham <mark.j.abraham@gmail.com>
Wed, 19 Feb 2014 13:54:14 +0000 (14:54 +0100)
The nbnxn C reference and SIMD kernels now support force and
potential switching, which are selected through vdw_modifier.
Both use analytical functions, since tables are expensive with SIMD.
Made the nbnxn kernel naming consistent with the group scheme.
Corresponding CUDA kernels will be added soon.

Dispersion correction always needs table generation, which had always
been a fortuitous side effect of something else, until this patch.

Change-Id: I52a1cda5ec7c3bdce6f3f2735ff7b13303ea5880

199 files changed:
share/html/online/mdp_opt.html
src/gromacs/gmxlib/inputrec.c
src/gromacs/gmxlib/names.c
src/gromacs/gmxlib/nonbonded/nb_generic.c
src/gromacs/gmxlib/nonbonded/nb_generic_adress.c
src/gromacs/gmxlib/nrnb.c
src/gromacs/gmxpreprocess/calc_verletbuf.c
src/gromacs/gmxpreprocess/readir.c
src/gromacs/legacyheaders/types/enums.h
src/gromacs/legacyheaders/types/interaction_const.h
src/gromacs/legacyheaders/types/nrnb.h
src/gromacs/mdlib/forcerec.c
src/gromacs/mdlib/nbnxn_atomdata.c
src/gromacs/mdlib/nbnxn_atomdata.h
src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda.cu
src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.cu
src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernel.cuh
src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernels.cuh
src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/make_verlet_simd_kernel_files.py
src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.c.pre
src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref.c
src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_includes.h [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_inner.h
src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_outer.h
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener.c with 83% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_noener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener.c with 92% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_ener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_ener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_ener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener.c with 67% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_noener.c with 92% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener.c with 82% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_noener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_noener.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_noener.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_noener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_noener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_F_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.c
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.h
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_common.h
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_inner.h
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_outer.h
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_noener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_noener.c with 92% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_ener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_ener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_ener.c with 92% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_ener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_noener.c with 68% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener.c with 82% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener.c with 82% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_noener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_noener.c with 95% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_noener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_energrp.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_noener.c with 92% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_ener.c with 68% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_ener.c with 82% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_noener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_energrp.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_ener.c with 94% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn.c [moved from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_noener.c with 93% similarity]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_F_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn.c [new file with mode: 0644]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.c
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.h
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_common.h
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_inner.h
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_outer.h
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c [deleted file]
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c [deleted file]
src/gromacs/mdlib/sim_util.c
src/gromacs/mdlib/tables.c
src/programs/mdrun/runner.c

index 874da1d556c76c8ce9b070a9a68e6303b6f77040..deb3d287c489ecd07c2accf3c65b85abd8108937 100644 (file)
@@ -710,7 +710,7 @@ affect the forces or the sampling.</dd>
 
 <A NAME="el2">
 <dt><b>rcoulomb-switch: (0) [nm]</b></dt>
-<dd>where to start switching the Coulomb potential</dd>
+<dd>where to start switching the Coulomb potential, only relevant when force or potential switching is used</dd>
 
 <dt><b>rcoulomb: (1) [nm]</b></dt>
 <dd>distance for the Coulomb <!--Idx-->cut-off<!--EIdx--></dd>
@@ -746,7 +746,8 @@ combination rules that are to be used by the reciprocal routine are
 set using <b>lj-pme-comb-rule</b>.</dd>
 
 <dt><b>Shift</b></dt>
-<dd>The LJ (not Buckingham) potential is decreased over the whole
+<dd>This functionality is deprecated and replaced by <b>vdw-modifier = Force-switch</b>.
+The LJ (not Buckingham) potential is decreased over the whole
 range and the forces decay smoothly to zero between <b>rvdw-switch</b>
 and <b>rvdw</b>.  The neighbor search cut-off <b>rlist</b> should be
 0.1 to 0.3 nm larger than <b>rvdw</b> to accommodate for the size of
@@ -754,7 +755,8 @@ charge groups and diffusion between neighbor list
 updates.</dd>
 
 <dt><b>Switch</b></dt>
-<dd>The LJ (not Buckingham)
+<dd>This functionality is deprecated and replaced by <b>vdw-modifier = Potential-switch</b>.
+The LJ (not Buckingham)
 potential is normal out to <b>rvdw-switch</b>, after which it is switched
 off to reach zero at <b>rvdw</b>. Both the potential and force functions
 are continuously smooth, but be aware that all switch functions will give rise
@@ -788,10 +790,14 @@ This makes the potential the integral of the force. Note that this does not
 affect the forces or the sampling.</dd>
 <dt><b>None</b></dt>
 <dd>Use an unmodified Van der Waals potential. With the group scheme this means no exact cut-off is used, energies and forces are calculated for all pairs in the neighborlist.</dd>
+<dt><b>Force-switch</b></dt>
+<dd>Smoothly switches the forces to zero between <b>rvdw-switch</b> and <b>rvdw</b>. This shifts the potential shift over the whole range and switches it to zero at the cut-off. Note that this is more expensive to calculate than a plain cut-off and it is not required for energy conservation, since <b>Potential-shift</b> conserves energy just as well.</dd>
+<dt><b>Potential-switch</b></dt>
+<dd>Smoothly switches the potential to zero between <b>rvdw-switch</b> and <b>rvdw</b>. Note that this introduces articifically large forces in the switching region and is much more expensive to calculate. This option should only be used if the force field you are using requires this.</dd>
 </dl></dd>
 
 <dt><b>rvdw-switch: (0) [nm]</b></dt>
-<dd>where to start switching the LJ potential</dd>
+<dd>where to start switching the LJ force and possibly the potential, only relevant when force or potential switching is used</dd>
 
 <dt><b>rvdw: (1) [nm]</b></dt>
 <dd>distance for the LJ or Buckingham <!--Idx-->cut-off<!--EIdx--></dd>
index 74e186cc4011e0a0c96ada8bd581d6e67ba3425e..1ba89ef3aa71f9a140f550dacd0c49bf60f05e67 100644 (file)
@@ -203,12 +203,14 @@ gmx_bool ir_coulomb_switched(const t_inputrec *ir)
             ir->coulombtype == eelENCADSHIFT ||
             ir->coulombtype == eelPMESWITCH ||
             ir->coulombtype == eelPMEUSERSWITCH ||
-            ir->coulomb_modifier == eintmodPOTSWITCH);
+            ir->coulomb_modifier == eintmodPOTSWITCH ||
+            ir->coulomb_modifier == eintmodFORCESWITCH);
 }
 
 gmx_bool ir_coulomb_is_zero_at_cutoff(const t_inputrec *ir)
 {
-    return (ir_coulomb_switched(ir) || ir->coulomb_modifier != eintmodNONE ||
+    return (ir->cutoff_scheme == ecutsVERLET ||
+            ir_coulomb_switched(ir) || ir->coulomb_modifier != eintmodNONE ||
             ir->coulombtype == eelRF_ZERO);
 }
 
@@ -222,12 +224,14 @@ gmx_bool ir_vdw_switched(const t_inputrec *ir)
     return (ir->vdwtype == evdwSWITCH ||
             ir->vdwtype == evdwSHIFT ||
             ir->vdwtype == evdwENCADSHIFT ||
-            ir->vdw_modifier == eintmodPOTSWITCH);
+            ir->vdw_modifier == eintmodPOTSWITCH ||
+            ir->vdw_modifier == eintmodFORCESWITCH);
 }
 
 gmx_bool ir_vdw_is_zero_at_cutoff(const t_inputrec *ir)
 {
-    return (ir_vdw_switched(ir) || ir->vdw_modifier != eintmodNONE);
+    return (ir->cutoff_scheme == ecutsVERLET ||
+            ir_vdw_switched(ir) || ir->vdw_modifier != eintmodNONE);
 }
 
 gmx_bool ir_vdw_might_be_zero_at_cutoff(const t_inputrec *ir)
index afc9f16006451a7a95fb165ff79218a296ce40b6..42670fe0349fa10a06c687a15015d4da9422df86 100644 (file)
@@ -102,7 +102,7 @@ const char *econstr_names[econtNR+1] = {
 };
 
 const char *eintmod_names[eintmodNR+1] = {
-    "Potential-shift-Verlet", "Potential-shift", "None", "Potential-switch", "Exact-cutoff", NULL
+    "Potential-shift-Verlet", "Potential-shift", "None", "Potential-switch", "Exact-cutoff", "Force-switch", NULL
 };
 
 const char *egrp_nm[egNR+1] = {
index 23991f979a8741712fe9f1e498712d26d101cb9d..e81ca49723b92d10986691e2e6c6cf9f50d8bdef 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2012, by the GROMACS development team, led by
+ * Copyright (c) 2012,2014, 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.
@@ -92,7 +92,7 @@ gmx_nb_generic_kernel(t_nblist *                nlist,
     int           ewitab;
     real          ewtabscale, eweps, sh_ewald, ewrt, ewtabhalfspace;
     real *        ewtab;
-    real          rcoulomb2, rvdw, rvdw2, sh_invrc6;
+    real          rcoulomb2, rvdw, rvdw2, sh_dispersion, sh_repulsion;
     real          rcutoff, rcutoff2;
     real          rswitch_elec, rswitch_vdw, d, d2, sw, dsw, rinvcorr;
     real          elec_swV3, elec_swV4, elec_swV5, elec_swF2, elec_swF3, elec_swF4;
@@ -118,7 +118,8 @@ gmx_nb_generic_kernel(t_nblist *                nlist,
     rcoulomb2           = fr->rcoulomb*fr->rcoulomb;
     rvdw                = fr->rvdw;
     rvdw2               = rvdw*rvdw;
-    sh_invrc6           = fr->ic->sh_invrc6;
+    sh_dispersion       = fr->ic->dispersion_shift.cpot;
+    sh_repulsion        = fr->ic->repulsion_shift.cpot;
 
     if (fr->coulomb_modifier == eintmodPOTSWITCH)
     {
@@ -335,7 +336,7 @@ gmx_nb_generic_kernel(t_nblist *                nlist,
                         fvdw             = (vvdw_rep-vvdw_disp)*rinvsq;
                         if (fr->vdw_modifier == eintmodPOTSHIFT)
                         {
-                            vvdw             = (vvdw_rep-c12*sh_invrc6*sh_invrc6)*(1.0/12.0)-(vvdw_disp-c6*sh_invrc6)*(1.0/6.0);
+                            vvdw             = (vvdw_rep + c12*sh_repulsion)/12.0 - (vvdw_disp + c6*sh_dispersion)/6.0;
                         }
                         else
                         {
@@ -356,7 +357,7 @@ gmx_nb_generic_kernel(t_nblist *                nlist,
                         fvdw             = (br*vvdw_rep-vvdw_disp)*rinvsq;
                         if (fr->vdw_modifier == eintmodPOTSHIFT)
                         {
-                            vvdw             = (vvdw_rep-cexp1*exp(-cexp2*rvdw))-(vvdw_disp-c6*sh_invrc6)/6.0;
+                            vvdw             = (vvdw_rep-cexp1*exp(-cexp2*rvdw))-(vvdw_disp + c6*sh_dispersion)/6.0;
                         }
                         else
                         {
index 0aaf27f4b739e08865befc30069fde9497e1a8e0..1eb690c7dff9af8cdc30b067566dd76cbe8d99a8 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2009 Christoph Junghans, Brad Lambeth.
  * Copyright (c) 2011 Christoph Junghans, Sebastian Fritsch.
- * Copyright (c) 2011,2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014, 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.
@@ -93,7 +93,7 @@ gmx_nb_generic_adress_kernel(t_nblist *                nlist,
     int           ewitab;
     real          ewtabscale, eweps, sh_ewald, ewrt, ewtabhalfspace;
     real *        ewtab;
-    real          rcoulomb2, rvdw, rvdw2, sh_invrc6;
+    real          rcoulomb2, rvdw, rvdw2, sh_dispersion, sh_repulsion;
     real          rcutoff, rcutoff2;
     real          rswitch_elec, rswitch_vdw, d, d2, sw, dsw, rinvcorr;
     real          elec_swV3, elec_swV4, elec_swV5, elec_swF2, elec_swF3, elec_swF4;
@@ -132,7 +132,8 @@ gmx_nb_generic_adress_kernel(t_nblist *                nlist,
     rcoulomb2           = fr->rcoulomb*fr->rcoulomb;
     rvdw                = fr->rvdw;
     rvdw2               = rvdw*rvdw;
-    sh_invrc6           = fr->ic->sh_invrc6;
+    sh_dispersion       = fr->ic->dispersion_shift.cpot;
+    sh_repulsion        = fr->ic->repulsion_shift.cpot;
 
     if (fr->coulomb_modifier == eintmodPOTSWITCH)
     {
@@ -400,7 +401,7 @@ gmx_nb_generic_adress_kernel(t_nblist *                nlist,
                         fvdw             = (vvdw_rep-vvdw_disp)*rinvsq;
                         if (fr->vdw_modifier == eintmodPOTSHIFT)
                         {
-                            vvdw             = (vvdw_rep-c12*sh_invrc6*sh_invrc6)*(1.0/12.0)-(vvdw_disp-c6*sh_invrc6)*(1.0/6.0);
+                            vvdw             = (vvdw_rep + c12*sh_repulsion)/12.0 - (vvdw_disp + c6*sh_dispersion)/6.0;
                         }
                         else
                         {
@@ -421,7 +422,7 @@ gmx_nb_generic_adress_kernel(t_nblist *                nlist,
                         fvdw             = (br*vvdw_rep-vvdw_disp)*rinvsq;
                         if (fr->vdw_modifier == eintmodPOTSHIFT)
                         {
-                            vvdw             = (vvdw_rep-cexp1*exp(-cexp2*rvdw))-(vvdw_disp-c6*sh_invrc6)/6.0;
+                            vvdw             = (vvdw_rep-cexp1*exp(-cexp2*rvdw)) - (vvdw_disp + c6*sh_dispersion)/6.0;
                         }
                         else
                         {
index b65d1ed7eaa5850e92363e969fbc18a6d063da0f..2f818ff2525cdc7611fcd98d8e7f74187340f0f5 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014, 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.
@@ -99,20 +99,25 @@ static const t_nrnb_data nbdata[eNRNB] = {
      * - GPU always does exclusions, which requires 2-4 flops, but as invsqrt
      *   is always counted as 6 flops, this roughly compensates.
      */
-    { "NxN RF Elec. + VdW [F]",         38 }, /* nbnxn kernel LJ+RF, no ener */
-    { "NxN RF Elec. + VdW [V&F]",       54 },
-    { "NxN QSTab Elec. + VdW [F]",      41 }, /* nbnxn kernel LJ+tab, no en */
-    { "NxN QSTab Elec. + VdW [V&F]",    59 },
-    { "NxN Ewald Elec. + VdW [F]",      66 }, /* nbnxn kernel LJ+Ewald, no en */
-    { "NxN Ewald Elec. + VdW [V&F]",   107 },
-    { "NxN VdW [F]",                    33 }, /* nbnxn kernel LJ, no ener */
-    { "NxN VdW [V&F]",                  43 },
+    { "NxN RF Elec. + LJ [F]",          38 }, /* nbnxn kernel LJ+RF, no ener */
+    { "NxN RF Elec. + LJ [V&F]",        54 },
+    { "NxN QSTab Elec. + LJ [F]",       41 }, /* nbnxn kernel LJ+tab, no en */
+    { "NxN QSTab Elec. + LJ [V&F]",     59 },
+    { "NxN Ewald Elec. + LJ [F]",       66 }, /* nbnxn kernel LJ+Ewald, no en */
+    { "NxN Ewald Elec. + LJ [V&F]",    107 },
+    { "NxN LJ [F]",                     33 }, /* nbnxn kernel LJ, no ener */
+    { "NxN LJ [V&F]",                   43 },
     { "NxN RF Electrostatics [F]",      31 }, /* nbnxn kernel RF, no ener */
     { "NxN RF Electrostatics [V&F]",    36 },
     { "NxN QSTab Elec. [F]",            34 }, /* nbnxn kernel tab, no ener */
     { "NxN QSTab Elec. [V&F]",          41 },
     { "NxN Ewald Elec. [F]",            61 }, /* nbnxn kernel Ewald, no ener */
     { "NxN Ewald Elec. [V&F]",          84 },
+    /* The switch function flops should be added to the LJ kernels above */
+    { "NxN LJ add F-switch [F]",        12 }, /* extra cost for LJ F-switch */
+    { "NxN LJ add F-switch [V&F]",      22 },
+    { "NxN LJ add P-switch [F]",        27 }, /* extra cost for LJ P-switch */
+    { "NxN LJ add P-switch [V&F]",      20 },
     { "1,4 nonbonded interactions",     90 },
     { "Born radii (Still)",             47 },
     { "Born radii (HCT/OBC)",          183 },
@@ -305,9 +310,21 @@ void _inc_nrnb(t_nrnb *nrnb, int enr, int inc, char gmx_unused *file, int gmx_un
 #endif
 }
 
+/* Returns in enr is the index of a full nbnxn VdW kernel */
+static gmx_bool nrnb_is_nbnxn_vdw_kernel(int enr)
+{
+    return (enr >= eNR_NBNXN_LJ_RF && enr <= eNR_NBNXN_LJ_E);
+}
+
+/* Returns in enr is the index of an nbnxn kernel addition (switch function) */
+static gmx_bool nrnb_is_nbnxn_kernel_addition(int enr)
+{
+    return (enr >= eNR_NBNXN_LJ_FSW && enr <= eNR_NBNXN_LJ_PSW_E);
+}
+
 void print_flop(FILE *out, t_nrnb *nrnb, double *nbfs, double *mflop)
 {
-    int           i;
+    int           i, j;
     double        mni, frac, tfrac, tflop;
     const char   *myline = "-----------------------------------------------------------------------------";
 
@@ -367,13 +384,38 @@ void print_flop(FILE *out, t_nrnb *nrnb, double *nbfs, double *mflop)
     for (i = 0; (i < eNRNB); i++)
     {
         mni     = 1e-6*nrnb->n[i];
-        *mflop += mni*nbdata[i].flop;
-        frac    = 100.0*mni*nbdata[i].flop/tflop;
-        tfrac  += frac;
-        if (out && mni != 0)
+        /* Skip empty entries and nbnxn additional flops,
+         * which have been added to the kernel entry.
+         */
+        if (mni > 0 && !nrnb_is_nbnxn_kernel_addition(i))
         {
-            fprintf(out, " %-32s %16.6f %15.3f  %6.1f\n",
-                    nbdata[i].name, mni, mni*nbdata[i].flop, frac);
+            int flop;
+
+            flop    = nbdata[i].flop;
+            if (nrnb_is_nbnxn_vdw_kernel(i))
+            {
+                /* Possibly add the cost of a switch function */
+                for (j = eNR_NBNXN_LJ_FSW; j <= eNR_NBNXN_LJ_PSW; j += 2)
+                {
+                    int e_kernel_add;
+
+                    /* Select the force or energy flop count */
+                    e_kernel_add = j + ((i - eNR_NBNXN_LJ_RF) % 2);
+
+                    if (nrnb->n[e_kernel_add] > 0)
+                    {
+                        flop += nbdata[e_kernel_add].flop;
+                    }
+                }
+            }
+            *mflop += mni*flop;
+            frac    = 100.0*mni*flop/tflop;
+            tfrac  += frac;
+            if (out != NULL)
+            {
+                fprintf(out, " %-32s %16.6f %15.3f  %6.1f\n",
+                        nbdata[i].name, mni, mni*flop, frac);
+            }
         }
     }
     if (out)
index 13baaf0ce528de81f5cc63e71affef2a50525ec9..6cebe7772e323bd919509d533e4c89e546cd18f4 100644 (file)
@@ -546,7 +546,9 @@ static void approx_2dof(real s2, real x, real *shift, real *scale)
 static real ener_drift(const verletbuf_atomtype_t *att, int natt,
                        const gmx_ffparams_t *ffp,
                        real kT_fac,
-                       real md_ljd, real md_ljr, real md_el, real dd_el,
+                       real md_ljd, real dd_ljd,
+                       real md_ljr, real dd_ljr,
+                       real md_el, real dd_el,
                        real r_buffer,
                        real rlist, real boxvol)
 {
@@ -584,7 +586,10 @@ static real ener_drift(const verletbuf_atomtype_t *att, int natt,
                 md_el*att[i].prop.q*att[j].prop.q;
 
             /* d2V/dr2 at the cut-off for Coulomb, we neglect LJ */
-            dd = dd_el*att[i].prop.q*att[j].prop.q;
+            dd =
+                dd_ljd*ffp->iparams[ti*ffp->atnr+tj].lj.c6 +
+                dd_ljr*ffp->iparams[ti*ffp->atnr+tj].lj.c12 +
+                dd_el*att[i].prop.q*att[j].prop.q;
 
             rsh    = r_buffer;
             sc_fac = 1.0;
@@ -726,7 +731,7 @@ void calc_verlet_buffer_size(const gmx_mtop_t *mtop, real boxvol,
     verletbuf_atomtype_t *att  = NULL;
     int                   natt = -1, i;
     double                reppow;
-    real                  md_ljd, md_ljr, md_el, dd_el;
+    real                  md_ljd,  dd_ljd, md_ljr, dd_ljr, md_el, dd_el;
     real                  elfac;
     real                  kT_fac, mass_min;
     int                   ib0, ib1, ib;
@@ -804,13 +809,48 @@ void calc_verlet_buffer_size(const gmx_mtop_t *mtop, real boxvol,
 
     reppow = mtop->ffparams.reppow;
     md_ljd = 0;
+    dd_ljd = 0;
     md_ljr = 0;
+    dd_ljr = 0;
     if (ir->vdwtype == evdwCUT)
     {
-        /* -dV/dr of -r^-6 and r^-repporw */
-        md_ljd = -6*pow(ir->rvdw, -7.0);
-        md_ljr = reppow*pow(ir->rvdw, -(reppow+1));
-        /* The contribution of the second derivative is negligible */
+        real sw_range, sw_range2;
+
+        switch (ir->vdw_modifier)
+        {
+            case eintmodNONE:
+            case eintmodPOTSHIFT:
+                /* -dV/dr of -r^-6 and r^-reppow */
+                md_ljd =     -6*pow(ir->rvdw, -7.0);
+                md_ljr = reppow*pow(ir->rvdw, -(reppow+1));
+                /* The contribution of the second derivative is negligible */
+                break;
+            case eintmodFORCESWITCH:
+                /* At the cut-off: V=V'=V''=0.
+                 * We choose to approximate the potential over the switch
+                 * region using a linear force, thus quadratic potential.
+                 * This is a tight overestimate for too short switching
+                 * regions and not more than a factor 2 higher otherwise.
+                 */
+                sw_range = ir->rvdw - ir->rvdw_switch;
+                dd_ljd   =     -6*pow(ir->rvdw_switch, -7.0       )/sw_range;
+                dd_ljr   = reppow*pow(ir->rvdw_switch, -(reppow+1))/sw_range;
+                break;
+            case eintmodPOTSWITCH:
+                /* At the cut-off: V=V'=V''=0.
+                 * We choose to approximate the potential over the switch
+                 * region using a quadratic potential.
+                 * This is an overestimate close to the cut-off and can be
+                 * a slight underestimate close to rswitch.
+                 */
+                sw_range  = ir->rvdw - ir->rvdw_switch;
+                sw_range2 = sw_range*sw_range;
+                dd_ljd    =      -12*pow(ir->rvdw_switch, -6.0   )/sw_range2;
+                dd_ljr    = 2*reppow*pow(ir->rvdw_switch, -reppow)/sw_range2;
+                break;
+            default:
+                gmx_incons("Unimplemented VdW modifier");
+        }
     }
     else if (EVDW_PME(ir->vdwtype))
     {
@@ -934,8 +974,9 @@ void calc_verlet_buffer_size(const gmx_mtop_t *mtop, real boxvol,
 
     if (debug)
     {
-        fprintf(debug, "md_ljd %e md_ljr %e\n", md_ljd, md_ljr);
-        fprintf(debug, "md_el %e dd_el %e\n", md_el, dd_el);
+        fprintf(debug, "md_ljd %9.2e dd_ljd %9.2e\n", md_ljd, dd_ljd);
+        fprintf(debug, "md_ljr %9.2e dd_ljr %9.2e\n", md_ljr, dd_ljr);
+        fprintf(debug, "md_el  %9.2e dd_el  %9.2e\n", md_el, dd_el);
         fprintf(debug, "sqrt(kT_fac) %f\n", sqrt(kT_fac));
         fprintf(debug, "mass_min %f\n", mass_min);
     }
@@ -955,7 +996,10 @@ void calc_verlet_buffer_size(const gmx_mtop_t *mtop, real boxvol,
          */
         drift = ener_drift(att, natt, &mtop->ffparams,
                            kT_fac,
-                           md_ljd, md_ljr, md_el, dd_el, rb,
+                           md_ljd, dd_ljd,
+                           md_ljr, dd_ljr,
+                           md_el, dd_el,
+                           rb,
                            rl, boxvol);
 
         /* Correct for the fact that we are using a Ni x Nj particle pair list
index 4fde014d5f7e50cbd7c40b080afd6b727f9a8d2d..853977c2ca236c99630cee7379a07bc88631a901 100644 (file)
@@ -325,6 +325,25 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts,
         {
             warning_error(wi, "With Verlet lists rcoulomb!=rvdw is not supported");
         }
+        if (ir->vdwtype == evdwSHIFT || ir->vdwtype == evdwSWITCH)
+        {
+            if (ir->vdw_modifier == eintmodNONE ||
+                ir->vdw_modifier == eintmodPOTSHIFT)
+            {
+                ir->vdw_modifier = (ir->vdwtype == evdwSHIFT ? eintmodFORCESWITCH : eintmodPOTSWITCH);
+
+                sprintf(warn_buf, "Replacing vdwtype=%s by the equivalent combination of vdwtype=%s and vdw_modifier=%s", evdw_names[ir->vdwtype], evdw_names[evdwCUT], eintmod_names[ir->vdw_modifier]);
+                warning_note(wi, warn_buf);
+
+                ir->vdwtype = evdwCUT;
+            }
+            else
+            {
+                sprintf(warn_buf, "Unsupported combination of vdwtype=%s and vdw_modifier=%s", evdw_names[ir->vdwtype], eintmod_names[ir->vdw_modifier]);
+                warning_error(wi, warn_buf);
+            }
+        }
+
         if (ir->vdwtype != evdwCUT)
         {
             warning_error(wi, "With Verlet lists only cut-off LJ interactions are supported");
@@ -335,6 +354,12 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts,
         {
             warning_error(wi, "With Verlet lists only cut-off, reaction-field, PME and Ewald electrostatics are supported");
         }
+        if (!(ir->coulomb_modifier == eintmodNONE ||
+              ir->coulomb_modifier == eintmodPOTSHIFT))
+        {
+            sprintf(warn_buf, "coulomb_modifier=%s is not supported with the Verlet cut-off scheme", eintmod_names[ir->coulomb_modifier]);
+            warning_error(wi, warn_buf);
+        }
 
         if (ir->nstlist <= 0)
         {
@@ -1185,8 +1210,7 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts,
 
     if (ir_vdw_switched(ir))
     {
-        sprintf(err_buf, "With vdwtype = %s rvdw-switch must be < rvdw. Or, better - use a potential modifier.",
-                evdw_names[ir->vdwtype]);
+        sprintf(err_buf, "With switched vdw forces or potentials, rvdw-switch must be < rvdw");
         CHECK(ir->rvdw_switch >= ir->rvdw);
     }
     else if (ir->vdwtype == evdwCUT)
@@ -1197,6 +1221,7 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts,
             CHECK(ir->rlist > ir->rvdw);
         }
     }
+
     if (ir->cutoff_scheme == ecutsGROUP)
     {
         if (((ir->coulomb_modifier != eintmodNONE && ir->rcoulomb == ir->rlist) ||
@@ -1256,7 +1281,7 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts,
                     evdw_names[evdwSHIFT]);
             warning_note(wi, warn_buf);
         }
-        if (!ir_coulomb_might_be_zero_at_cutoff(ir) && ir->rcoulomb > 0 && ir->coulomb_modifier == eintmodNONE)
+        if (!ir_coulomb_might_be_zero_at_cutoff(ir) && ir->rcoulomb > 0)
         {
             sprintf(warn_buf, "You are using a cut-off for electrostatics with NVE, for good energy conservation use coulombtype = %s or %s",
                     eel_names[eelPMESWITCH], eel_names[eelRF_ZERO]);
@@ -4206,7 +4231,7 @@ void check_chargegroup_radii(const gmx_mtop_t *mtop, const t_inputrec *ir,
              * since user defined interactions might purposely
              * not be zero at the cut-off.
              */
-            if ((ir_vdw_is_zero_at_cutoff(ir) || ir->vdw_modifier != eintmodNONE) &&
+            if (ir_vdw_is_zero_at_cutoff(ir) &&
                 rvdw1 + rvdw2 > ir->rlistlong - ir->rvdw)
             {
                 sprintf(warn_buf, "The sum of the two largest charge group "
@@ -4227,8 +4252,7 @@ void check_chargegroup_radii(const gmx_mtop_t *mtop, const t_inputrec *ir,
                     warning_note(wi, warn_buf);
                 }
             }
-            if ((ir_coulomb_is_zero_at_cutoff(ir) ||
-                 ir->coulomb_modifier != eintmodNONE) &&
+            if (ir_coulomb_is_zero_at_cutoff(ir) &&
                 rcoul1 + rcoul2 > ir->rlistlong - ir->rcoulomb)
             {
                 sprintf(warn_buf, "The sum of the two largest charge group radii (%f) is larger than %s (%f) - rcoulomb (%f).\n"
index a77e714e365dc1efb813cfb56fb8927f5431f30f..5133ea4b73d529c50a03faae0c270cd286fdf71d 100644 (file)
@@ -90,7 +90,7 @@ enum {
  * Exactcutoff is only used by Reaction-field-zero, and is not user-selectable.
  */
 enum eintmod {
-    eintmodPOTSHIFT_VERLET, eintmodPOTSHIFT, eintmodNONE, eintmodPOTSWITCH, eintmodEXACTCUTOFF, eintmodNR
+    eintmodPOTSHIFT_VERLET, eintmodPOTSHIFT, eintmodNONE, eintmodPOTSWITCH, eintmodEXACTCUTOFF, eintmodFORCESWITCH, eintmodNR
 };
 
 /*
index 3e4833ce5c52f68ff52ae8fb7cfee1ef69cd1cde..2f82b4956bdd47384e838222c1bb9f91d65921cf 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 extern "C" {
 #endif
 
+/* Used with force switching or a constant potential shift:
+ * rsw       = max(r - r_switch, 0)
+ * force/p   = r^-(p+1) + c2*rsw^2 + c3*rsw^3
+ * potential = r^-p + c2/3*rsw^3 + c3/4*rsw^4 + cpot
+ * With a constant potential shift c2 and c3 are both 0.
+ */
+typedef struct {
+    real c2;
+    real c3;
+    real cpot;
+} shift_consts_t;
+
+/* Used with potential switching:
+ * rsw        = max(r - r_switch, 0)
+ * sw         = 1 + c3*rsw^3 + c4*rsw^4 + c5*rsw^5
+ * dsw        = 3*c3*rsw^2 + 4*c4*rsw^3 + 5*c5*rsw^4
+ * force      = force*dsw - potential*sw
+ * potential *= sw
+ */
+typedef struct {
+    real c3;
+    real c4;
+    real c5;
+} switch_consts_t;
+
 typedef struct {
     /* VdW */
-    real rvdw;
-    real sh_invrc6; /* For shifting the LJ potential */
+    int             vdw_modifier;
+    real            rvdw;
+    real            rvdw_switch;
+    shift_consts_t  dispersion_shift;
+    shift_consts_t  repulsion_shift;
+    switch_consts_t vdw_switch;
+    /* TODO: remove this variable, used for not modyfing the group kernels,
+     * it is equal to -dispersion_shift->cpot
+     */
+    real sh_invrc6;
 
     /* type of electrostatics (defined in enums.h) */
     int  eeltype;
@@ -58,7 +91,7 @@ typedef struct {
     /* PME/Ewald */
     real ewaldcoeff_q;
     real ewaldcoeff_lj;
-    real sh_ewald;   /* For shifting the Ewald potential */
+    real sh_ewald;   /* -sh_ewald is added to the direct space potential */
 
     /* Dielectric constant resp. multiplication factor for charges */
     real epsilon_r;
index 573bbf12d796a83f3c5e760055b0fd5854aec162..cd504aa273134380a135f8d9486cba52ad65de1d 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014, 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.
@@ -91,6 +91,8 @@ enum
     eNR_NBNXN_RF,       eNR_NBNXN_RF_E,
     eNR_NBNXN_TAB,      eNR_NBNXN_TAB_E,
     eNR_NBNXN_EWALD,    eNR_NBNXN_EWALD_E,
+    eNR_NBNXN_LJ_FSW,   eNR_NBNXN_LJ_FSW_E,
+    eNR_NBNXN_LJ_PSW,   eNR_NBNXN_LJ_PSW_E,
     eNR_NB14,
     eNR_BORN_RADII_STILL,     eNR_BORN_RADII_HCT_OBC,
     eNR_BORN_CHAINRULE,
index f5ecbb13325de3d1406f876d975413a71b291ea8..c88c0f4f7770182615ad900945ca2444b0647b37 100644 (file)
@@ -74,6 +74,7 @@
 #include "nbnxn_consts.h"
 #include "gmx_omp_nthreads.h"
 #include "gmx_detect_hardware.h"
+#include "inputrec.h"
 
 #ifdef _MSC_VER
 /* MSVC definition for __cpuid() */
@@ -1835,11 +1836,52 @@ void init_interaction_const_tables(FILE                *fp,
     }
 }
 
-static void init_interaction_const(FILE                       *fp,
-                                   const t_commrec gmx_unused *cr,
-                                   interaction_const_t       **interaction_const,
-                                   const t_forcerec           *fr,
-                                   real                        rtab)
+static void clear_force_switch_constants(shift_consts_t *sc)
+{
+    sc->c2   = 0;
+    sc->c3   = 0;
+    sc->cpot = 0;
+}
+
+static void force_switch_constants(real p,
+                                   real rsw, real rc,
+                                   shift_consts_t *sc)
+{
+    /* Here we determine the coefficient for shifting the force to zero
+     * between distance rsw and the cut-off rc.
+     * For a potential of r^-p, we have force p*r^-(p+1).
+     * But to save flops we absorb p in the coefficient.
+     * Thus we get:
+     * force/p   = r^-(p+1) + c2*r^2 + c3*r^3
+     * potential = r^-p + c2/3*r^3 + c3/4*r^4 + cpot
+     */
+    sc->c2   =  ((p + 1)*rsw - (p + 4)*rc)/(pow(rc, p + 2)*pow(rc - rsw, 2));
+    sc->c3   = -((p + 1)*rsw - (p + 3)*rc)/(pow(rc, p + 2)*pow(rc - rsw, 3));
+    sc->cpot = -pow(rc, -p) + p*sc->c2/3*pow(rc - rsw, 3) + p*sc->c3/4*pow(rc - rsw, 4);
+}
+
+static void potential_switch_constants(real rsw, real rc,
+                                       switch_consts_t *sc)
+{
+    /* The switch function is 1 at rsw and 0 at rc.
+     * The derivative and second derivate are zero at both ends.
+     * rsw        = max(r - r_switch, 0)
+     * sw         = 1 + c3*rsw^3 + c4*rsw^4 + c5*rsw^5
+     * dsw        = 3*c3*rsw^2 + 4*c4*rsw^3 + 5*c5*rsw^4
+     * force      = force*dsw - potential*sw
+     * potential *= sw
+     */
+    sc->c3 = -10*pow(rc - rsw, -3);
+    sc->c4 =  15*pow(rc - rsw, -4);
+    sc->c5 =  -6*pow(rc - rsw, -5);
+}
+
+static void
+init_interaction_const(FILE                       *fp,
+                       const t_commrec gmx_unused *cr,
+                       interaction_const_t       **interaction_const,
+                       const t_forcerec           *fr,
+                       real                        rtab)
 {
     interaction_const_t *ic;
     gmx_bool             bUsesSimpleTables = TRUE;
@@ -1855,16 +1897,41 @@ static void init_interaction_const(FILE                       *fp,
     ic->rlistlong   = fr->rlistlong;
 
     /* Lennard-Jones */
-    ic->rvdw        = fr->rvdw;
-    if (fr->vdw_modifier == eintmodPOTSHIFT)
-    {
-        ic->sh_invrc6 = pow(ic->rvdw, -6.0);
-    }
-    else
-    {
-        ic->sh_invrc6 = 0;
+    ic->vdw_modifier = fr->vdw_modifier;
+    ic->rvdw         = fr->rvdw;
+    ic->rvdw_switch  = fr->rvdw_switch;
+    clear_force_switch_constants(&ic->dispersion_shift);
+    clear_force_switch_constants(&ic->repulsion_shift);
+
+    switch (ic->vdw_modifier)
+    {
+        case eintmodPOTSHIFT:
+            /* Only shift the potential, don't touch the force */
+            ic->dispersion_shift.cpot = -pow(ic->rvdw, -6.0);
+            ic->repulsion_shift.cpot  = -pow(ic->rvdw, -12.0);
+            break;
+        case eintmodFORCESWITCH:
+            /* Switch the force, switch and shift the potential */
+            force_switch_constants(6.0, ic->rvdw_switch, ic->rvdw,
+                                   &ic->dispersion_shift);
+            force_switch_constants(12.0, ic->rvdw_switch, ic->rvdw,
+                                   &ic->repulsion_shift);
+            break;
+        case eintmodPOTSWITCH:
+            /* Switch the potential and force */
+            potential_switch_constants(ic->rvdw_switch, ic->rvdw,
+                                       &ic->vdw_switch);
+            break;
+        case eintmodNONE:
+        case eintmodEXACTCUTOFF:
+            /* Nothing to do here */
+            break;
+        default:
+            gmx_incons("unimplemented potential modifier");
     }
 
+    ic->sh_invrc6 = -ic->dispersion_shift.cpot;
+
     /* Electrostatics */
     ic->eeltype     = fr->eeltype;
     ic->rcoulomb    = fr->rcoulomb;
@@ -1909,14 +1976,14 @@ static void init_interaction_const(FILE                       *fp,
     if (fp != NULL)
     {
         fprintf(fp, "Potential shift: LJ r^-12: %.3f r^-6 %.3f",
-                sqr(ic->sh_invrc6), ic->sh_invrc6);
+                ic->repulsion_shift.cpot, ic->dispersion_shift.cpot);
         if (ic->eeltype == eelCUT)
         {
-            fprintf(fp, ", Coulomb %.3f", ic->c_rf);
+            fprintf(fp, ", Coulomb %.3f", -ic->c_rf);
         }
         else if (EEL_PME(ic->eeltype))
         {
-            fprintf(fp, ", Ewald %.3e", ic->sh_ewald);
+            fprintf(fp, ", Ewald %.3e", -ic->sh_ewald);
         }
         fprintf(fp, "\n");
     }
@@ -2082,13 +2149,19 @@ static void init_nb_verlet(FILE                *fp,
         if (i == 0 ||
             nbv->grp[0].kernel_type != nbv->grp[i].kernel_type)
         {
+            gmx_bool bSimpleList;
+
+            bSimpleList = nbnxn_kernel_pairlist_simple(nbv->grp[i].kernel_type);
+
             snew(nbv->grp[i].nbat, 1);
             nbnxn_atomdata_init(fp,
                                 nbv->grp[i].nbat,
                                 nbv->grp[i].kernel_type,
+                                /* SIMD LJ switch kernels don't support LJ combination rules */
+                                bSimpleList && !(fr->vdw_modifier == eintmodFORCESWITCH || fr->vdw_modifier == eintmodPOTSWITCH),
                                 fr->ntype, fr->nbfp,
                                 ir->opts.ngener,
-                                nbnxn_kernel_pairlist_simple(nbv->grp[i].kernel_type) ? gmx_omp_nthreads_get(emntNonbonded) : 1,
+                                bSimpleList ? gmx_omp_nthreads_get(emntNonbonded) : 1,
                                 nb_alloc, nb_free);
         }
         else
@@ -2740,7 +2813,8 @@ void init_forcerec(FILE              *fp,
      * A little unnecessary to make both vdw and coul tables sometimes,
      * but what the heck... */
 
-    bMakeTables = fr->bcoultab || fr->bvdwtab || fr->bEwald;
+    bMakeTables = fr->bcoultab || fr->bvdwtab || fr->bEwald ||
+        (ir->eDispCorr != edispcNO && ir_vdw_switched(ir));
 
     bMakeSeparate14Table = ((!bMakeTables || fr->eeltype != eelCUT || fr->vdwtype != evdwCUT ||
                              fr->bBHAM || fr->bEwald) &&
index 1abfe492e8d220ebcaa3e81ae9779f558948f724..157f788e3fa539a6b88cea65eafc3bed76c61ff8 100644 (file)
@@ -359,10 +359,8 @@ void copy_rvec_to_nbat_real(const int *a, int na, int na_round,
     }
 }
 
-/* Determines the combination rule (or none) to be used, stores it,
- * and sets the LJ parameters required with the rule.
- */
-static void set_combination_rule_data(nbnxn_atomdata_t *nbat)
+/* Stores the LJ parameter data in a format convenient for the SIMD kernels */
+static void set_ljparam_simd_data(nbnxn_atomdata_t *nbat)
 {
     int  nt, i, j;
     real c6, c12;
@@ -516,6 +514,7 @@ nbnxn_atomdata_init_simple_exclusion_masks(nbnxn_atomdata_t *nbat)
 void nbnxn_atomdata_init(FILE *fp,
                          nbnxn_atomdata_t *nbat,
                          int nb_kernel_type,
+                         gmx_bool bTryCombinationRule,
                          int ntype, const real *nbfp,
                          int n_energygroups,
                          int nout,
@@ -637,7 +636,7 @@ void nbnxn_atomdata_init(FILE *fp,
 
     simple = nbnxn_kernel_pairlist_simple(nb_kernel_type);
 
-    if (simple)
+    if (bTryCombinationRule)
     {
         /* We prefer the geometic combination rule,
          * as that gives a slightly faster kernel than the LB rule.
@@ -669,8 +668,6 @@ void nbnxn_atomdata_init(FILE *fp,
                         nbat->comb_rule == ljcrGEOM ? "geometric" : "Lorentz-Berthelot");
             }
         }
-
-        set_combination_rule_data(nbat);
     }
     else
     {
@@ -679,6 +676,11 @@ void nbnxn_atomdata_init(FILE *fp,
         nbat->free(nbat->nbfp_comb);
     }
 
+    if (simple)
+    {
+        set_ljparam_simd_data(nbat);
+    }
+
     nbat->natoms  = 0;
     nbat->type    = NULL;
     nbat->lj_comb = NULL;
index 3ed443083efc0c5dec525b2621347a8413c15eda..989bd4b127e21f3f660795aee1ce8d4c43d9888b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -75,6 +75,7 @@ void copy_rvec_to_nbat_real(const int *a, int na, int na_round,
 void nbnxn_atomdata_init(FILE *fp,
                          nbnxn_atomdata_t *nbat,
                          int nb_kernel_type,
+                         gmx_bool bTryCombinationRule,
                          int ntype, const real *nbfp,
                          int n_energygroups,
                          int nout,
index d8be3de2e251560b57e81537cfd6351951a2bd2b..134b43e3a9d22f825bf21da5fcc6eb18be9e4f91 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -155,18 +155,18 @@ static const int nPruneKernelTypes  = 2; /* 0 - no prune, 1 - prune */
 static const nbnxn_cu_kfunc_ptr_t
     nb_default_kfunc_ptr[eelCuNR][nEnergyKernelTypes][nPruneKernelTypes] =
 {
-    { { k_nbnxn_cutoff,                     k_nbnxn_cutoff_prune },
-      { k_nbnxn_cutoff_ener,                k_nbnxn_cutoff_ener_prune } },
-    { { k_nbnxn_rf,                         k_nbnxn_rf_prune },
-      { k_nbnxn_rf_ener,                    k_nbnxn_rf_ener_prune } },
-    { { k_nbnxn_ewald_tab,                  k_nbnxn_ewald_tab_prune },
-      { k_nbnxn_ewald_tab_ener,             k_nbnxn_ewald_tab_ener_prune } },
-    { { k_nbnxn_ewald_tab_twin,             k_nbnxn_ewald_tab_twin_prune },
-      { k_nbnxn_ewald_tab_twin_ener,        k_nbnxn_ewald_twin_ener_prune } },
-    { { k_nbnxn_ewald,                      k_nbnxn_ewald_prune },
-      { k_nbnxn_ewald_ener,                 k_nbnxn_ewald_ener_prune } },
-    { { k_nbnxn_ewald_twin,                 k_nbnxn_ewald_twin_prune },
-      { k_nbnxn_ewald_twin_ener,            k_nbnxn_ewald_twin_ener_prune } },
+    { { nbnxn_kernel_ElecCut_VdwLJ_F_cuda,             nbnxn_kernel_ElecCut_VdwLJ_F_prune_cuda },
+      { nbnxn_kernel_ElecCut_VdwLJ_VF_cuda,            nbnxn_kernel_ElecCut_VdwLJ_VF_prune_cuda } },
+    { { nbnxn_kernel_ElecRF_VdwLJ_F_cuda,              nbnxn_kernel_ElecRF_VdwLJ_F_prune_cuda },
+      { nbnxn_kernel_ElecRF_VdwLJ_VF_cuda,             nbnxn_kernel_ElecRF_VdwLJ_VF_prune_cuda } },
+    { { nbnxn_kernel_ElecEwQSTab_VdwLJ_F_cuda,         nbnxn_kernel_ElecEwQSTab_VdwLJ_F_prune_cuda },
+      { nbnxn_kernel_ElecEwQSTab_VdwLJ_VF_cuda,        nbnxn_kernel_ElecEwQSTab_VdwLJ_VF_prune_cuda } },
+    { { nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_F_cuda,  nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_F_prune_cuda },
+      { nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_VF_cuda, nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_VF_prune_cuda } },
+    { { nbnxn_kernel_ElecEw_VdwLJ_F_cuda,              nbnxn_kernel_ElecEw_VdwLJ_F_prune_cuda },
+      { nbnxn_kernel_ElecEw_VdwLJ_VF_cuda,             nbnxn_kernel_ElecEw_VdwLJ_VF_prune_cuda } },
+    { { nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_cuda,       nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_prune_cuda },
+      { nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_cuda,      nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_prune_cuda } }
 };
 
 /*! Return a pointer to the kernel version to be executed at the current step. */
index fd75a3d1f0cc08c6bc4cf2015e65bfa2583cea47..cae773528ad88f46f1b3c22fc871605d148fe44a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -279,6 +279,13 @@ static void init_nbparam(cu_nbparam_t              *nbp,
     nbp->rlist_sq    = ic->rlist * ic->rlist;
     nbp->sh_invrc6   = ic->sh_invrc6;
 
+    /* TODO: implemented LJ force- and potential-switch CUDA kernels */
+    if (!(ic->vdw_modifier == eintmodNONE ||
+          ic->vdw_modifier == eintmodPOTSHIFT))
+    {
+        gmx_fatal(FARGS, "The CUDA kernels do not yet support switched LJ interactions");
+    }
+
     if (ic->eeltype == eelCUT)
     {
         nbp->eeltype = eelCuCUT;
index 33214acd45380c919da473f7eb266d8698b63896..bc3dd5f43c4c348127f7a1238b52ef3c87154170 100644 (file)
@@ -64,15 +64,15 @@ __launch_bounds__(64, 16)
 #endif
 #ifdef PRUNE_NBL
 #ifdef CALC_ENERGIES
-__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn, _ener_prune)
+__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _VF_prune_cuda)
 #else
-__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn, _prune)
+__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _F_prune_cuda)
 #endif
 #else
 #ifdef CALC_ENERGIES
-__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn, _ener)
+__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _VF_cuda)
 #else
-__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn)
+__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _F_cuda)
 #endif
 #endif
 (const cu_atomdata_t atdat,
index 45640b17c1d7d8a32d184b0339733622d182c7e1..8f8c53efe75d658c3abb65348746c5766ae446de 100644 (file)
 
 /* Analytical plain cut-off kernels */
 #define EL_CUTOFF
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _cutoff ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecCut_VdwLJ ## __VA_ARGS__
 #include "nbnxn_cuda_kernel.cuh"
 #undef EL_CUTOFF
 #undef NB_KERNEL_FUNC_NAME
 
 /* Analytical reaction-field kernels */
 #define EL_RF
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _rf ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecRF_VdwLJ ## __VA_ARGS__
 #include "nbnxn_cuda_kernel.cuh"
 #undef EL_RF
 #undef NB_KERNEL_FUNC_NAME
@@ -61,7 +61,7 @@
 /* Analytical Ewald interaction kernels
  */
 #define EL_EWALD_ANA
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEw_VdwLJ ## __VA_ARGS__
 #include "nbnxn_cuda_kernel.cuh"
 #undef EL_EWALD_ANA
 #undef NB_KERNEL_FUNC_NAME
@@ -70,7 +70,7 @@
  */
 #define EL_EWALD_ANA
 #define VDW_CUTOFF_CHECK
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald_twin ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEwTwinCut_VdwLJ ## __VA_ARGS__
 #include "nbnxn_cuda_kernel.cuh"
 #undef EL_EWALD_ANA
 #undef VDW_CUTOFF_CHECK
@@ -78,7 +78,7 @@
 
 /* Tabulated Ewald interaction kernels */
 #define EL_EWALD_TAB
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald_tab ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEwQSTab_VdwLJ ## __VA_ARGS__
 #include "nbnxn_cuda_kernel.cuh"
 #undef EL_EWALD_TAB
 #undef NB_KERNEL_FUNC_NAME
@@ -86,7 +86,7 @@
 /* Tabulated Ewald interaction kernels with twin-range cut-off */
 #define EL_EWALD_TAB
 #define VDW_CUTOFF_CHECK
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald_tab_twin ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEwQSTabTwinCut_VdwLJ ## __VA_ARGS__
 #include "nbnxn_cuda_kernel.cuh"
 #undef EL_EWALD_TAB
 #undef VDW_CUTOFF_CHECK
index 2d6c91824aec29abec6c233a995fc7b9d4373fb7..68d90850791f29f51dcff408799a88983bfef131 100755 (executable)
@@ -79,7 +79,7 @@ import collections # Requires Python 2.7
 sys.path.append('../../../../../admin')
 from copyright import create_copyright_header
 
-FileHeader = create_copyright_header('2012,2013')
+FileHeader = create_copyright_header('2012,2013,2014')
 FileHeader += """/*
  * Note: this file was generated by the Verlet kernel generator for
  * kernel type {0}.
@@ -99,32 +99,34 @@ def read_kernel_template(filename):
 # The dict order must match the order of an enumeration in
 # nbnxn_kernel_simd_template.c.pre
 ElectrostaticsDict = collections.OrderedDict()
-ElectrostaticsDict['rf'] = { 'define' : '#define CALC_COUL_RF' }
-ElectrostaticsDict['tab'] = { 'define' : '#define CALC_COUL_TAB' }
-ElectrostaticsDict['tab_twin'] = { 'define' : '#define CALC_COUL_TAB\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
-ElectrostaticsDict['ewald'] = { 'define' : '#define CALC_COUL_EWALD' }
-ElectrostaticsDict['ewald_twin'] = { 'define' : '#define CALC_COUL_EWALD\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
-
+ElectrostaticsDict['ElecRF'] = { 'define' : '#define CALC_COUL_RF' }
+ElectrostaticsDict['ElecQSTab'] = { 'define' : '#define CALC_COUL_TAB' }
+ElectrostaticsDict['ElecQSTabTwinCut'] = { 'define' : '#define CALC_COUL_TAB\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
+ElectrostaticsDict['ElecEw'] = { 'define' : '#define CALC_COUL_EWALD' }
+ElectrostaticsDict['ElecEwTwinCut'] = { 'define' : '#define CALC_COUL_EWALD\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
 # The dict order must match the order of a C enumeration.
-LJCombinationRuleDict = collections.OrderedDict()
-LJCombinationRuleDict['geom'] = { 'define' : '#define LJ_COMB_GEOM' }
-LJCombinationRuleDict['lb'] = { 'define' : '#define LJ_COMB_LB' }
-LJCombinationRuleDict['none'] = { 'define' : '/* Use no LJ combination rule */' }
+VdwTreatmentDict = collections.OrderedDict()
+VdwTreatmentDict['VdwLJCombGeom'] = { 'define' : '#define LJ_COMB_GEOM' }
+VdwTreatmentDict['VdwLJCombLB'] = { 'define' : '#define LJ_COMB_LB' }
+VdwTreatmentDict['VdwLJ'] = { 'define' : '/* Use no LJ combination rule */' }
+VdwTreatmentDict['VdwLJFSw'] = { 'define' : '/* Use no LJ combination rule */\n#define LJ_FORCE_SWITCH' }
+VdwTreatmentDict['VdwLJPSw'] = { 'define' : '/* Use no LJ combination rule */\n#define LJ_POT_SWITCH' }
 
 # This is OK as an unordered dict
 EnergiesComputationDict = {
-    'ener'    : {
+    'F'  : {
+        'function type' : 'nbk_func_noener',
+        'define' : '/* Will not calculate energies */',
+    },
+    'VF'    : {
         'function type' : 'nbk_func_ener',
         'define' : '#define CALC_ENERGIES',
     },
-    'energrp' : {
+    'VgrpF' : {
         'function type' : 'nbk_func_ener',
         'define' : '#define CALC_ENERGIES\n#define ENERGY_GROUPS',
     },
-    'noener'  : {
-        'function type' : 'nbk_func_noener',
-        'define' : '/* Will not calculate energies */',
-    },
 }
 
 # This is OK as an unordered dict
@@ -159,20 +161,21 @@ KernelsHeaderTemplate = read_kernel_template("nbnxn_kernel_simd_template.h.pre")
 #   for each kernel, a file defining the single C function for that kernel
 for type in VerletKernelTypeDict:
     DirName = "../simd_{0}".format(type)
-    KernelNamePrefix = 'nbnxn_kernel_simd_{0}'.format(type)
-    KernelsHeaderFileName = "{0}.h".format(KernelNamePrefix)
+    KernelNamePrefix = 'nbnxn_kernel'
+    KernelsName = "{0}_simd_{1}".format(KernelNamePrefix,type)
+    KernelsHeaderFileName = "{0}.h".format(KernelsName,type)
     KernelFunctionLookupTable = {}
     KernelDeclarations = ''
-    KernelTemplate = read_kernel_template("{0}_kernel.c.pre".format(KernelNamePrefix))
+    KernelTemplate = read_kernel_template("{0}_kernel.c.pre".format(KernelsName))
 
     # Loop over all kernels
     for ener in EnergiesComputationDict:
         KernelFunctionLookupTable[ener] = '{\n'
         for elec in ElectrostaticsDict:
             KernelFunctionLookupTable[ener] += '    {\n'
-            for ljcomb in LJCombinationRuleDict:
-                KernelName = ('{0}_{1}_comb_{2}_{3}'
-                              .format(KernelNamePrefix,elec,ljcomb,ener))
+            for ljtreat in VdwTreatmentDict:
+                KernelName = ('{0}_{1}_{2}_{3}_{4}'
+                              .format(KernelNamePrefix,elec,ljtreat,ener,type))
 
                 # Declare the kernel function
                 KernelDeclarations += ('{1:21} {0};\n'
@@ -185,7 +188,7 @@ for type in VerletKernelTypeDict:
                     kernelfp.write(KernelTemplate
                                    .format(VerletKernelTypeDict[type]['Define'],
                                            ElectrostaticsDict[elec]['define'],
-                                           LJCombinationRuleDict[ljcomb]['define'],
+                                           VdwTreatmentDict[ljtreat]['define'],
                                            EnergiesComputationDict[ener]['define'],
                                            KernelsHeaderFileName,
                                            KernelName,
@@ -206,13 +209,13 @@ for type in VerletKernelTypeDict:
     with open('{0}/{1}'.format(DirName,KernelsHeaderFileName),'w') as fp:
         fp.write(FileHeader.format(type))
         fp.write(KernelsHeaderTemplate
-                 .format(KernelNamePrefix,
-                         " " * (len(KernelNamePrefix) + 1),
+                 .format(KernelsName,
+                         " " * (len(KernelsName) + 1),
                          KernelDeclarations))
 
     # Write the file defining the kernel dispatcher
     # function for this type
-    with open('{0}/{1}'.format(DirName,"{0}.c".format(KernelNamePrefix)),'w') as fp:
+    with open('{0}/{1}'.format(DirName,"{0}.c".format(KernelsName,type)),'w') as fp:
         fp.write(FileHeader.format(type))
         fp.write(KernelDispatcherTemplate
                  .format(VerletKernelTypeDict[type]['Define'],
@@ -220,11 +223,11 @@ for type in VerletKernelTypeDict:
                          VerletKernelTypeDict[type]['WidthCheck'],
                          VerletKernelTypeDict[type]['UnrollSize'],
                          KernelsHeaderFileName,
-                         KernelNamePrefix,
-                         ' ' * (len(KernelNamePrefix)+1),
-                         KernelFunctionLookupTable['ener'],
-                         KernelFunctionLookupTable['energrp'],
-                         KernelFunctionLookupTable['noener'],
+                         KernelsName,
+                         ' ' * (len(KernelsName)+1),
+                         KernelFunctionLookupTable['F'],
+                         KernelFunctionLookupTable['VF'],
+                         KernelFunctionLookupTable['VgrpF'],
                      )
              )
 
index 2b5419414d7b3743f604625891dfa556400a47b4..bbc8188528f6057fccc3f282cc33270f89522b09 100644 (file)
 #ifdef {0}
 
 {1}
-#include "gmx_simd_macros.h"
-#include "gmx_simd_vec.h"
+#include "gromacs/simd/macros.h"
+#include "gromacs/simd/vector_operations.h"
 {2}
 #define GMX_SIMD_J_UNROLL_SIZE {3}
 #include "{4}"
 #include "../nbnxn_kernel_common.h"
 #include "gmx_omp_nthreads.h"
 #include "types/force_flags.h"
+#include "gmx_fatal.h"
 
 /*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels
  */
@@ -56,12 +57,15 @@ enum {{
     coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR
 }};
 
-/* Declare and define the kernel function pointer lookup tables. */
-static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] =
+/* Declare and define the kernel function pointer lookup tables.
+ * The minor index of the array goes over both the LJ combination rules,
+ * which is only supported by plain cut-off, and the LJ switch functions.
+ */
+static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR+2] =
 {7}
-static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR+2] =
 {8}
-static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR+2] =
 {9}
 
 static void
@@ -125,7 +129,7 @@ void
 {{
     int                nnbl;
     nbnxn_pairlist_t **nbl;
-    int                coult;
+    int                coult, ljtreatment = 0;
     int                nb;
 
     nnbl = nbl_list->nnbl;
@@ -161,6 +165,23 @@ void
         }}
     }}
 
+    switch (ic->vdw_modifier)
+    {{
+        case eintmodNONE:
+        case eintmodPOTSHIFT:
+            ljtreatment = nbat->comb_rule;
+            break;
+        /* Switch functions follow after cut-off combination rule kernels */
+        case eintmodFORCESWITCH:
+            ljtreatment = ljcrNR;
+            break;
+        case eintmodPOTSWITCH:
+            ljtreatment = ljcrNR + 1;
+            break;
+        default:
+            gmx_incons("Unsupported VdW interaction modifier");
+    }}
+
 #pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded))
     for (nb = 0; nb < nnbl; nb++)
     {{
@@ -191,11 +212,11 @@ void
         if (!(force_flags & GMX_FORCE_ENERGY))
         {{
             /* Don't calculate energies */
-            p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat,
-                                                 ic,
-                                                 shift_vec,
-                                                 out->f,
-                                                 fshift_p);
+            p_nbk_noener[coult][ljtreatment](nbl[nb], nbat,
+                                             ic,
+                                             shift_vec,
+                                             out->f,
+                                             fshift_p);
         }}
         else if (out->nV == 1)
         {{
@@ -203,13 +224,13 @@ void
             out->Vvdw[0] = 0;
             out->Vc[0]   = 0;
 
-            p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat,
-                                               ic,
-                                               shift_vec,
-                                               out->f,
-                                               fshift_p,
-                                               out->Vvdw,
-                                               out->Vc);
+            p_nbk_ener[coult][ljtreatment](nbl[nb], nbat,
+                                           ic,
+                                           shift_vec,
+                                           out->f,
+                                           fshift_p,
+                                           out->Vvdw,
+                                           out->Vc);
         }}
         else
         {{
@@ -225,13 +246,13 @@ void
                 out->VSc[i] = 0;
             }}
 
-            p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat,
-                                                  ic,
-                                                  shift_vec,
-                                                  out->f,
-                                                  fshift_p,
-                                                  out->VSvdw,
-                                                  out->VSc);
+            p_nbk_energrp[coult][ljtreatment](nbl[nb], nbat,
+                                              ic,
+                                              shift_vec,
+                                              out->f,
+                                              fshift_p,
+                                              out->VSvdw,
+                                              out->VSc);
 
             reduce_group_energies(nbat->nenergrp, nbat->neg_2log,
                                   out->VSvdw, out->VSc,
index 08cf984af9e0685906faea98d3ff0fb783e6f0b8..e659e5a262d33e7c131f034c1ead81ae00c7dcec 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 
 /*! \brief Typedefs for declaring lookup tables of kernel functions.
  */
+
+typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t     *nbl,
+                                  const nbnxn_atomdata_t     *nbat,
+                                  const interaction_const_t  *ic,
+                                  rvec                       *shift_vec,
+                                  real                       *f,
+                                  real                       *fshift);
+
 typedef void (*p_nbk_func_ener)(const nbnxn_pairlist_t     *nbl,
                                 const nbnxn_atomdata_t     *nbat,
                                 const interaction_const_t  *ic,
@@ -58,72 +66,37 @@ typedef void (*p_nbk_func_ener)(const nbnxn_pairlist_t     *nbl,
                                 real                       *Vvdw,
                                 real                       *Vc);
 
-typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t     *nbl,
-                                  const nbnxn_atomdata_t     *nbat,
-                                  const interaction_const_t  *ic,
-                                  rvec                       *shift_vec,
-                                  real                       *f,
-                                  real                       *fshift);
-
 /* Analytical reaction-field kernels */
 #define CALC_COUL_RF
-
-/* Include the force+energy kernels */
-#define CALC_ENERGIES
-#include "nbnxn_kernel_ref_outer.h"
-#undef CALC_ENERGIES
-
-/* Include the force+energygroups kernels */
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-#include "nbnxn_kernel_ref_outer.h"
-#undef ENERGY_GROUPS
-#undef CALC_ENERGIES
-
-/* Include the force only kernels */
-#include "nbnxn_kernel_ref_outer.h"
-
+#include "nbnxn_kernel_ref_includes.h"
+#define VDW_FORCE_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_FORCE_SWITCH
+#define VDW_POT_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_POT_SWITCH
 #undef CALC_COUL_RF
 
 
 /* Tabulated exclusion interaction electrostatics kernels */
 #define CALC_COUL_TAB
-
-/* Include the force+energy kernels */
-#define CALC_ENERGIES
-#include "nbnxn_kernel_ref_outer.h"
-#undef CALC_ENERGIES
-
-/* Include the force+energygroups kernels */
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-#include "nbnxn_kernel_ref_outer.h"
-#undef ENERGY_GROUPS
-#undef CALC_ENERGIES
-
-/* Include the force only kernels */
-#include "nbnxn_kernel_ref_outer.h"
-
+#include "nbnxn_kernel_ref_includes.h"
+#define VDW_FORCE_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_FORCE_SWITCH
+#define VDW_POT_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_POT_SWITCH
 /* Twin-range cut-off kernels */
 #define VDW_CUTOFF_CHECK
-
-/* Include the force+energy kernels */
-#define CALC_ENERGIES
-#include "nbnxn_kernel_ref_outer.h"
-#undef CALC_ENERGIES
-
-/* Include the force+energygroups kernels */
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-#include "nbnxn_kernel_ref_outer.h"
-#undef ENERGY_GROUPS
-#undef CALC_ENERGIES
-
-/* Include the force only kernels */
-#include "nbnxn_kernel_ref_outer.h"
-
+#include "nbnxn_kernel_ref_includes.h"
+#define VDW_FORCE_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_FORCE_SWITCH
+#define VDW_POT_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_POT_SWITCH
 #undef VDW_CUTOFF_CHECK
-
 #undef CALC_COUL_TAB
 
 
@@ -131,25 +104,29 @@ enum {
     coultRF, coultTAB, coultTAB_TWIN, coultNR
 };
 
-p_nbk_func_ener p_nbk_c_ener[coultNR] =
+enum {
+    vdwtCUT, vdwtFSWITCH, vdwtPSWITCH, vdwtNR
+};
+
+p_nbk_func_noener p_nbk_c_noener[coultNR][vdwtNR] =
 {
-    nbnxn_kernel_ref_rf_ener,
-    nbnxn_kernel_ref_tab_ener,
-    nbnxn_kernel_ref_tab_twin_ener
+    { nbnxn_kernel_ElecRF_VdwLJ_F_ref,           nbnxn_kernel_ElecRF_VdwLJFsw_F_ref,           nbnxn_kernel_ElecRF_VdwLJPsw_F_ref           },
+    { nbnxn_kernel_ElecQSTab_VdwLJ_F_ref,        nbnxn_kernel_ElecQSTab_VdwLJFsw_F_ref,        nbnxn_kernel_ElecQSTab_VdwLJPsw_F_ref        },
+    { nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJFsw_F_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJPsw_F_ref }
 };
 
-p_nbk_func_ener p_nbk_c_energrp[coultNR] =
+p_nbk_func_ener p_nbk_c_ener[coultNR][vdwtNR] =
 {
-    nbnxn_kernel_ref_rf_energrp,
-    nbnxn_kernel_ref_tab_energrp,
-    nbnxn_kernel_ref_tab_twin_energrp
+    { nbnxn_kernel_ElecRF_VdwLJ_VF_ref,           nbnxn_kernel_ElecRF_VdwLJFsw_VF_ref,           nbnxn_kernel_ElecRF_VdwLJPsw_VF_ref           },
+    { nbnxn_kernel_ElecQSTab_VdwLJ_VF_ref,        nbnxn_kernel_ElecQSTab_VdwLJFsw_VF_ref,        nbnxn_kernel_ElecQSTab_VdwLJPsw_VF_ref        },
+    { nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJFsw_VF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJPsw_VF_ref }
 };
 
-p_nbk_func_noener p_nbk_c_noener[coultNR] =
+p_nbk_func_ener p_nbk_c_energrp[coultNR][vdwtNR] =
 {
-    nbnxn_kernel_ref_rf_noener,
-    nbnxn_kernel_ref_tab_noener,
-    nbnxn_kernel_ref_tab_twin_noener
+    { nbnxn_kernel_ElecRF_VdwLJ_VgrpF_ref,           nbnxn_kernel_ElecRF_VdwLJFsw_VgrpF_ref,           nbnxn_kernel_ElecRF_VdwLJPsw_VgrpF_ref           },
+    { nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_ref,        nbnxn_kernel_ElecQSTab_VdwLJFsw_VgrpF_ref,        nbnxn_kernel_ElecQSTab_VdwLJPsw_VgrpF_ref        },
+    { nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJFsw_VgrpF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJPsw_VgrpF_ref }
 };
 
 void
@@ -166,6 +143,7 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list,
     int                nnbl;
     nbnxn_pairlist_t **nbl;
     int                coult;
+    int                vdwt;
     int                nb;
 
     nnbl = nbl_list->nnbl;
@@ -187,6 +165,23 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list,
         }
     }
 
+    switch (ic->vdw_modifier)
+    {
+        case eintmodPOTSHIFT:
+        case eintmodNONE:
+            vdwt = vdwtCUT;
+            break;
+        case eintmodFORCESWITCH:
+            vdwt = vdwtFSWITCH;
+            break;
+        case eintmodPOTSWITCH:
+            vdwt = vdwtPSWITCH;
+            break;
+        default:
+            gmx_incons("Unsupported VdW modifier");
+            break;
+    }
+
 #pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded))
     for (nb = 0; nb < nnbl; nb++)
     {
@@ -217,11 +212,11 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list,
         if (!(force_flags & GMX_FORCE_ENERGY))
         {
             /* Don't calculate energies */
-            p_nbk_c_noener[coult](nbl[nb], nbat,
-                                  ic,
-                                  shift_vec,
-                                  out->f,
-                                  fshift_p);
+            p_nbk_c_noener[coult][vdwt](nbl[nb], nbat,
+                                        ic,
+                                        shift_vec,
+                                        out->f,
+                                        fshift_p);
         }
         else if (out->nV == 1)
         {
@@ -229,13 +224,13 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list,
             out->Vvdw[0] = 0;
             out->Vc[0]   = 0;
 
-            p_nbk_c_ener[coult](nbl[nb], nbat,
-                                ic,
-                                shift_vec,
-                                out->f,
-                                fshift_p,
-                                out->Vvdw,
-                                out->Vc);
+            p_nbk_c_ener[coult][vdwt](nbl[nb], nbat,
+                                      ic,
+                                      shift_vec,
+                                      out->f,
+                                      fshift_p,
+                                      out->Vvdw,
+                                      out->Vc);
         }
         else
         {
@@ -251,13 +246,13 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list,
                 out->Vc[i] = 0;
             }
 
-            p_nbk_c_energrp[coult](nbl[nb], nbat,
-                                   ic,
-                                   shift_vec,
-                                   out->f,
-                                   fshift_p,
-                                   out->Vvdw,
-                                   out->Vc);
+            p_nbk_c_energrp[coult][vdwt](nbl[nb], nbat,
+                                         ic,
+                                         shift_vec,
+                                         out->f,
+                                         fshift_p,
+                                         out->Vvdw,
+                                         out->Vc);
         }
     }
 
diff --git a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_includes.h b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_includes.h
new file mode 100644 (file)
index 0000000..9144714
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2013,2014, 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.
+ */
+
+
+/* This file includes all required (non-)energy flavors of the kernel
+ * outer and inner loops, given a Coulomb and VdW treatment.
+ */
+
+/* Include the force only kernels */
+#include "nbnxn_kernel_ref_outer.h"
+
+/* Include the force+energy kernels */
+#define CALC_ENERGIES
+#include "nbnxn_kernel_ref_outer.h"
+#undef CALC_ENERGIES
+
+/* Include the force+energygroups kernels */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+#include "nbnxn_kernel_ref_outer.h"
+#undef ENERGY_GROUPS
+#undef CALC_ENERGIES
index a4adc825b29d6c5b590a01fa54d9c33d0afd25a4..6c9c89dec45c10843330b984ed1142bf319bf03a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
             real rsq, rinv;
             real rinvsq, rinvsix;
             real c6, c12;
-            real FrLJ6 = 0, FrLJ12 = 0, VLJ = 0;
+            real FrLJ6 = 0, FrLJ12 = 0, frLJ = 0, VLJ = 0;
+#if defined VDW_FORCE_SWITCH || defined VDW_POT_SWITCH
+            real r, rsw;
+#endif
+
 #ifdef CALC_COULOMB
             real qq;
             real fcoul;
@@ -90,9 +94,7 @@
              * (if appropriate) the i and j indices are
              * unsuitable for this kind of inner loop. */
             real skipmask;
-#ifdef VDW_CUTOFF_CHECK
-            real skipmask_rvdw;
-#endif
+
 #ifdef CHECK_EXCLS
             /* A multiply mask used to zero an interaction
              * when that interaction should be excluded
             {
                 rinvsix = interact*rinvsq*rinvsq*rinvsq;
 
-#ifdef VDW_CUTOFF_CHECK
-                skipmask_rvdw = (rsq < rvdw2);
-                rinvsix      *= skipmask_rvdw;
-#endif
-
                 c6      = nbfp[type_i_off+type[aj]*2  ];
                 c12     = nbfp[type_i_off+type[aj]*2+1];
                 FrLJ6   = c6*rinvsix;
                 FrLJ12  = c12*rinvsix*rinvsix;
-                /* 6 flops for r^-2 + LJ force */
-#ifdef CALC_ENERGIES
-                VLJ     = (FrLJ12 - c12*sh_invrc6*sh_invrc6)/12 -
-                    (FrLJ6 - c6*sh_invrc6)/6;
+                frLJ    = FrLJ12 - FrLJ6;
+                /* 7 flops for r^-2 + LJ force */
+#if defined CALC_ENERGIES || defined VDW_POT_SWITCH
+                VLJ     = (FrLJ12 + c12*ic->repulsion_shift.cpot)/12 -
+                    (FrLJ6 + c6*ic->dispersion_shift.cpot)/6;
+                /* 7 flops for LJ energy */
+#endif
+
+#if defined VDW_FORCE_SWITCH || defined VDW_POT_SWITCH
+                /* Force or potential switching from ic->rvdw_switch */
+                r       = rsq*rinv;
+                rsw     = r - ic->rvdw_switch;
+                rsw     = (rsw >= 0.0 ? rsw : 0.0);
+#endif
+#ifdef VDW_FORCE_SWITCH
+                frLJ   +=
+                    -c6*(ic->dispersion_shift.c2 + ic->dispersion_shift.c3*rsw)*rsw*rsw*r
+                    + c12*(ic->repulsion_shift.c2 + ic->repulsion_shift.c3*rsw)*rsw*rsw*r;
+#if defined CALC_ENERGIES
+                VLJ    +=
+                    -c6*(-ic->dispersion_shift.c2/3 - ic->dispersion_shift.c3/4*rsw)*rsw*rsw*rsw
+                    + c12*(-ic->repulsion_shift.c2/3 - ic->repulsion_shift.c3/4*rsw)*rsw*rsw*rsw;
+#endif
+#endif
+
+#if defined CALC_ENERGIES || defined VDW_POT_SWITCH
+                /* Masking shoule be done after force switching,
+                 * but before potential switching.
+                 */
                 /* Need to zero the interaction if r >= rcut
                  * or there should be exclusion. */
                 VLJ     = VLJ * skipmask * interact;
-                /* 9 flops for LJ energy */
+                /* 2 more flops for LJ energy */
+#endif
+
+#ifdef VDW_POT_SWITCH
+                {
+                    real sw, dsw;
+
+                    sw    = 1.0 + (swV3 + (swV4+ swV5*rsw)*rsw)*rsw*rsw*rsw;
+                    dsw   = (swF2 + (swF3 + swF4*rsw)*rsw)*rsw*rsw;
+
+                    frLJ  = frLJ*sw - r*VLJ*dsw;
+                    VLJ  *= sw;
+                }
+#endif
+
 #ifdef VDW_CUTOFF_CHECK
-                VLJ    *= skipmask_rvdw;
+                /* Mask for VdW cut-off shorter than Coulomb cut-off */
+                {
+                    real skipmask_rvdw;
+
+                    skipmask_rvdw = (rsq < rvdw2);
+                    frLJ         *= skipmask_rvdw;
+#ifdef CALC_ENERGIES
+                    VLJ    *= skipmask_rvdw;
 #endif
+                }
+#endif
+
+#ifdef CALC_ENERGIES
 #ifdef ENERGY_GROUPS
                 Vvdw[egp_sh_i[i]+((egp_cj>>(nbat->neg_2log*j)) & egp_mask)] += VLJ;
 #else
             if (i < UNROLLI/2)
 #endif
             {
-                fscal = (FrLJ12 - FrLJ6)*rinvsq + fcoul;
-                /* 3 flops for scalar LJ+Coulomb force */
+                fscal = frLJ*rinvsq + fcoul;
+                /* 2 flops for scalar LJ+Coulomb force */
             }
 #ifdef HALF_LJ
             else
             }
 #endif
 #else
-            fscal = (FrLJ12 - FrLJ6)*rinvsq;
+            fscal = frLJ*rinvsq;
 #endif
             fx = fscal*dx;
             fy = fscal*dy;
index 8d4c358ec781eb5d509a589b11144d3e10598d07..e68a300d05b85bf5a4b0f788f694597487e11ed9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 #define CALC_SHIFTFORCES
 
 #ifdef CALC_COUL_RF
-#define NBK_FUNC_NAME(base, ene) base ## _rf_ ## ene
+#define NBK_FUNC_NAME2(ljt, feg) nbnxn_kernel ## _ElecRF ## ljt ## feg ## _ref
 #endif
 #ifdef CALC_COUL_TAB
 #ifndef VDW_CUTOFF_CHECK
-#define NBK_FUNC_NAME(base, ene) base ## _tab_ ## ene
+#define NBK_FUNC_NAME2(ljt, feg) nbnxn_kernel ## _ElecQSTab ## ljt ## feg ## _ref
 #else
-#define NBK_FUNC_NAME(base, ene) base ## _tab_twin_ ## ene
+#define NBK_FUNC_NAME2(ljt, feg) nbnxn_kernel ## _ElecQSTabTwinCut ## ljt ## feg ## _ref
+#endif
+#endif
+
+#ifdef VDW_FORCE_SWITCH
+#define NBK_FUNC_NAME(feg) NBK_FUNC_NAME2(_VdwLJFsw, feg)
+#else
+#ifdef VDW_POT_SWITCH
+#define NBK_FUNC_NAME(feg) NBK_FUNC_NAME2(_VdwLJPsw, feg)
+#else
+#define NBK_FUNC_NAME(feg) NBK_FUNC_NAME2(_VdwLJ, feg)
 #endif
 #endif
 
 static void
 #ifndef CALC_ENERGIES
-NBK_FUNC_NAME(nbnxn_kernel_ref, noener)
+NBK_FUNC_NAME(_F)
 #else
 #ifndef ENERGY_GROUPS
-NBK_FUNC_NAME(nbnxn_kernel_ref, ener)
+NBK_FUNC_NAME(_VF)
 #else
-NBK_FUNC_NAME(nbnxn_kernel_ref, energrp)
+NBK_FUNC_NAME(_VgrpF)
 #endif
 #endif
 #undef NBK_FUNC_NAME
+#undef NBK_FUNC_NAME2
 (const nbnxn_pairlist_t     *nbl,
  const nbnxn_atomdata_t     *nbat,
  const interaction_const_t  *ic,
@@ -122,7 +133,10 @@ NBK_FUNC_NAME(nbnxn_kernel_ref, energrp)
     int        egp_mask;
     int        egp_sh_i[UNROLLI];
 #endif
-    real       sh_invrc6;
+#endif
+#ifdef VDW_POT_SWITCH
+    real       swV3, swV4, swV5;
+    real       swF2, swF3, swF4;
 #endif
 
 #ifdef CALC_COUL_RF
@@ -150,8 +164,13 @@ NBK_FUNC_NAME(nbnxn_kernel_ref, energrp)
     int npair = 0;
 #endif
 
-#ifdef CALC_ENERGIES
-    sh_invrc6 = ic->sh_invrc6;
+#ifdef VDW_POT_SWITCH
+    swV3 = ic->vdw_switch.c3;
+    swV4 = ic->vdw_switch.c4;
+    swV5 = ic->vdw_switch.c5;
+    swF2 = 3*ic->vdw_switch.c3;
+    swF3 = 4*ic->vdw_switch.c4;
+    swF4 = 5*ic->vdw_switch.c5;
 #endif
 
 #ifdef CALC_COUL_RF
similarity index 83%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn.c
index 0612705233e445d7f257455ff077362318f47756..f7c004ad483b77b78383fe8b0f90bcd3591b8ed0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
  */
 /*
  * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
+ * kernel type 2xnn.
  */
 
 /* Some target architectures compile kernels for only some NBNxN
  * kernel flavours, but the code is generated before the target
  * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
  * function definition when the kernel will never be called.
  */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_EWALD
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
 /* Will not calculate energies */
 
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
                                                 const interaction_const_t gmx_unused *ic,
                                                 rvec                      gmx_unused *shift_vec,
@@ -67,21 +67,21 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_un
                                                 real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
                                                 const interaction_const_t gmx_unused *ic,
                                                 rvec                      gmx_unused *shift_vec,
                                                 real                      gmx_unused *f,
                                                 real                      gmx_unused *fshift)
 #endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
 {
 /* No need to call gmx_incons() here, because the only function
  * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
  * instead call gmx_incons().
  */
 }
-#endif /* GMX_NBNXN_SIMD_4XN */
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn.c
index f54451618df12740cd05d7bf1218255d3c058867..4eb790ac543a3b05bc15cc38ec83127f31028cff 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_u
                                                  real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn.c
index 540a2cf46911c66364f0b91d27f43745692e216e..9f681e18703cceb1b927406dc6db423977756fb1 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -58,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                     const nbnxn_atomdata_t    gmx_unused *nbat,
                                                     const interaction_const_t gmx_unused *ic,
                                                     rvec                      gmx_unused *shift_vec,
@@ -68,7 +68,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t    gm
                                                     real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                     const nbnxn_atomdata_t    gmx_unused *nbat,
                                                     const interaction_const_t gmx_unused *ic,
                                                     rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn.c
index f252fb05640d59feee51525bd4b65ff0a0050d81..90d0155000d1169eaf8b339d579477efdd15731c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,8 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_EWALD
-/* Use no LJ combination rule */
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
 /* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_2XNN
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t    gmx_unus
                                               real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn.c
index fd8be60cb271009f6dbfe4076fed3802dfc71834..0081117f9486e48d55808ed84bb2bdbff74211eb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unu
                                                real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn.c
index b86316f59a9f37ee47db121dbea3a76dff37198a..57237425ad7d77ca926682874c73e0d4ac4c50af 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -58,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
@@ -68,7 +68,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_
                                                   real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..8895d91
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift,
+                                           real                      gmx_unused *Vvdw,
+                                           real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 92%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn.c
index ecf093f80fce3243a7342b22302fc5b24ca59282..85b35984455254d4f0d557b4b107c1266a6e82ec 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,9 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
 #define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_2XNN
@@ -56,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
@@ -66,7 +68,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused
                                             real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..d91b063
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                               const nbnxn_atomdata_t    gmx_unused *nbat,
+                                               const interaction_const_t gmx_unused *ic,
+                                               rvec                      gmx_unused *shift_vec,
+                                               real                      gmx_unused *f,
+                                               real                      gmx_unused *fshift,
+                                               real                      gmx_unused *Vvdw,
+                                               real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                               const nbnxn_atomdata_t    gmx_unused *nbat,
+                                               const interaction_const_t gmx_unused *ic,
+                                               rvec                      gmx_unused *shift_vec,
+                                               real                      gmx_unused *f,
+                                               real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..82757f0
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift,
+                                           real                      gmx_unused *Vvdw,
+                                           real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn.c
index b15376ce3ade8fccc5f71effa033ae2a7a922d43..24728fc6aec27ac88d4f8d200c3977eeb42cce42 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,9 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_2XNN
@@ -56,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
@@ -66,7 +68,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t    gmx_unused
                                             real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn.c
index 0ebfc5a97e11ff3056d71cea3ac50dd89a8a5e39..28d416be280e44b3c78560681576a309c7efe391 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,9 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -57,7 +59,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
@@ -67,7 +69,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t    gmx_unu
                                                real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn.c
new file mode 100644 (file)
index 0000000..6f51d8b
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift,
+                                        real                      gmx_unused *Vvdw,
+                                        real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn.c
index a3fcd10ca2c37b40a96c3c5b6222ff44d177ec1f..3a207fab0689ca4e709575ba8ea3991f3f5057b7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,8 @@
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
 #define CALC_ENERGIES
 
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *n
                                          real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn.c
index bdaaa781939dc242042f5be848b97b058f5bfc9b..465d5496eecb555e7e43089d0657113eff137eda 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,8 @@
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
@@ -57,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
@@ -67,7 +68,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused
                                             real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn.c
index 03825225846975c4b744f82038fdf81f682d0d21..86ae34335825bec9d51b2e79ac331c7a8c58d4d9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,9 +46,9 @@
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
 #define LJ_COMB_GEOM
-#define CALC_ENERGIES
+/* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *n
                                          real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn.c
index 4ad09a93be3ee653a80ece7c440cb425277ac811..00f8513f9ba027dc2765975aa00b2bb5411e7969 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,7 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_EWALD
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_2XNN
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *
                                           real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn.c
index 3152d80c621c798da6a0dbee71da9b268179edd7..3f84925291dad7f4d14ba2852e0d04133157f07b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,7 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_EWALD
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unuse
                                              real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
similarity index 67%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn.c
index cd32ddd7e46c6f28b24c1c4896a32f5305b882f6..716b4edacb186e1f42949d791ff9d85dcd42fad8 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                            const nbnxn_atomdata_t    gmx_unused *nbat,
-                                            const interaction_const_t gmx_unused *ic,
-                                            rvec                      gmx_unused *shift_vec,
-                                            real                      gmx_unused *f,
-                                            real                      gmx_unused *fshift,
-                                            real                      gmx_unused *Vvdw,
-                                            real                      gmx_unused *Vc)
+nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                            const nbnxn_atomdata_t    gmx_unused *nbat,
-                                            const interaction_const_t gmx_unused *ic,
-                                            rvec                      gmx_unused *shift_vec,
-                                            real                      gmx_unused *f,
-                                            real                      gmx_unused *fshift)
+nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
 #endif /* CALC_ENERGIES */
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_outer.h"
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn.c
new file mode 100644 (file)
index 0000000..7ce3508
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift,
+                                        real                      gmx_unused *Vvdw,
+                                        real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 92%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn.c
index a2bd295058d56a476ee4eea377df8409a49c261c..9640186d8859ff66c51d82ee7e7c82680c228db4 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_RF
-#define LJ_COMB_GEOM
-/* Will not calculate energies */
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused
                                            real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..f674e48
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn.c
new file mode 100644 (file)
index 0000000..804ea6d
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift,
+                                     real                      gmx_unused *Vvdw,
+                                     real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..4f3f460
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift,
+                                        real                      gmx_unused *Vvdw,
+                                        real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..2638c41
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn.c
new file mode 100644 (file)
index 0000000..b82482b
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift,
+                                     real                      gmx_unused *Vvdw,
+                                     real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..b213235
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift,
+                                        real                      gmx_unused *Vvdw,
+                                        real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_F_2xnn.c
new file mode 100644 (file)
index 0000000..ddec21c
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                 const nbnxn_atomdata_t    gmx_unused *nbat,
+                                 const interaction_const_t gmx_unused *ic,
+                                 rvec                      gmx_unused *shift_vec,
+                                 real                      gmx_unused *f,
+                                 real                      gmx_unused *fshift,
+                                 real                      gmx_unused *Vvdw,
+                                 real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                 const nbnxn_atomdata_t    gmx_unused *nbat,
+                                 const interaction_const_t gmx_unused *ic,
+                                 rvec                      gmx_unused *shift_vec,
+                                 real                      gmx_unused *f,
+                                 real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn.c
new file mode 100644 (file)
index 0000000..681ec89
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                  const nbnxn_atomdata_t    gmx_unused *nbat,
+                                  const interaction_const_t gmx_unused *ic,
+                                  rvec                      gmx_unused *shift_vec,
+                                  real                      gmx_unused *f,
+                                  real                      gmx_unused *fshift,
+                                  real                      gmx_unused *Vvdw,
+                                  real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                  const nbnxn_atomdata_t    gmx_unused *nbat,
+                                  const interaction_const_t gmx_unused *ic,
+                                  rvec                      gmx_unused *shift_vec,
+                                  real                      gmx_unused *f,
+                                  real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..0d768fb
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift,
+                                     real                      gmx_unused *Vvdw,
+                                     real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn.c
index f2d0b0c02a5a9ecf6ee368b41f3f0408a6ddf37b..e2e7597f2d71943d70246e8f96ea9675cc3ed7ec 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,7 @@
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 #define LJ_COMB_GEOM
 /* Will not calculate energies */
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                    const nbnxn_atomdata_t    gmx_unused *nbat,
                                                    const interaction_const_t gmx_unused *ic,
                                                    rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx
                                                    real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                    const nbnxn_atomdata_t    gmx_unused *nbat,
                                                    const interaction_const_t gmx_unused *ic,
                                                    rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn.c
index 6f30bb074e7351d7387647f0c25b23962bb79e34..4e824957e4efb8a889f037f38beb847c5908e1dc 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
-#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -58,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                     const nbnxn_atomdata_t    gmx_unused *nbat,
                                                     const interaction_const_t gmx_unused *ic,
                                                     rvec                      gmx_unused *shift_vec,
@@ -68,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t    gm
                                                     real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                     const nbnxn_atomdata_t    gmx_unused *nbat,
                                                     const interaction_const_t gmx_unused *ic,
                                                     rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..5d2aede
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                                       const interaction_const_t gmx_unused *ic,
+                                                       rvec                      gmx_unused *shift_vec,
+                                                       real                      gmx_unused *f,
+                                                       real                      gmx_unused *fshift,
+                                                       real                      gmx_unused *Vvdw,
+                                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                                       const interaction_const_t gmx_unused *ic,
+                                                       rvec                      gmx_unused *shift_vec,
+                                                       real                      gmx_unused *f,
+                                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn.c
index d61345d16e60d89a964e7bfcbbb7a626be21e523..ec1fac3e2b9f8044fffe684d9059fe2ab4ef22ff 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,7 +48,7 @@
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+#define LJ_COMB_LB
 /* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_2XNN
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_u
                                                  real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn.c
index 25e8a310ae83e7510a5396dd6b4e90da8d7f4d72..59f6715d73ca310145a1aab3f77374c6523a9407 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,9 +48,8 @@
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+#define LJ_COMB_LB
 #define CALC_ENERGIES
-#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -58,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
@@ -68,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_
                                                   real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..3b72339
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                                     const interaction_const_t gmx_unused *ic,
+                                                     rvec                      gmx_unused *shift_vec,
+                                                     real                      gmx_unused *f,
+                                                     real                      gmx_unused *fshift,
+                                                     real                      gmx_unused *Vvdw,
+                                                     real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                                     const interaction_const_t gmx_unused *ic,
+                                                     rvec                      gmx_unused *shift_vec,
+                                                     real                      gmx_unused *f,
+                                                     real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..80ce35a
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                              const nbnxn_atomdata_t    gmx_unused *nbat,
+                                              const interaction_const_t gmx_unused *ic,
+                                              rvec                      gmx_unused *shift_vec,
+                                              real                      gmx_unused *f,
+                                              real                      gmx_unused *fshift,
+                                              real                      gmx_unused *Vvdw,
+                                              real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                              const nbnxn_atomdata_t    gmx_unused *nbat,
+                                              const interaction_const_t gmx_unused *ic,
+                                              rvec                      gmx_unused *shift_vec,
+                                              real                      gmx_unused *f,
+                                              real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn.c
index 1f82c1b19f3f026d921cdc00b6d2b437b12103ec..a4926d6b8ec7a288ec99729cf6fbb229a345e46b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,8 +48,9 @@
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-/* Will not calculate energies */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -57,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
@@ -67,7 +68,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unu
                                                real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
similarity index 82%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn.c
index a14866ab97ae4e4df9e280e47421bc0fc126c09b..ab06e42f5e174504ab43e22396d8308e0f17fd15 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
  */
 /*
  * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
+ * kernel type 2xnn.
  */
 
 /* Some target architectures compile kernels for only some NBNxN
  * kernel flavours, but the code is generated before the target
  * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
  * function definition when the kernel will never be called.
  */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
-/* Will not calculate energies */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
 
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
@@ -67,21 +69,21 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_
                                                   real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
                                                   real                      gmx_unused *f,
                                                   real                      gmx_unused *fshift)
 #endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
 {
 /* No need to call gmx_incons() here, because the only function
  * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
  * instead call gmx_incons().
  */
 }
-#endif /* GMX_NBNXN_SIMD_4XN */
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..534ae93
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                              const nbnxn_atomdata_t    gmx_unused *nbat,
+                                              const interaction_const_t gmx_unused *ic,
+                                              rvec                      gmx_unused *shift_vec,
+                                              real                      gmx_unused *f,
+                                              real                      gmx_unused *fshift,
+                                              real                      gmx_unused *Vvdw,
+                                              real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                              const nbnxn_atomdata_t    gmx_unused *nbat,
+                                              const interaction_const_t gmx_unused *ic,
+                                              rvec                      gmx_unused *shift_vec,
+                                              real                      gmx_unused *f,
+                                              real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn.c
index 43ba84ca650af416eb10f7d4613d8c0338d1cec2..1ac9b6d23ec0cf05c938944bc32552c7283be3cf 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -49,6 +49,7 @@
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_2XNN
@@ -57,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
@@ -67,7 +68,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unu
                                                real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn.c
index f2ac6d91314d7f3b54a136b6cfbcca7504046d0d..c556a73988e71caaa08fd6d7ac401bc9756a7a88 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -49,6 +49,7 @@
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -58,7 +59,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
@@ -68,7 +69,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_
                                                   real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn.c
new file mode 100644 (file)
index 0000000..6eaddcc
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift,
+                                           real                      gmx_unused *Vvdw,
+                                           real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn.c
index b344bea5102c28708a048f176c4ddc19b42afb63..91a0ace2514666dc1e036cdcebf2c4ce201eaf57 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,8 +47,9 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
-/* Will not calculate energies */
+#define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t    gmx_unused
                                             real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn.c
index 400ba408c492b26497b61add971ff1f00acf06aa..c80763901b6caab4ccd4bd363ba1d4626fa0e6c1 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,8 +48,9 @@
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+/* Use no LJ combination rule */
 #define CALC_ENERGIES
+#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -57,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
@@ -67,7 +68,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unu
                                                real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn.c
index b8fbdd847c50450a9d320d9a58a7b49b1a48239a..1b52825a43cef0b4cc6eacd625685783559ec812 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused
                                             real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn.c
index 375f2dd21a8e69da2a699f5bfbd9483babd5ddca..563e1da1ea0821c8288986c470ae1ef54b918b22 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -49,7 +49,6 @@
 #define CALC_COUL_TAB
 #define LJ_COMB_GEOM
 #define CALC_ENERGIES
-#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -57,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
@@ -67,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unuse
                                              real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn.c
index 8204254a76529a6ec592d9ee3e6e0e941df2b0b9..80a707326df94579503cc1a301fa1c220b0b4a75 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,8 +47,7 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_TAB
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -58,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
                                                 const interaction_const_t gmx_unused *ic,
                                                 rvec                      gmx_unused *shift_vec,
@@ -68,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_un
                                                 real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
                                                 const interaction_const_t gmx_unused *ic,
                                                 rvec                      gmx_unused *shift_vec,
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn.c
index a47e4061707e51782d6a472ebdb5ad797c01e415..373ebba108c2376599c7d6392705cf18ca81f1fc 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *
                                           real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn.c
index d8f08dfa5d6c3d328baaaa467b8ae2ff02a66b62..1d2c22646c021b400b4879548f098d8dc7efb634 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -49,7 +49,6 @@
 #define CALC_COUL_TAB
 #define LJ_COMB_LB
 #define CALC_ENERGIES
-#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -57,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
@@ -67,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused
                                            real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn.c
index 471c309e34377e621a35b938c379726fd8d644a7..e7ffea2082c38c626e0a77e31d2967c5fa3b4bb2 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
-/* Will not calculate energies */
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t    gmx_unus
                                               real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..39a5862
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn.c
new file mode 100644 (file)
index 0000000..4343360
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift,
+                                        real                      gmx_unused *Vvdw,
+                                        real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..845bd4d
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift,
+                                           real                      gmx_unused *Vvdw,
+                                           real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..8bd93ff
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn.c
new file mode 100644 (file)
index 0000000..bc4d924
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift,
+                                        real                      gmx_unused *Vvdw,
+                                        real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..05999b6
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift,
+                                           real                      gmx_unused *Vvdw,
+                                           real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                           const nbnxn_atomdata_t    gmx_unused *nbat,
+                                           const interaction_const_t gmx_unused *ic,
+                                           rvec                      gmx_unused *shift_vec,
+                                           real                      gmx_unused *f,
+                                           real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn.c
new file mode 100644 (file)
index 0000000..b9b2a31
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn.c
new file mode 100644 (file)
index 0000000..a09db67
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift,
+                                     real                      gmx_unused *Vvdw,
+                                     real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..356f91b
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift,
+                                        real                      gmx_unused *Vvdw,
+                                        real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn.c
index b909404b62e0fc27f8b4953f335281f8feb74384..fb2313d28f2b84de667596295068f6d7b55b1262 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,7 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_RF
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
 /* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_2XNN
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *n
                                          real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn.c
index 8f37ddfa297af392183606fedfce560be97034fe..7408d0776595ed645dbf9d02e1533a4436f0608c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,7 @@
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_TAB
+#define CALC_COUL_RF
 #define LJ_COMB_GEOM
 #define CALC_ENERGIES
 
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *
                                           real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn.c
index e3d5badad993815d6cf25a099e19f6a723f992d4..cd2046279dc366fc22550c5231591c1eba0db1a9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,8 +46,8 @@
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_TAB
-/* Use no LJ combination rule */
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t    gmx_unuse
                                              real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn.c
index 2b7fa1d1e0275be09dfafc1adb3ef6ad3de7a3dc..907749b66823cb511e83a5dcf78395fd716f7aaa 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,7 +48,7 @@
 
 #define CALC_COUL_RF
 #define LJ_COMB_LB
-#define CALC_ENERGIES
+/* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                        const nbnxn_atomdata_t    gmx_unused *nbat,
                                        const interaction_const_t gmx_unused *ic,
                                        rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl
                                        real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                        const nbnxn_atomdata_t    gmx_unused *nbat,
                                        const interaction_const_t gmx_unused *ic,
                                        rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn.c
index 7fd3e291889f4538e6a2d9895db5dcf6a7d1afba..3c502ef07c925c7dfda2b695fdd0e1b91487783a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,7 @@
 #define GMX_SIMD_J_UNROLL_SIZE 2
 #include "nbnxn_kernel_simd_2xnn.h"
 
-#define CALC_COUL_TAB
+#define CALC_COUL_RF
 #define LJ_COMB_LB
 #define CALC_ENERGIES
 
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                         const nbnxn_atomdata_t    gmx_unused *nbat,
                                         const interaction_const_t gmx_unused *ic,
                                         rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nb
                                         real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                         const nbnxn_atomdata_t    gmx_unused *nbat,
                                         const interaction_const_t gmx_unused *ic,
                                         rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn.c
index 51c7673cd3a4599a41560c62a60d22054bda8695..32875e796a96dc3cbacd6e9583ca8ea0e417ddab 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,8 +47,9 @@
 #include "nbnxn_kernel_simd_2xnn.h"
 
 #define CALC_COUL_RF
-/* Use no LJ combination rule */
-/* Will not calculate energies */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_2XNN
 #include "nbnxn_kernel_simd_2xnn_common.h"
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t    gmx_unused
                                            real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..52fecc8
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn.c
new file mode 100644 (file)
index 0000000..af5acc0
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift,
+                                     real                      gmx_unused *Vvdw,
+                                     real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..c3bfe09
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift,
+                                        real                      gmx_unused *Vvdw,
+                                        real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn.c
new file mode 100644 (file)
index 0000000..6d31b57
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn.c
new file mode 100644 (file)
index 0000000..f79dc11
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift,
+                                     real                      gmx_unused *Vvdw,
+                                     real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..636d393
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift,
+                                        real                      gmx_unused *Vvdw,
+                                        real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                        const nbnxn_atomdata_t    gmx_unused *nbat,
+                                        const interaction_const_t gmx_unused *ic,
+                                        rvec                      gmx_unused *shift_vec,
+                                        real                      gmx_unused *f,
+                                        real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_F_2xnn.c
new file mode 100644 (file)
index 0000000..a97714c
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                 const nbnxn_atomdata_t    gmx_unused *nbat,
+                                 const interaction_const_t gmx_unused *ic,
+                                 rvec                      gmx_unused *shift_vec,
+                                 real                      gmx_unused *f,
+                                 real                      gmx_unused *fshift,
+                                 real                      gmx_unused *Vvdw,
+                                 real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_F_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                 const nbnxn_atomdata_t    gmx_unused *nbat,
+                                 const interaction_const_t gmx_unused *ic,
+                                 rvec                      gmx_unused *shift_vec,
+                                 real                      gmx_unused *f,
+                                 real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn.c
new file mode 100644 (file)
index 0000000..354ac6f
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                  const nbnxn_atomdata_t    gmx_unused *nbat,
+                                  const interaction_const_t gmx_unused *ic,
+                                  rvec                      gmx_unused *shift_vec,
+                                  real                      gmx_unused *f,
+                                  real                      gmx_unused *fshift,
+                                  real                      gmx_unused *Vvdw,
+                                  real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                  const nbnxn_atomdata_t    gmx_unused *nbat,
+                                  const interaction_const_t gmx_unused *ic,
+                                  rvec                      gmx_unused *shift_vec,
+                                  real                      gmx_unused *f,
+                                  real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn.c
new file mode 100644 (file)
index 0000000..ebe2a88
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift,
+                                     real                      gmx_unused *Vvdw,
+                                     real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                     const nbnxn_atomdata_t    gmx_unused *nbat,
+                                     const interaction_const_t gmx_unused *ic,
+                                     rvec                      gmx_unused *shift_vec,
+                                     real                      gmx_unused *f,
+                                     real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
index 660c12cfc27b8f6f7a7cec3862569e3d6520431a..4bf21fa8249e965e3d1a580e45d5dfcef1ff9d8c 100644 (file)
@@ -46,6 +46,7 @@
 #ifdef GMX_NBNXN_SIMD_2XNN
 
 /* Include the full-width SIMD macros */
+
 #include "gromacs/simd/macros.h"
 #include "gromacs/simd/vector_operations.h"
 
@@ -58,6 +59,7 @@
 #include "../nbnxn_kernel_common.h"
 #include "gmx_omp_nthreads.h"
 #include "types/force_flags.h"
+#include "gmx_fatal.h"
 
 /*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels
  */
@@ -65,91 +67,124 @@ enum {
     coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR
 };
 
-/* Declare and define the kernel function pointer lookup tables. */
-static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] =
+/* Declare and define the kernel function pointer lookup tables.
+ * The minor index of the array goes over both the LJ combination rules,
+ * which is only supported by plain cut-off, and the LJ switch functions.
+ */
+static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR+2] =
 {
     {
-        nbnxn_kernel_simd_2xnn_rf_comb_geom_ener,
-        nbnxn_kernel_simd_2xnn_rf_comb_lb_ener,
-        nbnxn_kernel_simd_2xnn_rf_comb_none_ener,
+        nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJ_F_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_tab_comb_geom_ener,
-        nbnxn_kernel_simd_2xnn_tab_comb_lb_ener,
-        nbnxn_kernel_simd_2xnn_tab_comb_none_ener,
+        nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener,
-        nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener,
-        nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener,
-        nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener,
-        nbnxn_kernel_simd_2xnn_ewald_comb_none_ener,
+        nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJ_F_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener,
-        nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener,
-        nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn,
     },
 };
 
-static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR+2] =
 {
     {
-        nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp,
-        nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp,
-        nbnxn_kernel_simd_2xnn_rf_comb_none_energrp,
+        nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp,
-        nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp,
-        nbnxn_kernel_simd_2xnn_tab_comb_none_energrp,
+        nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp,
-        nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp,
-        nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp,
-        nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp,
-        nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp,
+        nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp,
-        nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp,
-        nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn,
     },
 };
 
-static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR+2] =
 {
     {
-        nbnxn_kernel_simd_2xnn_rf_comb_geom_noener,
-        nbnxn_kernel_simd_2xnn_rf_comb_lb_noener,
-        nbnxn_kernel_simd_2xnn_rf_comb_none_noener,
+        nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn,
+        nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_tab_comb_geom_noener,
-        nbnxn_kernel_simd_2xnn_tab_comb_lb_noener,
-        nbnxn_kernel_simd_2xnn_tab_comb_none_noener,
+        nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn,
+        nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener,
-        nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener,
-        nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener,
-        nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener,
-        nbnxn_kernel_simd_2xnn_ewald_comb_none_noener,
+        nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn,
+        nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn,
     },
     {
-        nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener,
-        nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener,
-        nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn,
     },
 };
 
@@ -215,7 +250,7 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
 {
     int                nnbl;
     nbnxn_pairlist_t **nbl;
-    int                coult;
+    int                coult, ljtreatment = 0;
     int                nb;
 
     nnbl = nbl_list->nnbl;
@@ -251,6 +286,23 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
         }
     }
 
+    switch (ic->vdw_modifier)
+    {
+        case eintmodNONE:
+        case eintmodPOTSHIFT:
+            ljtreatment = nbat->comb_rule;
+            break;
+        /* Switch functions follow after cut-off combination rule kernels */
+        case eintmodFORCESWITCH:
+            ljtreatment = ljcrNR;
+            break;
+        case eintmodPOTSWITCH:
+            ljtreatment = ljcrNR + 1;
+            break;
+        default:
+            gmx_incons("Unsupported VdW interaction modifier");
+    }
+
 #pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded))
     for (nb = 0; nb < nnbl; nb++)
     {
@@ -281,11 +333,11 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
         if (!(force_flags & GMX_FORCE_ENERGY))
         {
             /* Don't calculate energies */
-            p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat,
-                                                 ic,
-                                                 shift_vec,
-                                                 out->f,
-                                                 fshift_p);
+            p_nbk_noener[coult][ljtreatment](nbl[nb], nbat,
+                                             ic,
+                                             shift_vec,
+                                             out->f,
+                                             fshift_p);
         }
         else if (out->nV == 1)
         {
@@ -293,13 +345,13 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
             out->Vvdw[0] = 0;
             out->Vc[0]   = 0;
 
-            p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat,
-                                               ic,
-                                               shift_vec,
-                                               out->f,
-                                               fshift_p,
-                                               out->Vvdw,
-                                               out->Vc);
+            p_nbk_ener[coult][ljtreatment](nbl[nb], nbat,
+                                           ic,
+                                           shift_vec,
+                                           out->f,
+                                           fshift_p,
+                                           out->Vvdw,
+                                           out->Vc);
         }
         else
         {
@@ -315,13 +367,13 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
                 out->VSc[i] = 0;
             }
 
-            p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat,
-                                                  ic,
-                                                  shift_vec,
-                                                  out->f,
-                                                  fshift_p,
-                                                  out->VSvdw,
-                                                  out->VSc);
+            p_nbk_energrp[coult][ljtreatment](nbl[nb], nbat,
+                                              ic,
+                                              shift_vec,
+                                              out->f,
+                                              fshift_p,
+                                              out->VSvdw,
+                                              out->VSc);
 
             reduce_group_energies(nbat->nenergrp, nbat->neg_2log,
                                   out->VSvdw, out->VSc,
index 36301cef41e2dbb94611642b09ccdd786f606c24..9b84f84909a72343a9ff1f41c3170430d00820ef 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -83,53 +83,83 @@ typedef void (nbk_func_noener)(const nbnxn_pairlist_t     *nbl,
 typedef nbk_func_noener *p_nbk_func_noener;
 #endif
 
-nbk_func_ener         nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_rf_comb_none_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_comb_none_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn;
 
-nbk_func_noener       nbnxn_kernel_simd_2xnn_rf_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_rf_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_rf_comb_none_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_tab_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_tab_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_tab_comb_none_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_ewald_comb_none_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn;
 
-nbk_func_ener         nbnxn_kernel_simd_2xnn_rf_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_rf_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_rf_comb_none_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_comb_none_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_comb_none_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJ_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJ_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn;
 
 
 
index 6dbfb975024e27cd46d23dd8abb336859623b3e6..588472bed6ce5928543647a06a299a23352bc431 100644 (file)
@@ -33,6 +33,7 @@
  * the research papers on the package. Check out http://www.gromacs.org.
  */
 #include "gromacs/simd/macros.h"
+#include "gromacs/simd/four_wide_macros.h"
 #include "gromacs/simd/vector_operations.h"
 #include "../../nbnxn_consts.h"
 #ifdef CALC_COUL_EWALD
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c
deleted file mode 100644 (file)
index a5d2901..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                               const nbnxn_atomdata_t    gmx_unused *nbat,
-                                               const interaction_const_t gmx_unused *ic,
-                                               rvec                      gmx_unused *shift_vec,
-                                               real                      gmx_unused *f,
-                                               real                      gmx_unused *fshift,
-                                               real                      gmx_unused *Vvdw,
-                                               real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                               const nbnxn_atomdata_t    gmx_unused *nbat,
-                                               const interaction_const_t gmx_unused *ic,
-                                               rvec                      gmx_unused *shift_vec,
-                                               real                      gmx_unused *f,
-                                               real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c
deleted file mode 100644 (file)
index 3dd243d..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_EWALD
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-/* Will not calculate energies */
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                 const interaction_const_t gmx_unused *ic,
-                                                 rvec                      gmx_unused *shift_vec,
-                                                 real                      gmx_unused *f,
-                                                 real                      gmx_unused *fshift,
-                                                 real                      gmx_unused *Vvdw,
-                                                 real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                 const interaction_const_t gmx_unused *ic,
-                                                 rvec                      gmx_unused *shift_vec,
-                                                 real                      gmx_unused *f,
-                                                 real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c
deleted file mode 100644 (file)
index 83177c8..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_EWALD
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
-#define CALC_ENERGIES
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                 const interaction_const_t gmx_unused *ic,
-                                                 rvec                      gmx_unused *shift_vec,
-                                                 real                      gmx_unused *f,
-                                                 real                      gmx_unused *fshift,
-                                                 real                      gmx_unused *Vvdw,
-                                                 real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                 const interaction_const_t gmx_unused *ic,
-                                                 rvec                      gmx_unused *shift_vec,
-                                                 real                      gmx_unused *f,
-                                                 real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c
deleted file mode 100644 (file)
index b4eb5d8..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_EWALD
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
-/* Will not calculate energies */
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                   const interaction_const_t gmx_unused *ic,
-                                                   rvec                      gmx_unused *shift_vec,
-                                                   real                      gmx_unused *f,
-                                                   real                      gmx_unused *fshift,
-                                                   real                      gmx_unused *Vvdw,
-                                                   real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                   const interaction_const_t gmx_unused *ic,
-                                                   rvec                      gmx_unused *shift_vec,
-                                                   real                      gmx_unused *f,
-                                                   real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
index 8e8eae7966f856faa41506e1cdded014d0a8c99e..d0182ac8b17ba306b4ee5c6b1b46350b0310469b 100644 (file)
  * Tested with gcc 4.6.2, 4.6.3 and 4.7.1.
  */
 #if (defined CALC_COUL_RF || defined CALC_COUL_TAB) && (!defined __GNUC__ || (defined CALC_COUL_RF && defined GMX_SIMD_X86_AVX_256_OR_HIGHER))
-#define CUTOFF_BLENDV
+#define NBNXN_CUTOFF_USE_BLENDV
 #endif
 /* With analytical Ewald we replace cmp+and+and with sub+blendv+blendv.
  * This is only faster with icc on Sandy Bridge (PS kernel slower than gcc 4.7).
  * Tested with icc 13.
  */
 #if defined CALC_COUL_EWALD && defined __INTEL_COMPILER && defined GMX_SIMD_X86_AVX_256_OR_HIGHER
-#define CUTOFF_BLENDV
+#define NBNXN_CUTOFF_USE_BLENDV
 #endif
 #endif
 
     gmx_simd_real_t  tx_S2, ty_S2, tz_S2;
     gmx_simd_real_t  rsq_S0, rinv_S0, rinvsq_S0;
     gmx_simd_real_t  rsq_S2, rinv_S2, rinvsq_S2;
-#ifndef CUTOFF_BLENDV
+#ifndef NBNXN_CUTOFF_USE_BLENDV
     /* wco: within cut-off, mask of all 1's or 0's */
     gmx_simd_bool_t  wco_S0;
     gmx_simd_bool_t  wco_S2;
     gmx_simd_bool_t  wco_vdw_S2;
 #endif
 #endif
+
+#if (defined CALC_COULOMB && defined CALC_COUL_TAB) || defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+    gmx_simd_real_t r_S0;
+    gmx_simd_real_t r_S2;
+#endif
+
+#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+    gmx_simd_real_t  rsw_S0, rsw2_S0, rsw2_r_S0;
+#ifndef HALF_LJ
+    gmx_simd_real_t  rsw_S2, rsw2_S2, rsw2_r_S2;
+#endif
+#endif
+
 #ifdef CALC_COULOMB
 #ifdef CHECK_EXCLS
     /* 1/r masked with the interaction mask */
     gmx_simd_real_t  frcoul_S2;
 #ifdef CALC_COUL_TAB
     /* For tables: r, rs=r/sp, rf=floor(rs), frac=rs-rf */
-    gmx_simd_real_t         r_S0, rs_S0, rf_S0, frac_S0;
-    gmx_simd_real_t         r_S2, rs_S2, rf_S2, frac_S2;
+    gmx_simd_real_t         rs_S0, rf_S0, frac_S0;
+    gmx_simd_real_t         rs_S2, rf_S2, frac_S2;
     /* Table index: rs truncated to an int */
     gmx_simd_int32_t        ti_S0, ti_S2;
     /* Linear force table values */
 #endif
 #endif
 
-    gmx_simd_real_t  FrLJ6_S0, FrLJ12_S0;
+    gmx_simd_real_t  FrLJ6_S0, FrLJ12_S0, frLJ_S0;
 #ifndef HALF_LJ
-    gmx_simd_real_t  FrLJ6_S2, FrLJ12_S2;
+    gmx_simd_real_t  FrLJ6_S2, FrLJ12_S2, frLJ_S2;
 #endif
-#ifdef CALC_ENERGIES
+#if defined CALC_ENERGIES || defined LJ_POT_SWITCH
     gmx_simd_real_t  VLJ6_S0, VLJ12_S0, VLJ_S0;
 #ifndef HALF_LJ
     gmx_simd_real_t  VLJ6_S2, VLJ12_S2, VLJ_S2;
     rsq_S0      = gmx_simd_calc_rsq_r(dx_S0, dy_S0, dz_S0);
     rsq_S2      = gmx_simd_calc_rsq_r(dx_S2, dy_S2, dz_S2);
 
-#ifndef CUTOFF_BLENDV
+#ifndef NBNXN_CUTOFF_USE_BLENDV
     wco_S0      = gmx_simd_cmplt_r(rsq_S0, rc2_S);
     wco_S2      = gmx_simd_cmplt_r(rsq_S2, rc2_S);
 #endif
 
 #endif /* CALC_LJ */
 
-#ifndef CUTOFF_BLENDV
+#ifndef NBNXN_CUTOFF_USE_BLENDV
     rinv_S0     = gmx_simd_blendzero_r(rinv_S0, wco_S0);
     rinv_S2     = gmx_simd_blendzero_r(rinv_S2, wco_S2);
 #else
     /* We need to mask (or limit) rsq for the cut-off,
      * as large distances can cause an overflow in gmx_pmecorrF/V.
      */
-#ifndef CUTOFF_BLENDV
+#ifndef NBNXN_CUTOFF_USE_BLENDV
     brsq_S0     = gmx_simd_mul_r(beta2_S, gmx_simd_blendzero_r(rsq_S0, wco_S0));
     brsq_S2     = gmx_simd_mul_r(beta2_S, gmx_simd_blendzero_r(rsq_S2, wco_S2));
 #else
     rinvsix_S2  = gmx_simd_blendzero_r(rinvsix_S2, interact_S2);
 #endif
 #endif
-#ifdef VDW_CUTOFF_CHECK
-    rinvsix_S0  = gmx_simd_blendzero_r(rinvsix_S0, wco_vdw_S0);
-#ifndef HALF_LJ
-    rinvsix_S2  = gmx_simd_blendzero_r(rinvsix_S2, wco_vdw_S2);
-#endif
-#endif
+
+#ifndef LJ_FORCE_SWITCH
+    /* We have plain LJ with simple C6/6 C12/12 coefficients */
     FrLJ6_S0    = gmx_simd_mul_r(c6_S0, rinvsix_S0);
 #ifndef HALF_LJ
     FrLJ6_S2    = gmx_simd_mul_r(c6_S2, rinvsix_S2);
 #ifndef HALF_LJ
     FrLJ12_S2   = gmx_simd_mul_r(c12_S2, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2));
 #endif
+#endif
+
+#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+    /* We switch the LJ force */
+    r_S0        = gmx_simd_mul_r(rsq_S0, rinv_S0);
+    rsw_S0      = gmx_simd_max_r(gmx_simd_sub_r(r_S0, rswitch_S), zero_S);
+    rsw2_S0     = gmx_simd_mul_r(rsw_S0, rsw_S0);
+    rsw2_r_S0   = gmx_simd_mul_r(rsw2_S0, r_S0);
+#ifndef HALF_LJ
+    r_S2        = gmx_simd_mul_r(rsq_S2, rinv_S2);
+    rsw_S2      = gmx_simd_max_r(gmx_simd_sub_r(r_S2, rswitch_S), zero_S);
+    rsw2_S2     = gmx_simd_mul_r(rsw_S2, rsw_S2);
+    rsw2_r_S2   = gmx_simd_mul_r(rsw2_S2, r_S2);
+#endif
+#endif
+
+#ifdef LJ_FORCE_SWITCH
+
+#define add_fr_switch(fr, rsw, rsw2_r, c2, c3) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c3, rsw, c2), rsw2_r, fr)
+
+    FrLJ6_S0    = gmx_simd_mul_r(c6_S0, add_fr_switch(rinvsix_S0, rsw_S0, rsw2_r_S0, p6_fc2_S, p6_fc3_S));
+#ifndef HALF_LJ
+    FrLJ6_S2    = gmx_simd_mul_r(c6_S2, add_fr_switch(rinvsix_S2, rsw_S2, rsw2_r_S2, p6_fc2_S, p6_fc3_S));
+#endif
+    FrLJ12_S0   = gmx_simd_mul_r(c12_S0, add_fr_switch(gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), rsw_S0, rsw2_r_S0, p12_fc2_S, p12_fc3_S));
+#ifndef HALF_LJ
+    FrLJ12_S2   = gmx_simd_mul_r(c12_S2, add_fr_switch(gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), rsw_S2, rsw2_r_S2, p12_fc2_S, p12_fc3_S));
+#endif
+#undef add_fr_switch
+#endif /* LJ_FORCE_SWITCH */
+
 #endif /* not LJ_COMB_LB */
 
 #ifdef LJ_COMB_LB
 #endif
 #endif /* LJ_COMB_LB */
 
+    /* Determine the total scalar LJ force*r */
+    frLJ_S0     = gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0);
+#ifndef HALF_LJ
+    frLJ_S2     = gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2);
+#endif
+
+#if defined CALC_ENERGIES && !defined LJ_POT_SWITCH
+#ifndef LJ_FORCE_SWITCH
+    /* Calculate the LJ energies, with constant potential shift */
+    VLJ6_S0     = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S0, p6_cpot_S, FrLJ6_S0));
+#ifndef HALF_LJ
+    VLJ6_S2     = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S2, p6_cpot_S, FrLJ6_S2));
+#endif
+    VLJ12_S0    = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S0, p12_cpot_S, FrLJ12_S0));
+#ifndef HALF_LJ
+    VLJ12_S2    = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S2, p12_cpot_S, FrLJ12_S2));
+#endif
+#else
+
+#define v_fswitch_pr(rsw, rsw2, c0, c3, c4) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), gmx_simd_mul_r(rsw2, rsw), c0)
+
+    VLJ6_S0     = gmx_simd_mul_r(c6_S0, gmx_simd_fmadd_r(sixth_S, rinvsix_S0, v_fswitch_pr(rsw_S0, rsw2_S0, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+#ifndef HALF_LJ
+    VLJ6_S2     = gmx_simd_mul_r(c6_S2, gmx_simd_fmadd_r(sixth_S, rinvsix_S2, v_fswitch_pr(rsw_S2, rsw2_S2, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+#endif
+    VLJ12_S0    = gmx_simd_mul_r(c12_S0, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), v_fswitch_pr(rsw_S0, rsw2_S0, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+#ifndef HALF_LJ
+    VLJ12_S2    = gmx_simd_mul_r(c12_S2, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), v_fswitch_pr(rsw_S2, rsw2_S2, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+#endif
+#undef v_fswitch_pr
+#endif /* LJ_FORCE_SWITCH */
+
+    /* Add up the repulsion and dispersion */
+    VLJ_S0      = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0);
+#ifndef HALF_LJ
+    VLJ_S2      = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2);
+#endif
+#endif /* CALC_ENERGIES && !LJ_POT_SWITCH */
+
+#ifdef LJ_POT_SWITCH
+    /* We always need the potential, since it is needed for the force */
+    VLJ_S0 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S0, gmx_simd_mul_r(twelveth_S, FrLJ12_S0));
+#ifndef HALF_LJ
+    VLJ_S2 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S2, gmx_simd_mul_r(twelveth_S, FrLJ12_S2));
+#endif
+
+    {
+        gmx_simd_real_t sw_S0, dsw_S0;
+#ifndef HALF_LJ
+        gmx_simd_real_t sw_S2, dsw_S2;
+#endif
+
+#define switch_pr(rsw, rsw2, c3, c4, c5) gmx_simd_fmadd_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c5, rsw, c4), rsw, c3), gmx_simd_mul_r(rsw2, rsw), one_S)
+#define dswitch_pr(rsw, rsw2, c2, c3, c4) gmx_simd_mul_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), rsw, c2), rsw2)
+
+        sw_S0  = switch_pr(rsw_S0, rsw2_S0, swV3_S, swV4_S, swV5_S);
+        dsw_S0 = dswitch_pr(rsw_S0, rsw2_S0, swF2_S, swF3_S, swF4_S);
+#ifndef HALF_LJ
+        sw_S2  = switch_pr(rsw_S2, rsw2_S2, swV3_S, swV4_S, swV5_S);
+        dsw_S2 = dswitch_pr(rsw_S2, rsw2_S2, swF2_S, swF3_S, swF4_S);
+#endif
+        frLJ_S0 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S0, VLJ_S0), r_S0, gmx_simd_mul_r(sw_S0, frLJ_S0));
+#ifndef HALF_LJ
+        frLJ_S2 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S2, VLJ_S2), r_S2, gmx_simd_mul_r(sw_S2, frLJ_S2));
+#endif
+#ifdef CALC_ENERGIES
+        VLJ_S0  = gmx_simd_mul_r(sw_S0, VLJ_S0);
+#ifndef HALF_LJ
+        VLJ_S2  = gmx_simd_mul_r(sw_S2, VLJ_S2);
+#endif
+#endif
+
+#undef switch_pr
+#undef dswitch_pr
+    }
+#endif /* LJ_POT_SWITCH */
+
+#if defined VDW_CUTOFF_CHECK
+    /* frLJ is multiplied later by rinvsq, which is masked for the Coulomb
+     * cut-off, but if the VdW cut-off is shorter, we need to mask with that.
+     */
+    frLJ_S0     = gmx_simd_blendzero_r(frLJ_S0, wco_vdw_S0);
+#ifndef HALF_LJ
+    frLJ_S2     = gmx_simd_blendzero_r(frLJ_S2, wco_vdw_S2);
+#endif
+#endif
+
+#ifdef CALC_ENERGIES
+    /* The potential shift should be removed for pairs beyond cut-off */
+    VLJ_S0      = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0);
+#ifndef HALF_LJ
+    VLJ_S2      = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2);
+#endif
+#endif
+
+#if defined CALC_ENERGIES && defined CHECK_EXCLS
+    /* The potential shift should be removed for excluded pairs */
+    VLJ_S0      = gmx_simd_blendzero_r(VLJ_S0, interact_S0);
+#ifndef HALF_LJ
+    VLJ_S2      = gmx_simd_blendzero_r(VLJ_S2, interact_S2);
+#endif
+#endif
+
+
 #endif /* CALC_LJ */
 
 #ifdef CALC_ENERGIES
 #endif
 
 #ifdef CALC_LJ
-    /* Calculate the LJ energies */
-    VLJ6_S0     = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S0, gmx_simd_mul_r(c6_S0, sh_invrc6_S)));
-#ifndef HALF_LJ
-    VLJ6_S2     = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S2, gmx_simd_mul_r(c6_S2, sh_invrc6_S)));
-#endif
-    VLJ12_S0    = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S0, gmx_simd_mul_r(c12_S0, sh_invrc12_S)));
-#ifndef HALF_LJ
-    VLJ12_S2    = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S2, gmx_simd_mul_r(c12_S2, sh_invrc12_S)));
-#endif
-
-    VLJ_S0      = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0);
-#ifndef HALF_LJ
-    VLJ_S2      = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2);
-#endif
-    /* The potential shift should be removed for pairs beyond cut-off */
-    VLJ_S0      = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0);
-#ifndef HALF_LJ
-    VLJ_S2      = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2);
-#endif
-#ifdef CHECK_EXCLS
-    /* The potential shift should be removed for excluded pairs */
-    VLJ_S0      = gmx_simd_blendzero_r(VLJ_S0, interact_S0);
-#ifndef HALF_LJ
-    VLJ_S2      = gmx_simd_blendzero_r(VLJ_S2, interact_S2);
-#endif
-#endif
 #ifndef ENERGY_GROUPS
     Vvdwtot_S    = gmx_simd_add_r(Vvdwtot_S,
 #ifndef HALF_LJ
 
 #ifdef CALC_LJ
 #ifdef CALC_COULOMB
-    fscal_S0    = gmx_simd_mul_r(rinvsq_S0,
-                                 gmx_simd_add_r(frcoul_S0,
-                                                gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0)));
+    fscal_S0    = gmx_simd_mul_r(rinvsq_S0, gmx_simd_add_r(frcoul_S0, frLJ_S0));
 #else
-    fscal_S0    = gmx_simd_mul_r(rinvsq_S0,
-                                 (
-                                     gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0)));
+    fscal_S0    = gmx_simd_mul_r(rinvsq_S0, frLJ_S0);
 #endif
 #else
     fscal_S0    = gmx_simd_mul_r(rinvsq_S0, frcoul_S0);
 #endif /* CALC_LJ */
 #if defined CALC_LJ && !defined HALF_LJ
 #ifdef CALC_COULOMB
-    fscal_S2    = gmx_simd_mul_r(rinvsq_S2,
-                                 gmx_simd_add_r(frcoul_S2,
-                                                gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2)));
+    fscal_S2    = gmx_simd_mul_r(rinvsq_S2, gmx_simd_add_r(frcoul_S2, frLJ_S2));
 #else
-    fscal_S2    = gmx_simd_mul_r(rinvsq_S2,
-                                 (
-                                     gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2)));
+    fscal_S2    = gmx_simd_mul_r(rinvsq_S2, frLJ_S2);
 #endif
 #else
     /* Atom 2 and 3 don't have LJ, so only add Coulomb forces */
 #undef  wco_vdw_S0
 #undef  wco_vdw_S2
 
-#undef  CUTOFF_BLENDV
+#undef  NBNXN_CUTOFF_USE_BLENDV
 
 #undef  EXCL_FORCES
index 0c3c7a9cadbf990beea8bfcd0a1437541194787d..8f809e73532ec6d9e815d609eb005da5ca541d9f 100644 (file)
     unsigned            *exclusion_filter;
     gmx_exclfilter       filter_S0, filter_S2;
 
-    gmx_simd_real_t      zero_S = gmx_simd_set1_r(0);
+    gmx_simd_real_t      zero_S = gmx_simd_set1_r(0.0);
 
     gmx_simd_real_t      one_S = gmx_simd_set1_r(1.0);
     gmx_simd_real_t      iq_S0 = gmx_simd_setzero_r();
     gmx_simd_real_t      iq_S2 = gmx_simd_setzero_r();
+
+#ifdef CALC_COUL_RF
     gmx_simd_real_t      mrc_3_S;
 #ifdef CALC_ENERGIES
     gmx_simd_real_t      hrc_3_S, moh_rc_S;
 #endif
+#endif
 
 #ifdef CALC_COUL_TAB
     /* Coulomb table variables */
 #ifndef TAB_FDV0
     const real       *tab_coul_V;
 #endif
-    int               ti0_array[2*GMX_SIMD_REAL_WIDTH], *ti0;
-    int               ti2_array[2*GMX_SIMD_REAL_WIDTH], *ti2;
+    /* Thread-local working buffers for force and potential lookups */
+    int               ti0_array[2*GMX_SIMD_REAL_WIDTH], *ti0 = NULL;
+    int               ti2_array[2*GMX_SIMD_REAL_WIDTH], *ti2 = NULL;
 #ifdef CALC_ENERGIES
     gmx_simd_real_t   mhalfsp_S;
 #endif
     gmx_simd_real_t  sh_ewald_S;
 #endif
 
+#ifdef LJ_POT_SWITCH
+    gmx_simd_real_t   rswitch_S;
+    gmx_simd_real_t   swV3_S, swV4_S, swV5_S;
+    gmx_simd_real_t   swF2_S, swF3_S, swF4_S;
+#else
+#ifdef LJ_FORCE_SWITCH
+    gmx_simd_real_t   rswitch_S;
+    gmx_simd_real_t   p6_fc2_S, p6_fc3_S;
+    gmx_simd_real_t   p12_fc2_S, p12_fc3_S;
+#ifdef CALC_ENERGIES
+    gmx_simd_real_t   p6_vc3_S, p6_vc4_S;
+    gmx_simd_real_t   p12_vc3_S, p12_vc4_S;
+    gmx_simd_real_t   p6_6cpot_S, p12_12cpot_S;
+#endif
+#else
+#ifdef CALC_ENERGIES
+    gmx_simd_real_t  p6_cpot_S, p12_cpot_S;
+#endif
+#endif
+#endif
+
 #ifdef LJ_COMB_LB
     const real       *ljc;
 
 #endif
 
 #ifdef CALC_ENERGIES
-    gmx_simd_real_t  sh_invrc6_S, sh_invrc12_S;
-
     /* cppcheck-suppress unassignedVariable */
     real       tmpsum_array[2*GMX_SIMD_REAL_WIDTH], *tmpsum;
 #endif
         exclusion_filter = nbat->simd_exclusion_filter2;
     }
 
-    /* Here we cast the exclusion masks from unsigned * to int * or
-     * real *.  Since we only check bits, the actual value they
-     * represent does not matter, as long as both mask and exclusion
-     * info are treated the same way.
+    /* Here we cast the exclusion filters from unsigned * to int * or real *.
+     * Since we only check bits, the actual value they represent does not
+     * matter, as long as both filter and mask data are treated the same way.
      */
     filter_S0 = gmx_load_exclusion_filter(exclusion_filter + 0*2*UNROLLJ*filter_stride);
     filter_S2 = gmx_load_exclusion_filter(exclusion_filter + 1*2*UNROLLJ*filter_stride);
 
+#ifdef CALC_COUL_RF
+    /* Reaction-field constants */
+    mrc_3_S  = gmx_simd_set1_r(-2*ic->k_rf);
+#ifdef CALC_ENERGIES
+    hrc_3_S  = gmx_simd_set1_r(ic->k_rf);
+    moh_rc_S = gmx_simd_set1_r(-ic->c_rf);
+#endif
+#endif
+
 #ifdef CALC_COUL_TAB
     /* Generate aligned table index pointers */
     ti0 = prepare_table_load_buffer(ti0_array);
     sh_ewald_S = gmx_simd_set1_r(ic->sh_ewald);
 #endif
 
-    q                   = nbat->q;
-    type                = nbat->type;
-    facel               = ic->epsfac;
-    shiftvec            = shift_vec[0];
-    x                   = nbat->x;
+    /* LJ function constants */
+#if defined CALC_ENERGIES || defined LJ_POT_SWITCH
+    sixth_S      = gmx_simd_set1_r(1.0/6.0);
+    twelveth_S   = gmx_simd_set1_r(1.0/12.0);
+#endif
 
-    avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC);
+#ifdef LJ_POT_SWITCH
+    rswitch_S = gmx_simd_set1_r(ic->rvdw_switch);
+    swV3_S    = gmx_simd_set1_r(ic->vdw_switch.c3);
+    swV4_S    = gmx_simd_set1_r(ic->vdw_switch.c4);
+    swV5_S    = gmx_simd_set1_r(ic->vdw_switch.c5);
+    swF2_S    = gmx_simd_set1_r(3*ic->vdw_switch.c3);
+    swF3_S    = gmx_simd_set1_r(4*ic->vdw_switch.c4);
+    swF4_S    = gmx_simd_set1_r(5*ic->vdw_switch.c5);
+#else
+    sixth_S      = gmx_simd_set1_r(1.0/6.0);
+    twelveth_S   = gmx_simd_set1_r(1.0/12.0);
+#ifdef LJ_FORCE_SWITCH
+    rswitch_S = gmx_simd_set1_r(ic->rvdw_switch);
+    p6_fc2_S  = gmx_simd_set1_r(ic->dispersion_shift.c2);
+    p6_fc3_S  = gmx_simd_set1_r(ic->dispersion_shift.c3);
+    p12_fc2_S = gmx_simd_set1_r(ic->repulsion_shift.c2);
+    p12_fc3_S = gmx_simd_set1_r(ic->repulsion_shift.c3);
+#ifdef CALC_ENERGIES
+    {
+        gmx_simd_real_t mthird_S  = gmx_simd_set1_r(-1.0/3.0);
+        gmx_simd_real_t mfourth_S = gmx_simd_set1_r(-1.0/4.0);
+
+        p6_vc3_S     = gmx_simd_mul_r(mthird_S,  p6_fc2_S);
+        p6_vc4_S     = gmx_simd_mul_r(mfourth_S, p6_fc3_S);
+        p6_6cpot_S   = gmx_simd_set1_r(ic->dispersion_shift.cpot/6);
+        p12_vc3_S    = gmx_simd_mul_r(mthird_S,  p12_fc2_S);
+        p12_vc4_S    = gmx_simd_mul_r(mfourth_S, p12_fc3_S);
+        p12_12cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot/12);
+    }
+#endif
+#else
+    /* Plain LJ cut-off, with potential shift cpot, which can be 0 */
+#ifdef CALC_ENERGIES
+    p6_cpot_S    = gmx_simd_set1_r(ic->dispersion_shift.cpot);
+    p12_cpot_S   = gmx_simd_set1_r(ic->repulsion_shift.cpot);
+#endif
+#endif
+#endif /* LJ_POT_SWITCH */
 
     /* The kernel either supports rcoulomb = rvdw or rcoulomb >= rvdw */
     rc2_S    = gmx_simd_set1_r(ic->rcoulomb*ic->rcoulomb);
     rcvdw2_S = gmx_simd_set1_r(ic->rvdw*ic->rvdw);
 #endif
 
-#ifdef CALC_ENERGIES
-    sixth_S      = gmx_simd_set1_r(1.0/6.0);
-    twelveth_S   = gmx_simd_set1_r(1.0/12.0);
-
-    sh_invrc6_S  = gmx_simd_set1_r(ic->sh_invrc6);
-    sh_invrc12_S = gmx_simd_set1_r(ic->sh_invrc6*ic->sh_invrc6);
-#endif
-
-    mrc_3_S  = gmx_simd_set1_r(-2*ic->k_rf);
-
-#ifdef CALC_ENERGIES
-    hrc_3_S  = gmx_simd_set1_r(ic->k_rf);
+    avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC);
 
-    moh_rc_S = gmx_simd_set1_r(-ic->c_rf);
-#endif
+    q                   = nbat->q;
+    type                = nbat->type;
+    facel               = ic->epsfac;
+    shiftvec            = shift_vec[0];
+    x                   = nbat->x;
 
 #ifdef CALC_ENERGIES
     tmpsum   = gmx_simd_align_r(tmpsum_array);
 #define CALC_LJ
         if (half_LJ)
         {
+            /* Coulomb: all i-atoms, LJ: first half i-atoms */
 #define CALC_COULOMB
 #define HALF_LJ
 #define CHECK_EXCLS
         }
         else if (do_coul)
         {
+            /* Coulomb: all i-atoms, LJ: all i-atoms */
 #define CALC_COULOMB
 #define CHECK_EXCLS
             while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL)
         }
         else
         {
+            /* Coulomb: none, LJ: all i-atoms */
 #define CHECK_EXCLS
             while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL)
             {
 
         /* Add accumulated i-forces to the force array */
         fix_S = gmx_mm_transpose_sum4h_pr(fix_S0, fix_S2);
-        gmx_store_pr4(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix)));
+        gmx_simd4_store_r(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix)));
 
         fiy_S = gmx_mm_transpose_sum4h_pr(fiy_S0, fiy_S2);
-        gmx_store_pr4(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy)));
+        gmx_simd4_store_r(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy)));
 
         fiz_S = gmx_mm_transpose_sum4h_pr(fiz_S0, fiz_S2);
-        gmx_store_pr4(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz)));
+        gmx_simd4_store_r(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz)));
 
 #ifdef CALC_SHIFTFORCES
         fshift[ish3+0] += gmx_sum_simd4(fix_S, shf);
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c
deleted file mode 100644 (file)
index 63e2cfd..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_RF
-#define LJ_COMB_GEOM
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                            const nbnxn_atomdata_t    gmx_unused *nbat,
-                                            const interaction_const_t gmx_unused *ic,
-                                            rvec                      gmx_unused *shift_vec,
-                                            real                      gmx_unused *f,
-                                            real                      gmx_unused *fshift,
-                                            real                      gmx_unused *Vvdw,
-                                            real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                            const nbnxn_atomdata_t    gmx_unused *nbat,
-                                            const interaction_const_t gmx_unused *ic,
-                                            rvec                      gmx_unused *shift_vec,
-                                            real                      gmx_unused *f,
-                                            real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c
deleted file mode 100644 (file)
index 106af49..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_RF
-#define LJ_COMB_LB
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                          const nbnxn_atomdata_t    gmx_unused *nbat,
-                                          const interaction_const_t gmx_unused *ic,
-                                          rvec                      gmx_unused *shift_vec,
-                                          real                      gmx_unused *f,
-                                          real                      gmx_unused *fshift,
-                                          real                      gmx_unused *Vvdw,
-                                          real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                          const nbnxn_atomdata_t    gmx_unused *nbat,
-                                          const interaction_const_t gmx_unused *ic,
-                                          rvec                      gmx_unused *shift_vec,
-                                          real                      gmx_unused *f,
-                                          real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn.c
new file mode 100644 (file)
index 0000000..e102dd5
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                               const nbnxn_atomdata_t    gmx_unused *nbat,
+                                               const interaction_const_t gmx_unused *ic,
+                                               rvec                      gmx_unused *shift_vec,
+                                               real                      gmx_unused *f,
+                                               real                      gmx_unused *fshift,
+                                               real                      gmx_unused *Vvdw,
+                                               real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                               const nbnxn_atomdata_t    gmx_unused *nbat,
+                                               const interaction_const_t gmx_unused *ic,
+                                               rvec                      gmx_unused *shift_vec,
+                                               real                      gmx_unused *f,
+                                               real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn.c
index cd98b10656209cf1fc7d84f0c242c010ba7c67ad..73fe4a096a23a5be95b6f75b1c5bf1067de671df 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
                                                 const interaction_const_t gmx_unused *ic,
                                                 rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_un
                                                 real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
                                                 const interaction_const_t gmx_unused *ic,
                                                 rvec                      gmx_unused *shift_vec,
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn.c
index 5d45131e64f3f648fbef9074fa590c5dd6c997a6..8cf043d5be4ca6cfde1d4917a6c6ee4b3e53312c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -58,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                    const nbnxn_atomdata_t    gmx_unused *nbat,
                                                    const interaction_const_t gmx_unused *ic,
                                                    rvec                      gmx_unused *shift_vec,
@@ -68,7 +68,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx
                                                    real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                    const nbnxn_atomdata_t    gmx_unused *nbat,
                                                    const interaction_const_t gmx_unused *ic,
                                                    rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn.c
index 88b4baba4792e63c519d821ea0303d2789edce44..d4ddce8cc7264d43b060b56df9023a2c48a73810 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,8 @@
 #include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
 /* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_4XN
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t    gmx_unuse
                                              real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn.c
index ee49e35f45e9c5d8cd7b515ba7bfb9c822c86575..2fd6943440272c722a3ec2d16666384d8b458c30 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unus
                                               real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn.c
index 70bfef0895a9e1013f802924e9719f3de4697817..2104429a91c3f34ddd3b9df3aa7004c6bc27a3eb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -58,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
@@ -68,7 +68,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_u
                                                  real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn.c
new file mode 100644 (file)
index 0000000..ab1343e
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                          const nbnxn_atomdata_t    gmx_unused *nbat,
+                                          const interaction_const_t gmx_unused *ic,
+                                          rvec                      gmx_unused *shift_vec,
+                                          real                      gmx_unused *f,
+                                          real                      gmx_unused *fshift,
+                                          real                      gmx_unused *Vvdw,
+                                          real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                          const nbnxn_atomdata_t    gmx_unused *nbat,
+                                          const interaction_const_t gmx_unused *ic,
+                                          rvec                      gmx_unused *shift_vec,
+                                          real                      gmx_unused *f,
+                                          real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 92%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn.c
index 96a3f4ff3f639efc3058a9d6ef48a4dfe3e8cd9d..513b1c4589fe35f2679eb1773d3f872c3e75a2af 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_TAB
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
-/* Will not calculate energies */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -56,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
@@ -66,7 +68,7 @@ nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t    gmx_unused
                                            real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..2d97d08
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                              const nbnxn_atomdata_t    gmx_unused *nbat,
+                                              const interaction_const_t gmx_unused *ic,
+                                              rvec                      gmx_unused *shift_vec,
+                                              real                      gmx_unused *f,
+                                              real                      gmx_unused *fshift,
+                                              real                      gmx_unused *Vvdw,
+                                              real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                              const nbnxn_atomdata_t    gmx_unused *nbat,
+                                              const interaction_const_t gmx_unused *ic,
+                                              rvec                      gmx_unused *shift_vec,
+                                              real                      gmx_unused *f,
+                                              real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn.c
new file mode 100644 (file)
index 0000000..b156e36
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                          const nbnxn_atomdata_t    gmx_unused *nbat,
+                                          const interaction_const_t gmx_unused *ic,
+                                          rvec                      gmx_unused *shift_vec,
+                                          real                      gmx_unused *f,
+                                          real                      gmx_unused *fshift,
+                                          real                      gmx_unused *Vvdw,
+                                          real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                          const nbnxn_atomdata_t    gmx_unused *nbat,
+                                          const interaction_const_t gmx_unused *ic,
+                                          rvec                      gmx_unused *shift_vec,
+                                          real                      gmx_unused *f,
+                                          real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn.c
index 3e92f288ca2d63600d1e2accfa3ec22c8863dee3..8fc7a7b437ba132ff083a88d2ed589cf4c696301 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,9 @@
 #include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_4XN
@@ -56,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
@@ -66,7 +68,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t    gmx_unused
                                            real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn.c
index 9d2079d63f472855cce39c405f481e7c2f63a0f4..ad083c0c5a0a0730e615885c3d2e6f48ce5a222d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,9 @@
 #include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -57,7 +59,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
@@ -67,7 +69,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t    gmx_unus
                                               real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn.c
new file mode 100644 (file)
index 0000000..a62b606
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn.c
index 6e38fe11af7b12c3789122dc4e58bc69f6e130fb..cf85a589e06406c23720be43bd3a03a32e74bf2e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,8 @@
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
 #define CALC_ENERGIES
 
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                         const nbnxn_atomdata_t    gmx_unused *nbat,
                                         const interaction_const_t gmx_unused *ic,
                                         rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nb
                                         real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                         const nbnxn_atomdata_t    gmx_unused *nbat,
                                         const interaction_const_t gmx_unused *ic,
                                         rvec                      gmx_unused *shift_vec,
similarity index 92%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn.c
index cb970324e27119f43a4e1b773ddc509e8fb57caa..667b13b49288755a543330e68a7f83aae61f8a61 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 #include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
 #define CALC_ENERGIES
+#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -56,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
@@ -66,7 +68,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused
                                            real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn.c
index a9f06ef23d2668b9ae54bb55ff9f34f86dc75f8f..8acf55738601060742a3dda2755715b750776f7c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,9 +46,9 @@
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
 #define LJ_COMB_GEOM
-#define CALC_ENERGIES
+/* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                         const nbnxn_atomdata_t    gmx_unused *nbat,
                                         const interaction_const_t gmx_unused *ic,
                                         rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nb
                                         real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                         const nbnxn_atomdata_t    gmx_unused *nbat,
                                         const interaction_const_t gmx_unused *ic,
                                         rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn.c
index 94f5db0f6935b42b89c0c1d3860b365194f222aa..4660845a02230ea4a9563c2ef9defac2dc9aad92 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,7 @@
 #include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_EWALD
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_4XN
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *n
                                          real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn.c
index 062cad7e9158752cab8f8516865d2e5b5ca6b996..5feb79939e3b9c415f4734022d6d34f9df25d389 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,7 @@
 #include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_EWALD
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused
                                             real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
similarity index 68%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn.c
index aeaa88b425296efca8e64d3ead910200179c1a4a..30478d566ccb3a777d6c9e21e977425bcbabd5f9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                           const nbnxn_atomdata_t    gmx_unused *nbat,
-                                           const interaction_const_t gmx_unused *ic,
-                                           rvec                      gmx_unused *shift_vec,
-                                           real                      gmx_unused *f,
-                                           real                      gmx_unused *fshift,
-                                           real                      gmx_unused *Vvdw,
-                                           real                      gmx_unused *Vc)
+nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                      const nbnxn_atomdata_t    gmx_unused *nbat,
+                                      const interaction_const_t gmx_unused *ic,
+                                      rvec                      gmx_unused *shift_vec,
+                                      real                      gmx_unused *f,
+                                      real                      gmx_unused *fshift,
+                                      real                      gmx_unused *Vvdw,
+                                      real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                           const nbnxn_atomdata_t    gmx_unused *nbat,
-                                           const interaction_const_t gmx_unused *ic,
-                                           rvec                      gmx_unused *shift_vec,
-                                           real                      gmx_unused *f,
-                                           real                      gmx_unused *fshift)
+nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                      const nbnxn_atomdata_t    gmx_unused *nbat,
+                                      const interaction_const_t gmx_unused *ic,
+                                      rvec                      gmx_unused *shift_vec,
+                                      real                      gmx_unused *f,
+                                      real                      gmx_unused *fshift)
 #endif /* CALC_ENERGIES */
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_outer.h"
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn.c
new file mode 100644 (file)
index 0000000..b7aedd1
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..e024054
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                          const nbnxn_atomdata_t    gmx_unused *nbat,
+                                          const interaction_const_t gmx_unused *ic,
+                                          rvec                      gmx_unused *shift_vec,
+                                          real                      gmx_unused *f,
+                                          real                      gmx_unused *fshift,
+                                          real                      gmx_unused *Vvdw,
+                                          real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                          const nbnxn_atomdata_t    gmx_unused *nbat,
+                                          const interaction_const_t gmx_unused *ic,
+                                          rvec                      gmx_unused *shift_vec,
+                                          real                      gmx_unused *f,
+                                          real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn.c
new file mode 100644 (file)
index 0000000..56ec7fe
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift,
+                                   real                      gmx_unused *Vvdw,
+                                   real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn.c
new file mode 100644 (file)
index 0000000..bf88b72
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..733dded
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn.c
new file mode 100644 (file)
index 0000000..0c28c69
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift,
+                                   real                      gmx_unused *Vvdw,
+                                   real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn.c
new file mode 100644 (file)
index 0000000..456eea3
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..8aea98b
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_F_4xn.c
new file mode 100644 (file)
index 0000000..8e50faf
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                const nbnxn_atomdata_t    gmx_unused *nbat,
+                                const interaction_const_t gmx_unused *ic,
+                                rvec                      gmx_unused *shift_vec,
+                                real                      gmx_unused *f,
+                                real                      gmx_unused *fshift,
+                                real                      gmx_unused *Vvdw,
+                                real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                const nbnxn_atomdata_t    gmx_unused *nbat,
+                                const interaction_const_t gmx_unused *ic,
+                                rvec                      gmx_unused *shift_vec,
+                                real                      gmx_unused *f,
+                                real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VF_4xn.c
new file mode 100644 (file)
index 0000000..e4eb170
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                 const nbnxn_atomdata_t    gmx_unused *nbat,
+                                 const interaction_const_t gmx_unused *ic,
+                                 rvec                      gmx_unused *shift_vec,
+                                 real                      gmx_unused *f,
+                                 real                      gmx_unused *fshift,
+                                 real                      gmx_unused *Vvdw,
+                                 real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                 const nbnxn_atomdata_t    gmx_unused *nbat,
+                                 const interaction_const_t gmx_unused *ic,
+                                 rvec                      gmx_unused *shift_vec,
+                                 real                      gmx_unused *f,
+                                 real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..5243174
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn.c
index 4a64d67fb1d08f6a0d8de5e5dfe6cb3750958084..0760890529f9241417c30300baa375c9e115cd6e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,7 @@
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 #define LJ_COMB_GEOM
 /* Will not calculate energies */
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_
                                                   real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                   const nbnxn_atomdata_t    gmx_unused *nbat,
                                                   const interaction_const_t gmx_unused *ic,
                                                   rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn.c
index 5a84b1895247e213ddfa8d173377faa3aefed5db..b5e4504124dbbc9988d4ab0291b165f33ef4b835 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
-#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -58,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                    const nbnxn_atomdata_t    gmx_unused *nbat,
                                                    const interaction_const_t gmx_unused *ic,
                                                    rvec                      gmx_unused *shift_vec,
@@ -68,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx
                                                    real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                    const nbnxn_atomdata_t    gmx_unused *nbat,
                                                    const interaction_const_t gmx_unused *ic,
                                                    rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..4ee1264
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                                      const nbnxn_atomdata_t    gmx_unused *nbat,
+                                                      const interaction_const_t gmx_unused *ic,
+                                                      rvec                      gmx_unused *shift_vec,
+                                                      real                      gmx_unused *f,
+                                                      real                      gmx_unused *fshift,
+                                                      real                      gmx_unused *Vvdw,
+                                                      real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                                      const nbnxn_atomdata_t    gmx_unused *nbat,
+                                                      const interaction_const_t gmx_unused *ic,
+                                                      rvec                      gmx_unused *shift_vec,
+                                                      real                      gmx_unused *f,
+                                                      real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn.c
index afa24c421fb1d13dd8635fed556be35aa55166e0..e605a3e21a912e308f3c0f13860c1d664e79b47c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,7 +48,7 @@
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+#define LJ_COMB_LB
 /* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_4XN
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
                                                 const interaction_const_t gmx_unused *ic,
                                                 rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_un
                                                 real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                 const nbnxn_atomdata_t    gmx_unused *nbat,
                                                 const interaction_const_t gmx_unused *ic,
                                                 rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn.c
index 3a02705c43f58a7496522d4f16c77ddd77ab4759..fa3c5629e69b05a284c146cf1e6908641a1dd6a9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,9 +48,8 @@
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+#define LJ_COMB_LB
 #define CALC_ENERGIES
-#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -58,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
@@ -68,7 +67,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_u
                                                  real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..57cd068
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                                    const interaction_const_t gmx_unused *ic,
+                                                    rvec                      gmx_unused *shift_vec,
+                                                    real                      gmx_unused *f,
+                                                    real                      gmx_unused *fshift,
+                                                    real                      gmx_unused *Vvdw,
+                                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                                    const interaction_const_t gmx_unused *ic,
+                                                    rvec                      gmx_unused *shift_vec,
+                                                    real                      gmx_unused *f,
+                                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn.c
new file mode 100644 (file)
index 0000000..337c48d
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                             const nbnxn_atomdata_t    gmx_unused *nbat,
+                                             const interaction_const_t gmx_unused *ic,
+                                             rvec                      gmx_unused *shift_vec,
+                                             real                      gmx_unused *f,
+                                             real                      gmx_unused *fshift,
+                                             real                      gmx_unused *Vvdw,
+                                             real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                             const nbnxn_atomdata_t    gmx_unused *nbat,
+                                             const interaction_const_t gmx_unused *ic,
+                                             rvec                      gmx_unused *shift_vec,
+                                             real                      gmx_unused *f,
+                                             real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn.c
index d7f00c506e169e3fc621705a9f98bdbfc16bbcda..23ed6b7fca6d65b4696f020b0293d733f4646d28 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,8 +48,9 @@
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-/* Will not calculate energies */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -57,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
@@ -67,7 +68,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unus
                                               real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
similarity index 82%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn.c
index d59e6227e575370e58965df084a942502cb0a6d6..a211d2248ed8945d1b5869fc56d2b0e19cb4f23e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
  */
 /*
  * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
+ * kernel type 4xn.
  */
 
 /* Some target architectures compile kernels for only some NBNxN
  * kernel flavours, but the code is generated before the target
  * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
  * function definition when the kernel will never be called.
  */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
-/* Will not calculate energies */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
 
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
@@ -67,21 +69,21 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_u
                                                  real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
                                                  real                      gmx_unused *f,
                                                  real                      gmx_unused *fshift)
 #endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
 {
 /* No need to call gmx_incons() here, because the only function
  * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
  * instead call gmx_incons().
  */
 }
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 82%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn.c
index ad0b452829740d3eceae7b57657aaf5e6319944d..4b589147f2ee7ea9417697a05ef67284f97b3248 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
  */
 /*
  * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
+ * kernel type 4xn.
  */
 
 /* Some target architectures compile kernels for only some NBNxN
  * kernel flavours, but the code is generated before the target
  * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
  * function definition when the kernel will never be called.
  */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-#define CALC_ENERGIES
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
 
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
@@ -67,21 +68,21 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unuse
                                              real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
                                              real                      gmx_unused *f,
                                              real                      gmx_unused *fshift)
 #endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
 {
 /* No need to call gmx_incons() here, because the only function
  * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
  * instead call gmx_incons().
  */
 }
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn.c
index 4493dec7fde15b21f2e77e1b899340cf1acb64a7..332cbe16815fcd93ac608497509b73f506271ba5 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -49,6 +49,7 @@
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_4XN
@@ -57,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
@@ -67,7 +68,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unus
                                               real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn.c
index 01f982ba20f8e0aa6a3a09aeea1d1b0ee9322575..2f48effa698e0b7433859f4cebd5687fb4529260 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -49,6 +49,7 @@
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -58,7 +59,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
@@ -68,7 +69,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_u
                                                  real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                  const nbnxn_atomdata_t    gmx_unused *nbat,
                                                  const interaction_const_t gmx_unused *ic,
                                                  rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn.c
index d81c82f637bac1b3ed6a79230c1055dee4b3bcc9..c66d8108fa29c52f749894f0aa0c08c2a45a1ebe 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,8 @@
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_RF
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
 /* Will not calculate energies */
 
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *
                                           real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn.c
index 5d5ae6bfb7b9bce1afd81c137159763680d0e620..1350b512a9454d34564803123cab27486a6a224d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_RF
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
 /* Use no LJ combination rule */
 #define CALC_ENERGIES
-#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused
                                            real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn.c
index a328039acba910d1748ea46314c84738f69765a5..e2d9c53fbe2fea6180221a2f45ef586628d270e0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,8 +48,9 @@
 
 #define CALC_COUL_TAB
 #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+/* Use no LJ combination rule */
 #define CALC_ENERGIES
+#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -57,7 +58,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
@@ -67,7 +68,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unus
                                               real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                               const nbnxn_atomdata_t    gmx_unused *nbat,
                                               const interaction_const_t gmx_unused *ic,
                                               rvec                      gmx_unused *shift_vec,
similarity index 95%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn.c
index c95b9aa877e47a9b9bb344161c65a7d4429f8ec9..c716a94c9ee3cfee77ba2ff8bcdfadeea9a19533 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused
                                            real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                            const nbnxn_atomdata_t    gmx_unused *nbat,
                                            const interaction_const_t gmx_unused *ic,
                                            rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn.c
index 7fccc0e95f8dc6807057191238951ff0ab7bcf67..c99c7e51d9e8b33e420657e3e6f3b8d4c44e8fbd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -49,7 +49,6 @@
 #define CALC_COUL_TAB
 #define LJ_COMB_GEOM
 #define CALC_ENERGIES
-#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -57,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
@@ -67,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused
                                             real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn.c
index 3ff287557a672739a19c1103429b1efa187186c9..a07bb56374eaec910d57e81584567ade8d1baf0b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,8 +47,7 @@
 #include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_TAB
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -58,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
@@ -68,7 +67,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unu
                                                real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                                const nbnxn_atomdata_t    gmx_unused *nbat,
                                                const interaction_const_t gmx_unused *ic,
                                                rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn.c
index dd79f7984b1cf44636da8a9190d8ab5170c1b2ef..0f10b4d54764b7b31c80be7ff57297d1dc98694f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *n
                                          real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn.c
index d4ffc981c77b539803ea2fda6f18b4a4d358e94c..aa5997a71c3a3e071b8c33d1edc0d8d678dcf0ee 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -49,7 +49,6 @@
 #define CALC_COUL_TAB
 #define LJ_COMB_LB
 #define CALC_ENERGIES
-#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -57,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
@@ -67,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *
                                           real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
similarity index 92%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn.c
index 2608813e283b03416b22dcc0ffa810b31dc060af..1cd5bebb370b58fc30f15705bf05acad20219d03 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_EWALD
-/* Use no LJ combination rule */
-/* Will not calculate energies */
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t    gmx_unuse
                                              real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                              const nbnxn_atomdata_t    gmx_unused *nbat,
                                              const interaction_const_t gmx_unused *ic,
                                              rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn.c
new file mode 100644 (file)
index 0000000..04e3ffc
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                      const nbnxn_atomdata_t    gmx_unused *nbat,
+                                      const interaction_const_t gmx_unused *ic,
+                                      rvec                      gmx_unused *shift_vec,
+                                      real                      gmx_unused *f,
+                                      real                      gmx_unused *fshift,
+                                      real                      gmx_unused *Vvdw,
+                                      real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                      const nbnxn_atomdata_t    gmx_unused *nbat,
+                                      const interaction_const_t gmx_unused *ic,
+                                      rvec                      gmx_unused *shift_vec,
+                                      real                      gmx_unused *f,
+                                      real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn.c
new file mode 100644 (file)
index 0000000..6965f31
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..c816812
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                          const nbnxn_atomdata_t    gmx_unused *nbat,
+                                          const interaction_const_t gmx_unused *ic,
+                                          rvec                      gmx_unused *shift_vec,
+                                          real                      gmx_unused *f,
+                                          real                      gmx_unused *fshift,
+                                          real                      gmx_unused *Vvdw,
+                                          real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                          const nbnxn_atomdata_t    gmx_unused *nbat,
+                                          const interaction_const_t gmx_unused *ic,
+                                          rvec                      gmx_unused *shift_vec,
+                                          real                      gmx_unused *f,
+                                          real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn.c
new file mode 100644 (file)
index 0000000..4b9d360
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                      const nbnxn_atomdata_t    gmx_unused *nbat,
+                                      const interaction_const_t gmx_unused *ic,
+                                      rvec                      gmx_unused *shift_vec,
+                                      real                      gmx_unused *f,
+                                      real                      gmx_unused *fshift,
+                                      real                      gmx_unused *Vvdw,
+                                      real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                      const nbnxn_atomdata_t    gmx_unused *nbat,
+                                      const interaction_const_t gmx_unused *ic,
+                                      rvec                      gmx_unused *shift_vec,
+                                      real                      gmx_unused *f,
+                                      real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 68%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn.c
index ce0a10fb6b68224e14f7a059c078298dba892883..cc284d13e5da03d2178def8bfa600135e0d0d853 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,6 +48,7 @@
 
 #define CALC_COUL_TAB
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
 
 #ifdef GMX_NBNXN_SIMD_4XN
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                         const nbnxn_atomdata_t    gmx_unused *nbat,
-                                         const interaction_const_t gmx_unused *ic,
-                                         rvec                      gmx_unused *shift_vec,
-                                         real                      gmx_unused *f,
-                                         real                      gmx_unused *fshift,
-                                         real                      gmx_unused *Vvdw,
-                                         real                      gmx_unused *Vc)
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                         const nbnxn_atomdata_t    gmx_unused *nbat,
-                                         const interaction_const_t gmx_unused *ic,
-                                         rvec                      gmx_unused *shift_vec,
-                                         real                      gmx_unused *f,
-                                         real                      gmx_unused *fshift)
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
 #endif /* CALC_ENERGIES */
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_outer.h"
similarity index 82%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn.c
index 50038027ee94e8ef6d79e08a51e4142a57f0a68a..59e2c624ba6c6a69d6babdd7f7c99b7e97d044f8 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
  */
 /*
  * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
+ * kernel type 4xn.
  */
 
 /* Some target architectures compile kernels for only some NBNxN
  * kernel flavours, but the code is generated before the target
  * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
  * function definition when the kernel will never be called.
  */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_TAB
 /* Use no LJ combination rule */
+#define LJ_POT_SWITCH
 #define CALC_ENERGIES
+#define ENERGY_GROUPS
 
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
@@ -66,21 +68,21 @@ nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *
                                           real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
                                           real                      gmx_unused *f,
                                           real                      gmx_unused *fshift)
 #endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
 {
 /* No need to call gmx_incons() here, because the only function
  * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
  * instead call gmx_incons().
  */
 }
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn.c
new file mode 100644 (file)
index 0000000..a33a35a
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift,
+                                   real                      gmx_unused *Vvdw,
+                                   real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn.c
new file mode 100644 (file)
index 0000000..72c53da
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..0535579
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn.c
index c85bd4bcf4aa6026c93b5eca2734d0c7dbde0dca..a49d7694523b9561fda8ef130732b7fcf6c719f8 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,7 +47,7 @@
 #include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_RF
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
 /* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_4XN
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                         const nbnxn_atomdata_t    gmx_unused *nbat,
                                         const interaction_const_t gmx_unused *ic,
                                         rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nb
                                         real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                         const nbnxn_atomdata_t    gmx_unused *nbat,
                                         const interaction_const_t gmx_unused *ic,
                                         rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn.c
index e83944bdb9bbbbae078622ca8dc63b537fda1cbc..8ab2694b0d1dfd5c2943abc3f24833c69cceb15c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,7 @@
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_TAB
+#define CALC_COUL_RF
 #define LJ_COMB_GEOM
 #define CALC_ENERGIES
 
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *n
                                          real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                          const nbnxn_atomdata_t    gmx_unused *nbat,
                                          const interaction_const_t gmx_unused *ic,
                                          rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_energrp.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn.c
index 723fe790f48dce707758433b70c8808f53753db2..e73120cd771e32d55c33c6e7392dd6513d587672 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,8 +46,8 @@
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_TAB
-/* Use no LJ combination rule */
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
 #define CALC_ENERGIES
 #define ENERGY_GROUPS
 
@@ -57,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
@@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused
                                             real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                             const nbnxn_atomdata_t    gmx_unused *nbat,
                                             const interaction_const_t gmx_unused *ic,
                                             rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn.c
index 32b333825345dec8df971bf33169fb4d7b52a29b..50025c00b6303be0e2da8acd8a8e58eb84936230 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -48,7 +48,7 @@
 
 #define CALC_COUL_RF
 #define LJ_COMB_LB
-#define CALC_ENERGIES
+/* Will not calculate energies */
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                       const nbnxn_atomdata_t    gmx_unused *nbat,
                                       const interaction_const_t gmx_unused *ic,
                                       rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
                                       real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                       const nbnxn_atomdata_t    gmx_unused *nbat,
                                       const interaction_const_t gmx_unused *ic,
                                       rvec                      gmx_unused *shift_vec,
similarity index 94%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_ener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn.c
index 53782ce9ddecf558823048d1de8ae72a249ad424..49ae82cc5b9af29ce5fa4e7949da247edcb50616 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -46,7 +46,7 @@
 #define GMX_SIMD_J_UNROLL_SIZE 1
 #include "nbnxn_kernel_simd_4xn.h"
 
-#define CALC_COUL_TAB
+#define CALC_COUL_RF
 #define LJ_COMB_LB
 #define CALC_ENERGIES
 
@@ -56,7 +56,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                        const nbnxn_atomdata_t    gmx_unused *nbat,
                                        const interaction_const_t gmx_unused *ic,
                                        rvec                      gmx_unused *shift_vec,
@@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl
                                        real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                        const nbnxn_atomdata_t    gmx_unused *nbat,
                                        const interaction_const_t gmx_unused *ic,
                                        rvec                      gmx_unused *shift_vec,
similarity index 93%
rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_noener.c
rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn.c
index 65d2acc7fce9ea864dd2e7ade03196a442099f47..66bac230ccbece9eca88c282a70bd3050976a143 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -47,8 +47,9 @@
 #include "nbnxn_kernel_simd_4xn.h"
 
 #define CALC_COUL_RF
-#define LJ_COMB_GEOM
-/* Will not calculate energies */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
 
 #ifdef GMX_NBNXN_SIMD_4XN
 #include "nbnxn_kernel_simd_4xn_common.h"
@@ -56,7 +57,7 @@
 
 #ifdef CALC_ENERGIES
 void
-nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
@@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *
                                           real                      gmx_unused *Vc)
 #else /* CALC_ENERGIES */
 void
-nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
                                           const nbnxn_atomdata_t    gmx_unused *nbat,
                                           const interaction_const_t gmx_unused *ic,
                                           rvec                      gmx_unused *shift_vec,
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn.c
new file mode 100644 (file)
index 0000000..4332e9e
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift,
+                                   real                      gmx_unused *Vvdw,
+                                   real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn.c
new file mode 100644 (file)
index 0000000..9add969
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..5ed58c0
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn.c
new file mode 100644 (file)
index 0000000..76f8cef
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift,
+                                   real                      gmx_unused *Vvdw,
+                                   real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                   const nbnxn_atomdata_t    gmx_unused *nbat,
+                                   const interaction_const_t gmx_unused *ic,
+                                   rvec                      gmx_unused *shift_vec,
+                                   real                      gmx_unused *f,
+                                   real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn.c
new file mode 100644 (file)
index 0000000..1f04248
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..5280256
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift,
+                                       real                      gmx_unused *Vvdw,
+                                       real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                       const nbnxn_atomdata_t    gmx_unused *nbat,
+                                       const interaction_const_t gmx_unused *ic,
+                                       rvec                      gmx_unused *shift_vec,
+                                       real                      gmx_unused *f,
+                                       real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_F_4xn.c
new file mode 100644 (file)
index 0000000..c42cf26
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                const nbnxn_atomdata_t    gmx_unused *nbat,
+                                const interaction_const_t gmx_unused *ic,
+                                rvec                      gmx_unused *shift_vec,
+                                real                      gmx_unused *f,
+                                real                      gmx_unused *fshift,
+                                real                      gmx_unused *Vvdw,
+                                real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_F_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                const nbnxn_atomdata_t    gmx_unused *nbat,
+                                const interaction_const_t gmx_unused *ic,
+                                rvec                      gmx_unused *shift_vec,
+                                real                      gmx_unused *f,
+                                real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VF_4xn.c
new file mode 100644 (file)
index 0000000..2a48e30
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                 const nbnxn_atomdata_t    gmx_unused *nbat,
+                                 const interaction_const_t gmx_unused *ic,
+                                 rvec                      gmx_unused *shift_vec,
+                                 real                      gmx_unused *f,
+                                 real                      gmx_unused *fshift,
+                                 real                      gmx_unused *Vvdw,
+                                 real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_VF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                 const nbnxn_atomdata_t    gmx_unused *nbat,
+                                 const interaction_const_t gmx_unused *ic,
+                                 rvec                      gmx_unused *shift_vec,
+                                 real                      gmx_unused *f,
+                                 real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn.c
new file mode 100644 (file)
index 0000000..65f8e95
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift,
+                                    real                      gmx_unused *Vvdw,
+                                    real                      gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t    gmx_unused *nbl,
+                                    const nbnxn_atomdata_t    gmx_unused *nbat,
+                                    const interaction_const_t gmx_unused *ic,
+                                    rvec                      gmx_unused *shift_vec,
+                                    real                      gmx_unused *f,
+                                    real                      gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
index 13810fa8807671134f6791aafece4714af85caf6..5694d56ff7764a11f7c130fbb038990b3242b6b7 100644 (file)
@@ -48,9 +48,9 @@
 #ifdef GMX_NBNXN_HALF_WIDTH_SIMD
 #define GMX_USE_HALF_WIDTH_SIMD_HERE
 #endif
+
 #include "gromacs/simd/macros.h"
 #include "gromacs/simd/vector_operations.h"
-
 #if !(GMX_SIMD_REAL_WIDTH == 2 || GMX_SIMD_REAL_WIDTH == 4 || GMX_SIMD_REAL_WIDTH == 8)
 #error "unsupported SIMD width"
 #endif
@@ -60,6 +60,7 @@
 #include "../nbnxn_kernel_common.h"
 #include "gmx_omp_nthreads.h"
 #include "types/force_flags.h"
+#include "gmx_fatal.h"
 
 /*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels
  */
@@ -67,91 +68,124 @@ enum {
     coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR
 };
 
-/* Declare and define the kernel function pointer lookup tables. */
-static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] =
+/* Declare and define the kernel function pointer lookup tables.
+ * The minor index of the array goes over both the LJ combination rules,
+ * which is only supported by plain cut-off, and the LJ switch functions.
+ */
+static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR+2] =
 {
     {
-        nbnxn_kernel_simd_4xn_rf_comb_geom_ener,
-        nbnxn_kernel_simd_4xn_rf_comb_lb_ener,
-        nbnxn_kernel_simd_4xn_rf_comb_none_ener,
+        nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn,
+        nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn,
+        nbnxn_kernel_ElecRF_VdwLJ_F_4xn,
+        nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn,
+        nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_tab_comb_geom_ener,
-        nbnxn_kernel_simd_4xn_tab_comb_lb_ener,
-        nbnxn_kernel_simd_4xn_tab_comb_none_ener,
+        nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener,
-        nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener,
-        nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_ewald_comb_geom_ener,
-        nbnxn_kernel_simd_4xn_ewald_comb_lb_ener,
-        nbnxn_kernel_simd_4xn_ewald_comb_none_ener,
+        nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn,
+        nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn,
+        nbnxn_kernel_ElecEw_VdwLJ_F_4xn,
+        nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn,
+        nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener,
-        nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener,
-        nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn,
     },
 };
 
-static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR+2] =
 {
     {
-        nbnxn_kernel_simd_4xn_rf_comb_geom_energrp,
-        nbnxn_kernel_simd_4xn_rf_comb_lb_energrp,
-        nbnxn_kernel_simd_4xn_rf_comb_none_energrp,
+        nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn,
+        nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn,
+        nbnxn_kernel_ElecRF_VdwLJ_VF_4xn,
+        nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn,
+        nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_tab_comb_geom_energrp,
-        nbnxn_kernel_simd_4xn_tab_comb_lb_energrp,
-        nbnxn_kernel_simd_4xn_tab_comb_none_energrp,
+        nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp,
-        nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp,
-        nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp,
-        nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp,
-        nbnxn_kernel_simd_4xn_ewald_comb_none_energrp,
+        nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn,
+        nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn,
+        nbnxn_kernel_ElecEw_VdwLJ_VF_4xn,
+        nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn,
+        nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp,
-        nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp,
-        nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn,
     },
 };
 
-static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR+2] =
 {
     {
-        nbnxn_kernel_simd_4xn_rf_comb_geom_noener,
-        nbnxn_kernel_simd_4xn_rf_comb_lb_noener,
-        nbnxn_kernel_simd_4xn_rf_comb_none_noener,
+        nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn,
+        nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn,
+        nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn,
+        nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn,
+        nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_tab_comb_geom_noener,
-        nbnxn_kernel_simd_4xn_tab_comb_lb_noener,
-        nbnxn_kernel_simd_4xn_tab_comb_none_noener,
+        nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn,
+        nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener,
-        nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener,
-        nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn,
+        nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_ewald_comb_geom_noener,
-        nbnxn_kernel_simd_4xn_ewald_comb_lb_noener,
-        nbnxn_kernel_simd_4xn_ewald_comb_none_noener,
+        nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn,
+        nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn,
+        nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn,
+        nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn,
+        nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn,
     },
     {
-        nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener,
-        nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener,
-        nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn,
+        nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn,
     },
 };
 
@@ -217,7 +251,7 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
 {
     int                nnbl;
     nbnxn_pairlist_t **nbl;
-    int                coult;
+    int                coult, ljtreatment = 0;
     int                nb;
 
     nnbl = nbl_list->nnbl;
@@ -253,6 +287,23 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
         }
     }
 
+    switch (ic->vdw_modifier)
+    {
+        case eintmodNONE:
+        case eintmodPOTSHIFT:
+            ljtreatment = nbat->comb_rule;
+            break;
+        /* Switch functions follow after cut-off combination rule kernels */
+        case eintmodFORCESWITCH:
+            ljtreatment = ljcrNR;
+            break;
+        case eintmodPOTSWITCH:
+            ljtreatment = ljcrNR + 1;
+            break;
+        default:
+            gmx_incons("Unsupported VdW interaction modifier");
+    }
+
 #pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded))
     for (nb = 0; nb < nnbl; nb++)
     {
@@ -283,11 +334,11 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
         if (!(force_flags & GMX_FORCE_ENERGY))
         {
             /* Don't calculate energies */
-            p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat,
-                                                 ic,
-                                                 shift_vec,
-                                                 out->f,
-                                                 fshift_p);
+            p_nbk_noener[coult][ljtreatment](nbl[nb], nbat,
+                                             ic,
+                                             shift_vec,
+                                             out->f,
+                                             fshift_p);
         }
         else if (out->nV == 1)
         {
@@ -295,13 +346,13 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
             out->Vvdw[0] = 0;
             out->Vc[0]   = 0;
 
-            p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat,
-                                               ic,
-                                               shift_vec,
-                                               out->f,
-                                               fshift_p,
-                                               out->Vvdw,
-                                               out->Vc);
+            p_nbk_ener[coult][ljtreatment](nbl[nb], nbat,
+                                           ic,
+                                           shift_vec,
+                                           out->f,
+                                           fshift_p,
+                                           out->Vvdw,
+                                           out->Vc);
         }
         else
         {
@@ -317,13 +368,13 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
                 out->VSc[i] = 0;
             }
 
-            p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat,
-                                                  ic,
-                                                  shift_vec,
-                                                  out->f,
-                                                  fshift_p,
-                                                  out->VSvdw,
-                                                  out->VSc);
+            p_nbk_energrp[coult][ljtreatment](nbl[nb], nbat,
+                                              ic,
+                                              shift_vec,
+                                              out->f,
+                                              fshift_p,
+                                              out->VSvdw,
+                                              out->VSc);
 
             reduce_group_energies(nbat->nenergrp, nbat->neg_2log,
                                   out->VSvdw, out->VSc,
index 72532d1ac17fb4c89e364fe70828d9ffc5c98737..864f3e3f01c4bcadc30d1066816a640a4c5cca2b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
@@ -83,53 +83,83 @@ typedef void (nbk_func_noener)(const nbnxn_pairlist_t     *nbl,
 typedef nbk_func_noener *p_nbk_func_noener;
 #endif
 
-nbk_func_ener         nbnxn_kernel_simd_4xn_rf_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_rf_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_rf_comb_none_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_comb_none_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_comb_none_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn;
 
-nbk_func_noener       nbnxn_kernel_simd_4xn_rf_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_rf_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_rf_comb_none_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_tab_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_tab_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_tab_comb_none_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_ewald_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_ewald_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_ewald_comb_none_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener;
-nbk_func_noener       nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJ_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJ_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn;
+nbk_func_ener         nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn;
 
-nbk_func_ener         nbnxn_kernel_simd_4xn_rf_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_rf_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_rf_comb_none_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_comb_none_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_comb_none_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener;
-nbk_func_ener         nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJ_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJ_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn;
+nbk_func_noener       nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn;
 
 
 
index e3b3380bc534e08340cb6f80d403574d16547da7..720de2fefdb9c63ea696eb84616681e48f73704a 100644 (file)
@@ -33,6 +33,7 @@
  * the research papers on the package. Check out http://www.gromacs.org.
  */
 #include "gromacs/simd/macros.h"
+#include "gromacs/simd/four_wide_macros.h"
 #include "gromacs/simd/vector_operations.h"
 #include "../../nbnxn_consts.h"
 #ifdef CALC_COUL_EWALD
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c
deleted file mode 100644 (file)
index 3cd5138..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                              const nbnxn_atomdata_t    gmx_unused *nbat,
-                                              const interaction_const_t gmx_unused *ic,
-                                              rvec                      gmx_unused *shift_vec,
-                                              real                      gmx_unused *f,
-                                              real                      gmx_unused *fshift,
-                                              real                      gmx_unused *Vvdw,
-                                              real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                              const nbnxn_atomdata_t    gmx_unused *nbat,
-                                              const interaction_const_t gmx_unused *ic,
-                                              rvec                      gmx_unused *shift_vec,
-                                              real                      gmx_unused *f,
-                                              real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c
deleted file mode 100644 (file)
index ae0ebb6..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_EWALD
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
-#define CALC_ENERGIES
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                const interaction_const_t gmx_unused *ic,
-                                                rvec                      gmx_unused *shift_vec,
-                                                real                      gmx_unused *f,
-                                                real                      gmx_unused *fshift,
-                                                real                      gmx_unused *Vvdw,
-                                                real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                const interaction_const_t gmx_unused *ic,
-                                                rvec                      gmx_unused *shift_vec,
-                                                real                      gmx_unused *f,
-                                                real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
index 703b31740f56615b8da909d9ac7b83efb2545167..c6c457d81d8609cc7cf0bbe39686e97698f55f8a 100644 (file)
     gmx_simd_bool_t  wco_vdw_S3;
 #endif
 #endif
+
+#if (defined CALC_COULOMB && defined CALC_COUL_TAB) || defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+    gmx_simd_real_t r_S0;
+    gmx_simd_real_t r_S1;
+    gmx_simd_real_t r_S2;
+    gmx_simd_real_t r_S3;
+#endif
+
+#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+    gmx_simd_real_t  rsw_S0, rsw2_S0, rsw2_r_S0;
+    gmx_simd_real_t  rsw_S1, rsw2_S1, rsw2_r_S1;
+#ifndef HALF_LJ
+    gmx_simd_real_t  rsw_S2, rsw2_S2, rsw2_r_S2;
+    gmx_simd_real_t  rsw_S3, rsw2_S3, rsw2_r_S3;
+#endif
+#endif
+
 #ifdef CALC_COULOMB
 #ifdef CHECK_EXCLS
     /* 1/r masked with the interaction mask */
     gmx_simd_real_t  frcoul_S3;
 #ifdef CALC_COUL_TAB
     /* For tables: r, rs=r/sp, rf=floor(rs), frac=rs-rf */
-    gmx_simd_real_t         r_S0, rs_S0, rf_S0, frac_S0;
-    gmx_simd_real_t         r_S1, rs_S1, rf_S1, frac_S1;
-    gmx_simd_real_t         r_S2, rs_S2, rf_S2, frac_S2;
-    gmx_simd_real_t         r_S3, rs_S3, rf_S3, frac_S3;
+    gmx_simd_real_t         rs_S0, rf_S0, frac_S0;
+    gmx_simd_real_t         rs_S1, rf_S1, frac_S1;
+    gmx_simd_real_t         rs_S2, rf_S2, frac_S2;
+    gmx_simd_real_t         rs_S3, rf_S3, frac_S3;
     /* Table index: rs truncated to an int */
     gmx_simd_int32_t        ti_S0, ti_S1, ti_S2, ti_S3;
     /* Linear force table values */
 #endif
 #endif
 
-    gmx_simd_real_t  FrLJ6_S0, FrLJ12_S0;
-    gmx_simd_real_t  FrLJ6_S1, FrLJ12_S1;
+    gmx_simd_real_t  FrLJ6_S0, FrLJ12_S0, frLJ_S0;
+    gmx_simd_real_t  FrLJ6_S1, FrLJ12_S1, frLJ_S1;
 #ifndef HALF_LJ
-    gmx_simd_real_t  FrLJ6_S2, FrLJ12_S2;
-    gmx_simd_real_t  FrLJ6_S3, FrLJ12_S3;
+    gmx_simd_real_t  FrLJ6_S2, FrLJ12_S2, frLJ_S2;
+    gmx_simd_real_t  FrLJ6_S3, FrLJ12_S3, frLJ_S3;
 #endif
-#ifdef CALC_ENERGIES
+#if defined CALC_ENERGIES || defined LJ_POT_SWITCH
     gmx_simd_real_t  VLJ6_S0, VLJ12_S0, VLJ_S0;
     gmx_simd_real_t  VLJ6_S1, VLJ12_S1, VLJ_S1;
 #ifndef HALF_LJ
     rinvsix_S3  = gmx_simd_blendzero_r(rinvsix_S3, interact_S3);
 #endif
 #endif
-#ifdef VDW_CUTOFF_CHECK
-    rinvsix_S0  = gmx_simd_blendzero_r(rinvsix_S0, wco_vdw_S0);
-    rinvsix_S1  = gmx_simd_blendzero_r(rinvsix_S1, wco_vdw_S1);
-#ifndef HALF_LJ
-    rinvsix_S2  = gmx_simd_blendzero_r(rinvsix_S2, wco_vdw_S2);
-    rinvsix_S3  = gmx_simd_blendzero_r(rinvsix_S3, wco_vdw_S3);
-#endif
-#endif
+
+#ifndef LJ_FORCE_SWITCH
+    /* We have plain LJ with simple C6/6 C12/12 coefficients */
     FrLJ6_S0    = gmx_simd_mul_r(c6_S0, rinvsix_S0);
     FrLJ6_S1    = gmx_simd_mul_r(c6_S1, rinvsix_S1);
 #ifndef HALF_LJ
     FrLJ12_S2   = gmx_simd_mul_r(c12_S2, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2));
     FrLJ12_S3   = gmx_simd_mul_r(c12_S3, gmx_simd_mul_r(rinvsix_S3, rinvsix_S3));
 #endif
+#endif
+
+#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+    /* We switch the LJ force */
+    r_S0        = gmx_simd_mul_r(rsq_S0, rinv_S0);
+    rsw_S0      = gmx_simd_max_r(gmx_simd_sub_r(r_S0, rswitch_S), zero_S);
+    rsw2_S0     = gmx_simd_mul_r(rsw_S0, rsw_S0);
+    rsw2_r_S0   = gmx_simd_mul_r(rsw2_S0, r_S0);
+    r_S1        = gmx_simd_mul_r(rsq_S1, rinv_S1);
+    rsw_S1      = gmx_simd_max_r(gmx_simd_sub_r(r_S1, rswitch_S), zero_S);
+    rsw2_S1     = gmx_simd_mul_r(rsw_S1, rsw_S1);
+    rsw2_r_S1   = gmx_simd_mul_r(rsw2_S1, r_S1);
+#ifndef HALF_LJ
+    r_S2        = gmx_simd_mul_r(rsq_S2, rinv_S2);
+    rsw_S2      = gmx_simd_max_r(gmx_simd_sub_r(r_S2, rswitch_S), zero_S);
+    rsw2_S2     = gmx_simd_mul_r(rsw_S2, rsw_S2);
+    rsw2_r_S2   = gmx_simd_mul_r(rsw2_S2, r_S2);
+    r_S3        = gmx_simd_mul_r(rsq_S3, rinv_S3);
+    rsw_S3      = gmx_simd_max_r(gmx_simd_sub_r(r_S3, rswitch_S), zero_S);
+    rsw2_S3     = gmx_simd_mul_r(rsw_S3, rsw_S3);
+    rsw2_r_S3   = gmx_simd_mul_r(rsw2_S3, r_S3);
+#endif
+#endif
+
+#ifdef LJ_FORCE_SWITCH
+
+#define gmx_add_fr_switch(fr, rsw, rsw2_r, c2, c3) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c3, rsw, c2), rsw2_r, fr)
+
+    FrLJ6_S0    = gmx_simd_mul_r(c6_S0, gmx_add_fr_switch(rinvsix_S0, rsw_S0, rsw2_r_S0, p6_fc2_S, p6_fc3_S));
+    FrLJ6_S1    = gmx_simd_mul_r(c6_S1, gmx_add_fr_switch(rinvsix_S1, rsw_S1, rsw2_r_S1, p6_fc2_S, p6_fc3_S));
+#ifndef HALF_LJ
+    FrLJ6_S2    = gmx_simd_mul_r(c6_S2, gmx_add_fr_switch(rinvsix_S2, rsw_S2, rsw2_r_S2, p6_fc2_S, p6_fc3_S));
+    FrLJ6_S3    = gmx_simd_mul_r(c6_S3, gmx_add_fr_switch(rinvsix_S3, rsw_S3, rsw2_r_S3, p6_fc2_S, p6_fc3_S));
+#endif
+    FrLJ12_S0   = gmx_simd_mul_r(c12_S0, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), rsw_S0, rsw2_r_S0, p12_fc2_S, p12_fc3_S));
+    FrLJ12_S1   = gmx_simd_mul_r(c12_S1, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S1, rinvsix_S1), rsw_S1, rsw2_r_S1, p12_fc2_S, p12_fc3_S));
+#ifndef HALF_LJ
+    FrLJ12_S2   = gmx_simd_mul_r(c12_S2, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), rsw_S2, rsw2_r_S2, p12_fc2_S, p12_fc3_S));
+    FrLJ12_S3   = gmx_simd_mul_r(c12_S3, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S3, rinvsix_S3), rsw_S3, rsw2_r_S3, p12_fc2_S, p12_fc3_S));
+#endif
+#undef gmx_add_fr_switch
+#endif /* LJ_FORCE_SWITCH */
+
 #endif /* not LJ_COMB_LB */
 
 #ifdef LJ_COMB_LB
 #endif
 #endif /* LJ_COMB_LB */
 
+    /* Determine the total scalar LJ force*r */
+    frLJ_S0     = gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0);
+    frLJ_S1     = gmx_simd_sub_r(FrLJ12_S1, FrLJ6_S1);
+#ifndef HALF_LJ
+    frLJ_S2     = gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2);
+    frLJ_S3     = gmx_simd_sub_r(FrLJ12_S3, FrLJ6_S3);
+#endif
+
+#if defined CALC_ENERGIES && !defined LJ_POT_SWITCH
+#ifndef LJ_FORCE_SWITCH
+    /* Calculate the LJ energies, with constant potential shift */
+    VLJ6_S0     = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S0, p6_cpot_S, FrLJ6_S0));
+    VLJ6_S1     = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S1, p6_cpot_S, FrLJ6_S1));
+#ifndef HALF_LJ
+    VLJ6_S2     = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S2, p6_cpot_S, FrLJ6_S2));
+    VLJ6_S3     = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S3, p6_cpot_S, FrLJ6_S3));
+#endif
+    VLJ12_S0    = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S0, p12_cpot_S, FrLJ12_S0));
+    VLJ12_S1    = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S1, p12_cpot_S, FrLJ12_S1));
+#ifndef HALF_LJ
+    VLJ12_S2    = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S2, p12_cpot_S, FrLJ12_S2));
+    VLJ12_S3    = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S3, p12_cpot_S, FrLJ12_S3));
+#endif
+#else
+
+#define v_fswitch_r(rsw, rsw2, c0, c3, c4) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), gmx_simd_mul_r(rsw2, rsw), c0)
+
+    VLJ6_S0     = gmx_simd_mul_r(c6_S0, gmx_simd_fmadd_r(sixth_S, rinvsix_S0, v_fswitch_r(rsw_S0, rsw2_S0, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+    VLJ6_S1     = gmx_simd_mul_r(c6_S1, gmx_simd_fmadd_r(sixth_S, rinvsix_S1, v_fswitch_r(rsw_S1, rsw2_S1, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+#ifndef HALF_LJ
+    VLJ6_S2     = gmx_simd_mul_r(c6_S2, gmx_simd_fmadd_r(sixth_S, rinvsix_S2, v_fswitch_r(rsw_S2, rsw2_S2, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+    VLJ6_S3     = gmx_simd_mul_r(c6_S3, gmx_simd_fmadd_r(sixth_S, rinvsix_S3, v_fswitch_r(rsw_S3, rsw2_S3, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+#endif
+    VLJ12_S0    = gmx_simd_mul_r(c12_S0, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), v_fswitch_r(rsw_S0, rsw2_S0, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+    VLJ12_S1    = gmx_simd_mul_r(c12_S1, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S1, rinvsix_S1), v_fswitch_r(rsw_S1, rsw2_S1, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+#ifndef HALF_LJ
+    VLJ12_S2    = gmx_simd_mul_r(c12_S2, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), v_fswitch_r(rsw_S2, rsw2_S2, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+    VLJ12_S3    = gmx_simd_mul_r(c12_S3, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S3, rinvsix_S3), v_fswitch_r(rsw_S3, rsw2_S3, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+#endif
+#undef v_fswitch_r
+#endif /* LJ_FORCE_SWITCH */
+
+    /* Add up the repulsion and dispersion */
+    VLJ_S0      = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0);
+    VLJ_S1      = gmx_simd_sub_r(VLJ12_S1, VLJ6_S1);
+#ifndef HALF_LJ
+    VLJ_S2      = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2);
+    VLJ_S3      = gmx_simd_sub_r(VLJ12_S3, VLJ6_S3);
+#endif
+#endif /* CALC_ENERGIES && !LJ_POT_SWITCH */
+
+#ifdef LJ_POT_SWITCH
+    /* We always need the potential, since it is needed for the force */
+    VLJ_S0 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S0, gmx_simd_mul_r(twelveth_S, FrLJ12_S0));
+    VLJ_S1 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S1, gmx_simd_mul_r(twelveth_S, FrLJ12_S1));
+#ifndef HALF_LJ
+    VLJ_S2 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S2, gmx_simd_mul_r(twelveth_S, FrLJ12_S2));
+    VLJ_S3 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S3, gmx_simd_mul_r(twelveth_S, FrLJ12_S3));
+#endif
+
+    {
+        gmx_simd_real_t sw_S0, dsw_S0;
+        gmx_simd_real_t sw_S1, dsw_S1;
+#ifndef HALF_LJ
+        gmx_simd_real_t sw_S2, dsw_S2;
+        gmx_simd_real_t sw_S3, dsw_S3;
+#endif
+
+#define switch_r(rsw, rsw2, c3, c4, c5) gmx_simd_fmadd_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c5, rsw, c4), rsw, c3), gmx_simd_mul_r(rsw2, rsw), one_S)
+#define dswitch_r(rsw, rsw2, c2, c3, c4) gmx_simd_mul_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), rsw, c2), rsw2)
+
+        sw_S0  = switch_r(rsw_S0, rsw2_S0, swV3_S, swV4_S, swV5_S);
+        dsw_S0 = dswitch_r(rsw_S0, rsw2_S0, swF2_S, swF3_S, swF4_S);
+        sw_S1  = switch_r(rsw_S1, rsw2_S1, swV3_S, swV4_S, swV5_S);
+        dsw_S1 = dswitch_r(rsw_S1, rsw2_S1, swF2_S, swF3_S, swF4_S);
+#ifndef HALF_LJ
+        sw_S2  = switch_r(rsw_S2, rsw2_S2, swV3_S, swV4_S, swV5_S);
+        dsw_S2 = dswitch_r(rsw_S2, rsw2_S2, swF2_S, swF3_S, swF4_S);
+        sw_S3  = switch_r(rsw_S3, rsw2_S3, swV3_S, swV4_S, swV5_S);
+        dsw_S3 = dswitch_r(rsw_S3, rsw2_S3, swF2_S, swF3_S, swF4_S);
+#endif
+        frLJ_S0 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S0, VLJ_S0), r_S0, gmx_simd_mul_r(sw_S0, frLJ_S0));
+        frLJ_S1 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S1, VLJ_S1), r_S1, gmx_simd_mul_r(sw_S1, frLJ_S1));
+#ifndef HALF_LJ
+        frLJ_S2 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S2, VLJ_S2), r_S2, gmx_simd_mul_r(sw_S2, frLJ_S2));
+        frLJ_S3 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S3, VLJ_S3), r_S3, gmx_simd_mul_r(sw_S3, frLJ_S3));
+#endif
+#ifdef CALC_ENERGIES
+        VLJ_S0  = gmx_simd_mul_r(sw_S0, VLJ_S0);
+        VLJ_S1  = gmx_simd_mul_r(sw_S1, VLJ_S1);
+#ifndef HALF_LJ
+        VLJ_S2  = gmx_simd_mul_r(sw_S2, VLJ_S2);
+        VLJ_S3  = gmx_simd_mul_r(sw_S3, VLJ_S3);
+#endif
+#endif
+
+#undef switch_r
+#undef dswitch_r
+    }
+#endif /* LJ_POT_SWITCH */
+
+#if defined VDW_CUTOFF_CHECK
+    /* frLJ is multiplied later by rinvsq, which is masked for the Coulomb
+     * cut-off, but if the VdW cut-off is shorter, we need to mask with that.
+     */
+    frLJ_S0     = gmx_simd_blendzero_r(frLJ_S0, wco_vdw_S0);
+    frLJ_S1     = gmx_simd_blendzero_r(frLJ_S1, wco_vdw_S1);
+#ifndef HALF_LJ
+    frLJ_S2     = gmx_simd_blendzero_r(frLJ_S2, wco_vdw_S2);
+    frLJ_S3     = gmx_simd_blendzero_r(frLJ_S3, wco_vdw_S3);
+#endif
+#endif
+
+#ifdef CALC_ENERGIES
+    /* The potential shift should be removed for pairs beyond cut-off */
+    VLJ_S0      = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0);
+    VLJ_S1      = gmx_simd_blendzero_r(VLJ_S1, wco_vdw_S1);
+#ifndef HALF_LJ
+    VLJ_S2      = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2);
+    VLJ_S3      = gmx_simd_blendzero_r(VLJ_S3, wco_vdw_S3);
+#endif
+#endif
+
+#if defined CALC_ENERGIES && defined CHECK_EXCLS
+    /* The potential shift should be removed for excluded pairs */
+    VLJ_S0      = gmx_simd_blendzero_r(VLJ_S0, interact_S0);
+    VLJ_S1      = gmx_simd_blendzero_r(VLJ_S1, interact_S1);
+#ifndef HALF_LJ
+    VLJ_S2      = gmx_simd_blendzero_r(VLJ_S2, interact_S2);
+    VLJ_S3      = gmx_simd_blendzero_r(VLJ_S3, interact_S3);
+#endif
+#endif
+
+
 #endif /* CALC_LJ */
 
 #ifdef CALC_ENERGIES
 #endif
 
 #ifdef CALC_LJ
-    /* Calculate the LJ energies */
-    VLJ6_S0     = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S0, gmx_simd_mul_r(c6_S0, sh_invrc6_S)));
-    VLJ6_S1     = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S1, gmx_simd_mul_r(c6_S1, sh_invrc6_S)));
-#ifndef HALF_LJ
-    VLJ6_S2     = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S2, gmx_simd_mul_r(c6_S2, sh_invrc6_S)));
-    VLJ6_S3     = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S3, gmx_simd_mul_r(c6_S3, sh_invrc6_S)));
-#endif
-    VLJ12_S0    = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S0, gmx_simd_mul_r(c12_S0, sh_invrc12_S)));
-    VLJ12_S1    = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S1, gmx_simd_mul_r(c12_S1, sh_invrc12_S)));
-#ifndef HALF_LJ
-    VLJ12_S2    = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S2, gmx_simd_mul_r(c12_S2, sh_invrc12_S)));
-    VLJ12_S3    = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S3, gmx_simd_mul_r(c12_S3, sh_invrc12_S)));
-#endif
 
-    VLJ_S0      = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0);
-    VLJ_S1      = gmx_simd_sub_r(VLJ12_S1, VLJ6_S1);
-#ifndef HALF_LJ
-    VLJ_S2      = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2);
-    VLJ_S3      = gmx_simd_sub_r(VLJ12_S3, VLJ6_S3);
-#endif
-    /* The potential shift should be removed for pairs beyond cut-off */
-    VLJ_S0      = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0);
-    VLJ_S1      = gmx_simd_blendzero_r(VLJ_S1, wco_vdw_S1);
-#ifndef HALF_LJ
-    VLJ_S2      = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2);
-    VLJ_S3      = gmx_simd_blendzero_r(VLJ_S3, wco_vdw_S3);
-#endif
-#ifdef CHECK_EXCLS
-    /* The potential shift should be removed for excluded pairs */
-    VLJ_S0      = gmx_simd_blendzero_r(VLJ_S0, interact_S0);
-    VLJ_S1      = gmx_simd_blendzero_r(VLJ_S1, interact_S1);
-#ifndef HALF_LJ
-    VLJ_S2      = gmx_simd_blendzero_r(VLJ_S2, interact_S2);
-    VLJ_S3      = gmx_simd_blendzero_r(VLJ_S3, interact_S3);
-#endif
-#endif
 #ifndef ENERGY_GROUPS
 #ifndef HALF_LJ
     Vvdwtot_S   = gmx_simd_add_r(Vvdwtot_S,
                                      gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0)));
 #endif
 #ifdef CALC_COULOMB
-    fscal_S1    = gmx_simd_mul_r(rinvsq_S1,
-                                 gmx_simd_add_r(frcoul_S1,
-                                                gmx_simd_sub_r(FrLJ12_S1, FrLJ6_S1)));
+    fscal_S1    = gmx_simd_mul_r(rinvsq_S1, gmx_simd_add_r(frcoul_S1, frLJ_S1));
 #else
-    fscal_S1    = gmx_simd_mul_r(rinvsq_S1,
-                                 (
-                                     gmx_simd_sub_r(FrLJ12_S1, FrLJ6_S1)));
+    fscal_S1    = gmx_simd_mul_r(rinvsq_S1, frLJ_S1);
 #endif
 #else
     fscal_S0    = gmx_simd_mul_r(rinvsq_S0, frcoul_S0);
 #endif /* CALC_LJ */
 #if defined CALC_LJ && !defined HALF_LJ
 #ifdef CALC_COULOMB
-    fscal_S2    = gmx_simd_mul_r(rinvsq_S2,
-                                 gmx_simd_add_r(frcoul_S2,
-                                                gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2)));
-#else
-    fscal_S2    = gmx_simd_mul_r(rinvsq_S2,
-                                 (
-                                     gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2)));
-#endif
-#ifdef CALC_COULOMB
-    fscal_S3    = gmx_simd_mul_r(rinvsq_S3,
-                                 gmx_simd_add_r(frcoul_S3,
-                                                gmx_simd_sub_r(FrLJ12_S3, FrLJ6_S3)));
+    fscal_S2    = gmx_simd_mul_r(rinvsq_S2, gmx_simd_add_r(frcoul_S2, frLJ_S2));
+    fscal_S3    = gmx_simd_mul_r(rinvsq_S3, gmx_simd_add_r(frcoul_S3, frLJ_S3));
 #else
-    fscal_S3    = gmx_simd_mul_r(rinvsq_S3,
-                                 (
-                                     gmx_simd_sub_r(FrLJ12_S3, FrLJ6_S3)));
+    fscal_S2    = gmx_simd_mul_r(rinvsq_S2, frLJ_S2);
+    fscal_S3    = gmx_simd_mul_r(rinvsq_S3, frLJ_S3);
 #endif
 #else
     /* Atom 2 and 3 don't have LJ, so only add Coulomb forces */
index 28792136627ec4179560b9aeea20c2b24445c5af..43c045c8bd4a1e72cdf7cb0a9900376e7d863fb4 100644 (file)
@@ -33,6 +33,7 @@
  * the research papers on the package. Check out http://www.gromacs.org.
  */
 
+
 {
     const nbnxn_ci_t   *nbln;
     const nbnxn_cj_t   *l_cj;
@@ -72,7 +73,7 @@
     gmx_simd_real_t  fix_S3, fiy_S3, fiz_S3;
 #if UNROLLJ >= 4
     /* We use an i-force SIMD register width of 4 */
-    gmx_mm_pr4 fix_S, fiy_S, fiz_S;
+    gmx_simd4_real_t fix_S, fiy_S, fiz_S;
 #else
     /* We use an i-force SIMD register width of 2 */
     gmx_simd_real_t  fix0_S, fiy0_S, fiz0_S;
     gmx_simd_real_t      iq_S1  = gmx_simd_setzero_r();
     gmx_simd_real_t      iq_S2  = gmx_simd_setzero_r();
     gmx_simd_real_t      iq_S3  = gmx_simd_setzero_r();
+
+#ifdef CALC_COUL_RF
     gmx_simd_real_t      mrc_3_S;
 #ifdef CALC_ENERGIES
     gmx_simd_real_t      hrc_3_S, moh_rc_S;
 #endif
+#endif
 
 #ifdef CALC_COUL_TAB
     /* Coulomb table variables */
     gmx_simd_real_t  sh_ewald_S;
 #endif
 
+#ifdef LJ_POT_SWITCH
+    gmx_simd_real_t   rswitch_S;
+    gmx_simd_real_t   swV3_S, swV4_S, swV5_S;
+    gmx_simd_real_t   swF2_S, swF3_S, swF4_S;
+#else
+#ifdef LJ_FORCE_SWITCH
+    gmx_simd_real_t   rswitch_S;
+    gmx_simd_real_t   p6_fc2_S, p6_fc3_S;
+    gmx_simd_real_t   p12_fc2_S, p12_fc3_S;
+#ifdef CALC_ENERGIES
+    gmx_simd_real_t   p6_vc3_S, p6_vc4_S;
+    gmx_simd_real_t   p12_vc3_S, p12_vc4_S;
+    gmx_simd_real_t   p6_6cpot_S, p12_12cpot_S;
+#endif
+#else
+#ifdef CALC_ENERGIES
+    gmx_simd_real_t  p6_cpot_S, p12_cpot_S;
+#endif
+#endif
+#endif
+
 #ifdef LJ_COMB_LB
     const real       *ljc;
 
 #endif
 
 #ifdef CALC_ENERGIES
-    gmx_simd_real_t  sh_invrc6_S, sh_invrc12_S;
-
     /* cppcheck-suppress unassignedVariable */
     real       tmpsum_array[GMX_SIMD_REAL_WIDTH*2], *tmpsum;
 #endif
      * Since we only check bits, the actual value they represent does not
      * matter, as long as both filter and mask data are treated the same way.
      */
-    filter_S0    = gmx_load_exclusion_filter(exclusion_filter + 0*UNROLLJ*filter_stride);
-    filter_S1    = gmx_load_exclusion_filter(exclusion_filter + 1*UNROLLJ*filter_stride);
-    filter_S2    = gmx_load_exclusion_filter(exclusion_filter + 2*UNROLLJ*filter_stride);
-    filter_S3    = gmx_load_exclusion_filter(exclusion_filter + 3*UNROLLJ*filter_stride);
+    filter_S0 = gmx_load_exclusion_filter(exclusion_filter + 0*UNROLLJ*filter_stride);
+    filter_S1 = gmx_load_exclusion_filter(exclusion_filter + 1*UNROLLJ*filter_stride);
+    filter_S2 = gmx_load_exclusion_filter(exclusion_filter + 2*UNROLLJ*filter_stride);
+    filter_S3 = gmx_load_exclusion_filter(exclusion_filter + 3*UNROLLJ*filter_stride);
+
+#ifdef CALC_COUL_RF
+    /* Reaction-field constants */
+    mrc_3_S  = gmx_simd_set1_r(-2*ic->k_rf);
+#ifdef CALC_ENERGIES
+    hrc_3_S  = gmx_simd_set1_r(ic->k_rf);
+    moh_rc_S = gmx_simd_set1_r(-ic->c_rf);
+#endif
+#endif
 
 #ifdef CALC_COUL_TAB
     /* Generate aligned table index pointers */
     sh_ewald_S = gmx_simd_set1_r(ic->sh_ewald);
 #endif
 
-    q                   = nbat->q;
-    type                = nbat->type;
-    facel               = ic->epsfac;
-    shiftvec            = shift_vec[0];
-    x                   = nbat->x;
+    /* LJ function constants */
+#if defined CALC_ENERGIES || defined LJ_POT_SWITCH
+    sixth_S      = gmx_simd_set1_r(1.0/6.0);
+    twelveth_S   = gmx_simd_set1_r(1.0/12.0);
+#endif
 
-    avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC);
+#ifdef LJ_POT_SWITCH
+    rswitch_S = gmx_simd_set1_r(ic->rvdw_switch);
+    swV3_S    = gmx_simd_set1_r(ic->vdw_switch.c3);
+    swV4_S    = gmx_simd_set1_r(ic->vdw_switch.c4);
+    swV5_S    = gmx_simd_set1_r(ic->vdw_switch.c5);
+    swF2_S    = gmx_simd_set1_r(3*ic->vdw_switch.c3);
+    swF3_S    = gmx_simd_set1_r(4*ic->vdw_switch.c4);
+    swF4_S    = gmx_simd_set1_r(5*ic->vdw_switch.c5);
+#else
+    sixth_S      = gmx_simd_set1_r(1.0/6.0);
+    twelveth_S   = gmx_simd_set1_r(1.0/12.0);
+#ifdef LJ_FORCE_SWITCH
+    rswitch_S = gmx_simd_set1_r(ic->rvdw_switch);
+    p6_fc2_S  = gmx_simd_set1_r(ic->dispersion_shift.c2);
+    p6_fc3_S  = gmx_simd_set1_r(ic->dispersion_shift.c3);
+    p12_fc2_S = gmx_simd_set1_r(ic->repulsion_shift.c2);
+    p12_fc3_S = gmx_simd_set1_r(ic->repulsion_shift.c3);
+#ifdef CALC_ENERGIES
+    {
+        gmx_simd_real_t mthird_S  = gmx_simd_set1_r(-1.0/3.0);
+        gmx_simd_real_t mfourth_S = gmx_simd_set1_r(-1.0/4.0);
+
+        p6_vc3_S     = gmx_simd_mul_r(mthird_S,  p6_fc2_S);
+        p6_vc4_S     = gmx_simd_mul_r(mfourth_S, p6_fc3_S);
+        p6_6cpot_S   = gmx_simd_set1_r(ic->dispersion_shift.cpot/6);
+        p12_vc3_S    = gmx_simd_mul_r(mthird_S,  p12_fc2_S);
+        p12_vc4_S    = gmx_simd_mul_r(mfourth_S, p12_fc3_S);
+        p12_12cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot/12);
+    }
+#endif
+#else
+    /* Plain LJ cut-off, with potential shift cpot, which can be 0 */
+#ifdef CALC_ENERGIES
+    p6_cpot_S    = gmx_simd_set1_r(ic->dispersion_shift.cpot);
+    p12_cpot_S   = gmx_simd_set1_r(ic->repulsion_shift.cpot);
+#endif
+#endif
+#endif /* LJ_POT_SWITCH */
 
     /* The kernel either supports rcoulomb = rvdw or rcoulomb >= rvdw */
     rc2_S    = gmx_simd_set1_r(ic->rcoulomb*ic->rcoulomb);
     rcvdw2_S = gmx_simd_set1_r(ic->rvdw*ic->rvdw);
 #endif
 
-#ifdef CALC_ENERGIES
-    sixth_S      = gmx_simd_set1_r(1.0/6.0);
-    twelveth_S   = gmx_simd_set1_r(1.0/12.0);
-
-    sh_invrc6_S  = gmx_simd_set1_r(ic->sh_invrc6);
-    sh_invrc12_S = gmx_simd_set1_r(ic->sh_invrc6*ic->sh_invrc6);
-#endif
-
-    mrc_3_S  = gmx_simd_set1_r(-2*ic->k_rf);
-
-#ifdef CALC_ENERGIES
-    hrc_3_S  = gmx_simd_set1_r(ic->k_rf);
+    avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC);
 
-    moh_rc_S = gmx_simd_set1_r(-ic->c_rf);
-#endif
+    q                   = nbat->q;
+    type                = nbat->type;
+    facel               = ic->epsfac;
+    shiftvec            = shift_vec[0];
+    x                   = nbat->x;
 
 #ifdef CALC_ENERGIES
     tmpsum   = gmx_simd_align_r(tmpsum_array);
 #endif
 
 #ifdef FIX_LJ_C
-    pvdw_c6  = gmx_simd_align_r(pvdw_array+3);
+    pvdw_c6  = gmx_simd_align_real(pvdw_array);
     pvdw_c12 = pvdw_c6 + UNROLLI*UNROLLJ;
 
     for (jp = 0; jp < UNROLLJ; jp++)
 #define CALC_LJ
         if (half_LJ)
         {
+            /* Coulomb: all i-atoms, LJ: first half i-atoms */
 #define CALC_COULOMB
 #define HALF_LJ
 #define CHECK_EXCLS
         }
         else if (do_coul)
         {
+            /* Coulomb: all i-atoms, LJ: all i-atoms */
 #define CALC_COULOMB
 #define CHECK_EXCLS
             while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL)
         }
         else
         {
+            /* Coulomb: none, LJ: all i-atoms */
 #define CHECK_EXCLS
             while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL)
             {
         /* Add accumulated i-forces to the force array */
 #if UNROLLJ >= 4
         fix_S = gmx_mm_transpose_sum4_pr(fix_S0, fix_S1, fix_S2, fix_S3);
-        gmx_store_pr4(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix)));
+        gmx_simd4_store_r(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix)));
 
         fiy_S = gmx_mm_transpose_sum4_pr(fiy_S0, fiy_S1, fiy_S2, fiy_S3);
-        gmx_store_pr4(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy)));
+        gmx_simd4_store_r(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy)));
 
         fiz_S = gmx_mm_transpose_sum4_pr(fiz_S0, fiz_S1, fiz_S2, fiz_S3);
-        gmx_store_pr4(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz)));
+        gmx_simd4_store_r(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz)));
 
 #ifdef CALC_SHIFTFORCES
         fshift[ish3+0] += gmx_sum_simd4(fix_S, shf);
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c
deleted file mode 100644 (file)
index 59f9aad..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_RF
-#define LJ_COMB_GEOM
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_rf_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                           const nbnxn_atomdata_t    gmx_unused *nbat,
-                                           const interaction_const_t gmx_unused *ic,
-                                           rvec                      gmx_unused *shift_vec,
-                                           real                      gmx_unused *f,
-                                           real                      gmx_unused *fshift,
-                                           real                      gmx_unused *Vvdw,
-                                           real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_rf_comb_geom_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                           const nbnxn_atomdata_t    gmx_unused *nbat,
-                                           const interaction_const_t gmx_unused *ic,
-                                           rvec                      gmx_unused *shift_vec,
-                                           real                      gmx_unused *f,
-                                           real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c
deleted file mode 100644 (file)
index 95b5e38..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_RF
-#define LJ_COMB_LB
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_rf_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                         const nbnxn_atomdata_t    gmx_unused *nbat,
-                                         const interaction_const_t gmx_unused *ic,
-                                         rvec                      gmx_unused *shift_vec,
-                                         real                      gmx_unused *f,
-                                         real                      gmx_unused *fshift,
-                                         real                      gmx_unused *Vvdw,
-                                         real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_rf_comb_lb_energrp(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                         const nbnxn_atomdata_t    gmx_unused *nbat,
-                                         const interaction_const_t gmx_unused *ic,
-                                         rvec                      gmx_unused *shift_vec,
-                                         real                      gmx_unused *f,
-                                         real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c
deleted file mode 100644 (file)
index a99e288..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_TAB
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-#define CALC_ENERGIES
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                            const nbnxn_atomdata_t    gmx_unused *nbat,
-                                            const interaction_const_t gmx_unused *ic,
-                                            rvec                      gmx_unused *shift_vec,
-                                            real                      gmx_unused *f,
-                                            real                      gmx_unused *fshift,
-                                            real                      gmx_unused *Vvdw,
-                                            real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                            const nbnxn_atomdata_t    gmx_unused *nbat,
-                                            const interaction_const_t gmx_unused *ic,
-                                            rvec                      gmx_unused *shift_vec,
-                                            real                      gmx_unused *f,
-                                            real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c
deleted file mode 100644 (file)
index 1234d92..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_TAB
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
-/* Will not calculate energies */
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                const interaction_const_t gmx_unused *ic,
-                                                rvec                      gmx_unused *shift_vec,
-                                                real                      gmx_unused *f,
-                                                real                      gmx_unused *fshift,
-                                                real                      gmx_unused *Vvdw,
-                                                real                      gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener(const nbnxn_pairlist_t    gmx_unused *nbl,
-                                                const nbnxn_atomdata_t    gmx_unused *nbat,
-                                                const interaction_const_t gmx_unused *ic,
-                                                rvec                      gmx_unused *shift_vec,
-                                                real                      gmx_unused *f,
-                                                real                      gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
index 2aacb9b32c46d6ef65edd0d097927c41cdb526b0..2a04a552653f175803a1f1d8781213836463293b 100644 (file)
@@ -665,8 +665,22 @@ static void do_nb_verlet(t_forcerec *fr,
              nbvg->nbl_lists.natpair_ljq);
     inc_nrnb(nrnb, enr_nbnxn_kernel_lj,
              nbvg->nbl_lists.natpair_lj);
+    /* The Coulomb-only kernels are offset -eNR_NBNXN_LJ_RF+eNR_NBNXN_RF */
     inc_nrnb(nrnb, enr_nbnxn_kernel_ljc-eNR_NBNXN_LJ_RF+eNR_NBNXN_RF,
              nbvg->nbl_lists.natpair_q);
+
+    if (ic->vdw_modifier == eintmodFORCESWITCH)
+    {
+        /* We add up the switch cost separately */
+        inc_nrnb(nrnb, eNR_NBNXN_LJ_FSW+((flags & GMX_FORCE_ENERGY) ? 1 : 0),
+                 nbvg->nbl_lists.natpair_ljq + nbvg->nbl_lists.natpair_lj);
+    }
+    if (ic->vdw_modifier == eintmodPOTSWITCH)
+    {
+        /* We add up the switch cost separately */
+        inc_nrnb(nrnb, eNR_NBNXN_LJ_PSW+((flags & GMX_FORCE_ENERGY) ? 1 : 0),
+                 nbvg->nbl_lists.natpair_ljq + nbvg->nbl_lists.natpair_lj);
+    }
 }
 
 void do_force_cutsVERLET(FILE *fplog, t_commrec *cr,
@@ -2175,7 +2189,9 @@ void calc_enervirdiff(FILE *fplog, int eDispCorr, t_forcerec *fr)
             eners[i] = 0;
             virs[i]  = 0;
         }
-        if ((fr->vdwtype == evdwSWITCH) || (fr->vdwtype == evdwSHIFT))
+        if (fr->vdwtype == evdwSWITCH || fr->vdwtype == evdwSHIFT ||
+            fr->vdw_modifier == eintmodPOTSWITCH ||
+            fr->vdw_modifier == eintmodFORCESWITCH)
         {
             if (fr->rvdw_switch == 0)
             {
@@ -2195,7 +2211,8 @@ void calc_enervirdiff(FILE *fplog, int eDispCorr, t_forcerec *fr)
             rc3  = r0*r0*r0;
             rc9  = rc3*rc3*rc3;
 
-            if (fr->vdwtype == evdwSHIFT)
+            if (fr->vdwtype == evdwSHIFT ||
+                fr->vdw_modifier == eintmodFORCESWITCH)
             {
                 /* Determine the constant energy shift below rvdw_switch.
                  * Table has a scale factor since we have scaled it down to compensate
index dc6dea54d81c7d006c844dbe88da5cb7d7930d10..7cfce0bc24d6c72942b62c0e3f18b23153c88932 100644 (file)
@@ -1160,6 +1160,33 @@ static void set_table_type(int tabsel[], const t_forcerec *fr, gmx_bool b14only)
                 gmx_fatal(FARGS, "Invalid vdwtype %d in %s line %d", vdwtype,
                           __FILE__, __LINE__);
         }
+
+        if (!b14only && fr->vdw_modifier != eintmodNONE)
+        {
+            if (fr->vdwtype != evdwCUT)
+            {
+                gmx_incons("Potential modifiers only implemented for LJ cut-off");
+            }
+
+            switch (fr->vdw_modifier)
+            {
+                case eintmodNONE:
+                case eintmodPOTSHIFT:
+                case eintmodEXACTCUTOFF:
+                    /* No modification */
+                    break;
+                case eintmodPOTSWITCH:
+                    tabsel[etiLJ6]  = etabLJ6Switch;
+                    tabsel[etiLJ12] = etabLJ12Switch;
+                    break;
+                case eintmodFORCESWITCH:
+                    tabsel[etiLJ6]  = etabLJ6Shift;
+                    tabsel[etiLJ12] = etabLJ12Shift;
+                    break;
+                default:
+                    gmx_incons("Unsupported vdw_modifier");
+            }
+        }
     }
 }
 
index 153736f9b75917ea8f209a51d4fd1d5f641eedf6..588f7338fa2eeabdc4b8e10c9b9d05b82fff2308 100644 (file)
@@ -765,24 +765,31 @@ static void convert_to_verlet_scheme(FILE *fplog,
     }
     else if (ir_vdw_switched(ir) || ir_coulomb_switched(ir))
     {
-        md_print_warn(NULL, fplog, "Converting switched or shifted interactions to a shifted potential (without force shift), this will lead to slightly different interaction potentials");
-
-        if (ir_vdw_switched(ir))
+        if (ir_vdw_switched(ir) && ir->vdw_modifier == eintmodNONE)
         {
             ir->vdwtype = evdwCUT;
+
+            switch (ir->vdwtype)
+            {
+                case evdwSHIFT:  ir->vdw_modifier = eintmodFORCESWITCH; break;
+                case evdwSWITCH: ir->vdw_modifier = eintmodPOTSWITCH; break;
+                default: gmx_fatal(FARGS, "The Verlet scheme does not support Van der Waals interactions of type '%s'", evdw_names[ir->vdwtype]);
+            }
         }
-        if (ir_coulomb_switched(ir))
+        if (ir_coulomb_switched(ir) && ir->coulomb_modifier == eintmodNONE)
         {
             if (EEL_FULL(ir->coulombtype))
             {
                 /* With full electrostatic only PME can be switched */
-                ir->coulombtype = eelPME;
+                ir->coulombtype      = eelPME;
+                ir->coulomb_modifier = eintmodPOTSHIFT;
             }
             else
             {
                 md_print_warn(NULL, fplog, "NOTE: Replacing %s electrostatics with reaction-field with epsilon-rf=inf\n", eel_names[ir->coulombtype]);
-                ir->coulombtype = eelRF;
-                ir->epsilon_rf  = 0.0;
+                ir->coulombtype      = eelRF;
+                ir->epsilon_rf       = 0.0;
+                ir->coulomb_modifier = eintmodPOTSHIFT;
             }
         }
 
@@ -1142,6 +1149,13 @@ int mdrunner(gmx_hw_opt_t *hw_opt,
             bUseGPU = (hwinfo->gpu_info.ncuda_dev_compatible > 0 ||
                        getenv("GMX_EMULATE_GPU") != NULL);
 
+            if (bUseGPU && (inputrec->vdw_modifier == eintmodFORCESWITCH ||
+                            inputrec->vdw_modifier == eintmodPOTSWITCH))
+            {
+                md_print_warn(cr, fplog, "LJ switch functions are not yet supported on the GPU, falling back to CPU-only");
+                bUseGPU = FALSE;
+            }
+
             prepare_verlet_scheme(fplog, cr,
                                   inputrec, nstlist_cmdline, mtop, state->box,
                                   bUseGPU);