reads the "energy_unit" and "length_unit" (valid: "ang" or "bohr") variables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(settings_type), | intent(inout) | :: | settings | |||
| real(kind=dp), | intent(inout) | :: | lenconfac | |||
| character(len=*), | intent(inout) | :: | length_unit | |||
| character(len=*), | intent(inout) | :: | energy_unit | |||
| real(kind=dp), | intent(in) | :: | bohr | |||
| type(w90_error_type), | intent(out), | allocatable | :: | error | ||
| type(w90_comm_type), | intent(in) | :: | comm |
subroutine w90_readwrite_read_units(settings, lenconfac, length_unit, energy_unit, bohr, error, & comm) !! reads the "energy_unit" and "length_unit" (valid: "ang" or "bohr") variables use w90_error, only: w90_error_type, set_error_input implicit none character(len=*), intent(inout) :: energy_unit character(len=*), intent(inout) :: length_unit real(kind=dp), intent(in) :: bohr real(kind=dp), intent(inout) :: lenconfac type(settings_type), intent(inout) :: settings type(w90_comm_type), intent(in) :: comm type(w90_error_type), allocatable, intent(out) :: error integer :: ic logical :: found call w90_readwrite_get_keyword(settings, 'energy_unit', found, error, comm, c_value=energy_unit) if (allocated(error)) return call w90_readwrite_get_keyword(settings, 'length_unit', found, error, comm, c_value=length_unit) if (allocated(error)) return if (found) then if (length_unit .ne. 'ang' .and. length_unit .ne. 'bohr') then call set_error_input(error, & 'Error: value of length_unit not recognised in w90_readwrite_read_units', comm) return else if (length_unit .eq. 'bohr') then lenconfac = 1.0_dp/bohr end if end if ! Length unit (ang --> Ang, bohr --> Bohr) set to uppercase for printout ic = ichar(length_unit(1:1)) if ((ic .ge. ichar('a')) .and. (ic .le. ichar('z'))) & length_unit(1:1) = char(ic + ichar('Z') - ichar('z')) end subroutine w90_readwrite_read_units