gasci_singles_main Module



Contents


Variables

Type Visibility Attributes Name Initial
type(GAS_PCHB_SinglesAlgorithm_vals_t), private, parameter :: GAS_used_singles_vals = GAS_PCHB_SinglesAlgorithm_vals_t()
type(GAS_PCHB_SinglesOptions_vals_t), public, parameter :: GAS_PCHB_singles_options_vals = GAS_PCHB_SinglesOptions_vals_t()

Derived Types

type, public, extends(EnumBase_t) ::  GAS_PCHB_SinglesAlgorithm_t

Components

Type Visibility Attributes Name Initial
integer, public :: val

Type-Bound Procedures

generic, public :: operator(==) => eq_EnumBase_t
generic, public :: operator(/=) => neq_EnumBase_t

type, private ::  GAS_PCHB_SinglesAlgorithm_vals_t

Components

Type Visibility Attributes Name Initial
type(GAS_PCHB_SinglesAlgorithm_t), public :: ON_FLY_HEAT_BATH = GAS_PCHB_SinglesAlgorithm_t(1)
type(GAS_PCHB_SinglesAlgorithm_t), public :: BITMASK_UNIFORM = GAS_PCHB_SinglesAlgorithm_t(2)
type(GAS_PCHB_SinglesAlgorithm_t), public :: PC_WEIGHTED = GAS_PCHB_SinglesAlgorithm_t(3)

type, public ::  GAS_PCHB_SinglesOptions_vals_t

Components

Type Visibility Attributes Name Initial
type(GAS_PCHB_SinglesAlgorithm_vals_t), public :: algorithm = GAS_PCHB_SinglesAlgorithm_vals_t()
type(PC_WeightedSinglesOptions_vals_t), public :: PC_weighted = PC_WeightedSinglesOptions_vals_t()

Type-Bound Procedures

procedure , public , nopass :: from_str => singles_from_keyword Function

type, public ::  GAS_PCHB_SinglesOptions_t

Components

Type Visibility Attributes Name Initial
type(GAS_PCHB_SinglesAlgorithm_t), public :: algorithm
type(PC_WeightedSinglesOptions_t), public :: PC_weighted = PC_WeightedSinglesOptions_t(GAS_PCHB_singles_options_vals%PC_weighted%drawing%UNDEFINED)

Type-Bound Procedures

procedure , public , :: to_str Function

The precomputed GAS uniform excitation generator

Components

Type Visibility Attributes Name Initial
integer(kind=n_int), private, allocatable :: allowed_holes(:,:,:)
class(GASSpec_t), private, allocatable :: GAS_spec
type(SuperGroupIndexer_t), private, pointer :: indexer => null()
logical, public :: use_lookup = .false.

Use a lookup for the supergroup index in global_det_data.

logical, public :: create_lookup = .false.

Create and manage! the supergroup index lookup in global_det_data.

Type-Bound Procedures

procedure , public :: init => GAS_singles_uniform_init Subroutine
procedure , public :: finalize => GAS_singles_uniform_finalize Subroutine
procedure , public :: get_possible_holes => GAS_singles_uniform_possible_holes Function

Get the GAS allowed holes for a given determinant and a chosen particle.

procedure , public :: gen_exc => GAS_singles_uniform_gen_exc Subroutine
procedure , public :: get_pgen => GAS_singles_uniform_get_pgen Function
procedure , public :: gen_all_excits => GAS_singles_uniform_gen_all_excits Subroutine

Functions

private pure function singles_from_keyword(w) result(res)

Parse a given keyword into the possible weighting schemes

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: w

Return Value type(GAS_PCHB_SinglesOptions_t)

private pure function to_str(options) result(res)

Arguments

Type IntentOptional Attributes Name
class(GAS_PCHB_SinglesOptions_t), intent(in) :: options

Return Value character(len=:), allocatable

private function GAS_singles_uniform_possible_holes(this, nI, ilutI, src, use_lookup, store) result(unoccupied)

@brief For a determinant nI and a spin orbital src return the GAS allowed orbitals with the same spin as src which are not occupied in nI.

Arguments

Type IntentOptional Attributes Name
class(GAS_singles_PC_uniform_ExcGenerator_t), intent(in) :: this
integer, intent(in) :: nI(nel)
integer(kind=n_int), intent(in) :: ilutI(0:nIfD)
integer, intent(in) :: src
logical, intent(in) :: use_lookup
type(excit_gen_store_type), intent(in), optional :: store

Return Value integer, allocatable, (:)

private function GAS_singles_uniform_get_pgen(this, nI, ilutI, ex, ic, ClassCount2, ClassCountUnocc2) result(pgen)

Arguments

Type IntentOptional Attributes Name
class(GAS_singles_PC_uniform_ExcGenerator_t), intent(inout) :: this
integer, intent(in) :: nI(nel)
integer(kind=n_int), intent(in) :: ilutI(0:NIfTot)
integer, intent(in) :: ex(2,maxExcit)
integer, intent(in) :: ic
integer, intent(in) :: ClassCount2(ScratchSize)
integer, intent(in) :: ClassCountUnocc2(ScratchSize)

Return Value real(kind=dp)


Subroutines

public subroutine allocate_and_init(GAS_spec, options, use_lookup, generator)

Arguments

Type IntentOptional Attributes Name
class(GASSpec_t), intent(in) :: GAS_spec
type(GAS_PCHB_SinglesOptions_t), intent(in) :: options
logical, intent(in) :: use_lookup

Use the supergroup lookup

class(SingleExcitationGenerator_t), intent(inout), allocatable :: generator

private subroutine GAS_singles_uniform_init(this, GAS_spec, use_lookup, create_lookup)

Arguments

Type IntentOptional Attributes Name
class(GAS_singles_PC_uniform_ExcGenerator_t), intent(inout) :: this
class(GASSpec_t), intent(in) :: GAS_spec
logical, intent(in) :: use_lookup
logical, intent(in) :: create_lookup

private subroutine GAS_singles_uniform_finalize(this)

Arguments

Type IntentOptional Attributes Name
class(GAS_singles_PC_uniform_ExcGenerator_t), intent(inout) :: this

private subroutine GAS_singles_uniform_gen_exc(this, nI, ilutI, nJ, ilutJ, exFlag, ic, ex, tParity, pGen, hel, store, part_type)

@brief This is the uniform singles excitation generator which uses precomputed indices to generate only GAS allowed excitations.

Arguments

Type IntentOptional Attributes Name
class(GAS_singles_PC_uniform_ExcGenerator_t), intent(inout) :: this
integer, intent(in) :: nI(nel)
integer(kind=n_int), intent(in) :: ilutI(0:NIfTot)
integer, intent(out) :: nJ(nel)
integer(kind=n_int), intent(out) :: ilutJ(0:NifTot)
integer, intent(in) :: exFlag
integer, intent(out) :: ic
integer, intent(out) :: ex(2,maxExcit)
logical, intent(out) :: tParity
real(kind=dp), intent(out) :: pGen
real(kind=dp), intent(out) :: hel
type(excit_gen_store_type), intent(inout), target :: store
integer, intent(in), optional :: part_type

private subroutine GAS_singles_uniform_gen_all_excits(this, nI, n_excits, det_list)

Arguments

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