60 integer,
dimension(ndim+1) :: sizes, subsizes, start
61 integer :: i^
d, ic^
d, nx^
d, nxco^
d, nxg^
d, idir
63 nx^
d=ixmhi^
d-ixmlo^
d+1;
69 ^
d&subsizes(^
d)=nxg^
d;
73 call mpi_type_create_subarray(
ndim+1,sizes,subsizes,start, &
74 mpi_order_fortran,mpi_double_precision, &
81 ^
d&subsizes(^
d)=nxco^
d;
83 ^
d&start(^
d)=ixmlo^
d-1;
85 call mpi_type_create_subarray(
ndim+1,sizes,subsizes,start, &
86 mpi_order_fortran,mpi_double_precision, &
93 ^
d&subsizes(^
d)=nx^
d+1;
95 ^
d&start(^
d)=ixmlo^
d-1;
97 call mpi_type_create_subarray(
ndim+1,sizes,subsizes,start, &
98 mpi_order_fortran,mpi_double_precision, &
107 ^
d&subsizes(^
d)=nxco^
d+
kr(ic^
d,1)*
kr(idir,^
d);
109 ^
d&start(^
d)=ixmlo^
d-
kr(ic^
d,1)*
kr(idir,^
d);
112 call mpi_type_create_subarray(
ndim+1,sizes,subsizes,start, &
113 mpi_order_fortran,mpi_double_precision, &
119 ^d&sizes(^d)=ixghi^d+1;
123 ^d&subsizes(^d)=nxco^d+kr(ic^d,1)*kr(idir,^d);
125 ^d&start(^d)=ixmlo^d-kr(ic^d,1)*kr(idir,^d)+(ic^d-1)*nxco^d;
127 call mpi_type_create_subarray(ndim+1,sizes,subsizes,start, &
128 mpi_order_fortran,mpi_double_precision, &
129 type_sub_block_stg(idir,ic^d),ierrmpi)
130 call mpi_type_commit(type_sub_block_stg(idir,ic^d),ierrmpi)
135 ^d&sizes(^d)=ixghi^d;
138 ^d&subsizes(^d)=nxco^d;
140 ^d&start(^d)=ixmlo^d-1+(ic^d-1)*nxco^d;
142 call mpi_type_create_subarray(ndim+1,sizes,subsizes,start, &
143 mpi_order_fortran,mpi_double_precision, &
144 type_sub_block(ic^d),ierrmpi)
145 call mpi_type_commit(type_sub_block(ic^d),ierrmpi)
148 ^d&sizes(^d)=ixghi^d;
150 ^d&subsizes(^d)=nx^d;
152 ^d&start(^d)=ixmlo^d-1;
154 call mpi_type_create_subarray(ndim+1,sizes,subsizes,start, &
155 mpi_order_fortran,mpi_double_precision, &
156 type_block_io,ierrmpi)
157 call mpi_type_commit(type_block_io,ierrmpi)
158 size_block_io={nx^d*}*nw*size_double
160 ^d&sizes(^d)=ixmhi^d-ixmlo^d+1;
162 ^d&subsizes(^d)=sizes(^d);
166 call mpi_type_create_subarray(ndim+1,sizes,subsizes,start, &
167 mpi_order_fortran,mpi_double_precision, &
168 type_block_xcc_io,ierrmpi)
169 call mpi_type_commit(type_block_xcc_io,ierrmpi)
171 ^d&sizes(^d)=ixmhi^d-ixmlo^d+2;
173 ^d&subsizes(^d)=sizes(^d);
177 call mpi_type_create_subarray(ndim+1,sizes,subsizes,start, &
178 mpi_order_fortran,mpi_double_precision, &
179 type_block_xc_io,ierrmpi)
180 call mpi_type_commit(type_block_xc_io,ierrmpi)
182 ^d&sizes(^d)=ixmhi^d-ixmlo^d+1;
183 sizes(ndim+1)=nw+nwauxio
184 ^d&subsizes(^d)=sizes(^d);
185 subsizes(ndim+1)=nw+nwauxio
188 call mpi_type_create_subarray(ndim+1,sizes,subsizes,start, &
189 mpi_order_fortran,mpi_double_precision, &
190 type_block_wcc_io,ierrmpi)
191 call mpi_type_commit(type_block_wcc_io,ierrmpi)
193 ^d&sizes(^d)=ixmhi^d-ixmlo^d+2;
194 sizes(ndim+1)=nw+nwauxio
195 ^d&subsizes(^d)=sizes(^d);
196 subsizes(ndim+1)=nw+nwauxio
199 call mpi_type_create_subarray(ndim+1,sizes,subsizes,start, &
200 mpi_order_fortran,mpi_double_precision, &
201 type_block_wc_io,ierrmpi)
202 call mpi_type_commit(type_block_wc_io,ierrmpi)