@@ -44,17 +44,28 @@ void PSIInit<T, Device>::prepare_init(const int& random_seed)
4444 if (this ->init_wfc == " random" )
4545 {
4646 this ->psi_initer = std::unique_ptr<psi_initializer<T>>(new psi_initializer_random<T>());
47+ GlobalV::ofs_running << " \n Using RANDOM starting wave functions for all " << PARAM.inp .nbands << " bands\n " ;
4748 }
4849 else if (this ->init_wfc == " file" )
4950 {
5051 this ->psi_initer = std::unique_ptr<psi_initializer<T>>(new psi_initializer_file<T>());
52+ GlobalV::ofs_running << " \n Using FILE starting wave functions\n " ;
5153 }
5254 else if ((this ->init_wfc .substr (0 , 6 ) == " atomic" ) && (this ->ucell .natomwfc == 0 ))
5355 {
54- ModuleBase::WARNING_QUIT (" PSIInit::prepare_init" ,
55- " init_wfc = atomic requires pseudo wavefunctions, but number of atom wfc = 0. \n "
56- " Please use init_wfc = random or try a pseudopotential with pseudo wavefunctions." );
56+ std::cout << " WARNING: init_wfc = " + this ->init_wfc +
57+ " requires atomic pseudo wavefunctions(PP_PSWFC),\n but none available."
58+ " Automatically switch to random initialization." << std::endl;
59+ GlobalV::ofs_running << " \n Using RANDOM starting wave functions for all " << PARAM.inp .nbands << " bands\n " ;
60+ GlobalV::ofs_running << " \n WARNING:\n init_wfc = " + this ->init_wfc + " requires atomic pseudo wavefunctions(PP_PSWFC), but none available. \n "
61+ " Automatically switch to random initialization.\n "
62+ " Note: Random starting wavefunctions may slow down convergence.\n "
63+ " For faster convergence, consider using:\n "
64+ " 1) A pseudopotential file that includes atomic wavefunctions (with PP_PSWFC), or\n "
65+ " 2) Numerical atomic orbitals with 'init_wfc = nao' or 'nao+random' if available.\n "
66+ << std::endl;
5767 this ->psi_initer = std::unique_ptr<psi_initializer<T>>(new psi_initializer_random<T>());
68+
5869 }
5970 else if (this ->init_wfc == " atomic"
6071 || (this ->init_wfc == " atomic+random" && this ->ucell .natomwfc < PARAM.inp .nbands ))
@@ -64,26 +75,30 @@ void PSIInit<T, Device>::prepare_init(const int& random_seed)
6475 int nrandom = PARAM.inp .nbands - this ->ucell .natomwfc ;
6576 GlobalV::ofs_running << " \n Using ATOMIC starting wave functions with " << this ->ucell .natomwfc << " atomic orbitals"
6677 << " + " << nrandom << " random orbitals"
67- << " (total " << PARAM.inp .nbands << " bands)" ;
78+ << " (total " << PARAM.inp .nbands << " bands)\n " ;
6879 }
6980 else
7081 {
7182 GlobalV::ofs_running << " \n Using ATOMIC starting wave functions for all " << this ->ucell .natomwfc << " atomic orbitals"
72- << " (covers " << PARAM.inp .nbands << " bands)" ;
83+ << " (covers " << PARAM.inp .nbands << " bands)\n " ;
7384 }
7485 this ->psi_initer = std::unique_ptr<psi_initializer<T>>(new psi_initializer_atomic<T>());
7586 }
7687 else if (this ->init_wfc == " atomic+random" )
7788 {
7889 this ->psi_initer = std::unique_ptr<psi_initializer<T>>(new psi_initializer_atomic_random<T>());
90+ GlobalV::ofs_running << " \n Using ATOMIC+RANDOM starting wave functions with "
91+ << this ->ucell .natomwfc << " atomic orbitals\n " ;
7992 }
8093 else if (this ->init_wfc == " nao" )
8194 {
8295 this ->psi_initer = std::unique_ptr<psi_initializer<T>>(new psi_initializer_nao<T>());
96+ GlobalV::ofs_running << " \n Using NAO starting wave functions\n " ;
8397 }
8498 else if (this ->init_wfc == " nao+random" )
8599 {
86100 this ->psi_initer = std::unique_ptr<psi_initializer<T>>(new psi_initializer_nao_random<T>());
101+ GlobalV::ofs_running << " \n Using NAO+RANDOM starting wave functions\n " ;
87102 }
88103 else
89104 {
0 commit comments