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