mimic_fragments Module

fragment types



Contents


Derived Types

type, public :: fragment_type

generic fragment

Components

TypeVisibilityAttributesNameInitial
integer, public :: id

fragment id

integer, public :: num_atoms

number of atoms

real(kind=dp), public :: charge

total charge

type(atom_type), public, dimension(:), pointer:: atoms

array of atoms

Type-Bound Procedures

procedure, public :: init => init_fragment
procedure, public :: centroid => fragment_centroid
procedure, public :: center_of_mass => fragment_center_of_mass
procedure, public :: center_of_charge => fragment_center_of_charge

type, public :: quantum_fragment_type

quantum system representation (currently can only be one per simulation)

Components

TypeVisibilityAttributesNameInitial
integer, public :: id

id of the quantum fragment

integer, public :: num_nuclei

number of nuclei

real(kind=dp), public :: charge

total charge

real(kind=dp), public :: nuclear_charge

nuclear charge

real(kind=dp), public :: electronic_charge

electron charge

type(nucleus_type), public, dimension(:), allocatable:: nuclei

array of nuclei

type(cell_type), public :: cell

simulation cell data

type(density_type), public :: density

grid representation of the electron density

type(potential_type), public :: potential

grid representation of the external potential

type(multipoles_type), public :: nuclear_multipoles

nuclear multipole moments

type(multipoles_type), public :: electronic_multipoles

electronic multipole moments

Type-Bound Procedures

procedure, public :: init => init_quantum_fragment
procedure, public :: compute_nuclear_multipoles
procedure, public :: compute_electronic_multipoles
procedure, public :: centroid => quantum_fragment_centroid
procedure, public :: center_of_mass => quantum_fragment_center_of_mass
procedure, public :: center_of_charge => quantum_fragment_center_of_charge

Functions

private pure function fragment_centroid(this) result(centroid)

compute the fragment centroid

Arguments

TypeIntentOptionalAttributesName
class(fragment_type), intent(in) :: this

Return Value real(kind=dp),dimension(3)

private pure function fragment_center_of_mass(this) result(center_of_mass)

compute the fragment center-of-mass

Arguments

TypeIntentOptionalAttributesName
class(fragment_type), intent(in) :: this

Return Value real(kind=dp),dimension(3)

private pure function fragment_center_of_charge(this) result(center_of_charge)

compute the fragment center-of-charge

Arguments

TypeIntentOptionalAttributesName
class(fragment_type), intent(in) :: this

Return Value real(kind=dp),dimension(3)

private pure function quantum_fragment_centroid(this) result(centroid)

compute quantum-fragment centroid

Arguments

TypeIntentOptionalAttributesName
class(quantum_fragment_type), intent(in) :: this

Return Value real(kind=dp),dimension(3)

private pure function quantum_fragment_center_of_mass(this) result(center_of_mass)

compute quantum-fragment center-of-mass

Arguments

TypeIntentOptionalAttributesName
class(quantum_fragment_type), intent(in) :: this

Return Value real(kind=dp),dimension(3)

private pure function quantum_fragment_center_of_charge(this) result(center_of_charge)

compute quantum-fragment center-of-charge

Arguments

TypeIntentOptionalAttributesName
class(quantum_fragment_type), intent(in) :: this

Return Value real(kind=dp),dimension(3)


Subroutines

private subroutine init_fragment(this, id, atoms)

intialize fragment

Read more…

Arguments

TypeIntentOptionalAttributesName
class(fragment_type), intent(inout) :: this
integer, intent(in) :: id
type(atom_type), intent(in), dimension(:), target:: atoms

private subroutine init_quantum_fragment(this, id, nuclei, cell, density, potential)

Initialize quantum fragment

Arguments

TypeIntentOptionalAttributesName
class(quantum_fragment_type), intent(inout) :: this
integer, intent(in) :: id
type(nucleus_type), intent(in), dimension(:):: nuclei
type(cell_type), intent(in) :: cell
type(density_type), intent(in) :: density
type(potential_type), intent(in), optional :: potential

private subroutine compute_nuclear_multipoles(this, origin, order)

compute multipole expansion of the electrostatic potential from a set of nuclei around an origin

Arguments

TypeIntentOptionalAttributesName
class(quantum_fragment_type), intent(inout) :: this
real(kind=dp), intent(in), dimension(3):: origin

origin of the multipole expansion

integer, intent(in) :: order

order of the multipole expansion

private subroutine compute_electronic_multipoles(this, expansion_origin, expansion_order, a_start, a_end)

compute multipole expansion of the electrostatic potential from an electronic density (which is represented on a grid) around an origin

Arguments

TypeIntentOptionalAttributesName
class(quantum_fragment_type), intent(inout) :: this
real(kind=dp), intent(in), dimension(3):: expansion_origin

origin of the multipole expansion

integer, intent(in) :: expansion_order

order of the multipole expansion

integer, intent(in) :: a_start

start index of real space mesh of lattice vector a

integer, intent(in) :: a_end

end index of real space mesh of lattice vector a