Skip to content
Snippets Groups Projects
sfx_io.f90 2.35 KiB
Newer Older
module sfx_io
    !> @brief surface flux model I/O subroutines
    implicit none
    public

contains

    !> @brief write data (2 vectors) in simple ascii format
    ! ----------------------------------------------------------------------------
    subroutine write_ascii_vec2(fname, var1, var2, n, stat)
        implicit none
        integer, intent(out) :: stat

        character(*), intent(in) :: fname
        integer, intent(in) :: n
        real, dimension(n), intent(in) :: var1, var2
        ! ----------------------------------------------------------------------------

        ! --- local variables
        integer i
        ! ----------------------------------------------------------------------------

        open(1, FILE = trim(fname), iostat = stat)
        if (stat /= 0) return

        do i = 1, n
            write(1, *, iostat = stat) var1(i), var2(i)
            if (stat /= 0) exit
        end do
        close(1, iostat = stat)

    end subroutine write_ascii_vec2
    ! ----------------------------------------------------------------------------

    !> @brief write data (11 vectors) in simple ascii format
    ! ----------------------------------------------------------------------------
    subroutine write_ascii_vec11(fname, &
            var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, &
            n, fmt, stat)
        implicit none
        integer, intent(out) :: stat

        character(*), intent(in) :: fname
        character(*), intent(in) :: fmt
        integer, intent(in) :: n
        real, dimension(n), intent(in) :: var1, var2, var3, var4, var5
        real, dimension(n), intent(in) :: var6, var7, var8, var9, var10, var11
        ! ----------------------------------------------------------------------------

        ! --- local variables
        integer i
        ! ----------------------------------------------------------------------------

        open(32, FILE = trim(fname), iostat = stat)
        if (stat /= 0) return

        do i = 1, n
            write(32, fmt, iostat = stat) var1(i), var2(i), var3(i), var4(i), var5(i), &
                    var6(i), var7(i), var8(i), var9(i), var10(i), var11(i)
            if (stat /= 0) exit
        end do
        close(32, iostat = stat)

    end subroutine write_ascii_vec11
    ! ----------------------------------------------------------------------------

end module sfx_io