Skip to content

Commit b1c8f38

Browse files
committed
refac(mod_io): mv procedure defs to submodule
1 parent e722771 commit b1c8f38

File tree

2 files changed

+48
-29
lines changed

2 files changed

+48
-29
lines changed

src/mod_io.f90

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,21 @@ module mod_io
99
public :: read_binary_file
1010

1111
interface read_binary_file
12-
module procedure :: read_binary_file_1d, read_binary_file_2d
13-
end interface read_binary_file
1412

15-
contains
16-
17-
subroutine read_binary_file_1d(filename, dtype, nrec, array)
18-
character(len=*), intent(in) :: filename
19-
integer(ik), intent(in) :: dtype, nrec
20-
real(rk), allocatable, intent(in out) :: array(:)
21-
integer(ik) :: fileunit
22-
allocate(array(nrec))
23-
open(newunit=fileunit, file=filename, access='direct',&
24-
action='read', recl=dtype * nrec, status='old')
25-
read(fileunit, rec=1) array
26-
close(fileunit)
27-
end subroutine read_binary_file_1d
28-
29-
subroutine read_binary_file_2d(filename, dtype, dsize, nrec, array)
30-
character(len=*), intent(in) :: filename
31-
integer(ik), intent(in) :: dtype, dsize, nrec
32-
real(rk), allocatable, intent(in out) :: array(:,:)
33-
integer(ik) :: fileunit, i
34-
allocate(array(dsize, nrec))
35-
open(newunit=fileunit, file=filename, access='direct',&
36-
action='read', recl=dtype * dsize, status='old')
37-
do i = 1, nrec
38-
read(fileunit, rec=i) array(:,i)
39-
end do
40-
close(fileunit)
41-
end subroutine read_binary_file_2d
13+
module subroutine read_binary_file_1d(filename, dtype, nrec, array)
14+
implicit none
15+
character(len=*), intent(in) :: filename
16+
integer(ik), intent(in) :: dtype, nrec
17+
real(rk), allocatable, intent(in out) :: array(:)
18+
end subroutine read_binary_file_1d
19+
20+
module subroutine read_binary_file_2d(filename, dtype, dsize, nrec, array)
21+
implicit none
22+
character(len=*), intent(in) :: filename
23+
integer(ik), intent(in) :: dtype, dsize, nrec
24+
real(rk), allocatable, intent(in out) :: array(:,:)
25+
end subroutine read_binary_file_2d
26+
27+
end interface read_binary_file
4228

4329
end module mod_io

src/mod_io_submodule.f90

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
submodule(mod_io) mod_io_submodule
2+
3+
implicit none
4+
5+
contains
6+
7+
module subroutine read_binary_file_1d(filename, dtype, nrec, array)
8+
character(len=*), intent(in) :: filename
9+
integer(ik), intent(in) :: dtype, nrec
10+
real(rk), allocatable, intent(in out) :: array(:)
11+
integer(ik) :: fileunit
12+
allocate(array(nrec))
13+
open(newunit=fileunit, file=filename, access='direct',&
14+
action='read', recl=dtype * nrec, status='old')
15+
read(fileunit, rec=1) array
16+
close(fileunit)
17+
end subroutine read_binary_file_1d
18+
19+
module subroutine read_binary_file_2d(filename, dtype, dsize, nrec, array)
20+
character(len=*), intent(in) :: filename
21+
integer(ik), intent(in) :: dtype, dsize, nrec
22+
real(rk), allocatable, intent(in out) :: array(:,:)
23+
integer(ik) :: fileunit, i
24+
allocate(array(dsize, nrec))
25+
open(newunit=fileunit, file=filename, access='direct',&
26+
action='read', recl=dtype * dsize, status='old')
27+
do i = 1, nrec
28+
read(fileunit, rec=i) array(:,i)
29+
end do
30+
close(fileunit)
31+
end subroutine read_binary_file_2d
32+
33+
end submodule mod_io_submodule

0 commit comments

Comments
 (0)