36 use,
intrinsic :: iso_c_binding
78 type,
bind(c) :: kim_model_handle_type
79 type(c_ptr) :: p = c_null_ptr
91 interface operator(.eq.)
92 module procedure kim_model_handle_equal
93 end interface operator(.eq.)
98 interface operator(.ne.)
99 module procedure kim_model_handle_not_equal
100 end interface operator(.ne.)
108 module procedure kim_model_is_routine_present
311 logical recursive function kim_model_handle_equal(lhs, rhs)
313 type(kim_model_handle_type),
intent(in) :: lhs
314 type(kim_model_handle_type),
intent(in) :: rhs
316 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p)))
then
317 kim_model_handle_equal = .true.
319 kim_model_handle_equal = c_associated(lhs%p, rhs%p)
321 end function kim_model_handle_equal
326 logical recursive function kim_model_handle_not_equal(lhs, rhs)
328 type(kim_model_handle_type),
intent(in) :: lhs
329 type(kim_model_handle_type),
intent(in) :: rhs
331 kim_model_handle_not_equal = .not. (lhs == rhs)
332 end function kim_model_handle_not_equal
392 numbering, requested_length_unit, requested_energy_unit, &
393 requested_charge_unit, requested_temperature_unit, requested_time_unit, &
394 model_name, requested_units_accepted, model_handle, ierr)
397 kim_energy_unit_type, &
398 kim_charge_unit_type, &
399 kim_temperature_unit_type, &
403 integer(c_int) recursive function create( &
404 numbering, requested_length_unit, requested_energy_unit, &
405 requested_charge_unit, requested_temperature_unit, &
406 requested_time_unit, model_name, requested_units_accepted, model) &
407 bind(c, name="KIM_Model_Create")
408 use,
intrinsic :: iso_c_binding
411 kim_energy_unit_type, &
412 kim_charge_unit_type, &
413 kim_temperature_unit_type, &
417 type(kim_length_unit_type),
intent(in),
value :: requested_length_unit
418 type(kim_energy_unit_type),
intent(in),
value :: requested_energy_unit
419 type(kim_charge_unit_type),
intent(in),
value :: requested_charge_unit
420 type(kim_temperature_unit_type),
intent(in),
value :: &
421 requested_temperature_unit
422 type(kim_time_unit_type),
intent(in),
value :: requested_time_unit
423 character(c_char),
intent(in) :: model_name(*)
424 integer(c_int),
intent(out) :: requested_units_accepted
425 type(c_ptr),
intent(out) :: model
428 type(kim_numbering_type),
intent(in) :: numbering
429 type(kim_length_unit_type),
intent(in) :: requested_length_unit
430 type(kim_energy_unit_type),
intent(in) :: requested_energy_unit
431 type(kim_charge_unit_type),
intent(in) :: requested_charge_unit
432 type(kim_temperature_unit_type),
intent(in) :: &
433 requested_temperature_unit
434 type(kim_time_unit_type),
intent(in) :: requested_time_unit
435 character(len=*, kind=c_char),
intent(in) :: model_name
436 integer(c_int),
intent(out) :: requested_units_accepted
438 integer(c_int),
intent(out) :: ierr
440 type(c_ptr) :: pmodel
442 ierr = create(numbering, requested_length_unit, requested_energy_unit, &
443 requested_charge_unit, requested_temperature_unit, &
444 requested_time_unit, trim(model_name)//c_null_char, &
445 requested_units_accepted, pmodel)
446 model_handle%p = pmodel
473 recursive subroutine destroy(model)
bind(c, name="KIM_Model_Destroy")
474 use,
intrinsic :: iso_c_binding
476 type(c_ptr),
intent(inout) :: model
477 end subroutine destroy
481 type(c_ptr) :: pmodel
482 pmodel = model_handle%p
484 model_handle%p = c_null_ptr
492 recursive subroutine kim_model_is_routine_present( &
493 model_handle, model_routine_name, present, required, ierr)
494 use kim_interoperable_types_module,
only: kim_model_type
498 integer(c_int) recursive function is_routine_present( &
499 model, model_routine_name, present, required) &
500 bind(c, name="KIM_Model_IsRoutinePresent")
501 use,
intrinsic :: iso_c_binding
502 use kim_interoperable_types_module,
only: kim_model_type
505 type(kim_model_type),
intent(in) :: model
506 type(kim_model_routine_name_type),
intent(in),
value &
507 :: model_routine_name
508 integer(c_int),
intent(out) :: present
509 integer(c_int),
intent(out) :: required
512 type(kim_model_handle_type),
intent(in) :: model_handle
513 type(kim_model_routine_name_type),
intent(in) :: model_routine_name
514 integer(c_int),
intent(out) :: present
515 integer(c_int),
intent(out) :: required
516 integer(c_int),
intent(out) :: ierr
517 type(kim_model_type),
pointer :: model
519 call c_f_pointer(model_handle%p, model)
521 end subroutine kim_model_is_routine_present
529 model_handle, influence_distance)
530 use kim_interoperable_types_module,
only: kim_model_type
534 bind(c, name="KIM_Model_GetInfluenceDistance")
535 use,
intrinsic :: iso_c_binding
536 use kim_interoperable_types_module,
only: kim_model_type
538 type(kim_model_type),
intent(in) :: model
539 real(c_double),
intent(out) :: influence_distance
542 type(kim_model_handle_type),
intent(in) :: model_handle
543 real(c_double),
intent(out) :: influence_distance
544 type(kim_model_type),
pointer :: model
546 call c_f_pointer(model_handle%p, model)
556 model_handle, number_of_neighbor_lists)
557 use kim_interoperable_types_module,
only: kim_model_type
561 model, number_of_neighbor_lists, cutoffs_ptr, &
562 model_will_not_request_neighbors_of_noncontributing__ptr) &
563 bind(c, name="KIM_Model_GetNeighborListPointers")
564 use,
intrinsic :: iso_c_binding
565 use kim_interoperable_types_module,
only: kim_model_type
567 type(kim_model_type),
intent(in) :: model
568 integer(c_int),
intent(out) :: number_of_neighbor_lists
569 type(c_ptr),
intent(out) :: cutoffs_ptr
570 type(c_ptr),
intent(out) :: &
571 model_will_not_request_neighbors_of_noncontributing__ptr
574 type(kim_model_handle_type),
intent(in) :: model_handle
575 integer(c_int),
intent(out) :: number_of_neighbor_lists
576 type(kim_model_type),
pointer :: model
578 type(c_ptr) cutoffs_ptr, hint_ptr
580 call c_f_pointer(model_handle%p, model)
582 cutoffs_ptr, hint_ptr)
591 model_handle, cutoffs, &
592 model_will_not_request_neighbors_of_noncontributing_particles, ierr)
593 use kim_interoperable_types_module,
only: kim_model_type
597 model, number_of_neighbor_lists, cutoffs_ptr, &
598 model_will_not_request_neighbors_of_noncontributing__ptr) &
599 bind(c, name="KIM_Model_GetNeighborListPointers")
600 use,
intrinsic :: iso_c_binding
601 use kim_interoperable_types_module,
only: kim_model_type
603 type(kim_model_type),
intent(in) :: model
604 integer(c_int),
intent(out) :: number_of_neighbor_lists
605 type(c_ptr),
intent(out) :: cutoffs_ptr
606 type(c_ptr),
intent(out) :: &
607 model_will_not_request_neighbors_of_noncontributing__ptr
611 real(c_double),
intent(out) :: cutoffs(:)
612 integer(c_int),
intent(out) :: &
613 model_will_not_request_neighbors_of_noncontributing_particles(:)
614 integer(c_int),
intent(out) :: ierr
615 type(kim_model_type),
pointer :: model
617 integer(c_int) number_of_neighbor_lists
618 real(c_double),
pointer :: cutoffs_fpointer(:)
619 integer(c_int),
pointer :: &
620 model_will_not_request_neighbors_of_noncontributing__fpointer(:)
621 type(c_ptr) cutoffs_ptr
622 type(c_ptr) model_will_not_request_neighbors_of_noncontributing__ptr
624 call c_f_pointer(model_handle%p, model)
626 model, number_of_neighbor_lists, cutoffs_ptr, &
627 model_will_not_request_neighbors_of_noncontributing__ptr)
628 if (c_associated(cutoffs_ptr))
then
629 call c_f_pointer(cutoffs_ptr, cutoffs_fpointer, &
630 [number_of_neighbor_lists])
632 nullify (cutoffs_fpointer)
634 if (
size(cutoffs) < number_of_neighbor_lists)
then
638 cutoffs = cutoffs_fpointer(1:number_of_neighbor_lists)
642 model_will_not_request_neighbors_of_noncontributing__ptr))
then
644 model_will_not_request_neighbors_of_noncontributing__ptr, &
645 model_will_not_request_neighbors_of_noncontributing__fpointer, &
646 [number_of_neighbor_lists])
649 model_will_not_request_neighbors_of_noncontributing__fpointer)
652 model_will_not_request_neighbors_of_noncontributing_particles) &
653 < number_of_neighbor_lists)
then
657 model_will_not_request_neighbors_of_noncontributing_particles = &
658 model_will_not_request_neighbors_of_noncontributing__fpointer( &
659 1:number_of_neighbor_lists)
669 model_handle, length_unit, energy_unit, charge_unit, temperature_unit, &
672 kim_energy_unit_type, &
673 kim_charge_unit_type, &
674 kim_temperature_unit_type, &
676 use kim_interoperable_types_module,
only: kim_model_type
680 model, length_unit, energy_unit, charge_unit, temperature_unit, &
682 bind(c, name="KIM_Model_GetUnits")
683 use,
intrinsic :: iso_c_binding
685 kim_energy_unit_type, &
686 kim_charge_unit_type, &
687 kim_temperature_unit_type, &
689 use kim_interoperable_types_module,
only: kim_model_type
690 type(kim_model_type),
intent(in) :: model
691 type(kim_length_unit_type),
intent(out) :: length_unit
692 type(kim_energy_unit_type),
intent(out) :: energy_unit
693 type(kim_charge_unit_type),
intent(out) :: charge_unit
694 type(kim_temperature_unit_type),
intent(out) :: temperature_unit
695 type(kim_time_unit_type),
intent(out) :: time_unit
698 type(kim_model_handle_type),
intent(in) :: model_handle
699 type(kim_length_unit_type),
intent(out) :: length_unit
700 type(kim_energy_unit_type),
intent(out) :: energy_unit
701 type(kim_charge_unit_type),
intent(out) :: charge_unit
702 type(kim_temperature_unit_type),
intent(out) :: temperature_unit
703 type(kim_time_unit_type),
intent(out) :: time_unit
704 type(kim_model_type),
pointer :: model
706 call c_f_pointer(model_handle%p, model)
707 call get_units(model, length_unit, energy_unit, charge_unit, &
708 temperature_unit, time_unit)
738 model_handle, compute_arguments_handle, ierr)
741 use kim_interoperable_types_module,
only: kim_model_type
744 integer(c_int) recursive function compute_arguments_create( &
745 model, compute_arguments) &
746 bind(c, name="KIM_Model_ComputeArgumentsCreate")
747 use,
intrinsic :: iso_c_binding
748 use kim_interoperable_types_module,
only: kim_model_type
750 type(kim_model_type),
intent(in) :: model
751 type(c_ptr),
intent(out) :: compute_arguments
754 type(kim_model_handle_type),
intent(in) :: model_handle
755 type(kim_compute_arguments_handle_type),
intent(out) :: &
756 compute_arguments_handle
757 integer(c_int),
intent(out) :: ierr
758 type(kim_model_type),
pointer :: model
759 type(c_ptr) :: pcompute_arguments
761 call c_f_pointer(model_handle%p, model)
765 compute_arguments_handle%p = pcompute_arguments
797 model_handle, compute_arguments_handle, ierr)
799 use kim_interoperable_types_module,
only: kim_model_type
802 integer(c_int) recursive function compute_arguments_destroy( &
803 model, compute_arguments) &
804 bind(c, name="KIM_Model_ComputeArgumentsDestroy")
805 use,
intrinsic :: iso_c_binding
806 use kim_interoperable_types_module,
only: kim_model_type
808 type(kim_model_type),
intent(in) :: model
809 type(c_ptr),
intent(inout) :: compute_arguments
812 type(kim_model_handle_type),
intent(in) :: model_handle
813 type(kim_compute_arguments_handle_type),
intent(inout) :: &
814 compute_arguments_handle
815 integer(c_int),
intent(out) :: ierr
816 type(kim_model_type),
pointer :: model
817 type(c_ptr) pcompute_arguments
819 call c_f_pointer(model_handle%p, model)
820 pcompute_arguments = compute_arguments_handle%p
823 compute_arguments_handle%p = c_null_ptr
853 model_handle, compute_arguments_handle, ierr)
855 use kim_interoperable_types_module,
only: kim_compute_arguments_type, &
859 integer(c_int) recursive function compute(model, compute_arguments) &
860 bind(c, name="KIM_Model_Compute")
861 use,
intrinsic :: iso_c_binding
862 use kim_interoperable_types_module,
only: kim_compute_arguments_type
863 use kim_interoperable_types_module,
only: kim_model_type
865 type(kim_model_type),
intent(in) :: model
866 type(kim_compute_arguments_type),
intent(in) :: compute_arguments
869 type(kim_model_handle_type),
intent(in) :: model_handle
870 type(kim_compute_arguments_handle_type),
intent(in) :: &
871 compute_arguments_handle
872 integer(c_int),
intent(out) :: ierr
873 type(kim_model_type),
pointer :: model
874 type(kim_compute_arguments_type),
pointer :: compute_arguments
876 call c_f_pointer(model_handle%p, model)
877 call c_f_pointer(compute_arguments_handle%p, compute_arguments)
878 ierr =
compute(model, compute_arguments)
907 model_handle, extension_id, extension_structure, ierr)
908 use kim_interoperable_types_module,
only: kim_model_type
911 integer(c_int) recursive function extension( &
912 model, extension_id, extension_structure) &
913 bind(c, name="KIM_Model_Extension")
914 use,
intrinsic :: iso_c_binding
915 use kim_interoperable_types_module,
only: kim_model_type
917 type(kim_model_type),
intent(in) :: model
918 character(c_char),
intent(in) :: extension_id(*)
919 type(c_ptr),
intent(in),
value :: extension_structure
922 type(kim_model_handle_type),
intent(in) :: model_handle
923 character(len=*, kind=c_char),
intent(in) :: extension_id
924 type(c_ptr),
intent(in) :: extension_structure
925 integer(c_int),
intent(out) :: ierr
926 type(kim_model_type),
pointer :: model
928 call c_f_pointer(model_handle%p, model)
929 ierr =
extension(model, trim(extension_id)//c_null_char, &
955 use kim_interoperable_types_module,
only: kim_model_type
958 integer(c_int) recursive function clear_then_refresh(model) &
959 bind(c, name="KIM_Model_ClearThenRefresh")
960 use,
intrinsic :: iso_c_binding
961 use kim_interoperable_types_module,
only: kim_model_type
963 type(kim_model_type),
intent(in) :: model
966 type(kim_model_handle_type),
intent(in) :: model_handle
967 integer(c_int),
intent(out) :: ierr
968 type(kim_model_type),
pointer :: model
970 call c_f_pointer(model_handle%p, model)
1000 model_handle, path, model_name, ierr)
1001 use kim_interoperable_types_module,
only: kim_model_type
1004 integer(c_int) recursive function write_parameterized_model( &
1005 model, path, model_name) &
1006 bind(c, name="KIM_Model_WriteParameterizedModel")
1007 use,
intrinsic :: iso_c_binding
1008 use kim_interoperable_types_module,
only: kim_model_type
1010 type(kim_model_type),
intent(in) :: model
1011 character(c_char),
intent(in) :: path(*)
1012 character(c_char),
intent(in) :: model_name(*)
1015 type(kim_model_handle_type),
intent(in) :: model_handle
1016 character(len=*, kind=c_char),
intent(in) :: path
1017 character(len=*, kind=c_char),
intent(in) :: model_name
1018 integer(c_int),
intent(out) :: ierr
1019 type(kim_model_type),
pointer :: model
1021 call c_f_pointer(model_handle%p, model)
1023 trim(model_name)//c_null_char)
1033 model_handle, species_name, species_is_supported, code, ierr)
1035 use kim_interoperable_types_module,
only: kim_model_type
1038 integer(c_int) recursive function get_species_support_and_code( &
1039 model, species_name, species_is_supported, code) &
1040 bind(c, name="KIM_Model_GetSpeciesSupportAndCode")
1041 use,
intrinsic :: iso_c_binding
1043 use kim_interoperable_types_module,
only: kim_model_type
1045 type(kim_model_type),
intent(in) :: model
1046 type(kim_species_name_type),
intent(in),
value :: species_name
1047 integer(c_int),
intent(out) :: species_is_supported
1048 integer(c_int),
intent(out) :: code
1051 type(kim_model_handle_type),
intent(in) :: model_handle
1052 type(kim_species_name_type),
intent(in) :: species_name
1053 integer(c_int),
intent(out) :: species_is_supported
1054 integer(c_int),
intent(out) :: code
1055 integer(c_int),
intent(out) :: ierr
1056 type(kim_model_type),
pointer :: model
1058 call c_f_pointer(model_handle%p, model)
1060 species_is_supported, code)
1069 model_handle, number_of_parameters)
1070 use kim_interoperable_types_module,
only: kim_model_type
1074 model, number_of_parameters) &
1075 bind(c, name="KIM_Model_GetNumberOfParameters")
1076 use,
intrinsic :: iso_c_binding
1077 use kim_interoperable_types_module,
only: kim_model_type
1079 type(kim_model_type),
intent(in) :: model
1080 integer(c_int),
intent(out) :: number_of_parameters
1083 type(kim_model_handle_type),
intent(in) :: model_handle
1084 integer(c_int),
intent(out) :: number_of_parameters
1085 type(kim_model_type),
pointer :: model
1087 call c_f_pointer(model_handle%p, model)
1097 model_handle, parameter_index, data_type, extent, name, description, ierr)
1099 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
1100 use kim_interoperable_types_module,
only: kim_model_type
1103 integer(c_int) recursive function get_parameter_metadata( &
1104 model, parameter_index, data_type, extent, name, description) &
1105 bind(c, name="KIM_Model_GetParameterMetadata")
1106 use,
intrinsic :: iso_c_binding
1108 use kim_interoperable_types_module,
only: kim_model_type
1110 type(kim_model_type),
intent(in) :: model
1111 integer(c_int),
intent(in),
value :: parameter_index
1112 type(kim_data_type_type),
intent(out) :: data_type
1113 integer(c_int),
intent(out) :: extent
1114 type(c_ptr),
intent(out) :: name
1115 type(c_ptr),
intent(out) :: description
1118 type(kim_model_handle_type),
intent(in) :: model_handle
1119 integer(c_int),
intent(in) :: parameter_index
1120 type(kim_data_type_type),
intent(out) :: data_type
1121 integer(c_int),
intent(out) :: extent
1122 character(len=*, kind=c_char),
intent(out) :: name
1123 character(len=*, kind=c_char),
intent(out) :: description
1124 integer(c_int),
intent(out) :: ierr
1125 type(kim_model_type),
pointer :: model
1127 type(c_ptr) :: pname, pdesc
1129 call c_f_pointer(model_handle%p, model)
1131 extent, pname, pdesc)
1132 call kim_convert_c_char_ptr_to_string(pname, name)
1133 call kim_convert_c_char_ptr_to_string(pdesc, description)
1142 model_handle, parameter_index, array_index, parameter_value, ierr)
1143 use kim_interoperable_types_module,
only: kim_model_type
1146 integer(c_int) recursive function get_parameter_integer( &
1147 model, parameter_index, array_index, parameter_value) &
1148 bind(c, name="KIM_Model_GetParameterInteger")
1149 use,
intrinsic :: iso_c_binding
1150 use kim_interoperable_types_module,
only: kim_model_type
1152 type(kim_model_type),
intent(in) :: model
1153 integer(c_int),
intent(in),
value :: parameter_index
1154 integer(c_int),
intent(in),
value :: array_index
1155 integer(c_int),
intent(out) :: parameter_value
1158 type(kim_model_handle_type),
intent(in) :: model_handle
1159 integer(c_int),
intent(in) :: parameter_index
1160 integer(c_int),
intent(in) :: array_index
1161 integer(c_int),
intent(out) :: parameter_value
1162 integer(c_int),
intent(out) :: ierr
1163 type(kim_model_type),
pointer :: model
1165 call c_f_pointer(model_handle%p, model)
1176 model_handle, parameter_index, array_index, parameter_value, ierr)
1177 use kim_interoperable_types_module,
only: kim_model_type
1180 integer(c_int) recursive function get_parameter_double( &
1181 model, parameter_index, array_index, parameter_value) &
1182 bind(c, name="KIM_Model_GetParameterDouble")
1183 use,
intrinsic :: iso_c_binding
1184 use kim_interoperable_types_module,
only: kim_model_type
1186 type(kim_model_type),
intent(in) :: model
1187 integer(c_int),
intent(in),
value :: parameter_index
1188 integer(c_int),
intent(in),
value :: array_index
1189 real(c_double),
intent(out) :: parameter_value
1192 type(kim_model_handle_type),
intent(in) :: model_handle
1193 integer(c_int),
intent(in) :: parameter_index
1194 integer(c_int),
intent(in) :: array_index
1195 real(c_double),
intent(out) :: parameter_value
1196 integer(c_int),
intent(out) :: ierr
1197 type(kim_model_type),
pointer :: model
1199 call c_f_pointer(model_handle%p, model)
1210 model_handle, parameter_index, array_index, parameter_value, ierr)
1211 use kim_interoperable_types_module,
only: kim_model_type
1214 integer(c_int) recursive function set_parameter_integer( &
1215 model, parameter_index, array_index, parameter_value) &
1216 bind(c, name="KIM_Model_SetParameterInteger")
1217 use,
intrinsic :: iso_c_binding
1218 use kim_interoperable_types_module,
only: kim_model_type
1220 type(kim_model_type),
intent(in) :: model
1221 integer(c_int),
intent(in),
value :: parameter_index
1222 integer(c_int),
intent(in),
value :: array_index
1223 integer(c_int),
intent(in),
value :: parameter_value
1226 type(kim_model_handle_type),
intent(in) :: model_handle
1227 integer(c_int),
intent(in) :: parameter_index
1228 integer(c_int),
intent(in) :: array_index
1229 integer(c_int),
intent(in) :: parameter_value
1230 integer(c_int),
intent(out) :: ierr
1231 type(kim_model_type),
pointer :: model
1233 call c_f_pointer(model_handle%p, model)
1244 model_handle, parameter_index, array_index, parameter_value, ierr)
1245 use kim_interoperable_types_module,
only: kim_model_type
1248 integer(c_int) recursive function set_parameter_double( &
1249 model, parameter_index, array_index, parameter_value) &
1250 bind(c, name="KIM_Model_SetParameterDouble")
1251 use,
intrinsic :: iso_c_binding
1252 use kim_interoperable_types_module,
only: kim_model_type
1254 type(kim_model_type),
intent(in) :: model
1255 integer(c_int),
intent(in),
value :: parameter_index
1256 integer(c_int),
intent(in),
value :: array_index
1257 real(c_double),
intent(in),
value :: parameter_value
1260 type(kim_model_handle_type),
intent(in) :: model_handle
1261 integer(c_int),
intent(in) :: parameter_index
1262 integer(c_int),
intent(in) :: array_index
1263 real(c_double),
intent(in) :: parameter_value
1264 integer(c_int),
intent(out) :: ierr
1265 type(kim_model_type),
pointer :: model
1267 call c_f_pointer(model_handle%p, model)
1279 use kim_interoperable_types_module,
only: kim_model_type
1283 bind(c, name="KIM_Model_SetSimulatorBufferPointer")
1284 use,
intrinsic :: iso_c_binding
1285 use kim_interoperable_types_module,
only: kim_model_type
1287 type(kim_model_type),
intent(in) :: model
1288 type(c_ptr),
intent(in),
value :: ptr
1292 type(c_ptr),
intent(in) :: ptr
1293 type(kim_model_type),
pointer :: model
1295 call c_f_pointer(model_handle%p, model)
1306 use kim_interoperable_types_module,
only: kim_model_type
1310 bind(c, name="KIM_Model_GetSimulatorBufferPointer")
1311 use,
intrinsic :: iso_c_binding
1312 use kim_interoperable_types_module,
only: kim_model_type
1314 type(kim_model_type),
intent(in) :: model
1315 type(c_ptr),
intent(out) :: ptr
1319 type(c_ptr),
intent(out) :: ptr
1320 type(kim_model_type),
pointer :: model
1322 call c_f_pointer(model_handle%p, model)
1332 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
1333 use kim_interoperable_types_module,
only: kim_model_type
1336 type(c_ptr)
recursive function model_string(model) &
1337 bind(c, name="KIM_Model_ToString")
1338 use,
intrinsic :: iso_c_binding
1339 use kim_interoperable_types_module,
only: kim_model_type
1341 type(kim_model_type),
intent(in) :: model
1344 type(kim_model_handle_type),
intent(in) :: model_handle
1345 character(len=*, kind=c_char),
intent(out) :: string
1346 type(kim_model_type),
pointer :: model
1350 call c_f_pointer(model_handle%p, model)
1352 call kim_convert_c_char_ptr_to_string(p, string)
1361 use kim_interoperable_types_module,
only: kim_model_type
1364 recursive subroutine set_log_id(model, log_id) &
1365 bind(c, name="KIM_Model_SetLogID")
1366 use,
intrinsic :: iso_c_binding
1367 use kim_interoperable_types_module,
only: kim_model_type
1369 type(kim_model_type),
intent(in) :: model
1370 character(c_char),
intent(in) :: log_id(*)
1374 character(len=*, kind=c_char),
intent(in) :: log_id
1375 type(kim_model_type),
pointer :: model
1377 call c_f_pointer(model_handle%p, model)
1378 call set_log_id(model, trim(log_id)//c_null_char)
1388 use kim_interoperable_types_module,
only: kim_model_type
1392 bind(c, name="KIM_Model_PushLogVerbosity")
1393 use,
intrinsic :: iso_c_binding
1395 use kim_interoperable_types_module,
only: kim_model_type
1397 type(kim_model_type),
intent(in) :: model
1402 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
1403 type(kim_model_type),
pointer :: model
1405 call c_f_pointer(model_handle%p, model)
1416 use kim_interoperable_types_module,
only: kim_model_type
1420 bind(c, name="KIM_Model_PopLogVerbosity")
1421 use,
intrinsic :: iso_c_binding
1423 use kim_interoperable_types_module,
only: kim_model_type
1425 type(kim_model_type),
intent(in) :: model
1429 type(kim_model_type),
pointer :: model
1431 call c_f_pointer(model_handle%p, model)
Clear influence distance and neighbor list pointers and refresh Model object after parameter changes.
Create a new ComputeArguments object for the Model object.
Destroy a previously Model::ComputeArgumentsCreate'd object.
Call the Model's MODEL_ROUTINE_NAME::Compute routine.
Call the Model's MODEL_ROUTINE_NAME::Extension routine.
Get the Model's influence distance.
Get Model's neighbor list values.
Get Model's number of neighbor lists.
Get the number of parameter arrays provided by the Model.
Get a parameter value from the Model.
Get the Simulator's buffer pointer from the Model object.
Get the Model's support and code for the requested SpeciesName.
Get the Model's base unit values.
Determine presence and required status of the given ModelRoutineName.
Pop a LogVerbosity from the Model object's Log object verbosity stack.
Push a new LogVerbosity onto the Model object's Log object verbosity stack.
Set the identity of the Log object associated with the Model object.
Set a parameter value for the Model.
Set the Simulator's buffer pointer within the Model object.
Get a string representing the internal state of the Model object.
Call the Model's MODEL_ROUTINE_NAME::WriteParameterizedModel routine.
Provides the primary interface to a KIM API ComputeArguments object and is meant to be used by simula...
An Extensible Enumeration for the DataType's supported by the KIM API.
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.
Provides the primary interface to a KIM API Model object and is meant to be used by simulators.
recursive subroutine kim_model_get_neighbor_list_values(model_handle, cutoffs, model_will_not_request_neighbors_of_noncontributing_particles, ierr)
Get Model's neighbor list values.
recursive subroutine kim_model_get_influence_distance(model_handle, influence_distance)
Get the Model's influence distance.
recursive subroutine kim_model_set_simulator_buffer_pointer(model_handle, ptr)
Set the Simulator's buffer pointer within the Model object.
recursive subroutine kim_model_compute(model_handle, compute_arguments_handle, ierr)
Call the Model's MODEL_ROUTINE_NAME::Compute routine.
recursive subroutine kim_model_push_log_verbosity(model_handle, log_verbosity)
Push a new LogVerbosity onto the Model object's Log object verbosity stack.
recursive subroutine kim_model_clear_then_refresh(model_handle, ierr)
Clear influence distance and neighbor list pointers and refresh Model object after parameter changes.
recursive subroutine kim_model_get_species_support_and_code(model_handle, species_name, species_is_supported, code, ierr)
Get the Model's support and code for the requested SpeciesName.
recursive subroutine, public kim_model_create(numbering, requested_length_unit, requested_energy_unit, requested_charge_unit, requested_temperature_unit, requested_time_unit, model_name, requested_units_accepted, model_handle, ierr)
Create a new KIM API Model object.
recursive subroutine kim_model_get_number_of_neighbor_lists(model_handle, number_of_neighbor_lists)
Get Model's number of neighbor lists.
recursive subroutine kim_model_get_parameter_double(model_handle, parameter_index, array_index, parameter_value, ierr)
Get a parameter value from the Model.
recursive subroutine kim_model_get_parameter_integer(model_handle, parameter_index, array_index, parameter_value, ierr)
Get a parameter value from the Model.
recursive subroutine kim_model_write_parameterized_model(model_handle, path, model_name, ierr)
Call the Model's MODEL_ROUTINE_NAME::WriteParameterizedModel routine.
recursive subroutine kim_model_get_parameter_metadata(model_handle, parameter_index, data_type, extent, name, description, ierr)
Get the metadata associated with one of the Model's parameter arrays.
recursive subroutine kim_model_get_number_of_parameters(model_handle, number_of_parameters)
Get the number of parameter arrays provided by the Model.
recursive subroutine kim_model_compute_arguments_create(model_handle, compute_arguments_handle, ierr)
Create a new ComputeArguments object for the Model object.
recursive subroutine kim_model_to_string(model_handle, string)
Get a string representing the internal state of the Model object.
recursive subroutine, public kim_model_destroy(model_handle)
Destroy a previously Model::Create'd object.
recursive subroutine kim_model_set_parameter_double(model_handle, parameter_index, array_index, parameter_value, ierr)
Set a parameter value for the Model.
recursive subroutine kim_model_set_log_id(model_handle, log_id)
Set the identity of the Log object associated with the Model object.
recursive subroutine kim_model_get_simulator_buffer_pointer(model_handle, ptr)
Get the Simulator's buffer pointer from the Model object.
type(kim_model_handle_type), save, public, protected kim_model_null_handle
NULL handle for use in comparisons.
recursive subroutine kim_model_get_units(model_handle, length_unit, energy_unit, charge_unit, temperature_unit, time_unit)
Get the Model's base unit values.
recursive subroutine kim_model_set_parameter_integer(model_handle, parameter_index, array_index, parameter_value, ierr)
Set a parameter value for the Model.
recursive subroutine kim_model_extension(model_handle, extension_id, extension_structure, ierr)
Call the Model's MODEL_ROUTINE_NAME::Extension routine.
recursive subroutine kim_model_compute_arguments_destroy(model_handle, compute_arguments_handle, ierr)
Destroy a previously Model::ComputeArgumentsCreate'd object.
recursive subroutine kim_model_pop_log_verbosity(model_handle)
Pop a LogVerbosity from the Model object's Log object verbosity stack.
An Extensible Enumeration for the ModelRoutineName's supported by the KIM API.
An Extensible Enumeration for the Numbering's supported by the KIM API.
An Extensible Enumeration for the SpeciesName's supported by the KIM API.
Provides the primary interface to a KIM API ComputeArguments object and is meant to be used by simula...
An Extensible Enumeration for the DataType's supported by the KIM API.
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.
Provides the primary interface to a KIM API Model object and is meant to be used by simulators.
An Extensible Enumeration for the ModelRoutineName's supported by the KIM API.
An Extensible Enumeration for the Numbering's supported by the KIM API.
An Extensible Enumeration for the SpeciesName's supported by the KIM API.