Write content of real array (rank=1,2) to file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | filename |
file name |
||
real(kind=rk), | intent(in) | :: | x(..) |
array to be written |
||
character(len=*), | intent(in), | optional | :: | fmt |
format specifier (default="es16.5e3") |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | fmt_ | |||
integer, | public | :: | i | ||||
integer, | public | :: | funit |
subroutine writearray(filename, x, fmt) !! Write content of real array (rank=1,2) to file. character(*), intent(in) :: filename !! file name real(rk), intent(in) :: x(..) !! array to be written character(*), intent(in), optional :: fmt !! format specifier (default="es16.5e3") character(:), allocatable :: fmt_ integer :: i, funit fmt_ = optval(fmt, "es16.5e3") open (newunit=funit, file=filename, status="replace", action="write", position="rewind") select rank (x) rank (1) if (size(x, 1) > 0) then do i = 1, size(x, 1) write (funit, '('//fmt_//')') x(i) end do end if rank (2) if (size(x, 1) > 0 .and. size(x, 2) > 0) then do i = 1, size(x, 1) write (funit, '('//to_string(size(x, 2))//'('//fmt_//'))') x(i, :) end do end if end select close (funit) end subroutine writearray