40 use,
intrinsic :: iso_c_binding
46 kim_energy_unit_type, &
72 type, bind(c) :: kim_energy_unit_type
78 integer(c_int) energy_unit_id
79 end type kim_energy_unit_type
86 type(kim_energy_unit_type),
protected,
save, &
87 bind(c, name=
"KIM_ENERGY_UNIT_unused") &
95 type(kim_energy_unit_type),
protected,
save, &
96 bind(c, name=
"KIM_ENERGY_UNIT_amu_A2_per_ps2") &
104 type(kim_energy_unit_type),
protected,
save, &
105 bind(c, name=
"KIM_ENERGY_UNIT_erg") &
113 type(kim_energy_unit_type),
protected,
save, &
114 bind(c, name=
"KIM_ENERGY_UNIT_eV") &
122 type(kim_energy_unit_type),
protected,
save, &
123 bind(c, name=
"KIM_ENERGY_UNIT_Hartree") &
131 type(kim_energy_unit_type),
protected,
save, &
132 bind(c, name=
"KIM_ENERGY_UNIT_J") &
140 type(kim_energy_unit_type),
protected,
save, &
141 bind(c, name=
"KIM_ENERGY_UNIT_kcal_mol") &
150 module procedure kim_energy_unit_known
151 end interface kim_known
158 interface operator (.eq.)
159 module procedure kim_energy_unit_equal
160 end interface operator (.eq.)
167 interface operator (.ne.)
168 module procedure kim_energy_unit_not_equal
169 end interface operator (.ne.)
177 interface kim_from_string
178 module procedure kim_energy_unit_from_string
179 end interface kim_from_string
186 interface kim_to_string
187 module procedure kim_energy_unit_to_string
188 end interface kim_to_string
196 logical recursive function kim_energy_unit_known(energy_unit)
199 integer(c_int) recursive function known(energy_unit) &
200 bind(c, name=
"KIM_EnergyUnit_Known")
201 use,
intrinsic :: iso_c_binding
202 import kim_energy_unit_type
204 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
207 type(kim_energy_unit_type),
intent(in) :: energy_unit
209 kim_energy_unit_known = (known(energy_unit) /= 0)
210 end function kim_energy_unit_known
217 logical recursive function kim_energy_unit_equal(lhs, rhs)
219 type(kim_energy_unit_type),
intent(in) :: lhs
220 type(kim_energy_unit_type),
intent(in) :: rhs
222 kim_energy_unit_equal &
223 = (lhs%energy_unit_id .eq. rhs%energy_unit_id)
224 end function kim_energy_unit_equal
231 logical recursive function kim_energy_unit_not_equal(lhs, rhs)
233 type(kim_energy_unit_type),
intent(in) :: lhs
234 type(kim_energy_unit_type),
intent(in) :: rhs
236 kim_energy_unit_not_equal = .not. (lhs .eq. rhs)
237 end function kim_energy_unit_not_equal
245 recursive subroutine kim_energy_unit_from_string(string, energy_unit)
248 type(kim_energy_unit_type)
recursive function from_string(string) &
249 bind(c, name=
"KIM_EnergyUnit_FromString")
250 use,
intrinsic :: iso_c_binding
251 import kim_energy_unit_type
253 character(c_char),
intent(in) :: string(*)
254 end function from_string
256 character(len=*, kind=c_char),
intent(in) :: string
257 type(kim_energy_unit_type),
intent(out) :: energy_unit
259 energy_unit = from_string(trim(string)//c_null_char)
260 end subroutine kim_energy_unit_from_string
267 recursive subroutine kim_energy_unit_to_string(energy_unit, string)
268 use kim_convert_string_module
, only : kim_convert_c_char_ptr_to_string
271 type(c_ptr)
recursive function get_string(energy_unit) &
272 bind(c, name=
"KIM_EnergyUnit_ToString")
273 use,
intrinsic :: iso_c_binding
274 import kim_energy_unit_type
276 type(kim_energy_unit_type),
intent(in),
value :: energy_unit
277 end function get_string
279 type(kim_energy_unit_type),
intent(in) :: energy_unit
280 character(len=*, kind=c_char),
intent(out) :: string
284 p = get_string(energy_unit)
285 call kim_convert_c_char_ptr_to_string(p, string)
286 end subroutine kim_energy_unit_to_string
297 recursive subroutine get_number_of_energy_units(number_of_energy_units) &
298 bind(c, name=
"KIM_ENERGY_UNIT_GetNumberOfEnergyUnits")
299 use,
intrinsic :: iso_c_binding
300 integer(c_int),
intent(out) :: number_of_energy_units
301 end subroutine get_number_of_energy_units
303 integer(c_int),
intent(out) :: number_of_energy_units
305 call get_number_of_energy_units(number_of_energy_units)
316 integer(c_int) recursive function get_energy_unit(index, energy_unit) &
317 bind(c, name=
"KIM_ENERGY_UNIT_GetEnergyUnit")
318 use,
intrinsic :: iso_c_binding
319 import kim_energy_unit_type
321 integer(c_int),
intent(in),
value :: index
322 type(kim_energy_unit_type),
intent(out) :: energy_unit
323 end function get_energy_unit
325 integer(c_int),
intent(in) :: index
326 type(kim_energy_unit_type),
intent(out) :: energy_unit
327 integer(c_int),
intent(out) :: ierr
329 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