ascii_energy_atom Subroutine

public subroutine ascii_energy_atom(unit, mol, energies, label)

Print atom-resolved dispersion energies

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: unit

Unit for output

class(structure_type), intent(in) :: mol

Molecular structure data

real(kind=wp), intent(in), allocatable :: energies(:)

Atom-resolved dispersion energies

character(len=*), intent(in), optional :: label

Label for the output


Source Code

subroutine ascii_energy_atom(unit, mol, energies, label)

   !> Unit for output
   integer, intent(in) :: unit

   !> Molecular structure data
   class(structure_type), intent(in) :: mol

   !> Atom-resolved dispersion energies
   real(wp), allocatable, intent(in) :: energies(:)

   !> Label for the output
   character(len=*), intent(in), optional :: label

   integer :: iat, isp
   character(len=:), allocatable :: label_

   label_ = "dispersion"
   if (present(label)) label_ = label

   write(unit, '(a,":")') "Atom-resolved "//label_//" energies"
   write(unit, '(50("-"))')
   write(unit, '(a6,1x,a4,1x,4x,a15,1x,a15)') "#", "Z", "[Hartree]", "[kcal/mol]"
   write(unit, '(50("-"))')
   do iat = 1, mol%nat
      isp = mol%id(iat)
      write(unit, '(i6,1x,i4,1x,a4,e15.8,1x,f15.8)') &
         & iat, mol%num(isp), mol%sym(isp), energies(iat), energies(iat)*autokcal
   end do
   write(unit, '(50("-"))')
   write(unit, '(a)')

end subroutine ascii_energy_atom