119 type(mpi_datatype) ::
type(17)
120 integer(kind=MPI_ADDRESS_KIND) :: disp(17), base
121 integer :: len(17), i, ierr
123 call mpi_get_address(nmsh_hex%el_idx, disp(1), ierr)
124 call mpi_get_address(nmsh_hex%v(1)%v_idx, disp(2), ierr)
125 call mpi_get_address(nmsh_hex%v(1)%v_xyz, disp(3), ierr)
126 call mpi_get_address(nmsh_hex%v(2)%v_idx, disp(4), ierr)
127 call mpi_get_address(nmsh_hex%v(2)%v_xyz, disp(5), ierr)
128 call mpi_get_address(nmsh_hex%v(3)%v_idx, disp(6), ierr)
129 call mpi_get_address(nmsh_hex%v(3)%v_xyz, disp(7), ierr)
130 call mpi_get_address(nmsh_hex%v(4)%v_idx, disp(8), ierr)
131 call mpi_get_address(nmsh_hex%v(4)%v_xyz, disp(9), ierr)
132 call mpi_get_address(nmsh_hex%v(5)%v_idx, disp(10), ierr)
133 call mpi_get_address(nmsh_hex%v(5)%v_xyz, disp(11), ierr)
134 call mpi_get_address(nmsh_hex%v(6)%v_idx, disp(12), ierr)
135 call mpi_get_address(nmsh_hex%v(6)%v_xyz, disp(13), ierr)
136 call mpi_get_address(nmsh_hex%v(7)%v_idx, disp(14), ierr)
137 call mpi_get_address(nmsh_hex%v(7)%v_xyz, disp(15), ierr)
138 call mpi_get_address(nmsh_hex%v(8)%v_idx, disp(16), ierr)
139 call mpi_get_address(nmsh_hex%v(8)%v_xyz, disp(17), ierr)
144 disp(i) = mpi_aint_diff(disp(i), base)
151 type(1) = mpi_integer
152 type(2:16:2) = mpi_integer
153 type(3:17:2) = mpi_double_precision
154 call mpi_type_create_struct(17, len, disp,
type,
mpi_nmsh_hex, ierr)
161 type(mpi_datatype) ::
type(9)
162 integer(kind=MPI_ADDRESS_KIND) :: disp(9), base
163 integer :: len(9), i, ierr
165 call mpi_get_address(nmsh_quad%el_idx, disp(1), ierr)
166 call mpi_get_address(nmsh_quad%v(1)%v_idx, disp(2), ierr)
167 call mpi_get_address(nmsh_quad%v(1)%v_xyz, disp(3), ierr)
168 call mpi_get_address(nmsh_quad%v(2)%v_idx, disp(4), ierr)
169 call mpi_get_address(nmsh_quad%v(2)%v_xyz, disp(5), ierr)
170 call mpi_get_address(nmsh_quad%v(3)%v_idx, disp(6), ierr)
171 call mpi_get_address(nmsh_quad%v(3)%v_xyz, disp(7), ierr)
172 call mpi_get_address(nmsh_quad%v(4)%v_idx, disp(8), ierr)
173 call mpi_get_address(nmsh_quad%v(4)%v_xyz, disp(9), ierr)
178 disp(i) = mpi_aint_diff(disp(i), base)
185 type(1) = mpi_integer
186 type(2:8:2) = mpi_integer
187 type(3:9:2) = mpi_double_precision
188 call mpi_type_create_struct(9, len, disp,
type,
mpi_nmsh_quad, ierr)
195 type(mpi_datatype) ::
type(6)
196 integer(kind=MPI_ADDRESS_KIND) :: disp(6), base
197 integer :: len(6), i, ierr
199 call mpi_get_address(nmsh_zone%e, disp(1), ierr)
200 call mpi_get_address(nmsh_zone%f, disp(2), ierr)
201 call mpi_get_address(nmsh_zone%p_e, disp(3), ierr)
202 call mpi_get_address(nmsh_zone%p_f, disp(4), ierr)
203 call mpi_get_address(nmsh_zone%glb_pt_ids, disp(5), ierr)
204 call mpi_get_address(nmsh_zone%type, disp(6), ierr)
208 disp(i) = mpi_aint_diff(disp(i), base)
216 call mpi_type_create_struct(6, len, disp,
type,
mpi_nmsh_zone, ierr)
224 type(mpi_datatype) ::
type(3)
225 integer(kind=MPI_ADDRESS_KIND) :: disp(3), base
226 integer :: len(3), i, ierr
228 call mpi_get_address(nmsh_curve_el%e, disp(1), ierr)
229 call mpi_get_address(nmsh_curve_el%curve_data, disp(2), ierr)
230 call mpi_get_address(nmsh_curve_el%type, disp(3), ierr)
234 disp(i) = mpi_aint_diff(disp(i), base)
240 type(1) = mpi_integer
241 type(2) = mpi_double_precision
242 type(3) = mpi_integer
244 call mpi_type_create_struct(3, len, disp,
type,
mpi_nmsh_curve, ierr)
254 type(mpi_datatype) ::
type(4)
255 integer(kind=MPI_ADDRESS_KIND) :: disp(4), base
256 integer :: len(4), ierr, i
262 call mpi_get_address(re2v1_data%rgroup, disp(1), ierr)
263 call mpi_get_address(re2v1_data%x, disp(2), ierr)
264 call mpi_get_address(re2v1_data%y, disp(3), ierr)
265 call mpi_get_address(re2v1_data%z, disp(4), ierr)
269 disp(i) = mpi_aint_diff(disp(i), base)
283 call mpi_get_address(re2v2_data%rgroup, disp(1), ierr)
284 call mpi_get_address(re2v2_data%x, disp(2), ierr)
285 call mpi_get_address(re2v2_data%y, disp(3), ierr)
286 call mpi_get_address(re2v2_data%z, disp(4), ierr)
290 disp(i) = mpi_aint_diff(disp(i), base)
295 type = mpi_double_precision
306 type(mpi_datatype) ::
type(3)
307 integer(kind=MPI_ADDRESS_KIND) :: disp(3), base
308 integer :: len(3), ierr, i
314 call mpi_get_address(re2v1_data%rgroup, disp(1), ierr)
315 call mpi_get_address(re2v1_data%x, disp(2), ierr)
316 call mpi_get_address(re2v1_data%y, disp(3), ierr)
320 disp(i) = mpi_aint_diff(disp(i), base)
334 call mpi_get_address(re2v2_data%rgroup, disp(1), ierr)
335 call mpi_get_address(re2v2_data%x, disp(2), ierr)
336 call mpi_get_address(re2v2_data%y, disp(3), ierr)
340 disp(i) = mpi_aint_diff(disp(i), base)
345 type = mpi_double_precision
356 type(mpi_datatype) ::
type(4)
357 integer(kind=MPI_ADDRESS_KIND) :: disp(4), base
358 integer :: len(4), ierr, i
364 call mpi_get_address(re2v1_data%elem, disp(1), ierr)
365 call mpi_get_address(re2v1_data%zone, disp(2), ierr)
366 call mpi_get_address(re2v1_data%point, disp(3), ierr)
367 call mpi_get_address(re2v1_data%type, disp(4), ierr)
371 disp(i) = mpi_aint_diff(disp(i), base)
377 type(1:2) = mpi_integer
379 type(4) = mpi_character
388 call mpi_get_address(re2v2_data%elem, disp(1), ierr)
389 call mpi_get_address(re2v2_data%zone, disp(2), ierr)
390 call mpi_get_address(re2v2_data%point, disp(3), ierr)
391 call mpi_get_address(re2v2_data%type, disp(4), ierr)
395 disp(i) = mpi_aint_diff(disp(i), base)
401 type(1:2) = mpi_double_precision
402 type(3) = mpi_double_precision
403 type(4) = mpi_character
414 type(mpi_datatype) ::
type(4)
415 integer(kind=MPI_ADDRESS_KIND) :: disp(4), base
416 integer :: len(4), ierr, i
422 call mpi_get_address(re2v1_data%elem, disp(1), ierr)
423 call mpi_get_address(re2v1_data%face, disp(2), ierr)
424 call mpi_get_address(re2v1_data%bc_data, disp(3), ierr)
425 call mpi_get_address(re2v1_data%type, disp(4), ierr)
429 disp(i) = mpi_aint_diff(disp(i), base)
435 type(1:2) = mpi_integer
437 type(4) = mpi_character
446 call mpi_get_address(re2v2_data%elem, disp(1), ierr)
447 call mpi_get_address(re2v2_data%face, disp(2), ierr)
448 call mpi_get_address(re2v2_data%bc_data, disp(3), ierr)
449 call mpi_get_address(re2v2_data%type, disp(4), ierr)
453 disp(i) = mpi_aint_diff(disp(i), base)
459 type(1:2) = mpi_double_precision
460 type(3) = mpi_double_precision
461 type(4) = mpi_character
471 type(mpi_datatype) ::
type(2)
472 integer(kind=MPI_ADDRESS_KIND) :: disp(2), base
473 integer :: len(2), ierr, i
475 call mpi_get_address(stl_hdr%hdr, disp(1), ierr)
476 call mpi_get_address(stl_hdr%ntri, disp(2), ierr)
480 disp(i) = mpi_aint_diff(disp(i), base)
486 type(1) = mpi_character
487 type(2) = mpi_integer
489 call mpi_type_create_struct(2, len, disp,
type,
mpi_stl_header, ierr)
497 type(mpi_datatype) ::
type(5)
498 integer(kind=MPI_ADDRESS_KIND) :: disp(5), base
499 integer :: len(5), i, ierr
501 call mpi_get_address(
tri%n, disp(1), ierr)
502 call mpi_get_address(
tri%v1, disp(2), ierr)
503 call mpi_get_address(
tri%v2, disp(3), ierr)
504 call mpi_get_address(
tri%v3, disp(4), ierr)
505 call mpi_get_address(
tri%attrib, disp(5), ierr)
509 disp(i) = mpi_aint_diff(disp(i), base)
516 type(5) = mpi_integer2
type(mpi_datatype), public mpi_real_precision
MPI type for working precision of REAL types.
type(mpi_comm), public neko_comm
MPI communicator.
subroutine mpi_type_nmsh_quad_free
Deallocate nmsh quad derived MPI type.
subroutine mpi_type_re2_bc_free
Deallocate re2 bc derived MPI type.
subroutine mpi_type_nmsh_quad_init
Define a MPI derived type for a 2d nmsh quad.
type(mpi_datatype), public mpi_nmsh_hex
MPI derived type for 3D Neko nmsh data.
subroutine, public neko_mpi_types_init
Define all MPI derived types.
subroutine mpi_type_stl_header_init
Define a MPI dervied type for a STL header.
subroutine mpi_type_nmsh_curve_init
Define a MPI derived type for a nmsh curved element.
integer, public mpi_double_precision_size
Size of MPI type double precision.
integer, public mpi_real_prec_size
Size of working precision REAL types.
type(mpi_datatype), public mpi_re2v2_data_xyz
MPI derived type for 3D NEKTON re2 data.
subroutine mpi_type_nmsh_zone_init
Define a MPI derived type for a nmsh zone.
type(mpi_datatype), public mpi_re2v2_data_xy
MPI derived type for 2D NEKTON re2 data.
type(mpi_datatype), public mpi_nmsh_quad
MPI derived type for 2D Neko nmsh data.
subroutine mpi_type_stl_triangle_init
Define a MPI derived type for a STL triangle.
subroutine mpi_type_nmsh_hex_init
Define a MPI derived type for a 3d nmsh hex.
type(mpi_datatype), public mpi_nmsh_curve
MPI derived type for Neko nmsh curved elements.
subroutine mpi_type_re2_xyz_free
Deallocate re2 xyz derived MPI type.
subroutine mpi_type_stl_triangle_free
Deallocate STL triangle derived MPI type.
integer, public mpi_character_size
Size of MPI type character.
integer, public mpi_real_size
Size of MPI type real.
subroutine mpi_type_re2_cv_init
Define a MPI derived type for re2 cv data.
subroutine mpi_type_re2_xy_free
Deallocate re2 xyz derived MPI type.
integer, public mpi_integer_size
Size of MPI type integer.
type(mpi_datatype), public mpi_re2v1_data_cv
MPI derived type for NEKTON re2 cv data.
type(mpi_datatype), public mpi_re2v2_data_cv
MPI derived type for NEKTON re2 cv data.
integer, public mpi_logical_size
Size of MPI type logical.
subroutine mpi_type_nmsh_zone_free
Deallocate nmsh zone derived MPI type.
type(mpi_datatype), public mpi_re2v1_data_xy
MPI derived type for 2D NEKTON re2 data.
subroutine mpi_type_nmsh_curve_free
Deallocate nmsh curve derived MPI type.
subroutine mpi_type_re2_bc_init
Define a MPI derived type for re2 bc data.
subroutine mpi_type_re2_cv_free
Deallocate re2 cv derived MPI type.
type(mpi_datatype), public mpi_re2v1_data_bc
MPI derived type for NEKTON re2 bc data.
type(mpi_datatype), public mpi_stl_header
MPI Derived type for a STL header.
subroutine mpi_type_nmsh_hex_free
Deallocate nmsh hex derived MPI type.
type(mpi_datatype), public mpi_nmsh_zone
MPI derived type for Neko nmsh zone data.
type(mpi_datatype), public mpi_re2v2_data_bc
MPI derived type for NEKTON re2 bc data.
subroutine mpi_type_re2_xy_init
Define a MPI derived type for a 2d re2 data.
subroutine mpi_type_re2_xyz_init
Define a MPI derived type for a 3d re2 data.
type(mpi_datatype), public mpi_stl_triangle
MPI derived type for a STL triangle.
type(mpi_datatype), public mpi_re2v1_data_xyz
MPI derived type for 3D NEKTON re2 data.
subroutine, public neko_mpi_types_free
Deallocate all derived MPI types.
subroutine mpi_type_stl_header_free
Deallocate STL header dervied MPI type.
Stereolithography format.
Defines a triangular element.
NEKTON re2 bc data (version 1)
NEKTON re2 curve data (version 1)
NEKTON re2 element data (2d) (version 1)
NEKTON re2 element data (3d) (version 1)
NEKTON re2 bc data (version 2)
NEKTON re2 curve data (version 2)
NEKTON re2 element data (2d) (version 2)
NEKTON re2 element data (3d) (version 2)