35 use,
intrinsic :: iso_c_binding
40 kim_model_compute_handle_type, &
45 kim_model_compute_process_dedr_term, &
46 kim_model_compute_process_d2edr2_term, &
47 kim_model_compute_get_argument_pointer, &
48 kim_model_compute_is_callback_present, &
50 kim_model_compute_log_entry, &
53 type, bind(c) :: kim_model_compute_handle_type
54 type(c_ptr) :: p = c_null_ptr
55 end type kim_model_compute_handle_type
57 type(kim_model_compute_handle_type),
protected, &
58 bind(c,name=
"KIM_MODEL_COMPUTE_null_handle") &
61 interface operator (.eq.)
62 logical function kim_model_compute_handle_equal(left, right)
63 use,
intrinsic :: iso_c_binding
64 import kim_model_compute_handle_type
66 type(kim_model_compute_handle_type),
intent(in) :: left
67 type(kim_model_compute_handle_type),
intent(in) :: right
68 end function kim_model_compute_handle_equal
69 end interface operator (.eq.)
71 interface operator (.ne.)
72 logical function kim_model_compute_handle_not_equal(left, right)
73 use,
intrinsic :: iso_c_binding
74 import kim_model_compute_handle_type
76 type(kim_model_compute_handle_type),
intent(in) :: left
77 type(kim_model_compute_handle_type),
intent(in) :: right
78 end function kim_model_compute_handle_not_equal
79 end interface operator (.ne.)
81 interface kim_model_compute_get_argument_pointer
82 subroutine kim_model_compute_get_argument_pointer_int0( &
83 model_compute_handle, argument_name, int0, ierr)
84 use,
intrinsic :: iso_c_binding
86 import kim_model_compute_handle_type
88 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
89 type(kim_argument_name_type),
intent(in),
value :: argument_name
90 integer(c_int),
intent(out),
pointer :: int0
91 integer(c_int),
intent(out) :: ierr
92 end subroutine kim_model_compute_get_argument_pointer_int0
94 subroutine kim_model_compute_get_argument_pointer_int1( &
95 model_compute_handle, argument_name, extent1, int1, ierr)
96 use,
intrinsic :: iso_c_binding
98 import kim_model_compute_handle_type
100 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
101 type(kim_argument_name_type),
intent(in),
value :: argument_name
102 integer(c_int),
intent(in),
value :: extent1
103 integer(c_int),
intent(out),
pointer :: int1(:)
104 integer(c_int),
intent(out) :: ierr
105 end subroutine kim_model_compute_get_argument_pointer_int1
107 subroutine kim_model_compute_get_argument_pointer_int2( &
108 model_compute_handle, argument_name, extent1, extent2, int2, ierr)
109 use,
intrinsic :: iso_c_binding
111 import kim_model_compute_handle_type
113 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
114 type(kim_argument_name_type),
intent(in),
value :: argument_name
115 integer(c_int),
intent(in),
value :: extent1
116 integer(c_int),
intent(in),
value :: extent2
117 integer(c_int),
intent(out),
pointer :: int2(:,:)
118 integer(c_int),
intent(out) :: ierr
119 end subroutine kim_model_compute_get_argument_pointer_int2
121 subroutine kim_model_compute_get_argument_pointer_double0( &
122 model_compute_handle, argument_name, double0, ierr)
123 use,
intrinsic :: iso_c_binding
125 import kim_model_compute_handle_type
127 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
128 type(kim_argument_name_type),
intent(in),
value :: argument_name
129 real(c_double),
intent(out),
pointer :: double0
130 integer(c_int),
intent(out) :: ierr
131 end subroutine kim_model_compute_get_argument_pointer_double0
133 subroutine kim_model_compute_get_argument_pointer_double1( &
134 model_compute_handle, argument_name, extent1, double1, ierr)
135 use,
intrinsic :: iso_c_binding
137 import kim_model_compute_handle_type
139 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
140 type(kim_argument_name_type),
intent(in),
value :: argument_name
141 integer(c_int),
intent(in),
value :: extent1
142 real(c_double),
intent(out),
pointer :: double1(:)
143 integer(c_int),
intent(out) :: ierr
144 end subroutine kim_model_compute_get_argument_pointer_double1
146 subroutine kim_model_compute_get_argument_pointer_double2( &
147 model_compute_handle, argument_name, extent1, extent2, double2, ierr)
148 use,
intrinsic :: iso_c_binding
150 import kim_model_compute_handle_type
152 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
153 type(kim_argument_name_type),
intent(in),
value :: argument_name
154 integer(c_int),
intent(in),
value :: extent1
155 integer(c_int),
intent(in),
value :: extent2
156 real(c_double),
intent(out),
pointer :: double2(:,:)
157 integer(c_int),
intent(out) :: ierr
158 end subroutine kim_model_compute_get_argument_pointer_double2
159 end interface kim_model_compute_get_argument_pointer
163 neighbor_list_index, particle_number, number_of_neighbors, &
164 neighbors_of_particle, ierr)
165 use,
intrinsic :: iso_c_binding
166 import kim_model_compute_handle_type
168 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
169 integer(c_int),
intent(in),
value :: neighbor_list_index
170 integer(c_int),
intent(in),
value :: particle_number
171 integer(c_int),
intent(out) :: number_of_neighbors
172 integer(c_int),
intent(out),
pointer :: neighbors_of_particle(:)
173 integer(c_int),
intent(out) :: ierr
176 subroutine kim_model_compute_process_dedr_term(model_compute_handle, &
177 de, r, dx, i, j, ierr)
178 use,
intrinsic :: iso_c_binding
179 import kim_model_compute_handle_type
181 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
182 real(c_double),
intent(in),
value :: de
183 real(c_double),
intent(in),
value :: r
184 type(c_ptr),
intent(in) :: dx
185 integer(c_int),
intent(in),
value :: i
186 integer(c_int),
intent(in),
value :: j
187 integer(c_int),
intent(out) :: ierr
188 end subroutine kim_model_compute_process_dedr_term
190 subroutine kim_model_compute_process_d2edr2_term(model_compute_handle, &
191 de, r, dx, i, j, ierr)
192 use,
intrinsic :: iso_c_binding
193 import kim_model_compute_handle_type
195 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
196 real(c_double),
intent(in),
value :: de
197 type(c_ptr),
intent(in),
value :: r
198 type(c_ptr),
intent(in),
value :: dx
199 type(c_ptr),
intent(in),
value :: i
200 type(c_ptr),
intent(in),
value :: j
201 integer(c_int),
intent(out) :: ierr
202 end subroutine kim_model_compute_process_d2edr2_term
204 subroutine kim_model_compute_is_callback_present(model_compute_handle, &
205 callback_name, present, ierr)
206 use,
intrinsic :: iso_c_binding
208 import kim_model_compute_handle_type
210 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
211 type(kim_callback_name_type),
intent(in),
value :: callback_name
212 integer(c_int),
intent(out) :: present
213 integer(c_int),
intent(out) :: ierr
214 end subroutine kim_model_compute_is_callback_present
217 model_compute_handle, ptr)
218 use,
intrinsic :: iso_c_binding
219 import kim_model_compute_handle_type
221 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
222 type(c_ptr),
intent(out) :: ptr
225 subroutine kim_model_compute_log_entry(model_compute_handle, &
226 log_verbosity, message, line_number, file_name)
227 use,
intrinsic :: iso_c_binding
229 import kim_model_compute_handle_type
231 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
232 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
233 character(len=*),
intent(in) :: message
234 integer(c_int),
intent(in),
value :: line_number
235 character(len=*),
intent(in) :: file_name
236 end subroutine kim_model_compute_log_entry
239 use,
intrinsic :: iso_c_binding
240 import kim_model_compute_handle_type
242 type(kim_model_compute_handle_type),
intent(in) :: model_compute_handle
243 character(len=*),
intent(out) :: string
type(kim_model_compute_handle_type), public, protected kim_model_compute_null_handle