40 use,
intrinsic :: iso_c_binding
46 kim_charge_unit_type, &
69 type, bind(c) :: kim_charge_unit_type
75 integer(c_int) charge_unit_id
76 end type kim_charge_unit_type
83 type(kim_charge_unit_type),
protected,
save, &
84 bind(c, name=
"KIM_CHARGE_UNIT_unused") &
92 type(kim_charge_unit_type),
protected,
save, &
93 bind(c, name=
"KIM_CHARGE_UNIT_c") &
101 type(kim_charge_unit_type),
protected,
save, &
102 bind(c, name=
"KIM_CHARGE_UNIT_e") &
110 type(kim_charge_unit_type),
protected,
save, &
111 bind(c, name=
"KIM_CHARGE_UNIT_statC") &
120 module procedure kim_charge_unit_known
121 end interface kim_known
128 interface operator (.eq.)
129 module procedure kim_charge_unit_equal
130 end interface operator (.eq.)
137 interface operator (.ne.)
138 module procedure kim_charge_unit_not_equal
139 end interface operator (.ne.)
147 interface kim_from_string
148 module procedure kim_charge_unit_from_string
149 end interface kim_from_string
156 interface kim_to_string
157 module procedure kim_charge_unit_to_string
158 end interface kim_to_string
166 logical recursive function kim_charge_unit_known(charge_unit)
169 integer(c_int) recursive function known(charge_unit) &
170 bind(c, name=
"KIM_ChargeUnit_Known")
171 use,
intrinsic :: iso_c_binding
172 import kim_charge_unit_type
174 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
177 type(kim_charge_unit_type),
intent(in) :: charge_unit
179 kim_charge_unit_known = (known(charge_unit) /= 0)
180 end function kim_charge_unit_known
187 logical recursive function kim_charge_unit_equal(lhs, rhs)
189 type(kim_charge_unit_type),
intent(in) :: lhs
190 type(kim_charge_unit_type),
intent(in) :: rhs
192 kim_charge_unit_equal &
193 = (lhs%charge_unit_id .eq. rhs%charge_unit_id)
194 end function kim_charge_unit_equal
201 logical recursive function kim_charge_unit_not_equal(lhs, rhs)
203 type(kim_charge_unit_type),
intent(in) :: lhs
204 type(kim_charge_unit_type),
intent(in) :: rhs
206 kim_charge_unit_not_equal = .not. (lhs .eq. rhs)
207 end function kim_charge_unit_not_equal
215 recursive subroutine kim_charge_unit_from_string(string, charge_unit)
218 type(kim_charge_unit_type)
recursive function from_string(string) &
219 bind(c, name=
"KIM_ChargeUnit_FromString")
220 use,
intrinsic :: iso_c_binding
221 import kim_charge_unit_type
223 character(c_char),
intent(in) :: string(*)
224 end function from_string
226 character(len=*, kind=c_char),
intent(in) :: string
227 type(kim_charge_unit_type),
intent(out) :: charge_unit
229 charge_unit = from_string(trim(string)//c_null_char)
230 end subroutine kim_charge_unit_from_string
237 recursive subroutine kim_charge_unit_to_string(charge_unit, string)
238 use kim_convert_string_module
, only : kim_convert_c_char_ptr_to_string
241 type(c_ptr)
recursive function get_string(charge_unit) &
242 bind(c, name=
"KIM_ChargeUnit_ToString")
243 use,
intrinsic :: iso_c_binding
244 import kim_charge_unit_type
246 type(kim_charge_unit_type),
intent(in),
value :: charge_unit
247 end function get_string
249 type(kim_charge_unit_type),
intent(in) :: charge_unit
250 character(len=*, kind=c_char),
intent(out) :: string
254 p = get_string(charge_unit)
255 call kim_convert_c_char_ptr_to_string(p, string)
256 end subroutine kim_charge_unit_to_string
267 recursive subroutine get_number_of_charge_units(number_of_charge_units) &
268 bind(c, name=
"KIM_CHARGE_UNIT_GetNumberOfChargeUnits")
269 use,
intrinsic :: iso_c_binding
271 integer(c_int),
intent(out) :: number_of_charge_units
272 end subroutine get_number_of_charge_units
274 integer(c_int),
intent(out) :: number_of_charge_units
276 call get_number_of_charge_units(number_of_charge_units)
287 integer(c_int) recursive function get_charge_unit(index, charge_unit) &
288 bind(c, name=
"KIM_CHARGE_UNIT_GetChargeUnit")
289 use,
intrinsic :: iso_c_binding
290 import kim_charge_unit_type
292 integer(c_int),
intent(in),
value :: index
293 type(kim_charge_unit_type),
intent(out) :: charge_unit
294 end function get_charge_unit
296 integer(c_int),
intent(in) :: index
297 type(kim_charge_unit_type),
intent(out) :: charge_unit
298 integer(c_int),
intent(out) :: ierr
300 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