11#include " exx_opt_orb.h"
22#include " ../../source_pw/module_pwdft/global.h"
33#include " exx_abfs-jle.h"
4+ #include " source_base/tool_title.h"
45#include < iomanip>
56
67void Exx_Opt_Orb::print_matrix (
78 const Exx_Info::Exx_Info_Opt_ABFs &info,
89 const UnitCell& ucell,
9- const K_Vectors &kv,
10- const std::string& file_name,
10+ const K_Vectors &kv,
11+ const int Lmax,
12+ const std::vector<std::size_t > &ecut_number,
13+ const std::string &file_name,
1114 const std::vector<RI::Tensor<double >> &matrix_Q,
1215 const std::vector<std::vector<RI::Tensor<double >>> &matrix_S,
1316 const RI::Tensor<double > &matrix_V,
14- const size_t TA, const size_t IA, const size_t TB, const size_t IB,
15- const std::vector<double >& orb_cutoff,
17+ const std:: size_t TA, const std:: size_t IA, const std:: size_t TB, const std:: size_t IB,
18+ const std::vector<double >& orb_cutoff,
1619 const ModuleBase::Element_Basis_Index::Range &range_jles,
1720 const ModuleBase::Element_Basis_Index::IndexLNM &index_jles) const
1821{
@@ -61,45 +64,40 @@ void Exx_Opt_Orb::print_matrix(
6164 << ucell.atoms [TB].tau [IB].z << std::endl;
6265 }
6366
64- // ecutwfc_jlq determine the jlq corresponding to plane wave calculation.
65- ofs << info.ecut_exx << " ecutwfc" << std::endl; // mohan add 2009-09-08
67+ ofs << info.ecut_exx << " ecutwfc" << std::endl;
6668
6769 // this parameter determine the total number of jlq.
68- ofs << info.ecut_exx << " ecutwfc_jlq" << std::endl;// mohan modify 2009-09-08
70+ ofs << info.ecut_exx << " ecutwfc_jlq" << std::endl;
6971
7072 if (TA==TB)
7173 { ofs << orb_cutoff[TA] << " rcut_Jlq" << std::endl; }
7274 else
7375 { ofs << orb_cutoff[TA] << " " << orb_cutoff[TB] << " rcut_Jlq" << std::endl; }
7476
75- // mohan add 'smooth' and 'smearing_sigma' 2009-08-28
7677 ofs << 0 << " smooth" << std::endl;
7778 ofs << 0 << " smearing_sigma" << std::endl;
7879
7980 ofs << info.tolerence << " tolerence" << std::endl;
8081
81- ofs << info. abfs_Lmax << " lmax" << std::endl;
82+ ofs << Lmax << " lmax" << std::endl;
8283
8384 ofs << kv.get_nkstot () << " nks" << std::endl;
8485 assert ( matrix_V.shape [0 ]*matrix_V.shape [1 ] == matrix_V.shape [2 ]*matrix_V.shape [3 ] );
8586 ofs << matrix_V.shape [0 ]*matrix_V.shape [1 ] << " nbands" << std::endl;
8687
87- auto cal_sum_M = [&range_jles](size_t T) -> size_t
88+ auto cal_sum_M = [&range_jles](std:: size_t T) -> std:: size_t
8889 {
89- size_t sum_M = 0 ;
90- for ( size_t L = 0 ; L!=range_jles[T].size (); ++L )
90+ std:: size_t sum_M = 0 ;
91+ for ( std:: size_t L = 0 ; L!=range_jles[T].size (); ++L )
9192 { sum_M += range_jles[T][L].M ; }
9293 return sum_M;
9394 };
94- const size_t nwfc = (TA==TB && IA==IB) ? cal_sum_M (TA) : cal_sum_M (TA)+cal_sum_M (TB);
95+ const std:: size_t nwfc = (TA==TB && IA==IB) ? cal_sum_M (TA) : cal_sum_M (TA)+cal_sum_M (TB);
9596 ofs << nwfc << " nwfc" << std::endl;
9697
97- const size_t ecut_numberA = static_cast <size_t >( std::sqrt ( info.ecut_exx ) * orb_cutoff[TA] / ModuleBase::PI ); // Rydberg Unit
98- const size_t ecut_numberB = static_cast <size_t >( std::sqrt ( info.ecut_exx ) * orb_cutoff[TB] / ModuleBase::PI ); // Rydberg Unit
99- if (TA==TB)
100- { ofs << ecut_numberA << " ne" << std::endl; }
101- else
102- { ofs << ecut_numberA << " " << ecut_numberB << " ne" << std::endl; }
98+ for (const std::size_t ne : ecut_number)
99+ { ofs << ne << " " ; }
100+ ofs << " ne" << std::endl;
103101
104102 ofs << " <WEIGHT_OF_KPOINTS>" << std::endl;
105103 for ( int ik=0 ; ik!=kv.get_nkstot (); ++ik )
@@ -119,18 +117,18 @@ void Exx_Opt_Orb::print_matrix(
119117 // < Psi | jY >
120118 // ---------------------
121119 ofs<< " <OVERLAP_Q>" << std::endl;
122- for ( size_t iw0=0 ; iw0!=matrix_V.shape [0 ]; ++iw0 )
120+ for ( std:: size_t iw0=0 ; iw0!=matrix_V.shape [0 ]; ++iw0 )
123121 {
124- for ( size_t iw1=0 ; iw1!=matrix_V.shape [1 ]; ++iw1 )
122+ for ( std:: size_t iw1=0 ; iw1!=matrix_V.shape [1 ]; ++iw1 )
125123 {
126- for ( size_t iat=0 ; iat!=matrix_Q.size (); ++iat )
124+ for ( std:: size_t iat=0 ; iat!=matrix_Q.size (); ++iat )
127125 {
128- const size_t it = (iat==0 ) ? TA : TB;
129- for ( size_t il=0 ; il!=range_jles[it].size (); ++il )
126+ const std:: size_t it = (iat==0 ) ? TA : TB;
127+ for ( std:: size_t il=0 ; il!=range_jles[it].size (); ++il )
130128 {
131- for ( size_t im=0 ; im!=range_jles[it][il].M ; ++im )
129+ for ( std:: size_t im=0 ; im!=range_jles[it][il].M ; ++im )
132130 {
133- for ( size_t iq=0 ; iq!=range_jles[it][il].N ; ++iq )
131+ for ( std:: size_t iq=0 ; iq!=range_jles[it][il].N ; ++iq )
134132 {
135133 ofs<<matrix_Q[iat]( iw0, iw1, index_jles[it][il][iq][im] )<<" \t " <<0 <<std::endl;
136134 }
@@ -149,23 +147,23 @@ void Exx_Opt_Orb::print_matrix(
149147 // < jY | jY >
150148 // ---------------------
151149 ofs<< " <OVERLAP_Sq>" <<std::endl;
152- for ( size_t iat1=0 ; iat1!=matrix_S.size (); ++iat1 )
150+ for ( std:: size_t iat1=0 ; iat1!=matrix_S.size (); ++iat1 )
153151 {
154- const size_t it1 = (iat1==0 ) ? TA : TB;
155- for ( size_t il1=0 ; il1!=range_jles[it1].size (); ++il1 )
152+ const std:: size_t it1 = (iat1==0 ) ? TA : TB;
153+ for ( std:: size_t il1=0 ; il1!=range_jles[it1].size (); ++il1 )
156154 {
157- for ( size_t im1=0 ; im1!=range_jles[it1][il1].M ; ++im1 )
155+ for ( std:: size_t im1=0 ; im1!=range_jles[it1][il1].M ; ++im1 )
158156 {
159- for ( size_t iat2=0 ; iat2!=matrix_S[iat1].size (); ++iat2 )
157+ for ( std:: size_t iat2=0 ; iat2!=matrix_S[iat1].size (); ++iat2 )
160158 {
161- const size_t it2 = (iat2==0 ) ? TA : TB;
162- for ( size_t il2=0 ; il2!=range_jles[it2].size (); ++il2 )
159+ const std:: size_t it2 = (iat2==0 ) ? TA : TB;
160+ for ( std:: size_t il2=0 ; il2!=range_jles[it2].size (); ++il2 )
163161 {
164- for ( size_t im2=0 ; im2!=range_jles[it2][il2].M ; ++im2 )
162+ for ( std:: size_t im2=0 ; im2!=range_jles[it2][il2].M ; ++im2 )
165163 {
166- for ( size_t iq1=0 ; iq1!=range_jles[it1][il1].N ; ++iq1 )
164+ for ( std:: size_t iq1=0 ; iq1!=range_jles[it1][il1].N ; ++iq1 )
167165 {
168- for ( size_t iq2=0 ; iq2!=range_jles[it2][il2].N ; ++iq2 )
166+ for ( std:: size_t iq2=0 ; iq2!=range_jles[it2][il2].N ; ++iq2 )
169167 {
170168 ofs<<matrix_S[iat1][iat2]( index_jles[it1][il1][iq1][im1], index_jles[it2][il2][iq2][im2] )*scale<<" \t " <<0 <<std::endl;
171169 }
@@ -186,13 +184,13 @@ void Exx_Opt_Orb::print_matrix(
186184 // < Psi | Psi >
187185 // ---------------------
188186 ofs << " <OVERLAP_V>" << std::endl;
189- for ( size_t iw0=0 ; iw0!=matrix_V.shape [0 ]; ++iw0 )
187+ for ( std:: size_t iw0=0 ; iw0!=matrix_V.shape [0 ]; ++iw0 )
190188 {
191- for ( size_t iw1=0 ; iw1!=matrix_V.shape [1 ]; ++iw1 )
189+ for ( std:: size_t iw1=0 ; iw1!=matrix_V.shape [1 ]; ++iw1 )
192190 {
193- for ( size_t iw2=0 ; iw2!=matrix_V.shape [2 ]; ++iw2 )
191+ for ( std:: size_t iw2=0 ; iw2!=matrix_V.shape [2 ]; ++iw2 )
194192 {
195- for ( size_t iw3=0 ; iw3!=matrix_V.shape [3 ]; ++iw3 )
193+ for ( std:: size_t iw3=0 ; iw3!=matrix_V.shape [3 ]; ++iw3 )
196194 {
197195 ofs<<matrix_V (iw0,iw1,iw2,iw3)*scale<<" \t " ;
198196 }
@@ -203,6 +201,7 @@ void Exx_Opt_Orb::print_matrix(
203201 ofs << " </OVERLAP_V>" << std::endl << std::endl;
204202 };
205203
204+ ModuleBase::TITLE (" Exx_Opt_Orb" ," print_matrix" );
206205 std::ofstream ofs (file_name+" _" +std::to_string (TA)+" _" +std::to_string (IA)+" _" +std::to_string (TB)+" _" +std::to_string (IB));
207206 print_header (ofs);
208207 ofs<<std::setprecision (15 );
0 commit comments