1
0
mirror of https://github.com/TREX-CoE/trexio.git synced 2025-04-26 02:14:54 +02:00

Add state group

This commit is contained in:
q-posev 2022-04-13 16:37:10 +02:00
parent 3bc8a449db
commit f0189cb8da

View File

@ -637,46 +637,71 @@ prim_factor =
* Slater determinants (determinant group) * Slater determinants (determinant group)
The configuration interaction (CI) wave function $\Psi$ The configuration interaction (CI) wave function $\Psi$
can be expanded in the basis of Slater determinants $D_I$ as follows can be expanded in the basis of Slater determinants $D_I$ as follows
\[ \[
| \Psi> = \sum_I C_I | D_I> | \Psi> = \sum_I C_I | D_I> |
\] \]
For relatively small expansions, a given determinant can be represented as a list of ~mo.num~ occupation numbers. For relatively small expansions, a given determinant can be represented as a list of ~mo.num~ occupation numbers.
However, this requires a lot of extra memory and would be technically impossible for larger expansions However, this requires a lot of extra memory and would be technically impossible for larger expansions
(~millions of determinants). This is why the determinants are stored as bit fields in the TREXIO file (~millions of determinants). This is why the determinants are stored as bit fields in the TREXIO file
(see ~int bitfield~ type in the table below). By default, the chemist notation is used, namely (see ~int bitfield~ type in the table below). By default, the chemist notation is used, namely
\[ \[
| D_I > = | \alpha_1 \alpha_2 \ldots \alpha_{n\uparrow} \beta_1 \beta_2 \ldots \beta_{n\downarrow} > | D_I > = | \alpha_1 \alpha_2 \ldots \alpha_{n\uparrow} \beta_1 \beta_2 \ldots \beta_{n\downarrow} > |
\] \]
where $\alpha$ and $\beta$ denote $\uparrow$-spin and $\downarrow$-spin electrons, respectively, where $\alpha$ and $\beta$ denote $\uparrow$-spin and $\downarrow$-spin electrons, respectively,
$n\uparrow$ and $n\downarrow$ correspond to ~electron.up_num~ and ~electron.dn_num~, respectively. $n\uparrow$ and $n\downarrow$ correspond to ~electron.up_num~ and ~electron.dn_num~, respectively.
Internally, bit fields for $\alpha$ and $\beta$ electrons are stored separately, Internally, bit fields for $\alpha$ and $\beta$ electrons are stored separately,
which is why the ~determinant.list~ attribute has a second dimension. which is why the ~determinant.list~ attribute has a second dimension.
#+NAME: determinant #+NAME: determinant
| Variable | Type | Dimensions | Description | | Variable | Type | Dimensions | Description |
|---------------+-----------------+------------------------+--------------------------------------------------------| |---------------+-----------------+-------------------------------+--------------------------------------------------------|
| ~num~ | ~dim~ | | Number of determinants | | ~num~ | ~dim~ | | Number of determinants |
| ~list~ | ~int special~ | ~(determinant.num, 2)~ | List of determinants as integer bit fields | | ~list~ | ~int special~ | ~(determinant.num)~ | List of determinants as integer bit fields |
| ~coefficient~ | ~float special~ | ~(determinant.num)~ | Coefficients of the determinants from the CI expansion | | ~coefficient~ | ~float special~ | ~(state.num,determinant.num)~ | Coefficients of the determinants from the CI expansion |
#+CALL: json(data=determinant, title="determinant") #+CALL: json(data=determinant, title="determinant")
#+RESULTS: #+RESULTS:
:results: :RESULTS:
#+begin_src python :tangle trex.json #+begin_src python :tangle trex.json
"determinant": { "determinant": {
"num" : [ "dim" , [] ] "num" : [ "dim" , [] ]
, "list" : [ "int special" , [ "2", "determinant.num" ] ] , "list" : [ "int special" , [ "determinant.num" ] ]
, "coefficient" : [ "float special", [ "determinant.num" ] ] , "coefficient" : [ "float special", [ "determinant.num", "state.num" ] ]
} , } ,
#+end_src #+end_src
:end: :END:
* Excited states (state group)
By default, the ~determinant~ group corresponds to the ground state.
However, it should be also possible to store the coefficients that
correspond to excited state wave functions for the same set of
determinants. This is the goal of the present group
#+NAME: state
| Variable | Type | Dimensions | Description |
|----------+-------+---------------+------------------------------------------------|
| ~num~ | ~dim~ | | Number of states (including the ground state) |
| ~label~ | ~str~ | ~(state.num)~ | Label of a given state (e.g. 'S' for singlets) |
#+CALL: json(data=state, title="state")
#+RESULTS:
:RESULTS:
#+begin_src python :tangle trex.json
"state": {
"num" : [ "dim", [] ]
, "label" : [ "str", [ "state.num" ] ]
} ,
#+end_src
:END:
* Reduced density matrices (rdm group) * Reduced density matrices (rdm group)