atom_in_mol Module

ATOM_IN_MOLECULE module to define atomic data within a molecule written by Son, Sang-Kil in Mar. 2014

USAGE: type(Atom_set) :: A(:) call construct_Atom_set( P, A )



Derived Types

type, public ::  atom_set

contains atom information

Components

Type Visibility Attributes Name Initial
integer, public :: i_nuc
real(kind=long), public :: x
real(kind=long), public :: y
real(kind=long), public :: z
integer, public :: charge
real(kind=long), public :: fcharge
real(kind=long), public :: sigma
character(len=6), public :: label
integer, public :: n_r
integer, public :: n_ang
integer, public :: lmax_ang
real(kind=long), public :: rmax
real(kind=long), public :: mapping_l
real(kind=long), public, allocatable :: y_lm(:,:)
type(grid), public :: radial
type(angular_grid), public :: angular
integer, public :: n_nao
real(kind=long), public, allocatable :: u_ao(:,:)
real(kind=long), public, allocatable :: d2_ao(:,:)
real(kind=long), public, allocatable :: dao_dr(:,:)
integer, public, allocatable :: n_ao(:)
integer, public, allocatable :: l_ao(:)
integer, public :: n_orb
integer, public, allocatable :: config(:,:)

atomic configuration config(i,1) -> quantum number n config(i,2) -> quantum number l config(i,3) -> occupation number

character(len=80), public :: nao_name

the basis name printed out Basis functions to be read in read_molecule_param() -------------------- We employ NAO (Numerical Atomic Orbital) as basis functions for molecular calculations. N_nao_table(:,:) : specifying # of NAO functions per l and each atom (0:MAX_lmax,1:N_nuc) where MAX_lmax = max. of lmax for all atoms Remember that 2s1p means two s orbitals and one p orbital, so # of basis functions becomes 5!!! N_basis : total # of basis functions, considering l

Read more…
integer, public, allocatable :: n_nao_table(:)
character(len=512), public :: hole_string
character(len=512), public :: conf_string
character(len=512), public :: nao_file_nuc
character(len=512), public :: auger_file_nuc
character(len=512), public :: tdipole_file_nuc
integer, public :: sym_op_pair(8)

symmetry operations pairs contains for every defined symmetry operation (i=1..8) the atom index to which the specific atom is translated under the symmetry operation i ( or -1 if symmetry operation does change the molecule ). Symmetry operations are: 1 E : identity 2 C2X : 180 degree rotation around X axis 3 C2Y : 180 degree rotation around Y axis 4 C2Z : 180 degree rotation around Z axis 5 i : inversion 6 SIGXY: reflection on XY plane 7 SIGXZ: reflection on XZ plane 8 SIGYZ: reflection on YZ plane


Functions

public function subshell_name(n, l) result(s)

subshell_name: return 1s, 2s, 2p, ... according to (n,l)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n
integer, intent(in) :: l

Return Value character(len=5)


Subroutines

public subroutine purge_atom_set(a)

deallocates array of atom_sets

Arguments

Type IntentOptional Attributes Name
type(atom_set), intent(inout), allocatable :: a(:)

public subroutine construct_atom_set(p, a)

constructs atom set

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(out), allocatable :: a(:)

public subroutine update_atom_set_with_nao(a)

update Atom_set with new NAOs it rereads the NAO files assigned in A(:).

Arguments

Type IntentOptional Attributes Name
type(atom_set), intent(inout) :: a(:)

public subroutine update_atom_set_with_displacement(a, displacement)

update Atom_set with displacement

Arguments

Type IntentOptional Attributes Name
type(atom_set), intent(inout) :: a(:)
real(kind=long), intent(in) :: displacement(:)

public subroutine dump_atom_set(a, iout)

prints atom set information

Arguments

Type IntentOptional Attributes Name
type(atom_set), intent(in) :: a(:)
integer, intent(in), optional :: iout