Loading [MathJax]/extensions/tex2jax.js
 (git:b77b4be)
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
atprop_types.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2025 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \brief Holds information on atomic properties
10!> \par History
11!> 07.2011 created
12!> \author JHU
13! **************************************************************************************************
15
16 USE kinds, ONLY: dp
17#include "../base/base_uses.f90"
18
19 IMPLICIT NONE
20 PRIVATE
21
22 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'atprop_types'
23
26
27! **************************************************************************************************
28!> \brief type for the atomic properties
29!> \author fawzi
30! **************************************************************************************************
32 LOGICAL :: energy = .false.
33 REAL(kind=dp), DIMENSION(:), POINTER :: atener => null()
34 REAL(kind=dp), DIMENSION(:), POINTER :: ateb => null()
35 REAL(kind=dp), DIMENSION(:), POINTER :: atexc => null()
36 REAL(kind=dp), DIMENSION(:), POINTER :: ateself => null()
37 REAL(kind=dp), DIMENSION(:), POINTER :: atevdw => null()
38 REAL(kind=dp), DIMENSION(:), POINTER :: ategcp => null()
39 REAL(kind=dp), DIMENSION(:), POINTER :: atecc => null()
40 REAL(kind=dp), DIMENSION(:), POINTER :: ate1c => null()
41 REAL(kind=dp), DIMENSION(:), POINTER :: atecoul => null()
42 END TYPE atprop_type
43
44CONTAINS
45
46! **************************************************************************************************
47!> \brief ...
48!> \param atprop_env ...
49! **************************************************************************************************
50 SUBROUTINE atprop_create(atprop_env)
51 TYPE(atprop_type), POINTER :: atprop_env
52
53 CALL atprop_release(atprop_env)
54 ALLOCATE (atprop_env)
55
56 END SUBROUTINE atprop_create
57
58! **************************************************************************************************
59!> \brief ...
60!> \param atprop_env ...
61!> \param natom ...
62! **************************************************************************************************
63 SUBROUTINE atprop_init(atprop_env, natom)
64 TYPE(atprop_type), INTENT(INOUT) :: atprop_env
65 INTEGER, INTENT(IN) :: natom
66
67 IF (atprop_env%energy) THEN
68 CALL atprop_array_init(atprop_env%atener, natom)
69 CALL atprop_array_release(atprop_env%ateb)
70 CALL atprop_array_release(atprop_env%atevdw)
71 CALL atprop_array_release(atprop_env%ategcp)
72 CALL atprop_array_release(atprop_env%atecc)
73 CALL atprop_array_release(atprop_env%atecoul)
74 CALL atprop_array_release(atprop_env%ateself)
75 CALL atprop_array_release(atprop_env%atexc)
76 CALL atprop_array_release(atprop_env%ate1c)
77 END IF
78
79 END SUBROUTINE atprop_init
80
81! **************************************************************************************************
82!> \brief ...
83!> \param atarray ...
84!> \param natom ...
85! **************************************************************************************************
86 SUBROUTINE atprop_array_init(atarray, natom)
87 REAL(kind=dp), DIMENSION(:), POINTER :: atarray
88 INTEGER, INTENT(IN) :: natom
89
90 IF (ASSOCIATED(atarray)) THEN
91 cpassert(SIZE(atarray) == natom)
92 ELSE
93 ALLOCATE (atarray(natom))
94 END IF
95 atarray = 0._dp
96
97 END SUBROUTINE atprop_array_init
98
99! **************************************************************************************************
100!> \brief ...
101!> \param atarray ...
102! **************************************************************************************************
103 SUBROUTINE atprop_array_release(atarray)
104 REAL(kind=dp), DIMENSION(:), POINTER :: atarray
105
106 IF (ASSOCIATED(atarray)) THEN
107 DEALLOCATE (atarray)
108 END IF
109
110 END SUBROUTINE atprop_array_release
111
112! **************************************************************************************************
113!> \brief ...
114!> \param array_a ...
115!> \param array_b ...
116! **************************************************************************************************
117 SUBROUTINE atprop_array_add(array_a, array_b)
118 REAL(kind=dp), DIMENSION(:), INTENT(INOUT) :: array_a
119 REAL(kind=dp), DIMENSION(:), INTENT(IN), POINTER :: array_b
120
121 IF (ASSOCIATED(array_b)) THEN
122 array_a = array_a + array_b
123 END IF
124
125 END SUBROUTINE atprop_array_add
126
127! **************************************************************************************************
128!> \brief releases the atprop
129!> \param atprop_env the object to release
130!> \author fawzi
131! **************************************************************************************************
132 SUBROUTINE atprop_release(atprop_env)
133 TYPE(atprop_type), POINTER :: atprop_env
134
135 IF (ASSOCIATED(atprop_env)) THEN
136 ! energy
137 CALL atprop_array_release(atprop_env%atener)
138 CALL atprop_array_release(atprop_env%ateb)
139 CALL atprop_array_release(atprop_env%ateself)
140 CALL atprop_array_release(atprop_env%atexc)
141 CALL atprop_array_release(atprop_env%atevdw)
142 CALL atprop_array_release(atprop_env%ategcp)
143 CALL atprop_array_release(atprop_env%atecc)
144 CALL atprop_array_release(atprop_env%ate1c)
145 CALL atprop_array_release(atprop_env%atecoul)
146 ! atprop type
147 DEALLOCATE (atprop_env)
148 END IF
149 NULLIFY (atprop_env)
150 END SUBROUTINE atprop_release
151
152END MODULE atprop_types
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.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
type for the atomic properties