diff --git a/parser/parser-orca/orca_parser.py b/parser/parser-orca/orca_parser.py index c70e7b5edca86c583602b52583b3cf24320be316..94aee85f791efb3fa4926da5837966f1676aef3c 100644 --- a/parser/parser-orca/orca_parser.py +++ b/parser/parser-orca/orca_parser.py @@ -60,6 +60,146 @@ class OrcaContext(object): backend.addArrayValues("geometry_optimization_converged", pos) backend.addValue("atom_labels", value["x_orca_atom_labels_geo_opt"]) + def onClose_x_orca_section_functionals(self, backend, gIndex, section): + functional_names = section["x_orca_XC_functional_type"] + + if functional_names == None: functional = "HF" #default method is Hartree-Fock + else: functional = functional_names[-1] + + if functional: + functionalMap = { + + #*************************************** + # Local functionals + #*************************************** + # HFS: Hartree-Fock Slater + "HF": ["HF_X"], + "HFS": ["HF_X"], + # XAlpha: The famous old Slater Xa theory + "XAlpha": ["HF_X", "LDA_C_XALPHA"], + # LSD: Local spin density (VWN-5A form) + "LSD": ["LDA_X", "LDA_C_VWN_RPA", "VWN5_RPA"], + "LDA": ["LDA_X", "LDA_C_VWN_RPA", "VWN5_RPA"], + # VWN5: Local spin density (VWN-5) + "VWN": ["LDA_X", "LDA_C_VWN_RPA", "VWN5_RPA"], + "VWN5": ["LDA_X", "LDA_C_VWN_RPA", "VWN5_RPA"], + # VWN3: Local spin density (VWN-3) + "VWN3": ["LDA_X", "LDA_C_VWN_3"], + # PWLDA: Local spin density (PW-LDA) + "PWLDA": ["LDA_X", "LDA_C_PW"], + #*************************************** + # ’Pure’ GGA functionals + #*************************************** + # BNULL: Becke ’88 exchange, no corr. + "BNULL": ["GGA_X_B88"], + # BVWN: Becke ’88 exchane, VWN-5 corr. + "BVWN": ["GGA_X_B88", "LDA_C_VWN_RPA", "VWN5_RPA"], + # BP: Becke X-Perdew 86 correlation + "BP": ["LDA_X", "GGA_X_B88", "LDA_C_VWN", "GGA_C_P86"], + "BP86": ["LDA_X", "GGA_X_B88", "LDA_C_VWN", "GGA_C_P86"], + # PW91: Perdew-Wang GGA-II ’91 func. + "PW91": ["GGA_X_PW91", "GGA_C_PW91"], + # PWP: Perdew-Wang ’91 exchange and Perdew ’86 correlation + "PWP": ["GGA_X_PW91", "GGA_C_P86"], + # mPWPW: Modified PW with PW correlation + "mPWPW": ["GGA_X_MPW91", "GGA_C_PW91"], + # mPWLYP: same with LYP correlation + "mPWLYP": ["GGA_X_MPW91", "GGA_C_LYP"], + # BLYP: Becke X with LYP correlation + "BLYP": ["GGA_X_B88", "GGA_C_LYP"], + # GP: Gill ’96 X, Perdew ’86 corr. + "GP": ["GGA_X_G96", "GGA_C_P86"], + #GLYP: Gill ’96 X with LYP correlation + "GLYP": ["GGA_X_G96", "GGA_C_LYP"], + # PBE: Perdew-Burke-Ernzerhof + "PBE": ["GGA_X_PBE", "GGA_C_PBE"], + # revPBE: Revised PBE (exchange scaling) + "revPBE": ["GGA_X_PBE_R", "GGA_C_PBE"], + # RPBE: Revised PBE (functional form of X) + "RPBE": ["GGA_X_RPBE", "GGA_C_PBE"], + # PWP: PW91 exchange + P86 correlation + "PW91": ["GGA_X_PW91", "GGA_C_P86"] + # OLYP: the optimized exchange and LYP + "OLYP": ["GGA_X_OPTX", "GGA_C_LYP"], + # OPBE: the optimized exchange and PBE + "OPBE": ["GGA_XC_OPBE_D"], + #XLYP: the Xu/Goddard exchange and LYP + "XLYP": ["GGA_XC_XLYP"], + # B97-D: Grimme’s GGA including D2 dispersion correction + "B97-D": ["GGA_XC_B97_D"], + "B97-D3": ["GGA_XC_B97_D"], + #*************************************** + # Meta GGA and hybrid meta-GGA functals. + #*************************************** + # TPSS: the TPPS functional + "TPSS": ["LDA_X", "MGGA_X_TPSS", "LDA_C_PW", "MGGA_C_TPSS"], + # TPSSh: The hybrid version of TPSS (10% HF exchange) + "TPSSh": ["HYB_MGGA_XC_TPSSH"], + # TPSS0: A 25% exchange version of TPSSh that yields improved energetics + # compared to TPSSh but is otherwise not well tested + # "TPSS0": ["HYB_MGGA_XC_TPSSH"], + # M06L: The Minnesota M06-L meta-GGA functional + "M06L": ["MGGA_X_M06_L", "MGGA_C_M06_L"], + # M06: The M06 hybrid meta-GGA (27% HF exchange) + "M06": ["MGGA_X_M06", "MGGA_C_M06"], + # M062X: The M06-2X version with 54% HF exchange + "M062X": ["MGGA_X_M06_2X", "MGGA_C_M06_2X"], + #*************************************** + # Hybrid functionals + #*************************************** + # B1LYP: One parameter Hybrid of BLYP + "B1LYP": ["HYB_GGA_XC_B1LYP"], + # B3LYP: Three parameter Hybrid of BLYP + "B3LYP": ["HYB_GGA_XC_B3LYP"], + # B1P: Analogous with Perdew exchange (The one-parameter hybrid version of BP86) + "B1P": ["HYB_GGA_XC_B1PW91"], + # B3P: Analogous with Perdew exchange (The three-parameter hybrid version of BP86) + "B3P": ["HYB_GGA_XC_B3P86"], + # B3PW: The three-parameter hybrid version of PW91 + "B3PW": ["HYB_GGA_XC_B3PW91"], + # G1LYP: 1 par. analog with Gill 96 X + "G1LYP": ["GGA_X_G96", "GGA_C_OP_G96"], + # G3LYP: 3 par. analog with Gill 96 X + # G1P: similar with P correlation + # G3P # similar with P correlation + # PBE0: 1 parameter version of PBE (PBEH, PBE0) + "PBE0": ["HYB_GGA_XC_PBEH"], + # PW1PW: One-parameter hybrid version of PW91 + "PW1PW": ["HYB_GGA_XC_B1PW91"], + "PWP91_1": ["HYB_GGA_XC_B1PW91"], + "PWP1": ["HYB_GGA_XC_B1PW91"], + # mPW1PW: 1 parameter version of mPWPW + "mPW1PW": ["HYB_GGA_XC_MPW1PW"], + # mPW1LYP: One-parameter hybrid version of mPWLYP + "mPW1LYP": ["HYB_GGA_XC_MPWLYP1M"], + # O3LYP: 3 parameter version of OLYP + "O3LYP": ["HYB_GGA_XC_O3LYP"], + # X3LYP: 3 parameter version of XLYP + "X3LYP": ["HYB_GGA_XC_X3LYP"], + # PW6B95: Hybrid functional by Truhlar [93] + "PW6B95": ["HYB_MGGA_XC_PW6B95"], + # B97: Becke’s original hybrid + "B97": ["HYB_GGA_XC_B97"], + # BHANDHLYP: Half-and-half Becke hybrid functional + "BHANDHLYP": ["HYB_GGA_XC_BHANDHLYP"], + #*************************************** + # Double Hybrid functionals (mix in MP2) + #*************************************** + # B2PLYP: Grimme’s 2006 double hybrid + "B2PLYP": ["HYB_GGA_XC_B2PLYP"], + # mPW2PLYP: Schwabe/Grimme improved double hybrid + "mB2PLYP": ["HYB_GGA_XC_MB2PLYP"], + # PWPB95: New Grimme double hybrid [94] + "PWPB95": ["HYB_MGGA_XC_MPW1B95"] + } + nomadNames = functionalMap.get(functional) + if not nomadNames: + raise Exception("Unhandled xc functional %s found" % functional) + for name in nomadNames: + s = backend.openSection("section_XC_functionals") + backend.addValue('XC_functional_name', name) + backend.closeSection("section_XC_functionals", s) + # def onClose_x_orca_orbital_energies(self, backend, gIndex, value): # x = value["x_orca_orbital_nb"] # y = value["x_orca_orbital_occupation_nb"]