1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-11-03 20:54:09 +01:00
This commit is contained in:
scemama 2020-11-07 15:39:45 +00:00
parent 092317dccb
commit 9dadce9707

View File

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-11-07 Sat 15:29 --> <!-- 2020-11-07 Sat 15:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>QMCkl source code documentation</title> <title>QMCkl source code documentation</title>
@ -261,67 +261,67 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#org88d3020">1. Introduction</a> <li><a href="#orged1b80e">1. Introduction</a>
<ul> <ul>
<li><a href="#org2a49641">1.1. Language used</a></li> <li><a href="#orgc5f5f54">1.1. Language used</a></li>
<li><a href="#org47e0bb0">1.2. Source code editing</a></li> <li><a href="#orgf1f9d8b">1.2. Source code editing</a></li>
<li><a href="#orgb952d89">1.3. Writing in Fortran</a></li> <li><a href="#orgd249858">1.3. Writing in Fortran</a></li>
<li><a href="#org544932c">1.4. Coding style</a></li> <li><a href="#orgfa74fc9">1.4. Coding style</a></li>
<li><a href="#org532c1b2">1.5. Design of the library</a> <li><a href="#org5e1def8">1.5. Design of the library</a>
<ul> <ul>
<li><a href="#orgf2167c0">1.5.1. Naming conventions</a></li> <li><a href="#org3777fc4">1.5.1. Naming conventions</a></li>
<li><a href="#org33a49b1">1.5.2. Application programming interface</a></li> <li><a href="#org6bd872f">1.5.2. Application programming interface</a></li>
<li><a href="#orgff65292">1.5.3. Global state</a></li> <li><a href="#orgcb65ad1">1.5.3. Global state</a></li>
<li><a href="#org86de32d">1.5.4. Low-level functions</a></li> <li><a href="#org49d764a">1.5.4. Low-level functions</a></li>
<li><a href="#org21b9d00">1.5.5. High-level functions</a></li> <li><a href="#orgf4c08d7">1.5.5. High-level functions</a></li>
<li><a href="#org719d22c">1.5.6. Numerical precision</a></li> <li><a href="#orge3dd32a">1.5.6. Numerical precision</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgc558007">1.6. Algorithms</a></li> <li><a href="#orgd3a26c4">1.6. Algorithms</a></li>
<li><a href="#org28fc7d7">1.7. Rules for the API</a></li> <li><a href="#orgb053292">1.7. Rules for the API</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgeb677a0">2. Documentation</a> <li><a href="#org96f93c2">2. Documentation</a>
<ul> <ul>
<li><a href="#orgea51e7c">2.1. <code>qmckl.h</code> header file</a> <li><a href="#org7294e08">2.1. <code>qmckl.h</code> header file</a>
<ul> <ul>
<li><a href="#org99fb2a9">2.1.1. Constants</a></li> <li><a href="#orgc0521a8">2.1.1. Constants</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org02d0074">2.2. Memory management</a> <li><a href="#org06a8a62">2.2. Memory management</a>
<ul> <ul>
<li><a href="#org85cf925">2.2.1. <code>qmckl_malloc</code></a></li> <li><a href="#org930901b">2.2.1. <code>qmckl_malloc</code></a></li>
<li><a href="#orgd7d4c33">2.2.2. <code>qmckl_free</code></a></li> <li><a href="#org044361e">2.2.2. <code>qmckl_free</code></a></li>
</ul> </ul>
</li> </li>
<li><a href="#org86fc4e2">2.3. Context</a> <li><a href="#orgb11c805">2.3. Context</a>
<ul> <ul>
<li><a href="#orgcdb749f">2.3.1. Context</a></li> <li><a href="#orgf6b41fe">2.3.1. Context</a></li>
<li><a href="#org61b9826">2.3.2. Precision</a></li> <li><a href="#orgcb8ea27">2.3.2. Precision</a></li>
<li><a href="#orgad846d3">2.3.3. Info about the molecular system</a></li> <li><a href="#org61fd909">2.3.3. Info about the molecular system</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org8a8760b">2.4. Computation of distances</a> <li><a href="#org94687d0">2.4. Computation of distances</a>
<ul> <ul>
<li><a href="#org929abaa">2.4.1. Squared distance</a></li> <li><a href="#org1fc9cb1">2.4.1. Squared distance</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org45297c6">2.5. Atomic Orbitals</a> <li><a href="#orga8556a8">2.5. Atomic Orbitals</a>
<ul> <ul>
<li><a href="#orgc47c214">2.5.1. Polynomials</a></li> <li><a href="#org8210c62">2.5.1. Polynomials</a></li>
<li><a href="#org7beaf8f">2.5.2. Gaussian basis functions</a></li> <li><a href="#org73a935f">2.5.2. Gaussian basis functions</a></li>
<li><a href="#org600ab4a">2.5.3. <span class="todo TODO">TODO</span> Slater basis functions</a></li> <li><a href="#org1f32bd8">2.5.3. <span class="todo TODO">TODO</span> Slater basis functions</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li><a href="#org3de7a29">3. Acknowledgments</a></li> <li><a href="#org4b4eb6b">3. Acknowledgments</a></li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="outline-container-org88d3020" class="outline-2"> <div id="outline-container-orged1b80e" class="outline-2">
<h2 id="org88d3020"><span class="section-number-2">1</span> Introduction</h2> <h2 id="orged1b80e"><span class="section-number-2">1</span> Introduction</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
The ultimate goal of QMCkl is to provide a high-performance The ultimate goal of QMCkl is to provide a high-performance
@ -348,8 +348,8 @@ tool in the <code>Makefile</code>, and then the produced files are compiled.
</p> </p>
</div> </div>
<div id="outline-container-org2a49641" class="outline-3"> <div id="outline-container-orgc5f5f54" class="outline-3">
<h3 id="org2a49641"><span class="section-number-3">1.1</span> Language used</h3> <h3 id="orgc5f5f54"><span class="section-number-3">1.1</span> Language used</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-1-1">
<p> <p>
Fortran is one of the most common languages used by the community, Fortran is one of the most common languages used by the community,
@ -373,8 +373,8 @@ justified.
</div> </div>
</div> </div>
<div id="outline-container-org47e0bb0" class="outline-3"> <div id="outline-container-orgf1f9d8b" class="outline-3">
<h3 id="org47e0bb0"><span class="section-number-3">1.2</span> Source code editing</h3> <h3 id="orgf1f9d8b"><span class="section-number-3">1.2</span> Source code editing</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-1-2">
<p> <p>
Any text editor can be used to edit org-mode files. For a better Any text editor can be used to edit org-mode files. For a better
@ -409,8 +409,8 @@ And pandoc can convert multiple markdown formats into org-mode.
</div> </div>
</div> </div>
<div id="outline-container-orgb952d89" class="outline-3"> <div id="outline-container-orgd249858" class="outline-3">
<h3 id="orgb952d89"><span class="section-number-3">1.3</span> Writing in Fortran</h3> <h3 id="orgd249858"><span class="section-number-3">1.3</span> Writing in Fortran</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-1-3">
<p> <p>
The Fortran source files should provide a C interface using The Fortran source files should provide a C interface using
@ -429,8 +429,8 @@ For more guidelines on using Fortran to generate a C interface, see
</div> </div>
</div> </div>
<div id="outline-container-org544932c" class="outline-3"> <div id="outline-container-orgfa74fc9" class="outline-3">
<h3 id="org544932c"><span class="section-number-3">1.4</span> Coding style</h3> <h3 id="orgfa74fc9"><span class="section-number-3">1.4</span> Coding style</h3>
<div class="outline-text-3" id="text-1-4"> <div class="outline-text-3" id="text-1-4">
<p> <p>
To improve readability, we maintain a consistent coding style in the library. To improve readability, we maintain a consistent coding style in the library.
@ -447,8 +447,8 @@ Coding style can be automatically checked with <a href="https://clang.llvm.org/d
</div> </div>
</div> </div>
<div id="outline-container-org532c1b2" class="outline-3"> <div id="outline-container-org5e1def8" class="outline-3">
<h3 id="org532c1b2"><span class="section-number-3">1.5</span> Design of the library</h3> <h3 id="org5e1def8"><span class="section-number-3">1.5</span> Design of the library</h3>
<div class="outline-text-3" id="text-1-5"> <div class="outline-text-3" id="text-1-5">
<p> <p>
The proposed API should allow the library to: The proposed API should allow the library to:
@ -464,8 +464,8 @@ functions (see below).
</p> </p>
</div> </div>
<div id="outline-container-orgf2167c0" class="outline-4"> <div id="outline-container-org3777fc4" class="outline-4">
<h4 id="orgf2167c0"><span class="section-number-4">1.5.1</span> Naming conventions</h4> <h4 id="org3777fc4"><span class="section-number-4">1.5.1</span> Naming conventions</h4>
<div class="outline-text-4" id="text-1-5-1"> <div class="outline-text-4" id="text-1-5-1">
<p> <p>
Use <code>qmckl_</code> as a prefix for all exported functions and variables. Use <code>qmckl_</code> as a prefix for all exported functions and variables.
@ -485,8 +485,8 @@ Arrays are in uppercase and scalars are in lowercase.
</div> </div>
</div> </div>
<div id="outline-container-org33a49b1" class="outline-4"> <div id="outline-container-org6bd872f" class="outline-4">
<h4 id="org33a49b1"><span class="section-number-4">1.5.2</span> Application programming interface</h4> <h4 id="org6bd872f"><span class="section-number-4">1.5.2</span> Application programming interface</h4>
<div class="outline-text-4" id="text-1-5-2"> <div class="outline-text-4" id="text-1-5-2">
<p> <p>
The application programming interface (API) is designed to be The application programming interface (API) is designed to be
@ -515,8 +515,8 @@ bindings in other languages in other repositories.
</div> </div>
</div> </div>
<div id="outline-container-orgff65292" class="outline-4"> <div id="outline-container-orgcb65ad1" class="outline-4">
<h4 id="orgff65292"><span class="section-number-4">1.5.3</span> Global state</h4> <h4 id="orgcb65ad1"><span class="section-number-4">1.5.3</span> Global state</h4>
<div class="outline-text-4" id="text-1-5-3"> <div class="outline-text-4" id="text-1-5-3">
<p> <p>
Global variables should be avoided in the library, because it is Global variables should be avoided in the library, because it is
@ -543,8 +543,8 @@ The context and its old versions can be destroyed with
</div> </div>
</div> </div>
<div id="outline-container-org86de32d" class="outline-4"> <div id="outline-container-org49d764a" class="outline-4">
<h4 id="org86de32d"><span class="section-number-4">1.5.4</span> Low-level functions</h4> <h4 id="org49d764a"><span class="section-number-4">1.5.4</span> Low-level functions</h4>
<div class="outline-text-4" id="text-1-5-4"> <div class="outline-text-4" id="text-1-5-4">
<p> <p>
Low-level functions are very simple functions which are leaves of the Low-level functions are very simple functions which are leaves of the
@ -559,8 +559,8 @@ temporary memory it should be provided in input.
</div> </div>
</div> </div>
<div id="outline-container-org21b9d00" class="outline-4"> <div id="outline-container-orgf4c08d7" class="outline-4">
<h4 id="org21b9d00"><span class="section-number-4">1.5.5</span> High-level functions</h4> <h4 id="orgf4c08d7"><span class="section-number-4">1.5.5</span> High-level functions</h4>
<div class="outline-text-4" id="text-1-5-5"> <div class="outline-text-4" id="text-1-5-5">
<p> <p>
High-level functions are at the top of the function call tree. High-level functions are at the top of the function call tree.
@ -579,8 +579,8 @@ non-purity is justified. All the side effects should be made in the
</div> </div>
</div> </div>
<div id="outline-container-org719d22c" class="outline-4"> <div id="outline-container-orge3dd32a" class="outline-4">
<h4 id="org719d22c"><span class="section-number-4">1.5.6</span> Numerical precision</h4> <h4 id="orge3dd32a"><span class="section-number-4">1.5.6</span> Numerical precision</h4>
<div class="outline-text-4" id="text-1-5-6"> <div class="outline-text-4" id="text-1-5-6">
<p> <p>
The number of bits of precision required for a function should be The number of bits of precision required for a function should be
@ -594,8 +594,8 @@ High-level functions will use the precision specified in the
</div> </div>
</div> </div>
<div id="outline-container-orgc558007" class="outline-3"> <div id="outline-container-orgd3a26c4" class="outline-3">
<h3 id="orgc558007"><span class="section-number-3">1.6</span> Algorithms</h3> <h3 id="orgd3a26c4"><span class="section-number-3">1.6</span> Algorithms</h3>
<div class="outline-text-3" id="text-1-6"> <div class="outline-text-3" id="text-1-6">
<p> <p>
Reducing the scaling of an algorithm usually implies also reducing Reducing the scaling of an algorithm usually implies also reducing
@ -608,8 +608,8 @@ be implemented adapted to different problem sizes.
</div> </div>
</div> </div>
<div id="outline-container-org28fc7d7" class="outline-3"> <div id="outline-container-orgb053292" class="outline-3">
<h3 id="org28fc7d7"><span class="section-number-3">1.7</span> Rules for the API</h3> <h3 id="orgb053292"><span class="section-number-3">1.7</span> Rules for the API</h3>
<div class="outline-text-3" id="text-1-7"> <div class="outline-text-3" id="text-1-7">
<ul class="org-ul"> <ul class="org-ul">
<li><code>stdint</code> should be used for integers (<code>int32_t</code>, <code>int64_t</code>)</li> <li><code>stdint</code> should be used for integers (<code>int32_t</code>, <code>int64_t</code>)</li>
@ -621,12 +621,12 @@ be implemented adapted to different problem sizes.
</div> </div>
</div> </div>
<div id="outline-container-orgeb677a0" class="outline-2"> <div id="outline-container-org96f93c2" class="outline-2">
<h2 id="orgeb677a0"><span class="section-number-2">2</span> Documentation</h2> <h2 id="org96f93c2"><span class="section-number-2">2</span> Documentation</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
</div> </div>
<div id="outline-container-orgea51e7c" class="outline-3"> <div id="outline-container-org7294e08" class="outline-3">
<h3 id="orgea51e7c"><span class="section-number-3">2.1</span> <code>qmckl.h</code> header file</h3> <h3 id="org7294e08"><span class="section-number-3">2.1</span> <code>qmckl.h</code> header file</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-2-1">
<p> <p>
This file produces the <code>qmckl.h</code> header file, which is to be included This file produces the <code>qmckl.h</code> header file, which is to be included
@ -638,12 +638,12 @@ We also create here the <code>qmckl_f.f90</code> which is the Fortran interface
</p> </p>
</div> </div>
<div id="outline-container-org99fb2a9" class="outline-4"> <div id="outline-container-orgc0521a8" class="outline-4">
<h4 id="org99fb2a9"><span class="section-number-4">2.1.1</span> Constants</h4> <h4 id="orgc0521a8"><span class="section-number-4">2.1.1</span> Constants</h4>
<div class="outline-text-4" id="text-2-1-1"> <div class="outline-text-4" id="text-2-1-1">
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org26f52ff"></a>Success/failure<br /> <li><a id="org8ec39ca"></a>Success/failure<br />
<div class="outline-text-5" id="text-2-1-1-1"> <div class="outline-text-5" id="text-2-1-1-1">
<p> <p>
These are the codes returned by the functions to indicate success These are the codes returned by the functions to indicate success
@ -668,7 +668,7 @@ or failure. All such functions should have as a return type <code>qmckl_exit_cod
</div> </div>
</li> </li>
<li><a id="org029d18f"></a>Precision-related constants<br /> <li><a id="org9028aa8"></a>Precision-related constants<br />
<div class="outline-text-5" id="text-2-1-1-2"> <div class="outline-text-5" id="text-2-1-1-2">
<p> <p>
Controlling numerical precision enables optimizations. Here, the Controlling numerical precision enables optimizations. Here, the
@ -692,8 +692,8 @@ range are defined.
</ol> </ol>
</div> </div>
</div> </div>
<div id="outline-container-org02d0074" class="outline-3"> <div id="outline-container-org06a8a62" class="outline-3">
<h3 id="org02d0074"><span class="section-number-3">2.2</span> Memory management</h3> <h3 id="org06a8a62"><span class="section-number-3">2.2</span> Memory management</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-2-2">
<p> <p>
We override the allocation functions to enable the possibility of We override the allocation functions to enable the possibility of
@ -709,8 +709,8 @@ optimized libraries to fine-tune the memory allocation.
</ul> </ul>
</div> </div>
<div id="outline-container-org85cf925" class="outline-4"> <div id="outline-container-org930901b" class="outline-4">
<h4 id="org85cf925"><span class="section-number-4">2.2.1</span> <code>qmckl_malloc</code></h4> <h4 id="org930901b"><span class="section-number-4">2.2.1</span> <code>qmckl_malloc</code></h4>
<div class="outline-text-4" id="text-2-2-1"> <div class="outline-text-4" id="text-2-2-1">
<p> <p>
Memory allocation function, letting the library choose how the Memory allocation function, letting the library choose how the
@ -735,7 +735,7 @@ memory will be allocated, and a pointer is returned to the user.
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org426c70f"></a>Source<br /> <li><a id="orgbbe08c6"></a>Source<br />
<div class="outline-text-5" id="text-2-2-1-1"> <div class="outline-text-5" id="text-2-2-1-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">void</span>* <span style="color: #0000ff;">qmckl_malloc</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">ctx</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">size_t</span> <span style="color: #a0522d;">size</span>) { <pre class="src src-C"><span style="color: #228b22;">void</span>* <span style="color: #0000ff;">qmckl_malloc</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">ctx</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">size_t</span> <span style="color: #a0522d;">size</span>) {
@ -753,8 +753,8 @@ memory will be allocated, and a pointer is returned to the user.
</ol> </ol>
</div> </div>
<div id="outline-container-orgd7d4c33" class="outline-4"> <div id="outline-container-org044361e" class="outline-4">
<h4 id="orgd7d4c33"><span class="section-number-4">2.2.2</span> <code>qmckl_free</code></h4> <h4 id="org044361e"><span class="section-number-4">2.2.2</span> <code>qmckl_free</code></h4>
<div class="outline-text-4" id="text-2-2-2"> <div class="outline-text-4" id="text-2-2-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">void</span> <span style="color: #0000ff;">qmckl_free</span>(<span style="color: #228b22;">void</span> *<span style="color: #a0522d;">ptr</span>); <pre class="src src-C"><span style="color: #228b22;">void</span> <span style="color: #0000ff;">qmckl_free</span>(<span style="color: #228b22;">void</span> *<span style="color: #a0522d;">ptr</span>);
@ -772,7 +772,7 @@ memory will be allocated, and a pointer is returned to the user.
</div> </div>
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org0c20a4e"></a>Source<br /> <li><a id="org40bb230"></a>Source<br />
<div class="outline-text-5" id="text-2-2-2-1"> <div class="outline-text-5" id="text-2-2-2-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">void</span> <span style="color: #0000ff;">qmckl_free</span>(<span style="color: #228b22;">void</span> *<span style="color: #a0522d;">ptr</span>) { <pre class="src src-C"><span style="color: #228b22;">void</span> <span style="color: #0000ff;">qmckl_free</span>(<span style="color: #228b22;">void</span> *<span style="color: #a0522d;">ptr</span>) {
@ -785,8 +785,8 @@ memory will be allocated, and a pointer is returned to the user.
</ol> </ol>
</div> </div>
</div> </div>
<div id="outline-container-org86fc4e2" class="outline-3"> <div id="outline-container-orgb11c805" class="outline-3">
<h3 id="org86fc4e2"><span class="section-number-3">2.3</span> Context</h3> <h3 id="orgb11c805"><span class="section-number-3">2.3</span> Context</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-2-3">
<p> <p>
This file is written in C because it is more natural to express the context in This file is written in C because it is more natural to express the context in
@ -802,8 +802,8 @@ C than in Fortran.
</ul> </ul>
</div> </div>
<div id="outline-container-orgcdb749f" class="outline-4"> <div id="outline-container-orgf6b41fe" class="outline-4">
<h4 id="orgcdb749f"><span class="section-number-4">2.3.1</span> Context</h4> <h4 id="orgf6b41fe"><span class="section-number-4">2.3.1</span> Context</h4>
<div class="outline-text-4" id="text-2-3-1"> <div class="outline-text-4" id="text-2-3-1">
<p> <p>
The context variable is a handle for the state of the library, and The context variable is a handle for the state of the library, and
@ -821,7 +821,7 @@ A value of 0 for the context is equivalent to a <code>NULL</code> pointer.
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org0c81d44"></a>Source<br /> <li><a id="org3303232"></a>Source<br />
<div class="outline-text-6" id="text-2-3-1-0-1"> <div class="outline-text-6" id="text-2-3-1-0-1">
<p> <p>
The tag is used internally to check if the memory domain pointed by The tag is used internally to check if the memory domain pointed by
@ -844,7 +844,7 @@ a pointer is a valid context.
</li> </li>
</ol> </ol>
<li><a id="org95c68c5"></a><code>qmckl_context_check</code><br /> <li><a id="org2038af8"></a><code>qmckl_context_check</code><br />
<div class="outline-text-5" id="text-2-3-1-1"> <div class="outline-text-5" id="text-2-3-1-1">
<p> <p>
Checks if the domain pointed by the pointer is a valid context. Checks if the domain pointed by the pointer is a valid context.
@ -858,7 +858,7 @@ Returns the input <code>qmckl_context</code> if the context is valid, 0 otherwis
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org9098a9d"></a>Source<br /> <li><a id="org860a3df"></a>Source<br />
<div class="outline-text-6" id="text-2-3-1-1-1"> <div class="outline-text-6" id="text-2-3-1-1-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_check</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) { <pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_check</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) {
@ -878,7 +878,7 @@ Returns the input <code>qmckl_context</code> if the context is valid, 0 otherwis
</ol> </ol>
</li> </li>
<li><a id="orgfd47a79"></a><code>qmckl_context_create</code><br /> <li><a id="orgab4b734"></a><code>qmckl_context_create</code><br />
<div class="outline-text-5" id="text-2-3-1-2"> <div class="outline-text-5" id="text-2-3-1-2">
<p> <p>
To create a new context, use <code>qmckl_context_create()</code>. To create a new context, use <code>qmckl_context_create()</code>.
@ -897,7 +897,7 @@ Returns 0 upon failure to allocate the internal data structure
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="orgadd002f"></a>Source<br /> <li><a id="orgc4548e9"></a>Source<br />
<div class="outline-text-6" id="text-2-3-1-2-1"> <div class="outline-text-6" id="text-2-3-1-2-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_create</span>() { <pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_create</span>() {
@ -920,7 +920,7 @@ Returns 0 upon failure to allocate the internal data structure
</div> </div>
</li> </li>
<li><a id="org70b08ee"></a>Fortran interface<br /> <li><a id="org023392e"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-1-2-2"> <div class="outline-text-6" id="text-2-3-1-2-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -935,7 +935,7 @@ Returns 0 upon failure to allocate the internal data structure
</ol> </ol>
</li> </li>
<li><a id="org1482131"></a><code>qmckl_context_copy</code><br /> <li><a id="org170106b"></a><code>qmckl_context_copy</code><br />
<div class="outline-text-5" id="text-2-3-1-3"> <div class="outline-text-5" id="text-2-3-1-3">
<p> <p>
This function makes a shallow copy of the current context. This function makes a shallow copy of the current context.
@ -956,7 +956,7 @@ for the new context
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org584a02e"></a>Source<br /> <li><a id="org3e53e1f"></a>Source<br />
<div class="outline-text-6" id="text-2-3-1-3-1"> <div class="outline-text-6" id="text-2-3-1-3-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_copy</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) { <pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_copy</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) {
@ -988,7 +988,7 @@ for the new context
</div> </div>
</li> </li>
<li><a id="org2a2ae19"></a>Fortran interface<br /> <li><a id="org2c962e4"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-1-3-2"> <div class="outline-text-6" id="text-2-3-1-3-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1004,7 +1004,7 @@ for the new context
</ol> </ol>
</li> </li>
<li><a id="orgbaee46f"></a><code>qmckl_context_previous</code><br /> <li><a id="orga50f899"></a><code>qmckl_context_previous</code><br />
<div class="outline-text-5" id="text-2-3-1-4"> <div class="outline-text-5" id="text-2-3-1-4">
<p> <p>
Returns the previous context Returns the previous context
@ -1024,7 +1024,7 @@ Returns 0 for the 0-valued context
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="orgb27399e"></a>Source<br /> <li><a id="orgf8d8f17"></a>Source<br />
<div class="outline-text-6" id="text-2-3-1-4-1"> <div class="outline-text-6" id="text-2-3-1-4-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_previous</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) { <pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_previous</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) {
@ -1042,7 +1042,7 @@ Returns 0 for the 0-valued context
</div> </div>
</li> </li>
<li><a id="orgd9a94a6"></a>Fortran interface<br /> <li><a id="orga64647c"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-1-4-2"> <div class="outline-text-6" id="text-2-3-1-4-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1058,7 +1058,7 @@ Returns 0 for the 0-valued context
</ol> </ol>
</li> </li>
<li><a id="org0c6795a"></a><code>qmckl_context_destroy</code><br /> <li><a id="org2daf3f6"></a><code>qmckl_context_destroy</code><br />
<div class="outline-text-5" id="text-2-3-1-5"> <div class="outline-text-5" id="text-2-3-1-5">
<p> <p>
Destroys the current context, leaving the ancestors untouched. Destroys the current context, leaving the ancestors untouched.
@ -1079,7 +1079,7 @@ Fails if the the pointer is not a valid context
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org43a7b37"></a>Source<br /> <li><a id="orge773e63"></a>Source<br />
<div class="outline-text-6" id="text-2-3-1-5-1"> <div class="outline-text-6" id="text-2-3-1-5-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_context_destroy</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) { <pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_context_destroy</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) {
@ -1099,7 +1099,7 @@ Fails if the the pointer is not a valid context
</div> </div>
</li> </li>
<li><a id="org2c137bf"></a>Fortran interface<br /> <li><a id="org855b3e8"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-1-5-2"> <div class="outline-text-6" id="text-2-3-1-5-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1118,8 +1118,8 @@ Fails if the the pointer is not a valid context
</div> </div>
<div id="outline-container-org61b9826" class="outline-4"> <div id="outline-container-orgcb8ea27" class="outline-4">
<h4 id="org61b9826"><span class="section-number-4">2.3.2</span> Precision</h4> <h4 id="orgcb8ea27"><span class="section-number-4">2.3.2</span> Precision</h4>
<div class="outline-text-4" id="text-2-3-2"> <div class="outline-text-4" id="text-2-3-2">
<p> <p>
The following functions set and get the expected required precision The following functions set and get the expected required precision
@ -1135,7 +1135,7 @@ The update functions return <code>QMCKL_SUCCESS</code> or <code>QMCKL_FAILURE</c
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org196a74b"></a><code>qmckl_context_update_precision</code><br /> <li><a id="org371ac9d"></a><code>qmckl_context_update_precision</code><br />
<div class="outline-text-5" id="text-2-3-2-1"> <div class="outline-text-5" id="text-2-3-2-1">
<p> <p>
Modifies the parameter for the numerical precision in a given context. Modifies the parameter for the numerical precision in a given context.
@ -1147,7 +1147,7 @@ Modifies the parameter for the numerical precision in a given context.
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org0968bca"></a>Source<br /> <li><a id="org79412f5"></a>Source<br />
<div class="outline-text-6" id="text-2-3-2-1-1"> <div class="outline-text-6" id="text-2-3-2-1-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_context_update_precision</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">int</span> <span style="color: #a0522d;">precision</span>) { <pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_context_update_precision</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">int</span> <span style="color: #a0522d;">precision</span>) {
@ -1166,7 +1166,7 @@ Modifies the parameter for the numerical precision in a given context.
</div> </div>
</li> </li>
<li><a id="orgc6bd31c"></a>Fortran interface<br /> <li><a id="orgc5aa913"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-2-1-2"> <div class="outline-text-6" id="text-2-3-2-1-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1182,7 +1182,7 @@ Modifies the parameter for the numerical precision in a given context.
</li> </li>
</ol> </ol>
</li> </li>
<li><a id="org604bdd0"></a><code>qmckl_context_update_range</code><br /> <li><a id="orge6218ac"></a><code>qmckl_context_update_range</code><br />
<div class="outline-text-5" id="text-2-3-2-2"> <div class="outline-text-5" id="text-2-3-2-2">
<p> <p>
Modifies the parameter for the numerical range in a given context. Modifies the parameter for the numerical range in a given context.
@ -1194,7 +1194,7 @@ Modifies the parameter for the numerical range in a given context.
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org08879fe"></a>Source<br /> <li><a id="orgc963a1a"></a>Source<br />
<div class="outline-text-6" id="text-2-3-2-2-1"> <div class="outline-text-6" id="text-2-3-2-2-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_context_update_range</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">int</span> <span style="color: #a0522d;">range</span>) { <pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_context_update_range</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">int</span> <span style="color: #a0522d;">range</span>) {
@ -1213,7 +1213,7 @@ Modifies the parameter for the numerical range in a given context.
</div> </div>
</li> </li>
<li><a id="orga5a250a"></a>Fortran interface<br /> <li><a id="org9327e4c"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-2-2-2"> <div class="outline-text-6" id="text-2-3-2-2-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1229,7 +1229,7 @@ Modifies the parameter for the numerical range in a given context.
</li> </li>
</ol> </ol>
</li> </li>
<li><a id="org835e298"></a><code>qmckl_context_set_precision</code><br /> <li><a id="org9f446d4"></a><code>qmckl_context_set_precision</code><br />
<div class="outline-text-5" id="text-2-3-2-3"> <div class="outline-text-5" id="text-2-3-2-3">
<p> <p>
Returns a copy of the context with a different precision parameter. Returns a copy of the context with a different precision parameter.
@ -1241,7 +1241,7 @@ Returns a copy of the context with a different precision parameter.
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org6b89dfd"></a>Source<br /> <li><a id="org01368bb"></a>Source<br />
<div class="outline-text-6" id="text-2-3-2-3-1"> <div class="outline-text-6" id="text-2-3-2-3-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_set_precision</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">int</span> <span style="color: #a0522d;">precision</span>) { <pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_set_precision</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">int</span> <span style="color: #a0522d;">precision</span>) {
@ -1257,7 +1257,7 @@ Returns a copy of the context with a different precision parameter.
</div> </div>
</li> </li>
<li><a id="org17f6cd9"></a>Fortran interface<br /> <li><a id="orgf336c9e"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-2-3-2"> <div class="outline-text-6" id="text-2-3-2-3-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1273,7 +1273,7 @@ Returns a copy of the context with a different precision parameter.
</li> </li>
</ol> </ol>
</li> </li>
<li><a id="orgadd2571"></a><code>qmckl_context_set_range</code><br /> <li><a id="orgd24158a"></a><code>qmckl_context_set_range</code><br />
<div class="outline-text-5" id="text-2-3-2-4"> <div class="outline-text-5" id="text-2-3-2-4">
<p> <p>
Returns a copy of the context with a different precision parameter. Returns a copy of the context with a different precision parameter.
@ -1285,7 +1285,7 @@ Returns a copy of the context with a different precision parameter.
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="orgaec69e3"></a>Source<br /> <li><a id="orgf0a0ed9"></a>Source<br />
<div class="outline-text-6" id="text-2-3-2-4-1"> <div class="outline-text-6" id="text-2-3-2-4-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_set_range</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">int</span> <span style="color: #a0522d;">range</span>) { <pre class="src src-C"><span style="color: #228b22;">qmckl_context</span> <span style="color: #0000ff;">qmckl_context_set_range</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <span style="color: #a020f0;">const</span> <span style="color: #228b22;">int</span> <span style="color: #a0522d;">range</span>) {
@ -1301,7 +1301,7 @@ Returns a copy of the context with a different precision parameter.
</div> </div>
</li> </li>
<li><a id="org91640e3"></a>Fortran interface<br /> <li><a id="org3cdded5"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-2-4-2"> <div class="outline-text-6" id="text-2-3-2-4-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1318,7 +1318,7 @@ Returns a copy of the context with a different precision parameter.
</ol> </ol>
</li> </li>
<li><a id="org548557f"></a><code>qmckl_context_get_precision</code><br /> <li><a id="orgdd0c899"></a><code>qmckl_context_get_precision</code><br />
<div class="outline-text-5" id="text-2-3-2-5"> <div class="outline-text-5" id="text-2-3-2-5">
<p> <p>
Returns the value of the numerical precision in the context Returns the value of the numerical precision in the context
@ -1330,7 +1330,7 @@ Returns the value of the numerical precision in the context
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="orgaebab6d"></a>Source<br /> <li><a id="orgedc64fa"></a>Source<br />
<div class="outline-text-6" id="text-2-3-2-5-1"> <div class="outline-text-6" id="text-2-3-2-5-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">int</span> <span style="color: #0000ff;">qmckl_context_get_precision</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) { <pre class="src src-C"><span style="color: #228b22;">int</span> <span style="color: #0000ff;">qmckl_context_get_precision</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) {
@ -1342,7 +1342,7 @@ Returns the value of the numerical precision in the context
</div> </div>
</li> </li>
<li><a id="orgce1e316"></a>Fortran interface<br /> <li><a id="org336a180"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-2-5-2"> <div class="outline-text-6" id="text-2-3-2-5-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1357,7 +1357,7 @@ Returns the value of the numerical precision in the context
</li> </li>
</ol> </ol>
</li> </li>
<li><a id="orgfe78f7c"></a><code>qmckl_context_get_range</code><br /> <li><a id="orgd996d88"></a><code>qmckl_context_get_range</code><br />
<div class="outline-text-5" id="text-2-3-2-6"> <div class="outline-text-5" id="text-2-3-2-6">
<p> <p>
Returns the value of the numerical range in the context Returns the value of the numerical range in the context
@ -1369,7 +1369,7 @@ Returns the value of the numerical range in the context
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org85c14cb"></a>Source<br /> <li><a id="orgca84f20"></a>Source<br />
<div class="outline-text-6" id="text-2-3-2-6-1"> <div class="outline-text-6" id="text-2-3-2-6-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">int</span> <span style="color: #0000ff;">qmckl_context_get_range</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) { <pre class="src src-C"><span style="color: #228b22;">int</span> <span style="color: #0000ff;">qmckl_context_get_range</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) {
@ -1381,7 +1381,7 @@ Returns the value of the numerical range in the context
</div> </div>
</li> </li>
<li><a id="orgdc4f6f8"></a>Fortran interface<br /> <li><a id="org8cc8558"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-2-6-2"> <div class="outline-text-6" id="text-2-3-2-6-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1397,7 +1397,7 @@ Returns the value of the numerical range in the context
</ol> </ol>
</li> </li>
<li><a id="org70706fa"></a><code>qmckl_context_get_epsilon</code><br /> <li><a id="org8e93ea1"></a><code>qmckl_context_get_epsilon</code><br />
<div class="outline-text-5" id="text-2-3-2-7"> <div class="outline-text-5" id="text-2-3-2-7">
<p> <p>
Returns \(\epsilon = 2^{1-n}\) where <code>n</code> is the precision Returns \(\epsilon = 2^{1-n}\) where <code>n</code> is the precision
@ -1409,7 +1409,7 @@ Returns \(\epsilon = 2^{1-n}\) where <code>n</code> is the precision
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org95192dd"></a>Source<br /> <li><a id="org839d474"></a>Source<br />
<div class="outline-text-6" id="text-2-3-2-7-1"> <div class="outline-text-6" id="text-2-3-2-7-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">double</span> <span style="color: #0000ff;">qmckl_context_get_epsilon</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) { <pre class="src src-C"><span style="color: #228b22;">double</span> <span style="color: #0000ff;">qmckl_context_get_epsilon</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>) {
@ -1421,7 +1421,7 @@ Returns \(\epsilon = 2^{1-n}\) where <code>n</code> is the precision
</div> </div>
</li> </li>
<li><a id="orge32151f"></a>Fortran interface<br /> <li><a id="orga5942ce"></a>Fortran interface<br />
<div class="outline-text-6" id="text-2-3-2-7-2"> <div class="outline-text-6" id="text-2-3-2-7-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #a020f0;">interface</span> <pre class="src src-f90"><span style="color: #a020f0;">interface</span>
@ -1439,19 +1439,19 @@ Returns \(\epsilon = 2^{1-n}\) where <code>n</code> is the precision
</ol> </ol>
</div> </div>
<div id="outline-container-orgad846d3" class="outline-4"> <div id="outline-container-org61fd909" class="outline-4">
<h4 id="orgad846d3"><span class="section-number-4">2.3.3</span> Info about the molecular system</h4> <h4 id="org61fd909"><span class="section-number-4">2.3.3</span> Info about the molecular system</h4>
<div class="outline-text-4" id="text-2-3-3"> <div class="outline-text-4" id="text-2-3-3">
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="orgdb88aad"></a><span class="todo TODO">TODO</span> <code>qmckl_context_set_nucl_coord</code><br /></li> <li><a id="org7ceb0de"></a><span class="todo TODO">TODO</span> <code>qmckl_context_set_nucl_coord</code><br /></li>
<li><a id="orgff233b0"></a><span class="todo TODO">TODO</span> <code>qmckl_context_set_nucl_charge</code><br /></li> <li><a id="orgf558d53"></a><span class="todo TODO">TODO</span> <code>qmckl_context_set_nucl_charge</code><br /></li>
<li><a id="org92a7fdb"></a><span class="todo TODO">TODO</span> <code>qmckl_context_set_elec_num</code><br /></li> <li><a id="orgf8bb26e"></a><span class="todo TODO">TODO</span> <code>qmckl_context_set_elec_num</code><br /></li>
</ol> </ol>
</div> </div>
</div> </div>
<div id="outline-container-org8a8760b" class="outline-3"> <div id="outline-container-org94687d0" class="outline-3">
<h3 id="org8a8760b"><span class="section-number-3">2.4</span> Computation of distances</h3> <h3 id="org94687d0"><span class="section-number-3">2.4</span> Computation of distances</h3>
<div class="outline-text-3" id="text-2-4"> <div class="outline-text-3" id="text-2-4">
<p> <p>
Function for the computation of distances between particles. Function for the computation of distances between particles.
@ -1467,12 +1467,12 @@ Function for the computation of distances between particles.
</ul> </ul>
</div> </div>
<div id="outline-container-org929abaa" class="outline-4"> <div id="outline-container-org1fc9cb1" class="outline-4">
<h4 id="org929abaa"><span class="section-number-4">2.4.1</span> Squared distance</h4> <h4 id="org1fc9cb1"><span class="section-number-4">2.4.1</span> Squared distance</h4>
<div class="outline-text-4" id="text-2-4-1"> <div class="outline-text-4" id="text-2-4-1">
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org9ec8b65"></a><code>qmckl_distance_sq</code><br /> <li><a id="orgad9c580"></a><code>qmckl_distance_sq</code><br />
<div class="outline-text-5" id="text-2-4-1-1"> <div class="outline-text-5" id="text-2-4-1-1">
<p> <p>
Computes the matrix of the squared distances between all pairs of Computes the matrix of the squared distances between all pairs of
@ -1484,7 +1484,7 @@ points in two sets, one point within each set:
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org5087201"></a>Arguments<br /> <li><a id="org4e72e7d"></a>Arguments<br />
<div class="outline-text-6" id="text-2-4-1-1-1"> <div class="outline-text-6" id="text-2-4-1-1-1">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -1567,7 +1567,7 @@ points in two sets, one point within each set:
</div> </div>
</li> </li>
<li><a id="orge416885"></a>Requirements<br /> <li><a id="org0bc44dc"></a>Requirements<br />
<div class="outline-text-6" id="text-2-4-1-1-2"> <div class="outline-text-6" id="text-2-4-1-1-2">
<ul class="org-ul"> <ul class="org-ul">
<li><code>context</code> is not 0</li> <li><code>context</code> is not 0</li>
@ -1585,7 +1585,7 @@ points in two sets, one point within each set:
</div> </div>
</li> </li>
<li><a id="orgd7ef06e"></a>Performance<br /> <li><a id="orgdc3d0a6"></a>Performance<br />
<div class="outline-text-6" id="text-2-4-1-1-3"> <div class="outline-text-6" id="text-2-4-1-1-3">
<p> <p>
This function might be more efficient when <code>A</code> and <code>B</code> are This function might be more efficient when <code>A</code> and <code>B</code> are
@ -1604,7 +1604,7 @@ transposed.
</div> </div>
</li> </li>
<li><a id="org29f3cb1"></a>Source<br /> <li><a id="org8f52c7f"></a>Source<br />
<div class="outline-text-6" id="text-2-4-1-1-4"> <div class="outline-text-6" id="text-2-4-1-1-4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #228b22;">integer </span><span style="color: #a020f0;">function</span><span style="color: #a0522d;"> </span><span style="color: #0000ff;">qmckl_distance_sq_f</span><span style="color: #000000; background-color: #ffffff;">(context, transa, transb, m, n, A, LDA, B, LDB, C, LDC) result(info)</span> <pre class="src src-f90"><span style="color: #228b22;">integer </span><span style="color: #a020f0;">function</span><span style="color: #a0522d;"> </span><span style="color: #0000ff;">qmckl_distance_sq_f</span><span style="color: #000000; background-color: #ffffff;">(context, transa, transb, m, n, A, LDA, B, LDB, C, LDC) result(info)</span>
@ -1740,8 +1740,8 @@ transposed.
</ol> </ol>
</div> </div>
</div> </div>
<div id="outline-container-org45297c6" class="outline-3"> <div id="outline-container-orga8556a8" class="outline-3">
<h3 id="org45297c6"><span class="section-number-3">2.5</span> Atomic Orbitals</h3> <h3 id="orga8556a8"><span class="section-number-3">2.5</span> Atomic Orbitals</h3>
<div class="outline-text-3" id="text-2-5"> <div class="outline-text-3" id="text-2-5">
<p> <p>
This files contains all the routines for the computation of the This files contains all the routines for the computation of the
@ -1758,8 +1758,8 @@ values, gradients and Laplacian of the atomic basis functions.
</ul> </ul>
</div> </div>
<div id="outline-container-orgc47c214" class="outline-4"> <div id="outline-container-org8210c62" class="outline-4">
<h4 id="orgc47c214"><span class="section-number-4">2.5.1</span> Polynomials</h4> <h4 id="org8210c62"><span class="section-number-4">2.5.1</span> Polynomials</h4>
<div class="outline-text-4" id="text-2-5-1"> <div class="outline-text-4" id="text-2-5-1">
<p> <p>
\[ \[
@ -1783,7 +1783,7 @@ values, gradients and Laplacian of the atomic basis functions.
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org4fc2b8d"></a><code>qmckl_ao_powers</code><br /> <li><a id="org966560f"></a><code>qmckl_ao_powers</code><br />
<div class="outline-text-5" id="text-2-5-1-1"> <div class="outline-text-5" id="text-2-5-1-1">
<p> <p>
Computes all the powers of the <code>n</code> input data up to the given Computes all the powers of the <code>n</code> input data up to the given
@ -1796,7 +1796,7 @@ maximum value given in input for each of the \(n\) points:
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="orgd62a97f"></a>Arguments<br /> <li><a id="orgb74e4be"></a>Arguments<br />
<div class="outline-text-6" id="text-2-5-1-1-1"> <div class="outline-text-6" id="text-2-5-1-1-1">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -1849,7 +1849,7 @@ maximum value given in input for each of the \(n\) points:
</div> </div>
</li> </li>
<li><a id="org7b2e71a"></a>Requirements<br /> <li><a id="orgf24f752"></a>Requirements<br />
<div class="outline-text-6" id="text-2-5-1-1-2"> <div class="outline-text-6" id="text-2-5-1-1-2">
<ul class="org-ul"> <ul class="org-ul">
<li><code>context</code> is not 0</li> <li><code>context</code> is not 0</li>
@ -1862,7 +1862,7 @@ maximum value given in input for each of the \(n\) points:
</div> </div>
</li> </li>
<li><a id="org7401891"></a>Header<br /> <li><a id="org39619b0"></a>Header<br />
<div class="outline-text-6" id="text-2-5-1-1-3"> <div class="outline-text-6" id="text-2-5-1-1-3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_ao_powers</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_ao_powers</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>,
@ -1874,7 +1874,7 @@ maximum value given in input for each of the \(n\) points:
</div> </div>
</li> </li>
<li><a id="org4b33e74"></a>Source<br /> <li><a id="orgfbff2f0"></a>Source<br />
<div class="outline-text-6" id="text-2-5-1-1-4"> <div class="outline-text-6" id="text-2-5-1-1-4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #228b22;">integer </span><span style="color: #a020f0;">function</span><span style="color: #a0522d;"> </span><span style="color: #0000ff;">qmckl_ao_powers_f</span><span style="color: #000000; background-color: #ffffff;">(context, n, X, LMAX, P, ldp) result(info)</span> <pre class="src src-f90"><span style="color: #228b22;">integer </span><span style="color: #a020f0;">function</span><span style="color: #a0522d;"> </span><span style="color: #0000ff;">qmckl_ao_powers_f</span><span style="color: #000000; background-color: #ffffff;">(context, n, X, LMAX, P, ldp) result(info)</span>
@ -1916,7 +1916,7 @@ maximum value given in input for each of the \(n\) points:
</li> </li>
<li><a id="orge13e1e4"></a><code>qmckl_ao_polynomial_vgl</code><br /> <li><a id="org9a7a24a"></a><code>qmckl_ao_polynomial_vgl</code><br />
<div class="outline-text-5" id="text-2-5-1-2"> <div class="outline-text-5" id="text-2-5-1-2">
<p> <p>
Computes the values, gradients and Laplacians at a given point of Computes the values, gradients and Laplacians at a given point of
@ -1925,7 +1925,7 @@ all polynomials with an angular momentum up to <code>lmax</code>.
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org00eea53"></a>Arguments<br /> <li><a id="org5919139"></a>Arguments<br />
<div class="outline-text-6" id="text-2-5-1-2-1"> <div class="outline-text-6" id="text-2-5-1-2-1">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -1996,7 +1996,7 @@ all polynomials with an angular momentum up to <code>lmax</code>.
</div> </div>
</li> </li>
<li><a id="org1af3fda"></a>Requirements<br /> <li><a id="org120368e"></a>Requirements<br />
<div class="outline-text-6" id="text-2-5-1-2-2"> <div class="outline-text-6" id="text-2-5-1-2-2">
<ul class="org-ul"> <ul class="org-ul">
<li><code>context</code> is not 0</li> <li><code>context</code> is not 0</li>
@ -2021,7 +2021,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz"</li>
</div> </div>
</li> </li>
<li><a id="org442ea93"></a>Error codes<br /> <li><a id="org35f5f37"></a>Error codes<br />
<div class="outline-text-6" id="text-2-5-1-2-3"> <div class="outline-text-6" id="text-2-5-1-2-3">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -2056,7 +2056,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz"</li>
</div> </div>
</li> </li>
<li><a id="org402dc48"></a>Header<br /> <li><a id="org4897bb6"></a>Header<br />
<div class="outline-text-6" id="text-2-5-1-2-4"> <div class="outline-text-6" id="text-2-5-1-2-4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_ao_polynomial_vgl</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_ao_polynomial_vgl</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>,
@ -2069,7 +2069,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz"</li>
</div> </div>
</li> </li>
<li><a id="orgf98d9c3"></a>Source<br /> <li><a id="orgc6c8620"></a>Source<br />
<div class="outline-text-6" id="text-2-5-1-2-5"> <div class="outline-text-6" id="text-2-5-1-2-5">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #228b22;">integer </span><span style="color: #a020f0;">function</span><span style="color: #a0522d;"> </span><span style="color: #0000ff;">qmckl_ao_polynomial_vgl_f</span><span style="color: #000000; background-color: #ffffff;">(context, X, R, lmax, n, L, ldl, VGL, ldv) result(info)</span> <pre class="src src-f90"><span style="color: #228b22;">integer </span><span style="color: #a020f0;">function</span><span style="color: #a0522d;"> </span><span style="color: #0000ff;">qmckl_ao_polynomial_vgl_f</span><span style="color: #000000; background-color: #ffffff;">(context, X, R, lmax, n, L, ldl, VGL, ldv) result(info)</span>
@ -2118,23 +2118,46 @@ For example, with a=0, b=2 and c=1 the string is "yyz"</li>
<span style="color: #a020f0;">do</span> i=1,3 <span style="color: #a020f0;">do</span> i=1,3
Y(i) = X(i) - R(i) Y(i) = X(i) - R(i)
<span style="color: #a020f0;">end do</span> <span style="color: #a020f0;">end do</span>
pows(-2:-1,1:3) = 0.d0
pows(0,1:3) = 1.d0
lmax_array(1:3) = lmax lmax_array(1:3) = lmax
info = qmckl_ao_powers_f(context, 1_8, Y(1), (/lmax/), pows(1,1), <span style="color: #a020f0;">size</span>(pows,1,kind=8))
<span style="color: #a020f0;">if</span> (info /= 0) <span style="color: #a020f0;">return</span>
info = qmckl_ao_powers_f(context, 1_8, Y(2), (/lmax/), pows(1,2), <span style="color: #a020f0;">size</span>(pows,1,kind=8))
<span style="color: #a020f0;">if</span> (info /= 0) <span style="color: #a020f0;">return</span>
info = qmckl_ao_powers_f(context, 1_8, Y(3), (/lmax/), pows(1,3), <span style="color: #a020f0;">size</span>(pows,1,kind=8))
<span style="color: #a020f0;">if</span> (info /= 0) <span style="color: #a020f0;">return</span>
<span style="color: #a020f0;">if</span> (lmax == 0) <span style="color: #a020f0;">then</span>
VGL(1,1) = 1.d0 VGL(1,1) = 1.d0
vgL(2:5,1) = 0.d0 vgL(2:5,1) = 0.d0
l(1:3,1) = 0 l(1:3,1) = 0
n=1 n=1
dd = 1.d0 <span style="color: #a020f0;">else if</span> (lmax &gt; 0) <span style="color: #a020f0;">then</span>
<span style="color: #a020f0;">do</span> d=1,lmax pows(-2:0,1:3) = 1.d0
<span style="color: #a020f0;">do</span> i=1,lmax
pows(i,1) = pows(i-1,1) * Y(1)
pows(i,2) = pows(i-1,2) * Y(2)
pows(i,3) = pows(i-1,3) * Y(3)
<span style="color: #a020f0;">end do</span>
VGL(1:5,1:4) = 0.d0
l(1:3,1:4) = 0
VGL(1,1) = 1.d0
vgl(1:5,2:4) = 0.d0
l(1,2) = 1
vgl(1,2) = pows(1,1)
vgL(2,2) = 1.d0
l(2,3) = 1
vgl(1,3) = pows(1,2)
vgL(3,3) = 1.d0
l(3,4) = 1
vgl(1,4) = pows(1,3)
vgL(4,4) = 1.d0
n=4
<span style="color: #a020f0;">endif</span>
! <span style="color: #b22222;">l&gt;=2</span>
dd = 2.d0
<span style="color: #a020f0;">do</span> d=2,lmax
da = dd da = dd
<span style="color: #a020f0;">do</span> a=d,0,-1 <span style="color: #a020f0;">do</span> a=d,0,-1
db = dd-da db = dd-da
@ -2142,6 +2165,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz"</li>
c = d - a - b c = d - a - b
dc = dd - da - db dc = dd - da - db
n = n+1 n = n+1
l(1,n) = a l(1,n) = a
l(2,n) = b l(2,n) = b
l(3,n) = c l(3,n) = c
@ -2184,12 +2208,12 @@ For example, with a=0, b=2 and c=1 the string is "yyz"</li>
</ol> </ol>
</div> </div>
<div id="outline-container-org7beaf8f" class="outline-4"> <div id="outline-container-org73a935f" class="outline-4">
<h4 id="org7beaf8f"><span class="section-number-4">2.5.2</span> Gaussian basis functions</h4> <h4 id="org73a935f"><span class="section-number-4">2.5.2</span> Gaussian basis functions</h4>
<div class="outline-text-4" id="text-2-5-2"> <div class="outline-text-4" id="text-2-5-2">
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="orgeef044e"></a><code>qmckl_ao_gaussians_vgl</code><br /> <li><a id="org557888e"></a><code>qmckl_ao_gaussians_vgl</code><br />
<div class="outline-text-5" id="text-2-5-2-1"> <div class="outline-text-5" id="text-2-5-2-1">
<p> <p>
Computes the values, gradients and Laplacians at a given point of Computes the values, gradients and Laplacians at a given point of
@ -2206,7 +2230,7 @@ Computes the values, gradients and Laplacians at a given point of
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org87badd5"></a>Arguments<br /> <li><a id="org8911c1c"></a>Arguments<br />
<div class="outline-text-6" id="text-2-5-2-1-1"> <div class="outline-text-6" id="text-2-5-2-1-1">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -2265,7 +2289,7 @@ Computes the values, gradients and Laplacians at a given point of
</div> </div>
</li> </li>
<li><a id="orgbec7d46"></a>Requirements<br /> <li><a id="org2847a98"></a>Requirements<br />
<div class="outline-text-6" id="text-2-5-2-1-2"> <div class="outline-text-6" id="text-2-5-2-1-2">
<ul class="org-ul"> <ul class="org-ul">
<li><code>context</code> is not 0</li> <li><code>context</code> is not 0</li>
@ -2280,7 +2304,7 @@ Computes the values, gradients and Laplacians at a given point of
</div> </div>
</li> </li>
<li><a id="orga2cf973"></a>Header<br /> <li><a id="org3d9f22b"></a>Header<br />
<div class="outline-text-6" id="text-2-5-2-1-3"> <div class="outline-text-6" id="text-2-5-2-1-3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_ao_gaussians_vgl</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>, <pre class="src src-C"><span style="color: #228b22;">qmckl_exit_code</span> <span style="color: #0000ff;">qmckl_ao_gaussians_vgl</span>(<span style="color: #a020f0;">const</span> <span style="color: #228b22;">qmckl_context</span> <span style="color: #a0522d;">context</span>,
@ -2292,7 +2316,7 @@ Computes the values, gradients and Laplacians at a given point of
</div> </div>
</li> </li>
<li><a id="org12d3d5c"></a>Source<br /> <li><a id="org050af56"></a>Source<br />
<div class="outline-text-6" id="text-2-5-2-1-4"> <div class="outline-text-6" id="text-2-5-2-1-4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-f90"><span style="color: #228b22;">integer </span><span style="color: #a020f0;">function</span><span style="color: #a0522d;"> </span><span style="color: #0000ff;">qmckl_ao_gaussians_vgl_f</span><span style="color: #000000; background-color: #ffffff;">(context, X, R, n, A, VGL, ldv) result(info)</span> <pre class="src src-f90"><span style="color: #228b22;">integer </span><span style="color: #a020f0;">function</span><span style="color: #a0522d;"> </span><span style="color: #0000ff;">qmckl_ao_gaussians_vgl_f</span><span style="color: #000000; background-color: #ffffff;">(context, X, R, n, A, VGL, ldv) result(info)</span>
@ -2364,13 +2388,13 @@ Computes the values, gradients and Laplacians at a given point of
</div> </div>
<div id="outline-container-org600ab4a" class="outline-4"> <div id="outline-container-org1f32bd8" class="outline-4">
<h4 id="org600ab4a"><span class="section-number-4">2.5.3</span> <span class="todo TODO">TODO</span> Slater basis functions</h4> <h4 id="org1f32bd8"><span class="section-number-4">2.5.3</span> <span class="todo TODO">TODO</span> Slater basis functions</h4>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org3de7a29" class="outline-2"> <div id="outline-container-org4b4eb6b" class="outline-2">
<h2 id="org3de7a29"><span class="section-number-2">3</span> Acknowledgments</h2> <h2 id="org4b4eb6b"><span class="section-number-2">3</span> Acknowledgments</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
<p> <p>
<img src="https://trex-coe.eu/sites/default/files/inline-images/euflag.jpg" alt="euflag.jpg" /> <img src="https://trex-coe.eu/sites/default/files/inline-images/euflag.jpg" alt="euflag.jpg" />
@ -2380,7 +2404,7 @@ Computes the values, gradients and Laplacians at a given point of
</div> </div>
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="date">Created: 2020-11-07 Sat 15:29</p> <p class="date">Created: 2020-11-07 Sat 15:39</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p> <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div> </div>
</body> </body>