diff --git a/src/KOKKOS/fix_qeq_reax_kokkos.h b/src/KOKKOS/fix_qeq_reax_kokkos.h index 2c8b7860ef826c26f61893cdc7fa083153c4eb2a..eca0d761b7701d2c2248f373538be2093ed21fc1 100644 --- a/src/KOKKOS/fix_qeq_reax_kokkos.h +++ b/src/KOKKOS/fix_qeq_reax_kokkos.h @@ -132,7 +132,9 @@ class FixQEqReaxKokkos : public FixQEqReax { double calculate_H_k(const F_FLOAT &r, const F_FLOAT &shld) const; struct params_qeq{ + KOKKOS_INLINE_FUNCTION params_qeq(){chi=0;eta=0;gamma=0;}; + KOKKOS_INLINE_FUNCTION params_qeq(int i){chi=0;eta=0;gamma=0;}; F_FLOAT chi, eta, gamma; }; diff --git a/src/KOKKOS/pair_reax_c_kokkos.cpp b/src/KOKKOS/pair_reax_c_kokkos.cpp index ea898843e7933ffc48062296f9cfb4096a251473..4fcb3652e30f2c9881d2bb6e352e3bac585bd761 100644 --- a/src/KOKKOS/pair_reax_c_kokkos.cpp +++ b/src/KOKKOS/pair_reax_c_kokkos.cpp @@ -370,43 +370,43 @@ void PairReaxCKokkos<DeviceType>::init_md() k_LR.h_view(i,j).a = LR[i][j].a; k_LR.h_view(i,j).m = LR[i][j].m; k_LR.h_view(i,j).c = LR[i][j].c; + + tdual_LR_data_1d k_y = tdual_LR_data_1d("lookup:LR[i,j].y",n); + tdual_cubic_spline_coef_1d k_H = tdual_cubic_spline_coef_1d("lookup:LR[i,j].H",n); + tdual_cubic_spline_coef_1d k_vdW = tdual_cubic_spline_coef_1d("lookup:LR[i,j].vdW",n); + tdual_cubic_spline_coef_1d k_CEvd = tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEvd",n); + tdual_cubic_spline_coef_1d k_ele = tdual_cubic_spline_coef_1d("lookup:LR[i,j].ele",n); + tdual_cubic_spline_coef_1d k_CEclmb = tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEclmb",n); - k_LR.h_view(i,j).k_y = tdual_LR_data_1d("lookup:LR[i,j].y",n); - k_LR.h_view(i,j).k_H = tdual_cubic_spline_coef_1d("lookup:LR[i,j].H",n); - k_LR.h_view(i,j).k_vdW = tdual_cubic_spline_coef_1d("lookup:LR[i,j].vdW",n); - k_LR.h_view(i,j).k_CEvd = tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEvd",n); - k_LR.h_view(i,j).k_ele = tdual_cubic_spline_coef_1d("lookup:LR[i,j].ele",n); - k_LR.h_view(i,j).k_CEclmb = tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEclmb",n); - - k_LR.h_view(i,j).d_y = k_LR.h_view(i,j).k_y.d_view; - k_LR.h_view(i,j).d_H = k_LR.h_view(i,j).k_H.d_view; - k_LR.h_view(i,j).d_vdW = k_LR.h_view(i,j).k_vdW.d_view; - k_LR.h_view(i,j).d_CEvd = k_LR.h_view(i,j).k_CEvd.d_view; - k_LR.h_view(i,j).d_ele = k_LR.h_view(i,j).k_ele.d_view; - k_LR.h_view(i,j).d_CEclmb = k_LR.h_view(i,j).k_CEclmb.d_view; + k_LR.h_view(i,j).d_y = k_y.d_view; + k_LR.h_view(i,j).d_H = k_H.d_view; + k_LR.h_view(i,j).d_vdW = k_vdW.d_view; + k_LR.h_view(i,j).d_CEvd = k_CEvd.d_view; + k_LR.h_view(i,j).d_ele = k_ele.d_view; + k_LR.h_view(i,j).d_CEclmb = k_CEclmb.d_view; for (int k = 0; k < n; k++) { - k_LR.h_view(i,j).k_y.h_view(k) = LR[i][j].y[k]; - k_LR.h_view(i,j).k_H.h_view(k) = LR[i][j].H[k]; - k_LR.h_view(i,j).k_vdW.h_view(k) = LR[i][j].vdW[k]; - k_LR.h_view(i,j).k_CEvd.h_view(k) = LR[i][j].CEvd[k]; - k_LR.h_view(i,j).k_ele.h_view(k) = LR[i][j].ele[k]; - k_LR.h_view(i,j).k_CEclmb.h_view(k) = LR[i][j].CEclmb[k]; + k_y.h_view(k) = LR[i][j].y[k]; + k_H.h_view(k) = LR[i][j].H[k]; + k_vdW.h_view(k) = LR[i][j].vdW[k]; + k_CEvd.h_view(k) = LR[i][j].CEvd[k]; + k_ele.h_view(k) = LR[i][j].ele[k]; + k_CEclmb.h_view(k) = LR[i][j].CEclmb[k]; } - k_LR.h_view(i,j).k_y.template modify<LMPHostType>(); - k_LR.h_view(i,j).k_H.template modify<LMPHostType>(); - k_LR.h_view(i,j).k_vdW.template modify<LMPHostType>(); - k_LR.h_view(i,j).k_CEvd.template modify<LMPHostType>(); - k_LR.h_view(i,j).k_ele.template modify<LMPHostType>(); - k_LR.h_view(i,j).k_CEclmb.template modify<LMPHostType>(); + k_y.template modify<LMPHostType>(); + k_H.template modify<LMPHostType>(); + k_vdW.template modify<LMPHostType>(); + k_CEvd.template modify<LMPHostType>(); + k_ele.template modify<LMPHostType>(); + k_CEclmb.template modify<LMPHostType>(); - k_LR.h_view(i,j).k_y.template sync<DeviceType>(); - k_LR.h_view(i,j).k_H.template sync<DeviceType>(); - k_LR.h_view(i,j).k_vdW.template sync<DeviceType>(); - k_LR.h_view(i,j).k_CEvd.template sync<DeviceType>(); - k_LR.h_view(i,j).k_ele.template sync<DeviceType>(); - k_LR.h_view(i,j).k_CEclmb.template sync<DeviceType>(); + k_y.template sync<DeviceType>(); + k_H.template sync<DeviceType>(); + k_vdW.template sync<DeviceType>(); + k_CEvd.template sync<DeviceType>(); + k_ele.template sync<DeviceType>(); + k_CEclmb.template sync<DeviceType>(); } } k_LR.template modify<LMPHostType>(); diff --git a/src/KOKKOS/pair_reax_c_kokkos.h b/src/KOKKOS/pair_reax_c_kokkos.h index 28166df3bd5592dab245b9c74ca98feceb9d424d..a6192ed120f69bde5a44a89c5970acd95129a4c1 100644 --- a/src/KOKKOS/pair_reax_c_kokkos.h +++ b/src/KOKKOS/pair_reax_c_kokkos.h @@ -54,11 +54,6 @@ struct LR_lookup_table_kk double m; double c; - tdual_LR_data_1d k_y; - tdual_cubic_spline_coef_1d k_H; - tdual_cubic_spline_coef_1d k_vdW, k_CEvd; - tdual_cubic_spline_coef_1d k_ele, k_CEclmb; - t_LR_data_1d d_y; t_cubic_spline_coef_1d d_H; t_cubic_spline_coef_1d d_vdW, d_CEvd; @@ -251,8 +246,10 @@ class PairReaxCKokkos : public PairReaxC { void operator()(PairReaxComputeHydrogen<NEIGHFLAG,EVFLAG>, const int&) const; struct params_sing{ + KOKKOS_INLINE_FUNCTION params_sing(){mass=0;chi=0;eta=0;r_s=0;r_pi=0;r_pi2=0;valency=0;valency_val=0;valency_e=0;valency_boc=0;nlp_opt=0; p_lp2=0;p_ovun2=0;p_ovun5=0;p_val3=0;p_val5=0;p_hbond=0;}; + KOKKOS_INLINE_FUNCTION params_sing(int i){mass=0;chi=0;eta=0;r_s=0;r_pi=0;r_pi2=0;valency=0;valency_val=0;valency_e=0;valency_boc=0;nlp_opt=0; p_lp2=0;p_ovun2=0;p_ovun5=0;p_val3=0;p_val5=0;p_hbond=0;}; F_FLOAT mass,chi,eta,r_s,r_pi,r_pi2,valency,valency_val,valency_e,valency_boc,nlp_opt, @@ -260,10 +257,12 @@ class PairReaxCKokkos : public PairReaxC { }; struct params_twbp{ + KOKKOS_INLINE_FUNCTION params_twbp(){gamma=0;gamma_w=0;alpha=0;r_vdw=0;epsilon=0;acore=0;ecore=0;rcore=0;lgre=0;lgcij=0; r_s=0;r_pi=0;r_pi2=0;p_bo1=0;p_bo2=0;p_bo3=0;p_bo4=0;p_bo5=0;p_bo6=0;ovc=0;v13cor=0; p_boc3=0;p_boc4=0;p_boc5=0;p_be1=0,p_be2=0,De_s=0,De_p=0;De_pp=0; p_ovun1=0;}; + KOKKOS_INLINE_FUNCTION params_twbp(int i){gamma=0;gamma_w=0;alpha=0;r_vdw=0;epsilon=0;acore=0;ecore=0;rcore=0;lgre=0;lgcij=0; r_s=0;r_pi=0;r_pi2=0;p_bo1=0;p_bo2=0;p_bo3=0;p_bo4=0;p_bo5=0;p_bo6=0;ovc=0;v13cor=0; p_boc3=0;p_boc4=0;p_boc5=0;p_be1=0,p_be2=0,De_s=0,De_p=0;De_pp=0; @@ -275,19 +274,25 @@ class PairReaxCKokkos : public PairReaxC { }; struct params_thbp{ + KOKKOS_INLINE_FUNCTION params_thbp(){cnt=0;theta_00=0;p_val1=0;p_val2=0;p_val4=0;p_val7=0;p_pen1=0;p_coa1=0;}; + KOKKOS_INLINE_FUNCTION params_thbp(int i){cnt=0;theta_00=0;p_val1=0;p_val2=0;p_val4=0;p_val7=0;p_pen1=0;p_coa1=0;}; F_FLOAT cnt, theta_00, p_val1, p_val2, p_val4, p_val7, p_pen1, p_coa1; }; struct params_fbp{ + KOKKOS_INLINE_FUNCTION params_fbp(){p_tor1=0;p_cot1=0;V1=0;V2=0;V3=0;}; + KOKKOS_INLINE_FUNCTION params_fbp(int i){p_tor1=0;p_cot1=0;V1=0;V2=0;V3=0;}; F_FLOAT p_tor1, p_cot1, V1, V2, V3; }; struct params_hbp{ + KOKKOS_INLINE_FUNCTION params_hbp(){p_hb1=0;p_hb2=0;p_hb3=0;r0_hb=0;}; + KOKKOS_INLINE_FUNCTION params_hbp(int i){p_hb1=0;p_hb2=0;p_hb3=0;r0_hb=0;}; F_FLOAT p_hb1, p_hb2, p_hb3, r0_hb; };