39 use,
intrinsic :: iso_c_binding
45 kim_model_write_parameterized_model_handle_type, &
53 kim_set_parameter_file_name, &
54 kim_get_model_buffer_pointer, &
63 type, bind(c) :: kim_model_write_parameterized_model_handle_type
64 type(c_ptr) :: p = c_null_ptr
65 end type kim_model_write_parameterized_model_handle_type
70 type(kim_model_write_parameterized_model_handle_type),
protected,
save &
77 interface operator(.eq.)
78 module procedure kim_model_write_parameterized_model_handle_equal
79 end interface operator(.eq.)
85 interface operator(.ne.)
86 module procedure kim_model_write_parameterized_model_handle_not_equal
87 end interface operator(.ne.)
95 interface kim_get_path
96 module procedure kim_model_write_parameterized_model_get_path
97 end interface kim_get_path
105 interface kim_get_model_name
107 end interface kim_get_model_name
115 interface kim_set_parameter_file_name
117 end interface kim_set_parameter_file_name
125 interface kim_get_model_buffer_pointer
128 end interface kim_get_model_buffer_pointer
136 interface kim_log_entry
138 end interface kim_log_entry
146 interface kim_to_string
148 end interface kim_to_string
155 logical recursive function kim_model_write_parameterized_model_handle_equal( &
158 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: lhs
159 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: rhs
161 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p)))
then 162 kim_model_write_parameterized_model_handle_equal = .true.
164 kim_model_write_parameterized_model_handle_equal = &
165 c_associated(lhs%p, rhs%p)
167 end function kim_model_write_parameterized_model_handle_equal
173 logical recursive function &
174 kim_model_write_parameterized_model_handle_not_equal(lhs, rhs)
176 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: lhs
177 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: rhs
179 kim_model_write_parameterized_model_handle_not_equal = .not. (lhs == rhs)
180 end function kim_model_write_parameterized_model_handle_not_equal
188 recursive subroutine kim_model_write_parameterized_model_get_path( &
189 model_write_parameterized_model_handle, path)
190 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
191 use kim_interoperable_types_module
, only: &
192 kim_model_write_parameterized_model_type
195 recursive subroutine get_path(model_write_parameterized_model, path) &
196 bind(c, name=
"KIM_ModelWriteParameterizedModel_GetPath")
197 use,
intrinsic :: iso_c_binding
198 use kim_interoperable_types_module
, only: &
199 kim_model_write_parameterized_model_type
201 type(kim_model_write_parameterized_model_type),
intent(in) &
202 :: model_write_parameterized_model
203 type(c_ptr),
intent(out) :: path
204 end subroutine get_path
206 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
207 :: model_write_parameterized_model_handle
208 character(len=*, kind=c_char),
intent(out) :: path
209 type(kim_model_write_parameterized_model_type),
pointer &
210 :: model_write_parameterized_model
214 call c_f_pointer(model_write_parameterized_model_handle%p, &
215 model_write_parameterized_model)
216 call get_path(model_write_parameterized_model, ppath)
217 call kim_convert_c_char_ptr_to_string(ppath, path)
218 end subroutine kim_model_write_parameterized_model_get_path
227 model_write_parameterized_model_handle, model_name)
228 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
229 use kim_interoperable_types_module
, only: &
230 kim_model_write_parameterized_model_type
233 recursive subroutine get_model_name(model_write_parameterized_model, &
235 bind(c, name=
"KIM_ModelWriteParameterizedModel_GetModelName")
236 use,
intrinsic :: iso_c_binding
237 use kim_interoperable_types_module
, only: &
238 kim_model_write_parameterized_model_type
240 type(kim_model_write_parameterized_model_type),
intent(in) &
241 :: model_write_parameterized_model
242 type(c_ptr),
intent(out) :: model_name
243 end subroutine get_model_name
245 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
246 :: model_write_parameterized_model_handle
247 character(len=*, kind=c_char),
intent(out) :: model_name
248 type(kim_model_write_parameterized_model_type),
pointer &
249 :: model_write_parameterized_model
251 type(c_ptr) :: pmodel_name
253 call c_f_pointer(model_write_parameterized_model_handle%p, &
254 model_write_parameterized_model)
255 call get_model_name(model_write_parameterized_model, pmodel_name)
256 call kim_convert_c_char_ptr_to_string(pmodel_name, model_name)
265 recursive subroutine &
267 model_write_parameterized_model_handle, file_name)
268 use kim_interoperable_types_module
, only: &
269 kim_model_write_parameterized_model_type
272 recursive subroutine set_parameter_file_name( &
273 model_write_parameterized_model, file_name) &
274 bind(c, name=
"KIM_ModelWriteParameterizedModel_SetParameterFileName")
275 use,
intrinsic :: iso_c_binding
276 use kim_interoperable_types_module
, only: &
277 kim_model_write_parameterized_model_type
279 type(kim_model_write_parameterized_model_type),
intent(in) &
280 :: model_write_parameterized_model
281 character(c_char),
intent(in) :: file_name(*)
282 end subroutine set_parameter_file_name
284 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
285 :: model_write_parameterized_model_handle
286 character(len=*, kind=c_char),
intent(in) :: file_name
287 type(kim_model_write_parameterized_model_type),
pointer &
288 :: model_write_parameterized_model
290 call c_f_pointer(model_write_parameterized_model_handle%p, &
291 model_write_parameterized_model)
292 call set_parameter_file_name(model_write_parameterized_model, &
293 trim(file_name)//c_null_char)
302 recursive subroutine &
304 model_write_parameterized_model_handle, ptr)
305 use kim_interoperable_types_module
, only: &
306 kim_model_write_parameterized_model_type
309 recursive subroutine get_model_buffer_pointer( &
310 model_write_parameterized_model, ptr) &
311 bind(c, name=
"KIM_ModelCompute_GetModelBufferPointer")
312 use,
intrinsic :: iso_c_binding
313 use kim_interoperable_types_module
, only: &
314 kim_model_write_parameterized_model_type
316 type(kim_model_write_parameterized_model_type),
intent(in) &
317 :: model_write_parameterized_model
318 type(c_ptr),
intent(out) :: ptr
319 end subroutine get_model_buffer_pointer
321 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
322 :: model_write_parameterized_model_handle
323 type(c_ptr),
intent(out) :: ptr
324 type(kim_model_write_parameterized_model_type),
pointer &
325 :: model_write_parameterized_model
327 call c_f_pointer(model_write_parameterized_model_handle%p, &
328 model_write_parameterized_model)
329 call get_model_buffer_pointer(model_write_parameterized_model, ptr)
339 model_write_parameterized_model_handle, log_verbosity, message)
341 use kim_interoperable_types_module
, only: &
342 kim_model_write_parameterized_model_type
345 recursive subroutine log_entry( &
346 model_write_parameterized_model, log_verbosity, message, line_number, &
347 file_name) bind(c, name="KIM_ModelCompute_LogEntry")
348 use,
intrinsic :: iso_c_binding
350 use kim_interoperable_types_module
, only: &
351 kim_model_write_parameterized_model_type
353 type(kim_model_write_parameterized_model_type),
intent(in) &
354 :: model_write_parameterized_model
355 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
356 character(c_char),
intent(in) :: message(*)
357 integer(c_int),
intent(in),
value :: line_number
358 character(c_char),
intent(in) :: file_name(*)
359 end subroutine log_entry
361 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
362 :: model_write_parameterized_model_handle
363 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
364 character(len=*, kind=c_char),
intent(in) :: message
365 type(kim_model_write_parameterized_model_type),
pointer &
366 :: model_write_parameterized_model
368 call c_f_pointer(model_write_parameterized_model_handle%p, &
369 model_write_parameterized_model)
370 call log_entry(model_write_parameterized_model, log_verbosity, &
371 trim(message)//c_null_char, 0,
""//c_null_char)
381 model_write_parameterized_model_handle, string)
382 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
383 use kim_interoperable_types_module
, only: &
384 kim_model_write_parameterized_model_type
387 type(c_ptr)
recursive function model_write_parameterized_model_string( &
388 model_write_parameterized_model) &
389 bind(c, name=
"KIM_ModelCompute_ToString")
390 use,
intrinsic :: iso_c_binding
391 use kim_interoperable_types_module
, only: &
392 kim_model_write_parameterized_model_type
394 type(kim_model_write_parameterized_model_type),
intent(in) &
395 :: model_write_parameterized_model
396 end function model_write_parameterized_model_string
398 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
399 :: model_write_parameterized_model_handle
400 character(len=*, kind=c_char),
intent(out) :: string
401 type(kim_model_write_parameterized_model_type),
pointer &
402 :: model_write_parameterized_model
406 call c_f_pointer(model_write_parameterized_model_handle%p, &
407 model_write_parameterized_model)
408 p = model_write_parameterized_model_string(model_write_parameterized_model)
409 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.