27 use,
intrinsic :: iso_c_binding
33 recursive subroutine my_error(message)
35 character(len=*, kind=c_char),
intent(in) :: message
37 print *,
"* Error : ", trim(message)
43 character(len=*, kind=c_char),
intent(in) :: message
45 print *,
"* Warning : ", trim(message)
55 use,
intrinsic :: iso_c_binding
60 integer(c_int) function c_system(cmd) bind(c, name="system")
61 use,
intrinsic :: iso_c_binding
62 character(c_char),
intent(in) :: cmd(*)
66 integer(c_int) :: ierr
67 integer(c_int) :: extent
68 integer(c_int) :: no_fields
71 type(kim_simulator_model_handle_type) :: sm
73 character(len=2048, kind=c_char) s_name
74 character(len=2048, kind=c_char) s_ver
75 character(len=2048, kind=c_char) species
76 character(len=2048, kind=c_char) field_name
77 character(len=2048, kind=c_char) line
78 character(len=2048, kind=c_char) dir_name
79 character(len=2048, kind=c_char) spec_name
80 character(len=2048, kind=c_char) param_basename
82 call kim_simulator_model_create( &
83 "Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu", sm, ierr)
89 call kim_get_simulator_name_and_version(sm, s_name, s_ver)
90 print *,
"Simulator name : ", trim(s_name)
91 print *,
"Simulator version : ", trim(s_ver)
94 call kim_get_number_of_supported_species(sm, extent)
95 print *,
"SM supports", extent,
" species:" 97 call kim_get_supported_species(sm, i, species, ierr)
99 call my_error(
"Unable to get species.")
101 print
'(A,I2," ",A)', achar(9), i, trim(species)
106 call kim_add_template_map(sm,
"atom-type-sym-list",
"Pb Pb Au Pb", ierr)
108 call my_error(
"Unable to add template map.")
110 call kim_close_template_map(sm)
111 call kim_get_number_of_simulator_fields(sm, no_fields)
112 print
'("SM has ",I2," fields :")', no_fields
114 call kim_get_simulator_field_metadata(sm, i, extent, field_name, ierr)
115 print
'(" Field",I2," is ",A," and has ",I2," lines:")', &
116 i, trim(field_name), extent
119 call kim_get_simulator_field_line(sm, i, j, line, ierr)
121 call my_error(
"Unable to get field line.")
123 print
'(A,A)', achar(9), trim(line)
129 call kim_get_parameter_file_directory_name(sm, dir_name)
130 print
'("SM param dir name is ",A)', trim(dir_name)
132 call kim_get_specification_file_name(sm, spec_name)
133 print
'("SM spec file name is ",A)', trim(spec_name)
134 ierr = c_system(
"cat "//trim(dir_name)//
"/"//trim(spec_name)//c_null_char)
136 call kim_get_number_of_parameter_files(sm, extent)
137 print
'("SM has ",I1," parameter files:")', extent
139 call kim_get_parameter_file_basename(sm, i, param_basename, ierr)
141 call my_error(
"Unable to get parameter file basename.")
143 print
'("Parameter file ",I2," has basename ",A)', i, trim(param_basename)
145 "cat "//trim(dir_name)//
"/"//trim(param_basename)//c_null_char)
150 call kim_simulator_model_destroy(sm)
recursive subroutine my_warning(message)
recursive subroutine my_error(message)
program collections_example_fortran