226 recursive subroutine kim_model_create_set_model_numbering( &
227 model_create_handle, numbering, ierr)
229 use kim_interoperable_types_module,
only: kim_model_create_type
232 integer(c_int) recursive function set_model_numbering( &
234 bind(c, name="KIM_ModelCreate_SetModelNumbering")
235 use,
intrinsic :: iso_c_binding
237 use kim_interoperable_types_module,
only: kim_model_create_type
241 end function set_model_numbering
244 type(kim_numbering_type),
intent(in) :: numbering
245 integer(c_int),
intent(out) :: ierr
258 recursive subroutine kim_model_create_set_influence_distance_pointer( &
259 model_create_handle, influence_distance)
260 use kim_interoperable_types_module,
only: kim_model_create_type
263 recursive subroutine set_influence_distance_pointer(model_create, &
264 influence_distance) &
265 bind(c, name="KIM_ModelCreate_SetInfluenceDistancePointer")
266 use,
intrinsic :: iso_c_binding
267 use kim_interoperable_types_module,
only: kim_model_create_type
270 type(c_ptr),
intent(in),
value :: influence_distance
271 end subroutine set_influence_distance_pointer
274 real(c_double),
intent(in),
target :: influence_distance
279 c_loc(influence_distance))
288 recursive subroutine kim_model_create_set_neighbor_list_pointers( &
289 model_create_handle, number_of_neighbor_lists, cutoffs, &
290 model_will_not_request_neighbors_of_noncontributing_particles)
291 use kim_interoperable_types_module,
only: kim_model_create_type
294 recursive subroutine set_neighbor_list_pointers( &
295 model_create, number_of_neighbor_lists, cutoffs_ptr, &
296 model_will_not_request_neighbors_of_noncontributing_particles) &
297 bind(c, name="KIM_ModelCreate_SetNeighborListPointers")
298 use,
intrinsic :: iso_c_binding
299 use kim_interoperable_types_module,
only: kim_model_create_type
302 integer(c_int),
intent(in),
value :: number_of_neighbor_lists
303 type(c_ptr),
intent(in),
value :: cutoffs_ptr
304 type(c_ptr),
intent(in),
value :: &
305 model_will_not_request_neighbors_of_noncontributing_particles
306 end subroutine set_neighbor_list_pointers
309 integer(c_int),
intent(in) :: number_of_neighbor_lists
310 real(c_double),
intent(in),
target :: cutoffs(number_of_neighbor_lists)
311 integer(c_int),
intent(in),
target :: &
312 model_will_not_request_neighbors_of_noncontributing_particles( &
313 number_of_neighbor_lists)
317 call set_neighbor_list_pointers( &
318 model_create, number_of_neighbor_lists, c_loc(cutoffs), &
319 c_loc(model_will_not_request_neighbors_of_noncontributing_particles))
327 recursive subroutine kim_model_create_set_routine_pointer( &
328 model_create_handle, model_routine_name, language_name, required, fptr, &
332 use kim_interoperable_types_module,
only: kim_model_create_type
335 integer(c_int) recursive function set_routine_pointer( &
336 model_create, model_routine_name, language_name, required, fptr) &
337 bind(c, name="KIM_ModelCreate_SetRoutinePointer")
338 use,
intrinsic :: iso_c_binding
341 use kim_interoperable_types_module,
only: kim_model_create_type
345 :: model_routine_name
347 integer(c_int),
intent(in),
value :: required
348 type(c_funptr),
intent(in),
value :: fptr
349 end function set_routine_pointer
352 type(kim_model_routine_name_type),
intent(in) :: model_routine_name
353 type(kim_language_name_type),
intent(in) :: language_name
354 integer(c_int),
intent(in) :: required
355 type(c_funptr),
intent(in),
value :: fptr
356 integer(c_int),
intent(out) :: ierr
360 ierr = set_routine_pointer(
model_create, model_routine_name, &
361 language_name, required, fptr)
369 recursive subroutine kim_model_create_set_species_code( &
370 model_create_handle, species_name, code, ierr)
372 use kim_interoperable_types_module,
only: kim_model_create_type
375 integer(c_int) recursive function set_species_code(
model_create, &
376 species_name, code) &
377 bind(c, name="KIM_ModelCreate_SetSpeciesCode")
378 use,
intrinsic :: iso_c_binding
380 use kim_interoperable_types_module,
only: kim_model_create_type
384 integer(c_int),
intent(in),
value :: code
385 end function set_species_code
388 type(kim_species_name_type),
intent(in) :: species_name
389 integer(c_int),
intent(in) :: code
390 integer(c_int),
intent(out) :: ierr
394 ierr = set_species_code(
model_create, species_name, code)
403 recursive subroutine kim_model_create_set_parameter_pointer_integer( &
404 model_create_handle, int1, name, description, ierr)
405 use kim_interoperable_types_module,
only: kim_model_create_type
408 integer(c_int),
intent(in),
target :: int1(:)
409 character(len=*, kind=c_char),
intent(in) :: name
410 character(len=*, kind=c_char),
intent(in) :: description
411 integer(c_int),
intent(out) :: ierr
422 use kim_interoperable_types_module,
only: kim_model_create_type
425 integer(c_int) recursive function set_parameter_pointer_integer( &
427 bind(c, name="KIM_ModelCreate_SetParameterPointerInteger")
428 use,
intrinsic :: iso_c_binding
429 use kim_interoperable_types_module,
only: kim_model_create_type
432 integer(c_int),
intent(in),
value :: extent
433 type(c_ptr),
intent(in),
value :: ptr
434 character(c_char),
intent(in) :: name(*)
435 character(c_char),
intent(in) :: description(*)
436 end function set_parameter_pointer_integer
439 integer(c_int),
intent(in) :: extent
440 integer(c_int),
intent(in),
target :: int1(extent)
441 character(len=*, kind=c_char),
intent(in) :: name
442 character(len=*, kind=c_char),
intent(in) :: description
443 integer(c_int),
intent(out) :: ierr
448 trim(name)//c_null_char, &
449 trim(description)//c_null_char)
459 recursive subroutine kim_model_create_set_parameter_pointer_double( &
460 model_create_handle, double1, name, description, ierr)
461 use kim_interoperable_types_module,
only: kim_model_create_type
464 real(c_double),
intent(in),
target :: double1(:)
465 character(len=*, kind=c_char),
intent(in) :: name
466 character(len=*, kind=c_char),
intent(in) :: description
467 integer(c_int),
intent(out) :: ierr
472 name, description, ierr)
480 integer(c_int) recursive function set_parameter_pointer_double( &
482 bind(c, name="KIM_ModelCreate_SetParameterPointerDouble")
483 use,
intrinsic :: iso_c_binding
484 use kim_interoperable_types_module,
only: kim_model_create_type
487 integer(c_int),
intent(in),
value :: extent
488 type(c_ptr),
intent(in),
value :: ptr
489 character(c_char),
intent(in) :: name(*)
490 character(c_char),
intent(in) :: description(*)
491 end function set_parameter_pointer_double
494 integer(c_int),
intent(in) :: extent
495 real(c_double),
intent(in),
target :: double1(extent)
496 character(len=*, kind=c_char),
intent(in) :: name
497 character(len=*, kind=c_char),
intent(in) :: description
498 integer(c_int),
intent(out) :: ierr
503 trim(name)//c_null_char, &
504 trim(description)//c_null_char)
514 recursive subroutine kim_model_create_set_model_buffer_pointer( &
515 model_create_handle, ptr)
516 use kim_interoperable_types_module,
only: kim_model_create_type
519 recursive subroutine set_model_buffer_pointer(model_create, ptr) &
520 bind(c, name="KIM_ModelCreate_SetModelBufferPointer")
521 use,
intrinsic :: iso_c_binding
522 use kim_interoperable_types_module,
only: kim_model_create_type
525 type(c_ptr),
intent(in),
value :: ptr
526 end subroutine set_model_buffer_pointer
529 type(c_ptr),
intent(in) :: ptr
541 recursive subroutine kim_model_create_set_units( &
542 model_create_handle, length_unit, energy_unit, charge_unit, &
543 temperature_unit, time_unit, ierr)
545 kim_length_unit_type, &
546 kim_energy_unit_type, &
547 kim_charge_unit_type, &
548 kim_temperature_unit_type, &
550 use kim_interoperable_types_module,
only: kim_model_create_type
553 integer(c_int) recursive function set_units( &
554 model_create, length_unit, energy_unit, charge_unit, temperature_unit, &
555 time_unit)
bind(c, name="KIM_ModelCreate_SetUnits")
556 use,
intrinsic :: iso_c_binding
558 kim_energy_unit_type, &
559 kim_charge_unit_type, &
560 kim_temperature_unit_type, &
562 use kim_interoperable_types_module,
only: kim_model_create_type
565 type(kim_length_unit_type),
intent(in),
value :: length_unit
566 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
567 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
568 type(kim_temperature_unit_type),
intent(in),
value :: temperature_unit
569 type(kim_time_unit_type),
intent(in),
value :: time_unit
570 end function set_units
573 type(kim_length_unit_type),
intent(in) :: length_unit
574 type(kim_energy_unit_type),
intent(in) :: energy_unit
575 type(kim_charge_unit_type),
intent(in) :: charge_unit
576 type(kim_temperature_unit_type),
intent(in) :: temperature_unit
577 type(kim_time_unit_type),
intent(in) :: time_unit
578 integer(c_int),
intent(out) :: ierr
582 ierr = set_units(
model_create, length_unit, energy_unit, &
583 charge_unit, temperature_unit, time_unit)
591 recursive subroutine kim_model_create_convert_unit( &
592 from_length_unit, from_energy_unit, &
593 from_charge_unit, from_temperature_unit, from_time_unit, &
594 to_length_unit, to_energy_unit, to_charge_unit, to_temperature_unit, &
595 to_time_unit, length_exponent, energy_exponent, charge_exponent, &
596 temperature_exponent, time_exponent, conversion_factor, ierr)
604 integer(c_int) recursive function convert_unit( &
605 from_length_unit, from_energy_unit, &
606 from_charge_unit, from_temperature_unit, from_time_unit, &
607 to_length_unit, to_energy_unit, to_charge_unit, to_temperature_unit, &
608 to_time_unit, length_exponent, energy_exponent, charge_exponent, &
609 temperature_exponent, time_exponent, conversion_factor) &
610 bind(c, name="KIM_ModelCreate_ConvertUnit")
611 use,
intrinsic :: iso_c_binding
618 type(kim_length_unit_type),
intent(in),
value :: from_length_unit
619 type(kim_energy_unit_type),
intent(in),
value :: from_energy_unit
620 type(kim_charge_unit_type),
intent(in),
value :: from_charge_unit
621 type(kim_temperature_unit_type),
intent(in),
value :: &
622 from_temperature_unit
623 type(kim_time_unit_type),
intent(in),
value :: from_time_unit
624 type(kim_length_unit_type),
intent(in),
value :: to_length_unit
625 type(kim_energy_unit_type),
intent(in),
value :: to_energy_unit
626 type(kim_charge_unit_type),
intent(in),
value :: to_charge_unit
627 type(kim_temperature_unit_type),
intent(in),
value :: &
629 type(kim_time_unit_type),
intent(in),
value :: to_time_unit
630 real(c_double),
intent(in),
value :: length_exponent
631 real(c_double),
intent(in),
value :: energy_exponent
632 real(c_double),
intent(in),
value :: charge_exponent
633 real(c_double),
intent(in),
value :: temperature_exponent
634 real(c_double),
intent(in),
value :: time_exponent
635 real(c_double),
intent(out) :: conversion_factor
636 end function convert_unit
638 type(kim_length_unit_type),
intent(in) :: from_length_unit
639 type(kim_energy_unit_type),
intent(in) :: from_energy_unit
640 type(kim_charge_unit_type),
intent(in) :: from_charge_unit
641 type(kim_temperature_unit_type),
intent(in) :: from_temperature_unit
642 type(kim_time_unit_type),
intent(in) :: from_time_unit
643 type(kim_length_unit_type),
intent(in) :: to_length_unit
644 type(kim_energy_unit_type),
intent(in) :: to_energy_unit
645 type(kim_charge_unit_type),
intent(in) :: to_charge_unit
646 type(kim_temperature_unit_type),
intent(in) :: to_temperature_unit
647 type(kim_time_unit_type),
intent(in) :: to_time_unit
648 real(c_double),
intent(in) :: length_exponent
649 real(c_double),
intent(in) :: energy_exponent
650 real(c_double),
intent(in) :: charge_exponent
651 real(c_double),
intent(in) :: temperature_exponent
652 real(c_double),
intent(in) :: time_exponent
653 real(c_double),
intent(out) :: conversion_factor
654 integer(c_int),
intent(out) :: ierr
656 ierr = convert_unit(from_length_unit, from_energy_unit, from_charge_unit, &
657 from_temperature_unit, from_time_unit, to_length_unit, &
658 to_energy_unit, to_charge_unit, to_temperature_unit, &
659 to_time_unit, length_exponent, energy_exponent, &
660 charge_exponent, temperature_exponent, time_exponent, &
669 recursive subroutine kim_model_create_log_entry(model_create_handle, &
670 log_verbosity, message)
672 use kim_interoperable_types_module,
only: kim_model_create_type
675 recursive subroutine log_entry(model_create, log_verbosity, message, &
676 line_number, file_name) &
677 bind(c, name="KIM_ModelCreate_LogEntry")
678 use,
intrinsic :: iso_c_binding
680 use kim_interoperable_types_module,
only: kim_model_create_type
684 character(c_char),
intent(in) :: message(*)
685 integer(c_int),
intent(in),
value :: line_number
686 character(c_char),
intent(in) :: file_name(*)
687 end subroutine log_entry
690 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
691 character(len=*, kind=c_char),
intent(in) :: message
695 call log_entry(
model_create, log_verbosity, trim(message)//c_null_char, &
704 recursive subroutine kim_model_create_to_string(model_create_handle, string)
705 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
706 use kim_interoperable_types_module,
only: kim_model_create_type
709 type(c_ptr)
recursive function model_create_string(
model_create) &
710 bind(c, name="KIM_ModelCreate_ToString")
711 use,
intrinsic :: iso_c_binding
712 use kim_interoperable_types_module,
only: kim_model_create_type
715 end function model_create_string
718 character(len=*, kind=c_char),
intent(out) :: string
725 call kim_convert_c_char_ptr_to_string(p, string)
int model_create(KIM_ModelCreate *const modelCreate, KIM_LengthUnit const requestedLengthUnit, KIM_EnergyUnit const requestedEnergyUnit, KIM_ChargeUnit const requestedChargeUnit, KIM_TemperatureUnit const requestedTemperatureUnit, KIM_TimeUnit const requestedTimeUnit)
Write a log entry into the log file.