diff --git a/doc/code.tex b/doc/code.tex new file mode 100644 index 0000000000000000000000000000000000000000..7c35bf1e4f2deb92e1fff9c5467e9c1a82e7051c --- /dev/null +++ b/doc/code.tex @@ -0,0 +1,41 @@ +The {\sass} code%~\cite{p:relaxse} +does a fully-decontracted Multirefrence Configuration +Interaction (MRCI) calculation using one of the following methods +\begin{itemize} +\item {\bf SAS+S~:} single excitations on all determinants of a reference + space built as in the SAS+S method~\cite{p:SASS}, that is + \begin{itemize} + \item a selected set of determinants (included into a formal Complete + Active Space), denoted as {\sc ref0}, + \item all CAS$\,\rightarrow\,$CAS single excitations from all {\sc ref0} determinants, + \item all LIGO$\,\rightarrow\,$CAS single excitations from all {\sc ref0} determinants, + \item all CAS$\,\rightarrow\,$LIGV single excitations from all {\sc ref0} + determinants, + \item all LIGO$\,\rightarrow\,$LIGV single excitations from all {\sc ref0} determinants, + \end{itemize} + + +\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 + (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. + + +\end{itemize} + + + + +%%% Local Variables: +%%% coding: utf-8-unix +%%% mode: latex +%%% TeX-master: "user_manual" +%%% End: + diff --git a/doc/cpu.pdf b/doc/cpu.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c8477cec1bb922c4165889b6e81af73280aa4792 Binary files /dev/null and b/doc/cpu.pdf differ diff --git a/doc/epciso.sty b/doc/epciso.sty new file mode 100644 index 0000000000000000000000000000000000000000..196a071887f69110de2fc0bc24e2f5c340c7e37c --- /dev/null +++ b/doc/epciso.sty @@ -0,0 +1,248 @@ +%=============================================================================== +% LaTeX style file for EPCISO documents, September 1996 +%=============================================================================== +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{epciso}[2004/11/20] +\RequirePackage[french,english]{babel} +\RequirePackage{times} +\RequirePackage{longtable} +\RequirePackage[pdftex, + colorlinks=true, + urlcolor=rltblue, % \href{...}{...} + anchorcolor=rltbrightblue, + filecolor=rltgreen, % \href*{...} + linkcolor=rltred, % \ref{...} and \pageref{...} + menucolor=darkblue, + citecolor=rltbrightblue, + pagebackref, + pdfstartview=FitH, + pdfpagemode=UseOutlines, % None, UseThumbs or UseOutlines + bookmarks, + bookmarksopen]{hyperref} +\RequirePackage[pdftex]{graphicx} +\RequirePackage[pdftex]{color} +\definecolor{rltbrightred}{rgb}{1,0,0} +\definecolor{rltred}{rgb}{0.75,0,0} +\definecolor{rltdarkred}{rgb}{0.5,0,0} +%------------------------- +% Bibliography as footnote +%------------------------- +%\RequirePackage{footbib} +%\let\cite\footcite +%\let\bibliography\footbibliography +%\let\bibliographystyle\footbibliographystyle +%------------------------------------------------------------------------------- +% horisontal +\setlength\oddsidemargin {5mm} +\setlength\evensidemargin {0mm} +\setlength\textwidth {\paperwidth} +\addtolength\textwidth {-2in} +\addtolength\textwidth {-\oddsidemargin} +% vertical +\setlength\topmargin {0mm} +%\setlength\headheight {0mm} +%\setlength\headsep {0mm} +%\setlength\topskip {0mm} +%\setlength\footskip {0mm} +%\setlength\footheight {0mm} +\setlength\textheight {\paperheight} +\addtolength\textheight {-2in} +\addtolength\textheight {-\topmargin} +\addtolength\textheight {-\headheight} +\addtolength\textheight {-\headsep} +%\addtolength\textheight {-\footskip} +%------------------------------------------------------------------------------- +\hyphenation{cas-scf} +\hyphenation{ras-scf} +%------------------------------------------------------------------------------- +\parindent 0pt +\parskip .7em plus 2pt minus 2pt +\renewcommand{\thefootnote}{\fnsymbol{footnote}} +\def\@chapapp{Manuel du programme} +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{1} +\raggedbottom +%------------------------------------------------------------------------------- +\ifcase\@ptsize + \font\inputfont=cmtt9 + \font\sourcefont=cmtex9 + \font\keyfont=cmcsc10 + \font\cmndfont=cmss10 + \font\prgmfont=cmtt10 + \font\filefont=cmsltt10 + \font\varfont=cmr10 + \font\ftnfont=cmss10 +\or + \font\inputfont=cmtt9 + \font\sourcefont=cmtex9 + \font\keyfont=cmcsc10 scaled \magstephalf + \font\cmndfont=cmss10 scaled \magstephalf + \font\prgmfont=cmtt10 scaled \magstephalf + \font\filefont=cmsltt10 scaled \magstephalf + \font\varfont=cmr10 scaled \magstephalf + \font\ftnfont=cmss10 scaled \magstephalf +\or + \font\inputfont=cmtt9 scaled \magstephalf + \font\sourcefont=cmtex9 scaled \magstephalf + \font\keyfont=cmcsc10 scaled \magstep1 + \font\cmndfont=cmss10 scaled \magstep1 + \font\prgmfont=cmtt10 scaled \magstep1 + \font\filefont=cmsltt10 scaled \magstep1 + \font\varfont=cmr10 scaled \magstep1 + \font\ftnfont=cmss10 scaled \magstep1 +\fi +%------------------------------------------------------------------------------- +%\def\logo[#1]{{\includegraphics[width=#1]{logo}}} +\def\namelist#1{\fbox{\inputfont\obeyspaces\catcode`\_=11\catcode`\&=11 #1}} +%\def\epciso{$\cal EPCISO$} +\def\epcisothis{\epciso\hbox{.\version}} +\def\epcisoi{\epciso\hbox{-1}} +\def\epcisoii{\epciso\hbox{-2}} +\def\epcisoiii{\epciso\hbox{-3}} +\def\epcisoiv{\epciso\hbox{-4}} +\def\epcisov{\epciso\hbox{-5}} +\def\epcisovi{\epciso\hbox{-6}} +\def\epcisovii{\epciso\hbox{-7}} +\def\epcisoviii{\epciso\hbox{-8}} +\def\epcisoxi{\epciso\hbox{-9}} + +\def\keyword#1{{\keyfont #1}} +\def\program#1{{\tt\uppercase{#1}}} +\def\command#1{{\cmndfont #1}} +\def\file#1{{\filefont #1}} +\def\ftncode#1{{\tt #1}} +\def\flowchart#1{\includegraphics{tutorials/flow-#1}} +\def\etal{\textit{et al.}} +%------------------------------------------------------------------------------- +% List of input decks +\newenvironment{inputlisting}% +{\noindent\vskip 6pt\begingroup% +\inputfont\baselineskip10pt\parskip=0pt\parindent=6pt% +\catcode`\&=11\catcode`\$=11\catcode`\_=11\catcode`\#=11% +\obeylines\catcode`\ =11% +\def\cc!{{\char18}}% +}% +{\endgroup\vskip 6pt} +%------------------------------------------------------------------------------- +% List of source code +\newenvironment{sourcelisting}% +{\noindent\vskip 6pt\begingroup% +\sourcefont\baselineskip10pt\parskip=0pt\parindent=6pt% +\catcode`\&=11\catcode`\$=11\catcode`\_=11\catcode`\#=11% +\obeylines\catcode`\ =11% +\def\cc!{{\inputfont\char18}}% +}% +{\endgroup\vskip 6pt} +%------------------------------------------------------------------------------- +% List of programs +\def\prgmmklab#1{\prgmfont#1\hfil} +\newenvironment{programlist}% +{\noindent\medskip% +\hrule\nopagebreak\smallskip\nopagebreak% +\hrule\nopagebreak% +\begin{list}% +{\it programme}% +{\topsep0mm\labelsep5mm\labelwidth30mm\leftmargin35mm\rightmargin5mm}\nopagebreak% +\let\makelabel=\prgmmklab% +\item[\it Programmes]{\it But}\nopagebreak\medskip\nopagebreak% +\hrule\nopagebreak}% +{\nopagebreak\medskip\nopagebreak\hrule\medskip\end{list}} +%------------------------------------------------------------------------------- +% List of files +\def\filemklab#1{\filefont #1\hfil} +\newenvironment{filelist}% +{\noindent\medskip% +\hrule\nopagebreak\smallskip\nopagebreak% +\hrule\nopagebreak% +\begin{list}% +{\it fichier}% +{\topsep0mm\labelsep5mm\labelwidth30mm\leftmargin35mm\rightmargin5mm}\nopagebreak% +\let\makelabel=\filemklab% +\item[\it Fichiers]{\it Contient}\nopagebreak\medskip\nopagebreak% +\hrule\nopagebreak}% +{\nopagebreak\medskip\nopagebreak\hrule\medskip\end{list}} +%------------------------------------------------------------------------------- +% List of commands +\def\cmndmklab#1{\cmndfont #1\hfil} +\newenvironment{commandlist}% +{\noindent\medskip% +\hrule\nopagebreak\smallskip\nopagebreak% +\hrule\nopagebreak% +\begin{list}% +{\it commande}% +{\topsep0mm\labelsep5mm\labelwidth30mm\leftmargin35mm\rightmargin5mm}\nopagebreak% +\let\makelabel=\cmndmklab% +\item[\it Commandes]{\it But}\nopagebreak\medskip\nopagebreak% +\hrule\nopagebreak}% +{\nopagebreak\medskip\nopagebreak\hrule\medskip\end{list}} +%------------------------------------------------------------------------------- +% List of variables +\def\cmndvarlab#1{\varfont #1\hfil} +\newenvironment{variablelist}% +{\noindent\medskip% +\hrule\nopagebreak\smallskip\nopagebreak% +\hrule\nopagebreak% +\begin{list}% +{\it variable}% +{\topsep0mm\labelsep5mm\labelwidth30mm\leftmargin35mm\rightmargin5mm}\nopagebreak% +\let\makelabel=\cmndvarlab% +\item[\it Variables]{\it Signification}\nopagebreak\medskip\nopagebreak% +\hrule\nopagebreak}% +{\nopagebreak\medskip\nopagebreak\hrule\medskip\end{list}} +%------------------------------------------------------------------------------- +% List of keywords +\def\keymklab#1{\keyfont #1\hfil} +\newenvironment{keywordlist}% +{\noindent\medskip% +\hrule\nopagebreak\smallskip\nopagebreak% +\hrule\nopagebreak% +\begin{list}% +{\it met clef}% +{\topsep0mm\labelsep5mm\labelwidth30mm\leftmargin35mm\rightmargin5mm}\nopagebreak% +\let\makelabel=\keymklab% +\item[\it Mot clef]{\it Signification}\nopagebreak\medskip\nopagebreak% +\hrule\nopagebreak}% +{\nopagebreak\medskip\nopagebreak\hrule\medskip\end{list}} +%------------------------------------------------------------------------------- +% List of subroutine syntax +\newif\ifarguments\argumentsfalse +\def\synmklab#1{\tt #1\hfil\global\argumentstrue} +\newenvironment{syntaxlist}[1]% +{\noindent\medskip% +\hrule\nopagebreak\smallskip\nopagebreak% +\hrule\nopagebreak% +\begin{list}% +{---}% +{\topsep0mm\labelsep5mm\labelwidth30mm\leftmargin35mm\rightmargin5mm}\nopagebreak% +\let\makelabel=\synmklab% +\item[\bf Syntaxe:]{#1}\nopagebreak\medskip\nopagebreak% +\global\argumentsfalse% +\hrule\nopagebreak}% +{\ifarguments\nopagebreak\medskip\nopagebreak\hrule\medskip\end{list}% +\else\medskip\end{list}\fi} +%------------------------------------------------------------------------------- +% List of general items +\def\whatmklab#1{\currfont #1\hfil} +\newenvironment{whatnotlist}[3]% +{\noindent\medskip% +\hrule\nopagebreak\smallskip\nopagebreak% +\hrule\nopagebreak% +\begin{list}% +{~}% +{\topsep0mm\labelsep5mm\labelwidth30mm\leftmargin35mm\rightmargin5mm}\nopagebreak% +\let\makelabel=\whatmklab% +\let\currfont=#1 +\item[\it #2]{\it #3}\nopagebreak\medskip\nopagebreak% +\hrule\nopagebreak}% +{\nopagebreak\medskip\nopagebreak\hrule\medskip\end{list}} +%------------------------------------------------------------------------------- + +%------------------------------------------------------------------------------- +% Define command \visiblespace +\makeatletter +\newsavebox{\@visiblespacebox} +\begin{lrbox}{\@visiblespacebox} +\verb*| | +\end{lrbox} +\def\visiblespace{\usebox{\@visiblespacebox}} +\makeatother diff --git a/doc/input.tex b/doc/input.tex new file mode 100644 index 0000000000000000000000000000000000000000..f1c508958fe6f1b47ca75266e8610acf8e23672e --- /dev/null +++ b/doc/input.tex @@ -0,0 +1,250 @@ +\subsection{Input files} +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.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..} + +\end{filelist} + + +\subsection{Output files} +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 + 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. +\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 +\item[prefix.bmat]: (optional, if --nogen and --build-type=Debug)) the Hamiltonian matrix in + binary format +\item[prefix.fock]: (optional, if iprint $>$ 1) the Fock matrix } +\end{filelist} + + + +\subsection{The \file{INPUT} File } + +This file is divided in several Fortran namelists. Let us remember that +fortran is insensitive to case, except for file names. The character case in +the following namelist are only for better understanding of the variable +purpose. A Fortran namelist should be given as follow +\begin{verbatim} +&namelist_name + param1= x, param2=y, ... +&end +\end{verbatim} + +The required namelists are the following ones \vspace*{-2.5ex} +\begin{itemize} \itemsep -0.5ex +\item SassInp +\item InfomMolcasInp +\item OrbInp +\item VecInp +\item DavidInp +\item PropInp +\end{itemize} + +\begin{description} \itemsep 3ex +\item[SassInp]~: dedicated to general informations. + \begin{keywordlist} + \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. + \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. + \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}. + \item[restart] : (optional, default \ftncode{.false.}) to restart a calculation from a + previous job, file \file{prefix.restart} needs to be present . + + \devonly{ + \item[idiag] : (optional, default \ftncode{1}) diagonalisation function to + use + \begin{itemize} + \item \ftncode{1-2} : Lapack dsyevd routine + \item \ftncode{3} : Jacobi SCF + \end{itemize}} + + \devonly{ + \item[lexplicitHmat] : (optional, default \ftncode{.false.}) + Compute the Hamiltonian matrix explicitly and write it + on disk in files \file{fort.60} (details of the calculation of each element) and + \file{fort.61}. } + + \devonly{ + \item[lreadHmat] : ( optional, default \ftncode{.false.}) Read + the Hamiltonian matrice on disk -- to be used with + \ftncode{lexplicitHmat} to compare both matrices.} + + \devonly{ + \item[mpi\_load\_balance] : (optional, default \ftncode{.true.}) + Enable/disable the load balancing in MPI} + + \devonly{ + \item[nodet\_block] : (optional : default \ftncode{.false.}) Artificially put the + number of determinants in a given block to 0} + + \devonly{ + \item[iprintHmat] : (optional : default \ftncode{0}) Save and print the + Hamiltonian matrix to file. Only possible if the code is compiled with + the option \ftncode{--nogen --build-type=Debug} + \begin{itemize} + \item \ftncode{1} : print the binary matrix in \file{prefix.bmat} + \item \ftncode{2} : print the binary matrix in \file{prefix.bmat} + and the formatted matrix \file{prefix.mat} + \item \ftncode{3} : print the binary matrix in \file{prefix.bmat}, + the formatted matrix \file{prefix.mat} and the indexed one in + \file{prefix.mat2} + \end{itemize} + } + + \end{keywordlist} + Typical exemple. + \begin{shell} + &sassinp + prefix="cuo", + sizebatch=20, + method="SAS+S" + &end + \end{shell} + + + +\item[InfoMolcasInp]~: dedicated to provide informations on group symmetry, + usually contained in the \program{molcas} \file{RunFile}. + \begin{keywordlist} + \item[NIrrep]: number of irreducible representations in the symmetry + group. + \item[Ntot]: total number of orbitals. + \item[iIrTb]: group multiplication table. + \item[iChTb]: group character table. + \end{keywordlist} + Typical exemple. + \begin{shell} + &infomolcasinp + nirrep=1, + ntot=118, + iIrTb(1,1) = 1, + iChTb(1,1) = 1 + &end + \end{shell} + + + +\item[OrbInp]~: dedicated to orbitals information. + \begin{keywordlist} + \item[NOrb\_gel]: vector, number of frozen orbitals. + \item[NOrb\_occ]: vector, number of occupied orbitals. + \item[NOrb\_ligo]: vector, number of occupied bridging orbitals. + \item[NOrb\_act]: vector, number of active/magnetic orbitals. + \item[NOrb\_ligv]: vector, number of virtual bridging orbitals. + \item[Norb\_virt]: vector, number of virtual orbitals. + \item[NOrb\_del]: vector, number of deleted orbitals. + \end{keywordlist} + Typical exemple. + \begin{shell} + &orbinp + norb_gel = 2, + norb_occ = 38, + norb_ligo = 2, + norb_act = 2, + norb_ligv = 0, + norb_virt = 70, + norb_del = 4, + &end + \end{shell} + + + + +\item[VecInp]~: dedicated to information on the seaked 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 + \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[vec\_irrep]: (default 1) the irreducible representation of the + seaked vectors. + \end{keywordlist} + Typical exemple. + \begin{shell} + &vecinp + stot=1, + sz=0, + vec_irrep=1, + nvec=2, + nref0=1, + nelact = 2 + &end + \end{shell} + + +\item[DavidInp]~: (experts) dedicated to the Davidson procedure fine tuning. + \begin{keywordlist} + \item[SizeHeffDavidson]: (optional, default \ftncode{10}) \keyword{SizeHeffDavidson} $\times$ + \keyword{NVec} is the size of the Davidson matrix. The code memory allocation + should be at least + 2 $\times$ \keyword{SizeHeffDavidson} $\times$ \keyword{NVec} $\times$ 8 bytes. + + \item[NIterDavidson]: (optional, default \ftncode{100}) maximum number of Davidson iterations. + \item[tol\_orth]: (optional, default \ftncode{$10^{-15}$}) Schmidt's orthogonalisation + maximum error. + \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 + run in case of a restart. + \item[conv\_ener]: (optional, default \ftncode{.false.}) activate the convergence on + energy in addition to vectors. + \devonly{ + \item[debug\_dav]: (optional, default \ftncode{.false.}) Activates debug + tests and printing in the Davidson procedure (in \file{prefix.output} + and in \file{fort.666}) + } + \end{keywordlist} + Typical exemple. + \begin{shell} + &davidinp + &end + \end{shell} + + + +\end{description} + + + + + +%%% Local Variables: +%%% coding: utf-8-unix +%%% mode: latex +%%% TeX-master: "user_manual" +%%% End: diff --git a/doc/inputprop.tex b/doc/inputprop.tex new file mode 100644 index 0000000000000000000000000000000000000000..d9aa0f4ef01c1d7822909af64fdebc4d3a98531e --- /dev/null +++ b/doc/inputprop.tex @@ -0,0 +1,67 @@ +The \program{\prop} 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. + +This is presently the only property implemented. + +\subsection{Input files} +The files required by the \program{\prop} code are the following. +\begin{filelist} +\item[INPUT]~: the input file (same as the \sass code + \&propinp namelist + \item[prefix.bdet]: the list of determinants in binary format. +\item[prefix.sass]: sass information file. +\item[prefix.restart]: (optional) the wave-function file for restarts. +\end{filelist} + +\subsection{Output files} +The files generated by the code are +\begin{filelist} +\item[prefix.outprop]: the output file. +\end{filelist} + +\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 +calculations. + +\begin{description} \itemsep 3ex +\item[SassInp]~: identical to the \program{\sass} calculation one. +\item[InfoMolcasInp]~: identical to the \program{\sass} calculation one. +\item[OrbInp]~: identical to the \program{\sass} calculation one. +\item[VecInp]~: identical to the \program{\sass} calculation one. +\item[DavidInp]~: identical to the \program{\sass} calculation one. + +\item[PropInp]~: + \begin{keywordlist} + \item[nprop]: number of properties to be computed in addition to the + printing of the \program{\sass} wave functions projection on + the CAS. \\ + \item[whichprop]: list of the \keyword{nprop} \keyword{keywords} of the + properties to be computed \\ + \devonly{Properties to be implemented in near future \\ + \keyword{pref1}: printing of the \program{\sass} wave functions projection + on the Ref1 space \\ + \keyword{lcoef}: printing of the \program{\sass} wave functions + coefficients larger than 0.05. \\ + \keyword{dens}: one-particule density matrix calculation \\ + \keyword{dens2}: two-particules density matrix calculation. + } + \end{keywordlist} + Typical exemple. + \begin{shell} + &propinp + nprop=2 + whichprop = 'lcoef', 'dens' + &end + \end{shell} + +\end{description} + +%%% Local Variables: +%%% coding: utf-8-unix +%%% mode: latex +%%% TeX-master: "user_manual" +%%% End: diff --git a/doc/mpi.pdf b/doc/mpi.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a5b7710b4e961dda60d7c43683eea6b4507768db Binary files /dev/null and b/doc/mpi.pdf differ diff --git a/doc/openmp.pdf b/doc/openmp.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0183aaa0dfd1cde9af53b4cee0604a8fcc56a291 Binary files /dev/null and b/doc/openmp.pdf differ diff --git a/doc/perf.tex b/doc/perf.tex new file mode 100644 index 0000000000000000000000000000000000000000..67f63f9f79063559f655f636496cb1937863bfdb --- /dev/null +++ b/doc/perf.tex @@ -0,0 +1,94 @@ +The \program{\sass} code uses a direct algorithm in order to treat large +numbers of determinants (typically up to $10^8$, $10^9$), i.e. each matrix +element is recomputed on-the-fly. + +The determinants are divided in 9 blocks, denoted +$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 +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 +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 +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}. + +\begin{table}[h] + \caption{Orbital partitioning for the test + calculations. \label{table:orbitals}} + \center \vspace*{-3ex} +\begin{tabular}{l|ccccc| >{\raggedleft + \arraybackslash}p{2cm}} + + \hline + Test set & \verb.nocc. & \verb.nligo. & \verb.nact. & \verb.nligv. & \verb.nvirt. & + \verb.ndet. \hfill \\ + \hline \hline + \multirow{4}{*}{\textsc{\color{red} ligo}}& 49& 2& 8& 0& 140& 30 267 828 \\ + &47& 4& 8& 0& 140& 53 017 324 \\ + &45& 6& 8& 0& 140& 74 811 684 \\ + &43& 8& 8& 0& 140& 95 650 908 \\ + \hline + \multirow{4}{*}{\textsc{\color{blue} ligv}} &51& 0& 8& 2& 138& 30 721 372 \\ + &51& 0& 8& 4& 136& 54 531 036 \\ + &51& 0& 8& 6& 134& 77 992 188 \\ + &51& 0& 8& 8& 132& 101 104 828 \\ + \hline +\end{tabular} +\end{table} + +\begin{figure}[h!] + \begin{minipage}[c]{6cm} + \includegraphics[width=5.5cm]{cpu.pdf} + \end{minipage} \hfill + \begin{minipage}[c]{9cm} + \caption[tWall/ndet]{Total CPU-time as a function of the number of + determinants for either occupied (ligo) or virtual (ligv) ligand + orbitals. Calculations + were performed with 4 or 6 MPI processes, 10 to 40 OpenMP threads and with + (circles) and without (stars) batching of the determinants.} + \end{minipage} + \label{fig:cpu} +\end{figure} + +\begin{figure}[h!] + \begin{minipage}[c]{6cm} + \includegraphics[width=5.5cm]{openmp.pdf} + \end{minipage} \hfill + \begin{minipage}[c]{9cm} + \caption[MPI speedup]{OpenMP speedup compared to calculations with 10 OpenMP + treads. The number of MPI processes is 6, the batching + of the virtual orbitals was turned off.} + \end{minipage} + \label{fig:omp} +\end{figure} + +\begin{figure}[h!] +\begin{minipage}[c]{6cm} + \includegraphics[width=5.5cm]{mpi.pdf} + \end{minipage} \hfill + \begin{minipage}[c]{9cm} + \caption[MPI speedup]{MPI speedup compared to a calculation with 4 MPI + processes. The number of OpenMP threads is 40, as well as the size of the + batches.} + \end{minipage} + \label{fig:omp} +\end{figure} + + + +%%% Local Variables: +%%% coding: utf-8-unix +%%% mode: latex +%%% TeX-master: "user_manual" +%%% End: diff --git a/doc/relaxe.bib b/doc/relaxe.bib new file mode 100644 index 0000000000000000000000000000000000000000..81d703d89cf93266265c27a9038d25622f77a30e --- /dev/null +++ b/doc/relaxe.bib @@ -0,0 +1,102 @@ +@article{p:SASS, + author = {Gell{\'e}, A. and Varignon, J. and Lepetit, M.-B.}, + journal = {EPL (Europhysics Letters)}, + number = {3}, + pages = {37003}, + title = {Accurate evaluation of magnetic coupling between atoms with numerous open shells: An ab initio method}, + volume = {88}, + year = {2009} +} + +@article{DDCI1992, + author = {Miralles, J. and Daudey, J. P. and Caballol, R.}, + journal = {Chem. Phys. Lett.}, + pages = {555}, + volume = {198}, + year = {1992} +} + +@article{DDCI1995, + author = {{\it et al.}, V. M. Garc{\'\i}a}, + journal = {Chem. Phys. Lett.}, + pages = {222}, + volume = {238}, + year = {1995} +} + +@article{DDCI1997, + author = {Garc{\'\i}a, V. M. and Reguero, M. and Caballol, R.}, + journal = {Theor. Chem. Acc.}, + pages = {50}, + volume = {98}, + year = {1997} +} + +@article{lcas+s2003, + author = {Gell{\'e}, A. and Munzarov{\'a}, M. L. and Lepetit, M.B. and Illas, F.}, + journal = {Phys. Rev. }, + pages = {125103}, + volume = {B 68}, + year = {2003} +} + +@article{lcas+s2002, + author = {Calzado, C J. and Sanz, J. F. and Malrieu, J. P.}, + journal = {J. Chem. Phys. }, + pages = {5158}, + volume = {112}, + year = {2002} +} + +@article{CASSCF, + abstract = {A density matrix formulation of the super-CI MCSCF method is presented. The MC expansion is assumed to be complete in an active subset of the orbital space, and the corresponding CI secular problem is solved by a direct scheme using the unitary group approach. With a density matrix formulation the orbital optimization step becomes independent of the size of the CI expansion. It is possible to formulate the super-CI in terms of density matrices defined only in the small active subspace; the doubly occupied orbitals (the inactive subspace) do not enter. Further, in the unitary group formalism it is straightforward and simple to obtain the necessary density matrices from the symbolic formula list. It then becomes possible to treat very long MC expansions, the largest so far comprising 726 configurations. The method is demonstrated in a calculation of the potential curves for the three lowest states (1\ensuremath{\Sigma}+g, 3\ensuremath{\Sigma}+u and 3\ensuremath{\Pi}g) of the N2 molecule, using a medium-sized gaussian basis set. Seven active orbitals were used yielding the following results: De: 8.76 (9.90), 2.43 (3.68) and 3.39 (4.90) eV; re: 1.108 (1.098), 1.309 (1.287) and 1.230 (1.213) {\AA}; \ensuremath{\omega}e: 2333 (2359), 1385 (1461) and 1680 (1733) cm−1, for the three states (experimental values within parentheses). The results of these calculations indicate that it is important to consider not only the dissociation limit but also the united atom limit in partitioning the occupied orbital space into an active and an inactive part.}, + author = {Roos, Bj{\"o}rn O. and Taylor, Peter R. and Sigbahn, Per E.M.}, + doi = {10.1016/0301-0104(80)80045-0}, + issn = {0301-0104}, + journal = {Chemical Physics}, + number = {2}, + pages = {157--173}, + title = {A complete active space SCF method (CASSCF) using a density matrix formulated super-CI approach}, + url = {http://www.sciencedirect.com/science/article/pii/0301010480800450}, + volume = {48}, + year = {1980} +} + +@article{Davidson, + author = {Davidson, E. R.}, + journal = {J. Comput. Phys.}, + pages = {87}, + title = {The Iterative Calculation of a Few of the Lowest Eigenvalues and Corresponding Eigenvectors of Large Real-Symmetric Matrices}, + volume = {17}, + year = {1975} +} + +@article{DavisonBdav, + author = {Liu, B}, + journal = {Numerical Algorithms in Chemistry: Algebraic Methods}, + pages = {49--53}, + publisher = {Lawrence Berkeley Laboratory, Berkeley, CA}, + title = {The simultaneous expansion method for the iterative solution of several of the lowest-lying eigenvalues and corresponding eigenvectors of large real-symmetric matrices}, + year = {1978} +} + +@article{p:relaxse, + author = {Rebolini, Elisa and Lepetit, Marie-Bernadette}, + journal = {The Journal of Chemical Physics}, + number = {16}, + pages = {164116}, + title = {For an ab initio calculation of the magnetic excitations: RelaxSE!}, + volume = {154}, + year = {2021}, + doi = {10.1063/5.0045672}, + url = {https://doi.org/10.1063/5.0045672} +} + +%%% Local Variables: +%%% coding: utf-8-unix +%%% mode: latex +%%% TeX-master: "user_manual" +%%% End: + +%%% +%%% \ No newline at end of file diff --git a/doc/user_manual.pdf b/doc/user_manual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7cd5a5d277a827f7dce64aa4ac309366f21b639b Binary files /dev/null and b/doc/user_manual.pdf differ diff --git a/doc/user_manual.tex b/doc/user_manual.tex new file mode 100644 index 0000000000000000000000000000000000000000..e229485206439a0f0904693f43d478ef1a7d6016 --- /dev/null +++ b/doc/user_manual.tex @@ -0,0 +1,123 @@ +\documentclass{article} + +\usepackage[utf8]{inputenc} +\usepackage[square,numbers,sort&compress]{natbib} +%\usepackage[english]{babel} +\usepackage{bm} +\usepackage{epciso} + +\usepackage{amsthm} +\usepackage{amssymb} +\usepackage{amsmath} +\usepackage{verbatim} +\usepackage{fullpage} +\usepackage{graphicx} +%\usepackage{geometry} +\usepackage{algorithm} +\usepackage{algorithmicx} +\usepackage{algpseudocode} +\usepackage{placeins} + +%\usepackage{tikz} +\usepackage{wasysym} +\usepackage{caption} +\usepackage{url} +\usepackage{colortbl} +\usepackage{fancyvrb} +%\usepackage{kbordermatrix} +\usepackage{multirow} % plusieurs lignes ds tabular +\usepackage{longtable} % tables sur plusieurs pages +\usepackage{braket} +\usepackage{amstext} % for \text macro +\usepackage{array} % for \newcolumntype macro +\newcolumntype{C}{>{$}c<{$}} % math-mode version of "l" column type +\newcolumntype{H}{>{\setbox0=\hbox\bgroup$}c<{$\egroup}@{}} + +%\usepackage{fdsymbol} +\usepackage{rotating} + + +%\geometry{ +% top=15mm, +% bottom=15mm} + +\DefineVerbatimEnvironment{shell}{Verbatim}{ + commandchars=\#\{\}, + %label=\shelltitle, + frame=single, + samepage=true, + fontsize=\footnotesize + %formatcom=\setcounter{prompt}{0}\start +} + +\DefineVerbatimEnvironment{algov}{Verbatim}{ + commandchars=\#\{\}, + numbers=left, + xleftmargin=10mm, + %label=\shelltitle, + frame=none, + samepage=true, + fontsize=\footnotesize + %formatcom=\setcounter{prompt}{0}\start +} + +\newcommand{\CMone}{\text{CM1}} +\newcommand{\CMtwo}{\text{CM2}} +\newcommand{\Id}{\text{Id}} +\newcommand{\sbc}{$\smallblackcircle$} +\newcommand{\swc}{$\smallcircle$} +\newcommand{\sbs}{$\smallblacksquare$} +\newcommand{\sws}{$\smallsquare$} +\newcommand{\Ntot}{N_\text{tot}} +\newcommand{\UP}{$\uparrow$~} +\newcommand{\DN}{$\downarrow$~} +\newcommand{\sass}{RelaxSE} +\newcommand{\prop}{PROP} + +%\newcommand\devonly[1]{\textcolor{blue}{#1}} +\newcommand\devonly[1]{} +\definecolor{rltbrightblue}{rgb}{0,0,1} + +\title{{\Huge RelaxSE} \\ User's Manual} +\author{Elisa Rebolini$^{1}$ and Marie-Bernadette Lepetit$^{1,2}$ \\ + \footnotesize $^1$ Institut Laue Langevin, Grenoble, France \\ + \footnotesize $^2$ Institut N\'eel, CNRS, Grenoble, France} +\date{\today} + + +\begin{document} + +\maketitle + +\section{Code description} +\input{code} + +\section{Code citation} +Please cite the \program{\sass} code as \\ +Elisa Rebolini and Marie-Bernadette Lepetit, The Journal of Chemical Physics +{\bf 154}, 164116 (2021). + +\section{Input description} +\input{input} + +\section{PROP input description} +\input{inputprop} + + +\section{Code performances} +\input{perf} + + +\pagebreak +\newpage + +\bibliographystyle{apsrev} +\bibliography{relaxe} + +\end{document} + +%%% Local Variables: +%%% coding: utf-8-unix +%%% mode: latex +%%% TeX-master: "user_manual" +%%% End: