35 use,
intrinsic :: iso_c_binding
40 kim_model_driver_create_handle_type, &
44 kim_model_driver_create_get_number_of_parameter_files, &
45 kim_model_driver_create_get_parameter_file_name, &
46 kim_model_driver_create_set_model_numbering, &
48 kim_model_driver_create_set_neighbor_list_cutoffs_pointer, &
49 kim_model_driver_create_set_refresh_pointer, &
55 kim_model_driver_create_set_parameter_pointer, &
57 kim_model_driver_create_set_units, &
62 type, bind(c) :: kim_model_driver_create_handle_type
63 type(c_ptr) :: p = c_null_ptr
64 end type kim_model_driver_create_handle_type
66 type(kim_model_driver_create_handle_type),
protected, &
67 bind(c,name=
"KIM_MODEL_DRIVER_CREATE_null_handle") &
70 interface operator (.eq.)
71 logical function kim_model_driver_create_handle_equal(left, right)
72 use,
intrinsic :: iso_c_binding
73 import kim_model_driver_create_handle_type
75 type(kim_model_driver_create_handle_type),
intent(in) :: left
76 type(kim_model_driver_create_handle_type),
intent(in) :: right
77 end function kim_model_driver_create_handle_equal
78 end interface operator (.eq.)
80 interface operator (.ne.)
81 logical function kim_model_driver_createhandle_not_equal(left, right)
82 use,
intrinsic :: iso_c_binding
83 import kim_model_driver_create_handle_type
85 type(kim_model_driver_create_handle_type),
intent(in) :: left
86 type(kim_model_driver_create_handle_type),
intent(in) :: right
87 end function kim_model_driver_createhandle_not_equal
88 end interface operator (.ne.)
90 interface kim_model_driver_create_set_parameter_pointer
91 subroutine kim_model_driver_create_set_parameter_pointer_integer( &
92 model_driver_create_handle, int1, description, ierr)
93 use,
intrinsic :: iso_c_binding
94 import kim_model_driver_create_handle_type
96 type(kim_model_driver_create_handle_type),
intent(in) &
97 :: model_driver_create_handle
98 integer(c_int),
intent(in),
target :: int1(:)
99 character(len=*),
intent(in) :: description
100 integer(c_int),
intent(out) :: ierr
101 end subroutine kim_model_driver_create_set_parameter_pointer_integer
103 subroutine kim_model_driver_create_set_parameter_pointer_double( &
104 model_driver_create_handle, double1, description, ierr)
105 use,
intrinsic :: iso_c_binding
106 import kim_model_driver_create_handle_type
108 type(kim_model_driver_create_handle_type),
intent(in) &
109 :: model_driver_create_handle
110 real(c_double),
intent(in),
target :: double1(:)
111 character(len=*),
intent(in) :: description
112 integer(c_int),
intent(out) :: ierr
113 end subroutine kim_model_driver_create_set_parameter_pointer_double
114 end interface kim_model_driver_create_set_parameter_pointer
117 subroutine kim_model_driver_create_get_number_of_parameter_files( &
118 model_driver_create_handle, number_of_parameter_files)
119 use,
intrinsic :: iso_c_binding
120 import kim_model_driver_create_handle_type
122 type(kim_model_driver_create_handle_type),
intent(in) &
123 :: model_driver_create_handle
124 integer(c_int),
intent(out) :: number_of_parameter_files
125 end subroutine kim_model_driver_create_get_number_of_parameter_files
127 subroutine kim_model_driver_create_get_parameter_file_name( &
128 model_driver_create_handle, index, parameter_file_name, ierr)
129 use,
intrinsic :: iso_c_binding
130 import kim_model_driver_create_handle_type
132 type(kim_model_driver_create_handle_type),
intent(in) &
133 :: model_driver_create_handle
134 integer(c_int),
intent(in),
value :: index
135 character(len=*),
intent(out) :: parameter_file_name
136 integer(c_int),
intent(out) :: ierr
137 end subroutine kim_model_driver_create_get_parameter_file_name
139 subroutine kim_model_driver_create_set_model_numbering( &
140 model_driver_create_handle, numbering, ierr)
141 use,
intrinsic :: iso_c_binding
143 import kim_model_driver_create_handle_type
145 type(kim_model_driver_create_handle_type),
intent(in) &
146 :: model_driver_create_handle
147 type(kim_numbering_type),
intent(in),
value :: numbering
148 integer(c_int),
intent(out) :: ierr
149 end subroutine kim_model_driver_create_set_model_numbering
152 model_driver_create_handle, influence_distance)
153 use,
intrinsic :: iso_c_binding
154 import kim_model_driver_create_handle_type
156 type(kim_model_driver_create_handle_type),
intent(in) &
157 :: model_driver_create_handle
158 real(c_double),
intent(in),
target :: influence_distance
161 subroutine kim_model_driver_create_set_neighbor_list_cutoffs_pointer( &
162 model_driver_create_handle, number_of_cutoffs, cutoffs)
163 use,
intrinsic :: iso_c_binding
164 import kim_model_driver_create_handle_type
166 type(kim_model_driver_create_handle_type),
intent(inout) &
167 :: model_driver_create_handle
168 integer(c_int),
intent(in),
value :: number_of_cutoffs
169 real(c_double),
intent(in),
target :: cutoffs(number_of_cutoffs)
170 end subroutine kim_model_driver_create_set_neighbor_list_cutoffs_pointer
172 subroutine kim_model_driver_create_set_refresh_pointer( &
173 model_driver_create_handle, language_name, fptr, ierr)
174 use,
intrinsic :: iso_c_binding
176 import kim_model_driver_create_handle_type
178 type(kim_model_driver_create_handle_type),
intent(in) &
179 :: model_driver_create_handle
180 type(kim_language_name_type),
intent(in),
value :: language_name
181 type(c_funptr),
intent(in),
value :: fptr
182 integer(c_int),
intent(out) :: ierr
183 end subroutine kim_model_driver_create_set_refresh_pointer
186 model_driver_create_handle, language_name, fptr, ierr)
187 use,
intrinsic :: iso_c_binding
189 import kim_model_driver_create_handle_type
191 type(kim_model_driver_create_handle_type),
intent(in) &
192 :: model_driver_create_handle
193 type(kim_language_name_type),
intent(in),
value :: language_name
194 type(c_funptr),
intent(in),
value :: fptr
195 integer(c_int),
intent(out) :: ierr
199 model_driver_create_handle, language_name, fptr, ierr)
200 use,
intrinsic :: iso_c_binding
202 import kim_model_driver_create_handle_type
204 type(kim_model_driver_create_handle_type),
intent(in) &
205 :: model_driver_create_handle
206 type(kim_language_name_type),
intent(in),
value :: language_name
207 type(c_funptr),
intent(in),
value :: fptr
208 integer(c_int),
intent(out) :: ierr
212 model_driver_create_handle, species_name, code, ierr)
213 use,
intrinsic :: iso_c_binding
215 import kim_model_driver_create_handle_type
217 type(kim_model_driver_create_handle_type),
intent(in) &
218 :: model_driver_create_handle
219 type(kim_species_name_type),
intent(in),
value :: species_name
220 integer(c_int),
intent(in),
value :: code
221 integer(c_int),
intent(out) :: ierr
225 model_driver_create_handle, argument_name, support_status, ierr)
226 use,
intrinsic :: iso_c_binding
229 import kim_model_driver_create_handle_type
231 type(kim_model_driver_create_handle_type),
intent(in) &
232 :: model_driver_create_handle
233 type(kim_argument_name_type),
intent(in),
value :: argument_name
234 type(kim_support_status_type),
intent(in),
value :: support_status
235 integer(c_int),
intent(out) :: ierr
239 model_driver_create_handle, callback_name, support_status, ierr)
240 use,
intrinsic :: iso_c_binding
243 import kim_model_driver_create_handle_type
245 type(kim_model_driver_create_handle_type),
intent(in) &
246 :: model_driver_create_handle
247 type(kim_callback_name_type),
intent(in),
value :: callback_name
248 type(kim_support_status_type),
intent(in),
value :: support_status
249 integer(c_int),
intent(out) :: ierr
253 model_driver_create_handle, ptr)
254 use,
intrinsic :: iso_c_binding
255 import kim_model_driver_create_handle_type
257 type(kim_model_driver_create_handle_type),
intent(in) &
258 :: model_driver_create_handle
259 type(c_ptr),
intent(in),
value :: ptr
262 subroutine kim_model_driver_create_set_units( &
263 model_driver_create_handle, length_unit, energy_unit, charge_unit, &
264 temperature_unit, time_unit, ierr)
265 use,
intrinsic :: iso_c_binding
267 kim_length_unit_type, &
268 kim_energy_unit_type, &
269 kim_charge_unit_type, &
270 kim_temperature_unit_type, &
272 import kim_model_driver_create_handle_type
274 type(kim_model_driver_create_handle_type),
intent(in) &
275 :: model_driver_create_handle
276 type(kim_length_unit_type),
intent(in),
value :: length_unit
277 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
278 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
279 type(kim_temperature_unit_type),
intent(in),
value :: temperature_unit
280 type(kim_time_unit_type),
intent(in),
value :: time_unit
281 integer(c_int),
intent(out) :: ierr
282 end subroutine kim_model_driver_create_set_units
285 model_driver_create_handle, from_length_unit, from_energy_unit, &
286 from_charge_unit, from_temperature_unit, from_time_unit, &
287 to_length_unit, to_energy_unit, to_charge_unit, to_temperature_unit, &
288 to_time_unit, length_exponent, energy_exponent, charge_exponent, &
289 temperature_exponent, time_exponent, conversion_factor, ierr)
290 use,
intrinsic :: iso_c_binding
296 import kim_model_driver_create_handle_type
298 type(kim_model_driver_create_handle_type),
intent(in) &
299 :: model_driver_create_handle
300 type(kim_length_unit_type),
intent(in),
value :: from_length_unit
301 type(kim_energy_unit_type),
intent(in),
value :: from_energy_unit
302 type(kim_charge_unit_type),
intent(in),
value :: from_charge_unit
303 type(kim_temperature_unit_type),
intent(in),
value :: &
304 from_temperature_unit
305 type(kim_time_unit_type),
intent(in),
value :: from_time_unit
306 type(kim_length_unit_type),
intent(in),
value :: to_length_unit
307 type(kim_energy_unit_type),
intent(in),
value :: to_energy_unit
308 type(kim_charge_unit_type),
intent(in),
value :: to_charge_unit
309 type(kim_temperature_unit_type),
intent(in),
value :: &
311 type(kim_time_unit_type),
intent(in),
value :: to_time_unit
312 real(c_double),
intent(in),
value :: length_exponent
313 real(c_double),
intent(in),
value :: energy_exponent
314 real(c_double),
intent(in),
value :: charge_exponent
315 real(c_double),
intent(in),
value :: temperature_exponent
316 real(c_double),
intent(in),
value :: time_exponent
317 real(c_double),
intent(out) :: conversion_factor
318 integer(c_int),
intent(out) :: ierr
322 model_driver_create_handle, log_verbosity, message, line_number, &
324 use,
intrinsic :: iso_c_binding
326 import kim_model_driver_create_handle_type
328 type(kim_model_driver_create_handle_type),
intent(in) &
329 :: model_driver_create_handle
330 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
331 character(len=*),
intent(in) :: message
332 integer(c_int),
intent(in),
value :: line_number
333 character(len=*),
intent(in) :: file_name
337 model_driver_create_handle, string)
338 use,
intrinsic :: iso_c_binding
339 import kim_model_driver_create_handle_type
341 type(kim_model_driver_create_handle_type),
intent(in) &
342 :: model_driver_create_handle
343 character(len=*),
intent(out) :: string
type(kim_model_driver_create_handle_type), public, protected kim_model_driver_create_null_handle