39 use,
intrinsic :: iso_c_binding
45 kim_charge_unit_type, &
65 type, bind(c) :: kim_charge_unit_type
71 integer(c_int) charge_unit_id
72 end type kim_charge_unit_type
79 type(kim_charge_unit_type),
protected,
save, &
80 bind(c, name=
"KIM_CHARGE_UNIT_unused") &
88 type(kim_charge_unit_type),
protected,
save, &
89 bind(c, name=
"KIM_CHARGE_UNIT_c") &
97 type(kim_charge_unit_type),
protected,
save, &
98 bind(c, name=
"KIM_CHARGE_UNIT_e") &
106 type(kim_charge_unit_type),
protected,
save, &
107 bind(c, name=
"KIM_CHARGE_UNIT_statC") &
116 module procedure kim_charge_unit_known
117 end interface kim_known
124 interface operator(.eq.)
125 module procedure kim_charge_unit_equal
126 end interface operator(.eq.)
133 interface operator(.ne.)
134 module procedure kim_charge_unit_not_equal
135 end interface operator(.ne.)
143 interface kim_from_string
144 module procedure kim_charge_unit_from_string
145 end interface kim_from_string
152 interface kim_to_string
153 module procedure kim_charge_unit_to_string
154 end interface kim_to_string
162 logical recursive function kim_charge_unit_known(charge_unit)
165 integer(c_int) recursive function known(charge_unit) &
166 bind(c, name=
"KIM_ChargeUnit_Known")
167 use,
intrinsic :: iso_c_binding
168 import kim_charge_unit_type
170 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
173 type(kim_charge_unit_type),
intent(in) :: charge_unit
175 kim_charge_unit_known = (known(charge_unit) /= 0)
176 end function kim_charge_unit_known
183 logical recursive function kim_charge_unit_equal(lhs, rhs)
185 type(kim_charge_unit_type),
intent(in) :: lhs
186 type(kim_charge_unit_type),
intent(in) :: rhs
188 kim_charge_unit_equal &
189 = (lhs%charge_unit_id == rhs%charge_unit_id)
190 end function kim_charge_unit_equal
197 logical recursive function kim_charge_unit_not_equal(lhs, rhs)
199 type(kim_charge_unit_type),
intent(in) :: lhs
200 type(kim_charge_unit_type),
intent(in) :: rhs
202 kim_charge_unit_not_equal = .not. (lhs == rhs)
203 end function kim_charge_unit_not_equal
211 recursive subroutine kim_charge_unit_from_string(string, charge_unit)
214 type(kim_charge_unit_type)
recursive function from_string(string) &
215 bind(c, name=
"KIM_ChargeUnit_FromString")
216 use,
intrinsic :: iso_c_binding
217 import kim_charge_unit_type
219 character(c_char),
intent(in) :: string(*)
220 end function from_string
222 character(len=*, kind=c_char),
intent(in) :: string
223 type(kim_charge_unit_type),
intent(out) :: charge_unit
225 charge_unit = from_string(trim(string)//c_null_char)
226 end subroutine kim_charge_unit_from_string
233 recursive subroutine kim_charge_unit_to_string(charge_unit, string)
234 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
237 type(c_ptr)
recursive function get_string(charge_unit) &
238 bind(c, name=
"KIM_ChargeUnit_ToString")
239 use,
intrinsic :: iso_c_binding
240 import kim_charge_unit_type
242 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
243 end function get_string
245 type(kim_charge_unit_type),
intent(in) :: charge_unit
246 character(len=*, kind=c_char),
intent(out) :: string
250 p = get_string(charge_unit)
251 call kim_convert_c_char_ptr_to_string(p, string)
252 end subroutine kim_charge_unit_to_string
263 recursive subroutine get_number_of_charge_units(number_of_charge_units) &
264 bind(c, name=
"KIM_CHARGE_UNIT_GetNumberOfChargeUnits")
265 use,
intrinsic :: iso_c_binding
267 integer(c_int),
intent(out) :: number_of_charge_units
268 end subroutine get_number_of_charge_units
270 integer(c_int),
intent(out) :: number_of_charge_units
272 call get_number_of_charge_units(number_of_charge_units)
283 integer(c_int) recursive function get_charge_unit(index, charge_unit) &
284 bind(c, name=
"KIM_CHARGE_UNIT_GetChargeUnit")
285 use,
intrinsic :: iso_c_binding
286 import kim_charge_unit_type
288 integer(c_int),
intent(in),
value :: index
289 type(kim_charge_unit_type),
intent(out) :: charge_unit
290 end function get_charge_unit
292 integer(c_int),
intent(in) :: index
293 type(kim_charge_unit_type),
intent(out) :: charge_unit
294 integer(c_int),
intent(out) :: ierr
296 ierr = get_charge_unit(index - 1, charge_unit)
type(kim_charge_unit_type), save, public, protected kim_charge_unit_c
type(kim_charge_unit_type), save, public, protected kim_charge_unit_e
recursive subroutine, public kim_get_charge_unit(index, charge_unit, ierr)
Get the identity of each defined standard ChargeUnit.
recursive subroutine, public kim_get_number_of_charge_units(number_of_charge_units)
Get the number of standard ChargeUnit's defined by the KIM API.
An Extensible Enumeration for the ChargeUnit's supported by the KIM API.
type(kim_charge_unit_type), save, public, protected kim_charge_unit_unused
type(kim_charge_unit_type), save, public, protected kim_charge_unit_statc