Skip to content

Serialization of ORCA input parameters #217

@brockdyer03

Description

@brockdyer03

Problem

As of late I have noticed that the ORCA Manual and the opi source code can occasionally differ on the availability of ORCA input blocks and simple input keywords. One example is the optimization keywords. The ORCA Manual does not list a SloppyOpt in the optimization keywords, but it is present in src/opi/input/simple_keywords/opt.py, along with CrudeOpt, which is also not in the ORCA Manual.

It is difficult if you are a user, or perhaps a developer looking to make an interface to ORCA in another program, to know what options are actually available.

Solution

Given the access that the opi developers have to the ORCA source code, you are in a unique position to provide a 100% accurate, serialized version of the ORCA input parameters. Ideally this would be in an easily-parsed yet still human-readable format such as TOML, and could be provided in this repository for anyone who is looking for programmatic access to ORCA input variables.

As a brief idea of how this might look, consider the following layout:

orca-version = "6.1.1"

[[blocks.cis]]
nroots        = {type = "int"}
iroot         = {type = "int"}
irootmult     = {type = "str", options = ["singlet", "triplet"]}
maxdim        = {type = "int"}
maxiter       = {type = "int"}
nguessmat     = {type = "int"}
maxcore       = {type = "int"}
etol          = {type = "float"}
rtol          = {type = "float"}
tda           = {type = "bool"}
lrcpcm        = {type = "bool"}
cpcmeq        = {type = "bool"}
donto         = {type = "bool"}
saveunrnatorb = {type = "bool"}
spinflip      = {type = "bool"}
soc           = {type = "bool"}
socgrad       = {type = "bool"}
triplets      = {type = "bool"}
dotrans       = {type = "bool"}
dcorr         = {type = "int"}
doscs         = {type = "bool"}
intaccxc      = {type = "float"}
gridxc        = {type = "int"}
gridx         = {type = "int"}

[[blocks.ice]]
nel       = {type = "int"}
norb      = {type = "int"}
nroots    = {type = "int"}
mult      = {type = "int"}
irrep     = {type = "int"}
tgen      = {type = "float"}
tvar      = {type = "float"}
etol      = {type = "float"}
icetype   = {type = "str", options = ["CFGs", "CSFs", "DETs"]}
integrals = {type = "str", options = ["exact", "ri"]}

Alternatives

My only alternative as of right now is to comb through the ORCA manual and try to catch all of the input blocks and simple input keywords, then hope that it's accurate. When it gets updated either I or someone else will have to comb through it again to try and catch the changes, if there are any.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions