@@ -330,7 +330,15 @@ void Input_Conv::Convert()
330330 || dft_functional_lower == " scan0" ) {
331331 GlobalC::restart.info_save .save_charge = true ;
332332 GlobalC::restart.info_save .save_H = true ;
333- } else {
333+ }
334+ else if ( dft_functional_lower == " muller" || dft_functional_lower == " power"
335+ || dft_functional_lower == " wp22"
336+ || dft_functional_lower == " cwp22" ) // added by jghan, 2024-07-07
337+ {
338+ GlobalC::restart.info_save .save_charge = true ;
339+ GlobalC::restart.info_save .save_H = true ;
340+ }
341+ else {
334342 GlobalC::restart.info_save .save_charge = true ;
335343 }
336344 }
@@ -348,7 +356,15 @@ void Input_Conv::Convert()
348356 || dft_functional_lower == " scan0" ) {
349357 GlobalC::restart.info_load .load_charge = true ;
350358 GlobalC::restart.info_load .load_H = true ;
351- } else {
359+ }
360+ else if ( dft_functional_lower == " muller" || dft_functional_lower == " power"
361+ || dft_functional_lower == " wp22"
362+ || dft_functional_lower == " cwp22" ) // added by jghan, 2024-07-07
363+ {
364+ GlobalC::restart.info_load .load_charge = true ;
365+ GlobalC::restart.info_load .load_H = true ;
366+ }
367+ else {
352368 GlobalC::restart.info_load .load_charge = true ;
353369 }
354370 }
@@ -376,7 +392,24 @@ void Input_Conv::Convert()
376392 } else if (dft_functional_lower == " opt_orb" ) {
377393 GlobalC::exx_info.info_global .cal_exx = false ;
378394 Exx_Abfs::Jle::generate_matrix = true ;
379- } else {
395+ }
396+ // muller, power, wp22, cwp22 added by jghan, 2024-07-07
397+ else if ( dft_functional_lower == " muller" || dft_functional_lower == " power" )
398+ {
399+ GlobalC::exx_info.info_global .cal_exx = true ;
400+ GlobalC::exx_info.info_global .ccp_type = Conv_Coulomb_Pot_K::Ccp_Type::Hf;
401+ }
402+ else if ( dft_functional_lower == " wp22" )
403+ {
404+ GlobalC::exx_info.info_global .cal_exx = true ;
405+ GlobalC::exx_info.info_global .ccp_type = Conv_Coulomb_Pot_K::Ccp_Type::erf; // use the error function erf(w|r-r'|), exx just has the long-range part
406+ }
407+ else if ( dft_functional_lower == " cwp22" )
408+ {
409+ GlobalC::exx_info.info_global .cal_exx = true ;
410+ GlobalC::exx_info.info_global .ccp_type = Conv_Coulomb_Pot_K::Ccp_Type::Hse; // use the erfc(w|r-r'|), exx just has the short-range part
411+ }
412+ else {
380413 GlobalC::exx_info.info_global .cal_exx = false ;
381414 }
382415
0 commit comments