get_functionals Subroutine

public subroutine get_functionals(funcs)

Collect all supported functionals

Arguments

Type IntentOptional Attributes Name
type(functional_group), intent(out), allocatable :: funcs(:)

Collection of functionals with possibly different spellings/names


Source Code

subroutine get_functionals(funcs)
   !DEC$ ATTRIBUTES DLLEXPORT :: get_functionals

   !> Collection of functionals with possibly different spellings/names
   type(functional_group), allocatable, intent(out) :: funcs(:)

   allocate(funcs(p_last - 1))

   funcs(p_hf) = new_funcgroup([character(len=20) :: 'hf'])
   funcs(p_am05) = new_funcgroup([character(len=20) :: 'am05'])
   funcs(p_blyp) = new_funcgroup([character(len=20) :: 'b-lyp', 'blyp'])
   funcs(p_bpbe) = new_funcgroup([character(len=20) :: 'bpbe'])
   funcs(p_bp) = new_funcgroup([character(len=20) :: 'b-p', 'bp86', 'bp', 'b-p86'])
   funcs(p_bpw) = new_funcgroup([character(len=20) :: 'bpw', 'b-pw'])
   funcs(p_lb94) = new_funcgroup([character(len=20) :: 'lb94'])
   funcs(p_mpwlyp) = new_funcgroup([character(len=20) :: 'mpwlyp', 'mpw-lyp'])
   funcs(p_mpwpw) = new_funcgroup([character(len=20) :: 'mpwpw', 'mpw-pw', 'mpwpw91'])
   funcs(p_olyp) = new_funcgroup([character(len=20) :: 'o-lyp', 'olyp'])
   funcs(p_opbe) = new_funcgroup([character(len=20) :: 'opbe'])
   funcs(p_pbe) = new_funcgroup([character(len=20) :: 'pbe'])
   funcs(p_rpbe) = new_funcgroup([character(len=20) :: 'rpbe'])
   funcs(p_revpbe) = new_funcgroup([character(len=20) :: 'revpbe'])
   funcs(p_pw86pbe) = new_funcgroup([character(len=20) :: 'pw86pbe'])
   funcs(p_rpw86pbe) = new_funcgroup([character(len=20) :: 'rpw86pbe'])
   funcs(p_pw91) = new_funcgroup([character(len=20) :: 'pw91'])
   funcs(p_pwp) = new_funcgroup([character(len=20) :: 'pwp', 'pw-p', 'pw91p86'])
   funcs(p_xlyp) = new_funcgroup([character(len=20) :: 'x-lyp', 'xlyp'])
   funcs(p_b97) = new_funcgroup([character(len=20) :: 'b97'])
   funcs(p_tpss) = new_funcgroup([character(len=20) :: 'tpss'])
   funcs(p_revtpss) = new_funcgroup([character(len=20) :: 'revtpss'])
   funcs(p_scan) = new_funcgroup([character(len=20) :: 'scan'])
   funcs(p_rscan) = new_funcgroup([character(len=20) :: 'rscan'])
   funcs(p_r2scan) = new_funcgroup([character(len=20) :: 'r2scan', 'r²scan'])
   funcs(p_r2scanh) = new_funcgroup([character(len=20) :: 'r2scanh', 'r²scanh'])
   funcs(p_r2scan0) = new_funcgroup([character(len=20) :: 'r2scan0', 'r²scan0'])
   funcs(p_r2scan50) = new_funcgroup([character(len=20) :: 'r2scan50', 'r²scan50'])
   funcs(p_r2scan_3c) = new_funcgroup([character(len=20) :: 'r2scan-3c', &
      & 'r²scan-3c', 'r2scan_3c', 'r²scan_3c', 'r2scan3c'])
   funcs(p_wr2scan) = new_funcgroup([character(len=20) :: 'wr2scan', 'wr²scan'])
   funcs(p_r2scan0_dh) = new_funcgroup([character(len=20) :: 'r2scan0-dh', &
      & 'r²scan0-dh', 'r2scan0dh', 'r²scan0dh'])
   funcs(p_r2scan_cidh) = new_funcgroup([character(len=20) :: 'r2scan-cidh', &
      & 'r²scan-cidh', 'r2scancidh', 'r²scancidh'])
   funcs(p_r2scan_qidh) = new_funcgroup([character(len=20) :: 'r2scan-qidh', &  
      & 'r²scan-qidh', 'r2scanqidh', 'r²scanqidh'])
    funcs(p_r2scan0_2) = new_funcgroup([character(len=20) :: 'r2scan0-2', &
      & 'r²scan0-2', 'r2scan02', 'r²scan02'])
   funcs(p_pr2scan50) = new_funcgroup([character(len=20) :: 'pr2scan50', &
      & 'pr²scan50', 'pr2scan50', 'pr²scan50'])
   funcs(p_pr2scan69) = new_funcgroup([character(len=20) :: 'pr2scan69', &
      & 'pr²scan69', 'pr2scan69', 'pr²scan69'])
   funcs(p_kpr2scan50) = new_funcgroup([character(len=20) :: 'kpr2scan50', & 
      & 'kpr²scan50', 'kpr2scan50', 'kpr²scan50'])
   funcs(p_wpr2scan50) = new_funcgroup([character(len=20) :: 'wpr2scan50', &
      & 'wpr²scan50', 'wpr2scan50', 'wpr²scan50'])
   funcs(p_b1lyp) = new_funcgroup([character(len=20) :: 'b1lyp', 'b1-lyp'])
   funcs(p_b3lyp) = new_funcgroup([character(len=20) :: 'b3-lyp', 'b3lyp'])
   funcs(p_bhlyp) = new_funcgroup([character(len=20) :: 'bh-lyp', 'bhlyp'])
   funcs(p_b1p) = new_funcgroup([character(len=20) :: 'b1p', 'b1-p', 'b1p86'])
   funcs(p_b3p) = new_funcgroup([character(len=20) :: 'b3p', 'b3-p', 'b3p86'])
   funcs(p_b1pw) = new_funcgroup([character(len=20) :: 'b1pw', 'b1-pw', 'b1pw91'])
   funcs(p_b3pw) = new_funcgroup([character(len=20) :: 'b3pw', 'b3-pw', 'b3pw91'])
   funcs(p_o3lyp) = new_funcgroup([character(len=20) :: 'o3-lyp', 'o3lyp'])
   funcs(p_revpbe0) = new_funcgroup([character(len=20) :: 'revpbe0'])
   funcs(p_revpbe38) = new_funcgroup([character(len=20) :: 'revpbe38'])
   funcs(p_pbe0) = new_funcgroup([character(len=20) :: 'pbe0'])
   funcs(p_pwp1) = new_funcgroup([character(len=20) :: 'pwp1'])
   funcs(p_pw1pw) = new_funcgroup([character(len=20) :: 'pw1pw', 'pw1-pw'])
   funcs(p_mpw1pw) = new_funcgroup([character(len=20) :: 'mpw1pw', 'mpw1-pw', 'mpw1pw91'])
   funcs(p_mpw1lyp) = new_funcgroup([character(len=20) :: 'mpw1lyp', 'mpw1-lyp'])
   funcs(p_pw6b95) = new_funcgroup([character(len=20) :: 'pw6b95'])
   funcs(p_tpssh) = new_funcgroup([character(len=20) :: 'tpssh'])
   funcs(p_tpss0) = new_funcgroup([character(len=20) :: 'tpss0'])
   funcs(p_x3lyp) = new_funcgroup([character(len=20) :: 'x3-lyp', 'x3lyp'])
   funcs(p_m06) = new_funcgroup([character(len=20) :: 'm06'])
   funcs(p_m06l) = new_funcgroup([character(len=20) :: 'm06l'])
   funcs(p_mn12sx) = new_funcgroup([character(len=20) :: 'mn12sx', 'mn12-sx'])
   funcs(p_b97d) = new_funcgroup([character(len=20) :: 'b97d'])
   funcs(p_lh07tsvwn) = new_funcgroup([character(len=20) :: 'lh07tsvwn', 'lh07t-svwn'])
   funcs(p_lh07ssvwn) = new_funcgroup([character(len=20) :: 'lh07ssvwn', 'lh07s-svwn'])
   funcs(p_lh12ctssirpw92) = new_funcgroup([character(len=20) :: 'lh12ctssirpw92', 'lh12ct-ssirpw92'])
   funcs(p_lh12ctssifpw92) = new_funcgroup([character(len=20) :: 'lh12ctssifpw92', 'lh12ct-ssifpw92'])
   funcs(p_lh14tcalpbe) = new_funcgroup([character(len=20) :: 'lh14tcalpbe', 'lh14t-calpbe'])
   funcs(p_lh20t) = new_funcgroup([character(len=20) :: 'lh20t'])
   funcs(p_b2plyp) = new_funcgroup([character(len=20) :: 'b2plyp', 'b2-plyp'])
   funcs(p_b2gpplyp) = new_funcgroup([character(len=20) :: 'b2gpplyp', 'b2gp-plyp'])
   funcs(p_mpw2plyp) = new_funcgroup([character(len=20) :: 'mpw2plyp'])
   funcs(p_pwpb95) = new_funcgroup([character(len=20) :: 'pwpb95'])
   funcs(p_dsdblyp) = new_funcgroup([character(len=20) :: 'dsdblyp', 'dsd-blyp'])
   funcs(p_dsdpbe) = new_funcgroup([character(len=20) :: 'dsdpbe', 'dsd-pbe'])
   funcs(p_dsdpbeb95) = new_funcgroup([character(len=20) :: 'dsdpbeb95', 'dsd-pbeb95'])
   funcs(p_dsdpbep86) = new_funcgroup([character(len=20) :: 'dsdpbep86', 'dsd-pbep86'])
   funcs(p_dsdsvwn) = new_funcgroup([character(len=20) :: 'dsdsvwn', 'dsd-svwn'])
   funcs(p_dodblyp) = new_funcgroup([character(len=20) :: 'dodblyp', 'dod-blyp'])
   funcs(p_dodpbe) = new_funcgroup([character(len=20) :: 'dodpbe', 'dod-pbe'])
   funcs(p_dodpbeb95) = new_funcgroup([character(len=20) :: 'dodpbeb95', 'dod-pbeb95'])
   funcs(p_dodpbep86) = new_funcgroup([character(len=20) :: 'dodpbep86', 'dod-pbep86'])
   funcs(p_dodsvwn) = new_funcgroup([character(len=20) :: 'dodsvwn', 'dod-svwn'])
   funcs(p_pbe0_2) = new_funcgroup([character(len=20) :: 'pbe02', 'pbe0-2'])
   funcs(p_pbe0_dh) = new_funcgroup([character(len=20) :: 'pbe0dh', 'pbe0-dh'])
   funcs(p_dftb_3ob) = new_funcgroup([character(len=20) :: 'dftb3', 'dftb(3ob)'])
   funcs(p_dftb_mio) = new_funcgroup([character(len=20) :: 'dftb(mio)'])
   funcs(p_dftb_pbc) = new_funcgroup([character(len=20) :: 'dftb(pbc)'])
   funcs(p_dftb_matsci) = new_funcgroup([character(len=20) :: 'dftb(matsci)'])
   funcs(p_dftb_ob2) = new_funcgroup([character(len=20) :: 'lc-dftb', 'dftb(ob2)'])
   funcs(p_b1b95) = new_funcgroup([character(len=20) :: 'b1b95'])
   funcs(p_pbesol) = new_funcgroup([character(len=20) :: 'pbesol'])
   funcs(p_mpwb1k) = new_funcgroup([character(len=20) :: 'mpwb1k'])
   funcs(p_mpw1b95) = new_funcgroup([character(len=20) :: 'mpw1b95'])
   funcs(p_hse03) = new_funcgroup([character(len=20) :: 'hse03'])
   funcs(p_hse06) = new_funcgroup([character(len=20) :: 'hse06'])
   funcs(p_hse12) = new_funcgroup([character(len=20) :: 'hse12'])
   funcs(p_hse12s) = new_funcgroup([character(len=20) :: 'hse12s'])
   funcs(p_hsesol) = new_funcgroup([character(len=20) :: 'hsesol'])
   funcs(p_revtpssh) = new_funcgroup([character(len=20) :: 'revtpssh'])
   funcs(p_glyp) = new_funcgroup([character(len=20) :: 'glyp', 'g-lyp'])
   funcs(p_revpbe0dh) = new_funcgroup([character(len=20) :: 'revpbe0dh', 'revpbe0-dh'])
   funcs(p_revtpss0) = new_funcgroup([character(len=20) :: 'revtpss0'])
   funcs(p_revdsdpbep86) = new_funcgroup([character(len=20) :: 'revdsd-pbep86', 'revdsdpbep86'])
   funcs(p_revdsdpbe) = new_funcgroup([character(len=20) :: 'revdsd-pbe', 'revdsd-pbepbe', 'revdsdpbe', 'revdsdpbepbe'])
   funcs(p_revdsdblyp) = new_funcgroup([character(len=20) :: 'revdsd-blyp', 'revdsdblyp'])
   funcs(p_revdodpbep86) = new_funcgroup([character(len=20) :: 'revdod-pbep86', 'revdodpbep86'])
   funcs(p_b97m) = new_funcgroup([character(len=20) :: 'b97m'])
   funcs(p_wb97m) = new_funcgroup([character(len=20) :: 'wb97m', 'ωb97m', 'omegab97m'])
   funcs(p_wb97m_rev) = new_funcgroup([character(len=20) :: 'wb97m-rev', &
      & 'ωb97m-rev', 'omegab97m-rev', 'wb97m_rev', 'ωb97m_rev', 'omegab97m_rev'])
   funcs(p_wb97) = new_funcgroup([character(len=20) :: 'wb97', 'ωb97', 'omegab97'])
   funcs(p_wb97x) = new_funcgroup([character(len=20) :: 'wb97x', 'ωb97x', 'omegab97x'])
   funcs(p_wb97x_rev) = new_funcgroup([character(len=20) :: 'wb97x-rev', &
      & 'ωb97x-rev', 'omegab97x-rev', 'wb97x_rev', 'ωb97x_rev', 'omegab97x_rev'])
   funcs(p_wb97x_3c) = new_funcgroup([character(len=20) :: 'wb97x-3c', &
      & 'ωb97x-3c', 'omegab97x-3c', 'wb97x_3c', 'ωb97x_3c', 'omegab97x_3c'])
   funcs(p_camb3lyp) = new_funcgroup([character(len=20) :: 'cam-b3lyp', 'camb3lyp'])
   funcs(p_camqtp01) = new_funcgroup([character(len=20) :: 'cam-qtp01', &
      & 'camqtp01', 'camqtp(01)', 'cam-qtp(01)'])
   funcs(p_lcblyp) = new_funcgroup([character(len=20) :: 'lc-blyp', 'lcblyp'])
   funcs(p_lcwpbe) = new_funcgroup([character(len=20) :: 'lc-wpbe', &
      & 'lcwpbe', 'lc-ωpbe', 'lcωpbe', 'lc-omegapbe', 'lcomegapbe'])
   funcs(p_lcwpbeh) = new_funcgroup([character(len=20) :: 'lc-wpbeh', &
      & 'lcwpbeh', 'lc-ωpbeh', 'lcωpbeh', 'lc-omegapbeh', 'lcomegapbeh'])

end subroutine get_functionals