Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | unit |
Unit for output |
||
class(structure_type), | intent(in) | :: | mol |
Molecular structure data |
||
real(kind=wp), | intent(in) | :: | energy | |||
real(kind=wp), | intent(in), | optional | :: | gradient(:,:) | ||
real(kind=wp), | intent(in), | optional | :: | sigma(:,:) |
subroutine ascii_results(unit, mol, energy, gradient, sigma) !DEC$ ATTRIBUTES DLLEXPORT :: ascii_results !> Unit for output integer, intent(in) :: unit !> Molecular structure data class(structure_type), intent(in) :: mol real(wp), intent(in) :: energy real(wp), intent(in), optional :: gradient(:, :) real(wp), intent(in), optional :: sigma(:, :) integer :: iat, isp logical :: grad character(len=1), parameter :: comp(3) = ["x", "y", "z"] grad = present(gradient) .and. present(sigma) write(unit, '(a,":", t25, es20.13, 1x, a)') & & "Dispersion energy", energy, "Eh" write(unit, '(a)') if (grad) then write(unit, '(a,":", t25, es20.13, 1x, a)') & & "Gradient norm", norm2(gradient), "Eh/a0" write(unit, '(50("-"))') write(unit, '(a6,1x,a4,5x,*(1x,a10))') "#", "Z", "dE/dx", "dE/dy", "dE/dz" write(unit, '(50("-"))') do iat = 1, mol%nat isp = mol%id(iat) write(unit, '(i6,1x,i4,1x,a4,*(es11.3))') & & iat, mol%num(isp), mol%sym(isp), gradient(:, iat) end do write(unit, '(50("-"))') write(unit, '(a)') write(unit, '(a,":")') & & "Virial" write(unit, '(50("-"))') write(unit, '(a15,1x,*(1x,a10))') "component", "x", "y", "z" write(unit, '(50("-"))') do iat = 1, 3 write(unit, '(2x,4x,1x,a4,1x,4x,*(es11.3))') & & comp(iat), sigma(:, iat) end do write(unit, '(50("-"))') write(unit, '(a)') end if end subroutine ascii_results