39 use,
intrinsic :: iso_c_binding
45 kim_energy_unit_type, &
68 type, bind(c) :: kim_energy_unit_type
74 integer(c_int) energy_unit_id
75 end type kim_energy_unit_type
82 type(kim_energy_unit_type),
protected,
save, &
83 bind(c, name=
"KIM_ENERGY_UNIT_unused") &
91 type(kim_energy_unit_type),
protected,
save, &
92 bind(c, name=
"KIM_ENERGY_UNIT_amu_A2_per_ps2") &
100 type(kim_energy_unit_type),
protected,
save, &
101 bind(c, name=
"KIM_ENERGY_UNIT_erg") &
109 type(kim_energy_unit_type),
protected,
save, &
110 bind(c, name=
"KIM_ENERGY_UNIT_eV") &
118 type(kim_energy_unit_type),
protected,
save, &
119 bind(c, name=
"KIM_ENERGY_UNIT_Hartree") &
127 type(kim_energy_unit_type),
protected,
save, &
128 bind(c, name=
"KIM_ENERGY_UNIT_J") &
136 type(kim_energy_unit_type),
protected,
save, &
137 bind(c, name=
"KIM_ENERGY_UNIT_kcal_mol") &
146 module procedure kim_energy_unit_known
147 end interface kim_known
154 interface operator(.eq.)
155 module procedure kim_energy_unit_equal
156 end interface operator(.eq.)
163 interface operator(.ne.)
164 module procedure kim_energy_unit_not_equal
165 end interface operator(.ne.)
173 interface kim_from_string
174 module procedure kim_energy_unit_from_string
175 end interface kim_from_string
182 interface kim_to_string
183 module procedure kim_energy_unit_to_string
184 end interface kim_to_string
192 logical recursive function kim_energy_unit_known(energy_unit)
195 integer(c_int) recursive function known(energy_unit) &
196 bind(c, name=
"KIM_EnergyUnit_Known")
197 use,
intrinsic :: iso_c_binding
198 import kim_energy_unit_type
200 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
203 type(kim_energy_unit_type),
intent(in) :: energy_unit
205 kim_energy_unit_known = (known(energy_unit) /= 0)
206 end function kim_energy_unit_known
213 logical recursive function kim_energy_unit_equal(lhs, rhs)
215 type(kim_energy_unit_type),
intent(in) :: lhs
216 type(kim_energy_unit_type),
intent(in) :: rhs
218 kim_energy_unit_equal &
219 = (lhs%energy_unit_id == rhs%energy_unit_id)
220 end function kim_energy_unit_equal
227 logical recursive function kim_energy_unit_not_equal(lhs, rhs)
229 type(kim_energy_unit_type),
intent(in) :: lhs
230 type(kim_energy_unit_type),
intent(in) :: rhs
232 kim_energy_unit_not_equal = .not. (lhs == rhs)
233 end function kim_energy_unit_not_equal
241 recursive subroutine kim_energy_unit_from_string(string, energy_unit)
244 type(kim_energy_unit_type)
recursive function from_string(string) &
245 bind(c, name=
"KIM_EnergyUnit_FromString")
246 use,
intrinsic :: iso_c_binding
247 import kim_energy_unit_type
249 character(c_char),
intent(in) :: string(*)
250 end function from_string
252 character(len=*, kind=c_char),
intent(in) :: string
253 type(kim_energy_unit_type),
intent(out) :: energy_unit
255 energy_unit = from_string(trim(string)//c_null_char)
256 end subroutine kim_energy_unit_from_string
263 recursive subroutine kim_energy_unit_to_string(energy_unit, string)
264 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
267 type(c_ptr)
recursive function get_string(energy_unit) &
268 bind(c, name=
"KIM_EnergyUnit_ToString")
269 use,
intrinsic :: iso_c_binding
270 import kim_energy_unit_type
272 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
273 end function get_string
275 type(kim_energy_unit_type),
intent(in) :: energy_unit
276 character(len=*, kind=c_char),
intent(out) :: string
280 p = get_string(energy_unit)
281 call kim_convert_c_char_ptr_to_string(p, string)
282 end subroutine kim_energy_unit_to_string
293 recursive subroutine get_number_of_energy_units(number_of_energy_units) &
294 bind(c, name=
"KIM_ENERGY_UNIT_GetNumberOfEnergyUnits")
295 use,
intrinsic :: iso_c_binding
296 integer(c_int),
intent(out) :: number_of_energy_units
297 end subroutine get_number_of_energy_units
299 integer(c_int),
intent(out) :: number_of_energy_units
301 call get_number_of_energy_units(number_of_energy_units)
312 integer(c_int) recursive function get_energy_unit(index, energy_unit) &
313 bind(c, name=
"KIM_ENERGY_UNIT_GetEnergyUnit")
314 use,
intrinsic :: iso_c_binding
315 import kim_energy_unit_type
317 integer(c_int),
intent(in),
value :: index
318 type(kim_energy_unit_type),
intent(out) :: energy_unit
319 end function get_energy_unit
321 integer(c_int),
intent(in) :: index
322 type(kim_energy_unit_type),
intent(out) :: energy_unit
323 integer(c_int),
intent(out) :: ierr
325 ierr = get_energy_unit(index - 1, energy_unit)
type(kim_energy_unit_type), save, public, protected kim_energy_unit_erg
recursive subroutine, public kim_get_energy_unit(index, energy_unit, ierr)
Get the identity of each defined standard EnergyUnit.
An Extensible Enumeration for the EnergyUnit's supported by the KIM API.
type(kim_energy_unit_type), save, public, protected kim_energy_unit_amu_a2_per_ps2
type(kim_energy_unit_type), save, public, protected kim_energy_unit_unused
type(kim_energy_unit_type), save, public, protected kim_energy_unit_kcal_mol
type(kim_energy_unit_type), save, public, protected kim_energy_unit_ev
type(kim_energy_unit_type), save, public, protected kim_energy_unit_hartree
recursive subroutine, public kim_get_number_of_energy_units(number_of_energy_units)
Get the number of standard EnergyUnit's defined by the KIM API.
type(kim_energy_unit_type), save, public, protected kim_energy_unit_j