excitation_generators Module

! ClassicAbInitExcitationGenerator_t methods !!!



Abstract Interfaces

abstract interface

  • private function BoundGetPgen_t(this, nI, ilutI, ex, ic, ClassCount2, ClassCountUnocc2)

    Arguments

    Type IntentOptional Attributes Name
    class(ExcitationGenerator_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)

abstract interface

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

    Arguments

    Type IntentOptional Attributes Name
    class(ExcitationGenerator_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

abstract interface

  • private subroutine BoundGenAllExcits_t(this, nI, n_excits, det_list)

    Arguments

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

abstract interface

  • private subroutine BoundFinalize_t(this)

    Arguments

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

Derived Types

type, public, abstract ::  ExcitationGenerator_t

Type-Bound Procedures

procedure(BoundGenExc_t), public, deferred :: gen_exc
procedure(BoundGetPgen_t), public, deferred :: get_pgen
procedure(BoundGenAllExcits_t), public, deferred :: gen_all_excits
procedure(BoundFinalize_t), public, deferred :: finalize

This procedure finalizes. It has to be implemented in such a way, that one can call it on uninitialized instances and in particular it should be idempotent.

type, public, abstract, extends(ExcitationGenerator_t) ::  SingleExcitationGenerator_t

Type-Bound Procedures

procedure(BoundGenExc_t), public, deferred :: gen_exc
procedure(BoundGetPgen_t), public, deferred :: get_pgen
procedure(BoundGenAllExcits_t), public, deferred :: gen_all_excits
procedure(BoundFinalize_t), public, deferred :: finalize

This procedure finalizes. It has to be implemented in such a way, that one can call it on uninitialized instances and in particular it should be idempotent.

type, public, abstract, extends(SingleExcitationGenerator_t) ::  FCISingleExcitationGenerator_t

Type-Bound Procedures

procedure(BoundGenExc_t), public, deferred :: gen_exc
procedure(BoundGetPgen_t), public, deferred :: get_pgen
procedure(BoundFinalize_t), public, deferred :: finalize

This procedure finalizes. It has to be implemented in such a way, that one can call it on uninitialized instances and in particular it should be idempotent.

procedure, public :: gen_all_excits => FCI_singles_gen_all_excits

type, public, abstract, extends(ExcitationGenerator_t) ::  DoubleExcitationGenerator_t

Type-Bound Procedures

procedure(BoundGenExc_t), public, deferred :: gen_exc
procedure(BoundGetPgen_t), public, deferred :: get_pgen
procedure(BoundGenAllExcits_t), public, deferred :: gen_all_excits
procedure(BoundFinalize_t), public, deferred :: finalize

This procedure finalizes. It has to be implemented in such a way, that one can call it on uninitialized instances and in particular it should be idempotent.

type, public, abstract, extends(DoubleExcitationGenerator_t) ::  FCIDoubleExcitationGenerator_t

Type-Bound Procedures

procedure(BoundGenExc_t), public, deferred :: gen_exc
procedure(BoundGetPgen_t), public, deferred :: get_pgen
procedure(BoundFinalize_t), public, deferred :: finalize

This procedure finalizes. It has to be implemented in such a way, that one can call it on uninitialized instances and in particular it should be idempotent.

procedure, public :: gen_all_excits => FCI_doubles_gen_all_excits

type, public, abstract, extends(ExcitationGenerator_t) ::  TripleExcitationGenerator_t

Type-Bound Procedures

procedure(BoundGenExc_t), public, deferred :: gen_exc
procedure(BoundGetPgen_t), public, deferred :: get_pgen
procedure(BoundGenAllExcits_t), public, deferred :: gen_all_excits
procedure(BoundFinalize_t), public, deferred :: finalize

This procedure finalizes. It has to be implemented in such a way, that one can call it on uninitialized instances and in particular it should be idempotent.

type, public, abstract, extends(ExcitationGenerator_t) ::  ClassicAbInitExcitationGenerator_t

this abstract excitation generator covers all ab initio Hamiltonians in the typical sense (i.e. up to double excitations)

Components

Type Visibility Attributes Name Initial
class(DoubleExcitationGenerator_t), public, allocatable :: doubles_generator
class(SingleExcitationGenerator_t), public, allocatable :: singles_generator

Type-Bound Procedures

procedure, public :: gen_exc => abinit_gen_exc
procedure, public :: get_pgen => abinit_get_pgen
procedure, public :: gen_all_excits => abinit_gen_all_excits
procedure, public :: finalize => abinit_finalize

Functions

public function get_pgen_sd(nI, ilutI, ex, ic, ClassCount2, ClassCountUnocc2, singles_generator, doubles_generator) result(pgen)

Arguments

Type IntentOptional Attributes Name
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)
class(SingleExcitationGenerator_t), intent(inout) :: singles_generator
class(DoubleExcitationGenerator_t), intent(inout) :: doubles_generator

Return Value real(kind=dp)

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

Arguments

Type IntentOptional Attributes Name
class(ClassicAbInitExcitationGenerator_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 gen_exc_sd(nI, ilutI, nJ, ilutJ, exFlag, ic, ex, tParity, pGen, hel, store, part_type, singles_generator, doubles_generator)

@brief The excitation generator subroutine for singles and doubles

Arguments

Type IntentOptional Attributes Name
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
class(SingleExcitationGenerator_t), intent(inout) :: singles_generator
class(DoubleExcitationGenerator_t), intent(inout) :: doubles_generator

public subroutine gen_all_excits_sd(nI, n_excits, det_list, singles_generator, doubles_generator)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nEl)
integer, intent(out) :: n_excits
integer(kind=n_int), intent(out), allocatable :: det_list(:,:)
class(SingleExcitationGenerator_t), intent(in) :: singles_generator
class(DoubleExcitationGenerator_t), intent(in) :: doubles_generator

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

Arguments

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

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

Arguments

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

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

Arguments

Type IntentOptional Attributes Name
class(ClassicAbInitExcitationGenerator_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 abinit_gen_all_excits(this, nI, n_excits, det_list)

Arguments

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

private subroutine abinit_finalize(this)

Arguments

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