Speficies the GAS spaces.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private, | allocatable | :: | GAS_table(:) |
GAS_table(i) returns the GAS space for the i-th spin orbital |
||
| integer, | private, | allocatable | :: | GAS_sizes(:) |
The number of spin orbitals per GAS space |
||
| integer, | private | :: | largest_GAS_size |
maxval(GAS_sizes) |
|||
| integer, | private, | allocatable | :: | splitted_orbitals(:,:) |
This is the preimage of An array that contains the spin orbitals per GAS space of dimension
|
||
| logical, | private | :: | lookup_is_connected |
These lookup variables stay valid, because the data structure is immutable |
|||
| logical, | private | :: | exchange_recoupling |
Do we do exchange recoupling? |
|||
| integer, | private | :: | N_particle |
The particle number |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in), | optional | :: | n_basis |
Write a string representation of this GAS specification to iunit
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | iunit |
Return the GAS spaces, where one particle can be created.
The returned array can be empty (allocated, but size == 0).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
| integer, | intent(in) | :: | supergroup(size(this%GAS_sizes)) |
The particles per GAS space. |
||
| integer, | intent(in), | optional | :: | add_holes(:) |
An index of orbitals where particles should be deleted before creating the new particle. |
|
| integer, | intent(in), | optional | :: | add_particles(:) |
Index of orbitals where particles should be created before creating the new particle. |
|
| integer, | intent(in), | optional | :: | n_total |
The total number of particles that will be created. Defaults to one. (Relevant for double excitations) |
Return the possible holes where a particle can be created under GAS constraints.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
| integer, | intent(in) | :: | det_I(:) |
The starting determinant |
||
| integer, | intent(in), | optional | :: | add_holes(:) |
An index of orbitals where particles should be deleted before creating the new particle. |
|
| integer, | intent(in), | optional | :: | add_particles(:) |
An index of orbitals where particles should be created before creating the new particle. |
|
| integer, | intent(in), | optional | :: | n_total |
The total number of particles that will be created. Defaults to one. |
|
| type(SpinProj_t), | intent(in), | optional | :: | excess |
The current excess of spin projections. If a beta electron was deleted, the excess is (1 \cdot \alpha). |
Query wether a determinant is contained in the GAS space.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
| integer, | intent(in) | :: | nI(:) |
An index of occupied spin orbitals. |
Query wether a CSF is contained in the GAS space.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
| type(CSF_Info_t), | intent(in) | :: | csf_i |
Query wether a determinant is contained in the GAS space.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
| integer, | intent(in) | :: | nI(:) |
An index of occupied spin orbitals. |
Query wether a CSF is contained in the GAS space.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
| type(CSF_Info_t), | intent(in) | :: | csf_i |
Query wether a determinant in bitmask format is contained in the GAS space.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
| integer(kind=n_int), | intent(in) | :: | ilut(0:nIfTot) |
An index of occupied spin orbitals. |
Query if there are connected GAS spaces under the GAS specification.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
Returns the size of the largest GAS space.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Query whether we do exchange recoupling.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Returns the size of the i-th GAS space in number of spin orbitals.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | iGAS |
Returns the sizes for GAS spaces specified in idx.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | idx(:) |
Returns the sizes for all GAS spaces.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Returns the size of the i-th GAS space in number of spin orbitals.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | iGAS |
Returns the sizes for GAS spaces specified in idx.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | idx(:) |
Returns the sizes for all GAS spaces.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Returns the i-th spin orbital in the iGAS GAS space.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | i | |||
| integer, | intent(in) | :: | iGAS |
Count the particles per GAS space. i.e. return the supergroup.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | occupied(:) |
Count the particles per GAS space. i.e. return the supergroup.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(CSF_Info_t), | intent(in) | :: | csf_i |
Count the particles per GAS space. i.e. return the supergroup.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | occupied(:) |
Count the particles per GAS space. i.e. return the supergroup.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(CSF_Info_t), | intent(in) | :: | csf_i |
Check if a single excitation is allowed.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_1_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
Check if a double excitation is allowed.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_2_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
Check if a triple excitation is allowed.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_3_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(DistinctDouble_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
Check if a single excitation is allowed.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_1_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
Check if a double excitation is allowed.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_2_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
Check if a triple excitation is allowed.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_3_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(DistinctDouble_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_1_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_2_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_3_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_1_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_2_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| type(Excite_3_t), | intent(in) | :: | exc | |||
| integer, | intent(in) | :: | supergroup(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
Get all single excitated determinants from det_I that are allowed under GAS constraints. |
||
| integer, | intent(in) | :: | det_I(:) |
Dimension is (nEl, n_configurations)
@brief Get all double excitated determinants from det_I that are allowed under GAS constraints.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | det_I(:) |
Get all excitated determinants from det_I that are allowed under GAS constraints.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(GASSpec_t), | intent(in) | :: | this |
GAS specification |
||
| integer, | intent(in) | :: | nI(:) |
Starting determinant |
||
| integer, | intent(out) | :: | n_excits |
Number of determinants |
||
| integer(kind=n_int), | intent(out), | allocatable | :: | det_list(:,:) |
Allocatable array of determinants in ilut format |
|
| integer, | intent(in), | optional | :: | ic |
Optional input for excitation level (ic=1 => singles, ic=2 => doubles) If ommited generate all. |