excitation_generators Module

! ClassicAbInitExcitationGenerator_t methods !!!



Contents


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 ::  ExcitationGenerator_t

Type-Bound Procedures

procedure (BoundGenExc_t) , public :: gen_exc
procedure (BoundGetPgen_t) , public :: get_pgen
procedure (BoundGenAllExcits_t) , public :: gen_all_excits
procedure (BoundFinalize_t) , public :: 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, extends(ExcitationGenerator_t) ::  SingleExcitationGenerator_t

Type-Bound Procedures

procedure (BoundGenExc_t) , public :: gen_exc
procedure (BoundGetPgen_t) , public :: get_pgen
procedure (BoundGenAllExcits_t) , public :: gen_all_excits
procedure (BoundFinalize_t) , public :: 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-Bound Procedures

procedure (BoundGenExc_t) , public :: gen_exc
procedure (BoundGetPgen_t) , public :: get_pgen
procedure (BoundFinalize_t) , public :: 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 Subroutine

type, public, extends(ExcitationGenerator_t) ::  DoubleExcitationGenerator_t

Type-Bound Procedures

procedure (BoundGenExc_t) , public :: gen_exc
procedure (BoundGetPgen_t) , public :: get_pgen
procedure (BoundGenAllExcits_t) , public :: gen_all_excits
procedure (BoundFinalize_t) , public :: 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-Bound Procedures

procedure (BoundGenExc_t) , public :: gen_exc
procedure (BoundGetPgen_t) , public :: get_pgen
procedure (BoundFinalize_t) , public :: 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 Subroutine

type, public, extends(ExcitationGenerator_t) ::  TripleExcitationGenerator_t

Type-Bound Procedures

procedure (BoundGenExc_t) , public :: gen_exc
procedure (BoundGetPgen_t) , public :: get_pgen
procedure (BoundGenAllExcits_t) , public :: gen_all_excits
procedure (BoundFinalize_t) , public :: 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.

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 Subroutine
procedure , public :: get_pgen => abinit_get_pgen Function
procedure , public :: gen_all_excits => abinit_gen_all_excits Subroutine
procedure , public :: finalize => abinit_finalize Subroutine

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