@@ -618,6 +618,24 @@ void LCAO_Deepks_Interface<TK, TR>::out_deepks_labels(const double& etot,
618618// 7. atom.npy, box.npy, overlap.npy
619619// ================================================================================
620620
621+ if ( ((PARAM.inp .deepks_out_labels == 2 ) && is_after_scf )
622+ || ( PARAM.inp .deepks_out_freq_elec ) )// need overlap when deepks_out_freq_elec
623+ {
624+ if (PARAM.inp .deepks_v_delta > 0 )
625+ {
626+ // prepare for overlap.npy, very much like h_tot except for p_ham->getSk()
627+ std::vector<TH> s_tot (nks);
628+ DeePKS_domain::get_h_tot<TK, TH, TR>(*ParaV, p_ham, s_tot, nlocal, nks, ' S' );
629+ const std::string file_stot = get_filename (" overlap" , PARAM.inp .deepks_out_labels , iter);
630+ LCAO_deepks_io::save_npy_h<TK, TH>(s_tot,
631+ file_stot,
632+ nlocal,
633+ nks,
634+ rank,
635+ 1.0 ); // don't need unit_scale for overlap
636+ }
637+ }
638+
621639 if ( is_after_scf ) // don't need to output in multiple electronic steps
622640 {
623641 if (PARAM.inp .deepks_out_labels == 2 )
@@ -632,20 +650,6 @@ void LCAO_Deepks_Interface<TK, TR>::out_deepks_labels(const double& etot,
632650 DeePKS_domain::prepare_box (ucell, box_out);
633651 const std::string file_box = PARAM.globalv .global_out_dir + " deepks_box.npy" ;
634652 LCAO_deepks_io::save_tensor2npy<double >(file_box, box_out, rank);
635-
636- if (PARAM.inp .deepks_v_delta > 0 )
637- {
638- // prepare for overlap.npy, very much like h_tot except for p_ham->getSk()
639- std::vector<TH> s_tot (nks);
640- DeePKS_domain::get_h_tot<TK, TH, TR>(*ParaV, p_ham, s_tot, nlocal, nks, ' S' );
641- const std::string file_stot = PARAM.globalv .global_out_dir + " deepks_overlap.npy" ;
642- LCAO_deepks_io::save_npy_h<TK, TH>(s_tot,
643- file_stot,
644- nlocal,
645- nks,
646- rank,
647- 1.0 ); // don't need unit_scale for overlap
648- }
649653 }
650654
651655// ================================================================================
0 commit comments