pq_property_index Module



Variables

Type Visibility Attributes Name Initial
class(GAS_SuperGroupIndexer_t), public, allocatable :: P_indexer
class(PropertyIndexer_t), public, allocatable :: total_indexer

Interfaces

public interface PQ_indexer_t


Derived Types

type, public, extends(AlsoGUGA_PropertyIndexer_t) ::  PQ_indexer_t

Components

Type Visibility Attributes Name Initial
integer(kind=int64), public, allocatable :: allowed_composition_indices(:)
integer, public :: n_spin_orbs_

The number of spin orbitals of underlying determinants.

integer, public :: prop_vec_sum_

The sum of the property vectors. In the case of PropVec this is the particle number.

integer, public :: prop_vec_dim_

The dimension of the property vector (corresponds to number of PropVec spaces for pure PropVec)

class(GAS_SuperGroupIndexer_t), public, allocatable :: total_space
class(GAS_SuperGroupIndexer_t), public, allocatable :: P_space
logical, public, allocatable :: contained_in_P(:)

Constructor

private pure function construct_PQ_indexer_t (P_indexer, total_indexer)

Type-Bound Procedures

procedure, public :: idx_prop_vec
procedure, public :: idx_nI => get_idx_prop_vec_det
procedure, public :: n_prop_vecs => get_n_prop_vecs
procedure, public :: get_prop_vecs
procedure, public :: dyn_is_allowed
procedure, public :: prop_vec_dim
procedure, public :: n_spin_orbs
procedure, public :: prop_vec_sum
procedure, public :: idx_csf => get_prop_vec_idx_csf
generic, public :: lookup_prop_vec_idx => lookup_prop_vec_idx_nI, lookup_prop_vec_idx_CSF
generic, public :: is_allowed => is_allowed_single, is_allowed_double, is_allowed_triple, is_allowed_configurations, is_allowed_distinct_double
generic, public :: to_prop_vec => to_prop_vec_ni, to_prop_vec_csf
procedure, public :: is_allowed_single
procedure, public :: is_allowed_double
procedure, public :: is_allowed_triple
procedure, public :: is_allowed_configurations
procedure, public :: is_allowed_distinct_double
procedure, public :: excite_single
procedure, public :: excite_double
procedure, public :: excite_triple
generic, public :: excite => excite_single, excite_double, excite_triple
procedure, public :: gen_all_excits => PQ_gen_all_excits
procedure, public :: to_prop_vec_csf => PQ_to_prop_vec_csf_t
procedure, public :: to_prop_vec_ni => PQ_to_prop_vec_nI_t
procedure, public :: write_to => PQ_write_to

Functions

private pure function excite_single(this, exc, prop_vec) result(res)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
type(Excite_1_t), intent(in) :: exc
integer, intent(in) :: prop_vec(:)

Return Value integer, (size(prop_vec))

private pure function excite_double(this, exc, prop_vec) result(res)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
type(Excite_2_t), intent(in) :: exc
integer, intent(in) :: prop_vec(:)

Return Value integer, (size(prop_vec))

private pure function excite_triple(this, exc, prop_vec) result(res)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
type(Excite_3_t), intent(in) :: exc
integer, intent(in) :: prop_vec(:)

Return Value integer, (size(prop_vec))

private pure function is_allowed_single(this, exc, prop_vec)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
type(Excite_1_t), intent(in) :: exc
integer, intent(in) :: prop_vec(:)

Return Value logical

private pure function is_allowed_double(this, exc, prop_vec)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
type(Excite_2_t), intent(in) :: exc
integer, intent(in) :: prop_vec(:)

Return Value logical

private pure function is_allowed_triple(this, exc, prop_vec)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
type(Excite_3_t), intent(in) :: exc
integer, intent(in) :: prop_vec(:)

Return Value logical

private pure function is_allowed_distinct_double(this, exc, prop_vec)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
type(DistinctDouble_t), intent(in) :: exc
integer, intent(in) :: prop_vec(:)

Return Value logical

private pure function is_allowed_configurations(this, nI, nJ)

Check if an excitation nI -> nJ is allowed.

Read more…

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
integer, intent(in) :: nI(nEl)
integer, intent(in) :: nJ(nEl)

Return Value logical

private pure function PQ_to_prop_vec_csf_t(this, csf_i) result(prop_vec)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
type(CSF_Info_t), intent(in) :: csf_i

Return Value integer, (this%total_space%prop_vec_dim())

private pure function PQ_to_prop_vec_nI_t(this, nI) result(prop_vec)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
integer, intent(in) :: nI(:)

Return Value integer, (this%total_space%prop_vec_dim())

private pure function construct_PQ_indexer_t(P_indexer, total_indexer) result(idxer)

Arguments

Type IntentOptional Attributes Name
class(GAS_SuperGroupIndexer_t), intent(in) :: P_indexer
class(GAS_SuperGroupIndexer_t), intent(in) :: total_indexer

Return Value type(PQ_indexer_t)


Subroutines

private subroutine PQ_gen_all_excits(this, nI, n_excits, det_list, ic)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
integer, intent(in) :: nI(:)
integer, intent(out) :: n_excits
integer(kind=n_int), intent(out), allocatable :: det_list(:,:)
integer, intent(in), optional :: ic

private subroutine PQ_write_to(this, iunit)

Arguments

Type IntentOptional Attributes Name
class(PQ_indexer_t), intent(in) :: this
integer, intent(in) :: iunit