SuperGroupIndexer_t Derived Type

type, public :: SuperGroupIndexer_t


Contents


Components

Type Visibility Attributes Name Initial
class(GASSpec_t), private, allocatable :: GAS_spec
integer(kind=int64), private, allocatable :: allowed_composition_indices(:)
integer, private :: N

The particle number.


Constructor

public interface SuperGroupIndexer_t


Type-Bound Procedures

procedure, public :: nEl => get_nEl

  • private elemental function get_nEl(this)

    Arguments

    Type IntentOptional Attributes Name
    class(SuperGroupIndexer_t), intent(in) :: this

    Return Value integer

procedure, public :: idx_supergroup => get_supergroup_idx

  • private pure function get_supergroup_idx(this, supergroup) result(idx)

    Arguments

    Type IntentOptional Attributes Name
    class(SuperGroupIndexer_t), intent(in) :: this
    integer, intent(in) :: supergroup(:)

    Return Value integer

procedure, public :: idx_nI => get_supergroup_idx_det

  • private pure function get_supergroup_idx_det(this, nI) result(idx)

    Calculate the supergroup index for a determinant nI

    Arguments

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

    The determinant for which the supergroup index should be calculated.

    Return Value integer

procedure, public :: lookup_supergroup_idx

  • private function lookup_supergroup_idx(this, idet, nI) result(idx)

    Use a precomputed supergroup index from global_det_data.

    This function heavily relies on correctly initialized global data outside the control of this class. Carefully make sure, that global_det_data is correctly initialized.

    Arguments

    Type IntentOptional Attributes Name
    class(SuperGroupIndexer_t), intent(in) :: this
    integer, intent(in) :: idet

    The index of nI in the FciMCData::CurrentDets array.

    integer, intent(in) :: nI(:)

    The determinant for which the supergroup index should be calculated.

    Return Value integer

procedure, public :: n_supergroups => get_n_supergroups

  • private pure function get_n_supergroups(this) result(res)

    Get the number of possible supergroups.

    GAS allowed compositions are called supergroups.

    Arguments

    Type IntentOptional Attributes Name
    class(SuperGroupIndexer_t), intent(in) :: this

    Return Value integer

procedure, public :: get_supergroups => indexer_get_supergroups

  • private pure function indexer_get_supergroups(this) result(res)

    Get the ordered compositions of n into k summands constrained by cumulative minima and maxima.

    GAS allowed compositions are called supergroups.

    Arguments

    Type IntentOptional Attributes Name
    class(SuperGroupIndexer_t), intent(in) :: this

    Return Value integer, allocatable, (:,:)