| version 1.1087 | version 1.1088 |
|---|
| |
| #define NBWORKARRAY(TYPE,NAME,SIZE) \ | #define NBWORKARRAY(TYPE,NAME,SIZE) \ |
| computeNonbondedWorkArrays->NAME.resize(SIZE); \ | computeNonbondedWorkArrays->NAME.resize(SIZE); \ |
| TYPE * const NAME = computeNonbondedWorkArrays->NAME.begin(); \ | TYPE * const NAME = computeNonbondedWorkArrays->NAME.begin(); \ |
| __assume_aligned(NAME,32); | __assume_aligned(NAME,64); |
| #else | #else |
| #define NBWORKARRAY(TYPE,NAME,SIZE) \ | #define NBWORKARRAY(TYPE,NAME,SIZE) \ |
| computeNonbondedWorkArrays->NAME.resize(SIZE); \ | computeNonbondedWorkArrays->NAME.resize(SIZE); \ |
| |
| | |
| class ComputeNonbondedWorkArrays { | class ComputeNonbondedWorkArrays { |
| public: | public: |
| ResizeArray<plint> pairlisti; | ResizeArray<int> pairlisti; |
| ResizeArray<BigReal> r2list; | ResizeArray<BigReal> r2list; |
| | #ifdef NAMD_KNL |
| | ResizeArray<float> r2list_f; |
| | ResizeArray<float> xlist; |
| | ResizeArray<float> ylist; |
| | ResizeArray<float> zlist; |
| | #endif |
| | |
| // DMK - Atom Sort | // DMK - Atom Sort |
| // NOTE : TODO : For pair nonbonded compute objects, these arrays are needed | // NOTE : TODO : For pair nonbonded compute objects, these arrays are needed |
| |
| // function arguments | // function arguments |
| struct nonbonded { | struct nonbonded { |
| CompAtom* p[2]; | CompAtom* p[2]; |
| | #ifdef NAMD_KNL |
| | CompAtomFlt *pFlt[2]; |
| | #endif |
| CompAtomExt *pExt[2]; | CompAtomExt *pExt[2]; |
| // BEGIN LA | // BEGIN LA |
| CompAtom* v[2]; | CompAtom* v[2]; |
| |
| int numAtoms[2]; | int numAtoms[2]; |
| | |
| Vector offset; | Vector offset; |
| | Vector offset_f; |
| | |
| // DMK - Atom Separation (water vs. non-water) | // DMK - Atom Separation (water vs. non-water) |
| #if NAMD_SeparateWaters != 0 | #if NAMD_SeparateWaters != 0 |
| |
| static Bool fixedAtomsOn; | static Bool fixedAtomsOn; |
| static BigReal cutoff; | static BigReal cutoff; |
| static BigReal cutoff2; | static BigReal cutoff2; |
| | static float cutoff2_f; |
| static BigReal dielectric_1; | static BigReal dielectric_1; |
| static const LJTable* ljTable; | static const LJTable* ljTable; |
| static const Molecule* mol; | static const Molecule* mol; |
| |
| static int mic_table_n; | static int mic_table_n; |
| static int mic_table_n_16; | static int mic_table_n_16; |
| #endif | #endif |
| | #ifdef NAMD_KNL |
| | #define KNL_TABLE_SIZE (4096+2) |
| | static float *knl_table_alloc; |
| | static float *knl_fast_ener_table; |
| | static float *knl_fast_grad_table; |
| | static float *knl_scor_ener_table; |
| | static float *knl_scor_grad_table; |
| | static float *knl_slow_ener_table; |
| | static float *knl_slow_grad_table; |
| | static float *knl_corr_ener_table; |
| | static float *knl_corr_grad_table; |
| | static float *knl_full_ener_table; |
| | static float *knl_full_grad_table; |
| | #endif |
| static BigReal scaling; | static BigReal scaling; |
| static BigReal scale14; | static BigReal scale14; |
| static BigReal switchOn; | static BigReal switchOn; |
| |
| static BigReal k_vdwb; | static BigReal k_vdwb; |
| static BigReal cutoff_3; | static BigReal cutoff_3; |
| static BigReal cutoff_6; | static BigReal cutoff_6; |
| | static float v_vdwa_f; |
| | static float v_vdwb_f; |
| | static float k_vdwa_f; |
| | static float k_vdwb_f; |
| | static float cutoff_3_f; |
| | static float cutoff_6_f; |
| static BigReal c0; | static BigReal c0; |
| static BigReal c1; | static BigReal c1; |
| static BigReal c3; | static BigReal c3; |
| |
| static BigReal ewaldcof; | static BigReal ewaldcof; |
| static BigReal pi_ewaldcof; | static BigReal pi_ewaldcof; |
| | |
| | // need macros for preprocessor |
| | #define VDW_SWITCH_MODE_ENERGY 0 |
| | #define VDW_SWITCH_MODE_MARTINI 1 |
| | #define VDW_SWITCH_MODE_FORCE 2 |
| | static int vdw_switch_mode; |
| | |
| // Ported by JLai -- JE - Go | // Ported by JLai -- JE - Go |
| static Bool goGroPair; | static Bool goGroPair; |
| static Bool goForcesOn; | static Bool goForcesOn; |