Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(possible_GAS_exc_gen_t), | public, | parameter | :: | possible_GAS_exc_gen | = | possible_GAS_exc_gen_t() | |
type(GAS_exc_gen_t), | public | :: | GAS_exc_gen | = | possible_GAS_exc_gen%ON_FLY_HEAT_BATH | ||
type(GAS_exc_gen_t), | public, | allocatable | :: | user_input_GAS_exc_gen | |||
class(GASSpec_t), | public, | allocatable | :: | GAS_specification |
Constructor of LocalGASSpec_t
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n_min(:) |
Minimum particle number per GAS space. |
||
integer, | intent(in) | :: | n_max(:) |
Maximum particle number per GAS space. |
||
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 |
Constructor of CumulGASSpec_t
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | cn_min(:) |
Cumulative minimum particle number. |
||
integer, | intent(in) | :: | cn_max(:) |
Cumulative maximum particle number. |
||
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 |
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 |
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 |
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) |
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 |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | val |
generic, public :: operator(==) => eq_EnumBase_t | |
generic, public :: operator(/=) => neq_EnumBase_t |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(GAS_exc_gen_t), | public | :: | DISCONNECTED | = | GAS_exc_gen_t(1) | ||
type(GAS_exc_gen_t), | public | :: | ON_FLY_HEAT_BATH | = | GAS_exc_gen_t(2) | ||
type(GAS_exc_gen_t), | public | :: | DISCARDING | = | GAS_exc_gen_t(3) | ||
type(GAS_exc_gen_t), | public | :: | PCHB | = | GAS_exc_gen_t(4) |
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 |
||
logical, | private | :: | lookup_is_connected |
These lookup variables stay valid, because the data structure is immutable |
|||
logical, | private | :: | exchange_recoupling |
procedure (contains_supergroup_t) , public :: contains_supergroup | |
procedure (is_valid_t) , public :: is_valid | |
procedure (write_to_t) , public :: write_to | |
procedure (get_possible_spaces_t) , public :: get_possible_spaces | |
procedure , public , :: get_possible_holes Function | |
procedure , public , :: contains_conf Function | |
procedure , public , :: contains_ilut Function | |
procedure , public , :: is_connected => get_is_connected Function | |
procedure , public , :: nGAS => get_nGAS Function | |
procedure , public , :: n_spin_orbs => get_nOrbs Function | |
procedure , public , :: max_GAS_size => get_max_GAS_size Function | |
procedure , public , :: recoupling Function | |
generic, public , :: GAS_size => get_GAS_size_i, get_GAS_size_idx, get_GAS_size_all | |
procedure , private :: get_GAS_size_i Function | |
procedure , private :: get_GAS_size_idx Function | |
procedure , private :: get_GAS_size_all Function | |
procedure , public , :: get_iGAS Function | |
procedure , public , :: get_orb_idx Function | |
procedure , public , :: count_per_GAS Function | |
generic, public , :: is_allowed => is_allowed_single, is_allowed_double | |
procedure , private :: is_allowed_single Function | |
procedure , private :: is_allowed_double Function |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private, | allocatable | :: | min(:) |
The indices are:
|
||
integer, | private, | allocatable | :: | max(:) |
The indices are:
|
private pure function construct_LocalGASSpec_t (n_min, n_max, spat_GAS_orbs, recoupling) | Constructor of LocalGASSpec_t |
procedure , public , :: get_possible_holes Function | |
procedure , public , :: contains_conf Function | |
procedure , public , :: contains_ilut Function | |
procedure , public , :: is_connected => get_is_connected Function | |
procedure , public , :: nGAS => get_nGAS Function | |
procedure , public , :: n_spin_orbs => get_nOrbs Function | |
procedure , public , :: max_GAS_size => get_max_GAS_size Function | |
procedure , public , :: recoupling Function | |
generic, public , :: GAS_size => get_GAS_size_i, get_GAS_size_idx, get_GAS_size_all | |
procedure , public , :: get_iGAS Function | |
procedure , public , :: get_orb_idx Function | |
procedure , public , :: count_per_GAS Function | |
generic, public , :: is_allowed => is_allowed_single, is_allowed_double | |
procedure , public , :: contains_supergroup => Local_contains_supergroup Function | |
procedure , public , :: is_valid => Local_is_valid Function | |
procedure , public , :: write_to => Local_write_to Subroutine | |
procedure , public , :: get_possible_spaces => Local_get_possible_spaces Function | |
generic, public , :: get_min => get_min_i, get_min_all | |
procedure , private :: get_min_all Function | |
procedure , private :: get_min_i Function | |
generic, public , :: get_max => get_max_i, get_max_all | |
procedure , private :: get_max_all Function | |
procedure , private :: get_max_i Function |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private, | allocatable | :: | c_min(:) |
The indices are:
|
||
integer, | private, | allocatable | :: | c_max(:) |
The indices are:
|
private pure function construct_CumulGASSpec_t (cn_min, cn_max, spat_GAS_orbs, recoupling) | Constructor of CumulGASSpec_t |
procedure , public , :: get_possible_holes Function | |
procedure , public , :: contains_conf Function | |
procedure , public , :: contains_ilut Function | |
procedure , public , :: is_connected => get_is_connected Function | |
procedure , public , :: nGAS => get_nGAS Function | |
procedure , public , :: n_spin_orbs => get_nOrbs Function | |
procedure , public , :: max_GAS_size => get_max_GAS_size Function | |
procedure , public , :: recoupling Function | |
generic, public , :: GAS_size => get_GAS_size_i, get_GAS_size_idx, get_GAS_size_all | |
procedure , public , :: get_iGAS Function | |
procedure , public , :: get_orb_idx Function | |
procedure , public , :: count_per_GAS Function | |
generic, public , :: is_allowed => is_allowed_single, is_allowed_double | |
procedure , public , :: contains_supergroup => Cumul_contains_supergroup Function | |
procedure , public , :: is_valid => Cumul_is_valid Function | |
procedure , public , :: write_to => Cumul_write_to Subroutine | |
procedure , public , :: get_possible_spaces => Cumul_get_possible_spaces Function | |
generic, public , :: get_cmin => get_cmin_i, get_cmin_all | |
procedure , private :: get_cmin_i Function | |
procedure , private :: get_cmin_all Function | |
generic, public , :: get_cmax => get_cmax_i, get_cmax_all | |
procedure , private :: get_cmax_i Function | |
procedure , private :: get_cmax_all Function |
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. |
private pure function construct_FlexibleGASSpec_t (supergroups, spat_GAS_orbs, recoupling) | Constructor of FlexibleGASSpec_t |
procedure , public , :: get_possible_holes Function | |
procedure , public , :: contains_conf Function | |
procedure , public , :: contains_ilut Function | |
procedure , public , :: is_connected => get_is_connected Function | |
procedure , public , :: nGAS => get_nGAS Function | |
procedure , public , :: n_spin_orbs => get_nOrbs Function | |
procedure , public , :: max_GAS_size => get_max_GAS_size Function | |
procedure , public , :: recoupling Function | |
generic, public , :: GAS_size => get_GAS_size_i, get_GAS_size_idx, get_GAS_size_all | |
procedure , public , :: get_iGAS Function | |
procedure , public , :: get_orb_idx Function | |
procedure , public , :: count_per_GAS Function | |
generic, public , :: is_allowed => is_allowed_single, is_allowed_double | |
procedure , public , :: contains_supergroup => Flexible_contains_supergroup Function | |
procedure , public , :: is_valid => Flexible_is_valid Function | |
procedure , public , :: write_to => Flexible_write_to Subroutine | |
procedure , public , :: get_possible_spaces => Flexible_get_possible_spaces Function | |
procedure , public , :: N_particle => Flexible_N_particle Function |
Returns the total number of GAS spaces.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GASSpec_t), | intent(in) | :: | this |
Returns the size of the largest GAS space.
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 GAS space for a given spin orbital index.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | spin_orb_idx |
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 |
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. |
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. |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GASSpec_t), | intent(in) | :: | this |
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. |
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(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(GAS_exc_gen_t), | intent(in) | :: | impl |
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(:) |
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). |
Constructor of LocalGASSpec_t
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n_min(:) |
Minimum particle number per GAS space. |
||
integer, | intent(in) | :: | n_max(:) |
Maximum particle number per GAS space. |
||
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 |
Query wether a supergroup is contained in the GAS space.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LocalGASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
integer, | intent(in) | :: | supergroup(:) |
A supergroup. |
Check if the GAS specification is valid
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LocalGASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces with local constraints. |
||
integer, | intent(in), | optional | :: | n_basis |
Returns the minimum particle number for a given GAS space.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LocalGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | iGAS |
Returns the minimum particle number for all GAS spaces.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LocalGASSpec_t), | intent(in) | :: | this |
Returns the maximum particle number for a given GAS space.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LocalGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | iGAS |
Returns the maximum particle number for all GAS spaces.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LocalGASSpec_t), | intent(in) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LocalGASSpec_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 |
Constructor of CumulGASSpec_t
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | cn_min(:) |
Cumulative minimum particle number. |
||
integer, | intent(in) | :: | cn_max(:) |
Cumulative maximum particle number. |
||
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 |
Query wether a supergroup is contained in the GAS space.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CumulGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | supergroup(:) |
Check if the GAS specification is valid
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CumulGASSpec_t), | intent(in) | :: | this |
Specification of GAS spaces. |
||
integer, | intent(in), | optional | :: | n_basis |
The number of spin orbitals. |
Returns the minimum particle number for a given GAS space.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CumulGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | iGAS |
Returns the minimum particle number for all GAS spaces.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CumulGASSpec_t), | intent(in) | :: | this |
Returns the maximum particle number for a given GAS space.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CumulGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | iGAS |
Returns the maximum particle number for all GAS spaces.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CumulGASSpec_t), | intent(in) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CumulGASSpec_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 |
Lower and upper bound for spaces where a particle can be created. If no particle can be created, then spaces == 0 .
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
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) | :: | supergroup(size(this%GAS_sizes)) | |||
integer, | intent(in), | optional | :: | add_holes(:) | ||
integer, | intent(in), | optional | :: | add_particles(:) | ||
integer, | intent(in), | optional | :: | n_total |
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 |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(FlexibleGASSpec_t), | intent(in) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LocalGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | iunit |
Write a string representation of this GAS specification to iunit
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(CumulGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | iunit |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(FlexibleGASSpec_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | iunit |