cc_amplitudes Module



Contents


Variables

Type Visibility Attributes Name Initial
logical, public :: t_cc_amplitudes = .false.
logical, public :: t_plot_cc_amplitudes = .false.
integer, public :: cc_order = 0
integer, public :: cc_delay = 1000
integer, private :: est_triples = 0
integer, private :: n_singles = 0
integer, private :: n_doubles = 0
integer, private :: n_triples = 0
integer, private :: n_quads = 0
real(kind=dp), private :: cc_amp_norm(0:2,4) = 0.0_dp
integer, private :: all_est_triples = 0
integer, private :: all_n_singles = 0
integer, private :: all_n_doubles = 0
real(kind=dp), private :: all_cc_amp_norm(0:2,4) = 0.0_dp
logical, private :: t_store_hash_quadrupels = .true.
integer, private :: quad_hash_size
integer, private :: quad_hash_size_wf
integer, private :: norm_comp = 2
type(cc_hash), private, pointer :: quad_hash(:)
type(cc_hash), private, pointer :: quad_hash_wf(:)
integer, private :: n_clashes = 0
type(cc_amplitude), private, allocatable :: cc_ops(:)
type(cc_amplitude), private, allocatable :: disc_cc_ops(:)
type(cc_amplitude), private, allocatable :: all_cc_ops(:)
logical, private :: t_store_disc_ops = .true.
integer, private, allocatable :: ind_matrix_singles(:,:)
integer, private, allocatable :: ind_matrix_doubles(:,:)
integer, private :: n_virt_pairs = 0
integer, private :: nvirt = 0
integer, private, allocatable :: elec_ind_mat(:,:)
integer, private, allocatable :: orb_ind_mat(:,:)

Derived Types

type, private ::  cc_hash

Components

Type Visibility Attributes Name Initial
logical, public :: found = .false.
real(kind=dp), public :: amp = 0.0_dp
integer(kind=n_int), public, allocatable :: ind(:)
type(cc_hash), public, pointer :: next => null()

type, public ::  cc_amplitude

Components

Type Visibility Attributes Name Initial
integer, public :: order = 0
integer, public, allocatable :: operators(:,:,:)
real(kind=dp), public, allocatable :: amplitudes(:)
integer, public, allocatable :: set_flag(:)
integer, public :: n_ops = 0

Type-Bound Procedures

procedure , public , :: get_ex Function
procedure , public , :: get_ind Function
procedure , public , :: get_amp => get_amp_ind Function

Functions

public function cc_singles_factor() result(factor)

Arguments

None

Return Value real(kind=dp)

public function cc_doubles_factor() result(factor)

Arguments

None

Return Value real(kind=dp)

public function cc_triples_factor() result(factor)

Arguments

None

Return Value real(kind=dp)

public function cc_quads_factor() result(factor)

Arguments

None

Return Value real(kind=dp)

private function linear_elec_ind(i, j) result(ind)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: i
integer, intent(in) :: j

Return Value integer

private function linear_orb_ind(a, b) result(ind)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: a
integer, intent(in) :: b

Return Value integer

private function get_amp_ind(this, ind) result(amp)

Arguments

Type IntentOptional Attributes Name
class(cc_amplitude) :: this
integer, intent(in) :: ind

Return Value real(kind=dp)

private function unique_quad_ind_3_1(ijk_abc, l_d)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ijk_abc(2,3)
integer, intent(in) :: l_d(2,1)

Return Value logical

private function unique_quad_ind_2_2(ij_ab, kl_cd)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ij_ab(2,2)
integer, intent(in) :: kl_cd(2,2)

Return Value logical

private function apply_excit_ops(ilut_in, elecs, orbs) result(ilut_out)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(in) :: ilut_in(0:nifd)
integer, intent(in) :: elecs(:)
integer, intent(in) :: orbs(:)

Return Value integer(kind=n_int), (0:nifd)

private function get_ex(this, ind) result(ex)

Arguments

Type IntentOptional Attributes Name
class(cc_amplitude), intent(in) :: this
integer, intent(in) :: ind

Return Value integer, (2,this%order)

private function get_ind(this, elec_ind, orb_ind) result(ind)

Arguments

Type IntentOptional Attributes Name
class(cc_amplitude), intent(in) :: this
integer, intent(in) :: elec_ind(this%order)
integer, intent(in) :: orb_ind(this%order)

Return Value integer

private pure function ind1(i, a)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: i
integer, intent(in) :: a

Return Value integer

private pure function ind2(i, j, a, b)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: i
integer, intent(in) :: j
integer, intent(in) :: a
integer, intent(in) :: b

Return Value integer

public function calc_number_of_excitations(n_alpha, n_beta, max_excit, n_orbs) result(n_excits)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_alpha
integer, intent(in) :: n_beta
integer, intent(in) :: max_excit
integer, intent(in) :: n_orbs

Return Value integer, (max_excit)

public function calc_n_parallel_excitations(n_elecs, n_orbs, ic) result(n_parallel)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_elecs
integer, intent(in) :: n_orbs
integer, intent(in) :: ic

Return Value integer


Subroutines

public subroutine print_cc_amplitudes(hash_table, hash_size)

Arguments

Type IntentOptional Attributes Name
type(cc_hash), intent(in), optional, pointer :: hash_table(:)
integer, intent(in), optional :: hash_size

private subroutine calc_cc_quad_norm(hash_table, hash_size)

Arguments

Type IntentOptional Attributes Name
type(cc_hash), intent(in), pointer :: hash_table(:)
integer, intent(in) :: hash_size

private subroutine setup_ind_matrix_doubles()

Arguments

None

private subroutine setup_elec_ind_mat()

Arguments

None

private subroutine setup_orb_ind_mat()

Arguments

None

public subroutine setup_ind_matrix_singles()

Arguments

None

public subroutine init_cc_amplitudes()

Arguments

None

private subroutine communicate_cc_amps(n_excits)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_excits(cc_order)

private subroutine init_cc_hash(hash_table, hash_table_size)

Arguments

Type IntentOptional Attributes Name
type(cc_hash), intent(inout), pointer :: hash_table(:)
integer, intent(in) :: hash_table_size

private subroutine calc_n_triples()

Arguments

None

private subroutine calc_n_quads()

Arguments

None

private subroutine cc_hash_look_up(ind, tgt, hash_table, hash_val, t_found)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ind(:)
integer(kind=n_int), intent(in) :: tgt(0:nifd)
type(cc_hash), pointer :: hash_table(:)
integer, intent(out) :: hash_val
logical, intent(out) :: t_found

private subroutine cc_hash_update(hash_table, hash_val, tgt, amp)

Arguments

Type IntentOptional Attributes Name
type(cc_hash), intent(inout), pointer :: hash_table(:)
integer, intent(in) :: hash_val
integer(kind=n_int), intent(in) :: tgt(:)
real(kind=dp), intent(in) :: amp

private subroutine cc_hash_add(hash_table, hash_val, tgt, amp)

Arguments

Type IntentOptional Attributes Name
type(cc_hash), intent(inout), pointer :: hash_table(:)
integer, intent(in) :: hash_val
integer(kind=n_int), intent(in) :: tgt(:)
real(kind=dp), intent(in) :: amp

private subroutine order_quad_indices_3_1(ijk_abc, l_d, phase, ijab_klcd)

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: ijk_abc(2,3)
integer, intent(inout) :: l_d(2,1)
real(kind=dp), intent(out) :: phase
integer, intent(out) :: ijab_klcd(8)

private subroutine order_quad_indices_2_2(ij_ab, kl_cd, phase, ijab_klcd)

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: ij_ab(2,2)
integer, intent(inout) :: kl_cd(2,2)
real(kind=dp), intent(out) :: phase
integer, intent(out) :: ijab_klcd(8)

private subroutine fill_cc_amplitudes(n_excits)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_excits(cc_order)