@@ -96,13 +96,13 @@ void LR::KernelXC::f_xc_libxc(const int& nspin, const double& omega, const doubl
9696 }
9797 // -----------------------------------------------------------------------------------
9898 // ==================== XC Kernels (f_xc)=============================
99- this ->kernel_set_ . emplace ( " vrho " , std::vector< double >( nspin * nrxx) );
100- this ->kernel_set_ . emplace ( " v2rho2 " , std::vector< double >((( 1 == nspin) ? 1 : 3 ) * nrxx) );// (nrxx* ((1 == nspin) ? 1 : 3)): 00, 01, 11
99+ this ->vrho . resize ( nspin * nrxx);
100+ this ->v2rho2 . resize ((( 1 == nspin) ? 1 : 3 ) * nrxx);// (nrxx* ((1 == nspin) ? 1 : 3)): 00, 01, 11
101101 if (is_gga)
102102 {
103- this ->kernel_set_ . emplace ( " vsigma " , std::vector< double >((( 1 == nspin) ? 1 : 3 ) * nrxx)); // (nrxx*): 2 for rho * 3 for sigma: 00, 01, 02, 10, 11, 12
104- this ->kernel_set_ . emplace ( " v2rhosigma " , std::vector< double >((( 1 == nspin) ? 1 : 6 ) * nrxx) ); // (nrxx*): 2 for rho * 3 for sigma: 00, 01, 02, 10, 11, 12
105- this ->kernel_set_ . emplace ( " v2sigma2 " , std::vector< double >((( 1 == nspin) ? 1 : 6 ) * nrxx) ); // (nrxx* ((1 == nspin) ? 1 : 6)): 00, 01, 02, 11, 12, 22
103+ this ->vsigma . resize ((( 1 == nspin) ? 1 : 3 ) * nrxx); // (nrxx*): 2 for rho * 3 for sigma: 00, 01, 02, 10, 11, 12
104+ this ->v2rhosigma . resize ((( 1 == nspin) ? 1 : 6 ) * nrxx); // (nrxx*): 2 for rho * 3 for sigma: 00, 01, 02, 10, 11, 12
105+ this ->v2sigma2 . resize ((( 1 == nspin) ? 1 : 6 ) * nrxx); // (nrxx* ((1 == nspin) ? 1 : 6)): 00, 01, 02, 11, 12, 22
106106 }
107107 // MetaGGA ...
108108
@@ -118,15 +118,13 @@ void LR::KernelXC::f_xc_libxc(const int& nspin, const double& omega, const doubl
118118 switch (func.info ->family )
119119 {
120120 case XC_FAMILY_LDA:
121- xc_lda_vxc (&func, nrxx, rho.data (), this -> kernel_set_ [ " vrho" ] .data ());
122- xc_lda_fxc (&func, nrxx, rho.data (), this -> kernel_set_ [ " v2rho2" ] .data ());
121+ xc_lda_vxc (&func, nrxx, rho.data (), vrho.data ());
122+ xc_lda_fxc (&func, nrxx, rho.data (), v2rho2.data ());
123123 break ;
124124 case XC_FAMILY_GGA:
125125 case XC_FAMILY_HYB_GGA:
126- xc_gga_vxc (&func, nrxx, rho.data (), sigma.data (),
127- this ->kernel_set_ [" vrho" ].data (), this ->kernel_set_ [" vsigma" ].data ());
128- xc_gga_fxc (&func, nrxx, rho.data (), sigma.data (),
129- this ->kernel_set_ [" v2rho2" ].data (), this ->kernel_set_ [" v2rhosigma" ].data (), this ->kernel_set_ [" v2sigma2" ].data ());
126+ xc_gga_vxc (&func, nrxx, rho.data (), sigma.data (), vrho.data (), vsigma.data ());
127+ xc_gga_fxc (&func, nrxx, rho.data (), sigma.data (), v2rho2.data (), v2rhosigma.data (), v2sigma2.data ());
130128 break ;
131129 default :
132130 throw std::domain_error (" func.info->family =" + std::to_string (func.info ->family )
@@ -136,24 +134,24 @@ void LR::KernelXC::f_xc_libxc(const int& nspin, const double& omega, const doubl
136134 // some formulas for GGA
137135 if (func.info ->family == XC_FAMILY_GGA || func.info ->family == XC_FAMILY_HYB_GGA)
138136 {
139- const std::vector<double >& v2r2 = this ->kernel_set_ [ " v2rho2" ] ;
140- const std::vector<double >& v2rs = this ->kernel_set_ [ " v2rhosigma" ] ;
141- const std::vector<double >& v2s2 = this ->kernel_set_ [ " v2sigma2" ] ;
142- const std::vector<double >& vs = this ->kernel_set_ [ " vsigma" ] ;
137+ const std::vector<double >& v2r2 = this ->v2rho2 ;
138+ const std::vector<double >& v2rs = this ->v2rhosigma ;
139+ const std::vector<double >& v2s2 = this ->v2sigma2 ;
140+ const std::vector<double >& vs = this ->vsigma ;
143141 const double tpiba2 = tpiba * tpiba;
144142
145143 if (1 == nspin)
146144 {
147145 using V3 = ModuleBase::Vector3<double >;
148146 // 0. drho
149- this ->grad_kernel_set_ . emplace ( " drho_gs" , gradrho[0 ]) ;
147+ this ->drho_gs = gradrho[0 ];
150148 // 1. $2f^{\rho\sigma}*\nabla\rho$
151- this ->grad_kernel_set_ . emplace ( " 2_v2rhosigma_drho " , std::vector<V3>( nrxx) );
152- std::transform (gradrho[0 ].begin (), gradrho[0 ].end (), v2rs.begin (), this ->grad_kernel_set_ [ " 2_v2rhosigma_drho " ] .begin (),
149+ this ->v2rhosigma_2drho . resize ( nrxx);
150+ std::transform (gradrho[0 ].begin (), gradrho[0 ].end (), v2rs.begin (), this ->v2rhosigma_2drho .begin (),
153151 [](const V3& a, const V3& b) {return a * b * 2 .; });
154152 // 2. $4f^{\sigma\sigma}*\nabla\rho$
155- this ->grad_kernel_set_ . emplace ( " 4_v2sigma2_drho " , std::vector<V3>( nrxx) );
156- std::transform (sigma.begin (), sigma.end (), v2s2.begin (), this -> grad_kernel_set_ [ " 4_v2sigma2_drho " ] .begin (),
153+ this ->v2sigma2_4drho . resize ( nrxx);
154+ std::transform (sigma.begin (), sigma.end (), v2s2.begin (), v2sigma2_4drho .begin (),
157155 [](const V3& a, const V3& b) {return a * b * 4 .; });
158156 }
159157 // else if (2 == nspin) // wrong, to be fixed
0 commit comments