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 &
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_cutoffs_pointer( &
161 model_driver_create_handle, number_of_cutoffs, cutoffs)
162 use,
intrinsic :: iso_c_binding
163 import kim_model_driver_create_handle_type
165 type(kim_model_driver_create_handle_type),
intent(inout) &
166 :: model_driver_create_handle
167 integer(c_int),
intent(in),
value :: number_of_cutoffs
168 real(c_double),
intent(in),
target :: cutoffs(number_of_cutoffs)
169 end subroutine kim_model_driver_create_set_neighbor_list_cutoffs_pointer
171 subroutine kim_model_driver_create_set_refresh_pointer( &
172 model_driver_create_handle, language_name, fptr, ierr)
173 use,
intrinsic :: iso_c_binding
175 import kim_model_driver_create_handle_type
177 type(kim_model_driver_create_handle_type),
intent(in) &
178 :: model_driver_create_handle
179 type(kim_language_name_type),
intent(in),
value :: language_name
180 type(c_funptr),
intent(in),
value :: fptr
181 integer(c_int),
intent(out) :: ierr
182 end subroutine kim_model_driver_create_set_refresh_pointer
185 model_driver_create_handle, language_name, fptr, ierr)
186 use,
intrinsic :: iso_c_binding
188 import kim_model_driver_create_handle_type
190 type(kim_model_driver_create_handle_type),
intent(in) &
191 :: model_driver_create_handle
192 type(kim_language_name_type),
intent(in),
value :: language_name
193 type(c_funptr),
intent(in),
value :: fptr
194 integer(c_int),
intent(out) :: ierr
198 model_driver_create_handle, language_name, fptr, ierr)
199 use,
intrinsic :: iso_c_binding
201 import kim_model_driver_create_handle_type
203 type(kim_model_driver_create_handle_type),
intent(in) &
204 :: model_driver_create_handle
205 type(kim_language_name_type),
intent(in),
value :: language_name
206 type(c_funptr),
intent(in),
value :: fptr
207 integer(c_int),
intent(out) :: ierr
211 model_driver_create_handle, language_name, fptr, ierr)
212 use,
intrinsic :: iso_c_binding
214 import kim_model_driver_create_handle_type
216 type(kim_model_driver_create_handle_type),
intent(in) &
217 :: model_driver_create_handle
218 type(kim_language_name_type),
intent(in),
value :: language_name
219 type(c_funptr),
intent(in),
value :: fptr
220 integer(c_int),
intent(out) :: ierr
224 model_driver_create_handle, language_name, fptr, ierr)
225 use,
intrinsic :: iso_c_binding
227 import kim_model_driver_create_handle_type
229 type(kim_model_driver_create_handle_type),
intent(in) &
230 :: model_driver_create_handle
231 type(kim_language_name_type),
intent(in),
value :: language_name
232 type(c_funptr),
intent(in),
value :: fptr
233 integer(c_int),
intent(out) :: ierr
237 model_driver_create_handle, species_name, code, ierr)
238 use,
intrinsic :: iso_c_binding
240 import kim_model_driver_create_handle_type
242 type(kim_model_driver_create_handle_type),
intent(in) &
243 :: model_driver_create_handle
244 type(kim_species_name_type),
intent(in),
value :: species_name
245 integer(c_int),
intent(in),
value :: code
246 integer(c_int),
intent(out) :: ierr
250 model_driver_create_handle, ptr)
251 use,
intrinsic :: iso_c_binding
252 import kim_model_driver_create_handle_type
254 type(kim_model_driver_create_handle_type),
intent(in) &
255 :: model_driver_create_handle
256 type(c_ptr),
intent(in),
value :: ptr
259 subroutine kim_model_driver_create_set_units( &
260 model_driver_create_handle, length_unit, energy_unit, charge_unit, &
261 temperature_unit, time_unit, ierr)
262 use,
intrinsic :: iso_c_binding
264 kim_length_unit_type, &
265 kim_energy_unit_type, &
266 kim_charge_unit_type, &
267 kim_temperature_unit_type, &
269 import kim_model_driver_create_handle_type
271 type(kim_model_driver_create_handle_type),
intent(in) &
272 :: model_driver_create_handle
273 type(kim_length_unit_type),
intent(in),
value :: length_unit
274 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
275 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
276 type(kim_temperature_unit_type),
intent(in),
value :: temperature_unit
277 type(kim_time_unit_type),
intent(in),
value :: time_unit
278 integer(c_int),
intent(out) :: ierr
279 end subroutine kim_model_driver_create_set_units
282 model_driver_create_handle, from_length_unit, from_energy_unit, &
283 from_charge_unit, from_temperature_unit, from_time_unit, &
284 to_length_unit, to_energy_unit, to_charge_unit, to_temperature_unit, &
285 to_time_unit, length_exponent, energy_exponent, charge_exponent, &
286 temperature_exponent, time_exponent, conversion_factor, ierr)
287 use,
intrinsic :: iso_c_binding
293 import kim_model_driver_create_handle_type
295 type(kim_model_driver_create_handle_type),
intent(in) &
296 :: model_driver_create_handle
297 type(kim_length_unit_type),
intent(in),
value :: from_length_unit
298 type(kim_energy_unit_type),
intent(in),
value :: from_energy_unit
299 type(kim_charge_unit_type),
intent(in),
value :: from_charge_unit
300 type(kim_temperature_unit_type),
intent(in),
value :: &
301 from_temperature_unit
302 type(kim_time_unit_type),
intent(in),
value :: from_time_unit
303 type(kim_length_unit_type),
intent(in),
value :: to_length_unit
304 type(kim_energy_unit_type),
intent(in),
value :: to_energy_unit
305 type(kim_charge_unit_type),
intent(in),
value :: to_charge_unit
306 type(kim_temperature_unit_type),
intent(in),
value :: &
308 type(kim_time_unit_type),
intent(in),
value :: to_time_unit
309 real(c_double),
intent(in),
value :: length_exponent
310 real(c_double),
intent(in),
value :: energy_exponent
311 real(c_double),
intent(in),
value :: charge_exponent
312 real(c_double),
intent(in),
value :: temperature_exponent
313 real(c_double),
intent(in),
value :: time_exponent
314 real(c_double),
intent(out) :: conversion_factor
315 integer(c_int),
intent(out) :: ierr
319 model_driver_create_handle, log_verbosity, message, line_number, &
321 use,
intrinsic :: iso_c_binding
323 import kim_model_driver_create_handle_type
325 type(kim_model_driver_create_handle_type),
intent(in) &
326 :: model_driver_create_handle
327 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
328 character(len=*, kind=c_char),
intent(in) :: message
329 integer(c_int),
intent(in),
value :: line_number
330 character(len=*, kind=c_char),
intent(in) :: file_name
334 model_driver_create_handle, string)
335 use,
intrinsic :: iso_c_binding
336 import kim_model_driver_create_handle_type
338 type(kim_model_driver_create_handle_type),
intent(in) &
339 :: model_driver_create_handle
340 character(len=*, kind=c_char),
intent(out) :: string
type(kim_model_driver_create_handle_type), public, protected kim_model_driver_create_null_handle