36 use,
intrinsic :: iso_c_binding
42 kim_model_write_parameterized_model_handle_type, &
50 kim_set_parameter_file_name, &
51 kim_get_model_buffer_pointer, &
60 type, bind(c) :: kim_model_write_parameterized_model_handle_type
61 type(c_ptr) :: p = c_null_ptr
62 end type kim_model_write_parameterized_model_handle_type
67 type(kim_model_write_parameterized_model_handle_type),
protected,
save &
74 interface operator(.eq.)
75 module procedure kim_model_write_parameterized_model_handle_equal
76 end interface operator(.eq.)
82 interface operator(.ne.)
83 module procedure kim_model_write_parameterized_model_handle_not_equal
84 end interface operator(.ne.)
92 interface kim_get_path
93 module procedure kim_model_write_parameterized_model_get_path
94 end interface kim_get_path
102 interface kim_get_model_name
104 end interface kim_get_model_name
112 interface kim_set_parameter_file_name
114 end interface kim_set_parameter_file_name
122 interface kim_get_model_buffer_pointer
125 end interface kim_get_model_buffer_pointer
133 interface kim_log_entry
135 end interface kim_log_entry
143 interface kim_to_string
145 end interface kim_to_string
152 logical recursive function kim_model_write_parameterized_model_handle_equal( &
155 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: lhs
156 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: rhs
158 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p)))
then 159 kim_model_write_parameterized_model_handle_equal = .true.
161 kim_model_write_parameterized_model_handle_equal = &
162 c_associated(lhs%p, rhs%p)
164 end function kim_model_write_parameterized_model_handle_equal
170 logical recursive function &
171 kim_model_write_parameterized_model_handle_not_equal(lhs, rhs)
173 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: lhs
174 type(kim_model_write_parameterized_model_handle_type),
intent(in) :: rhs
176 kim_model_write_parameterized_model_handle_not_equal = .not. (lhs == rhs)
177 end function kim_model_write_parameterized_model_handle_not_equal
185 recursive subroutine kim_model_write_parameterized_model_get_path( &
186 model_write_parameterized_model_handle, path)
187 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
188 use kim_interoperable_types_module
, only: &
189 kim_model_write_parameterized_model_type
192 recursive subroutine get_path(model_write_parameterized_model, path) &
193 bind(c, name=
"KIM_ModelWriteParameterizedModel_GetPath")
194 use,
intrinsic :: iso_c_binding
195 use kim_interoperable_types_module
, only: &
196 kim_model_write_parameterized_model_type
198 type(kim_model_write_parameterized_model_type),
intent(in) &
199 :: model_write_parameterized_model
200 type(c_ptr),
intent(out) :: path
201 end subroutine get_path
203 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
204 :: model_write_parameterized_model_handle
205 character(len=*, kind=c_char),
intent(out) :: path
206 type(kim_model_write_parameterized_model_type),
pointer &
207 :: model_write_parameterized_model
211 call c_f_pointer(model_write_parameterized_model_handle%p, &
212 model_write_parameterized_model)
213 call get_path(model_write_parameterized_model, ppath)
214 call kim_convert_c_char_ptr_to_string(ppath, path)
215 end subroutine kim_model_write_parameterized_model_get_path
224 model_write_parameterized_model_handle, model_name)
225 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
226 use kim_interoperable_types_module
, only: &
227 kim_model_write_parameterized_model_type
230 recursive subroutine get_model_name(model_write_parameterized_model, &
232 bind(c, name=
"KIM_ModelWriteParameterizedModel_GetModelName")
233 use,
intrinsic :: iso_c_binding
234 use kim_interoperable_types_module
, only: &
235 kim_model_write_parameterized_model_type
237 type(kim_model_write_parameterized_model_type),
intent(in) &
238 :: model_write_parameterized_model
239 type(c_ptr),
intent(out) :: model_name
240 end subroutine get_model_name
242 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
243 :: model_write_parameterized_model_handle
244 character(len=*, kind=c_char),
intent(out) :: model_name
245 type(kim_model_write_parameterized_model_type),
pointer &
246 :: model_write_parameterized_model
248 type(c_ptr) :: pmodel_name
250 call c_f_pointer(model_write_parameterized_model_handle%p, &
251 model_write_parameterized_model)
252 call get_model_name(model_write_parameterized_model, pmodel_name)
253 call kim_convert_c_char_ptr_to_string(pmodel_name, model_name)
262 recursive subroutine &
264 model_write_parameterized_model_handle, file_name)
265 use kim_interoperable_types_module
, only: &
266 kim_model_write_parameterized_model_type
269 recursive subroutine set_parameter_file_name( &
270 model_write_parameterized_model, file_name) &
271 bind(c, name=
"KIM_ModelWriteParameterizedModel_SetParameterFileName")
272 use,
intrinsic :: iso_c_binding
273 use kim_interoperable_types_module
, only: &
274 kim_model_write_parameterized_model_type
276 type(kim_model_write_parameterized_model_type),
intent(in) &
277 :: model_write_parameterized_model
278 character(c_char),
intent(in) :: file_name(*)
279 end subroutine set_parameter_file_name
281 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
282 :: model_write_parameterized_model_handle
283 character(len=*, kind=c_char),
intent(in) :: file_name
284 type(kim_model_write_parameterized_model_type),
pointer &
285 :: model_write_parameterized_model
287 call c_f_pointer(model_write_parameterized_model_handle%p, &
288 model_write_parameterized_model)
289 call set_parameter_file_name(model_write_parameterized_model, &
290 trim(file_name)//c_null_char)
299 recursive subroutine &
301 model_write_parameterized_model_handle, ptr)
302 use kim_interoperable_types_module
, only: &
303 kim_model_write_parameterized_model_type
306 recursive subroutine get_model_buffer_pointer( &
307 model_write_parameterized_model, ptr) &
308 bind(c, name=
"KIM_ModelCompute_GetModelBufferPointer")
309 use,
intrinsic :: iso_c_binding
310 use kim_interoperable_types_module
, only: &
311 kim_model_write_parameterized_model_type
313 type(kim_model_write_parameterized_model_type),
intent(in) &
314 :: model_write_parameterized_model
315 type(c_ptr),
intent(out) :: ptr
316 end subroutine get_model_buffer_pointer
318 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
319 :: model_write_parameterized_model_handle
320 type(c_ptr),
intent(out) :: ptr
321 type(kim_model_write_parameterized_model_type),
pointer &
322 :: model_write_parameterized_model
324 call c_f_pointer(model_write_parameterized_model_handle%p, &
325 model_write_parameterized_model)
326 call get_model_buffer_pointer(model_write_parameterized_model, ptr)
336 model_write_parameterized_model_handle, log_verbosity, message)
338 use kim_interoperable_types_module
, only: &
339 kim_model_write_parameterized_model_type
342 recursive subroutine log_entry( &
343 model_write_parameterized_model, log_verbosity, message, line_number, &
344 file_name) bind(c, name="KIM_ModelCompute_LogEntry")
345 use,
intrinsic :: iso_c_binding
347 use kim_interoperable_types_module
, only: &
348 kim_model_write_parameterized_model_type
350 type(kim_model_write_parameterized_model_type),
intent(in) &
351 :: model_write_parameterized_model
352 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
353 character(c_char),
intent(in) :: message(*)
354 integer(c_int),
intent(in),
value :: line_number
355 character(c_char),
intent(in) :: file_name(*)
356 end subroutine log_entry
358 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
359 :: model_write_parameterized_model_handle
360 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
361 character(len=*, kind=c_char),
intent(in) :: message
362 type(kim_model_write_parameterized_model_type),
pointer &
363 :: model_write_parameterized_model
365 call c_f_pointer(model_write_parameterized_model_handle%p, &
366 model_write_parameterized_model)
367 call log_entry(model_write_parameterized_model, log_verbosity, &
368 trim(message)//c_null_char, 0,
""//c_null_char)
378 model_write_parameterized_model_handle, string)
379 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
380 use kim_interoperable_types_module
, only: &
381 kim_model_write_parameterized_model_type
384 type(c_ptr)
recursive function model_write_parameterized_model_string( &
385 model_write_parameterized_model) &
386 bind(c, name=
"KIM_ModelCompute_ToString")
387 use,
intrinsic :: iso_c_binding
388 use kim_interoperable_types_module
, only: &
389 kim_model_write_parameterized_model_type
391 type(kim_model_write_parameterized_model_type),
intent(in) &
392 :: model_write_parameterized_model
393 end function model_write_parameterized_model_string
395 type(kim_model_write_parameterized_model_handle_type),
intent(in) &
396 :: model_write_parameterized_model_handle
397 character(len=*, kind=c_char),
intent(out) :: string
398 type(kim_model_write_parameterized_model_type),
pointer &
399 :: model_write_parameterized_model
403 call c_f_pointer(model_write_parameterized_model_handle%p, &
404 model_write_parameterized_model)
405 p = model_write_parameterized_model_string(model_write_parameterized_model)
406 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.