Get the unique identifier for most functionals, returns none if the functional was not known at the time I implemented this mapping
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | df |
pure function get_functional_id(df) result(num) integer(df_enum) :: num character(len=*), intent(in) :: df select case(df) case default num = p_invalid case('hf') num = p_hf case('am05', 'gga_x_am05:gga_c_am05') num = p_am05 case('b-lyp', 'blyp', 'gga_x_b88:gga_c_lyp') num = p_blyp case('bpbe', 'gga_x_b88:gga_c_pbe') num = p_bpbe case('b-p', 'bp86', 'bp', 'b-p86', 'gga_x_b88:gga_c_p86') num = p_bp case('bpw', 'b-pw', 'gga_x_b88:gga_c_pw91') num = p_bpw case('lb94', 'gga_x_lb') ! no gga_c_lb num = p_lb94 case('mpwlyp', 'mpw-lyp', 'gga_x_mpw91:gga_c_lyp') num = p_mpwlyp case('mpwpw', 'mpw-pw', 'mpwpw91', 'gga_x_mpw91:gga_c_pw91') num = p_mpwpw case('o-lyp', 'olyp', 'gga_x_optx:gga_c_lyp') num = p_olyp case('opbe', 'gga_x_optx:gga_c_pbe') num = p_opbe case('pbe', 'gga_x_pbe:gga_c_pbe') num = p_pbe case('rpbe', 'gga_x_rpbe:gga_c_pbe') num = p_rpbe case('revpbe', 'gga_x_pbe_r:gga_c_pbe') num = p_revpbe case('pbesol', 'gga_x_pbe_sol:gga_c_pbe_sol') num = p_pbesol case('pw86pbe', 'gga_x_pw86:gga_c_pbe') num = p_pw86pbe case('rpw86pbe', 'gga_x_rpw86:gga_c_pbe') num = p_rpw86pbe case('pw91', 'gga_x_pw91:gga_c_pw91') num = p_pw91 case('pwp', 'pw-p', 'pw91p86', 'gga_x_pw91:gga_c_p86') num = p_pwp case('x-lyp', 'xlyp', 'gga_xc_xlyp') num = p_xlyp case('b97', 'hyb_gga_xc_b97') num = p_b97 case('b97d', 'gga_xc_b97_d') num = p_b97d case('tpss', 'mgga_c_tpss:mgga_x_tpss') num = p_tpss case('revtpss', 'mgga_c_revtpss:mgga_x_revtpss') num = p_revtpss case('scan', 'mgga_x_scan:mgga_c_scan') num = p_scan case('rscan', 'mgga_x_rscan:mgga_c_rscan') num = p_rscan case('r2scan', 'r²scan', 'mgga_x_r2scan:mgga_c_r2scan') num = p_r2scan case('r2scanh', 'r²scanh', 'hyb_mgga_xc_r2scanh') num = p_r2scanh case('r2scan0', 'r²scan0', 'hyb_mgga_xc_r2scan0') num = p_r2scan0 case('r2scan50', 'r²scan50', 'hyb_mgga_xc_r2scan50') num = p_r2scan50 case('r2scan-3c', 'r²scan-3c', 'r2scan_3c', 'r²scan_3c', 'r2scan3c') num = p_r2scan_3c case('b1lyp', 'b1-lyp', 'hyb_gga_xc_b1lyp') num = p_b1lyp case('b3-lyp', 'b3lyp', 'hyb_gga_xc_b3lyp', 'hyb_gga_xc_b3lyp3', 'hyb_gga_xc_b3lyp5') num = p_b3lyp case('bh-lyp', 'bhlyp', 'hyb_gga_xc_bhandh', 'hyb_gga_xc_bhandhlyp') num = p_bhlyp case('b1p', 'b1-p', 'b1p86') ! 0.75 b88 + 0.25 hf; p86 (nonloc) + pw81 (loc) num = p_b1p case('b3p', 'b3-p', 'b3p86', 'hyb_gga_xc_b3p86', 'hyb_gga_xc_b3p86_nwchem') num = p_b3p case('b1pw', 'b1-pw', 'b1pw91', 'hyb_gga_xc_b1pw91') num = p_b1pw case('b3pw', 'b3-pw', 'b3pw91', 'hyb_gga_xc_b3pw91') num = p_b3pw case('o3-lyp', 'o3lyp', 'hyb_gga_xc_o3lyp') num = p_o3lyp case('revpbe0') ! no libxc num = p_revpbe0 case('revpbe38') ! no libxc num = p_revpbe38 case('pbe0', 'hyb_gga_xc_pbeh') num = p_pbe0 case('pwp1') ! no libxc num = p_pwp1 case('pw1pw', 'pw1-pw') ! no libxc num = p_pw1pw case('mpw1pw', 'mpw1-pw', 'mpw1pw91', 'hyb_gga_xc_mpw1pw') num = p_mpw1pw case('mpw1lyp', 'mpw1-lyp', 'hyb_gga_xc_mpw1lyp') num = p_mpw1lyp case('pw6b95', 'hyb_mgga_xc_pw6b95') num = p_pw6b95 case('tpssh', 'hyb_mgga_xc_tpssh') num = p_tpssh case('tpss0', 'hyb_mgga_xc_tpss0') num = p_tpss0 case('x3-lyp', 'x3lyp', 'hyb_gga_xc_x3lyp') num = p_x3lyp case('m06', 'mgga_x_m06:mgga_c_m06') num = p_m06 case('m06l', 'mgga_x_m06_l:mgga_c_m06_l') num = p_m06l case('mn12sx', 'mn12-sx', 'mgga_c_mn12_sx:mgga_c_mn12_sx') num = p_mn12sx case('cam-b3lyp', 'camb3lyp', 'hyb_gga_xc_cam_b3lyp') num = p_camb3lyp case('cam-qtp01', 'camqtp01', 'camqtp(01)', 'cam-qtp(01)', & & 'hyb_gga_xc_cam_qtp_01') num = p_camqtp01 case('lc-blyp', 'lcblyp', 'hyb_gga_xc_lc_blyp') num = p_lcblyp case('lc-wpbe', 'lcwpbe', 'lc-ωpbe', 'lcωpbe', 'lc-omegapbe', 'lcomegapbe', & & 'hyb_gga_xc_lc_wpbe', 'hyb_gga_xc_lc_wpbe08_whs', & & 'hyb_gga_xc_lc_wpbe_whs', 'hyb_gga_xc_lrc_wpbe') num = p_lcwpbe case('lc-wpbeh', 'lcwpbeh', 'lc-ωpbeh', 'lcωpbeh', 'lc-omegapbeh', & & 'lcomegapbeh', 'hyb_gga_xc_lc_wpbeh_whs', 'hyb_gga_xc_lrc_wpbeh') num = p_lcwpbeh case('lh07tsvwn', 'lh07t-svwn') ! no libxc num = p_lh07tsvwn case('lh07ssvwn', 'lh07s-svwn') ! no libxc num = p_lh07ssvwn case('lh12ctssirpw92', 'lh12ct-ssirpw92') ! no libxc num = p_lh12ctssirpw92 case('lh12ctssifpw92', 'lh12ct-ssifpw92') ! no libxc num = p_lh12ctssifpw92 case('lh14tcalpbe', 'lh14t-calpbe') ! no libxc num = p_lh14tcalpbe case('lh20t') ! no libxc num = p_lh20t case('b2plyp', 'b2-plyp', 'xc_hyb_gga_xc_b2plyp') ! only in code num = p_b2plyp case('b2gpplyp', 'b2gp-plyp', 'xc_hyb_gga_xc_b2gpplyp') ! only in code num = p_b2gpplyp case('mpw2plyp') ! no libxc num = p_mpw2plyp case('pwpb95') ! no libxc num = p_pwpb95 case('dsdblyp', 'dsd-blyp') ! no libxc num = p_dsdblyp case('dsdpbe', 'dsd-pbe') ! no libxc num = p_dsdpbe case('dsdpbeb95', 'dsd-pbeb95') ! no libxc num = p_dsdpbeb95 case('dsdpbep86', 'dsd-pbep86') ! no libxc num = p_dsdpbep86 case('dsdsvwn', 'dsd-svwn') ! no libxc num = p_dsdsvwn case('dodblyp', 'dod-blyp') ! no libxc num = p_dodblyp case('dodpbe', 'dod-pbe') ! no libxc num = p_dodpbe case('dodpbeb95', 'dod-pbeb95') ! no libxc num = p_dodpbeb95 case('dodpbep86', 'dod-pbep86') ! no libxc num = p_dodpbep86 case('dodsvwn', 'dod-svwn') ! no libxc num = p_dodsvwn case('pbe02', 'pbe0-2') ! no libxc num = p_pbe0_2 case('pbe0dh', 'pbe0-dh') ! no libxc num = p_pbe0_dh case('dftb3', 'dftb(3ob)') ! no libxc num = p_dftb_3ob case('dftb(mio)') ! no libxc num = p_dftb_mio case('dftb(pbc)') ! no libxc num = p_dftb_pbc case('dftb(matsci)') ! no libxc num = p_dftb_matsci case('lc-dftb', 'dftb(ob2)') ! no libxc num = p_dftb_ob2 case('b1b95', 'hyb_mgga_xc_b88b95') num = p_b1b95 case('mpwb1k', 'hyb_mgga_xc_mpwb1k') num = p_mpwb1k case('mpw1b95', 'hyb_mgga_xc_mpw1b95') num = p_mpw1b95 case('hse03', 'hyb_gga_xc_hse03') num = p_hse03 case('hse06', 'hyb_gga_xc_hse06') num = p_hse06 case('hse12', 'hyb_gga_xc_hse12') num = p_hse12 case('hse12s', 'hyb_gga_xc_hse12s') num = p_hse12s case('hsesol', 'hyb_gga_xc_hse_sol') num = p_hsesol case('glyp', 'g-lyp', 'gga_x_g96:gga_c_lyp') num = p_glyp case('revpbe0dh', 'revpbe0-dh') ! no libxc num = p_revpbe0dh case('revtpssh', 'hyb_mgga_xc_revtpssh') num = p_revtpssh case('revtpss0') ! no libxc num = p_revtpss0 case('revdsd-pbep86', 'revdsdpbep86') ! no libxc num = p_revdsdpbep86 case('revdsd-pbe', 'revdsd-pbepbe', 'revdsdpbe', 'revdsdpbepbe') ! no libxc num = p_revdsdpbe case('revdsd-blyp', 'revdsdblyp') ! no libxc num = p_revdsdblyp case('revdod-pbep86', 'revdodpbep86') ! no libxc num = p_revdodpbep86 case('b97m', 'mgga_xc_b97m_v') num = p_b97m case('wb97m', 'ωb97m', 'omegab97m', 'hyb_mgga_xc_wb97m_v') num = p_wb97m case('wb97m-rev', 'ωb97m-rev', 'omegab97m-rev', 'wb97m_rev', 'ωb97m_rev', & & 'omegab97m_rev') ! D4 re-parametrization num = p_wb97m_rev case('wb97', 'ωb97', 'omegab97', 'hyb_gga_xc_wb97') num = p_wb97 case('wb97x', 'ωb97x', 'omegab97x', 'hyb_gga_xc_wb97x') num = p_wb97x case('wb97x-rev', 'ωb97x-rev', 'omegab97x-rev', 'wb97x_rev', 'ωb97x_rev', & & 'omegab97x_rev') ! D4 re-parametrization num = p_wb97x_rev case('wb97x-3c', 'ωb97x-3c', 'omegab97x-3c', 'wb97x_3c', 'ωb97x_3c', & & 'omegab97x_3c') ! no libxc num = p_wb97x_3c case('wr2scan', 'wr²scan') ! no libxc num = p_wr2scan case('r2scan0-dh', 'r²scan0-dh', 'r2scan0dh', 'r²scan0dh') ! no libxc num = p_r2scan0_dh case('r2scan-cidh', 'r²scan-cidh', 'r2scancidh', 'r²scancidh') ! no libxc num = p_r2scan_cidh case('r2scan-qidh', 'r²scan-qidh', 'r2scanqidh', 'r²scanqidh') ! no libxc num = p_r2scan_qidh case('r2scan0-2', 'r²scan0-2', 'r2scan02', 'r²scan02') ! no libxc num = p_r2scan0_2 case('pr2scan50', 'pr²scan50') ! no libxc num = p_pr2scan50 case('pr2scan69', 'pr²scan69') ! no libxc num = p_pr2scan69 case('kpr2scan50', 'kpr²scan50') ! no libxc num = p_kpr2scan50 case('wpr2scan50', 'wpr²scan50') ! no libxc num = p_wpr2scan50 end select end function get_functional_id