mirror of
https://github.com/TREX-CoE/trexio.git
synced 2024-12-25 13:53:55 +01:00
2010 lines
64 KiB
HTML
2010 lines
64 KiB
HTML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
|
<head>
|
|
<!-- 2022-05-29 Sun 09:35 -->
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>TREX Configuration file</title>
|
|
<meta name="generator" content="Org mode" />
|
|
<meta name="author" content="TREX-CoE" />
|
|
<style type="text/css">
|
|
<!--/*--><![CDATA[/*><!--*/
|
|
.title { text-align: center;
|
|
margin-bottom: .2em; }
|
|
.subtitle { text-align: center;
|
|
font-size: medium;
|
|
font-weight: bold;
|
|
margin-top:0; }
|
|
.todo { font-family: monospace; color: red; }
|
|
.done { font-family: monospace; color: green; }
|
|
.priority { font-family: monospace; color: orange; }
|
|
.tag { background-color: #eee; font-family: monospace;
|
|
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
.timestamp { color: #bebebe; }
|
|
.timestamp-kwd { color: #5f9ea0; }
|
|
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
.underline { text-decoration: underline; }
|
|
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
p.verse { margin-left: 3%; }
|
|
pre {
|
|
border: 1px solid #ccc;
|
|
box-shadow: 3px 3px 3px #eee;
|
|
padding: 8pt;
|
|
font-family: monospace;
|
|
overflow: auto;
|
|
margin: 1.2em;
|
|
}
|
|
pre.src {
|
|
position: relative;
|
|
overflow: visible;
|
|
padding-top: 1.2em;
|
|
}
|
|
pre.src:before {
|
|
display: none;
|
|
position: absolute;
|
|
background-color: white;
|
|
top: -10px;
|
|
right: 10px;
|
|
padding: 3px;
|
|
border: 1px solid black;
|
|
}
|
|
pre.src:hover:before { display: inline;}
|
|
/* Languages per Org manual */
|
|
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
pre.src-awk:before { content: 'Awk'; }
|
|
pre.src-C:before { content: 'C'; }
|
|
/* pre.src-C++ doesn't work in CSS */
|
|
pre.src-clojure:before { content: 'Clojure'; }
|
|
pre.src-css:before { content: 'CSS'; }
|
|
pre.src-D:before { content: 'D'; }
|
|
pre.src-ditaa:before { content: 'ditaa'; }
|
|
pre.src-dot:before { content: 'Graphviz'; }
|
|
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
pre.src-fortran:before { content: 'Fortran'; }
|
|
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
pre.src-haskell:before { content: 'Haskell'; }
|
|
pre.src-hledger:before { content: 'hledger'; }
|
|
pre.src-java:before { content: 'Java'; }
|
|
pre.src-js:before { content: 'Javascript'; }
|
|
pre.src-latex:before { content: 'LaTeX'; }
|
|
pre.src-ledger:before { content: 'Ledger'; }
|
|
pre.src-lisp:before { content: 'Lisp'; }
|
|
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
pre.src-lua:before { content: 'Lua'; }
|
|
pre.src-matlab:before { content: 'MATLAB'; }
|
|
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
pre.src-octave:before { content: 'Octave'; }
|
|
pre.src-org:before { content: 'Org mode'; }
|
|
pre.src-oz:before { content: 'OZ'; }
|
|
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
pre.src-processing:before { content: 'Processing.js'; }
|
|
pre.src-python:before { content: 'Python'; }
|
|
pre.src-R:before { content: 'R'; }
|
|
pre.src-ruby:before { content: 'Ruby'; }
|
|
pre.src-sass:before { content: 'Sass'; }
|
|
pre.src-scheme:before { content: 'Scheme'; }
|
|
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
pre.src-sed:before { content: 'Sed'; }
|
|
pre.src-sh:before { content: 'shell'; }
|
|
pre.src-sql:before { content: 'SQL'; }
|
|
pre.src-sqlite:before { content: 'SQLite'; }
|
|
/* additional languages in org.el's org-babel-load-languages alist */
|
|
pre.src-forth:before { content: 'Forth'; }
|
|
pre.src-io:before { content: 'IO'; }
|
|
pre.src-J:before { content: 'J'; }
|
|
pre.src-makefile:before { content: 'Makefile'; }
|
|
pre.src-maxima:before { content: 'Maxima'; }
|
|
pre.src-perl:before { content: 'Perl'; }
|
|
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
pre.src-scala:before { content: 'Scala'; }
|
|
pre.src-shell:before { content: 'Shell Script'; }
|
|
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
/* additional language identifiers per "defun org-babel-execute"
|
|
in ob-*.el */
|
|
pre.src-cpp:before { content: 'C++'; }
|
|
pre.src-abc:before { content: 'ABC'; }
|
|
pre.src-coq:before { content: 'Coq'; }
|
|
pre.src-groovy:before { content: 'Groovy'; }
|
|
/* additional language identifiers from org-babel-shell-names in
|
|
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
the execution function name together. */
|
|
pre.src-bash:before { content: 'bash'; }
|
|
pre.src-csh:before { content: 'csh'; }
|
|
pre.src-ash:before { content: 'ash'; }
|
|
pre.src-dash:before { content: 'dash'; }
|
|
pre.src-ksh:before { content: 'ksh'; }
|
|
pre.src-mksh:before { content: 'mksh'; }
|
|
pre.src-posh:before { content: 'posh'; }
|
|
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
pre.src-ada:before { content: 'Ada'; }
|
|
pre.src-asm:before { content: 'Assembler'; }
|
|
pre.src-caml:before { content: 'Caml'; }
|
|
pre.src-delphi:before { content: 'Delphi'; }
|
|
pre.src-html:before { content: 'HTML'; }
|
|
pre.src-idl:before { content: 'IDL'; }
|
|
pre.src-mercury:before { content: 'Mercury'; }
|
|
pre.src-metapost:before { content: 'MetaPost'; }
|
|
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
pre.src-pascal:before { content: 'Pascal'; }
|
|
pre.src-ps:before { content: 'PostScript'; }
|
|
pre.src-prolog:before { content: 'Prolog'; }
|
|
pre.src-simula:before { content: 'Simula'; }
|
|
pre.src-tcl:before { content: 'tcl'; }
|
|
pre.src-tex:before { content: 'TeX'; }
|
|
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
pre.src-verilog:before { content: 'Verilog'; }
|
|
pre.src-vhdl:before { content: 'VHDL'; }
|
|
pre.src-xml:before { content: 'XML'; }
|
|
pre.src-nxml:before { content: 'XML'; }
|
|
/* add a generic configuration mode; LaTeX export needs an additional
|
|
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
pre.src-conf:before { content: 'Configuration File'; }
|
|
|
|
table { border-collapse:collapse; }
|
|
caption.t-above { caption-side: top; }
|
|
caption.t-bottom { caption-side: bottom; }
|
|
td, th { vertical-align:top; }
|
|
th.org-right { text-align: center; }
|
|
th.org-left { text-align: center; }
|
|
th.org-center { text-align: center; }
|
|
td.org-right { text-align: right; }
|
|
td.org-left { text-align: left; }
|
|
td.org-center { text-align: center; }
|
|
dt { font-weight: bold; }
|
|
.footpara { display: inline; }
|
|
.footdef { margin-bottom: 1em; }
|
|
.figure { padding: 1em; }
|
|
.figure p { text-align: center; }
|
|
.inlinetask {
|
|
padding: 10px;
|
|
border: 2px solid gray;
|
|
margin: 10px;
|
|
background: #ffffcc;
|
|
}
|
|
#org-div-home-and-up
|
|
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
textarea { overflow-x: auto; }
|
|
.linenr { font-size: smaller }
|
|
.code-highlighted { background-color: #ffff00; }
|
|
.org-info-js_info-navigation { border-style: none; }
|
|
#org-info-js_console-label
|
|
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
.org-info-js_search-highlight
|
|
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
.org-svg { width: 90%; }
|
|
/*]]>*/-->
|
|
</style>
|
|
<link rel="stylesheet" title="Standard" href="trexio.css" type="text/css" />
|
|
|
|
<script type="text/javascript" src="org-info.js">
|
|
/**
|
|
*
|
|
* @source: org-info.js
|
|
*
|
|
* @licstart The following is the entire license notice for the
|
|
* JavaScript code in org-info.js.
|
|
*
|
|
* Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
|
*
|
|
*
|
|
* The JavaScript code in this tag is free software: you can
|
|
* redistribute it and/or modify it under the terms of the GNU
|
|
* General Public License (GNU GPL) as published by the Free Software
|
|
* Foundation, either version 3 of the License, or (at your option)
|
|
* any later version. The code is distributed WITHOUT ANY WARRANTY;
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
|
*
|
|
* As additional permission under GNU GPL version 3 section 7, you
|
|
* may distribute non-source (e.g., minimized or compacted) forms of
|
|
* that code without the copy of the GNU GPL normally required by
|
|
* section 4, provided you include this license notice and a URL
|
|
* through which recipients can access the Corresponding Source.
|
|
*
|
|
* @licend The above is the entire license notice
|
|
* for the JavaScript code in org-info.js.
|
|
*
|
|
*/
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
|
|
/*
|
|
@licstart The following is the entire license notice for the
|
|
JavaScript code in this tag.
|
|
|
|
Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
|
|
|
The JavaScript code in this tag is free software: you can
|
|
redistribute it and/or modify it under the terms of the GNU
|
|
General Public License (GNU GPL) as published by the Free Software
|
|
Foundation, either version 3 of the License, or (at your option)
|
|
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
|
without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
|
|
|
As additional permission under GNU GPL version 3 section 7, you
|
|
may distribute non-source (e.g., minimized or compacted) forms of
|
|
that code without the copy of the GNU GPL normally required by
|
|
section 4, provided you include this license notice and a URL
|
|
through which recipients can access the Corresponding Source.
|
|
|
|
|
|
@licend The above is the entire license notice
|
|
for the JavaScript code in this tag.
|
|
*/
|
|
|
|
<!--/*--><![CDATA[/*><!--*/
|
|
org_html_manager.set("TOC_DEPTH", "4");
|
|
org_html_manager.set("LINK_HOME", "index.html");
|
|
org_html_manager.set("LINK_UP", "");
|
|
org_html_manager.set("LOCAL_TOC", "1");
|
|
org_html_manager.set("VIEW_BUTTONS", "0");
|
|
org_html_manager.set("MOUSE_HINT", "underline");
|
|
org_html_manager.set("FIXED_TOC", "0");
|
|
org_html_manager.set("TOC", "1");
|
|
org_html_manager.set("VIEW", "info");
|
|
org_html_manager.setup(); // activate after the parameters are set
|
|
/*]]>*///-->
|
|
</script>
|
|
<script type="text/javascript">
|
|
/*
|
|
@licstart The following is the entire license notice for the
|
|
JavaScript code in this tag.
|
|
|
|
Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
|
|
|
The JavaScript code in this tag is free software: you can
|
|
redistribute it and/or modify it under the terms of the GNU
|
|
General Public License (GNU GPL) as published by the Free Software
|
|
Foundation, either version 3 of the License, or (at your option)
|
|
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
|
without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
|
|
|
As additional permission under GNU GPL version 3 section 7, you
|
|
may distribute non-source (e.g., minimized or compacted) forms of
|
|
that code without the copy of the GNU GPL normally required by
|
|
section 4, provided you include this license notice and a URL
|
|
through which recipients can access the Corresponding Source.
|
|
|
|
|
|
@licend The above is the entire license notice
|
|
for the JavaScript code in this tag.
|
|
*/
|
|
<!--/*--><![CDATA[/*><!--*/
|
|
function CodeHighlightOn(elem, id)
|
|
{
|
|
var target = document.getElementById(id);
|
|
if(null != target) {
|
|
elem.cacheClassElem = elem.className;
|
|
elem.cacheClassTarget = target.className;
|
|
target.className = "code-highlighted";
|
|
elem.className = "code-highlighted";
|
|
}
|
|
}
|
|
function CodeHighlightOff(elem, id)
|
|
{
|
|
var target = document.getElementById(id);
|
|
if(elem.cacheClassElem)
|
|
elem.className = elem.cacheClassElem;
|
|
if(elem.cacheClassTarget)
|
|
target.className = elem.cacheClassTarget;
|
|
}
|
|
/*]]>*///-->
|
|
</script>
|
|
<script type="text/x-mathjax-config">
|
|
MathJax.Hub.Config({
|
|
displayAlign: "center",
|
|
displayIndent: "0em",
|
|
|
|
"HTML-CSS": { scale: 100,
|
|
linebreaks: { automatic: "false" },
|
|
webFont: "TeX"
|
|
},
|
|
SVG: {scale: 100,
|
|
linebreaks: { automatic: "false" },
|
|
font: "TeX"},
|
|
NativeMML: {scale: 100},
|
|
TeX: { equationNumbers: {autoNumber: "AMS"},
|
|
MultLineWidth: "85%",
|
|
TagSide: "right",
|
|
TagIndent: ".8em"
|
|
}
|
|
});
|
|
</script>
|
|
<script type="text/javascript"
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
|
|
</head>
|
|
<body>
|
|
<div id="org-div-home-and-up">
|
|
<a accesskey="h" href=""> UP </a>
|
|
|
|
|
<a accesskey="H" href="index.html"> HOME </a>
|
|
</div><div id="content">
|
|
<h1 class="title">TREX Configuration file</h1>
|
|
<div id="table-of-contents">
|
|
<h2>Table of Contents</h2>
|
|
<div id="text-table-of-contents">
|
|
<ul>
|
|
<li><a href="#orgb6f8868">1. Metadata (metadata group)</a></li>
|
|
<li><a href="#org878b403">2. Electron (electron group)</a></li>
|
|
<li><a href="#orgfa88b69">3. Nucleus (nucleus group)</a></li>
|
|
<li><a href="#org4ddafb2">4. Effective core potentials (ecp group)</a>
|
|
<ul>
|
|
<li><a href="#orgf784e5e">4.1. Example</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#orga5fffc8">5. Basis set (basis group)</a>
|
|
<ul>
|
|
<li><a href="#org3bbb004">5.1. Example</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#orgce3182a">6. Atomic orbitals (ao group)</a>
|
|
<ul>
|
|
<li><a href="#ao_one_e">6.1. One-electron integrals (<code>ao_1e_int</code> group)</a></li>
|
|
<li><a href="#ao_two_e">6.2. Two-electron integrals (<code>ao_2e_int</code> group)</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#org4baba03">7. Molecular orbitals (mo group)</a>
|
|
<ul>
|
|
<li><a href="#orgfada648">7.1. One-electron integrals (<code>mo_1e_int</code> group)</a></li>
|
|
<li><a href="#org37c0a71">7.2. Two-electron integrals (<code>mo_2e_int</code> group)</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#org0258065">8. Slater determinants (determinant group)</a></li>
|
|
<li><a href="#orgb64b8a4">9. Excited states (state group)</a></li>
|
|
<li><a href="#orga35ed54">10. Reduced density matrices (rdm group)</a></li>
|
|
<li><a href="#org9f18e1b">11. Cell (cell group)</a></li>
|
|
<li><a href="#org5c34c17">12. Periodic boundary calculations (pbc group)</a></li>
|
|
<li><a href="#org0d4ac51">13. Quantum Monte Carlo data (qmc group)</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<p>
|
|
This page contains information about the general structure of the
|
|
TREXIO library. The source code of the library can be automatically
|
|
generated based on the contents of the <code>trex.json</code> configuration file,
|
|
which itself is generated from different sections (groups) presented
|
|
below.
|
|
</p>
|
|
|
|
<p>
|
|
All quantities are saved in TREXIO files in atomic units. The
|
|
dimensions of the arrays in the tables below are given in column-major
|
|
order (as in Fortran), and the ordering of the dimensions is reversed
|
|
in the produced <code>trex.json</code> configuration file as the library is
|
|
written in C.
|
|
</p>
|
|
|
|
<p>
|
|
TREXIO currently supports <code>int</code>, <code>float</code> and <code>str</code> types for both
|
|
single attributes and arrays. Note, that some attributes might have
|
|
<code>dim</code> type (e.g. <code>num</code> of the <code>nucleus</code> group). This type is treated
|
|
exactly in the same way as <code>int</code> with the only difference that <code>dim</code>
|
|
variables cannot be negative. This additional constraint is required
|
|
because <code>dim</code> attributes are used internally to allocate memory and to
|
|
check array boundaries in the memory-safe API. Most of the times, the
|
|
<code>dim</code> variables contain the <code>num</code> suffix.
|
|
You may also encounter some <code>dim readonly</code> variables.
|
|
It means that the value is automatically computed and written by the
|
|
TREXIO library, thus it is read-only and cannot be (over)written by the
|
|
user.
|
|
</p>
|
|
|
|
<p>
|
|
In Fortran, arrays are 1-based and in most other languages the
|
|
arrays are 0-based. Hence, we introduce the <code>index</code> type which is a
|
|
1-based <code>int</code> in the Fortran interface and 0-based otherwise.
|
|
</p>
|
|
|
|
<p>
|
|
For sparse data structures such as electron replusion integrals,
|
|
the data can be too large to fit in memory and the data needs to be
|
|
fetched using multiple function calls to perform I/O on buffers.
|
|
For more information on how to read/write sparse data structures, see
|
|
the <a href="./examples.html">examples</a>.
|
|
</p>
|
|
|
|
|
|
<div id="outline-container-orgb6f8868" class="outline-2">
|
|
<h2 id="orgb6f8868"><span class="section-number-2">1</span> Metadata (metadata group)</h2>
|
|
<div class="outline-text-2" id="text-1">
|
|
<p>
|
|
As we expect our files to be archived in open-data repositories, we
|
|
need to give the possibility to the users to store some metadata
|
|
inside the files. We propose to store the list of names of the codes
|
|
which have participated to the creation of the file, a list of
|
|
authors of the file, and a textual description.
|
|
</p>
|
|
|
|
<table id="org00dc3b3" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions (for arrays)</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>code_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of codes used to produce the file</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>code</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"><code>(metadata.code_num)</code></td>
|
|
<td class="org-left">Names of the codes used</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>author_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of authors of the file</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>author</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"><code>(metadata.author_num)</code></td>
|
|
<td class="org-left">Names of the authors of the file</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>package_version</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">TREXIO version used to produce the file</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>description</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Text describing the content of file</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>unsafe</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left"><code>1</code>: true, <code>0</code>: false</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p>
|
|
<b><b>Note:</b></b> <code>unsafe</code> attribute of the <code>metadata</code> group indicates whether the file has been previously opened with <code>'u'</code> mode.
|
|
It is automatically written in the file upon the first unsafe opening.
|
|
If the user has checked that the TREXIO file is valid (e.g. using <code>trexio-tools</code>) after unsafe operations,
|
|
then the <code>unsafe</code> attribute value can be manually overwritten (in unsafe mode) from <code>1</code> to <code>0</code>.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org878b403" class="outline-2">
|
|
<h2 id="org878b403"><span class="section-number-2">2</span> Electron (electron group)</h2>
|
|
<div class="outline-text-2" id="text-2">
|
|
<p>
|
|
We consider wave functions expressed in the spin-free formalism, where
|
|
the number of ↑ and ↓ electrons is fixed.
|
|
</p>
|
|
|
|
<table id="org46b4b40" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of electrons</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>up_num</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of ↑-spin electrons</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>dn_num</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of ↓-spin electrons</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgfa88b69" class="outline-2">
|
|
<h2 id="orgfa88b69"><span class="section-number-2">3</span> Nucleus (nucleus group)</h2>
|
|
<div class="outline-text-2" id="text-3">
|
|
<p>
|
|
The nuclei are considered as fixed point charges. Coordinates are
|
|
given in Cartesian \((x,y,z)\) format.
|
|
</p>
|
|
|
|
<table id="orgc5a9e9a" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of nuclei</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>charge</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(nucleus.num)</code></td>
|
|
<td class="org-left">Charges of the nuclei</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>coord</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(3,nucleus.num)</code></td>
|
|
<td class="org-left">Coordinates of the atoms</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>label</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"><code>(nucleus.num)</code></td>
|
|
<td class="org-left">Atom labels</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>point_group</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Symmetry point group</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>repulsion</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Nuclear repulsion energy</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org4ddafb2" class="outline-2">
|
|
<h2 id="org4ddafb2"><span class="section-number-2">4</span> Effective core potentials (ecp group)</h2>
|
|
<div class="outline-text-2" id="text-4">
|
|
<p>
|
|
An effective core potential (ECP) \(V_A^{\text{ECP}}\) replacing the
|
|
core electrons of atom \(A\) can be expressed as
|
|
\[
|
|
V_A^{\text{ECP}} =
|
|
V_{A \ell_{\max}+1} +
|
|
\sum_{\ell=0}^{\ell_{\max}}
|
|
\sum_{m=-\ell}^{\ell} | Y_{\ell m} \rangle \left[
|
|
V_{A \ell} - V_{A \ell_{\max}+1} \right] \langle Y_{\ell m} |
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
The first term in the equation above is sometimes attributed to the local channel,
|
|
while the remaining terms correspond to the non-local channel projections.
|
|
</p>
|
|
|
|
<p>
|
|
The functions \(V_{A\ell}\) are parameterized as:
|
|
\[
|
|
V_{A \ell}(\mathbf{r}) =
|
|
\sum_{q=1}^{N_{q \ell}}
|
|
\beta_{A q \ell}\, |\mathbf{r}-\mathbf{R}_{A}|^{n_{A q \ell}}\,
|
|
e^{-\alpha_{A q \ell} |\mathbf{r}-\mathbf{R}_{A}|^2 }
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
See <a href="http://dx.doi.org/10.1063/1.4984046">http://dx.doi.org/10.1063/1.4984046</a> or <a href="https://doi.org/10.1063/1.5121006">https://doi.org/10.1063/1.5121006</a> for more info.
|
|
</p>
|
|
|
|
<table id="orgd71aeb9" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>max_ang_mom_plus_1</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"><code>(nucleus.num)</code></td>
|
|
<td class="org-left">\(\ell_{\max}+1\), one higher than the max angular momentum in the removed core orbitals</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>z_core</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"><code>(nucleus.num)</code></td>
|
|
<td class="org-left">Number of core electrons to remove per atom</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Total number of ECP functions for all atoms and all values of \(\ell\)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ang_mom</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"><code>(ecp.num)</code></td>
|
|
<td class="org-left">One-to-one correspondence between ECP items and the angular momentum \(\ell\)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>nucleus_index</code></td>
|
|
<td class="org-left"><code>index</code></td>
|
|
<td class="org-left"><code>(ecp.num)</code></td>
|
|
<td class="org-left">One-to-one correspondence between ECP items and the atom index</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>exponent</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ecp.num)</code></td>
|
|
<td class="org-left">\(\alpha_{A q \ell}\) all ECP exponents</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>coefficient</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ecp.num)</code></td>
|
|
<td class="org-left">\(\beta_{A q \ell}\) all ECP coefficients</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>power</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"><code>(ecp.num)</code></td>
|
|
<td class="org-left">\(n_{A q \ell}\) all ECP powers</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p>
|
|
There might be some confusion in the meaning of the \(\ell_{\max}\).
|
|
It can be attributed to the maximum angular momentum occupied
|
|
in the core orbitals, which are removed by the ECP.
|
|
On the other hand, it can be attributed to the maximum angular momentum of the
|
|
ECP that replaces the core electrons.
|
|
<b>Note</b>, that the latter \(\ell_{\max}\) is always higher by 1 than the former.
|
|
</p>
|
|
|
|
|
|
<p>
|
|
<b>Note for developers</b>: avoid having variables with similar prefix in their name.
|
|
HDF5 back end might cause issues due to the way <code>find_dataset</code> function works.
|
|
For example, in the ECP group we use <code>max_ang_mom</code> and not <code>ang_mom_max</code>.
|
|
The latter causes issues when written before the <code>ang_mom</code> array in the TREXIO file.
|
|
<b>Update</b>: in fact, the aforementioned issue has only been observed when using HDF5 version 1.10.4
|
|
installed via <code>apt-get</code>. Installing the same version from the <code>conda-forge</code> channel and running it in
|
|
an isolated <code>conda</code> environment works just fine. Thus, it seems to be a bug in the <code>apt</code>-provided package.
|
|
If you encounter the aforementioned issue, please report it to our <a href="https://github.com/TREX-CoE/trexio/issues">issue tracker on GitHub</a>.
|
|
</p>
|
|
</div>
|
|
|
|
<div id="outline-container-orgf784e5e" class="outline-3">
|
|
<h3 id="orgf784e5e"><span class="section-number-3">4.1</span> Example</h3>
|
|
<div class="outline-text-3" id="text-4-1">
|
|
<p>
|
|
For example, consider H<sub>2</sub> molecule with the following
|
|
<a href="https://pseudopotentiallibrary.org/recipes/H/ccECP/H.ccECP.gamess">effective core potential</a>
|
|
(in GAMESS input format for the H atom):
|
|
</p>
|
|
|
|
<pre class="example">
|
|
H-ccECP GEN 0 1
|
|
3
|
|
1.00000000000000 1 21.24359508259891
|
|
21.24359508259891 3 21.24359508259891
|
|
-10.85192405303825 2 21.77696655044365
|
|
1
|
|
0.00000000000000 2 1.000000000000000
|
|
</pre>
|
|
|
|
<p>
|
|
In TREXIO representation this would be:
|
|
</p>
|
|
|
|
<pre class="example">
|
|
num = 8
|
|
|
|
# lmax+1 per atom
|
|
max_ang_mom_plus_1 = [ 1, 1 ]
|
|
|
|
# number of core electrons to remove per atom
|
|
zcore = [ 0, 0 ]
|
|
|
|
# first 4 ECP elements correspond to the first H atom ; the remaining 4 elements are for the second H atom
|
|
nucleus_index = [
|
|
0, 0, 0, 0,
|
|
1, 1, 1, 1
|
|
]
|
|
|
|
# 3 first ECP elements correspond to potential of the P orbital (l=1), then 1 element for the S orbital (l=0) ; similar for the second H atom
|
|
ang_mom = [
|
|
1, 1, 1, 0,
|
|
1, 1, 1, 0
|
|
]
|
|
|
|
# ECP quantities that can be attributed to atoms and/or angular momenta based on the aforementioned ecp_nucleus and ecp_ang_mom arrays
|
|
coefficient = [
|
|
1.00000000000000, 21.24359508259891, -10.85192405303825, 0.00000000000000,
|
|
1.00000000000000, 21.24359508259891, -10.85192405303825, 0.00000000000000
|
|
]
|
|
|
|
exponent = [
|
|
21.24359508259891, 21.24359508259891, 21.77696655044365, 1.000000000000000,
|
|
21.24359508259891, 21.24359508259891, 21.77696655044365, 1.000000000000000
|
|
]
|
|
|
|
power = [
|
|
-1, 1, 0, 0,
|
|
-1, 1, 0, 0
|
|
]
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orga5fffc8" class="outline-2">
|
|
<h2 id="orga5fffc8"><span class="section-number-2">5</span> Basis set (basis group)</h2>
|
|
<div class="outline-text-2" id="text-5">
|
|
<p>
|
|
We consider here basis functions centered on nuclei. Hence, we enable
|
|
the possibility to define <i>dummy atoms</i> to place basis functions in
|
|
random positions.
|
|
</p>
|
|
|
|
<p>
|
|
The atomic basis set is defined as a list of shells. Each shell \(s\) is
|
|
centered on a center \(A\), possesses a given angular momentum \(l\) and a
|
|
radial function \(R_s\). The radial function is a linear combination of
|
|
\(N_{\text{prim}}\) <i>primitive</i> functions that can be of type
|
|
Slater (\(p=1\)) or Gaussian (\(p=2\)),
|
|
parameterized by exponents \(\gamma_{ks}\) and coefficients \(a_{ks}\):
|
|
\[
|
|
R_s(\mathbf{r}) = \mathcal{N}_s \vert\mathbf{r}-\mathbf{R}_A\vert^{n_s}
|
|
\sum_{k=1}^{N_{\text{prim}}} a_{ks}\, f_{ks}(\gamma_{ks},p)\,
|
|
\exp \left( - \gamma_{ks}
|
|
\vert \mathbf{r}-\mathbf{R}_A \vert ^p \right).
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
In the case of Gaussian functions, \(n_s\) is always zero.
|
|
</p>
|
|
|
|
<p>
|
|
Different codes normalize functions at different levels. Computing
|
|
normalization factors requires the ability to compute overlap
|
|
integrals, so the normalization factors should be written in the
|
|
file to ensure that the file is self-contained and does not need the
|
|
client program to have the ability to compute such integrals.
|
|
</p>
|
|
|
|
<p>
|
|
Some codes assume that the contraction coefficients are for a linear
|
|
combination of <i>normalized</i> primitives. This implies that a normalization
|
|
constant for the primitive \(ks\) needs to be computed and stored. If
|
|
this normalization factor is not required, \(f_{ks}=1\).
|
|
</p>
|
|
|
|
<p>
|
|
Some codes assume that the basis function are normalized. This
|
|
implies the computation of an extra normalization factor, \(\mathcal{N}_s\).
|
|
If the the basis function is not considered normalized, \(\mathcal{N}_s=1\).
|
|
</p>
|
|
|
|
|
|
<p>
|
|
All the basis set parameters are stored in one-dimensional arrays:
|
|
</p>
|
|
|
|
<table id="org2a11d67" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>type</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Type of basis set: "Gaussian" or "Slater"</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>prim_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Total number of primitives</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>shell_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Total number of shells</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>nucleus_index</code></td>
|
|
<td class="org-left"><code>index</code></td>
|
|
<td class="org-left"><code>(basis.shell_num)</code></td>
|
|
<td class="org-left">One-to-one correspondence between shells and atomic indices</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>shell_ang_mom</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"><code>(basis.shell_num)</code></td>
|
|
<td class="org-left">One-to-one correspondence between shells and angular momenta</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>shell_factor</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.shell_num)</code></td>
|
|
<td class="org-left">Normalization factor of each shell (\(\mathcal{N}_s\))</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>shell_index</code></td>
|
|
<td class="org-left"><code>index</code></td>
|
|
<td class="org-left"><code>(basis.prim_num)</code></td>
|
|
<td class="org-left">One-to-one correspondence between primitives and shell index</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>exponent</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.prim_num)</code></td>
|
|
<td class="org-left">Exponents of the primitives (\(\gamma_{ks}\))</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>coefficient</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.prim_num)</code></td>
|
|
<td class="org-left">Coefficients of the primitives (\(a_{ks}\))</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>prim_factor</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.prim_num)</code></td>
|
|
<td class="org-left">Normalization coefficients for the primitives (\(f_{ks}\))</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="outline-container-org3bbb004" class="outline-3">
|
|
<h3 id="org3bbb004"><span class="section-number-3">5.1</span> Example</h3>
|
|
<div class="outline-text-3" id="text-5-1">
|
|
<p>
|
|
For example, consider H<sub>2</sub> with the following basis set (in GAMESS
|
|
format), where both the AOs and primitives are considered normalized:
|
|
</p>
|
|
|
|
<pre class="example">
|
|
HYDROGEN
|
|
S 5
|
|
1 3.387000E+01 6.068000E-03
|
|
2 5.095000E+00 4.530800E-02
|
|
3 1.159000E+00 2.028220E-01
|
|
4 3.258000E-01 5.039030E-01
|
|
5 1.027000E-01 3.834210E-01
|
|
S 1
|
|
1 3.258000E-01 1.000000E+00
|
|
S 1
|
|
1 1.027000E-01 1.000000E+00
|
|
P 1
|
|
1 1.407000E+00 1.000000E+00
|
|
P 1
|
|
1 3.880000E-01 1.000000E+00
|
|
D 1
|
|
1 1.057000E+00 1.000000E+00
|
|
</pre>
|
|
|
|
<p>
|
|
In TREXIO representaion we have:
|
|
</p>
|
|
|
|
<pre class="example">
|
|
type = "Gaussian"
|
|
prim_num = 20
|
|
shell_num = 12
|
|
|
|
# 6 shells per H atom
|
|
nucleus_index =
|
|
[ 0, 0, 0, 0, 0, 0,
|
|
1, 1, 1, 1, 1, 1 ]
|
|
|
|
# 3 shells in S (l=0), 2 in P (l=1), 1 in D (l=2)
|
|
shell_ang_mom =
|
|
[ 0, 0, 0, 1, 1, 2,
|
|
0, 0, 0, 1, 1, 2 ]
|
|
|
|
# no need to renormalize shells
|
|
shell_factor =
|
|
[ 1., 1., 1., 1., 1., 1.,
|
|
1., 1., 1., 1., 1., 1. ]
|
|
|
|
# 5 primitives for the first S shell and then 1 primitive per remaining shells in each H atom
|
|
shell_index =
|
|
[ 0, 0, 0, 0, 0, 1, 2, 3, 4, 5,
|
|
6, 6, 6, 6, 6, 7, 8, 9, 10, 11 ]
|
|
|
|
# parameters of the primitives (10 per H atom)
|
|
exponent =
|
|
[ 33.87, 5.095, 1.159, 0.3258, 0.1027, 0.3258, 0.1027, 1.407, 0.388, 1.057,
|
|
33.87, 5.095, 1.159, 0.3258, 0.1027, 0.3258, 0.1027, 1.407, 0.388, 1.057 ]
|
|
|
|
coefficient =
|
|
[ 0.006068, 0.045308, 0.202822, 0.503903, 0.383421, 1.0, 1.0, 1.0, 1.0, 1.0,
|
|
0.006068, 0.045308, 0.202822, 0.503903, 0.383421, 1.0, 1.0, 1.0, 1.0, 1.0 ]
|
|
`
|
|
prim_factor =
|
|
[ 1.0006253235944540e+01, 2.4169531573445120e+00, 7.9610924849766440e-01
|
|
3.0734305383061117e-01, 1.2929684417481876e-01, 3.0734305383061117e-01,
|
|
1.2929684417481876e-01, 2.1842769845268308e+00, 4.3649547399719840e-01,
|
|
1.8135965626177861e+00, 1.0006253235944540e+01, 2.4169531573445120e+00,
|
|
7.9610924849766440e-01, 3.0734305383061117e-01, 1.2929684417481876e-01,
|
|
3.0734305383061117e-01, 1.2929684417481876e-01, 2.1842769845268308e+00,
|
|
4.3649547399719840e-01, 1.8135965626177861e+00 ]
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgce3182a" class="outline-2">
|
|
<h2 id="orgce3182a"><span class="section-number-2">6</span> Atomic orbitals (ao group)</h2>
|
|
<div class="outline-text-2" id="text-6">
|
|
<p>
|
|
Going from the atomic basis set to AOs implies a systematic
|
|
construction of all the angular functions of each shell. We
|
|
consider two cases for the angular functions: the real-valued
|
|
spherical harmonics, and the polynomials in Cartesian coordinates.
|
|
In the case of real spherical harmonics, the AOs are ordered as
|
|
\(0, +1, -1, +2, -2, \dots, +m, -m\) (see <a href="https://en.wikipedia.org/wiki/Table_of_spherical_harmonics#Real_spherical_harmonics">Wikipedia</a>).
|
|
In the case of polynomials we
|
|
impose the canonical (or alphabetical) ordering), i.e
|
|
</p>
|
|
|
|
\begin{eqnarray}
|
|
p & : & p_x, p_y, p_z \nonumber \\
|
|
d & : & d_{xx}, d_{xy}, d_{xz}, d_{yy}, d_{yz}, d_{zz} \nonumber \\
|
|
f & : & f_{xxx}, f_{xxy}, f_{xxz}, f_{xyy}, f_{xyz}, f_{xzz}, f_{yyy}, f_{yyz}, f_{yzz}, …f_{zzz} \nonumber \\
|
|
{\rm etc.} \nonumber
|
|
\end{eqnarray}
|
|
|
|
<p>
|
|
Note that there is no exception for \(p\) orbitals in spherical
|
|
coordinates: the ordering is \(0,+1,-1\) which corresponds \(p_z, p_x, p_y\).
|
|
</p>
|
|
|
|
<p>
|
|
AOs are defined as
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\chi_i (\mathbf{r}) = \mathcal{N}_i\, P_{\eta(i)}(\mathbf{r})\, R_{\theta(i)} (\mathbf{r})
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
where \(i\) is the atomic orbital index,
|
|
\(P\) encodes for either the
|
|
polynomials or the spherical harmonics, \(\theta(i)\) returns the
|
|
shell on which the AO is expanded, and \(\eta(i)\) denotes which
|
|
angular function is chosen.
|
|
\(\mathcal{N}_i\) is a normalization factor that enables the
|
|
possibility to have different normalization coefficients within a
|
|
shell, as in the GAMESS convention where
|
|
\(\mathcal{N}_{x^2} \ne \mathcal{N}_{xy}\) because
|
|
\[ \left[ \iiint \left(x-X_A \right)^2 R_{\theta(i)}
|
|
(\mathbf{r}) dx\, dy\, dz \right]^{-1/2} \ne
|
|
\left[ \iiint \left( x-X_A \right) \left( y-Y_A \right) R_{\theta(i)}
|
|
(\mathbf{r}) dx\, dy\, dz \right]^{-1/2}. \]
|
|
</p>
|
|
|
|
<p>
|
|
In such a case, one should set the normalization of the shell (in
|
|
the <a href="#orga5fffc8">Basis set</a> section) to \(\mathcal{N}_{z^2}\), which is the
|
|
normalization factor of the atomic orbitals in spherical coordinates.
|
|
The normalization factor of the \(xy\) function which should be
|
|
introduced here should be \(\frac{\mathcal{N}_{xy}}{\mathcal{N}_{z^2}}\).
|
|
</p>
|
|
|
|
<table id="org9ff2bd1" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>cartesian</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left"><code>1</code>: true, <code>0</code>: false</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Total number of atomic orbitals</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>shell</code></td>
|
|
<td class="org-left"><code>index</code></td>
|
|
<td class="org-left"><code>(ao.num)</code></td>
|
|
<td class="org-left">basis set shell for each AO</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>normalization</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num)</code></td>
|
|
<td class="org-left">Normalization factors</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="outline-container-org6b26f73" class="outline-3">
|
|
<h3 id="ao_one_e"><a id="org6b26f73"></a><span class="section-number-3">6.1</span> One-electron integrals (<code>ao_1e_int</code> group)</h3>
|
|
<div class="outline-text-3" id="text-ao_one_e">
|
|
<ul class="org-ul">
|
|
<li>\[ \hat{V}_{\text{ne}} = \sum_{A=1}^{N_\text{nucl}}
|
|
\sum_{i=1}^{N_\text{elec}} \frac{-Z_A }{\vert \mathbf{R}_A -
|
|
\mathbf{r}_i \vert} \] : electron-nucleus attractive potential,</li>
|
|
<li>\[ \hat{T}_{\text{e}} =
|
|
\sum_{i=1}^{N_\text{elec}} -\frac{1}{2}\hat{\Delta}_i \] : electronic kinetic energy</li>
|
|
<li>\(\hat{h} = \hat{T}_\text{e} + \hat{V}_\text{ne} + \hat{V}_\text{ECP}\) : core electronic Hamiltonian</li>
|
|
</ul>
|
|
|
|
<p>
|
|
The one-electron integrals for a one-electron operator \(\hat{O}\) are
|
|
\[ \langle p \vert \hat{O} \vert q \rangle \], returned as a matrix
|
|
over atomic orbitals.
|
|
</p>
|
|
|
|
<table id="org74a58e4" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>overlap</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert q \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>kinetic</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert \hat{T}_e \vert q \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>potential_n_e</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert \hat{V}_{\text{ne}} \vert q \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ecp</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert \hat{V}_{\text{ecp}} \vert q \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>core_hamiltonian</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert \hat{h} \vert q \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>overlap_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert q \rangle\) (imaginary part) (imaginary part)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>kinetic_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert \hat{T}_e \vert q \rangle\) (imaginary part)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>potential_n_e_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert \hat{V}_{\text{ne}} \vert q \rangle\) (imaginary part)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ecp_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert \hat{V}_{\text{ECP}} \vert q \rangle\) (imaginary part)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>core_hamiltonian_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num)</code></td>
|
|
<td class="org-left">\(\langle p \vert \hat{h} \vert q \rangle\) (imaginary part)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgd3212ce" class="outline-3">
|
|
<h3 id="ao_two_e"><a id="orgd3212ce"></a><span class="section-number-3">6.2</span> Two-electron integrals (<code>ao_2e_int</code> group)</h3>
|
|
<div class="outline-text-3" id="text-ao_two_e">
|
|
<p>
|
|
The two-electron integrals for a two-electron operator \(\hat{O}\) are
|
|
\[ \langle p q \vert \hat{O} \vert r s \rangle \] in physicists
|
|
notation or \[ ( pr \vert \hat{O} \vert qs ) \] in chemists
|
|
notation, where \(p,q,r,s\) are indices over atomic orbitals.
|
|
</p>
|
|
|
|
<p>
|
|
Functions are provided to get the indices in physicists or chemists
|
|
notation.
|
|
</p>
|
|
|
|
<ul class="org-ul">
|
|
<li>\[ \hat{W}_{\text{ee}} = \sum_{i=2}^{N_\text{elec}} \sum_{j=1}^{i-1} \frac{1}{\vert \mathbf{r}_i - \mathbf{r}_j \vert} \] : electron-electron repulsive potential operator.</li>
|
|
<li>\[ \hat{W}^{lr}_{\text{ee}} = \sum_{i=2}^{N_\text{elec}}
|
|
\sum_{j=1}^{i-1} \frac{\text{erf}(\vert \mathbf{r}_i -
|
|
\mathbf{r}_j \vert)}{\vert \mathbf{r}_i - \mathbf{r}_j \vert} \] : electron-electron long range potential</li>
|
|
</ul>
|
|
|
|
<table id="org63ecf35" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>eri</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num, ao.num, ao.num)</code></td>
|
|
<td class="org-left">Electron repulsion integrals</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_lr</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num, ao.num, ao.num)</code></td>
|
|
<td class="org-left">Long-range Electron repulsion integrals</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org4baba03" class="outline-2">
|
|
<h2 id="org4baba03"><span class="section-number-2">7</span> Molecular orbitals (mo group)</h2>
|
|
<div class="outline-text-2" id="text-7">
|
|
<table id="orgb9cfa11" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>type</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Free text to identify the set of MOs (HF, Natural, Local, CASSCF, <i>etc</i>)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of MOs</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>coefficient</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, mo.num)</code></td>
|
|
<td class="org-left">MO coefficients (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>coefficient_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(ao.num, mo.num)</code></td>
|
|
<td class="org-left">MO coefficients (imaginary part, for periodic calculations)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>class</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"><code>(mo.num)</code></td>
|
|
<td class="org-left">Choose among: Core, Inactive, Active, Virtual, Deleted</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>symmetry</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"><code>(mo.num)</code></td>
|
|
<td class="org-left">Symmetry in the point group</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>occupation</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num)</code></td>
|
|
<td class="org-left">Occupation number</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="outline-container-orgfada648" class="outline-3">
|
|
<h3 id="orgfada648"><span class="section-number-3">7.1</span> One-electron integrals (<code>mo_1e_int</code> group)</h3>
|
|
<div class="outline-text-3" id="text-7-1">
|
|
<p>
|
|
The operators as the same as those defined in the
|
|
<a href="#ao_one_e">AO one-electron integrals section</a>. Here, the integrals are given in
|
|
the basis of molecular orbitals.
|
|
</p>
|
|
|
|
<table id="orgf0be913" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>overlap</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert j \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>kinetic</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert \hat{T}_e \vert j \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>potential_n_e</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert \hat{V}_{\text{ne}} \vert j \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ecp</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert \hat{V}_{\text{ECP}} \vert j \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>core_hamiltonian</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert \hat{h} \vert j \rangle\) (real part, general case)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>overlap_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert j \rangle\) (imaginary part) (imaginary part)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>kinetic_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert \hat{T}_e \vert j \rangle\) (imaginary part)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>potential_n_e_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert \hat{V}_{\text{ne}} \vert j \rangle\) (imaginary part)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ecp_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert \hat{V}_{\text{ECP}} \vert j \rangle\) (imaginary part)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>core_hamiltonian_im</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">\(\langle i \vert \hat{h} \vert j \rangle\) (imaginary part)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org37c0a71" class="outline-3">
|
|
<h3 id="org37c0a71"><span class="section-number-3">7.2</span> Two-electron integrals (<code>mo_2e_int</code> group)</h3>
|
|
<div class="outline-text-3" id="text-7-2">
|
|
<p>
|
|
The operators as the same as those defined in the
|
|
<a href="#ao_two_e">AO two-electron integrals section</a>. Here, the integrals are given in
|
|
the basis of molecular orbitals.
|
|
</p>
|
|
|
|
<table id="org774a79f" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>eri</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, mo.num, mo.num)</code></td>
|
|
<td class="org-left">Electron repulsion integrals</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_lr</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, mo.num, mo.num)</code></td>
|
|
<td class="org-left">Long-range Electron repulsion integrals</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org0258065" class="outline-2">
|
|
<h2 id="org0258065"><span class="section-number-2">8</span> Slater determinants (determinant group)</h2>
|
|
<div class="outline-text-2" id="text-8">
|
|
<p>
|
|
The configuration interaction (CI) wave function \(\Psi\)
|
|
can be expanded in the basis of Slater determinants \(D_I\) as follows
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\Psi = \sum_I C_I D_I
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
For relatively small expansions, a given determinant can be represented as a list of occupied orbitals.
|
|
However, this becomes unfeasible for larger expansions and requires more advanced data structures.
|
|
The bit field representation is used here, namely a given determinant is represented as \(N_{\text{int}}\)
|
|
64-bit integers where j-th bit is set to 1 if there is an electron in the j-th orbital and 0 otherwise.
|
|
This gives access to larger determinant expansions by optimising the storage of the determinant lists
|
|
in the memory.
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
D_I = \alpha_1 \alpha_2 \ldots \alpha_{n\uparrow} \beta_1 \beta_2 \ldots \beta_{n\downarrow}
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
where \(\alpha\) and \(\beta\) denote $↑$-spin and $↓$-spin electrons, respectively,
|
|
\(n\uparrow\) and \(n\downarrow\) correspond to <code>electron.up_num</code> and <code>electron.dn_num</code>, respectively.
|
|
</p>
|
|
|
|
<table id="orga13cf10" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>num</code></td>
|
|
<td class="org-left"><code>dim readonly</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of determinants</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>list</code></td>
|
|
<td class="org-left"><code>int special</code></td>
|
|
<td class="org-left"><code>(determinant.num)</code></td>
|
|
<td class="org-left">List of determinants as integer bit fields</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>coefficient</code></td>
|
|
<td class="org-left"><code>float special</code></td>
|
|
<td class="org-left"><code>(state.num,determinant.num)</code></td>
|
|
<td class="org-left">Coefficients of the determinants from the CI expansion</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgb64b8a4" class="outline-2">
|
|
<h2 id="orgb64b8a4"><span class="section-number-2">9</span> Excited states (state group)</h2>
|
|
<div class="outline-text-2" id="text-9">
|
|
<p>
|
|
By default, the <code>determinant</code> group corresponds to the ground state.
|
|
However, it should be also possible to store the coefficients that
|
|
correspond to excited state wave functions for the same set of
|
|
determinants. This is the goal of the present group
|
|
</p>
|
|
|
|
<table id="orgb40c2fe" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of states (including the ground state)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>label</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"><code>(state.num)</code></td>
|
|
<td class="org-left">Label of a given state (e.g. 'S' for singlets)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orga35ed54" class="outline-2">
|
|
<h2 id="orga35ed54"><span class="section-number-2">10</span> Reduced density matrices (rdm group)</h2>
|
|
<div class="outline-text-2" id="text-10">
|
|
<p>
|
|
The reduced density matrices are defined in the basis of molecular
|
|
orbitals.
|
|
</p>
|
|
|
|
<p>
|
|
The $↑$-spin and $↓$-spin components of the one-body
|
|
density matrix are given by
|
|
</p>
|
|
\begin{eqnarray*}
|
|
\gamma_{ij}^{\uparrow} &=& \langle \Psi | \hat{a}^{\dagger}_{j\alpha}\, \hat{a}_{i\alpha} | \Psi \rangle \\
|
|
\gamma_{ij}^{\downarrow} &=& \langle \Psi | \hat{a}^{\dagger}_{j\beta} \, \hat{a}_{i\beta} | \Psi \rangle
|
|
\end{eqnarray*}
|
|
<p>
|
|
and the spin-summed one-body density matrix is
|
|
\[
|
|
\gamma_{ij} = \gamma^{\uparrow}_{ij} + \gamma^{\downarrow}_{ij}
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
The \(\uparrow \uparrow\), \(\downarrow \downarrow\), \(\uparrow \downarrow\), \(\downarrow \uparrow\)
|
|
components of the two-body density matrix are given by
|
|
</p>
|
|
\begin{eqnarray*}
|
|
\Gamma_{ijkl}^{\uparrow \uparrow} &=&
|
|
\langle \Psi | \hat{a}^{\dagger}_{k\alpha}\, \hat{a}^{\dagger}_{l\alpha} \hat{a}_{j\alpha}\, \hat{a}_{i\alpha} | \Psi \rangle \\
|
|
\Gamma_{ijkl}^{\downarrow \downarrow} &=&
|
|
\langle \Psi | \hat{a}^{\dagger}_{k\beta}\, \hat{a}^{\dagger}_{l\beta} \hat{a}_{j\beta}\, \hat{a}_{i\beta} | \Psi \rangle \\
|
|
\Gamma_{ijkl}^{\uparrow \downarrow} &=&
|
|
\langle \Psi | \hat{a}^{\dagger}_{k\alpha}\, \hat{a}^{\dagger}_{l\beta} \hat{a}_{j\beta}\, \hat{a}_{i\alpha} | \Psi \rangle \\
|
|
\Gamma_{ijkl}^{\downarrow \uparrow} &=&
|
|
\langle \Psi | \hat{a}^{\dagger}_{k\beta}\, \hat{a}^{\dagger}_{l\alpha} \hat{a}_{j\alpha}\, \hat{a}_{i\beta} | \Psi \rangle \\
|
|
\end{eqnarray*}
|
|
<p>
|
|
and the spin-summed one-body density matrix is
|
|
\[
|
|
\Gamma_{ijkl} = \Gamma_{ijkl}^{\uparrow \uparrow} +
|
|
\Gamma_{ijkl}^{\downarrow \downarrow} + \Gamma_{ijkl}^{\uparrow \downarrow} +
|
|
\Gamma_{ijkl}^{\downarrow \uparrow}
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
The total energy can be computed as:
|
|
\[
|
|
E = E_{\text{NN}} + \sum_{ij} \gamma_{ij} \langle j|h|i \rangle +
|
|
\frac{1}{2} \sum_{ijlk} \Gamma_{ijkl} \langle k l | i j \rangle
|
|
\]
|
|
</p>
|
|
|
|
<table id="org4371d49" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>1e</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">One body density matrix</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>1e_up</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">↑-spin component of the one body density matrix</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>1e_dn</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num)</code></td>
|
|
<td class="org-left">↓-spin component of the one body density matrix</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, mo.num, mo.num)</code></td>
|
|
<td class="org-left">Two-body reduced density matrix (spin trace)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_upup</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, mo.num, mo.num)</code></td>
|
|
<td class="org-left">↑↑ component of the two-body reduced density matrix</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_dndn</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, mo.num, mo.num)</code></td>
|
|
<td class="org-left">↓↓ component of the two-body reduced density matrix</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_updn</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, mo.num, mo.num)</code></td>
|
|
<td class="org-left">↑↓ component of the two-body reduced density matrix</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_dnup</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, mo.num, mo.num)</code></td>
|
|
<td class="org-left">↓↑ component of the two-body reduced density matrix</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org9f18e1b" class="outline-2">
|
|
<h2 id="org9f18e1b"><span class="section-number-2">11</span> Cell (cell group)</h2>
|
|
<div class="outline-text-2" id="text-11">
|
|
<table id="orga96a3f0" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>a</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(3)</code></td>
|
|
<td class="org-left">First unit cell vector</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>b</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(3)</code></td>
|
|
<td class="org-left">Second unit cell vector</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>c</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(3)</code></td>
|
|
<td class="org-left">Third unit cell vector</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org5c34c17" class="outline-2">
|
|
<h2 id="org5c34c17"><span class="section-number-2">12</span> Periodic boundary calculations (pbc group)</h2>
|
|
<div class="outline-text-2" id="text-12">
|
|
<table id="org937fba7" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>periodic</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left"><code>1</code>: true or <code>0</code>: false</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>k_point</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(3)</code></td>
|
|
<td class="org-left">k-point sampling</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org0d4ac51" class="outline-2">
|
|
<h2 id="org0d4ac51"><span class="section-number-2">13</span> Quantum Monte Carlo data (qmc group)</h2>
|
|
<div class="outline-text-2" id="text-13">
|
|
<p>
|
|
In quantum Monte Carlo calculations, the wave function is evaluated
|
|
at points of the 3N-dimensional space. Some algorithms require multiple
|
|
independent <i>walkers</i>, so it is possible to store multiple coordinates,
|
|
as well as some quantities evaluated at those points.
|
|
</p>
|
|
|
|
<p>
|
|
By convention, the electron coordinates contain first all the electrons
|
|
of $↑$-spin and then all the $↓$-spin.
|
|
</p>
|
|
|
|
<table id="orga58de5b" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="org-left">Variable</th>
|
|
<th scope="col" class="org-left">Type</th>
|
|
<th scope="col" class="org-left">Dimensions</th>
|
|
<th scope="col" class="org-left">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left"><code>num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of 3N-dimensional points</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>point</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(3, electron.num, qmc.num)</code></td>
|
|
<td class="org-left">3N-dimensional points</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>psi</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(qmc.num)</code></td>
|
|
<td class="org-left">Wave function evaluated at the points</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>e_loc</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(qmc.num)</code></td>
|
|
<td class="org-left">Local energy evaluated at the points</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="postamble" class="status">
|
|
<p class="author">Author: TREX-CoE</p>
|
|
<p class="date">Created: 2022-05-29 Sun 09:35</p>
|
|
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
|
</div>
|
|
</body>
|
|
</html>
|