35 use,
intrinsic :: iso_c_binding
40 kim_model_create_handle_type, &
44 kim_model_create_set_model_numbering, &
46 kim_model_create_set_neighbor_list_cutoffs_pointer, &
47 kim_model_create_set_refresh_pointer, &
53 kim_model_create_set_parameter_pointer, &
55 kim_model_create_set_units, &
60 type, bind(c) :: kim_model_create_handle_type
61 type(c_ptr) :: p = c_null_ptr
62 end type kim_model_create_handle_type
64 type(kim_model_create_handle_type),
protected, &
65 bind(c,name=
"KIM_MODEL_CREATE_null_handle") &
68 interface operator (.eq.)
69 logical function kim_model_create_handle_equal(left, right)
70 use,
intrinsic :: iso_c_binding
71 import kim_model_create_handle_type
73 type(kim_model_create_handle_type),
intent(in) :: left
74 type(kim_model_create_handle_type),
intent(in) :: right
75 end function kim_model_create_handle_equal
76 end interface operator (.eq.)
78 interface operator (.ne.)
79 logical function kim_model_create_handle_not_equal(left, right)
80 use,
intrinsic :: iso_c_binding
81 import kim_model_create_handle_type
83 type(kim_model_create_handle_type),
intent(in) :: left
84 type(kim_model_create_handle_type),
intent(in) :: right
85 end function kim_model_create_handle_not_equal
86 end interface operator (.ne.)
88 interface kim_model_create_set_parameter_pointer
89 subroutine kim_model_create_set_parameter_pointer_integer( &
90 model_create_handle, int1, description, ierr)
91 use,
intrinsic :: iso_c_binding
92 import kim_model_create_handle_type
94 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
95 integer(c_int),
intent(in),
target :: int1(:)
96 character(len=*),
intent(in) :: description
97 integer(c_int),
intent(out) :: ierr
98 end subroutine kim_model_create_set_parameter_pointer_integer
100 subroutine kim_model_create_set_parameter_pointer_double( &
101 model_create_handle, double1, description, ierr)
102 use,
intrinsic :: iso_c_binding
103 import kim_model_create_handle_type
105 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
106 real(c_double),
intent(in),
target :: double1(:)
107 character(len=*),
intent(in) :: description
108 integer(c_int),
intent(out) :: ierr
109 end subroutine kim_model_create_set_parameter_pointer_double
110 end interface kim_model_create_set_parameter_pointer
113 subroutine kim_model_create_set_model_numbering( &
114 model_create_handle, numbering, ierr)
115 use,
intrinsic :: iso_c_binding
117 import kim_model_create_handle_type
119 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
120 type(kim_numbering_type),
intent(in),
value :: numbering
121 integer(c_int),
intent(out) :: ierr
122 end subroutine kim_model_create_set_model_numbering
125 model_create_handle, influence_distance)
126 use,
intrinsic :: iso_c_binding
127 import kim_model_create_handle_type
129 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
130 real(c_double),
intent(in),
target :: influence_distance
133 subroutine kim_model_create_set_neighbor_list_cutoffs_pointer( &
134 model_create_handle, number_of_cutoffs, cutoffs)
135 use,
intrinsic :: iso_c_binding
136 import kim_model_create_handle_type
138 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
139 integer(c_int),
intent(in),
value :: number_of_cutoffs
140 real(c_double),
intent(in),
target :: cutoffs(number_of_cutoffs)
141 end subroutine kim_model_create_set_neighbor_list_cutoffs_pointer
143 subroutine kim_model_create_set_refresh_pointer( &
144 model_create_handle, language_name, fptr, ierr)
145 use,
intrinsic :: iso_c_binding
147 import kim_model_create_handle_type
149 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
150 type(kim_language_name_type),
intent(in),
value :: language_name
151 type(c_funptr),
intent(in),
value :: fptr
152 integer(c_int),
intent(out) :: ierr
153 end subroutine kim_model_create_set_refresh_pointer
156 model_create_handle, language_name, fptr, ierr)
157 use,
intrinsic :: iso_c_binding
159 import kim_model_create_handle_type
161 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
162 type(kim_language_name_type),
intent(in),
value :: language_name
163 type(c_funptr),
intent(in),
value :: fptr
164 integer(c_int),
intent(out) :: ierr
168 model_create_handle, language_name, fptr, ierr)
169 use,
intrinsic :: iso_c_binding
171 import kim_model_create_handle_type
173 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
174 type(kim_language_name_type),
intent(in),
value :: language_name
175 type(c_funptr),
intent(in),
value :: fptr
176 integer(c_int),
intent(out) :: ierr
180 species_name, code, ierr)
181 use,
intrinsic :: iso_c_binding
183 import kim_model_create_handle_type
185 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
186 type(kim_species_name_type),
intent(in),
value :: species_name
187 integer(c_int),
intent(in),
value :: code
188 integer(c_int),
intent(out) :: ierr
192 model_create_handle, argument_name, support_status, ierr)
193 use,
intrinsic :: iso_c_binding
196 import kim_model_create_handle_type
198 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
199 type(kim_argument_name_type),
intent(in),
value :: argument_name
200 type(kim_support_status_type),
intent(in),
value :: support_status
201 integer(c_int),
intent(out) :: ierr
205 model_create_handle, callback_name, support_status, ierr)
206 use,
intrinsic :: iso_c_binding
209 import kim_model_create_handle_type
211 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
212 type(kim_callback_name_type),
intent(in),
value :: callback_name
213 type(kim_support_status_type),
intent(in),
value :: support_status
214 integer(c_int),
intent(out) :: ierr
218 model_create_handle, ptr)
219 use,
intrinsic :: iso_c_binding
220 import kim_model_create_handle_type
222 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
223 type(c_ptr),
intent(in),
value :: ptr
226 subroutine kim_model_create_set_units(model_create_handle, &
227 length_unit, energy_unit, charge_unit, temperature_unit, time_unit, ierr)
228 use,
intrinsic :: iso_c_binding
230 kim_length_unit_type, &
231 kim_energy_unit_type, &
232 kim_charge_unit_type, &
233 kim_temperature_unit_type, &
235 import kim_model_create_handle_type
237 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
238 type(kim_length_unit_type),
intent(in),
value :: length_unit
239 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
240 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
241 type(kim_temperature_unit_type),
intent(in),
value :: temperature_unit
242 type(kim_time_unit_type),
intent(in),
value :: time_unit
243 integer(c_int),
intent(out) :: ierr
244 end subroutine kim_model_create_set_units
247 model_create_handle, from_length_unit, from_energy_unit, &
248 from_charge_unit, from_temperature_unit, from_time_unit, &
249 to_length_unit, to_energy_unit, to_charge_unit, to_temperature_unit, &
250 to_time_unit, length_exponent, energy_exponent, charge_exponent, &
251 temperature_exponent, time_exponent, conversion_factor, ierr)
252 use,
intrinsic :: iso_c_binding
258 import kim_model_create_handle_type
260 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
261 type(kim_length_unit_type),
intent(in),
value :: from_length_unit
262 type(kim_energy_unit_type),
intent(in),
value :: from_energy_unit
263 type(kim_charge_unit_type),
intent(in),
value :: from_charge_unit
264 type(kim_temperature_unit_type),
intent(in),
value :: &
265 from_temperature_unit
266 type(kim_time_unit_type),
intent(in),
value :: from_time_unit
267 type(kim_length_unit_type),
intent(in),
value :: to_length_unit
268 type(kim_energy_unit_type),
intent(in),
value :: to_energy_unit
269 type(kim_charge_unit_type),
intent(in),
value :: to_charge_unit
270 type(kim_temperature_unit_type),
intent(in),
value :: &
272 type(kim_time_unit_type),
intent(in),
value :: to_time_unit
273 real(c_double),
intent(in),
value :: length_exponent
274 real(c_double),
intent(in),
value :: energy_exponent
275 real(c_double),
intent(in),
value :: charge_exponent
276 real(c_double),
intent(in),
value :: temperature_exponent
277 real(c_double),
intent(in),
value :: time_exponent
278 real(c_double),
intent(out) :: conversion_factor
279 integer(c_int),
intent(out) :: ierr
283 log_verbosity, message, line_number, file_name)
284 use,
intrinsic :: iso_c_binding
286 import kim_model_create_handle_type
288 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
289 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
290 character(len=*),
intent(in) :: message
291 integer(c_int),
intent(in),
value :: line_number
292 character(len=*),
intent(in) :: file_name
296 use,
intrinsic :: iso_c_binding
297 import kim_model_create_handle_type
299 type(kim_model_create_handle_type),
intent(in) :: model_create_handle
300 character(len=*),
intent(out) :: string
type(kim_model_create_handle_type), public, protected kim_model_create_null_handle