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_pointers, &
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 &
69 interface operator (.eq.)
70 logical function kim_model_driver_create_handle_equal(left, right)
71 use,
intrinsic :: iso_c_binding
72 import kim_model_driver_create_handle_type
74 type(kim_model_driver_create_handle_type),
intent(in) :: left
75 type(kim_model_driver_create_handle_type),
intent(in) :: right
76 end function kim_model_driver_create_handle_equal
77 end interface operator (.eq.)
79 interface operator (.ne.)
80 logical function kim_model_driver_createhandle_not_equal(left, right)
81 use,
intrinsic :: iso_c_binding
82 import kim_model_driver_create_handle_type
84 type(kim_model_driver_create_handle_type),
intent(in) :: left
85 type(kim_model_driver_create_handle_type),
intent(in) :: right
86 end function kim_model_driver_createhandle_not_equal
87 end interface operator (.ne.)
89 interface kim_model_driver_create_set_parameter_pointer
90 subroutine kim_model_driver_create_set_parameter_pointer_integer( &
91 model_driver_create_handle, int1, description, ierr)
92 use,
intrinsic :: iso_c_binding
93 import kim_model_driver_create_handle_type
95 type(kim_model_driver_create_handle_type),
intent(in) &
96 :: model_driver_create_handle
97 integer(c_int),
intent(in),
target :: int1(:)
98 character(len=*, kind=c_char),
intent(in) :: description
99 integer(c_int),
intent(out) :: ierr
100 end subroutine kim_model_driver_create_set_parameter_pointer_integer
102 subroutine kim_model_driver_create_set_parameter_pointer_double( &
103 model_driver_create_handle, double1, description, ierr)
104 use,
intrinsic :: iso_c_binding
105 import kim_model_driver_create_handle_type
107 type(kim_model_driver_create_handle_type),
intent(in) &
108 :: model_driver_create_handle
109 real(c_double),
intent(in),
target :: double1(:)
110 character(len=*, kind=c_char),
intent(in) :: description
111 integer(c_int),
intent(out) :: ierr
112 end subroutine kim_model_driver_create_set_parameter_pointer_double
113 end interface kim_model_driver_create_set_parameter_pointer
116 subroutine kim_model_driver_create_get_number_of_parameter_files( &
117 model_driver_create_handle, number_of_parameter_files)
118 use,
intrinsic :: iso_c_binding
119 import kim_model_driver_create_handle_type
121 type(kim_model_driver_create_handle_type),
intent(in) &
122 :: model_driver_create_handle
123 integer(c_int),
intent(out) :: number_of_parameter_files
124 end subroutine kim_model_driver_create_get_number_of_parameter_files
126 subroutine kim_model_driver_create_get_parameter_file_name( &
127 model_driver_create_handle, index, parameter_file_name, ierr)
128 use,
intrinsic :: iso_c_binding
129 import kim_model_driver_create_handle_type
131 type(kim_model_driver_create_handle_type),
intent(in) &
132 :: model_driver_create_handle
133 integer(c_int),
intent(in),
value :: index
134 character(len=*, kind=c_char),
intent(out) :: parameter_file_name
135 integer(c_int),
intent(out) :: ierr
136 end subroutine kim_model_driver_create_get_parameter_file_name
138 subroutine kim_model_driver_create_set_model_numbering( &
139 model_driver_create_handle, numbering, ierr)
140 use,
intrinsic :: iso_c_binding
142 import kim_model_driver_create_handle_type
144 type(kim_model_driver_create_handle_type),
intent(in) &
145 :: model_driver_create_handle
146 type(kim_numbering_type),
intent(in),
value :: numbering
147 integer(c_int),
intent(out) :: ierr
148 end subroutine kim_model_driver_create_set_model_numbering
151 model_driver_create_handle, influence_distance)
152 use,
intrinsic :: iso_c_binding
153 import kim_model_driver_create_handle_type
155 type(kim_model_driver_create_handle_type),
intent(in) &
156 :: model_driver_create_handle
157 real(c_double),
intent(in),
target :: influence_distance
160 subroutine kim_model_driver_create_set_neighbor_list_pointers( &
161 model_driver_create_handle, number_of_neighbor_lists, cutoffs, &
162 padding_neighbor_hints, half_list_hints)
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_neighbor_lists
169 real(c_double),
intent(in),
target :: cutoffs(number_of_neighbor_lists)
170 integer(c_int),
intent(in),
target :: &
171 padding_neighbor_hints(number_of_neighbor_lists)
172 integer(c_int),
intent(in),
target :: &
173 half_list_hints(number_of_neighbor_lists)
174 end subroutine kim_model_driver_create_set_neighbor_list_pointers
176 subroutine kim_model_driver_create_set_refresh_pointer( &
177 model_driver_create_handle, language_name, fptr, ierr)
178 use,
intrinsic :: iso_c_binding
180 import kim_model_driver_create_handle_type
182 type(kim_model_driver_create_handle_type),
intent(in) &
183 :: model_driver_create_handle
184 type(kim_language_name_type),
intent(in),
value :: language_name
185 type(c_funptr),
intent(in),
value :: fptr
186 integer(c_int),
intent(out) :: ierr
187 end subroutine kim_model_driver_create_set_refresh_pointer
190 model_driver_create_handle, language_name, fptr, ierr)
191 use,
intrinsic :: iso_c_binding
193 import kim_model_driver_create_handle_type
195 type(kim_model_driver_create_handle_type),
intent(in) &
196 :: model_driver_create_handle
197 type(kim_language_name_type),
intent(in),
value :: language_name
198 type(c_funptr),
intent(in),
value :: fptr
199 integer(c_int),
intent(out) :: ierr
203 model_driver_create_handle, language_name, fptr, ierr)
204 use,
intrinsic :: iso_c_binding
206 import kim_model_driver_create_handle_type
208 type(kim_model_driver_create_handle_type),
intent(in) &
209 :: model_driver_create_handle
210 type(kim_language_name_type),
intent(in),
value :: language_name
211 type(c_funptr),
intent(in),
value :: fptr
212 integer(c_int),
intent(out) :: ierr
216 model_driver_create_handle, language_name, fptr, ierr)
217 use,
intrinsic :: iso_c_binding
219 import kim_model_driver_create_handle_type
221 type(kim_model_driver_create_handle_type),
intent(in) &
222 :: model_driver_create_handle
223 type(kim_language_name_type),
intent(in),
value :: language_name
224 type(c_funptr),
intent(in),
value :: fptr
225 integer(c_int),
intent(out) :: ierr
229 model_driver_create_handle, language_name, fptr, ierr)
230 use,
intrinsic :: iso_c_binding
232 import kim_model_driver_create_handle_type
234 type(kim_model_driver_create_handle_type),
intent(in) &
235 :: model_driver_create_handle
236 type(kim_language_name_type),
intent(in),
value :: language_name
237 type(c_funptr),
intent(in),
value :: fptr
238 integer(c_int),
intent(out) :: ierr
242 model_driver_create_handle, species_name, code, ierr)
243 use,
intrinsic :: iso_c_binding
245 import kim_model_driver_create_handle_type
247 type(kim_model_driver_create_handle_type),
intent(in) &
248 :: model_driver_create_handle
249 type(kim_species_name_type),
intent(in),
value :: species_name
250 integer(c_int),
intent(in),
value :: code
251 integer(c_int),
intent(out) :: ierr
255 model_driver_create_handle, ptr)
256 use,
intrinsic :: iso_c_binding
257 import kim_model_driver_create_handle_type
259 type(kim_model_driver_create_handle_type),
intent(in) &
260 :: model_driver_create_handle
261 type(c_ptr),
intent(in),
value :: ptr
264 subroutine kim_model_driver_create_set_units( &
265 model_driver_create_handle, length_unit, energy_unit, charge_unit, &
266 temperature_unit, time_unit, ierr)
267 use,
intrinsic :: iso_c_binding
269 kim_length_unit_type, &
270 kim_energy_unit_type, &
271 kim_charge_unit_type, &
272 kim_temperature_unit_type, &
274 import kim_model_driver_create_handle_type
276 type(kim_model_driver_create_handle_type),
intent(in) &
277 :: model_driver_create_handle
278 type(kim_length_unit_type),
intent(in),
value :: length_unit
279 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
280 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
281 type(kim_temperature_unit_type),
intent(in),
value :: temperature_unit
282 type(kim_time_unit_type),
intent(in),
value :: time_unit
283 integer(c_int),
intent(out) :: ierr
284 end subroutine kim_model_driver_create_set_units
287 model_driver_create_handle, from_length_unit, from_energy_unit, &
288 from_charge_unit, from_temperature_unit, from_time_unit, &
289 to_length_unit, to_energy_unit, to_charge_unit, to_temperature_unit, &
290 to_time_unit, length_exponent, energy_exponent, charge_exponent, &
291 temperature_exponent, time_exponent, conversion_factor, ierr)
292 use,
intrinsic :: iso_c_binding
298 import kim_model_driver_create_handle_type
300 type(kim_model_driver_create_handle_type),
intent(in) &
301 :: model_driver_create_handle
302 type(kim_length_unit_type),
intent(in),
value :: from_length_unit
303 type(kim_energy_unit_type),
intent(in),
value :: from_energy_unit
304 type(kim_charge_unit_type),
intent(in),
value :: from_charge_unit
305 type(kim_temperature_unit_type),
intent(in),
value :: &
306 from_temperature_unit
307 type(kim_time_unit_type),
intent(in),
value :: from_time_unit
308 type(kim_length_unit_type),
intent(in),
value :: to_length_unit
309 type(kim_energy_unit_type),
intent(in),
value :: to_energy_unit
310 type(kim_charge_unit_type),
intent(in),
value :: to_charge_unit
311 type(kim_temperature_unit_type),
intent(in),
value :: &
313 type(kim_time_unit_type),
intent(in),
value :: to_time_unit
314 real(c_double),
intent(in),
value :: length_exponent
315 real(c_double),
intent(in),
value :: energy_exponent
316 real(c_double),
intent(in),
value :: charge_exponent
317 real(c_double),
intent(in),
value :: temperature_exponent
318 real(c_double),
intent(in),
value :: time_exponent
319 real(c_double),
intent(out) :: conversion_factor
320 integer(c_int),
intent(out) :: ierr
324 model_driver_create_handle, log_verbosity, message, line_number, &
326 use,
intrinsic :: iso_c_binding
328 import kim_model_driver_create_handle_type
330 type(kim_model_driver_create_handle_type),
intent(in) &
331 :: model_driver_create_handle
332 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
333 character(len=*, kind=c_char),
intent(in) :: message
334 integer(c_int),
intent(in),
value :: line_number
335 character(len=*, kind=c_char),
intent(in) :: file_name
339 model_driver_create_handle, string)
340 use,
intrinsic :: iso_c_binding
341 import kim_model_driver_create_handle_type
343 type(kim_model_driver_create_handle_type),
intent(in) &
344 :: model_driver_create_handle
345 character(len=*, kind=c_char),
intent(out) :: string
type(kim_model_driver_create_handle_type), public, protected kim_model_driver_create_null_handle