theory.dat

Details various electronic structure methods.

Theory levels are given as a series of blocks like so:

General format:

level <level_name>
        <keyword1 = value>
        <keyword2 = value>
          …
end level

Above, <level_name> serves as a descriptor of the method that is used in other parts of the code. This string can be whatever the user wishes. It must contain no whitespace.

Example:

level mp2gs
    method = mp2
    basis = 6-31g*
    orb_res = RU
    program = psi4
end level

The following example shows the minimum required for a fully defined block. Fully defines the method and basis. Set how the references are set based on closed/open shell treatments. Sets program.

However additional keywords may be given to specify either more options or job-time params. If jobtime params (like nprocs, memorY) are not set, we set these values according to the program.

More Example of two blocks with same method but different runtime options (core-valence):

level mp2gs
    method = mp2
    basis = 6-31g*
    orb_res = RU
    program = psi4
    memory = 10
    nprocs = 8
end level

Here we have modifed the method to have runtime options

More Example of two blocks with same method but different runtime options (core-valence):

level fc_ccdz_psi4
    method = ccsd(t)
    basis = cc-pcvdz
    orb_res = RU
    program = psi4
end level

level ae_ccdz_psi4
    method = ccsd(t)
    basis = cc-pcvdz
    orb_res = RU
    program = psi4
    job_options = [all_elec]
end level

See that these two blocks are largely similar, only differing in the job options.

The range of capabilities forallowed methods is enforced by the elstruct package.

Any number of these level blocks can be given in theory.dat. The only blocks used by the code are those specified in run.dat and models.dat. (Even though all of the blocks will be read)

IMPORTANT: methods currently treated as consistent across all programs.