Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | allocatable | :: | supergroups(:,:) |
List the allowed supergroups. The indices are: (nGAS, n_supergroups) |
||
integer, | private | :: | N |
The number of particles. |
Constructor of FlexibleGASSpec_t
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | supergroups(:,:) |
The allowed supergroups. |
||
integer, | intent(in) | :: | spat_GAS_orbs(:) |
GAS space for the i-th spatial orbital. |
||
logical, | intent(in), | optional | :: | recoupling |
Exchange double excitations that recouple the spin are allowed |
Return the possible holes where a particle can be created under GAS constraints.
This function uses get_possible_spaces
to find possible GAS spaces
where a particle can be created and returns only unoccupied
sites of correct spin.
“Trivial” excitations are avoided. That means, that a site is only counted as unoccupied if it was unoccupied in nI from the beginning on. (A double excitation where a particle is deleted, but immediately recreated would be such a trivial excitations.)
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 or CSF 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 determinant in bitmask format is contained in the GAS space.
The function in nI-format is faster! It is assumed that the determinant is contained in the Full CI space and obeys e.g. the Pauli principle. The return value is not defined, if that is not the case!
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 |
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.
Can be seen as the preimage of get_iGAS (which is usually not injective).
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(:) |
Check if a single excitation is allowed.
Is called once at initialization, so it does not have to be super fast.
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.
Is called once at initialization, so it does not have to be super fast.
recoupling
allows recoupling excitations that change the spin projection
of individual GAS spaces.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GASSpec_t), | intent(in) | :: | this | |||
type(Excite_2_t), | intent(in) | :: | exc | |||
integer, | intent(in) | :: | supergroup(:) |
Query wether a supergroup is contained in the GAS space.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(FlexibleGASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
integer, | intent(in) | :: | supergroup(:) |
A supergroup. |
Check if the GAS specification is valid
If the number of particles or the number of spin orbitals is provided, then the consistency with these numbers is checked as well.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(FlexibleGASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces with local constraints. |
||
integer, | intent(in), | optional | :: | n_basis |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(FlexibleGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | iunit |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(FlexibleGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | supergroup(size(this%GAS_sizes)) | |||
integer, | intent(in), | optional | :: | add_holes(:) | ||
integer, | intent(in), | optional | :: | add_particles(:) | ||
integer, | intent(in), | optional | :: | n_total |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(FlexibleGASSpec_t), | intent(in) | :: | this |