40 use,
intrinsic :: iso_c_binding
46 kim_model_write_parameterized_model_handle_type, &
56 kim_set_parameter_file_name, &
57 kim_get_model_buffer_pointer, &
67 type, bind(c) :: kim_model_write_parameterized_model_handle_type
68 type(c_ptr) :: p = c_null_ptr
69 end type kim_model_write_parameterized_model_handle_type
74 type(kim_model_write_parameterized_model_handle_type),
protected,
save &
81 interface operator (.eq.)
82 module procedure kim_model_write_parameterized_model_handle_equal
83 end interface operator (.eq.)
89 interface operator (.ne.)
90 module procedure kim_model_write_parameterized_model_handle_not_equal
91 end interface operator (.ne.)
99 interface kim_get_path
100 module procedure kim_model_write_parameterized_model_get_path
101 end interface kim_get_path
109 interface kim_get_model_name
111 end interface kim_get_model_name
119 interface kim_set_parameter_file_name
121 end interface kim_set_parameter_file_name
129 interface kim_get_model_buffer_pointer
132 end interface kim_get_model_buffer_pointer
140 interface kim_log_entry
142 end interface kim_log_entry
150 interface kim_to_string
152 end interface kim_to_string
159 logical recursive function kim_model_write_parameterized_model_handle_equal( &
162 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: lhs
163 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: rhs
165 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p)))
then 166 kim_model_write_parameterized_model_handle_equal = .true.
168 kim_model_write_parameterized_model_handle_equal = &
169 c_associated(lhs%p, rhs%p)
171 end function kim_model_write_parameterized_model_handle_equal
177 logical recursive function &
178 kim_model_write_parameterized_model_handle_not_equal(lhs, rhs)
180 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: lhs
181 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: rhs
183 kim_model_write_parameterized_model_handle_not_equal = .not. (lhs .eq. rhs)
184 end function kim_model_write_parameterized_model_handle_not_equal
192 recursive subroutine kim_model_write_parameterized_model_get_path( &
193 model_write_parameterized_model_handle, path)
194 use kim_convert_string_module
, only : kim_convert_c_char_ptr_to_string
195 use kim_interoperable_types_module
, only : &
196 kim_model_write_parameterized_model_type
199 recursive subroutine get_path(model_write_parameterized_model, path) &
200 bind(c, name=
"KIM_ModelWriteParameterizedModel_GetPath")
201 use,
intrinsic :: iso_c_binding
202 use kim_interoperable_types_module
, only : &
203 kim_model_write_parameterized_model_type
205 type(kim_model_write_parameterized_model_type),
intent(in) &
206 :: model_write_parameterized_model
207 type(c_ptr),
intent(out) :: path
208 end subroutine get_path
210 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
211 :: model_write_parameterized_model_handle
212 character(len=*, kind=c_char),
intent(out) :: path
213 type(kim_model_write_parameterized_model_type),
pointer &
214 :: model_write_parameterized_model
218 call c_f_pointer(model_write_parameterized_model_handle%p, &
219 model_write_parameterized_model)
220 call get_path(model_write_parameterized_model, ppath)
221 call kim_convert_c_char_ptr_to_string(ppath, path)
222 end subroutine kim_model_write_parameterized_model_get_path
231 model_write_parameterized_model_handle, model_name)
232 use kim_convert_string_module
, only : kim_convert_c_char_ptr_to_string
233 use kim_interoperable_types_module
, only : &
234 kim_model_write_parameterized_model_type
237 recursive subroutine get_model_name(model_write_parameterized_model, &
239 bind(c, name=
"KIM_ModelWriteParameterizedModel_GetModelName")
240 use,
intrinsic :: iso_c_binding
241 use kim_interoperable_types_module
, only : &
242 kim_model_write_parameterized_model_type
244 type(kim_model_write_parameterized_model_type),
intent(in) &
245 :: model_write_parameterized_model
246 type(c_ptr),
intent(out) :: model_name
247 end subroutine get_model_name
249 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
250 :: model_write_parameterized_model_handle
251 character(len=*, kind=c_char),
intent(out) :: model_name
252 type(kim_model_write_parameterized_model_type),
pointer &
253 :: model_write_parameterized_model
255 type(c_ptr) :: pmodel_name
257 call c_f_pointer(model_write_parameterized_model_handle%p, &
258 model_write_parameterized_model)
259 call get_model_name(model_write_parameterized_model, pmodel_name)
260 call kim_convert_c_char_ptr_to_string(pmodel_name, model_name)
269 recursive subroutine &
271 model_write_parameterized_model_handle, file_name)
272 use kim_interoperable_types_module
, only : &
273 kim_model_write_parameterized_model_type
276 recursive subroutine set_parameter_file_name( &
277 model_write_parameterized_model, file_name) &
278 bind(c, name=
"KIM_ModelWriteParameterizedModel_SetParameterFileName")
279 use,
intrinsic :: iso_c_binding
280 use kim_interoperable_types_module
, only : &
281 kim_model_write_parameterized_model_type
283 type(kim_model_write_parameterized_model_type),
intent(in) &
284 :: model_write_parameterized_model
285 character(c_char),
intent(in) :: file_name(*)
286 end subroutine set_parameter_file_name
288 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
289 :: model_write_parameterized_model_handle
290 character(len=*, kind=c_char),
intent(in) :: file_name
291 type(kim_model_write_parameterized_model_type),
pointer &
292 :: model_write_parameterized_model
294 call c_f_pointer(model_write_parameterized_model_handle%p, &
295 model_write_parameterized_model)
296 call set_parameter_file_name(model_write_parameterized_model, &
297 trim(file_name)//c_null_char)
306 recursive subroutine &
308 model_write_parameterized_model_handle, ptr)
309 use kim_interoperable_types_module
, only : &
310 kim_model_write_parameterized_model_type
313 recursive subroutine get_model_buffer_pointer( &
314 model_write_parameterized_model, ptr) &
315 bind(c, name=
"KIM_ModelCompute_GetModelBufferPointer")
316 use,
intrinsic :: iso_c_binding
317 use kim_interoperable_types_module
, only : &
318 kim_model_write_parameterized_model_type
320 type(kim_model_write_parameterized_model_type),
intent(in) &
321 :: model_write_parameterized_model
322 type(c_ptr),
intent(out) :: ptr
323 end subroutine get_model_buffer_pointer
325 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
326 :: model_write_parameterized_model_handle
327 type(c_ptr),
intent(out) :: ptr
328 type(kim_model_write_parameterized_model_type),
pointer &
329 :: model_write_parameterized_model
331 call c_f_pointer(model_write_parameterized_model_handle%p, &
332 model_write_parameterized_model)
333 call get_model_buffer_pointer(model_write_parameterized_model, ptr)
343 model_write_parameterized_model_handle, log_verbosity, message)
345 use kim_interoperable_types_module
, only : &
346 kim_model_write_parameterized_model_type
349 recursive subroutine log_entry(model_write_parameterized_model, &
350 log_verbosity, message, line_number, file_name) &
351 bind(c, name=
"KIM_ModelCompute_LogEntry")
352 use,
intrinsic :: iso_c_binding
354 use kim_interoperable_types_module
, only : &
355 kim_model_write_parameterized_model_type
357 type(kim_model_write_parameterized_model_type),
intent(in) &
358 :: model_write_parameterized_model
359 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
360 character(c_char),
intent(in) :: message(*)
361 integer(c_int),
intent(in),
value :: line_number
362 character(c_char),
intent(in) :: file_name(*)
363 end subroutine log_entry
365 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
366 :: model_write_parameterized_model_handle
367 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
368 character(len=*, kind=c_char),
intent(in) :: message
369 type(kim_model_write_parameterized_model_type),
pointer &
370 :: model_write_parameterized_model
372 call c_f_pointer(model_write_parameterized_model_handle%p, &
373 model_write_parameterized_model)
374 call log_entry(model_write_parameterized_model, log_verbosity, &
375 trim(message)//c_null_char, 0,
""//c_null_char)
385 model_write_parameterized_model_handle, string)
386 use kim_convert_string_module
, only : kim_convert_c_char_ptr_to_string
387 use kim_interoperable_types_module
, only : &
388 kim_model_write_parameterized_model_type
391 type(c_ptr)
recursive function model_write_parameterized_model_string( &
392 model_write_parameterized_model) &
393 bind(c, name=
"KIM_ModelCompute_ToString")
394 use,
intrinsic :: iso_c_binding
395 use kim_interoperable_types_module
, only : &
396 kim_model_write_parameterized_model_type
398 type(kim_model_write_parameterized_model_type),
intent(in) &
399 :: model_write_parameterized_model
400 end function model_write_parameterized_model_string
402 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
403 :: model_write_parameterized_model_handle
404 character(len=*, kind=c_char),
intent(out) :: string
405 type(kim_model_write_parameterized_model_type),
pointer &
406 :: model_write_parameterized_model
410 call c_f_pointer(model_write_parameterized_model_handle%p, &
411 model_write_parameterized_model)
412 p = model_write_parameterized_model_string(model_write_parameterized_model)
413 call kim_convert_c_char_ptr_to_string(p, string)
recursive subroutine kim_model_write_parameterized_model_get_model_buffer_pointer(model_write_parameterized_model_handle, ptr)
Get the Model's buffer pointer within the Model object.
recursive subroutine kim_model_write_parameterized_model_get_model_name(model_write_parameterized_model_handle, model_name)
Get the name of the new parameterized model.
recursive subroutine kim_model_write_parameterized_model_to_string(model_write_parameterized_model_handle, string)
Get a string representing the internal state of the Model object.
type(kim_model_write_parameterized_model_handle_type), save, public, protected kim_model_write_parameterized_model_null_handle
NULL handle for use in comparisons.
Provides the interface to a KIM API Model object for use by models within their MODEL_ROUTINE_NAME::W...
recursive subroutine kim_model_write_parameterized_model_set_parameter_file_name(model_write_parameterized_model_handle, file_name)
Set the file name for the next parameter file.
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.
recursive subroutine kim_model_write_parameterized_model_log_entry(model_write_parameterized_model_handle, log_verbosity, message)
Write a log entry into the log file.