36 use,
intrinsic :: iso_c_binding
42 kim_charge_unit_type, &
62 type, bind(c) :: kim_charge_unit_type
68 integer(c_int) charge_unit_id
69 end type kim_charge_unit_type
76 type(kim_charge_unit_type),
protected,
save, &
77 bind(c, name=
"KIM_CHARGE_UNIT_unused") &
85 type(kim_charge_unit_type),
protected,
save, &
86 bind(c, name=
"KIM_CHARGE_UNIT_c") &
94 type(kim_charge_unit_type),
protected,
save, &
95 bind(c, name=
"KIM_CHARGE_UNIT_e") &
103 type(kim_charge_unit_type),
protected,
save, &
104 bind(c, name=
"KIM_CHARGE_UNIT_statC") &
113 module procedure kim_charge_unit_known
114 end interface kim_known
121 interface operator(.eq.)
122 module procedure kim_charge_unit_equal
123 end interface operator(.eq.)
130 interface operator(.ne.)
131 module procedure kim_charge_unit_not_equal
132 end interface operator(.ne.)
140 interface kim_from_string
141 module procedure kim_charge_unit_from_string
142 end interface kim_from_string
149 interface kim_to_string
150 module procedure kim_charge_unit_to_string
151 end interface kim_to_string
159 logical recursive function kim_charge_unit_known(charge_unit)
162 integer(c_int) recursive function known(charge_unit) &
163 bind(c, name=
"KIM_ChargeUnit_Known")
164 use,
intrinsic :: iso_c_binding
165 import kim_charge_unit_type
167 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
170 type(kim_charge_unit_type),
intent(in) :: charge_unit
172 kim_charge_unit_known = (known(charge_unit) /= 0)
173 end function kim_charge_unit_known
180 logical recursive function kim_charge_unit_equal(lhs, rhs)
182 type(kim_charge_unit_type),
intent(in) :: lhs
183 type(kim_charge_unit_type),
intent(in) :: rhs
185 kim_charge_unit_equal &
186 = (lhs%charge_unit_id == rhs%charge_unit_id)
187 end function kim_charge_unit_equal
194 logical recursive function kim_charge_unit_not_equal(lhs, rhs)
196 type(kim_charge_unit_type),
intent(in) :: lhs
197 type(kim_charge_unit_type),
intent(in) :: rhs
199 kim_charge_unit_not_equal = .not. (lhs == rhs)
200 end function kim_charge_unit_not_equal
208 recursive subroutine kim_charge_unit_from_string(string, charge_unit)
211 type(kim_charge_unit_type)
recursive function from_string(string) &
212 bind(c, name=
"KIM_ChargeUnit_FromString")
213 use,
intrinsic :: iso_c_binding
214 import kim_charge_unit_type
216 character(c_char),
intent(in) :: string(*)
217 end function from_string
219 character(len=*, kind=c_char),
intent(in) :: string
220 type(kim_charge_unit_type),
intent(out) :: charge_unit
222 charge_unit = from_string(trim(string)//c_null_char)
223 end subroutine kim_charge_unit_from_string
230 recursive subroutine kim_charge_unit_to_string(charge_unit, string)
231 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
234 type(c_ptr)
recursive function get_string(charge_unit) &
235 bind(c, name=
"KIM_ChargeUnit_ToString")
236 use,
intrinsic :: iso_c_binding
237 import kim_charge_unit_type
239 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
240 end function get_string
242 type(kim_charge_unit_type),
intent(in) :: charge_unit
243 character(len=*, kind=c_char),
intent(out) :: string
247 p = get_string(charge_unit)
248 call kim_convert_c_char_ptr_to_string(p, string)
249 end subroutine kim_charge_unit_to_string
260 recursive subroutine get_number_of_charge_units(number_of_charge_units) &
261 bind(c, name=
"KIM_CHARGE_UNIT_GetNumberOfChargeUnits")
262 use,
intrinsic :: iso_c_binding
264 integer(c_int),
intent(out) :: number_of_charge_units
265 end subroutine get_number_of_charge_units
267 integer(c_int),
intent(out) :: number_of_charge_units
269 call get_number_of_charge_units(number_of_charge_units)
280 integer(c_int) recursive function get_charge_unit(index, charge_unit) &
281 bind(c, name=
"KIM_CHARGE_UNIT_GetChargeUnit")
282 use,
intrinsic :: iso_c_binding
283 import kim_charge_unit_type
285 integer(c_int),
intent(in),
value :: index
286 type(kim_charge_unit_type),
intent(out) :: charge_unit
287 end function get_charge_unit
289 integer(c_int),
intent(in) :: index
290 type(kim_charge_unit_type),
intent(out) :: charge_unit
291 integer(c_int),
intent(out) :: ierr
293 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