gradient Module

contains various gradients subroutines



Functions

public function grad_sum(grad) result(g)

sum the gradients along coordinates x,y,z

Arguments

Type IntentOptional Attributes Name
real(kind=long), intent(in) :: grad(:)

Return Value real(kind=long), (3)


Subroutines

public subroutine calculate_cis_gradient_gto(p, a, b, f, state, gradients_out, nacs_out, yes_calc_nacs, output)

this subroutine calculates CIS gradient

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f
integer, intent(in) :: state
real(kind=long), optional :: gradients_out(:)
real(kind=long), optional :: nacs_out(:,:,:)
logical, optional :: yes_calc_nacs
integer, intent(in), optional :: output

public subroutine calculate_koopmann_energy_gradient(p, a, b, f, output)

this subroutine calculated the Koopmann's Theorem gradient assuming that an ionized state energy gradient is or and anionic state energy is it even calculates gradient for excited states assuming that which ignores mutual interaction between orbital a and i

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f
integer, intent(in), optional :: output

public subroutine calculate_hole_energies_efield(p, a, b, f, pos, occs_out, energies_out, efield_out, upot_out, output)

calculates Koopmann's hole energies in the presence of an electric field

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f
real(kind=long), intent(in) :: pos(3)
integer, optional :: occs_out(:,:)
real(kind=long), optional :: energies_out(:)
real(kind=long), optional :: efield_out(:,:)
real(kind=long), optional :: upot_out(:)
integer, intent(in), optional :: output

public subroutine calculate_hole_energies_gradients_nacs(p, a, b, f, occs_out, energies_out, gradients_out, nacs_out, particles, output)

calculates the Koopmann's Theorem gradient assuming that an excited state energy gradient is

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f
integer, optional :: occs_out(:,:)
real(kind=long), optional :: energies_out(:)
real(kind=long), optional :: gradients_out(:,:)
real(kind=long), optional :: nacs_out(:,:,:)
logical, intent(in), optional :: particles
integer, intent(in), optional :: output

public subroutine calculate_energy_gradient_gto(p, a, g, b, f, output)

calculates the RHF/ ROHF / HFS gradient when GTO are used

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(grid3d), intent(in) :: g
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f
integer, intent(in), optional :: output

public subroutine calculate_orbital_gradient_gto(p, a, b, f, output)

calculates the gradients of orbital energies

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f
integer, intent(in), optional :: output

public subroutine exchange_gradient(a, g, b, f, ex_gradient)

computes the gradient of the exchange potential part for HFS

Arguments

Type IntentOptional Attributes Name
type(atom_set), intent(in) :: a(:)
type(grid3d), intent(in) :: g
type(basis), intent(in) :: b
type(wf_data), intent(in) :: f
real(kind=long), intent(out) :: ex_gradient(size(a)*3)

public subroutine calculate_energy_gradient(p, a, g, b, f, output)

a wrapper for calculate_dEdR defined in nuclear_derivatives.f90

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(grid3d), intent(in) :: g
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f
integer, intent(in), optional :: output