23 real(dp),
dimension(:),
contiguous,
target :: dbl1d
24 character(len=*),
intent(in) :: aname
25 integer(I4B),
intent(in) :: nlay
26 integer(I4B),
dimension(:),
intent(in) :: layer_shape
29 integer(I4B) :: ncpl, nrow, ncol
30 integer(I4B) :: index_start, index_stop
31 real(dp),
dimension(:, :),
contiguous,
pointer :: dbl2d_ptr => null()
33 ncpl = product(layer_shape)
36 index_stop = index_start + ncpl - 1
37 if (
size(layer_shape) == 2)
then
40 dbl2d_ptr(1:ncol, 1:nrow) => dbl1d(index_start:index_stop)
43 call read_dbl1d(parser, dbl1d(index_start:index_stop), aname)
45 index_start = index_stop + 1
54 real(dp),
dimension(:, :),
contiguous,
target :: dbl2d
55 character(len=*),
intent(in) :: aname
56 integer(I4B),
intent(in) :: nlay
57 integer(I4B),
dimension(:),
intent(in) :: layer_shape
61 real(dp),
dimension(:),
contiguous,
pointer :: dbl1d_ptr => null()
65 dbl1d_ptr(1:ncpl) => dbl2d(1:ncpl, k)
75 real(dp),
dimension(:, :, :),
contiguous,
target :: dbl3d
76 character(len=*),
intent(in) :: aname
77 integer(I4B),
intent(in) :: nlay
78 integer(I4B),
dimension(:),
intent(in) :: layer_shape
81 integer(I4B) :: ncol, nrow
82 real(dp),
dimension(:, :),
contiguous,
pointer :: dbl2d_ptr => null()
87 dbl2d_ptr(1:ncol, 1:nrow) => dbl3d(:, :, k:k)
97 integer(I4B),
dimension(:),
contiguous,
target :: int1d
98 character(len=*),
intent(in) :: aname
99 integer(I4B),
intent(in) :: nlay
100 integer(I4B),
dimension(:),
intent(in) :: layer_shape
103 integer(I4B) :: ncpl, nrow, ncol
104 integer(I4B) :: index_start, index_stop
105 integer(I4B),
dimension(:, :),
contiguous,
pointer :: int2d_ptr => null()
107 ncpl = product(layer_shape)
110 index_stop = index_start + ncpl - 1
111 if (
size(layer_shape) == 2)
then
112 ncol = layer_shape(1)
113 nrow = layer_shape(2)
114 int2d_ptr(1:ncol, 1:nrow) => int1d(index_start:index_stop)
117 call read_int1d(parser, int1d(index_start:index_stop), aname)
119 index_start = index_stop + 1
128 integer(I4B),
dimension(:, :),
contiguous,
target :: int2d
129 character(len=*),
intent(in) :: aname
130 integer(I4B),
intent(in) :: nlay
131 integer(I4B),
dimension(:),
intent(in) :: layer_shape
135 integer(I4B),
dimension(:),
contiguous,
pointer :: int1d_ptr => null()
137 ncpl = layer_shape(1)
139 int1d_ptr(1:ncpl) => int2d(1:ncpl, k)
149 integer(I4B),
dimension(:, :, :),
contiguous,
target :: int3d
150 character(len=*),
intent(in) :: aname
151 integer(I4B),
intent(in) :: nlay
152 integer(I4B),
dimension(:),
intent(in) :: layer_shape
155 integer(I4B) :: ncol, nrow
156 integer(I4B),
dimension(:, :),
contiguous,
pointer :: int2d_ptr => null()
158 ncol = layer_shape(1)
159 nrow = layer_shape(2)
161 int2d_ptr(1:ncol, 1:nrow) => int3d(:, :, k:k)
This module contains block parser methods.
subroutine, public read_dbl1d(parser, dbl1d, aname)
subroutine, public read_dbl2d(parser, dbl2d, aname)
subroutine, public read_int1d(parser, int1d, aname)
subroutine, public read_int2d(parser, int2d, aname)
This module defines variable data types.
subroutine, public read_int1d_layered(parser, int1d, aname, nlay, layer_shape)
subroutine, public read_dbl1d_layered(parser, dbl1d, aname, nlay, layer_shape)
subroutine, public read_dbl2d_layered(parser, dbl2d, aname, nlay, layer_shape)
subroutine, public read_int3d_layered(parser, int3d, aname, nlay, layer_shape)
subroutine, public read_dbl3d_layered(parser, dbl3d, aname, nlay, layer_shape)
subroutine, public read_int2d_layered(parser, int2d, aname, nlay, layer_shape)