1
0
mirror of https://github.com/TREX-CoE/trexio.git synced 2024-08-24 22:21:43 +02:00

Merge pull request #106 from TREX-CoE/amplitudes

Amplitudes
This commit is contained in:
Anthony Scemama 2023-01-02 16:07:40 +01:00 committed by GitHub
commit cadcf1f62d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 80 additions and 5 deletions

View File

@ -15,9 +15,11 @@ CHANGES
- Added plane wave basis set
- Added trexio_to_bitfield_list functionality
- Added `trexio_has_group` functionality
- Added numerical integration grid (`grid` group)
- Added OCaml binding
- Added spin and energy in MOs
- Added CSF group
- Added Amplitude group
- Added Cholesky-decomposed two-electron integrals
- Added Cholesky-decomposed RDMs for Gammcor
- Added `trexio_flush` functionality

View File

@ -679,7 +679,7 @@ prim_factor =
The Cholesky decomposition of the integrals can also be stored:
\[
\A_{ijkl} = \sum_{\alpha} G_{il\alpha} G_{jl\alpha}
A_{ijkl} = \sum_{\alpha} G_{il\alpha} G_{jl\alpha}
\]
#+NAME: mo_2e_int
@ -792,6 +792,79 @@ prim_factor =
#+end_src
:end:
* Amplitudes (amplitude group)
The wave function may be expressed in terms of action of the cluster
operator $\hat{T}$:
\[
\hat{T} = \hat{T}_1 + \hat{T}_2 + \hat{T}_3 + \dots
\]
on a reference wave function $\Psi$, where $\hat{T}_1$ is the single excitation operator,
\[
\hat{T}_1 = \sum_{ia} t_{i}^{a}\, \hat{a}^\dagger_a \hat{a}_i
\],
$\hat{T}_2$ is the double excitation operator,
\[
\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
\],
/etc/. Indices $i,j,a,b$ denote molecular orbital indices.
Wave functions obtained with perturbation theory of configuration
interaction are of the form
\[ |\Phi\rangle = \hat{T}|\Psi\rangle \]
and coupled-cluster wave functions are of the form
\[ |\Phi\rangle = e^{\hat{T}}| \Psi \rangle \]
The reference wave function is stored using the ~determinant~ and/or
~csf~ groups, and the amplitudes are stored using the current group.
The attributes with the ~exp~ suffix correspond to exponentialized operators.
The order of the indices is chosen such that
- ~t(i,a)~ = $t_{i}^{a}$.
- ~t(i,j,a,b)~ = $t_{ij}^{ab}$,
- ~t(i,j,k,a,b,c)~ = $t_{ijk}^{abc}$,
- ~t(i,j,k,l,a,b,c,d)~ = $t_{ijkl}^{abcd}$,
- $\dots$
#+NAME: amplitude
| Variable | Type | Dimensions | Description |
|-----------------+----------------+-------------------------------------------------------------+-------------------------------------------------|
| ~single~ | ~float sparse~ | ~(mo.num,mo.num)~ | Single excitation amplitudes |
| ~single_exp~ | ~float sparse~ | ~(mo.num,mo.num)~ | Exponentialized single excitation amplitudes |
| ~double~ | ~float sparse~ | ~(mo.num,mo.num,mo.num,mo.num)~ | Double excitation amplitudes |
| ~double_exp~ | ~float sparse~ | ~(mo.num,mo.num,mo.num,mo.num)~ | Exponentialized double excitation amplitudes |
| ~triple~ | ~float sparse~ | ~(mo.num,mo.num,mo.num,mo.num,mo.num,mo.num)~ | Triple excitation amplitudes |
| ~triple_exp~ | ~float sparse~ | ~(mo.num,mo.num,mo.num,mo.num,mo.num,mo.num)~ | Exponentialized triple excitation amplitudes |
| ~quadruple~ | ~float sparse~ | ~(mo.num,mo.num,mo.num,mo.num,mo.num,mo.num,mo.num,mo.num)~ | Quadruple excitation amplitudes |
| ~quadruple_exp~ | ~float sparse~ | ~(mo.num,mo.num,mo.num,mo.num,mo.num,mo.num,mo.num,mo.num)~ | Exponentialized quadruple excitation amplitudes |
#+CALL: json(data=amplitude, title="amplitude")
#+RESULTS:
:results:
#+begin_src python :tangle trex.json
"amplitude": {
"single" : [ "float sparse", [ "mo.num", "mo.num" ] ]
, "single_exp" : [ "float sparse", [ "mo.num", "mo.num" ] ]
, "double" : [ "float sparse", [ "mo.num", "mo.num", "mo.num", "mo.num" ] ]
, "double_exp" : [ "float sparse", [ "mo.num", "mo.num", "mo.num", "mo.num" ] ]
, "triple" : [ "float sparse", [ "mo.num", "mo.num", "mo.num", "mo.num", "mo.num", "mo.num" ] ]
, "triple_exp" : [ "float sparse", [ "mo.num", "mo.num", "mo.num", "mo.num", "mo.num", "mo.num" ] ]
, "quadruple" : [ "float sparse", [ "mo.num", "mo.num", "mo.num", "mo.num", "mo.num", "mo.num", "mo.num", "mo.num" ] ]
, "quadruple_exp" : [ "float sparse", [ "mo.num", "mo.num", "mo.num", "mo.num", "mo.num", "mo.num", "mo.num", "mo.num" ] ]
} ,
#+end_src
:end:
* Excited states (state group)
This group contains information about excited states. Since only a
@ -967,10 +1040,10 @@ prim_factor =
defined in this group.
#+NAME: pbc
| Variable | Type | Dimensions | Description |
|---------------+---------+------------+-------------------------|
| ~periodic~ | ~int~ | | ~1~: true or ~0~: false |
| ~k_point~ | ~float~ | ~(3)~ | $k$-point sampling |
| Variable | Type | Dimensions | Description |
|------------+---------+------------+-------------------------|
| ~periodic~ | ~int~ | | ~1~: true or ~0~: false |
| ~k_point~ | ~float~ | ~(3)~ | $k$-point sampling |
#+CALL: json(data=pbc, title="pbc")