computes energy, forces, and potential from the interactions between the quantum fragment and long-range atoms using a multipole expansion approximation for the quantum fragment
Computes folded tensor used in energy and potential computations
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(out), | dimension(:) | :: | tensors | Array storing tensors |
|
real(kind=dp), | intent(out), | dimension(:) | :: | tensor_sums | Array stroing tensor sums |
|
real(kind=dp), | intent(in), | dimension(3) | :: | multipole_origin | Coordinates of the origin of multipolar expansion |
|
integer, | intent(in) | :: | multipole_order | Maximal order of multipoles |
||
type(atom_type), | intent(in), | dimension(:) | :: | atoms | long-range atoms |
compute interaction energy between quantum fragment and long-range atoms
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(quantum_fragment_type), | intent(in) | :: | quantum_fragment | quantum fragment |
||
real(kind=dp), | intent(out) | :: | energy | interaction energy |
||
real(kind=dp), | intent(in), | dimension(:) | :: | tensor_sums | Array stroing tensor sums |
compute potential from long-range atoms on quantum fragment
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(quantum_fragment_type), | intent(in) | :: | quantum_fragment | quantum fragment |
||
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 |
||
real(kind=dp), | intent(in), | dimension(:) | :: | tensor_sums | Array stroing tensor sums |
compute forces from long-range atoms on quantum fragment and vice versa
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atom_type), | intent(in), | dimension(:) | :: | atoms | list of atoms in the long-range part |
|
type(quantum_fragment_type), | intent(in) | :: | quantum_fragment | the quantum fragment |
||
integer, | intent(in) | :: | atom_start | index of the first atom that current process will handle |
||
integer, | intent(in) | :: | atom_end | index of the last atom that the current process will handle |