mirror of
https://github.com/nwchemgit/nwchem.git
synced 2026-07-21 06:25:21 -04:00
included Pawel's frame script for the documentation and updated the SCF, CCSD and MCSCF documentation to reality
This commit is contained in:
parent
ee89e1d7c3
commit
de4f751a0d
7 changed files with 612 additions and 50 deletions
32
doc/htmlize
32
doc/htmlize
|
|
@ -9,7 +9,6 @@ if ($#argv != 1) then
|
|||
exit 1
|
||||
endif
|
||||
|
||||
|
||||
set WWWDIR=/msrc/doc/www/changes/docs/nwchem/doc
|
||||
set TMP=tmp.$$
|
||||
|
||||
|
|
@ -26,6 +25,8 @@ foreach document ($1)
|
|||
|
||||
echo " Cleaning and making $document.ps"
|
||||
|
||||
goto doit
|
||||
|
||||
make clean >& /dev/null
|
||||
make $document.ps >& $document.latex.log
|
||||
|
||||
|
|
@ -145,11 +146,38 @@ foreach document ($1)
|
|||
exit 1
|
||||
endif
|
||||
|
||||
# Now run Pawel's magic perl script to make the frames
|
||||
doit:
|
||||
if (! $?NWCHEM_TOP ) then
|
||||
echo " NWCHEM_TOP is not defined ... cannot generate frames"
|
||||
else if (! -e $NWCHEM_TOP/doc/make_manual.pl) then
|
||||
echo " $NWCHEM_TOP/doc/make_manual.pl missing ... cannot generate frames"
|
||||
else
|
||||
echo " Making frames"
|
||||
pushd $WWWDIR/$document > /dev/null
|
||||
if ($document == "user") then
|
||||
set title = "NWChem User Manual"
|
||||
else if ($document == "prog") then
|
||||
set title = "NWChem Programmers Manual"
|
||||
else
|
||||
set title = "NWChem Manual"
|
||||
endif
|
||||
|
||||
$NWCHEM_TOP/doc/make_manual.pl $document.html "$title"
|
||||
|
||||
if ($status != 0) then
|
||||
echo " Making the frames failed"
|
||||
endif
|
||||
|
||||
popd > /dev/null
|
||||
endif
|
||||
|
||||
|
||||
# Hopefully all is OK
|
||||
|
||||
echo " Done with $document"
|
||||
|
||||
/bin/rm -f $TMP $document
|
||||
/bin/rm -rf $TMP $document
|
||||
|
||||
end
|
||||
|
||||
|
|
|
|||
192
doc/make_manual.pl
Executable file
192
doc/make_manual.pl
Executable file
|
|
@ -0,0 +1,192 @@
|
|||
#!/msrc/apps/bin/perl5
|
||||
###########################
|
||||
# latex2HTML wrapper script
|
||||
# Pawel Wolinski
|
||||
# pwolinsk@comp.uark.edu
|
||||
# 5/21/97
|
||||
###########################
|
||||
|
||||
#
|
||||
# This script takes the output of htmlize (munged latex2html)
|
||||
# and adds the frame based indexing
|
||||
#
|
||||
|
||||
|
||||
$input_dir =".";
|
||||
$output_dir=".";
|
||||
$title="NWChem User Documentation";
|
||||
|
||||
if ($ARGV[0] eq "") {&print_usage;exit(0);} else {$start_file=$ARGV[0];}
|
||||
if ($ARGV[1] ne "") {$title=$ARGV[1];}
|
||||
|
||||
&make_contents_cover($input_dir,$output_dir,$start_file);
|
||||
&make_manuals($output_dir,$title);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#-----------------------subroutines-------------------
|
||||
sub make_contents_cover {
|
||||
local ($in_dir,$out_dir,$start_f)=@_;
|
||||
$r1=<<EOT;
|
||||
.*<IMG ALIGN=BOTTOM ALT="next".*
|
||||
<B>.*Next:</B>.*
|
||||
<B>.*Up:</B>.*
|
||||
<B>.*Previous:</B>.*</A>*.
|
||||
EOT
|
||||
|
||||
$r2=<<EOT2;
|
||||
<script>
|
||||
var ontop=true;
|
||||
function focus_me() {
|
||||
if (ontop) {self.focus();}
|
||||
}
|
||||
function toggle_ontop() {
|
||||
if (ontop==true) ontop=false;
|
||||
else ontop=true;
|
||||
focus_me();
|
||||
}
|
||||
function index() {
|
||||
if (self.name=="contentsWin") {
|
||||
self.opener.location="index.html";
|
||||
self.close();
|
||||
}
|
||||
}
|
||||
function windows_man() {
|
||||
if (self.name=="contents_frame") {
|
||||
top.location="windows_man.html";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
EOT2
|
||||
|
||||
$r3=<<EOT5;
|
||||
<table>
|
||||
<tr>
|
||||
<td><font size=-1><i><input type=\"button\" value=\"frames\" onClick=\"index()\"></i></font></td>
|
||||
<td><font size=-1><i><input type=\"button\" value=\"windows\" onClick=\"windows_man()\"></i></font></td>
|
||||
<td width=100%></td>
|
||||
<td><font size=-1><i><input type=\"button\" value=\"on top\" onClick=\"toggle_ontop()\"></i></font></td>
|
||||
</tr>
|
||||
</table>
|
||||
EOT5
|
||||
if (!(open(F,"$in_dir/node2.html"))) {
|
||||
print stderr "make_manual: Cannot find the contents file \"node2.html\" - terminating!\n\n";
|
||||
exit(0);
|
||||
}
|
||||
close(F);
|
||||
|
||||
if (!(open(F,"$in_dir/$start_f"))) {
|
||||
print stderr "make_manual: Cannot find the start file \"$start_f\" - terminating!\n\n";
|
||||
exit(0);
|
||||
}
|
||||
close(F);
|
||||
|
||||
$contents=`cat $in_dir/node2.html`;
|
||||
$cover =`cat $in_dir/$start_f`;
|
||||
|
||||
$contents=~s/$r1//g;
|
||||
$contents=~s/<HR>//g;
|
||||
$contents=~s/<BR> <P>//ig;
|
||||
|
||||
$cover =~s/<H2>*.<\/H2>//g;
|
||||
$cover =~s/<UL>.*<\/UL>//gs;
|
||||
$cover =~s/<HR>//g;
|
||||
|
||||
if ($cover=~/<A HREF.*>\s*Compressed postscript<\/A>/i)
|
||||
{$comp_postscript=$&;}
|
||||
if ($cover=~/<A HREF.*>\s*Postscript<\/A>/i)
|
||||
{$postscript=$&;}
|
||||
if ($cover=~/<ISINDEX.*>/i)
|
||||
{$search=$&;}
|
||||
|
||||
$cover =~s/<P>.*Compressed Postscript<\/A>//ig;
|
||||
$cover =~s/<P>.*Postscript<\/A>//ig;
|
||||
$cover =~s/<ISINDEX.*>//gi;
|
||||
|
||||
$contents=~s/<\/HEAD>/<base target=\"main\">\n$r2<\/HEAD>/g;
|
||||
$contents=~s/<BODY/<BODY onBlur=\"focus_me()\"/;
|
||||
$contents=~s/<H2>/<font size=-1><i><form>$r3$comp_postscript $postscript<\/form><\/i><\/font>\n$search\n<H2>/g;
|
||||
|
||||
open(F,">$out_dir/contents.html");
|
||||
print F $contents;
|
||||
close(F);
|
||||
|
||||
open(F,">$out_dir/cover.html");
|
||||
print F $cover;
|
||||
close(F);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
sub print_usage {
|
||||
print <<EOT2;
|
||||
usage: make_manual.pl [start file] ["title"]
|
||||
|
||||
start file: root file of the latex2html tree
|
||||
title : (optional) title displayed in browser's
|
||||
header bar; default="NWChem User Documentation"
|
||||
EOT2
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub make_manuals {
|
||||
local($out_dir,$tit)=@_;
|
||||
|
||||
$frames_index=<<EOT3;
|
||||
<html>
|
||||
<head>
|
||||
<title>$tit</title>
|
||||
<script>
|
||||
<!--
|
||||
window.name="something";
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
<frameset cols="300,*" border=1>
|
||||
<frame name="contents_frame" scrolling="yes" src="contents.html">
|
||||
<frame name="main" src="cover.html">
|
||||
</frameset>
|
||||
</html>
|
||||
EOT3
|
||||
|
||||
|
||||
$cover=`cat cover.html`;
|
||||
if ($cover=~/<body.*<\/body>/is) {
|
||||
$cover=$&;
|
||||
$cover=~s/<body/<body onLoad=\"show_contents()\"/i;
|
||||
}
|
||||
|
||||
$windows_index=<<EOT4;
|
||||
<html>
|
||||
<head>
|
||||
<title>$tit</title>
|
||||
<script>
|
||||
<!--
|
||||
var toolkit=java.awt.Toolkit.getDefaultToolkit();
|
||||
var screen_size=toolkit.getScreenSize();
|
||||
screen_h=screen_size.height;
|
||||
function show_contents() {
|
||||
win_features="toolbar=no,scrollbars=yes,status=no,dircetories=no,resizable=yes,width=300,height="+screen_h;
|
||||
contents=window.open
|
||||
("contents.html","contentsWin",win_features);
|
||||
}
|
||||
window.name="main";
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
$cover
|
||||
</html>
|
||||
EOT4
|
||||
|
||||
open(F,">$out_dir/index.html");
|
||||
print F $frames_index;
|
||||
close(F);
|
||||
|
||||
open(F,">$out_dir/windows_man.html");
|
||||
print F $windows_index;
|
||||
close(F);
|
||||
}
|
||||
|
|
@ -1,26 +1,29 @@
|
|||
\label{sec:ccsd}
|
||||
|
||||
{\bf Some corrections/additions still pending?}
|
||||
|
||||
\section{Background and Capabilities}
|
||||
|
||||
The NWChem coupled cluster module is primarily the work of Alistair
|
||||
Rendell and Rika Kobayashi, and is derived from the Titan parallel
|
||||
coupled cluster program.
|
||||
The NWChem coupled cluster energy module is primarily the work of
|
||||
Alistair Rendell and Rika Kobayashi, with contributions from David
|
||||
Bernholdt, and is derived from the Titan parallel coupled cluster
|
||||
program. The gradients program is the work of Kobayashi and
|
||||
Bernholdt, with contributions from Harrison.
|
||||
|
||||
The coupled cluster code can perform calculations with full iterative
|
||||
treatment of single and double excitations and non-iterative inclusion
|
||||
of triple excitation effects. It is presently limited to closed-shell
|
||||
(RHF) references. It is {\em not} presently possible to freeze core or
|
||||
virtual orbitals.
|
||||
|
||||
\section{Control Directives}
|
||||
(RHF) references.
|
||||
|
||||
The operation of the coupled cluster code is controlled by the input
|
||||
block
|
||||
\begin{verbatim}
|
||||
CCSD
|
||||
...
|
||||
[MAXITER <integer maxiter default 20>]
|
||||
[THRESH <real thresh default 10^-6>]
|
||||
[TOL2E <real tol2e default min(10^-12 , 0.01*$thresh$)>]
|
||||
[DIISBAS <integer diisbas default 5>]
|
||||
[FREEZE [[core] (atomic || <integer nfzc default 0>)] \
|
||||
[virtual <integer nfzv default 0>]]
|
||||
[IPRT <integer IPRT default 0>]
|
||||
[PRINT ...]
|
||||
[NOPRINT ...]
|
||||
END
|
||||
\end{verbatim}
|
||||
Note that the keyword \verb+CCSD+ is used for the input block
|
||||
|
|
@ -28,17 +31,17 @@ regardless of the actual level of theory desired (specified with the
|
|||
\verb+TASK+ directive). The following directives are recognized
|
||||
within the \verb+CCSD+ group.
|
||||
|
||||
\subsection{{\tt MAXITER} --- Maximum number of iterations}
|
||||
\section{{\tt MAXITER} --- Maximum number of iterations}
|
||||
|
||||
The maximum number of iterations is set to 20 by default. This should
|
||||
be quite enough for most calculations, although particularly
|
||||
troublesome cases may require an increase.
|
||||
troublesome cases may require more.
|
||||
|
||||
\begin{verbatim}
|
||||
MAXITER <integer maxiter default 20>
|
||||
\end{verbatim}
|
||||
|
||||
\subsection{{\tt THRESH} --- Convergence threshold}
|
||||
\section{{\tt THRESH} --- Convergence threshold}
|
||||
|
||||
Controls the convergence threshold for the iterative part of the
|
||||
calculation. Both the RMS error in the amplitudes {\em and} the
|
||||
|
|
@ -58,15 +61,15 @@ The variable \verb+tol2e+ is used in determining the integral
|
|||
screening threshold for the evaluation of the energy and related
|
||||
quantities.
|
||||
|
||||
{\em CAUTION! At the present time, the \verb+tol2e+ parameter only
|
||||
effects the three- and four-virtual contributions, and the triples,
|
||||
{\em CAUTION!} At the present time, the \verb+tol2e+ parameter only
|
||||
affects the three- and four-virtual contributions, and the triples,
|
||||
all of which are done ``on the fly''. The transformations
|
||||
used for the other parts of the code currently have a hard-wired
|
||||
threshold of $10^{-12}$. The default for \verb+tol2e+ is set to match
|
||||
this, and since user input can only make the threshold smaller,
|
||||
setting this parameter can only make calculations take longer.}
|
||||
setting this parameter can only make calculations take longer.
|
||||
|
||||
\subsection{{\tt DIISBAS} --- DIIS subspace dimension}
|
||||
\section{{\tt DIISBAS} --- DIIS subspace dimension}
|
||||
|
||||
Specifies the maximum size of the subspace used in DIIS convergence
|
||||
acceleration. Note that DIIS requires the amplitudes and errors be
|
||||
|
|
@ -82,7 +85,17 @@ storage are being considered, but have not yet been implemented.}
|
|||
DIISBAS <integer diisbas default 5>
|
||||
\end{verbatim}
|
||||
|
||||
\subsection{{\tt IPRT} --- Debug printing}
|
||||
\section{{\tt FREEZE} --- Freezing orbitals}
|
||||
|
||||
\begin{verbatim}
|
||||
[FREEZE [[core] (atomic || <integer nfzc default 0>)] \
|
||||
[virtual <integer nfzv default 0>]]
|
||||
\end{verbatim}
|
||||
|
||||
This directive is idential to that used in the MP2 module, Section
|
||||
\ref{mp2:core}.
|
||||
|
||||
\section{{\tt IPRT} --- Debug printing}
|
||||
|
||||
This directive controls the level of output from the code, mostly to
|
||||
facilitate debugging and the like. The larger the value, the more
|
||||
|
|
@ -93,7 +106,7 @@ values seem to be \verb+IPRT+ $>$ 5, 10, and 50.
|
|||
IPRT <integer IPRT default 0>
|
||||
\end{verbatim}
|
||||
|
||||
\subsection{PRINT and NOPRINT}
|
||||
\section{PRINT and NOPRINT}
|
||||
|
||||
The coupled cluster module supports the standard NWChem print control
|
||||
keywords, although very little in the code is actually hooked into
|
||||
|
|
|
|||
|
|
@ -1,39 +1,31 @@
|
|||
\label{sec:mcscf}
|
||||
|
||||
{\bf This is junk ... I'm reworking it.}
|
||||
|
||||
The NWChem multiconfiguration SCF (MCSCF) module can currently perform
|
||||
complete active space SCF (CASSCF) calculations with at most 20 active
|
||||
orbitals and about 500 basis functions.
|
||||
orbitals and about 500 basis functions. It planned to extend it to
|
||||
handle 1000+ basis functions.
|
||||
|
||||
\begin{verbatim}
|
||||
MCSCF
|
||||
STATE <string state>
|
||||
ACTIVE <integer nactive>
|
||||
|
||||
ACTELEC <integer nactelec>
|
||||
|
||||
MULTIPLICITY <integer multiplicity>
|
||||
|
||||
[SYMMETRY <integer symmetry default 1>]
|
||||
|
||||
[VECTORS [[input] <string input_file default $file_prefix$.movecs>]
|
||||
[swap <integer vec1 vec2> ...] \
|
||||
[output <string output_file default input_file>] \
|
||||
[lock]
|
||||
|
||||
[HESSIAN (exact||onel)]
|
||||
|
||||
[MAXITER <integer maxiter default 20>]
|
||||
|
||||
[THRESH <real thresh default 1.0e-4>]
|
||||
|
||||
[TOL2E <real tol2e default 1.0e-9>]
|
||||
|
||||
[LEVEL <real shift default 0.1d0>]
|
||||
END
|
||||
\end{verbatim}
|
||||
Note that the \verb+ACTIVE+, \verb+ACTELEC+, and \verb+MULTIPLICITY+
|
||||
directives are {\em required}.
|
||||
directives are {\em required}. The symmetry and multiplicity may
|
||||
alternatively be entered using the \verb+STATE+ directive.
|
||||
|
||||
\section{{\tt ACTIVE} --- Number of active orbitals}
|
||||
|
||||
|
|
@ -87,6 +79,21 @@ E.g., to specify a $B_1$ state when using the $C_{2v}$ group
|
|||
symmetry 3
|
||||
\end{verbatim}
|
||||
|
||||
\section{{\tt STATE} --- Symmetry and multiplicity}
|
||||
|
||||
The electronic state (spatial symmetry and multiplicity) may
|
||||
alternatively be specified using the conventional notation for an
|
||||
electronic state, such as $^3B_2$ for a triplet state of $B_2$
|
||||
symmetry. This would be accomplished with the input
|
||||
\begin{verbatim}
|
||||
state 3b2
|
||||
\end{verbatim}
|
||||
which is equivalent to
|
||||
\begin{verbatim}
|
||||
symmetry 4
|
||||
multiplicity 3
|
||||
\end{verbatim}
|
||||
|
||||
\section{{\tt VECTORS} --- Input/output of MO vectors}
|
||||
\label{sec:mcscfvectors}
|
||||
|
||||
|
|
@ -102,10 +109,14 @@ See Section \ref{sec:vectors} for an example.
|
|||
Output orbitals of a converged MCSCF calculation are canonicalized as
|
||||
follows:
|
||||
\begin{itemize}
|
||||
\item Doubly occupied and occupied orbitals diagonalize the
|
||||
corresponding blocks of an effective Fock operator.
|
||||
\item Active orbitals are chosen as natural orbitals by
|
||||
\item Doubly occupied and unoccupied orbitals diagonalize the
|
||||
corresponding blocks of an effective Fock operator. Note that in
|
||||
the case of degenerate orbital energies this does not fully
|
||||
determine the orbtials.
|
||||
\item Active-space orbitals are chosen as natural orbitals by
|
||||
diagonalization of the active space 1-particle density matrix.
|
||||
Note that in the case of degenerate occupations that this
|
||||
does not fully determine the orbitals.
|
||||
\end{itemize}
|
||||
|
||||
\section{{\tt HESSIAN} --- Select preconditioner}
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@
|
|||
\end{verbatim}
|
||||
|
||||
The following properties can be extracted from
|
||||
Hartree-Fock ( closed-shell RHF, open-shell ROHF,
|
||||
and open-shell UHF ) wavefunctions, as well as
|
||||
DFT ( closed-shell and open-shell spin unrestricted )
|
||||
Hartree-Fock (closed-shell RHF, open-shell ROHF,
|
||||
and open-shell UHF) wavefunctions, as well as
|
||||
DFT (closed-shell and open-shell spin unrestricted)
|
||||
wavefunctions.
|
||||
|
||||
\begin{itemize}
|
||||
|
|
|
|||
328
doc/user/scf.tex
328
doc/user/scf.tex
|
|
@ -117,9 +117,10 @@ For example, to disable use of symmetry in Fock matrix construction:
|
|||
|
||||
The default in the SCF module calculation is to force symmetry
|
||||
adaption of the molecular orbitals. This does not affect the speed of
|
||||
the calculation, but the resulting orbitals may be symmetry
|
||||
contaminated for some problems. This is especially likely if the
|
||||
calculation is started using orbitals from a distorted geometry.
|
||||
the calculation, but without explicit adaption the resulting orbitals
|
||||
may be symmetry contaminated for some problems. This is especially
|
||||
likely if the calculation is started using orbitals from a distorted
|
||||
geometry.
|
||||
|
||||
The underlying assumption in the use of symmetry in Fock matrix
|
||||
construction is that the density is totally symmetric. If the orbitals
|
||||
|
|
@ -147,7 +148,7 @@ typically much greater than this threshold.
|
|||
It is generally not necessary to set this parameter directly. Specify
|
||||
instead the required precision in the wavefunction, using the
|
||||
\verb+THRESH+ directive (Section \ref{sec:thresh}). The default
|
||||
threshold is the minimum of $10^{-7}$ and $0.01$ times the requested
|
||||
threshold is the minimum of $10^{-7}$ and 0.01 times the requested
|
||||
convergence threshold for the SCF calculation (Section
|
||||
\ref{sec:thresh}). This is suitable for nearly all purposes, though a
|
||||
more relaxed value of $10^{-6}$ might accelerate exploratory
|
||||
|
|
@ -167,7 +168,8 @@ directive is, for example:
|
|||
|
||||
\begin{verbatim}
|
||||
VECTORS [[input] (<string input_movecs default atomic>) || \
|
||||
(project <string basisname> <string filename>)] \
|
||||
(project <string basisname> <string filename>) || \
|
||||
(fragment <string file1> [<string file2> ...])] \
|
||||
[swap [alpha||beta] <integer vec1 vec2> ...] \
|
||||
[output <string output_filename default input_movecs>] \
|
||||
[lock]
|
||||
|
|
@ -198,6 +200,14 @@ source of the input molecular orbital vectors as any of the following:
|
|||
the geometry used for the previous calculations must have the atoms
|
||||
in the same order and in the same orientation as the current
|
||||
geometry.
|
||||
\item \verb+FRAGMENT file1 ...+ --- assembles starting MO vectors from
|
||||
previously performed calculations on fragments of the system and is
|
||||
described in more detail in Section \ref{sec:fragguess}. Even
|
||||
though there are some significant restrictions in the use of the
|
||||
initial implementation of this method (see Section
|
||||
\ref{sec:fragguess}), this is the most powerful initial guess option
|
||||
within the code. It is particularly indispensible for open shell
|
||||
metallic systems.
|
||||
\end{itemize}
|
||||
|
||||
The molecular orbitals are saved every iteration if more than 600
|
||||
|
|
@ -297,6 +307,314 @@ a case, the \verb+LOCK+ directive can be used to prevent the SCF
|
|||
calculation from changing the ordering, even if the orbital energies
|
||||
change.
|
||||
|
||||
\subsection{Superposition of fragment molecular orbitals}
|
||||
\label{sec:fragguess}
|
||||
|
||||
The fragment initial guess is particularly useful in the following
|
||||
instances:
|
||||
\begin{itemize}
|
||||
\item The system naturally decomposes into molecules that can be
|
||||
treated individually, e.g., a cluster.
|
||||
\item One or more fragments are particularly hard to converge and
|
||||
therefore much time can be saved by converging them independently.
|
||||
\item A fragment (e.g., a metal atom) must be prepared with a specific
|
||||
occupation. This can often be readily accomplished with a
|
||||
calculation on the fragment using dummy charges to model a ligand
|
||||
field.
|
||||
\item The atomic initial guess currently does not work correctly in
|
||||
the presence of ECPs. Independenly converging fragments with ECPs
|
||||
can save a lot of resources.
|
||||
\item The molecular occupation predicted by the atomic initial guess
|
||||
is often wrong for systems with heavy metals which may have
|
||||
partially occupied orbitals with lower energy than some doubly
|
||||
occupied orbitals. The fragment initial guess avoids this problem.
|
||||
\end{itemize}
|
||||
|
||||
\begin{verbatim}
|
||||
VECTORS [input] fragment <string file1> [<string file2> ...]
|
||||
\end{verbatim}
|
||||
The molecular orbitals are formed by superimposing the previously
|
||||
generated orbitals of fragments of the molecule being studied. These
|
||||
fragment molecular orbitals must be in the same basis as the current
|
||||
calculation. The input specifies the files containing the fragment
|
||||
molecular orbitals. For instance, in a calculation on the water
|
||||
dimer, one might specify
|
||||
\begin{verbatim}
|
||||
vectors fragment h2o1.movecs h2o2.movecs
|
||||
\end{verbatim}
|
||||
where \verb+h2o1.movecs+ contains the orbitals for the first fragment, and
|
||||
\verb+h2o2.movecs+ contains the orbitals for the second fragment.
|
||||
|
||||
A complete example of the input for a calculation on the water
|
||||
dimer using the fragment guess is as follows:
|
||||
\begin{verbatim}
|
||||
start dimer
|
||||
|
||||
title
|
||||
Water dimer SCF using fragment initial guess
|
||||
|
||||
geometry dimer
|
||||
O -0.595 1.165 -0.048
|
||||
H 0.110 1.812 -0.170
|
||||
H -1.452 1.598 -0.154
|
||||
O 0.724 -1.284 0.034
|
||||
H 0.175 -2.013 0.348
|
||||
H 0.177 -0.480 0.010
|
||||
end
|
||||
|
||||
geometry h2o1
|
||||
O -0.595 1.165 -0.048
|
||||
H 0.110 1.812 -0.170
|
||||
H -1.452 1.598 -0.154
|
||||
end
|
||||
|
||||
geometry h2o2
|
||||
O 0.724 -1.284 0.034
|
||||
H 0.175 -2.013 0.348
|
||||
H 0.177 -0.480 0.010
|
||||
end
|
||||
|
||||
basis
|
||||
o library 3-21g
|
||||
h library 3-21g
|
||||
end
|
||||
|
||||
set geometry h2o1
|
||||
scf; vectors input atomic output h2o1.movecs; end
|
||||
task scf
|
||||
|
||||
set geometry h2o2
|
||||
scf; vectors input atomic output h2o2.movecs; end
|
||||
task scf
|
||||
|
||||
set geometry dimer
|
||||
scf
|
||||
vectors input fragment h2o1.movecs h2o2.movecs \
|
||||
output dimer.movecs
|
||||
end
|
||||
task scf
|
||||
\end{verbatim}
|
||||
First, the geometry of the dimer and the two monomers are specified
|
||||
and given names. Then, after the basis specification, calculations
|
||||
are performed on the fragments by setting the geometry to the
|
||||
appropriate fragment (Section \ref{sec:set}) and redirecting the
|
||||
output molecular orbitals to an appropriately named file. Note also
|
||||
that use of the atomic initial guess is forced, since the default
|
||||
initial guess is to use any existing MOs which would not be
|
||||
appropriate for the second fragment calculation. Finally, the dimer
|
||||
calculation is performed by specifying the dimer geometry, indicating
|
||||
use of the fragment guess, and redirecting the output MOs.
|
||||
|
||||
The following points are important in using the fragment initial guess:
|
||||
\begin{enumerate}
|
||||
\item The fragment calculations must be in the same basis set as the
|
||||
full calculation.
|
||||
\item The order of atoms in the fragments and the order in which the
|
||||
fragment files are specified must be such that when the fragment
|
||||
basis sets are concatentated all the basis functions are in the same
|
||||
order as in the full system. This is readily accomplished by first
|
||||
generating the full geometry with atoms for each fragment
|
||||
contiguous, splitting this into numbered fragments and specifying
|
||||
the fragment MO files in the correct order on the \verb+VECTORS+
|
||||
directive.
|
||||
\item The occupation of orbitals is preserved when they are merged
|
||||
from the fragments to the full molecule and the resulting occupation
|
||||
must match the requested occupation for the full molecule. E.g., a
|
||||
triplet ROHF calculation must be comprised of fragments that have
|
||||
a total of exactly two open-shell orbtials.
|
||||
\item Because of these restrictions, it is not possible to introduce
|
||||
additional atoms (or basis functions) into fragments for the purpose
|
||||
of cleanly breaking real bonds. However, it is possible, and highly
|
||||
recommended, to introduce additional point charges to simulate the
|
||||
presence of other fragments.
|
||||
\item MO vectors of partially occupied or strongly polarized systems
|
||||
are very sensitive to orientation. While it is possible to specify
|
||||
the same fragment MO vector file multiple times in the
|
||||
\verb+VECTORS+ directive, it is usually much better to do a separate
|
||||
calculation for each fragment.
|
||||
\end{enumerate}
|
||||
|
||||
A more involved example is now presented. We wish to model the sextet
|
||||
state of Fe(III) complexed with water, imidazole and a heme with a net
|
||||
unit positive charge. The default atomic guess does not give the
|
||||
correct $d^5$ occupation for the metal and also gives an incorrect
|
||||
state for the double anion of the heme. The following performs
|
||||
calculations on the all of the fragments. Things to note are:
|
||||
\begin{enumerate}
|
||||
\item The use
|
||||
of a dummy $+2$ charge in the initial guess on the heme which in part
|
||||
simulates the presence of the metal ion, and also automatically forces
|
||||
an additional two electrons to be added to the system (the default net
|
||||
charge being zero).
|
||||
\item The iron fragment calculation (charge +3, $d^5$, sextet) will
|
||||
yield the correct open-shell occupation for the full system. If,
|
||||
instead, the {\it d}-orbitals were partially occupied (e.g., the doublet
|
||||
state) it would be useful to introduce dummy charges around the iron
|
||||
to model the ligand field and thereby lift the degeneracy to obtain
|
||||
the correct occupation.
|
||||
\item $C_s$ symmetry is used for all of the calculations. It is not
|
||||
necessary that the same symmetry be used in all of the
|
||||
calculations, provided that the order and orientation of the atoms
|
||||
is preserved.
|
||||
\item The \verb+unset scf:*+ directive is used immediately before
|
||||
the calculation on the full system so that the default name for the
|
||||
output MO vector file can be used, rather than having to specify it
|
||||
explicitly.
|
||||
\end{enumerate}
|
||||
\begin{verbatim}
|
||||
start heme6a1
|
||||
title ; heme-H2O (6A1) from M.Dupuis
|
||||
|
||||
############################################################
|
||||
# Define the geometry of the full system and the fragments #
|
||||
############################################################
|
||||
|
||||
geometry full-system
|
||||
symmetry cs
|
||||
|
||||
H 0.438 -0.002 4.549
|
||||
C 0.443 -0.001 3.457
|
||||
C 0.451 -1.251 2.828
|
||||
C 0.452 1.250 2.828
|
||||
H 0.455 2.652 4.586
|
||||
H 0.461 -2.649 4.586
|
||||
N1 0.455 -1.461 1.441
|
||||
N1 0.458 1.458 1.443
|
||||
C 0.460 2.530 3.505
|
||||
C 0.462 -2.530 3.506
|
||||
C 0.478 2.844 1.249
|
||||
C 0.478 3.510 2.534
|
||||
C 0.478 -2.848 1.248
|
||||
C 0.480 -3.513 2.536
|
||||
C 0.484 3.480 0.000
|
||||
C 0.485 -3.484 0.000
|
||||
H 0.489 4.590 2.664
|
||||
H 0.496 -4.592 2.669
|
||||
|
||||
H 0.498 4.573 0.000
|
||||
H 0.503 -4.577 0.000
|
||||
H -4.925 1.235 0.000
|
||||
H -4.729 -1.338 0.000
|
||||
C -3.987 0.685 0.000
|
||||
N -3.930 -0.703 0.000
|
||||
C -2.678 1.111 0.000
|
||||
C -2.622 -1.076 0.000
|
||||
H -2.284 2.126 0.000
|
||||
H -2.277 -2.108 0.000
|
||||
N -1.838 0.007 0.000
|
||||
|
||||
Fe 0.307 0.000 0.000
|
||||
|
||||
O 2.673 -0.009 0.000
|
||||
H 3.238 -0.804 0.000
|
||||
H 3.254 0.777 0.000
|
||||
end
|
||||
|
||||
geometry ring-only
|
||||
symmetry cs
|
||||
H 0.438 -0.002 4.549
|
||||
C 0.443 -0.001 3.457
|
||||
C 0.451 -1.251 2.828
|
||||
C 0.452 1.250 2.828
|
||||
H 0.455 2.652 4.586
|
||||
H 0.461 -2.649 4.586
|
||||
N1 0.455 -1.461 1.441
|
||||
N1 0.458 1.458 1.443
|
||||
C 0.460 2.530 3.505
|
||||
C 0.462 -2.530 3.506
|
||||
C 0.478 2.844 1.249
|
||||
C 0.478 3.510 2.534
|
||||
C 0.478 -2.848 1.248
|
||||
C 0.480 -3.513 2.536
|
||||
C 0.484 3.480 0.000
|
||||
C 0.485 -3.484 0.000
|
||||
H 0.489 4.590 2.664
|
||||
H 0.496 -4.592 2.669
|
||||
|
||||
Bq 0.307 0.0 0.0 charge 2 # simulate the iron
|
||||
end
|
||||
|
||||
geometry imid-only
|
||||
symmetry cs
|
||||
H 0.498 4.573 0.000
|
||||
H 0.503 -4.577 0.000
|
||||
H -4.925 1.235 0.000
|
||||
H -4.729 -1.338 0.000
|
||||
C -3.987 0.685 0.000
|
||||
N -3.930 -0.703 0.000
|
||||
C -2.678 1.111 0.000
|
||||
C -2.622 -1.076 0.000
|
||||
H -2.284 2.126 0.000
|
||||
H -2.277 -2.108 0.000
|
||||
N -1.838 0.007 0.000
|
||||
end
|
||||
|
||||
geometry fe-only
|
||||
symmetry cs
|
||||
Fe .307 0.000 0.000
|
||||
end
|
||||
|
||||
geometry water-only
|
||||
symmetry cs
|
||||
O 2.673 -0.009 0.000
|
||||
H 3.238 -0.804 0.000
|
||||
H 3.254 0.777 0.000
|
||||
end
|
||||
|
||||
############################
|
||||
# Basis set for everything #
|
||||
############################
|
||||
|
||||
basis nosegment
|
||||
O library 6-31g*
|
||||
N library 6-31g*
|
||||
C library 6-31g*
|
||||
H library 6-31g*
|
||||
Fe library "Ahlrichs pVDZ"
|
||||
end
|
||||
|
||||
##########################################################
|
||||
# SCF on the fragments for initial guess for full system #
|
||||
##########################################################
|
||||
|
||||
scf; thresh 1e-2; end
|
||||
|
||||
set geometry ring-only
|
||||
scf; vectors atomic swap 80 81 output ring.mo; end
|
||||
task scf
|
||||
|
||||
set geometry water-only
|
||||
scf; vectors atomic output water.mo; end
|
||||
task scf
|
||||
|
||||
set geometry imid-only
|
||||
scf; vectors atomic output imid.mo; end
|
||||
task scf
|
||||
|
||||
charge 3
|
||||
set geometry fe-only
|
||||
scf; sextet; vectors atomic output fe.mo; end
|
||||
task scf
|
||||
|
||||
##########################
|
||||
# SCF on the full system #
|
||||
##########################
|
||||
|
||||
unset scf:* # This restores the defaults
|
||||
|
||||
charge 1
|
||||
|
||||
set geometry full-system
|
||||
|
||||
scf
|
||||
sextet
|
||||
vectors fragment ring.mo imid.mo fe.mo water.mo
|
||||
maxiter 50
|
||||
end
|
||||
|
||||
task scf
|
||||
\end{verbatim}
|
||||
|
||||
\subsection{Atomic guess orbitals with charged atoms}
|
||||
\label{sec:atomscf}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
% $Id: user.tex,v 1.25 1997-06-20 14:19:26 d3g681 Exp $
|
||||
% $Id: user.tex,v 1.26 1997-07-30 02:04:00 d3g681 Exp $
|
||||
|
||||
\documentstyle[fullpage,12pt,fleqn]{book}
|
||||
\setlength{\parskip}{6pt}
|
||||
|
|
@ -69,8 +69,8 @@
|
|||
\chapter{Coupled Cluster Calculations}
|
||||
\input{ccsd.tex}
|
||||
|
||||
\chapter{Four-Index Transformation}
|
||||
\input{fourindex}
|
||||
%\chapter{Four-Index Transformation}
|
||||
%\input{fourindex}
|
||||
|
||||
%%\chapter{Plane-wave periodic DFT}
|
||||
%%\input{plnwv.tex}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue