analyse_wf_symmetry Module



Contents


Variables

Type Visibility Attributes Name Initial
logical, public :: t_symmetry_analysis = .false.
logical, public :: t_symmetry_rotation = .false.
real(kind=dp), public :: symmetry_rotation_angle = 0.0_dp
logical, public :: t_symmetry_mirror = .false.
character(len=1), public :: symmertry_mirror_axis = '0'
logical, public :: t_symmetry_inversion = .false.
logical, public :: t_read_symmetry_states = .false.
integer, public :: n_symmetry_states = 0
logical, public :: t_pop_symmetry_states = .false.
integer, public, allocatable :: symmetry_states(:,:)
real(kind=dp), public, allocatable :: symmetry_weights(:)
integer(kind=n_int), public, allocatable :: symmetry_states_ilut(:,:)
real(kind=dp), public, parameter :: mirror_x(2,2) = reshape([1.0, 0.0, 0.0, -1.0], [2, 2])
real(kind=dp), public, parameter :: mirror_y(2,2) = reshape([-1.0, 0.0, 0.0, 1.0], [2, 2])
real(kind=dp), public, parameter :: mirror_d(2,2) = reshape([0.0, -1.0, -1.0, 0.0], [2, 2])
real(kind=dp), public, parameter :: mirror_o(2,2) = reshape([0.0, 1.0, 1.0, 0.0], [2, 2])
real(kind=dp), public, parameter :: inv_matrix(2,2) = reshape([-1.0, 0.0, 0.0, -1.0], [2, 2])

Interfaces

public interface inversion

  • public function inversion_orb(in_orb) result(out_orb)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: in_orb

    Return Value integer

  • public function inversion_vec(in_vec) result(out_vec)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: in_vec(3)

    Return Value integer, (3)

public interface rotate

  • public function rotate_orb(in_orb, rot_angle) result(out_orb)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: in_orb
    real(kind=dp), intent(in) :: rot_angle

    Return Value integer

  • public function rotate_vec(in_vec, rot_angle) result(out_vec)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: in_vec(3)
    real(kind=dp), intent(in) :: rot_angle

    Return Value integer, (3)

public interface mirror

  • public function mirror_orb(in_orb, mirror_axis) result(out_orb)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: in_orb
    character(len=1), intent(in) :: mirror_axis

    Return Value integer

  • public function mirror_vec(in_vec, mirror_axis) result(out_vec)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: in_vec(3)
    character(len=1), intent(in) :: mirror_axis

    Return Value integer, (3)


Functions

public function construct_matrix_representation(states, orig_orbs, trans_orbs) result(matrix)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: states(:,:)
integer, intent(in) :: orig_orbs(nBasis/2)
integer, intent(in) :: trans_orbs(nBasis/2)

Return Value integer, (size(states,2),size(states,2))

public function calc_overlap(ilutI, ilutJ) result(overlap)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(in) :: ilutI(:,:)
integer(kind=n_int), intent(in) :: ilutJ(:,:)

Return Value real(kind=dp)

public function apply_2D_point_group(ilut_list) result(trans_wf)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(inout) :: ilut_list(:,:)

Return Value integer(kind=n_int), allocatable, (:,:,:)

public function apply_inversion_wf(ilut_list, sort_ind) result(inv_wf)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(inout) :: ilut_list(:,:)
integer, intent(out), optional :: sort_ind(size(ilut_list,2))

Return Value integer(kind=n_int), (0:size(ilut_list,1)-1,size(ilut_list,2))

public function apply_mirror_wf(ilut_list, mirror_axis, sort_ind) result(mir_wf)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(inout) :: ilut_list(:,:)
character(len=1), intent(in) :: mirror_axis
integer, intent(out), optional :: sort_ind(size(ilut_list,2))

Return Value integer(kind=n_int), (size(ilut_list,1),size(ilut_list,2))

public function apply_rotation_wf(ilut_list, rot_angle) result(rot_wf)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(inout) :: ilut_list(:,:)
real(kind=dp), intent(in) :: rot_angle

Return Value integer(kind=n_int), (size(ilut_list,1),size(ilut_list,2))

public function rot_matrix(rot_angle) result(mat)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: rot_angle

Return Value real(kind=dp), (2,2)

public function stupid_search(list, val) result(pos)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: list(:)
integer, intent(in) :: val

Return Value integer

public function apply_inversion(in_orbs) result(out_orbs)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_orbs(nBasis/2)

Return Value integer, (nBasis/2)

public function apply_mirror(in_orbs, mirror_axis) result(out_orbs)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_orbs(nBasis/2)
character(len=1), intent(in) :: mirror_axis

Return Value integer, (nBasis/2)

public function apply_rotation(in_orbs, rot_angle) result(out_orbs)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_orbs(nBasis/2)
real(kind=dp), intent(in) :: rot_angle

Return Value integer, (nBasis/2)

public function mirror_orb(in_orb, mirror_axis) result(out_orb)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_orb
character(len=1), intent(in) :: mirror_axis

Return Value integer

public function mirror_vec(in_vec, mirror_axis) result(out_vec)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_vec(3)
character(len=1), intent(in) :: mirror_axis

Return Value integer, (3)

public function inversion_orb(in_orb) result(out_orb)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_orb

Return Value integer

public function inversion_vec(in_vec) result(out_vec)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_vec(3)

Return Value integer, (3)

public function rotate_orb(in_orb, rot_angle) result(out_orb)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_orb
real(kind=dp), intent(in) :: rot_angle

Return Value integer

public function rotate_vec(in_vec, rot_angle) result(out_vec)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_vec(3)
real(kind=dp), intent(in) :: rot_angle

Return Value integer, (3)


Subroutines

public subroutine print_point_group_matrix_rep(states)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: states(:,:)

public subroutine print_d4h_pg(states)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: states(:,:)

public subroutine analyze_full_wavefunction_sym(sym_labels, ilut_list_opt)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(out), allocatable :: sym_labels(:)
integer(kind=n_int), intent(in), optional :: ilut_list_opt(:,:)

public subroutine analyze_wavefunction_symmetry()

Arguments

None

public subroutine compare_states(n_states, orig_states, trans_states)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_states
integer(kind=n_int), intent(in) :: orig_states(0:niftot,n_states)
integer(kind=n_int), intent(in) :: trans_states(0:niftot,n_states)

public subroutine print_2_states(left, right, nunit)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(in) :: left(0:niftot)
integer(kind=n_int), intent(in) :: right(0:niftot)
integer, intent(in), optional :: nunit

public subroutine print_null_det(nunit, t_newline)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nunit
logical, intent(in), optional :: t_newline

public subroutine transform_states(orig_orbs, transformed_orbs, n_states, orig_states, orig_weights, orig_iluts, transformed_states, transformed_weights, transformed_states_ilut, sort_ind)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: orig_orbs(nBasis/2)
integer, intent(in) :: transformed_orbs(nBasis/2)
integer, intent(in) :: n_states
integer, intent(inout) :: orig_states(nel,n_states)
real(kind=dp), intent(inout) :: orig_weights(n_states)
integer(kind=n_int), intent(inout) :: orig_iluts(0:niftot,n_states)
integer, intent(out) :: transformed_states(nel,n_states)
real(kind=dp), intent(out) :: transformed_weights(n_states)
integer(kind=n_int), intent(out) :: transformed_states_ilut(0:niftot,n_states)
integer, intent(out), optional :: sort_ind(n_states)

public subroutine apply_transformation(nI, orig_orbs, trans_orbs, nJ, n_phase)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: orig_orbs(nBasis/2)
integer, intent(in) :: trans_orbs(nBasis/2)
integer, intent(out) :: nJ(nel)
integer, intent(out), optional :: n_phase

public subroutine init_symmetry_states()

Arguments

None

public subroutine find_states_in_list(n_states, nI_search, ilut_list, nI_weights)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_states
integer, intent(in) :: nI_search(nel,n_states)
integer(kind=n_int), intent(in) :: ilut_list(0:niftot,n_states)
real(kind=dp), intent(out) :: nI_weights(n_states)

public subroutine get_highest_pop(n_states, largest_dets)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_states
integer(kind=n_int), intent(out) :: largest_dets(0:niftot,n_states)

public subroutine find_highest_sign_per_node(n_states, largest_dets_node, largest_dets)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_states
integer(kind=n_int), intent(inout) :: largest_dets_node(0:niftot,n_states)
integer(kind=n_int), intent(out) :: largest_dets(0:niftot,n_states)

public subroutine get_highest_pop_node(n_states, largest_dets, all_norm)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_states
integer(kind=n_int), intent(out) :: largest_dets(0:niftot,n_states)
real(kind=dp), intent(out), optional :: all_norm