36 use,
intrinsic :: iso_c_binding
69 type,
bind(c) :: kim_model_driver_create_handle_type
70 type(c_ptr) :: p = c_null_ptr
82 interface operator(.eq.)
83 module procedure kim_model_driver_create_handle_equal
84 end interface operator(.eq.)
89 interface operator(.ne.)
90 module procedure kim_model_driver_create_handle_not_equal
91 end interface operator(.ne.)
100 module procedure kim_model_driver_create_get_parameter_file_directory_name
248 logical recursive function kim_model_driver_create_handle_equal(lhs, rhs)
250 type(kim_model_driver_create_handle_type),
intent(in) :: lhs
251 type(kim_model_driver_create_handle_type),
intent(in) :: rhs
253 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p)))
then
254 kim_model_driver_create_handle_equal = .true.
256 kim_model_driver_create_handle_equal = c_associated(lhs%p, rhs%p)
258 end function kim_model_driver_create_handle_equal
263 logical recursive function kim_model_driver_create_handle_not_equal(lhs, rhs)
265 type(kim_model_driver_create_handle_type),
intent(in) :: lhs
266 type(kim_model_driver_create_handle_type),
intent(in) :: rhs
268 kim_model_driver_create_handle_not_equal = .not. (lhs == rhs)
269 end function kim_model_driver_create_handle_not_equal
277 recursive subroutine &
278 kim_model_driver_create_get_parameter_file_directory_name( &
279 model_driver_create_handle, directory_name)
280 use kim_interoperable_types_module,
only: kim_model_driver_create_type
281 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
285 model_driver_create, directory_name) &
286 bind(c, name="KIM_ModelDriverCreate_GetParameterFileDirectoryName")
287 use,
intrinsic :: iso_c_binding
288 use kim_interoperable_types_module,
only: kim_model_driver_create_type
290 type(kim_model_driver_create_type),
intent(in) :: model_driver_create
291 type(c_ptr),
intent(out) :: directory_name
294 type(kim_model_driver_create_handle_type),
intent(in) :: &
295 model_driver_create_handle
296 character(len=*, kind=c_char),
intent(out) :: directory_name
297 type(kim_model_driver_create_type),
pointer :: model_driver_create
299 type(c_ptr) pdirectory_name
303 call kim_convert_c_char_ptr_to_string(pdirectory_name, directory_name)
304 end subroutine kim_model_driver_create_get_parameter_file_directory_name
313 model_driver_create_handle, number_of_parameter_files)
314 use kim_interoperable_types_module,
only: kim_model_driver_create_type
318 model_driver_create, number_of_parameter_files) &
319 bind(c, name="KIM_ModelDriverCreate_GetNumberOfParameterFiles")
320 use,
intrinsic :: iso_c_binding
321 use kim_interoperable_types_module,
only: kim_model_driver_create_type
323 type(kim_model_driver_create_type),
intent(in) &
324 :: model_driver_create
325 integer(c_int),
intent(out) :: number_of_parameter_files
328 type(kim_model_driver_create_handle_type),
intent(in) &
329 :: model_driver_create_handle
330 integer(c_int),
intent(out) :: number_of_parameter_files
331 type(kim_model_driver_create_type),
pointer :: model_driver_create
333 call c_f_pointer(model_driver_create_handle%p, model_driver_create)
335 number_of_parameter_files)
348 model_driver_create_handle, index, parameter_file_name, ierr)
349 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
350 use kim_interoperable_types_module,
only: kim_model_driver_create_type
353 integer(c_int) recursive function get_parameter_file_name( &
354 model_driver_create, index, parameter_file_name) &
355 bind(c, name="KIM_ModelDriverCreate_GetParameterFileName")
356 use,
intrinsic :: iso_c_binding
357 use kim_interoperable_types_module,
only: kim_model_driver_create_type
359 type(kim_model_driver_create_type),
intent(in) &
360 :: model_driver_create
361 integer(c_int),
intent(in),
value :: index
362 type(c_ptr),
intent(out) :: parameter_file_name
365 type(kim_model_driver_create_handle_type),
intent(in) &
366 :: model_driver_create_handle
367 integer(c_int),
intent(in) :: index
368 character(len=*, kind=c_char),
intent(out) :: parameter_file_name
369 integer(c_int),
intent(out) :: ierr
370 type(kim_model_driver_create_type),
pointer :: model_driver_create
377 call kim_convert_c_char_ptr_to_string(p, parameter_file_name)
387 model_driver_create_handle, index, parameter_file_basename, ierr)
388 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
389 use kim_interoperable_types_module,
only: kim_model_driver_create_type
392 integer(c_int) recursive function get_parameter_file_basename( &
393 model_driver_create, index, parameter_file_basename) &
394 bind(c, name="KIM_ModelDriverCreate_GetParameterFileBasename")
395 use,
intrinsic :: iso_c_binding
396 use kim_interoperable_types_module,
only: kim_model_driver_create_type
398 type(kim_model_driver_create_type),
intent(in) &
399 :: model_driver_create
400 integer(c_int),
intent(in),
value :: index
401 type(c_ptr),
intent(out) :: parameter_file_basename
404 type(kim_model_driver_create_handle_type),
intent(in) &
405 :: model_driver_create_handle
406 integer(c_int),
intent(in) :: index
407 character(len=*, kind=c_char),
intent(out) :: parameter_file_basename
408 integer(c_int),
intent(out) :: ierr
409 type(kim_model_driver_create_type),
pointer :: model_driver_create
416 call kim_convert_c_char_ptr_to_string(p, parameter_file_basename)
426 model_driver_create_handle, numbering, ierr)
428 use kim_interoperable_types_module,
only: kim_model_driver_create_type
433 bind(c, name="KIM_ModelDriverCreate_SetModelNumbering")
434 use,
intrinsic :: iso_c_binding
436 use kim_interoperable_types_module,
only: kim_model_driver_create_type
438 type(kim_model_driver_create_type),
intent(in) &
444 :: model_driver_create_handle
445 type(kim_numbering_type),
intent(in) :: numbering
446 integer(c_int),
intent(out) :: ierr
460 model_driver_create_handle, influence_distance)
461 use kim_interoperable_types_module,
only: kim_model_driver_create_type
465 influence_distance) &
466 bind(c, name="KIM_ModelDriverCreate_SetInfluenceDistancePointer")
467 use,
intrinsic :: iso_c_binding
468 use kim_interoperable_types_module,
only: kim_model_driver_create_type
470 type(kim_model_driver_create_type),
intent(in) &
472 type(c_ptr),
intent(in),
value :: influence_distance
476 :: model_driver_create_handle
477 real(c_double),
intent(in),
target :: influence_distance
482 c_loc(influence_distance))
492 model_driver_create_handle, number_of_neighbor_lists, cutoffs, &
493 model_will_not_request_neighbors_of_noncontributing_particles)
494 use kim_interoperable_types_module,
only: kim_model_driver_create_type
498 model_driver_create, number_of_neighbor_lists, cutoffs_ptr, &
499 model_will_not_request_neighbors_of_noncontributing_particles) &
500 bind(c, name="KIM_ModelDriverCreate_SetNeighborListPointers")
501 use,
intrinsic :: iso_c_binding
502 use kim_interoperable_types_module,
only: kim_model_driver_create_type
504 type(kim_model_driver_create_type),
intent(in) &
506 integer(c_int),
intent(in),
value :: number_of_neighbor_lists
507 type(c_ptr),
intent(in),
value :: cutoffs_ptr
508 type(c_ptr),
intent(in),
value :: &
509 model_will_not_request_neighbors_of_noncontributing_particles
513 :: model_driver_create_handle
514 integer(c_int),
intent(in) :: number_of_neighbor_lists
515 real(c_double),
intent(in),
target :: cutoffs(number_of_neighbor_lists)
516 integer(c_int),
intent(in),
target :: &
517 model_will_not_request_neighbors_of_noncontributing_particles( &
518 number_of_neighbor_lists)
525 c_loc(model_will_not_request_neighbors_of_noncontributing_particles))
535 model_driver_create_handle, model_routine_name, language_name, required, &
539 use kim_interoperable_types_module,
only: kim_model_driver_create_type
544 fptr)
bind(c, name="KIM_ModelDriverCreate_SetRoutinePointer")
545 use,
intrinsic :: iso_c_binding
548 use kim_interoperable_types_module,
only: kim_model_driver_create_type
550 type(kim_model_driver_create_type),
intent(in) &
553 :: model_routine_name
555 integer(c_int),
intent(in),
value :: required
556 type(c_funptr),
intent(in),
value :: fptr
560 :: model_driver_create_handle
561 type(kim_model_routine_name_type),
intent(in) :: model_routine_name
562 type(kim_language_name_type),
intent(in) :: language_name
563 integer(c_int),
intent(in) :: required
564 type(c_funptr),
intent(in),
value :: fptr
565 integer(c_int),
intent(out) :: ierr
570 language_name, required, fptr)
580 model_driver_create_handle, species_name, code, ierr)
582 use kim_interoperable_types_module,
only: kim_model_driver_create_type
586 species_name, code) &
587 bind(c, name="KIM_ModelDriverCreate_SetSpeciesCode")
588 use,
intrinsic :: iso_c_binding
590 use kim_interoperable_types_module,
only: kim_model_driver_create_type
592 type(kim_model_driver_create_type),
intent(in) &
595 integer(c_int),
intent(in),
value :: code
599 :: model_driver_create_handle
600 type(kim_species_name_type),
intent(in) :: species_name
601 integer(c_int),
intent(in) :: code
602 integer(c_int),
intent(out) :: ierr
616 model_driver_create_handle, int1, name, description, ierr)
617 use kim_interoperable_types_module,
only: kim_model_driver_create_type
620 :: model_driver_create_handle
621 integer(c_int),
intent(in),
target :: int1(:)
622 character(len=*, kind=c_char),
intent(in) :: name
623 character(len=*, kind=c_char),
intent(in) :: description
624 integer(c_int),
intent(out) :: ierr
629 name, description, ierr)
634 name, description, ierr)
635 use kim_interoperable_types_module,
only: kim_model_driver_create_type
640 bind(c, name="KIM_ModelDriverCreate_SetParameterPointerInteger")
641 use,
intrinsic :: iso_c_binding
642 use kim_interoperable_types_module,
only: &
643 kim_model_driver_create_type
645 type(kim_model_driver_create_type),
intent(in) &
647 integer(c_int),
intent(in),
value :: extent
648 type(c_ptr),
intent(in),
value :: ptr
649 character(c_char),
intent(in) :: name(*)
650 character(c_char),
intent(in) :: description(*)
653 type(kim_model_driver_create_type),
intent(in) &
655 integer(c_int),
intent(in) :: extent
656 integer(c_int),
intent(in),
target :: int1(extent)
657 character(len=*, kind=c_char),
intent(in) :: name
658 character(len=*, kind=c_char),
intent(in) :: description
659 integer(c_int),
intent(out) :: ierr
664 trim(name)//c_null_char, &
665 trim(description)//c_null_char)
676 model_driver_create_handle, double1, name, description, ierr)
677 use kim_interoperable_types_module,
only: kim_model_driver_create_type
680 :: model_driver_create_handle
681 real(c_double),
intent(in),
target :: double1(:)
682 character(len=*, kind=c_char),
intent(in) :: name
683 character(len=*, kind=c_char),
intent(in) :: description
684 integer(c_int),
intent(out) :: ierr
689 double1, name, description, ierr)
694 name, description, ierr)
695 use kim_interoperable_types_module,
only: kim_model_driver_create_type
698 integer(c_int) recursive function set_parameter_pointer_double( &
700 bind(c, name="KIM_ModelDriverCreate_SetParameterPointerDouble")
701 use,
intrinsic :: iso_c_binding
702 use kim_interoperable_types_module,
only: &
703 kim_model_driver_create_type
705 type(kim_model_driver_create_type),
intent(in) &
707 integer(c_int),
intent(in),
value :: extent
708 type(c_ptr),
intent(in),
value :: ptr
709 character(c_char),
intent(in) :: name(*)
710 character(c_char),
intent(in) :: description(*)
711 end function set_parameter_pointer_double
713 type(kim_model_driver_create_type),
intent(in) &
715 integer(c_int),
intent(in) :: extent
716 real(c_double),
intent(in),
target :: double1(extent)
717 character(len=*, kind=c_char),
intent(in) :: name
718 character(len=*, kind=c_char),
intent(in) :: description
719 integer(c_int),
intent(out) :: ierr
724 trim(name)//c_null_char, &
725 trim(description)//c_null_char)
736 model_driver_create_handle, ptr)
737 use kim_interoperable_types_module,
only: kim_model_driver_create_type
741 bind(c, name="KIM_ModelDriverCreate_SetModelBufferPointer")
742 use,
intrinsic :: iso_c_binding
743 use kim_interoperable_types_module,
only: kim_model_driver_create_type
745 type(kim_model_driver_create_type),
intent(in) &
747 type(c_ptr),
intent(in),
value :: ptr
751 :: model_driver_create_handle
752 type(c_ptr),
intent(in) :: ptr
765 model_driver_create_handle, length_unit, energy_unit, charge_unit, &
766 temperature_unit, time_unit, ierr)
768 kim_energy_unit_type, &
769 kim_charge_unit_type, &
770 kim_temperature_unit_type, &
772 use kim_interoperable_types_module,
only: kim_model_driver_create_type
775 integer(c_int) recursive function
set_units( &
777 temperature_unit, time_unit) &
778 bind(c, name="KIM_ModelDriverCreate_SetUnits")
779 use,
intrinsic :: iso_c_binding
781 kim_energy_unit_type, &
782 kim_charge_unit_type, &
783 kim_temperature_unit_type, &
785 use kim_interoperable_types_module,
only: kim_model_driver_create_type
787 type(kim_model_driver_create_type),
intent(in) &
789 type(kim_length_unit_type),
intent(in),
value :: length_unit
790 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
791 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
792 type(kim_temperature_unit_type),
intent(in),
value :: temperature_unit
793 type(kim_time_unit_type),
intent(in),
value :: time_unit
797 :: model_driver_create_handle
798 type(kim_length_unit_type),
intent(in) :: length_unit
799 type(kim_energy_unit_type),
intent(in) :: energy_unit
800 type(kim_charge_unit_type),
intent(in) :: charge_unit
801 type(kim_temperature_unit_type),
intent(in) :: temperature_unit
802 type(kim_time_unit_type),
intent(in) :: time_unit
803 integer(c_int),
intent(out) :: ierr
808 charge_unit, temperature_unit, time_unit)
817 from_length_unit, from_energy_unit, &
818 from_charge_unit, from_temperature_unit, from_time_unit, &
819 to_length_unit, to_energy_unit, to_charge_unit, to_temperature_unit, &
820 to_time_unit, length_exponent, energy_exponent, charge_exponent, &
821 temperature_exponent, time_exponent, conversion_factor, ierr)
830 from_length_unit, from_energy_unit, &
831 from_charge_unit, from_temperature_unit, from_time_unit, &
832 to_length_unit, to_energy_unit, to_charge_unit, to_temperature_unit, &
833 to_time_unit, length_exponent, energy_exponent, charge_exponent, &
834 temperature_exponent, time_exponent, conversion_factor) &
835 bind(c, name="KIM_ModelDriverCreate_ConvertUnit")
836 use,
intrinsic :: iso_c_binding
843 type(kim_length_unit_type),
intent(in),
value :: from_length_unit
844 type(kim_energy_unit_type),
intent(in),
value :: from_energy_unit
845 type(kim_charge_unit_type),
intent(in),
value :: from_charge_unit
846 type(kim_temperature_unit_type),
intent(in),
value :: &
847 from_temperature_unit
848 type(kim_time_unit_type),
intent(in),
value :: from_time_unit
849 type(kim_length_unit_type),
intent(in),
value :: to_length_unit
850 type(kim_energy_unit_type),
intent(in),
value :: to_energy_unit
851 type(kim_charge_unit_type),
intent(in),
value :: to_charge_unit
852 type(kim_temperature_unit_type),
intent(in),
value :: &
854 type(kim_time_unit_type),
intent(in),
value :: to_time_unit
855 real(c_double),
intent(in),
value :: length_exponent
856 real(c_double),
intent(in),
value :: energy_exponent
857 real(c_double),
intent(in),
value :: charge_exponent
858 real(c_double),
intent(in),
value :: temperature_exponent
859 real(c_double),
intent(in),
value :: time_exponent
860 real(c_double),
intent(out) :: conversion_factor
863 type(kim_length_unit_type),
intent(in) :: from_length_unit
864 type(kim_energy_unit_type),
intent(in) :: from_energy_unit
865 type(kim_charge_unit_type),
intent(in) :: from_charge_unit
866 type(kim_temperature_unit_type),
intent(in) :: from_temperature_unit
867 type(kim_time_unit_type),
intent(in) :: from_time_unit
868 type(kim_length_unit_type),
intent(in) :: to_length_unit
869 type(kim_energy_unit_type),
intent(in) :: to_energy_unit
870 type(kim_charge_unit_type),
intent(in) :: to_charge_unit
871 type(kim_temperature_unit_type),
intent(in) :: to_temperature_unit
872 type(kim_time_unit_type),
intent(in) :: to_time_unit
873 real(c_double),
intent(in) :: length_exponent
874 real(c_double),
intent(in) :: energy_exponent
875 real(c_double),
intent(in) :: charge_exponent
876 real(c_double),
intent(in) :: temperature_exponent
877 real(c_double),
intent(in) :: time_exponent
878 real(c_double),
intent(out) :: conversion_factor
879 integer(c_int),
intent(out) :: ierr
881 ierr =
convert_unit(from_length_unit, from_energy_unit, from_charge_unit, &
882 from_temperature_unit, from_time_unit, to_length_unit, &
883 to_energy_unit, to_charge_unit, to_temperature_unit, &
884 to_time_unit, length_exponent, energy_exponent, &
885 charge_exponent, temperature_exponent, time_exponent, &
895 model_driver_create_handle, log_verbosity, message)
897 use kim_interoperable_types_module,
only: kim_model_driver_create_type
900 recursive subroutine log_entry(model_driver_create, log_verbosity, &
901 message, line_number, file_name) &
902 bind(c, name="KIM_ModelDriverCreate_LogEntry")
903 use,
intrinsic :: iso_c_binding
905 use kim_interoperable_types_module,
only: kim_model_driver_create_type
907 type(kim_model_driver_create_type),
intent(in) &
910 character(c_char),
intent(in) :: message(*)
911 integer(c_int),
intent(in),
value :: line_number
912 character(c_char),
intent(in) :: file_name(*)
916 :: model_driver_create_handle
917 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
918 character(len=*, kind=c_char),
intent(in) :: message
923 trim(message)//c_null_char, 0,
""//c_null_char)
932 model_driver_create_handle, string)
933 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
934 use kim_interoperable_types_module,
only: kim_model_driver_create_type
937 type(c_ptr)
recursive function model_driver_create_string( &
938 model_driver_create) &
939 bind(c, name="KIM_ModelDriverCreate_ToString")
940 use,
intrinsic :: iso_c_binding
941 use kim_interoperable_types_module,
only: kim_model_driver_create_type
943 type(kim_model_driver_create_type),
intent(in) &
944 :: model_driver_create
947 type(kim_model_driver_create_handle_type),
intent(in) &
948 :: model_driver_create_handle
949 character(len=*, kind=c_char),
intent(out) :: string
950 type(kim_model_driver_create_type),
pointer :: model_driver_create
956 call kim_convert_c_char_ptr_to_string(p, string)
int model_driver_create(KIM_ModelDriverCreate *const modelDriverCreate, KIM_LengthUnit const requestedLengthUnit, KIM_EnergyUnit const requestedEnergyUnit, KIM_ChargeUnit const requestedChargeUnit, KIM_TemperatureUnit const requestedTemperatureUnit, KIM_TimeUnit const requestedTimeUnit)
Get the multiplicative factor to convert between a derived unit represented in two different sets of ...
Get the number of parameter files provided by the parameterized model.
Get a particular parameter file basename. The file is located in the Model's parameter file directory...
Get absolute path name of the temporary directory where parameter files provided by the model are wri...
Get a particular parameter file name.
Write a log entry into the log file.
Set the Model's influence distance data pointer.
Set the Model's buffer pointer within the Model object.
Set the Model's particle Numbering.
Set the Model's neighbor list data pointers.
Set the next parameter data pointer to be provided by the model.
Set the function pointer for the ModelRoutineName of interest.
Set integer code for supported SpeciesName.
Set the Model's base unit values.
Get a string representing the internal state of the Model object.
recursive subroutine set_parameter(model_create, extent, int1, name, description, ierr)
An Extensible Enumeration for the LanguageName's supported by the KIM API.
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.
Provides the interface to a KIM API Model object for use by models within their MODEL_ROUTINE_NAME::C...
recursive subroutine kim_model_driver_create_set_units(model_driver_create_handle, length_unit, energy_unit, charge_unit, temperature_unit, time_unit, ierr)
Set the Model's base unit values.
recursive subroutine kim_model_driver_create_set_species_code(model_driver_create_handle, species_name, code, ierr)
Set integer code for supported SpeciesName.
recursive subroutine kim_model_driver_create_set_model_numbering(model_driver_create_handle, numbering, ierr)
Set the Model's particle Numbering.
recursive subroutine kim_model_driver_create_set_model_buffer_pointer(model_driver_create_handle, ptr)
Set the Model's buffer pointer within the Model object.
recursive subroutine kim_model_driver_create_set_routine_pointer(model_driver_create_handle, model_routine_name, language_name, required, fptr, ierr)
Set the function pointer for the ModelRoutineName of interest.
recursive subroutine kim_model_driver_create_set_parameter_pointer_double(model_driver_create_handle, double1, name, description, ierr)
Set the next parameter data pointer to be provided by the model.
recursive subroutine kim_model_driver_create_convert_unit(from_length_unit, from_energy_unit, from_charge_unit, from_temperature_unit, from_time_unit, to_length_unit, to_energy_unit, to_charge_unit, to_temperature_unit, to_time_unit, length_exponent, energy_exponent, charge_exponent, temperature_exponent, time_exponent, conversion_factor, ierr)
Get the multiplicative factor to convert between a derived unit represented in two different sets of ...
recursive subroutine kim_model_driver_create_to_string(model_driver_create_handle, string)
Get a string representing the internal state of the Model object.
recursive subroutine kim_model_driver_create_get_parameter_file_basename(model_driver_create_handle, index, parameter_file_basename, ierr)
Get a particular parameter file basename. The file is located in the Model's parameter file directory...
recursive subroutine kim_model_driver_create_set_neighbor_list_pointers(model_driver_create_handle, number_of_neighbor_lists, cutoffs, model_will_not_request_neighbors_of_noncontributing_particles)
Set the Model's neighbor list data pointers.
recursive subroutine kim_model_driver_create_get_parameter_file_name(model_driver_create_handle, index, parameter_file_name, ierr)
Get a particular parameter file name.
recursive subroutine kim_model_driver_create_get_number_of_parameter_files(model_driver_create_handle, number_of_parameter_files)
Get the number of parameter files provided by the parameterized model.
type(kim_model_driver_create_handle_type), save, public, protected kim_model_driver_create_null_handle
NULL handle for use in comparisons.
recursive subroutine kim_model_driver_create_set_influence_distance_pointer(model_driver_create_handle, influence_distance)
Set the Model's influence distance data pointer.
recursive subroutine kim_model_driver_create_set_parameter_pointer_integer(model_driver_create_handle, int1, name, description, ierr)
Set the next parameter data pointer to be provided by the model.
recursive subroutine kim_model_driver_create_log_entry(model_driver_create_handle, log_verbosity, message)
Write a log entry into the log file.
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.
An Extensible Enumeration for the LanguageName's supported by the KIM API.
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.
Provides the interface to a KIM API Model object for use by models within their MODEL_ROUTINE_NAME::C...
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.