Skip to content
Snippets Groups Projects
Commit ece3e359 authored by Marie bernadette Lepetit's avatar Marie bernadette Lepetit
Browse files

Merge branch 'dev/guess' of https://code.ill.fr/relaxse/relaxse-code into dev/guess

parents a740c742 56662f4b
No related branches found
No related tags found
2 merge requests!16Remove the reordering of the vectors when convergence is not reached,!15Possibility to increase the number of vectors to be computed
Pipeline #24245 passed
The {\sass} code~\cite{p:relaxse}
does a fully-decontracted Multirefrence Configuration
does a fully-decontracted Multireference Configuration
Interaction (MRCI) calculation using one of the following methods
\begin{itemize}
\item {\bf SAS+S~:} single excitations on all determinants of a reference
......@@ -17,15 +17,15 @@ Interaction (MRCI) calculation using one of the following methods
\item {\bf MRSCI~:} single excitations on all determinants of a selected reference space
(included into a formal Complete Active Space);
\item {\bf MRSDCI~:} single and double excitations on aall determinants of selected reference space
\item {\bf MRSDCI~:} single and double excitations on all determinants of a selected reference space
(included into a formal Complete Active Space);
\item {\bf CAS+S~:} single excitations on all determinants of a Complete
Active Space;
\item {\bf CAS+SD~:} single and double excitations on all determinants of a
Complete Active Space;
\item {\bf CAS+DDCI~:} single and double excitations from the Difference
Dedicated Configuration Interaction space~\cite{DDCI1992,DDCI1995,DDCI1997}, on all determinants of a
Complete Active Space.
\item {\bf CAS+DDCI~:} selected single and double excitations on all determinants of a
Complete Active Space, as defined in the Difference
Dedicated Configuration Interaction space~\cite{DDCI1992,DDCI1995,DDCI1997},
\end{itemize}
......@@ -33,32 +33,32 @@ Interaction (MRCI) calculation using one of the following methods
\subsection{The orbital classes}
The code uses a partition of the orbital set into 7 different types
\begin{description}
\item[FROZEN]~: (keywork NOrb\_gel) doubly-occupied orbitals that are frozen in the
\item[FROZEN]~: (keyword NOrb\_gel) doubly-occupied orbitals that are frozen in the
calculation. In the present version this number should be the same as in
motra.
\item[OCCUPIED]~: (keywork NOrb\_occ) doubly-occupied orbitals from which only one hole can be created in the calculation.
\item[LIGO]~: (keywork NOrb\_ligo) doubly-occupied orbitals from which two holes can be created in the calculation.
\item[OCCUPIED]~: (keyword NOrb\_occ) doubly-occupied orbitals from which only one hole can be created in the calculation.
\item[LIGO]~: (keyword NOrb\_ligo) doubly-occupied orbitals from which two holes can be created in the calculation.
These orbitals are typically the occupied ligand orbitals bridging the magnetic interactions.
\item[ACTIVE]~: (keywork NOrb\_act) active orbitals. When the CAS keywork is
\item[ACTIVE]~: (keyword NOrb\_act) active orbitals. When the CAS keyword is
given the the METHOD the whole Complete Active Space is generated. When the
SAS keywork is given the the METHOD only a selection of determinants within the CAS is generated~:
SAS keyword is given the the METHOD only a selection of determinants within the CAS is generated~:
\begin{itemize}
\item all determinants required for building the $S^2,\, S_z$ spin configurations associated with each configuration provided in Ref0,
\item all single excitations within the CAS on each configuration provided
in Ref0, and their associated determinants required for the associated $S^2,\, S_z$
spin configurations.
\end{itemize}
\item[LIGV]~: (keywork NOrb\_ligv) virtual orbitals on which two particules can be created in the calculation.
\item[LIGV]~: (keyword NOrb\_ligv) virtual orbitals on which two particles can be created in the calculation.
These orbitals are typically the virtual ligand orbitals bridging the magnetic interactions.
\item[VIRTUAL]~: (keywork NOrb\_virt) virtual orbitals on which one particule can be created in the calculation.
\item[DELETED]~: (keywork NOrb\_del) virtual orbitals deleted in the
\item[VIRTUAL]~: (keyword NOrb\_virt) virtual orbitals on which one particle can be created in the calculation.
\item[DELETED]~: (keyword NOrb\_del) virtual orbitals deleted in the
calculation. In the present version this number should be the same as in
motra.
\end{description}
\subsection{The different methods}
The different types of calculations can be done with a proper combination the
the keyword METHOD (ACS or SAS + DDCI or S) and the setting of the different class of orbitals.
The different types of calculations can be done with a proper combination
the keyword METHOD (CAS or SAS + S, DDCI or SD) and the setting of the different class of orbitals.
For instance \\[2ex]
\begin{tabular}{l|l|ccccccc}
\hline \hline
......@@ -88,8 +88,8 @@ For instance \\[2ex]
\end{tabular}
\subsection{The determinant classes}
The \sass\ code partition the determinants into 9 classes, defined from the
number of holes in the OCCUPPIED or LIGO and the number of particules in the LIGV or VIRTUAL classes of orbitals.
The \sass\ code partitions the determinants into 9 classes, defined from the
number of holes in the OCCUPIED or LIGO and the number of particles in the LIGV or VIRTUAL classes of orbitals.
{\small
\begin{minipage}[t]{0.490\linewidth}
......@@ -107,7 +107,7 @@ $D_{00}$ & 0 & 0 & n & 0 & 0 \\
& 1 & 0 & n & 0 & 1 \\
\hline
%
\multirow{4}{*}{$D_0^2$} & 0 & 2 & n & 2 & 0 \\
\multirow{4}{*}{$D_{02}$} & 0 & 2 & n & 2 & 0 \\
& 0 & 2 & n & 1 & 1 \\
& 1 & 1 & n & 2 & 0 \\
& 1 & 1 & n & 1 & 1 \\
......
......@@ -2,13 +2,13 @@
The files required by the \sass code are the following.
\begin{filelist}
\item[INPUT]~: the input file
\item[prefix.ref0]: the {\sc ref0} short list of determinants. From each
determinant in \file{prefix.ref0} all other determinants to get the desired
spin configurations will be generated.
\item[prefix.ref0]: the {\sc ref0} short list of determinants. Only one
determinant per spin configuration is needed. All the other determinants to
get the desired spin configurations will be automatically generated to get the complete Ref0.
\item[prefix.TraOne]: the \file{TraOne} frile issued from \program{motra}.
\item[prefix.TraInt]: the \file{TraInt} frile issued from \program{motra}.
\item[prefix.restart]: (optional) the wave-function file for restarts.
\devonly{ \item[prefix.mat]: (optional) the Hamiltonian matrix for lreadHmat = .true..}
\item[prefix.guess]: (optional) the wave-function file from a previous
calculation for a restart.
\end{filelist}
......@@ -17,11 +17,11 @@ The files required by the \sass code are the following.
The files generated by the code are
\begin{filelist}
\item[prefix.out]: the output file.
\item[prefix.det]: (optional) the list of determinants in human readible
\item[prefix.det]: (optional) the list of determinants in human readable
format.
\item[prefix.bdet]: the list of determinants in binary format.
\item[prefix.sass]: sass information file.
\item[prefix.restart]: the wave-function file for restarts.
\item[prefix.restart]: the wave-function file.
\devonly{ \item[prefix.mat]: (optional, if --nogen and --build-type=Debug) the Hamiltonian matrix.
\item[prefix.mat2]: (optional, if --nogen and --build-type=Debug)) the Hamiltonian matrix (i, j
elm(i,j) format
......@@ -55,37 +55,74 @@ The required namelists are the following ones \vspace*{-2.5ex}
\end{itemize}
\begin{description} \itemsep 3ex
\item[SassInp]~: dedicated to general informations.
\item[SassInp]~: dedicated to general information.
\begin{keywordlist}
\item[prefix]: prefix for all code files except \file{INPUT}.
\item[prefix]: prefix for all code files except \file{INPUT}.
\item[print\_det]: (optional, default \ftncode{.false.}) to print the
determinants list in \file{prefix.det}.
\item[iprint]: (optional, default \ftncode{0}) printinng options.
\item[iprint]: (optional, default \ftncode{0}) printing options.
\begin{itemize}
\item \ftncode{0}: no debug print
\item \ftncode{1}: print individual block timings
\item \ftncode{2}: print the Fock matrix
\end{itemize}
\item[method]: (optional, default \ftncode{SAS+S}) method for determinant generation.
The keyword \keyword{method} is compose of two parts. The fist part can be
\begin{itemize}
\item \keyword{SAS+S} : SASS method.
\item \keyword{CAS+S} : complete active space + single excitations on all
determinants of the CAS.
\item \keyword{CAS+SD} : complete active space + single and double excitations on all
determinants of the CAS.
\item \keyword{CAS+DDCI} : complete active space + single and double
excitations belonging to the difference dedicated configuration
interaction method.
\item \keyword{SAS}~: for a selection of spin configurations in the Ref0,
\item \keyword{CAS}~: for a complete CAS in the Ref0.
\end{itemize}
and the second part that can be
\begin{itemize}
\item \keyword{+S} for single excitations on top of the reference
determinants. The occupied orbitals should be in the \ftncode{Occ} and the
virtual one in the \ftncode{Virt} classes.
\item \keyword{+SD} for single and double excitations on top of the
reference determinant. Note that the occupied orbitals should be in the
\ftncode{Ligo} and the virtual one in the \ftncode{Ligv} classes.
\item \keyword{+DDCI} for a selection of the single and double excitations
(according to the DDCI method) on top of the reference determinant. Note
that the occupied orbitals should be in the \ftncode{Ligo} and the virtual
one in the \ftncode{Ligv} classes.
\end{itemize}
\begin{itemize}
% \item \keyword{SAS+S} : SASS method.
% \item \keyword{CAS+S} : complete active space + single excitations on all
% determinants of the CAS.
% \item \keyword{CAS+SD} : complete active space + single and double excitations on all
% determinants of the CAS.
% \item \keyword{CAS+DDCI} : complete active space + single and double
% excitations belonging to the difference dedicated configuration
% interaction method.
\end{itemize}
\item[sizebatch] : (optional, default \ftncode{40}) size of blocks for MPI
calculations. Recommended size for large calculations~= \ftncode{number of OpenMP threads}.
calculations. Recommended size for large calculations~= \ftncode{number of OpenMP threads}.
\item[restart] : (optional, default \ftncode{.false.}) to restart a
calculation from a previous job, file \file{prefix.restart} from the old
calculation needs to be present. Carefull the \file{prefix.restart} file
is overwritten.
calculation from a previous job. The keyword \keyword{method}, the spin
state and the setting of the orbitals in the different classes should be
identical between the two calculations. The file \file{prefix.restart}
from the old
calculation should be provided as \file{prefix.guess}. \\
Note that the number of required vectors does not need to be identical
between the two calculations.\\
This option can be used either to converge unconverged vectors (or
converge them to a higher accuracy, see \keyword{nconv} keyword below), or
to require a larger number of vectors. Only the vectors reputed as not
converged will be converged ( see \keyword{nconv} keyword below). \\
%
\devonly{ \item[prefix.mat]:
(optional) the Hamiltonian matrix for lreadHmat = .true..}
\item[mem\_reduction] : (optional, default \ftncode{.false.}) turn on/off the
memory reduction which saves intermediate vectors to disk and compute the
pair of off-diagonal blocs independently to save memory. Gives a 30-40\%
memory reduction which computes the
pair of off-diagonal blocks independently to save memory. Gives a 30-40\%
gain in memory at the cost of an increased CPU time.
\devonly{
......@@ -104,7 +141,7 @@ The required namelists are the following ones \vspace*{-2.5ex}
\devonly{
\item[lreadHmat] : ( optional, default \ftncode{.false.}) Read
the Hamiltonian matrice on disk -- to be used with
the Hamiltonian matrix on disk -- to be used with
\ftncode{lexplicitHmat} to compare both matrices.}
\devonly{
......@@ -130,7 +167,7 @@ The required namelists are the following ones \vspace*{-2.5ex}
}
\end{keywordlist}
Typical exemple.
Typical example.
\begin{shell}
&sassinp
prefix="cuo",
......@@ -139,18 +176,19 @@ The required namelists are the following ones \vspace*{-2.5ex}
&end
\end{shell}
\bigskip
\item[InfoMolcasInp]~: dedicated to provide informations on group symmetry,
\item[InfoMolcasInp]~: dedicated to provide information on group symmetry,
usually contained in the \program{molcas} \file{RunFile}.
\begin{keywordlist}
\item[NIrrep]: number of irreducible representations in the symmetry
group.
group. As symmetry is not yet implemented it should be 1.
\item[Ntot]: total number of orbitals.
\item[iIrTb]: group multiplication table.
\item[iChTb]: group character table.
\item[iIrTb]: group multiplication table. As symmetry is not yet implemented it should be 1.
\item[iChTb]: group character table. As symmetry is not yet implemented it should be 1.
\end{keywordlist}
Typical exemple.
Typical example as follows.
\begin{shell}
&infomolcasinp
nirrep=1,
......@@ -160,7 +198,7 @@ The required namelists are the following ones \vspace*{-2.5ex}
&end
\end{shell}
\bigskip
\item[OrbInp]~: dedicated to orbitals information.
\begin{keywordlist}
......@@ -172,7 +210,7 @@ The required namelists are the following ones \vspace*{-2.5ex}
\item[Norb\_virt]: vector, number of virtual orbitals.
\item[NOrb\_del]: vector, number of deleted orbitals.
\end{keywordlist}
Typical exemple.
Typical example.
\begin{shell}
&orbinp
norb_gel = 2,
......@@ -186,20 +224,23 @@ The required namelists are the following ones \vspace*{-2.5ex}
\end{shell}
\bigskip
\item[VecInp]~: dedicated to information on the seaked vectors.
\item[VecInp]~: dedicated to information on the sought vectors.
\begin{keywordlist}
\item[NRef0]: number of {\sc ref0} determinants to be read in \file{prefix.ref0}.
\item[NElact]: number of active/magnetic electrons.
\item[NVec]: number of desired eigenstates.
\item[Stot]: $2S+1$, $S$ spin of the seaked states (default
\item[NConv]: (only when the keyword \keyword{restart} is set. Optional,
Default read in \file{prefix.guess} file) Defines the number of vectors
reputed to be converged. Overwrites the value read in \file{prefix.guess}.
\item[Stot]: $2S+1$, $S$ spin of the sought states (default
\keyword{stot}=1). Used only to generate the complete {\sc ref0} determinants list.
\item[Sz]: $2S_z$, the spin sector in wich the diagonalisation takes place.
\item[Sz]: $2S_z$, the spin sector in which the diagonalisation takes place.
\item[vec\_irrep]: (default 1) the irreducible representation of the
seaked vectors.
sought vectors. As symmetry is not yet implemented it should be 1.
\end{keywordlist}
Typical exemple.
Typical example.
\begin{shell}
&vecinp
stot=1,
......@@ -211,6 +252,8 @@ The required namelists are the following ones \vspace*{-2.5ex}
&end
\end{shell}
\bigskip
\item[DavidInp]~: (experts) dedicated to the Davidson procedure fine tuning.
\begin{keywordlist}
......@@ -225,7 +268,7 @@ The required namelists are the following ones \vspace*{-2.5ex}
\item[tol\_norm]: (optional, default \ftncode{$10^{-15}$}) normalisation maximum error.
\item[tol\_conv]: (optional, default \ftncode{$10^{-8}$}) convergence criterium (energy
equivalent).
\item[iter0]: (optional, default \ftncode{0}) last iteration number of the previous
\item[iter0]: (optional, default \ftncode{0}) number of the last iteration of the previous
run in case of a restart.
\item[conv\_ener]: (optional, default \ftncode{.false.}) activate the convergence on
energy in addition to vectors.
......@@ -235,12 +278,17 @@ The required namelists are the following ones \vspace*{-2.5ex}
and in \file{fort.666})
}
\end{keywordlist}
Typical exemple.
Typical example.
\begin{shell}
&davidinp
&end
\end{shell}
\bigskip
\item[PropInp]~: should be present for the \file{prefix.sass} and
\file{prefix.bdet} files (needed for the properties \program{prop} code) to
be printed. See the \program{PROP} input section.
\end{description}
......@@ -254,3 +302,4 @@ The required namelists are the following ones \vspace*{-2.5ex}
%%% mode: latex
%%% TeX-master: "user_manual"
%%% End:
The \program{\prop} computes properties from the wave functions issued from the
The \program{\prop} code computes properties from the wave functions issued from the
\program{\sass} code.
It always prints out the projection of the \program{\sass} wave functions on
the CAS.
the reference determinants.
This is presently the only property implemented.
%This is presently the only property implemented.
\subsection{Input files}
The files required by the \program{\prop} code are the following.
......@@ -28,7 +28,7 @@ The files generated by the code are
\subsection{The \file{INPUT} File }
This file is divided in several Fortran namelists. The same namelists as for
the \program{\sass} calculation and an additinal namelist specific for properties
the \program{\sass} calculation and an additional namelist specific for properties
calculations.
\begin{description} \itemsep 3ex
......@@ -70,7 +70,7 @@ calculations.
on the Ref1 space \\
\keyword{lcoef}: printing of the \program{\sass} wave functions
coefficients larger than 0.05. \\
\keyword{dens2}: two-particules density matrix calculation.
\keyword{dens2}: two-particles density matrix calculation.
}
\item[seuilcoef]: threshold on the coefficients
......
......@@ -7,19 +7,19 @@ $D_{\text{Nel}}^{\text{Nexc}}$, where \verb|Nel| is the number of additional
electrons in the active part with respect to the {\sc Ref0} configurations,
and \verb|Nexc| is the number of additional excitations outside of the active
space. The \program{\sass} code has both MPI and OpenMP parallelization
driven both by integral and determinant blocks. The MPI parallelisation is
done on the pair integral-kind~/~determinant-block. When the determinant
blocks are very large, it is possible to divide the calculation into smaller
driven both by integral, determinant blocks and spin cases. The MPI parallelization is
done on the pair integral-kind~/~determinant-block/spin-case. When the determinant
blocks/spin-cases are very large, it is possible to divide the calculation into smaller
MPI parts by batching the determinants. However, the gain is not systematic as
the integrals are read from disk for each MPI process and the overhead can be
large.
Within each MPI process an OpenMP parallelisation is done on the outer particle or
Within each MPI process an OpenMP parallelization is done on the outer particle or
hole loop.
For an optimal use of the code the user should adjust the number of MPI
precesses, OpenMP threads and the size of the batches according to her/his
processes, OpenMP threads and the size of the batches according to her/his
problem and computer system. In order to guide the user for such choices we provide below
performance testing for the most typical cases. These data are taken from ref.~\cite{p:relaxse}.
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment