1
0
mirror of https://github.com/TREX-CoE/trexio.git synced 2024-12-22 20:35:44 +01:00

add headers to tables and group names

This commit is contained in:
q-posev 2021-06-25 11:52:53 +02:00
parent 81755ed821
commit a328741a0c

111
trex.org
View File

@ -2,22 +2,29 @@
#+STARTUP: latexpreview
#+SETUPFILE: docs/theme.setup
This page contains information about the general structure of the
TREXIO library. The source code of the library can be automatically
generated based on the contents of the ~trex.json~ file, which is
compiled from different sections (groups) presented below.
All the quantities are saved in atomic units.
For more information about the automatic generation on the source code
or regarding possible modifications, please contact the TREXIO developers.
All quantities are saved in TREXIO file 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 produces JSON configuration file as the library is
is reversed in the produced JSON configuration file as the library is
written in C.
In Fortran, the arrays are 1-based and in most other languages the
arrays are 0-base. Hence, we introduce the ~index~ type which is an
arrays are 0-based. Hence, we introduce the ~index~ type which is an
1-based ~int~ in the Fortran interface and 0-based otherwise.
#+begin_src python :tangle trex.json
#+begin_src python :tangle trex.json :exports none
{
#+end_src
* Metadata
* Metadata (metadata group)
As we expect our files to be archived in open-data repositories, we
need to give the possibility to the users to store some metadata
@ -26,6 +33,8 @@ arrays are 0-base. Hence, we introduce the ~index~ type which is an
authors of the file, and a textual description.
#+NAME: metadata
| Variable | Type | Dimensions (for arrays) | Description |
|---------------+-------+-------------------------+------------------------------------------|
| ~code_num~ | ~int~ | | Number of codes used to produce the file |
| ~code~ | ~str~ | ~(metadata.code_num)~ | Names of the codes used |
| ~author_num~ | ~int~ | | Number of authors of the file |
@ -46,14 +55,16 @@ arrays are 0-base. Hence, we introduce the ~index~ type which is an
#+end_src
:end:
* Electron
* Electron (electron group)
We consider wave functions expressed in the spin-free formalism, where
the number of \uparrow and \downarrow electrons is fixed.
#+NAME:electron
| ~up_num~ | ~int~ | | Number of \uparrow-spin electrons |
| ~dn_num~ | ~int~ | | Number of \downarrow-spin electrons |
| Variable | Type | Dimensions | Description |
|----------+-------+------------+-------------------------------------|
| ~up_num~ | ~int~ | | Number of \uparrow-spin electrons |
| ~dn_num~ | ~int~ | | Number of \downarrow-spin electrons |
#+CALL: json(data=electron, title="electron")
#+RESULTS:
@ -66,12 +77,14 @@ arrays are 0-base. Hence, we introduce the ~index~ type which is an
#+end_src
:end:
* Nucleus
* Nucleus (nucleus group)i
The nuclei are considered as fixed point charges. Coordinates are
given in Cartesian $(x,y,z)$ format.
#+NAME: nucleus
| Variable | Type | Dimensions | Description |
|---------------+---------+-------------------+--------------------------|
| ~num~ | ~int~ | | Number of nuclei |
| ~charge~ | ~float~ | ~(nucleus.num)~ | Charges of the nuclei |
| ~coord~ | ~float~ | ~(3,nucleus.num)~ | Coordinates of the atoms |
@ -92,7 +105,7 @@ arrays are 0-base. Hence, we introduce the ~index~ type which is an
#+end_src
:end:
* TODO Effective core potentials
* TODO Effective core potentials (ecp group)
An effective core potential (ECP) $V_A^{\text{pp}}$ replacing the
core electrons of atom $A$ is the sum of a local component
@ -126,6 +139,8 @@ arrays are 0-base. Hence, we introduce the ~index~ type which is an
- $\hat{V}_\text{ecp,nl} = \sum_A \hat{V}_A^{\text{nl}}$ : non-local component
#+NAME: ecp
| Variable | Type | Dimensions | Description |
|-----------------------+---------+------------------------------------------+----------------------------|
| ~lmax_plus_1~ | ~int~ | ~(nucleus.num)~ | $l_{\max} + 1$ |
| ~z_core~ | ~float~ | ~(nucleus.num)~ | Charges to remove |
| ~local_n~ | ~int~ | ~(nucleus.num)~ | Number of local function |
@ -161,7 +176,7 @@ arrays are 0-base. Hence, we introduce the ~index~ type which is an
#+end_src
:end:
* Basis set
* Basis set (basis group)
We consider here basis functions centered on nuclei. Hence, we enable
the possibility to define /dummy atoms/ to place basis functions in
@ -201,6 +216,8 @@ arrays are 0-base. Hence, we introduce the ~index~ type which is an
All the basis set parameters are stored in one-dimensional arrays:
#+NAME: basis
| Variable | Type | Dimensions | Description |
|---------------------+---------+--------------------+----------------------------------------------------------|
| ~type~ | ~str~ | | Type of basis set: "Gaussian" or "Slater" |
| ~num~ | ~int~ | | Total Number of shells |
| ~prim_num~ | ~int~ | | Total number of primitives |
@ -210,7 +227,7 @@ arrays are 0-base. Hence, we introduce the ~index~ type which is an
| ~shell_prim_num~ | ~int~ | ~(basis.num)~ | Number of primitives in the shell ($N_{\text{prim}}$) |
| ~shell_factor~ | ~float~ | ~(basis.num)~ | Normalization factor of the shell ($\mathcal{N}_s$) |
| ~shell_prim_index~ | ~index~ | ~(basis.num)~ | Index of the first primitive in the complete list |
| ~exponent~ | ~float~ | ~(basis.prim_num)~ | Exponents of the primitives ($\gamma_{ks}$) |
| ~exponent~ | ~float~ | ~(basis.prim_num)~ | Exponents of the primitives ($\gamma_{ks}$) |
| ~coefficient~ | ~float~ | ~(basis.prim_num)~ | Coefficients of the primitives ($a_{ks}$) |
| ~prim_factor~ | ~float~ | ~(basis.prim_num)~ | Normalization coefficients for the primitives ($f_{ks}$) |
@ -292,7 +309,7 @@ prim_factor =
4.3649547399719840e-01, 1.8135965626177861e+00 ]
#+END_EXAMPLE
* Atomic orbitals
* Atomic orbitals (ao group)
Going from the atomic basis set to AOs implies a systematic
construction of all the angular functions of each shell. We
@ -337,6 +354,8 @@ prim_factor =
introduced here should be $\frac{\mathcal{N}_{xy}}{\mathcal{N}_{z^2}}$.
#+NAME: ao
| Variable | Type | Dimensions | Description |
|-----------------+---------+------------+---------------------------------|
| ~cartesian~ | ~int~ | | ~1~: true, ~0~: false |
| ~num~ | ~int~ | | Total number of atomic orbitals |
| ~shell~ | ~index~ | ~(ao.num)~ | basis set shell for each AO |
@ -356,7 +375,7 @@ prim_factor =
#+end_src
:end:
** One-electron integrals
** One-electron integrals (ao_1e_int group)
:PROPERTIES:
:CUSTOM_ID: ao_one_e
:END:
@ -374,12 +393,14 @@ prim_factor =
over atomic orbitals.
#+NAME: ao_1e_int
| ~overlap~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert q \rangle$ |
| ~kinetic~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{T}_e \vert q \rangle$ |
| ~potential_n_e~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{V}_{\text{ne}} \vert q \rangle$ |
| ~ecp_local~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{V}_{\text{ecp,l}} \vert q \rangle$ |
| ~ecp_non_local~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{V}_{\text{ecp,nl}} \vert q \rangle$ |
| ~core_hamiltonian~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{h} \vert q \rangle$ |
| Variable | Type | Dimensions | Description |
|--------------------+---------+--------------------+-----------------------------------------------------------|
| ~overlap~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert q \rangle$ |
| ~kinetic~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{T}_e \vert q \rangle$ |
| ~potential_n_e~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{V}_{\text{ne}} \vert q \rangle$ |
| ~ecp_local~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{V}_{\text{ecp,l}} \vert q \rangle$ |
| ~ecp_non_local~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{V}_{\text{ecp,nl}} \vert q \rangle$ |
| ~core_hamiltonian~ | ~float~ | ~(ao.num, ao.num)~ | $\langle p \vert \hat{h} \vert q \rangle$ |
#+CALL: json(data=ao_1e_int, title="ao_1e_int")
@ -397,7 +418,7 @@ prim_factor =
#+end_src
:end:
** Two-electron integrals
** Two-electron integrals (ao_2e_int group)
:PROPERTIES:
:CUSTOM_ID: ao_two_e
:END:
@ -418,8 +439,10 @@ prim_factor =
\mathbf{r}_j \vert)}{\vert \mathbf{r}_i - \mathbf{r}_j \vert} \] : electron-electron long range potential
#+NAME: ao_2e_int
| ~eri~ | ~float sparse~ | ~(ao.num, ao.num, ao.num, ao.num)~ | Electron repulsion integrals |
| ~eri_lr~ | ~float sparse~ | ~(ao.num, ao.num, ao.num, ao.num)~ | Long-range Electron repulsion integrals |
| Variable | Type | Dimensions | Description |
|----------+----------------+------------------------------------+-----------------------------------------|
| ~eri~ | ~float sparse~ | ~(ao.num, ao.num, ao.num, ao.num)~ | Electron repulsion integrals |
| ~eri_lr~ | ~float sparse~ | ~(ao.num, ao.num, ao.num, ao.num)~ | Long-range Electron repulsion integrals |
#+CALL: json(data=ao_2e_int, title="ao_2e_int")
@ -433,9 +456,11 @@ prim_factor =
#+end_src
:end:
* Molecular orbitals
* Molecular orbitals (mo group)
#+NAME: mo
| Variable | Type | Dimensions | Description |
|---------------+---------+--------------------+------------------------------------------|
| ~type~ | ~str~ | | String identify the set of MOs |
| ~num~ | ~int~ | | Number of MOs |
| ~coefficient~ | ~float~ | ~(ao.num, mo.num)~ | MO coefficients |
@ -459,19 +484,21 @@ prim_factor =
#+end_src
:end:
** One-electron integrals
** One-electron integrals (mo_1e_int group)
The operators as the same as those defined in the
[[#ao_one_e][AO one-electron integrals section]]. Here, the integrals are given in
the basis of molecular orbitals.
#+NAME: mo_1e_int
| ~overlap~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert j \rangle$ |
| ~kinetic~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{T}_e \vert j \rangle$ |
| ~potential_n_e~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{V}_{\text{ne}} \vert j \rangle$ |
| ~ecp_local~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{V}_{\text{ecp,l}} \vert j \rangle$ |
| ~ecp_non_local~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{V}_{\text{ecp,nl}} \vert j \rangle$ |
| ~core_hamiltonian~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{h} \vert j \rangle$ |
| Variable | Type | Dimensions | Description |
|--------------------+---------+--------------------+-----------------------------------------------------------|
| ~overlap~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert j \rangle$ |
| ~kinetic~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{T}_e \vert j \rangle$ |
| ~potential_n_e~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{V}_{\text{ne}} \vert j \rangle$ |
| ~ecp_local~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{V}_{\text{ecp,l}} \vert j \rangle$ |
| ~ecp_non_local~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{V}_{\text{ecp,nl}} \vert j \rangle$ |
| ~core_hamiltonian~ | ~float~ | ~(mo.num, mo.num)~ | $\langle i \vert \hat{h} \vert j \rangle$ |
#+CALL: json(data=mo_1e_int, title="mo_1e_int")
@ -489,15 +516,17 @@ prim_factor =
#+end_src
:end:
** Two-electron integrals
** Two-electron integrals (mo_2e_int group)
The operators as the same as those defined in the
[[#ao_one_e][AO one-electron integrals section]]. Here, the integrals are given in
the basis of molecular orbitals.
#+NAME: mo_2e_int
| ~eri~ | ~float sparse~ | ~(mo.num, mo.num, mo.num, mo.num)~ | Electron repulsion integrals |
| ~eri_lr~ | ~float sparse~ | ~(mo.num, mo.num, mo.num, mo.num)~ | Long-range Electron repulsion integrals |
| Variable | Type | Dimensions | Description |
|----------+----------------+------------------------------------+-----------------------------------------|
| ~eri~ | ~float sparse~ | ~(mo.num, mo.num, mo.num, mo.num)~ | Electron repulsion integrals |
| ~eri_lr~ | ~float sparse~ | ~(mo.num, mo.num, mo.num, mo.num)~ | Long-range Electron repulsion integrals |
#+CALL: json(data=mo_2e_int, title="mo_2e_int")
@ -512,13 +541,15 @@ prim_factor =
:end:
* TODO Slater determinants
* TODO Reduced density matrices
* TODO Reduced density matrices (rdm group)
#+NAME: rdm
| ~one_e~ | ~float~ | ~(mo.num, mo.num)~ |
| ~one_e_up~ | ~float~ | ~(mo.num, mo.num)~ |
| ~one_e_dn~ | ~float~ | ~(mo.num, mo.num)~ |
| ~two_e~ | ~float sparse~ | ~(mo.num, mo.num, mo.num, mo.num)~ |
| Variable | Type | Dimensions | Description |
|------------+----------------+------------------------------------+-------------|
| ~one_e~ | ~float~ | ~(mo.num, mo.num)~ | |
| ~one_e_up~ | ~float~ | ~(mo.num, mo.num)~ | |
| ~one_e_dn~ | ~float~ | ~(mo.num, mo.num)~ | |
| ~two_e~ | ~float sparse~ | ~(mo.num, mo.num, mo.num, mo.num)~ | |
#+CALL: json(data=rdm, title="rdm", last=1)
@ -587,6 +618,6 @@ print("""#+end_src""")
#+end_src
#+begin_src python :tangle trex.json :results output drawer
#+begin_src python :tangle trex.json :results output drawer :exports none
}
#+end_src