The following sections explain how to use Psi from MPQC:
PSIBIN/usr/local/psi/bin. Use PSIBIN environmental variable to point to the right location. mpqc section, mole MolecularEnergy object, etc.). In addition the following rules apply: psienv of type PsiExEnv. PsiExEnv contains job specific information, such as the directory in which Psi input, output, and checkpoint files will be kept, filename prefix, scratch directories, etc. It makes sense to define one such object and simply refer to it from all PsiWavefunction objects. See PsiExEnv class documentation for more info. psienv of type PsiExEnv. The following keywords are used by its KeyVal constructor: cwd/tmp. fileprefixname in Psi psi:files:default section. Defaults to psi. stdoutpsi.stdout. stderrpsi.stderr. nscratchnvolume in Psi psi:files:default section. Default is 1. scratchvolumex in Psi psi:files:default section. There's no default. Here's an example:
psienv<PsiExEnv>: (
cwd = ./
fileprefix = psi.test
nscratch = 2
scratch = [ "/scratch1/" "/scratch2/" ]
)
basis, molecule, etc.). In addition, PsiWavefunction's KeyVal constructor looks for the following keywords in the input file: psienvdoccsoccfrozen_doccfrozen_uocctotal_chargedocc nor socc are given. multiplicitydocc nor socc are given. memorydocc, socc, frozen_docc, frozen_uocc, total_charge, and multiplicity are used by appropriate specializations of PsiWavefunctions, i.e. PsiCLHF only checks for docc, etc.
PsiWavefunction specializations PsiCCSD and PsiCCSD_T also look for keyword reference which specifies the reference wave function (an object of type PsiSCF). All classes for correlated Psi wave functions will require such an object.
Here are a few examples of PsiWavefunctions:
%
% ROHF DZ on F atom
%
mole<PsiHSOSHF>: (
docc = [ 2 0 0 0 0 1 1 0 ] socc = [ 0 0 0 0 0 0 0 1]
memory = 10000000
% Psi Environment data
psienv<PsiExEnv>: (
cwd = ./
fileprefix = f.dz.test
stdout = f.dz.test.stdout
stderr = f.dz.test.stderr
nscratch = 1
scratch = [ "/scratch/mpqc/" ]
)
% MolecularEnergy input
molecule<Molecule>: (
{atoms geometry} = {
F [ 0.0 0.0 0.0 ]
}
)
% Basis input
basis<GaussianBasisSet>: (
molecule = $..:molecule
name = "DZ (Dunning)"
)
)
%
% RHF CCSD/cc-pVDZ on water
%
mole<PsiCCSD>: (
frozen_docc = [1 0 0 0]
memory = 40000000
% Psi Environment data
psienv<PsiExEnv>: (
cwd = ./
fileprefix = h2o.ccpvdz.ccsd.test
nscratch = 1
scratch = [ "/tmp/" ]
)
% MolecularEnergy input
molecule<Molecule>: (
{atoms geometry} = {
H [ -1.5 0.0 -0.3 ]
H [ 1.5 0.0 -0.3 ]
O [ 0.0 0.0 1.0 ]
}
)
% Basis input
basis<GaussianBasisSet>: (
molecule = $..:molecule
name = "cc-pVDZ"
)
reference<PsiCLHF>: (
psienv = $..:psienv
molecule = $..:molecule
basis = $..:basis
total_charge = 0
multiplicity = 1
)
)
Here's an optimization + subsequent frequency analysis on water molecule at the RHF CCSD 6-311G** level:
% Emacs should use -*- KeyVal -*- mode
% this file was automatically generated
% label: water test series
% molecule specification
molecule<Molecule>: (
symmetry = C2V
unit = angstrom
{ atoms geometry } = {
O [ 0.000000000000 0.000000000000 0.369372944000 ]
H [ 0.783975899000 0.000000000000 -0.184686472000 ]
H [ -0.783975899000 0.000000000000 -0.184686472000 ]
}
)
% basis set specification
basis<GaussianBasisSet>: (
name = "6-311G**"
molecule = $:molecule
)
% Psi environment specification
psienv<PsiExEnv>: (
cwd = ./
fileprefix = mpqcpsi
stdout = mpqcpsi.stdout
stderr = mpqcpsi.stderr
nscratch = 1
scratch = [ "/scratch/evaleev/" ]
)
mpqc: (
checkpoint = no
savestate = no
restart = no
coor<SymmMolecularCoor>: (
molecule = $:molecule
generator<IntCoorGen>: (
molecule = $:molecule
)
)
% molecular coordinates for optimization do_energy = yes
do_gradient = no
% method for computing the molecule's energy
mole<PsiCCSD>: (
molecule = $:molecule
basis = $:basis
coor = $..:coor
psienv = $:psienv
memory = 32000000
reference<PsiCLHF>: (
psienv = $:psienv
molecule = $:molecule
total_charge = 0
multiplicity = 1
basis = $:basis
memory = 32000000
)
hessian<FinDispMolecularHessian>: (
point_group<PointGroup>: symmetry = C2V
checkpoint = no
restart = no
)
)
optimize = yes
% optimizer object for the molecular geometry
opt<QNewtonOpt>: (
max_iterations = 20
function = $..:mole
update<BFGSUpdate>: ()
convergence<MolEnergyConvergence>: (
cartesian = yes
energy = $..:..:mole
)
)
% vibrational frequency input
freq<MolecularFrequencies>: (
point_group<PointGroup>: symmetry = C2V
molecule = $:molecule
)
)