get_functional_id Function

public pure function get_functional_id(df) result(num)

Get the unique identifier for most functionals, returns none if the functional was not known at the time I implemented this mapping

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: df

Return Value integer(kind=df_enum)


Source Code

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