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