15#include "./base/base_uses.f90"
23 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'semi_empirical_mpole_types'
30 LOGICAL,
DIMENSION(3) :: task = .false.
31 INTEGER :: indi = -1, indj = -1
32 REAL(kind=
dp) :: c = -1.0_dp
33 REAL(kind=
dp),
DIMENSION(3) :: d = -1.0_dp
34 REAL(kind=
dp),
DIMENSION(3, 3) :: qc = -1.0_dp
35 REAL(kind=
dp),
DIMENSION(5) :: qs = -1.0_dp
37 REAL(kind=
dp) :: cs = -1.0_dp
38 REAL(kind=
dp),
DIMENSION(3) :: ds = -1.0_dp
39 REAL(kind=
dp),
DIMENSION(3, 3) :: qq = -1.0_dp
55 REAL(kind=
dp),
DIMENSION(:),
POINTER :: charge => null(), efield0 => null()
56 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: dipole => null(), efield1 => null(), efield2 => null()
57 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: quadrupole => null()
79 INTEGER,
INTENT(IN) :: ndim
83 cpassert(.NOT.
ASSOCIATED(mpole))
84 ALLOCATE (mpole(ndim))
86 NULLIFY (mpole(i)%mpole)
87 CALL semi_empirical_mpole_create(mpole(i)%mpole)
103 IF (
ASSOCIATED(mpole))
THEN
104 DO i = 1,
SIZE(mpole)
105 CALL semi_empirical_mpole_release(mpole(i)%mpole)
117 SUBROUTINE semi_empirical_mpole_create(mpole)
120 cpassert(.NOT.
ASSOCIATED(mpole))
125 mpole%c = huge(0.0_dp)
126 mpole%d = huge(0.0_dp)
127 mpole%qc = huge(0.0_dp)
128 mpole%qs = huge(0.0_dp)
129 mpole%cs = huge(0.0_dp)
130 mpole%ds = huge(0.0_dp)
131 mpole%qq = huge(0.0_dp)
132 END SUBROUTINE semi_empirical_mpole_create
139 SUBROUTINE semi_empirical_mpole_release(mpole)
142 IF (
ASSOCIATED(mpole))
THEN
146 END SUBROUTINE semi_empirical_mpole_release
156 cpassert(.NOT.
ASSOCIATED(nddo_mpole))
157 ALLOCATE (nddo_mpole)
158 NULLIFY (nddo_mpole%charge)
159 NULLIFY (nddo_mpole%dipole)
160 NULLIFY (nddo_mpole%quadrupole)
161 NULLIFY (nddo_mpole%efield0)
162 NULLIFY (nddo_mpole%efield1)
163 NULLIFY (nddo_mpole%efield2)
174 IF (
ASSOCIATED(nddo_mpole))
THEN
175 IF (
ASSOCIATED(nddo_mpole%charge))
THEN
176 DEALLOCATE (nddo_mpole%charge)
178 IF (
ASSOCIATED(nddo_mpole%dipole))
THEN
179 DEALLOCATE (nddo_mpole%dipole)
181 IF (
ASSOCIATED(nddo_mpole%quadrupole))
THEN
182 DEALLOCATE (nddo_mpole%quadrupole)
184 IF (
ASSOCIATED(nddo_mpole%efield0))
THEN
185 DEALLOCATE (nddo_mpole%efield0)
187 IF (
ASSOCIATED(nddo_mpole%efield1))
THEN
188 DEALLOCATE (nddo_mpole%efield1)
190 IF (
ASSOCIATED(nddo_mpole%efield2))
THEN
191 DEALLOCATE (nddo_mpole%efield2)
193 DEALLOCATE (nddo_mpole)
Defines the basic variable types.
integer, parameter, public dp
Definition of the semi empirical multipole integral expansions types.
subroutine, public nddo_mpole_release(nddo_mpole)
Deallocate NDDO multipole type.
subroutine, public semi_empirical_mpole_p_create(mpole, ndim)
Allocate semi-empirical mpole type.
subroutine, public semi_empirical_mpole_p_release(mpole)
Deallocate the semi-empirical mpole type.
subroutine, public nddo_mpole_create(nddo_mpole)
Allocate NDDO multipole type.
Global Multipolar NDDO information type.
Semi-empirical integral multipole expansion type - pointer type.
Semi-empirical integral multipole expansion type.