![]()
|
Running Psi 3 from MPQCPsi 3 is a suite of ab initio codes related to the original Psi package started in Prof. Fritz Schaefer's group at Berkeley. From now on we will refer to Psi 3 as simply Psi. Psi is written primarily in C and executes in serial mode only. The interface between Psi and MPQC is intended mainly for Psi users who wish to exploit MPQC's geometry optimization and frequency analyses capabilities with Psi energies and gradients.This chapter explains how to use Psi from MPQC.
How the MPQC-Psi interface worksThe current version of the interface is rather slim. It is only possible to import energies and gradients computed with Psi into MPQC, i.e. wave functions cannot be imported. All MPQC-Psi interaction happens via text files and system calls. MPQC generates input file for Psi, calls appropriate Psi modules, and then parses the output files for energies and gradients. Several environmental variables are used to control MPQC-Psi interaction:
As noted above, MPQC parses the input file, and as such the input file has to be in the MPQC OO input format. All features of usual MPQC input files are there (
Psi Execution Environment
Each PsiWavefunction-derived class has to have a member object called
Here's an example:
psienv<PsiExEnv>: (
cwd = ./
fileprefix = psi.test
nscratch = 2
scratch = [ "/scratch1/" "/scratch2/" ]
)
Class PsiWavefunction is derived from class Wavefunction, hence its KeyVal constructor uses all keywords that Wavefunction's KeyVal constructor uses (
docc, 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 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
)
)
This section contains some examples of complete inputs that specify an MPQC/Psi computations. 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
)
)
Generated at Fri Jan 10 08:14:10 2003 for MPQC 2.1.3 using the documentation package Doxygen 1.2.14. |