1%
2% $Id$
3%
4\label{sec:fourindex}
5
6{\bf THIS SECTION IS BEING REWRITTEN}
7
8%{\bf ????????????????????}
9%\Large
10%**What does this module really do?  Is it invoked by any module other than
11%DIRECT\_MP2?
12%\normalsize
13%
14%%  The four-index transformation module is not designed for explicit
15%% invocation but rather as a utility module for other tasks (e.g. direct
16%% MP2 section \ref{sec:mp2}). However, there are input parameters which
17%% may be set to modify the default behavior of the four-index
18%% transformation module which may enhance performance.
19%
20%The four-index transformation module is a utility invoked by the fully
21%direct MP2 module (see Section \ref{sec:mp2}).  For most applications,
22%the default parameters for the four-index transformation will be adequate,
23%but in some instances, the user may wish to enhance the performance of
24%the module.  This can be done by specifying \verb+SET+ directives for
25%selected parameters.  The following sections describe the options
26%currently available for this module.
27%
28%\section{Algorithm for the Four-Index Transformation}
29%
30%The code currently contains two algorithms for the four-index transformation.
31%The algorithm to use for a given calculation can be selected by specifying
32%a \verb+SET+ directive of the form,
33%
34%\begin{verbatim}
35% set "fourindex:method" <string method default twofold>
36%\end{verbatim}
37%
38%% There is a choice of two algorithms for effecting the transformation.
39%The default entry for the string \verb+method+ is \verb+twofold+, which
40%specifies ***what?***.  This option should be used in almost all instances.
41%However, in cases of high orders of parallelism (i.e., more than 200 nodes),
42% better throughput may be obtained with the alternative algorithm,
43%obtained by setting \verb+method+ to \verb+sixfold+.
44%
45%\section{AO Integral Blocking and Block Length for the Four-Index Transformation}
46%
47%The default in the four-index transformation is to have no blocking in
48%the AO integral generation.  Blocking can be specified explicitly using a
49%\verb+SET+ directive of the form,
50%
51%\begin{verbatim}
52% set "fourindex:aoblock" <logical aoblock default .false.>
53%\end{verbatim}
54%
55%Entering a value of \verb+.true.+ for the logical variable \verb+aoblock+
56%enables blocking in the AO integral generation. This may result in
57%substantial performance enhancement in cases with many identical
58%atoms and basis sets.
59%
60%The default is 10 for the vector length in the critical first index
61%transformation of the four-index transformation algorithm.  The user has
62%the option of specifying the vector length explicitly by entering a
63%\verb+SET+ directive of the form,
64%
65%\begin{verbatim}
66% set "fourindex:blocklength" <integer blocklength default 10>
67%\end{verbatim}
68%
69%% This parameter determines the vector length in the critical first
70%% index transformation.
71%
72%For larger basis sets, it may be profitable to increase the vector
73%length by specifying a value larger than 10 for the integer variable
74%\verb+blocklength+.  However, this value should {\em
75%  not} exceed $N_{bf} / 3$, since the cost of the redundant computation
76%in the square matrix multiplication would in that case exceed the
77%gain from a longer vector length.
78%
79%\Large
80%***What is $N_{bf} / 3$?
81%\normalsize
82%
83%\section{Frozen orbitals for the Four-Index Transformation}
84%
85%In most cases, the frozen orbitals will be specified by the input for the
86%MP2 calculation (or calculation in some other module???) that invokes the
87%four-index transformation module.  However, the user can specify frozen
88%orbitals separately for the four-index transformation, using \verb+SET+
89%directives of the form,
90%
91%\begin{verbatim}
92% set "fourindex:occ_frozen" \
93%      <integer frozen_occupied default 0>
94% set "fourindex:vir_frozen" \
95%      <integer frozen_virtual default 0>
96%\end{verbatim}
97%
98%The value specified for the integer variable \verb+frozen_occupied+
99%designates the lowest frozen occupied orbital.  The value specified
100%for the integer variable \verb+frozen_virtual+ designates the highest
101%virtual frozen orbital.  The default is zero for both of these variables,
102%which specifies no additional frozen orbitals for the four-index
103%transformation module.
104%
105%% Setting these parameters
106%% should not be required in the usual circumstances since these are
107%% determined by the calling modules, (see section \ref{sec:mp2}).
108%
109%
110%
111