File tree Expand file tree Collapse file tree 4 files changed +54
-1
lines changed
docs/advanced/input_files Expand file tree Collapse file tree 4 files changed +54
-1
lines changed Original file line number Diff line number Diff line change 428428 - [ abs\_ broadening] ( #abs_broadening )
429429 - [ ri\_ hartree\_ benchmark] ( #ri_hartree_benchmark )
430430 - [ aims_nbasis] ( #aims_nbasis )
431+ - [ Reduced Density Matrix Functional Theory] ( #Reduced-Density-Matrix-Functional-Theory )
432+ - [ ab\_ initio\_ type] ( #ab_initio_type )
433+ - [ rdmft\_ power\_ alpha] ( #rdmft_power_alpha )
431434
432435[ back to top] ( #full-list-of-input-keywords )
433436## System variables
@@ -3999,4 +4002,20 @@ The output files are `OUT.${suffix}/Excitation_Energy.dat` and `OUT.${suffix}/Ex
39994002- ** Description** : Atomic basis set size for each atom type (with the same order as in ` STRU ` ) in FHI-aims.
40004003- ** Default** : {} (empty list, where ABACUS use its own basis set size)
40014004
4005+ ## Reduced Density Matrix Functional Theory
4006+
4007+ ab-initio methods and the xc-functional parameters used in RDMFT.
4008+
4009+ ### ab_initio_type
4010+
4011+ - ** Type** : String
4012+ - ** Description** : Determine the ab-initio method, ksdft or rdmft (reduced density matrix funcional theory)
4013+ - ** Default** : ksdft
4014+
4015+ ### rdmft_power_alpha
4016+
4017+ - ** Type** : Real
4018+ - ** Description** : The alpha parameter of power-functional(or other exx-type/hybrid functionals) which used in RDMFT, g(occ_number) = occ_number^alpha
4019+ - ** Default** : 0.656
4020+
40024021[ back to top] ( #full-list-of-input-keywords )
Original file line number Diff line number Diff line change @@ -493,5 +493,37 @@ void ReadInput::item_others()
493493 sync_intvec (input.aims_nbasis , para.input .aims_nbasis .size (), 0 );
494494 this ->add_item (item);
495495 }
496+
497+ // RDMFT, added by jghan, 2024-10-16
498+ {
499+ Input_Item item (" ab_initio_type" );
500+ item.annotation = " rdmft (reduced density matrix funcional theory) or ksdft, default is ksdft" ;
501+ read_sync_string (input.ab_initio_type );
502+ this ->add_item (item);
503+ }
504+ {
505+ Input_Item item (" rdmft_power_alpha" );
506+ item.annotation = " the alpha parameter of power-functional, g(occ_number) = occ_number^alpha"
507+ " used in exx-type functionals such as muller and power" ;
508+ read_sync_double (input.rdmft_power_alpha );
509+ item.reset_value = [](const Input_Item& item, Parameter& para) {
510+ if ( para.input .dft_functional == " hf" )
511+ {
512+ para.input .rdmft_power_alpha = 1.0 ;
513+ }
514+ else if ( para.input .dft_functional == " muller" )
515+ {
516+ para.input .rdmft_power_alpha = 0.5 ;
517+ }
518+ };
519+ item.check_value = [](const Input_Item& item, const Parameter& para) {
520+ if ( (para.input .rdmft_power_alpha < 0 ) || (para.input .rdmft_power_alpha > 1 ) )
521+ {
522+ ModuleBase::WARNING_QUIT (" ReadInput" , " rdmft_power_alpha should be greater than 0.0 and less than 1.0" );
523+ }
524+ };
525+ this ->add_item (item);
526+ }
527+
496528}
497529} // namespace ModuleIO
Original file line number Diff line number Diff line change @@ -420,6 +420,8 @@ TEST_F(InputParaTest, ParaRead)
420420 EXPECT_EQ (param.inp .abs_wavelen_range .size (), 2 );
421421 EXPECT_DOUBLE_EQ (param.inp .abs_wavelen_range [0 ], 0.0 );
422422 EXPECT_DOUBLE_EQ (param.inp .abs_broadening , 0.01 );
423+ EXPECT_EQ (param.inp .ab_initio_type , " rdmft" );
424+ EXPECT_DOUBLE_EQ (param.inp .rdmft_power_alpha , 0.656 );
423425}
424426
425427TEST_F (InputParaTest, Check)
Original file line number Diff line number Diff line change @@ -587,7 +587,7 @@ struct Input_para
587587 // ============== #Parameters (21.RDMFT) =====================
588588 // RDMFT jghan added on 2024-07-06
589589 std::string ab_initio_type = " ksdft" ; // "rdmft", reduced density matrix funcional theory
590- double rdmft_power_alpha = 1.0 ; // the alpha parameter of power-functional, g(occ_number) = occ_number^alpha
590+ double rdmft_power_alpha = 0.656 ; // the alpha parameter of power-functional, g(occ_number) = occ_number^alpha
591591 // double rdmft_wp22_omega; // the omega parameter of wp22-functional = exx_hse_omega
592592
593593};
You can’t perform that action at this time.
0 commit comments