ascii_atomic_references Subroutine

public subroutine ascii_atomic_references(unit, mol, disp)

Arguments

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

Unit for output

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

Molecular structure data

class(d3_model), intent(in) :: disp

Dispersion model


Source Code

subroutine ascii_atomic_references(unit, mol, disp)

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

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

   !> Dispersion model
   class(d3_model), intent(in) :: disp

   integer :: isp, iref, mref

   mref = maxval(disp%ref)
   write(unit, '(a,":")') "Atomic reference systems (in atomic units)"
   write(unit, '(76("-"))')
   write(unit, '(a4, 5x)', advance='no') "Z"
   do iref = 1, 3
      write(unit, '(a4, 1x, a7, 1x, a9)', advance='no') "#", "CN", "C6(AA)"
   end do
   write(unit, '(a)')
   write(unit, '(76("-"))')
   do isp = 1, mol%nid
      write(unit, '(i4, 1x, a4)', advance='no') &
         & mol%num(isp), mol%sym(isp)
      do iref = 1, disp%ref(isp)
         write(unit, '(i4, 1x, f7.4, 1x, f9.4)', advance='no') &
            iref, disp%cn(iref, isp), disp%c6(iref, iref, isp, isp)
         if ((iref == 3 .and. disp%ref(isp) > 3) .or. &
             (iref == 6 .and. disp%ref(isp) > 6)) then
            write(unit, '(/,9x)', advance='no')
         end if
      end do
      write(unit, '(a)')
   end do
   write(unit, '(76("-"))')

end subroutine ascii_atomic_references