17 #include "../base/base_uses.f90"
22 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'atprop_types'
32 LOGICAL :: energy = .false.
33 LOGICAL :: stress = .false.
34 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: atener => null()
35 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: ateb => null()
36 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: atexc => null()
37 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: ateself => null()
38 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: atevdw => null()
39 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: ategcp => null()
40 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: atecc => null()
41 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: ate1c => null()
42 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: atecoul => null()
43 REAL(KIND=
dp),
DIMENSION(:, :, :),
POINTER :: atstress => null()
53 TYPE(atprop_type),
POINTER :: atprop_env
66 TYPE(atprop_type),
INTENT(INOUT) :: atprop_env
67 INTEGER,
INTENT(IN) :: natom
69 IF (atprop_env%energy)
THEN
71 CALL atprop_array_release(atprop_env%ateb)
72 CALL atprop_array_release(atprop_env%atevdw)
73 CALL atprop_array_release(atprop_env%ategcp)
74 CALL atprop_array_release(atprop_env%atecc)
75 CALL atprop_array_release(atprop_env%atecoul)
76 CALL atprop_array_release(atprop_env%ateself)
77 CALL atprop_array_release(atprop_env%atexc)
78 CALL atprop_array_release(atprop_env%ate1c)
81 IF (atprop_env%stress)
THEN
82 IF (
ASSOCIATED(atprop_env%atstress))
THEN
83 cpassert(
SIZE(atprop_env%atstress, 3) == natom)
85 ALLOCATE (atprop_env%atstress(3, 3, natom))
87 atprop_env%atstress = 0._dp
98 REAL(kind=
dp),
DIMENSION(:),
POINTER :: atarray
99 INTEGER,
INTENT(IN) :: natom
101 IF (
ASSOCIATED(atarray))
THEN
102 cpassert(
SIZE(atarray) == natom)
104 ALLOCATE (atarray(natom))
114 SUBROUTINE atprop_array_release(atarray)
115 REAL(kind=
dp),
DIMENSION(:),
POINTER :: atarray
117 IF (
ASSOCIATED(atarray))
THEN
121 END SUBROUTINE atprop_array_release
129 REAL(kind=
dp),
DIMENSION(:),
INTENT(INOUT) :: array_a
130 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN),
POINTER :: array_b
132 IF (
ASSOCIATED(array_b))
THEN
133 array_a = array_a + array_b
144 TYPE(atprop_type),
POINTER :: atprop_env
146 IF (
ASSOCIATED(atprop_env))
THEN
148 CALL atprop_array_release(atprop_env%atener)
149 CALL atprop_array_release(atprop_env%ateb)
150 CALL atprop_array_release(atprop_env%ateself)
151 CALL atprop_array_release(atprop_env%atexc)
152 CALL atprop_array_release(atprop_env%atevdw)
153 CALL atprop_array_release(atprop_env%ategcp)
154 CALL atprop_array_release(atprop_env%atecc)
155 CALL atprop_array_release(atprop_env%ate1c)
156 CALL atprop_array_release(atprop_env%atecoul)
158 IF (
ASSOCIATED(atprop_env%atstress))
THEN
159 DEALLOCATE (atprop_env%atstress)
162 DEALLOCATE (atprop_env)
Holds information on atomic properties.
subroutine, public atprop_array_add(array_a, array_b)
...
subroutine, public atprop_create(atprop_env)
...
subroutine, public atprop_release(atprop_env)
releases the atprop
subroutine, public atprop_array_init(atarray, natom)
...
subroutine, public atprop_init(atprop_env, natom)
...
Defines the basic variable types.
integer, parameter, public dp