mirror of
https://github.com/TREX-CoE/trexio.git
synced 2024-11-05 05:34:04 +01:00
3230 lines
100 KiB
HTML
3230 lines
100 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>
|
|
<!-- 2024-03-13 Wed 13:25 -->
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Data stored in TREXIO</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; }
|
|
.equation-container {
|
|
display: table;
|
|
text-align: center;
|
|
width: 100%;
|
|
}
|
|
.equation {
|
|
vertical-align: middle;
|
|
}
|
|
.equation-label {
|
|
display: table-cell;
|
|
text-align: right;
|
|
vertical-align: middle;
|
|
}
|
|
.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-2020 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-2020 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", "0");
|
|
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-2020 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">Data stored in TREXIO</h1>
|
|
<div id="table-of-contents">
|
|
<h2>Table of Contents</h2>
|
|
<div id="text-table-of-contents">
|
|
<ul>
|
|
<li><a href="#org1edba75">1. Metadata (metadata group)</a></li>
|
|
<li><a href="#org3b89986">2. System</a>
|
|
<ul>
|
|
<li><a href="#org4e1707a">2.1. Nucleus (nucleus group)</a></li>
|
|
<li><a href="#org0dbb773">2.2. Cell (cell group)</a></li>
|
|
<li><a href="#org43973d3">2.3. Periodic boundary calculations (pbc group)</a></li>
|
|
<li><a href="#org87b520d">2.4. Electron (electron group)</a></li>
|
|
<li><a href="#orgfd7c1e9">2.5. Ground or excited states (state group)</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#org8fc358f">3. Basis functions</a>
|
|
<ul>
|
|
<li><a href="#org3b1a471">3.1. Basis set (basis group)</a>
|
|
<ul>
|
|
<li><a href="#orge94f753">3.1.1. Gaussian and Slater-type orbitals</a></li>
|
|
<li><a href="#orgd6e0f75">3.1.2. Numerical orbitals</a></li>
|
|
<li><a href="#orgaf21f18">3.1.3. Plane waves</a></li>
|
|
<li><a href="#orgc4f6bc6">3.1.4. Data definitions</a></li>
|
|
<li><a href="#org7bd20bc">3.1.5. Example</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#org818d02e">3.2. Effective core potentials (ecp group)</a>
|
|
<ul>
|
|
<li><a href="#org44395cf">3.2.1. Example</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#org704500b">3.3. Numerical integration grid (grid group)</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#orgbda7c9a">4. Orbitals</a>
|
|
<ul>
|
|
<li><a href="#org65d637b">4.1. Atomic orbitals (ao group)</a>
|
|
<ul>
|
|
<li><a href="#ao_one_e">4.1.1. One-electron integrals (<code>ao_1e_int</code> group)</a></li>
|
|
<li><a href="#ao_two_e">4.1.2. Two-electron integrals (<code>ao_2e_int</code> group)</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#org88f32c1">4.2. Molecular orbitals (mo group)</a>
|
|
<ul>
|
|
<li><a href="#org0c8c1d6">4.2.1. One-electron integrals (<code>mo_1e_int</code> group)</a></li>
|
|
<li><a href="#orgd02df6d">4.2.2. Two-electron integrals (<code>mo_2e_int</code> group)</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#org5aadd9e">5. Multi-determinant information</a>
|
|
<ul>
|
|
<li><a href="#orgca34e52">5.1. Slater determinants (determinant group)</a></li>
|
|
<li><a href="#orge928f95">5.2. Configuration state functions (csf group)</a></li>
|
|
<li><a href="#org540b583">5.3. Amplitudes (amplitude group)</a></li>
|
|
<li><a href="#org5cdabb4">5.4. Reduced density matrices (rdm group)</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#org0c8f2e3">6. Correlation factors</a>
|
|
<ul>
|
|
<li><a href="#org4320379">6.1. Jastrow factor (jastrow group)</a>
|
|
<ul>
|
|
<li><a href="#orgf2d8771">6.1.1. CHAMP</a></li>
|
|
<li><a href="#org733f718">6.1.2. Mu</a></li>
|
|
<li><a href="#org7886e80">6.1.3. Table of values</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#org2e3fef3">7. Quantum Monte Carlo data (qmc group)</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<p>
|
|
For simplicity, the singular form is always used for the names of
|
|
groups and attributes, and all data are stored 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>
|
|
|
|
<div id="outline-container-org1edba75" class="outline-2">
|
|
<h2 id="org1edba75"><span class="section-number-2">1</span> Metadata (metadata group)</h2>
|
|
<div class="outline-text-2" id="text-1">
|
|
<p>
|
|
As we expect TREXIO files to be archived in open-data repositories,
|
|
we 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="org4fdfcc5" 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> The <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-org3b89986" class="outline-2">
|
|
<h2 id="org3b89986"><span class="section-number-2">2</span> System</h2>
|
|
<div class="outline-text-2" id="text-2">
|
|
</div>
|
|
<div id="outline-container-org4e1707a" class="outline-3">
|
|
<h3 id="org4e1707a"><span class="section-number-3">2.1</span> Nucleus (nucleus group)</h3>
|
|
<div class="outline-text-3" id="text-2-1">
|
|
<p>
|
|
The nuclei are considered as fixed point charges. Coordinates are
|
|
given in Cartesian \((x,y,z)\) format.
|
|
</p>
|
|
|
|
<table id="orge719e94" 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-org0dbb773" class="outline-3">
|
|
<h3 id="org0dbb773"><span class="section-number-3">2.2</span> Cell (cell group)</h3>
|
|
<div class="outline-text-3" id="text-2-2">
|
|
<p>
|
|
3 Lattice vectors to define a box containing the system, for example
|
|
used in periodic calculations.
|
|
</p>
|
|
|
|
<table id="org3527c8f" 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 real space lattice 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 real space lattice 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 real space lattice vector</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>G_a</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(3)</code></td>
|
|
<td class="org-left">First reciprocal space lattice vector</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>G_b</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(3)</code></td>
|
|
<td class="org-left">Second reciprocal space lattice vector</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>G_c</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(3)</code></td>
|
|
<td class="org-left">Third reciprocal space lattice vector</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>two_pi</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left"><code>0</code> or <code>1</code>. If <code>two_pi=1</code>, \(2\pi\) is included in the reciprocal vectors.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org43973d3" class="outline-3">
|
|
<h3 id="org43973d3"><span class="section-number-3">2.3</span> Periodic boundary calculations (pbc group)</h3>
|
|
<div class="outline-text-3" id="text-2-3">
|
|
<p>
|
|
A single $k$-point per TREXIO file can be stored. The $k$-point is
|
|
defined in this group.
|
|
</p>
|
|
|
|
<table id="org6982719" 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-org87b520d" class="outline-3">
|
|
<h3 id="org87b520d"><span class="section-number-3">2.4</span> Electron (electron group)</h3>
|
|
<div class="outline-text-3" id="text-2-4">
|
|
<p>
|
|
The chemical system consists of nuclei and electrons, where the
|
|
nuclei are considered as fixed point charges with Cartesian
|
|
coordinates. The wave function is stored in the spin-free
|
|
formalism, and therefore, it is necessary for the user to
|
|
explicitly store the number of electrons with spin up
|
|
(\(N_\uparrow\)) and spin down (\(N_\downarrow\)). These numbers
|
|
correspond to the normalization of the spin-up and spin-down
|
|
single-particle reduced density matrices.
|
|
</p>
|
|
|
|
<p>
|
|
We consider wave functions expressed in the spin-free formalism, where
|
|
the number of ↑ and ↓ electrons is fixed.
|
|
</p>
|
|
|
|
|
|
<table id="orge89e782" 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-orgfd7c1e9" class="outline-3">
|
|
<h3 id="orgfd7c1e9"><span class="section-number-3">2.5</span> Ground or excited states (state group)</h3>
|
|
<div class="outline-text-3" id="text-2-5">
|
|
<p>
|
|
This group contains information about excited states. Since only a
|
|
single state can be stored in a TREXIO file, it is possible to store
|
|
in the main TREXIO file the names of auxiliary files containing the
|
|
information of the other states.
|
|
</p>
|
|
|
|
<p>
|
|
The <code>file_name</code> and <code>label</code> arrays have to be written only for the
|
|
main file, e.g. the one containing the ground state wave function
|
|
together with the basis set parameters, molecular orbitals,
|
|
integrals, etc.
|
|
The <code>id</code> and <code>current_label</code> attributes need to be specified for each file.
|
|
</p>
|
|
|
|
<table id="orgd1e5f38" 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>id</code></td>
|
|
<td class="org-left"><code>index</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Index of the current state (0 is ground state)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>energy</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Energy of the current state</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>current_label</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Label of the current 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">Labels of all states</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>file_name</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"><code>(state.num)</code></td>
|
|
<td class="org-left">Names of the TREXIO files linked to the current one (i.e. containing data for other states)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org8fc358f" class="outline-2">
|
|
<h2 id="org8fc358f"><span class="section-number-2">3</span> Basis functions</h2>
|
|
<div class="outline-text-2" id="text-3">
|
|
</div>
|
|
<div id="outline-container-org3b1a471" class="outline-3">
|
|
<h3 id="org3b1a471"><span class="section-number-3">3.1</span> Basis set (basis group)</h3>
|
|
<div class="outline-text-3" id="text-3-1">
|
|
</div>
|
|
<div id="outline-container-orge94f753" class="outline-4">
|
|
<h4 id="orge94f753"><span class="section-number-4">3.1.1</span> Gaussian and Slater-type orbitals</h4>
|
|
<div class="outline-text-4" id="text-3-1-1">
|
|
<p>
|
|
We consider here basis functions centered on nuclei. Hence, it is
|
|
possibile to define <i>dummy atoms</i> to place basis functions in
|
|
arbitrary 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>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgd6e0f75" class="outline-4">
|
|
<h4 id="orgd6e0f75"><span class="section-number-4">3.1.2</span> Numerical orbitals</h4>
|
|
<div class="outline-text-4" id="text-3-1-2">
|
|
<p>
|
|
Trexio supports numerical atom centered orbitals. The implementation is
|
|
based on the approach of FHI-aims [Blum, V. et al; Ab initio molecular
|
|
simulations with numeric atom-centered orbitals; Computer Physics
|
|
Communications 2009]. These orbitals are
|
|
defined by the atom they are centered on, their angular momentum and a
|
|
radial function \(R_s\), which is of the form
|
|
\[
|
|
R_s(\mathbf{r}) = \mathcal{N}_s \frac{u_i(\mathbf{r})}{r^{-n_s}}.
|
|
\]
|
|
Where \(u_i(\mathbf{r})\) is numerically tabulated on a dense logarithmic
|
|
grid. It is constructed to vanish for any \(\mathbf{r}\)
|
|
outside of the grid. The reference points are stored in <code>nao_grid_r</code>
|
|
and <code>nao_grid_phi</code>. Additionaly, a separate spline for the first and second
|
|
derivative of \(u(\mathbf{r})\) can be stored in <code>nao_grid_grad</code> and <code>nao_grid_lap</code>.
|
|
Storing them in this form allows to calculate the actual first and
|
|
second derivatives easily as follows:
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\frac{\partial \phi}{\partial x} = \frac{x}{r^2}\left( u^\prime\left(r\right) - \frac{u\left(r\right)}{r}\right)
|
|
\]
|
|
\[
|
|
\frac{\partial^2 \phi}{\partial x^2} = \frac{1}{r^3}\left(x^2 u^{\prime\prime}(r) + \left( 3x^2-r^2\right) \left( \frac{u(r)}{r^2} - \frac{u'(r)}{r}\right) \right)
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
The index of the first data point for each shell is stored in
|
|
<code>nao_grid_start</code>, the number of data points per spline is stored
|
|
in <code>nao_grid_size</code> for convenience.
|
|
</p>
|
|
|
|
<p>
|
|
What kind of spline is used can be provided in the <code>interpolator_kind</code> field.
|
|
For example, FHI-aims uses a cubic spline, so the <code>interpolator_kind</code> is
|
|
\"Polynomial\" and the <code>interp_coeff_cnt</code> is \(4\). In this case, the first
|
|
interpolation coefficient per data point is the absolute term, the second is for
|
|
the linear term etc.
|
|
The interpolation coefficients for the wave function are given in the
|
|
<code>interpolator_phi</code> array. The <code>interpolator_grad</code> and <code>interpolator_lap</code>
|
|
arrays provide a spline for the gradient and Laplacian, respectively.
|
|
The argument passed to the interpolants is on the logarithmic scale of
|
|
the reference points: If the argument is an integer \(i\), the interpolant
|
|
will return the value of \(u(\mathbf{r})\) at the $i$th reference point.
|
|
A radius is converted to this scale by (note the zero-indexing)
|
|
\[
|
|
i_{\log} = \frac{1}{c} \cdot \log \left( \frac{r}{r_0} \right)
|
|
\]
|
|
where
|
|
\[
|
|
c = \log\left(\frac{r_1}{r_0}\right)
|
|
\]
|
|
For convenience, this conversion and functions to evaluate the splines
|
|
are provided with trexio. Since these implementations are not adapted to
|
|
a specific software architecture, a programm using these orbitals should
|
|
reimplement them with consideration for its specific needs.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgaf21f18" class="outline-4">
|
|
<h4 id="orgaf21f18"><span class="section-number-4">3.1.3</span> Plane waves</h4>
|
|
<div class="outline-text-4" id="text-3-1-3">
|
|
<p>
|
|
A plane wave is defined as
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\chi_j(\mathbf{r}) = \exp \left( -i \mathbf{G}_j \cdot \mathbf{r} \right)
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
The basis set is defined as the array of $k$-points in the
|
|
reciprocal space \(\mathbf{G}_j\), defined in the <code>pbc</code> group. The
|
|
kinetic energy cutoff <code>e_cut</code> is the only input data relevant to
|
|
plane waves.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgc4f6bc6" class="outline-4">
|
|
<h4 id="orgc4f6bc6"><span class="section-number-4">3.1.4</span> Data definitions</h4>
|
|
<div class="outline-text-4" id="text-3-1-4">
|
|
<table id="org229e8b4" 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" />
|
|
|
|
<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>
|
|
<th scope="col" class="org-left"> </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", "Slater", "Numerical" or "PW" for plane waves</td>
|
|
<td class="org-left"> </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>
|
|
<td class="org-left"> </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>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>nao_grid_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Total number of grid points for numerical orbitals</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>interp_coeff_cnt</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of coefficients for the numerical orbital interpolator</td>
|
|
<td class="org-left"> </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>
|
|
<td class="org-left"> </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>
|
|
<td class="org-left"> </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>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>r_power</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"><code>(basis.shell_num)</code></td>
|
|
<td class="org-left">Power to which \(r\) is raised (\(n_s\))</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>nao_grid_start</code></td>
|
|
<td class="org-left"><code>index</code></td>
|
|
<td class="org-left"><code>(basis.shell_num)</code></td>
|
|
<td class="org-left">Index of the first data point for a given numerical orbital</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>nao_grid_size</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"><code>(basis.shell_num)</code></td>
|
|
<td class="org-left">Number of data points per numerical orbital</td>
|
|
<td class="org-left"> </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>
|
|
<td class="org-left"> </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>
|
|
<td class="org-left"> </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>
|
|
<td class="org-left"> </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>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>e_cut</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Energy cut-off for plane-wave calculations</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>nao_grid_radius</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.nao_grid_num)</code></td>
|
|
<td class="org-left">Radii of grid points for numerical orbitals</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>nao_grid_phi</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.nao_grid_num)</code></td>
|
|
<td class="org-left">Wave function values for numerical orbitals</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>nao_grid_grad</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.nao_grid_num)</code></td>
|
|
<td class="org-left">Radial gradient of numerical orbitals</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>nao_grid_lap</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.nao_grid_num)</code></td>
|
|
<td class="org-left">Laplacian of numerical orbitals</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>interpolator_kind</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Kind of spline, e.g. "Polynomial"</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>interpolator_phi</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.interp_coeff_cnt,basis.nao_grid_num)</code></td>
|
|
<td class="org-left">Coefficients for numerical orbital interpolation function</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>interpolator_grad</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.interp_coeff_cnt,basis.nao_grid_num)</code></td>
|
|
<td class="org-left">Coefficients for numerical orbital gradient interpolation function</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>interpolator_lap</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(basis.interp_coeff_cnt,basis.nao_grid_num)</code></td>
|
|
<td class="org-left">Coefficients for numerical orbital laplacian interpolation function</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org7bd20bc" class="outline-4">
|
|
<h4 id="org7bd20bc"><span class="section-number-4">3.1.5</span> Example</h4>
|
|
<div class="outline-text-4" id="text-3-1-5">
|
|
<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-org818d02e" class="outline-3">
|
|
<h3 id="org818d02e"><span class="section-number-3">3.2</span> Effective core potentials (ecp group)</h3>
|
|
<div class="outline-text-3" id="text-3-2">
|
|
<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}}
|
|
\delta V_{A \ell}\sum_{m=-\ell}^{\ell} | Y_{\ell m} \rangle \langle Y_{\ell m} |
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
The first term in this equation is attributed to the local channel, while
|
|
the remaining terms correspond to non-local channel projections. \(\ell_{\max}\)
|
|
refers to the maximum angular momentum in the non-local component of the ECP.
|
|
The functions \(\delta V_{A \ell}\) and \(V_{A \ell_{\max}+1}\) are parameterized as:
|
|
</p>
|
|
\begin{eqnarray}
|
|
\delta 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 } \nonumber\\
|
|
V_{A \ell_{\max}+1}(\mathbf{r}) &=& -\frac{Z_\text{eff}}{|\mathbf{r}-\mathbf{R}_{A}|}+\delta V_{A \ell_{\max}+1}(\mathbf{r})
|
|
\end{eqnarray}
|
|
<p>
|
|
where \(Z_\text{eff}\) is the effective nuclear charge of the center.
|
|
</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="orgb6fba56" 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. The 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-org44395cf" class="outline-4">
|
|
<h4 id="org44395cf"><span class="section-number-4">3.2.1</span> Example</h4>
|
|
<div class="outline-text-4" id="text-3-2-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-org704500b" class="outline-3">
|
|
<h3 id="org704500b"><span class="section-number-3">3.3</span> Numerical integration grid (grid group)</h3>
|
|
<div class="outline-text-3" id="text-3-3">
|
|
<p>
|
|
In some applications, such as DFT calculations, integrals have to
|
|
be computed numerically on a grid. A common choice for the angular
|
|
grid is the one proposed by Lebedev and Laikov
|
|
[Russian Academy of Sciences Doklady Mathematics, Volume 59, Number 3, 1999, pages 477-481].
|
|
For the radial grids, many approaches have been developed over the years.
|
|
</p>
|
|
|
|
<p>
|
|
The structure of this group is adapted for the <a href="https://github.com/dftlibs/numgrid">numgrid</a> library.
|
|
Feel free to submit a PR if you find missing options/functionalities.
|
|
</p>
|
|
|
|
<table id="orgbcba3cc" 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>description</code></td>
|
|
<td class="org-left"><code>str</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Details about the used quadratures can go here</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>rad_precision</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Radial precision parameter (not used in some schemes like Krack-Köster)</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 grid points</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>max_ang_num</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Maximum number of angular grid points (for pruning)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>min_ang_num</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Minimum number of angular grid points (for pruning)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>coord</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(grid.num)</code></td>
|
|
<td class="org-left">Discretized coordinate space</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>weight</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(grid.num)</code></td>
|
|
<td class="org-left">Grid weights according to a given partitioning (e.g. Becke)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ang_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of angular integration points (if used)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ang_coord</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(grid.ang_num)</code></td>
|
|
<td class="org-left">Discretized angular space (if used)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ang_weight</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(grid.ang_num)</code></td>
|
|
<td class="org-left">Angular grid weights (if used)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>rad_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of radial integration points (if used)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>rad_coord</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(grid.rad_num)</code></td>
|
|
<td class="org-left">Discretized radial space (if used)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>rad_weight</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(grid.rad_num)</code></td>
|
|
<td class="org-left">Radial grid weights (if used)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-orgbda7c9a" class="outline-2">
|
|
<h2 id="orgbda7c9a"><span class="section-number-2">4</span> Orbitals</h2>
|
|
<div class="outline-text-2" id="text-4">
|
|
</div>
|
|
<div id="outline-container-org65d637b" class="outline-3">
|
|
<h3 id="org65d637b"><span class="section-number-3">4.1</span> Atomic orbitals (ao group)</h3>
|
|
<div class="outline-text-3" id="text-4-1">
|
|
<p>
|
|
AOs are defined as
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\chi_i (\mathbf{r}) = \mathcal{N}_i'\, P_{\eta(i)}(\mathbf{r})\, R_{s(i)} (\mathbf{r})
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
where \(i\) is the atomic orbital index, \(P\) refers to either
|
|
polynomials or spherical harmonics, and \(s(i)\) specifies the shell
|
|
on which the AO is expanded.
|
|
</p>
|
|
|
|
<p>
|
|
\(\eta(i)\) denotes the chosen angular function. The AOs can be
|
|
expressed using real spherical harmonics or 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, the canonical (or alphabetical) ordering is
|
|
used,
|
|
</p>
|
|
|
|
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left" />
|
|
|
|
<col class="org-left" />
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td class="org-left">\(p\)</td>
|
|
<td class="org-left">\(p_x, p_y, p_z\)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left">\(d\)</td>
|
|
<td class="org-left">\(d_{xx}, d_{xy}, d_{xz}, d_{yy}, d_{yz}, d_{zz}\)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left">\(f\)</td>
|
|
<td class="org-left">\(f_{xxx}, f_{xxy}, f_{xxz}, f_{xyy}, f_{xyz}\),</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">\(f_{xzz}, f_{yyy}, f_{yyz}, f_{yzz}, f_{zzz}\)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left">\(\vdots\)</td>
|
|
<td class="org-left"> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p>
|
|
Note that for \(p\) orbitals in spherical coordinates, the ordering
|
|
is \(0,+1,-1\) which corresponds to \(p_z, p_x, p_y\).
|
|
</p>
|
|
|
|
<p>
|
|
\(\mathcal{N}_i'\) is a normalization factor that allows for different
|
|
normalization coefficients within a single shell, as in the GAMESS
|
|
convention where each individual function is unit-normalized.
|
|
Using GAMESS convention, the normalization factor of the shell
|
|
\(\mathcal{N}_d\) in the <code>basis</code> group is appropriate for instance
|
|
for the \(d_z^2\) function (i.e.
|
|
\(\mathcal{N}_{d}\equiv\mathcal{N}_{z^2}\)) but not for the \(d_{xy}\)
|
|
AO, so the correction factor \(\mathcal{N}_i'\) for \(d_{xy}\) in the
|
|
<code>ao</code> groups is the ratio \(\frac{\mathcal{N}_{xy}}{\mathcal{N}_{z^2}}\).
|
|
</p>
|
|
|
|
|
|
<table id="orgef1b278" 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 factor \(\mathcal{N}_i\)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="outline-container-org84594b4" class="outline-4">
|
|
<h4 id="ao_one_e"><span class="section-number-4">4.1.1</span> One-electron integrals (<code>ao_1e_int</code> group)</h4>
|
|
<div class="outline-text-4" 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="orgfe8be24" 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\)</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\)</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\)</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\)</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\)</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)</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-org5cbd7ca" class="outline-4">
|
|
<h4 id="ao_two_e"><span class="section-number-4">4.1.2</span> Two-electron integrals (<code>ao_2e_int</code> group)</h4>
|
|
<div class="outline-text-4" 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, where \(p,q,r,s\) are indices over atomic orbitals.
|
|
</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}(\mu\, \vert \mathbf{r}_i -
|
|
\mathbf{r}_j \vert)}{\vert \mathbf{r}_i - \mathbf{r}_j \vert} \] : electron-electron long range potential</li>
|
|
</ul>
|
|
|
|
<p>
|
|
The Cholesky decomposition of the integrals can also be stored:
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\langle ij | kl \rangle = \sum_{\alpha} G_{ik\alpha} G_{jl\alpha}
|
|
\]
|
|
</p>
|
|
|
|
<table id="org72831f1" 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>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_cholesky_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Cholesky vectors for ERI</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_cholesky</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num, ao_2e_int.eri_cholesky_num)</code></td>
|
|
<td class="org-left">Cholesky decomposition of the ERI</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_lr_cholesky_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Cholesky vectors for long range ERI</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_lr_cholesky</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(ao.num, ao.num, ao_2e_int.eri_lr_cholesky_num)</code></td>
|
|
<td class="org-left">Cholesky decomposition of the long range ERI</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org88f32c1" class="outline-3">
|
|
<h3 id="org88f32c1"><span class="section-number-3">4.2</span> Molecular orbitals (mo group)</h3>
|
|
<div class="outline-text-3" id="text-4-2">
|
|
<table id="org4abb734" 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</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)</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>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>energy</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(mo.num)</code></td>
|
|
<td class="org-left">For canonical MOs, corresponding eigenvalue</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>spin</code></td>
|
|
<td class="org-left"><code>int</code></td>
|
|
<td class="org-left"><code>(mo.num)</code></td>
|
|
<td class="org-left">For UHF wave functions, 0 is \(\alpha\) and 1 is \(\beta\)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="outline-container-org0c8c1d6" class="outline-4">
|
|
<h4 id="org0c8c1d6"><span class="section-number-4">4.2.1</span> One-electron integrals (<code>mo_1e_int</code> group)</h4>
|
|
<div class="outline-text-4" id="text-4-2-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="orgaea2037" 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\)</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\)</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\)</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\)</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\)</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)</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-orgd02df6d" class="outline-4">
|
|
<h4 id="orgd02df6d"><span class="section-number-4">4.2.2</span> Two-electron integrals (<code>mo_2e_int</code> group)</h4>
|
|
<div class="outline-text-4" id="text-4-2-2">
|
|
<p>
|
|
The operators are 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="orgf71d0db" 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>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_cholesky_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Cholesky vectors for ERI</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_cholesky</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, mo_2e_int.eri_cholesky_num)</code></td>
|
|
<td class="org-left">Cholesky decomposition of the ERI</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_lr_cholesky_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Cholesky vectors for long range ERI</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>eri_lr_cholesky</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, mo_2e_int.eri_lr_cholesky_num)</code></td>
|
|
<td class="org-left">Cholesky decomposition of the long range ERI</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org5aadd9e" class="outline-2">
|
|
<h2 id="org5aadd9e"><span class="section-number-2">5</span> Multi-determinant information</h2>
|
|
<div class="outline-text-2" id="text-5">
|
|
</div>
|
|
<div id="outline-container-orgca34e52" class="outline-3">
|
|
<h3 id="orgca34e52"><span class="section-number-3">5.1</span> Slater determinants (determinant group)</h3>
|
|
<div class="outline-text-3" id="text-5-1">
|
|
<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>
|
|
|
|
<p>
|
|
Note: the <code>special</code> attribute is present in the types, meaning that the source node is not
|
|
produced by the code generator.
|
|
</p>
|
|
|
|
<p>
|
|
An illustration on how to read determinants is presented in the <a href="./examples.html">examples</a>.
|
|
</p>
|
|
|
|
<table id="org8bd1962" 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 buffered</code></td>
|
|
<td class="org-left"><code>(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-orge928f95" class="outline-3">
|
|
<h3 id="orge928f95"><span class="section-number-3">5.2</span> Configuration state functions (csf group)</h3>
|
|
<div class="outline-text-3" id="text-5-2">
|
|
<p>
|
|
The configuration interaction (CI) wave function \(\Psi\) can be
|
|
expanded in the basis of <a href="https://en.wikipedia.org/wiki/Configuration_state_function">configuration state functions</a> (CSFs)
|
|
\(\Psi_I\) as follows
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\Psi = \sum_I C_I \psi_I.
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
Each CSF \(\psi_I\) is a linear combination of Slater determinants. Slater
|
|
determinants are stored in the <code>determinant</code> section. In this group
|
|
we store the CI coefficients in the basis of CSFs, and the
|
|
matrix \(\langle D_I | \psi_J \rangle\) needed to project the CSFs in
|
|
the basis of Slater determinants.
|
|
</p>
|
|
|
|
<table id="orgbacd28c" 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 CSFs</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>coefficient</code></td>
|
|
<td class="org-left"><code>float buffered</code></td>
|
|
<td class="org-left"><code>(csf.num)</code></td>
|
|
<td class="org-left">Coefficients \(C_I\) of the CSF expansion</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>det_coefficient</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(determinant.num,csf.num)</code></td>
|
|
<td class="org-left">Projection on the determinant basis</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org540b583" class="outline-3">
|
|
<h3 id="org540b583"><span class="section-number-3">5.3</span> Amplitudes (amplitude group)</h3>
|
|
<div class="outline-text-3" id="text-5-3">
|
|
<p>
|
|
The wave function may be expressed in terms of action of the cluster
|
|
operator \(\hat{T}\):
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\hat{T} = \hat{T}_1 + \hat{T}_2 + \hat{T}_3 + \dots
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
on a reference wave function \(\Psi\), where \(\hat{T}_1\) is the single excitation operator,
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\hat{T}_1 = \sum_{ia} t_{i}^{a}\, \hat{a}^\dagger_a \hat{a}_i,
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
\(\hat{T}_2\) is the double excitation operator,
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\hat{T}_2 = \frac{1}{4} \sum_{ijab} t_{ij}^{ab}\, \hat{a}^\dagger_a \hat{a}^\dagger_b \hat{a}_j \hat{a}_i,
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
<i>etc</i>. Indices \(i\), \(j\), \(a\) and \(b\) denote molecular orbital indices.
|
|
</p>
|
|
|
|
<p>
|
|
Wave functions obtained with perturbation theory or configuration
|
|
interaction are of the form
|
|
</p>
|
|
|
|
<p>
|
|
\[ |\Phi\rangle = \hat{T}|\Psi\rangle \]
|
|
</p>
|
|
|
|
<p>
|
|
and coupled-cluster wave functions are of the form
|
|
</p>
|
|
|
|
<p>
|
|
\[ |\Phi\rangle = e^{\hat{T}}| \Psi \rangle \]
|
|
</p>
|
|
|
|
<p>
|
|
The reference wave function is stored using the <code>determinant</code> and/or
|
|
<code>csf</code> groups, and the amplitudes are stored using the current group.
|
|
The attributes with the <code>exp</code> suffix correspond to exponentialized operators.
|
|
</p>
|
|
|
|
<p>
|
|
The order of the indices is chosen such that
|
|
</p>
|
|
<ul class="org-ul">
|
|
<li><code>t(i,a)</code> = \(t_{i}^{a}\).</li>
|
|
<li><code>t(i,j,a,b)</code> = \(t_{ij}^{ab}\),</li>
|
|
<li><code>t(i,j,k,a,b,c)</code> = \(t_{ijk}^{abc}\),</li>
|
|
<li><code>t(i,j,k,l,a,b,c,d)</code> = \(t_{ijkl}^{abcd}\),</li>
|
|
<li>\(\dots\)</li>
|
|
</ul>
|
|
|
|
<table id="org1744cea" 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>single</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num,mo.num)</code></td>
|
|
<td class="org-left">Single excitation amplitudes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>single_exp</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num,mo.num)</code></td>
|
|
<td class="org-left">Exponentialized single excitation amplitudes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>double</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">Double excitation amplitudes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>double_exp</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">Exponentialized double excitation amplitudes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>triple</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num,mo.num,mo.num,mo.num,mo.num,mo.num)</code></td>
|
|
<td class="org-left">Triple excitation amplitudes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>triple_exp</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num,mo.num,mo.num,mo.num,mo.num,mo.num)</code></td>
|
|
<td class="org-left">Exponentialized triple excitation amplitudes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>quadruple</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num,mo.num,mo.num,mo.num,mo.num,mo.num,mo.num,mo.num)</code></td>
|
|
<td class="org-left">Quadruple excitation amplitudes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>quadruple_exp</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num,mo.num,mo.num,mo.num,mo.num,mo.num,mo.num,mo.num)</code></td>
|
|
<td class="org-left">Exponentialized quadruple excitation amplitudes</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org5cdabb4" class="outline-3">
|
|
<h3 id="org5cdabb4"><span class="section-number-3">5.4</span> Reduced density matrices (rdm group)</h3>
|
|
<div class="outline-text-3" id="text-5-4">
|
|
<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\) 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
|
|
+ \langle \Psi | \hat{a}^{\dagger}_{l\alpha}\, \hat{a}^{\dagger}_{k\beta} \hat{a}_{i\beta}\, \hat{a}_{j\alpha} | \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}.
|
|
\]
|
|
</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>
|
|
|
|
|
|
<p>
|
|
To compress the storage, the Cholesky decomposition of the RDMs can
|
|
be stored:
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
\Gamma_{ijkl} = \sum_{\alpha} G_{ij\alpha} G_{kl\alpha}
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
Warning: as opposed to electron repulsion integrals, the
|
|
decomposition is made such that the Cholesky vectors are expanded
|
|
in a two-electron basis
|
|
\(f_{ij}(\mathbf{r}_1,\mathbf{r}_2) = \phi_i(\mathbf{r}_1) \phi_j(\mathbf{r}_2)\),
|
|
whereas in electron repulsion integrals each Cholesky vector is
|
|
expressed in a basis of a one-electron function
|
|
\(g_{ik}(\mathbf{r}_1) = \phi_i(\mathbf{r}_1) \phi_k(\mathbf{r}_1)\).
|
|
</p>
|
|
|
|
<table id="org0b7a863" 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>1e_transition</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left">~(mo.num, mo.num, state.num, state.num)</td>
|
|
<td class="org-left">One-particle transition density matrices</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_transition</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left">~(mo.num, mo.num, mo.num, mo.num, state.num, state.num)</td>
|
|
<td class="org-left">Two-particle transition density matrices</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_cholesky_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Cholesky vectors</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_cholesky</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, rdm.2e_cholesky_num)</code></td>
|
|
<td class="org-left">Cholesky decomposition of the two-body RDM (spin trace)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_upup_cholesky_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Cholesky vectors</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_upup_cholesky</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, rdm.2e_upup_cholesky_num)</code></td>
|
|
<td class="org-left">Cholesky decomposition of the two-body RDM (↑↑)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_dndn_cholesky_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Cholesky vectors</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_dndn_cholesky</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, rdm.2e_dndn_cholesky_num)</code></td>
|
|
<td class="org-left">Cholesky decomposition of the two-body RDM (↓↓)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_updn_cholesky_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Cholesky vectors</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>2e_updn_cholesky</code></td>
|
|
<td class="org-left"><code>float sparse</code></td>
|
|
<td class="org-left"><code>(mo.num, mo.num, rdm.2e_updn_cholesky_num)</code></td>
|
|
<td class="org-left">Cholesky decomposition of the two-body RDM (↑↓)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org0c8f2e3" class="outline-2">
|
|
<h2 id="org0c8f2e3"><span class="section-number-2">6</span> Correlation factors</h2>
|
|
<div class="outline-text-2" id="text-6">
|
|
</div>
|
|
<div id="outline-container-org4320379" class="outline-3">
|
|
<h3 id="org4320379"><span class="section-number-3">6.1</span> Jastrow factor (jastrow group)</h3>
|
|
<div class="outline-text-3" id="text-6-1">
|
|
<p>
|
|
The Jastrow factor is an $N$-electron function which multiplies the CI
|
|
expansion: \(\Psi = \Phi \times \exp(J)\),
|
|
</p>
|
|
|
|
<p>
|
|
In the following, we use the notations \(r_{ij} = |\mathbf{r}_i - \mathbf{r}_j|\) and
|
|
\(R_{i\alpha} = |\mathbf{r}_i - \mathbf{R}_\alpha|\), where indices
|
|
\(i\) and \(j\) refer to electrons and \(\alpha\) to nuclei.
|
|
</p>
|
|
|
|
<p>
|
|
Parameters for multiple forms of Jastrow factors can be saved in
|
|
TREXIO files, and are described in the following sections. These
|
|
are identified by the <code>type</code> attribute. The type can be one of the
|
|
following:
|
|
</p>
|
|
<ul class="org-ul">
|
|
<li><code>CHAMP</code></li>
|
|
<li><code>Mu</code></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div id="outline-container-orgf2d8771" class="outline-4">
|
|
<h4 id="orgf2d8771"><span class="section-number-4">6.1.1</span> CHAMP</h4>
|
|
<div class="outline-text-4" id="text-6-1-1">
|
|
<p>
|
|
The first form of Jastrow factor is the one used in
|
|
the <a href="https://trex-coe.eu/trex-quantum-chemistry-codes/champ">CHAMP</a> program:
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
J(\mathbf{r},\mathbf{R}) = J_{\text{eN}}(\mathbf{r},\mathbf{R}) + J_{\text{ee}}(\mathbf{r}) + J_{\text{eeN}}(\mathbf{r},\mathbf{R})
|
|
\]
|
|
</p>
|
|
|
|
|
|
<p>
|
|
\(J_{\text{eN}}\) contains electron-nucleus terms:
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
J_{\text{eN}}(\mathbf{r},\mathbf{R}) = \sum_{i=1}^{N_\text{elec}} \sum_{\alpha=1}^{N_\text{nucl}}\left[
|
|
\frac{a_{1,\alpha}\, f_\alpha(R_{i\alpha})}{1+a_{2,\alpha}\,
|
|
f_\alpha(R_{i\alpha})} + \sum_{p=2}^{N_\text{ord}^a} a_{p+1,\alpha}\, [f_\alpha(R_{i\alpha})]^p - J_{\text{eN}}^\infty
|
|
\right]
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
\(J_{\text{ee}}\) contains electron-electron terms:
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
J_{\text{ee}}(\mathbf{r}) =
|
|
\sum_{i=1}^{N_\text{elec}} \sum_{j=1}^{i-1}
|
|
\left[
|
|
\frac{\frac{1}{2}\big(1 + \delta^{\uparrow\downarrow}_{ij}\big)\,b_1\, f_{\text{ee}}(r_{ij})}{1+b_2\, f_{\text{ee}}(r_{ij})} +
|
|
\sum_{p=2}^{N_\text{ord}^b} b_{p+1}\, [f_{\text{ee}}(r_{ij})]^p - J_{\text{ee},ij}^\infty
|
|
\right]
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
\(\delta^{\uparrow\downarrow}_{ij}\) is zero when the electrons \(i\) and
|
|
\(j\) have the same spin, and one otherwise.
|
|
</p>
|
|
|
|
<p>
|
|
\(J_{\text{eeN}}\) contains electron-electron-Nucleus terms:
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
J_{\text{eeN}}(\mathbf{r},\mathbf{R}) =
|
|
\sum_{\alpha=1}^{N_{\text{nucl}}}
|
|
\sum_{i=1}^{N_{\text{elec}}}
|
|
\sum_{j=1}^{i-1}
|
|
\sum_{p=2}^{N_{\text{ord}}}
|
|
\sum_{k=0}^{p-1}
|
|
\sum_{l=0}^{p-k-2\delta_{k,0}}
|
|
c_{lkp\alpha} \left[ g_{\text{ee}}({r}_{ij}) \right]^k \nonumber \\
|
|
\left[ \left[ g_\alpha({R}_{i\alpha}) \right]^l + \left[ g_\alpha({R}_{j\alpha}) \right]^l \right]
|
|
\left[ g_\alpha({R}_{i\,\alpha}) \,
|
|
g_\alpha({R}_{j\alpha}) \right]^{(p-k-l)/2}
|
|
\]
|
|
\(c_{lkp\alpha}\) are non-zero only when \(p-k-l\) is even.
|
|
</p>
|
|
|
|
<p>
|
|
The terms \(J_{\text{ee},ij}^\infty\) and \(J_{\text{eN}}^\infty\) are shifts to ensure that
|
|
\(J_{\text{eN}}\) and \(J_{\text{ee}}\) have an asymptotic value of zero:
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
J_{\text{eN}}^{\infty} =
|
|
\frac{a_{1,\alpha}\, \kappa_\alpha^{-1}}{1+a_{2,\alpha}\,
|
|
\kappa_\alpha^{-1}} + \sum_{p=2}^{N_\text{ord}^a} a_{p+1,\alpha}\, \kappa_\alpha^{-p}
|
|
\]
|
|
\[
|
|
J_{\text{ee},ij}^{\infty} =
|
|
\frac{\frac{1}{2}\big(1 + \delta^{\uparrow\downarrow}_{ij}\big)\,b_1\,
|
|
\kappa_{\text{ee}}^{-1}}{1+b_2\, \kappa_{\text{ee}}^{-1}} +
|
|
\sum_{p=2}^{N_\text{ord}^b} b_{p+1}\, \kappa_{\text{ee}}^{-p}
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
\(f\) and \(g\) are scaling function defined as
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
f_\alpha(r) = \frac{1-e^{-\kappa_\alpha\, r}}{\kappa_\alpha} \text{ and }
|
|
g_\alpha(r) = e^{-\kappa_\alpha\, r},
|
|
\]
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div id="outline-container-org733f718" class="outline-4">
|
|
<h4 id="org733f718"><span class="section-number-4">6.1.2</span> Mu</h4>
|
|
<div class="outline-text-4" id="text-6-1-2">
|
|
<p>
|
|
<a href="https://aip.scitation.org/doi/10.1063/5.0044683">Mu-Jastrow</a> is based on a one-parameter correlation factor that has
|
|
been introduced in the context of transcorrelated methods. This
|
|
correlation factor imposes the electron-electron cusp, and it is
|
|
built such that the leading order in \(1/r_{12}\) of the effective
|
|
two-electron potential reproduces the long-range interaction of the
|
|
range-separated density functional theory. Its analytical
|
|
expression reads
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
J(\mathbf{r}, \mathbf{R}) = J_{\text{eeN}}(\mathbf{r}, \mathbf{R}) +
|
|
J_{\text{eN}}(\mathbf{r}, \mathbf{R})
|
|
\].
|
|
</p>
|
|
|
|
<p>
|
|
The electron-electron cusp is incorporated in the three-body term
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
J_\text{eeN} (\mathbf{r}, \mathbf{R}) =
|
|
\sum_{i=1}^{N_\text{elec}} \sum_{j=1}^{i-1} \, u\left(\mu, r_{ij}\right) \,
|
|
\Pi_{\alpha=1}^{N_{\text{nucl}}} \, E_\alpha({R}_{i\alpha}) \, E_\alpha({R}_{j\alpha}),
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
where ww\(u\) is an electron-electron function
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
u\left(\mu, r\right) = \frac{r}{2} \, \left[ 1 - \text{erf}(\mu\, r) \right] - \frac{1}{2 \, \mu \, \sqrt{\pi}} \exp \left[ -(\mu \, r)^2 \right].
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
This electron-electron term is tuned by the parameter \(\mu\) which
|
|
controls the depth and the range of the Coulomb hole between
|
|
electrons.
|
|
</p>
|
|
|
|
<p>
|
|
An envelope function has been introduced to cancel out the Jastrow
|
|
effects between two-electrons when at least one is close to a nucleus
|
|
(to perform a frozen-core calculation). The envelope function is
|
|
given by
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
E_\alpha(R) = 1 - \exp\left( - \gamma_{\alpha} \, R^2 \right).
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
In particular, if the parameters \(\gamma_\alpha\) tend to zero, the
|
|
Mu-Jastrow factor becomes a two-body Jastrow factor:
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
J_{\text{ee}}(\mathbf{r}) =
|
|
\sum_{i=1}^{N_\text{elec}} \sum_{j=1}^{i-1} \, u\left(\mu, r_{ij}\right)
|
|
\]
|
|
</p>
|
|
|
|
<p>
|
|
and for large \(\gamma_\alpha\) it becomes zero.
|
|
</p>
|
|
|
|
<p>
|
|
To increase the flexibility of the Jastrow and improve the
|
|
electron density the following electron-nucleus term is added
|
|
</p>
|
|
|
|
<p>
|
|
\[
|
|
J_{\text{eN}}(\mathbf{r},\mathbf{R}) = \sum_{i=1}^{N_\text{elec}} \sum_{\alpha=1}^{N_\text{nucl}} \,
|
|
\left[ \exp\left( a_{\alpha} R_{i \alpha}^2 \right) - 1\right].
|
|
\]
|
|
</p>
|
|
|
|
|
|
<p>
|
|
The parameter \(\mu\) is stored in the <code>ee</code> array, the parameters
|
|
\(\gamma_\alpha\) are stored in the <code>een</code> array, and the parameters
|
|
\(a_\alpha\) are stored in the <code>en</code> array.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org7886e80" class="outline-4">
|
|
<h4 id="org7886e80"><span class="section-number-4">6.1.3</span> Table of values</h4>
|
|
<div class="outline-text-4" id="text-6-1-3">
|
|
<table id="org3c599bb" 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 Jastrow factor: <code>CHAMP</code> or <code>Mu</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>en_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Electron-nucleus parameters</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ee_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Electron-electron parameters</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>een_num</code></td>
|
|
<td class="org-left"><code>dim</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">Number of Electron-electron-nucleus parameters</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>en</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(jastrow.en_num)</code></td>
|
|
<td class="org-left">Electron-nucleus parameters</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ee</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(jastrow.ee_num)</code></td>
|
|
<td class="org-left">Electron-electron parameters</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>een</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(jastrow.een_num)</code></td>
|
|
<td class="org-left">Electron-electron-nucleus parameters</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>en_nucleus</code></td>
|
|
<td class="org-left"><code>index</code></td>
|
|
<td class="org-left"><code>(jastrow.en_num)</code></td>
|
|
<td class="org-left">Nucleus relative to the eN parameter</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>een_nucleus</code></td>
|
|
<td class="org-left"><code>index</code></td>
|
|
<td class="org-left"><code>(jastrow.een_num)</code></td>
|
|
<td class="org-left">Nucleus relative to the eeN parameter</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>ee_scaling</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"> </td>
|
|
<td class="org-left">\(\kappa\) value in CHAMP Jastrow for electron-electron distances</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="org-left"><code>en_scaling</code></td>
|
|
<td class="org-left"><code>float</code></td>
|
|
<td class="org-left"><code>(nucleus.num)</code></td>
|
|
<td class="org-left">\(\kappa\) value in CHAMP Jastrow for electron-nucleus distances</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-org2e3fef3" class="outline-2">
|
|
<h2 id="org2e3fef3"><span class="section-number-2">7</span> Quantum Monte Carlo data (qmc group)</h2>
|
|
<div class="outline-text-2" id="text-7">
|
|
<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="org821a85d" 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: 2024-03-13 Wed 13:25</p>
|
|
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
|
</div>
|
|
</body>
|
|
</html>
|