117 type(mpi_datatype) ::
type(17)
118 integer(kind=MPI_ADDRESS_KIND) :: disp(17), base
119 integer :: len(17), i, ierr
121 call mpi_get_address(nmsh_hex%el_idx, disp(1), ierr)
122 call mpi_get_address(nmsh_hex%v(1)%v_idx, disp(2), ierr)
123 call mpi_get_address(nmsh_hex%v(1)%v_xyz, disp(3), ierr)
124 call mpi_get_address(nmsh_hex%v(2)%v_idx, disp(4), ierr)
125 call mpi_get_address(nmsh_hex%v(2)%v_xyz, disp(5), ierr)
126 call mpi_get_address(nmsh_hex%v(3)%v_idx, disp(6), ierr)
127 call mpi_get_address(nmsh_hex%v(3)%v_xyz, disp(7), ierr)
128 call mpi_get_address(nmsh_hex%v(4)%v_idx, disp(8), ierr)
129 call mpi_get_address(nmsh_hex%v(4)%v_xyz, disp(9), ierr)
130 call mpi_get_address(nmsh_hex%v(5)%v_idx, disp(10), ierr)
131 call mpi_get_address(nmsh_hex%v(5)%v_xyz, disp(11), ierr)
132 call mpi_get_address(nmsh_hex%v(6)%v_idx, disp(12), ierr)
133 call mpi_get_address(nmsh_hex%v(6)%v_xyz, disp(13), ierr)
134 call mpi_get_address(nmsh_hex%v(7)%v_idx, disp(14), ierr)
135 call mpi_get_address(nmsh_hex%v(7)%v_xyz, disp(15), ierr)
136 call mpi_get_address(nmsh_hex%v(8)%v_idx, disp(16), ierr)
137 call mpi_get_address(nmsh_hex%v(8)%v_xyz, disp(17), ierr)
142 disp(i) = mpi_aint_diff(disp(i), base)
149 type(1) = mpi_integer
150 type(2:16:2) = mpi_integer
151 type(3:17:2) = mpi_double_precision
152 call mpi_type_create_struct(17, len, disp,
type,
mpi_nmsh_hex, ierr)
159 type(mpi_datatype) ::
type(9)
160 integer(kind=MPI_ADDRESS_KIND) :: disp(9), base
161 integer :: len(9), i, ierr
163 call mpi_get_address(nmsh_quad%el_idx, disp(1), ierr)
164 call mpi_get_address(nmsh_quad%v(1)%v_idx, disp(2), ierr)
165 call mpi_get_address(nmsh_quad%v(1)%v_xyz, disp(3), ierr)
166 call mpi_get_address(nmsh_quad%v(2)%v_idx, disp(4), ierr)
167 call mpi_get_address(nmsh_quad%v(2)%v_xyz, disp(5), ierr)
168 call mpi_get_address(nmsh_quad%v(3)%v_idx, disp(6), ierr)
169 call mpi_get_address(nmsh_quad%v(3)%v_xyz, disp(7), ierr)
170 call mpi_get_address(nmsh_quad%v(4)%v_idx, disp(8), ierr)
171 call mpi_get_address(nmsh_quad%v(4)%v_xyz, disp(9), ierr)
176 disp(i) = mpi_aint_diff(disp(i), base)
183 type(1) = mpi_integer
184 type(2:8:2) = mpi_integer
185 type(3:9:2) = mpi_double_precision
186 call mpi_type_create_struct(9, len, disp,
type,
mpi_nmsh_quad, ierr)
193 type(mpi_datatype) ::
type(6)
194 integer(kind=MPI_ADDRESS_KIND) :: disp(6), base
195 integer :: len(6), i, ierr
197 call mpi_get_address(nmsh_zone%e, disp(1), ierr)
198 call mpi_get_address(nmsh_zone%f, disp(2), ierr)
199 call mpi_get_address(nmsh_zone%p_e, disp(3), ierr)
200 call mpi_get_address(nmsh_zone%p_f, disp(4), ierr)
201 call mpi_get_address(nmsh_zone%glb_pt_ids, disp(5), ierr)
202 call mpi_get_address(nmsh_zone%type, disp(6), ierr)
206 disp(i) = mpi_aint_diff(disp(i), base)
214 call mpi_type_create_struct(6, len, disp,
type,
mpi_nmsh_zone, ierr)
222 type(mpi_datatype) ::
type(3)
223 integer(kind=MPI_ADDRESS_KIND) :: disp(3), base
224 integer :: len(3), i, ierr
226 call mpi_get_address(nmsh_curve_el%e, disp(1), ierr)
227 call mpi_get_address(nmsh_curve_el%curve_data, disp(2), ierr)
228 call mpi_get_address(nmsh_curve_el%type, disp(3), ierr)
232 disp(i) = mpi_aint_diff(disp(i), base)
238 type(1) = mpi_integer
239 type(2) = mpi_double_precision
240 type(3) = mpi_integer
242 call mpi_type_create_struct(3, len, disp,
type,
mpi_nmsh_curve, ierr)
252 type(mpi_datatype) ::
type(4)
253 integer(kind=MPI_ADDRESS_KIND) :: disp(4), base
254 integer :: len(4), ierr, i
260 call mpi_get_address(re2v1_data%rgroup, disp(1), ierr)
261 call mpi_get_address(re2v1_data%x, disp(2), ierr)
262 call mpi_get_address(re2v1_data%y, disp(3), ierr)
263 call mpi_get_address(re2v1_data%z, disp(4), ierr)
267 disp(i) = mpi_aint_diff(disp(i), base)
281 call mpi_get_address(re2v2_data%rgroup, disp(1), ierr)
282 call mpi_get_address(re2v2_data%x, disp(2), ierr)
283 call mpi_get_address(re2v2_data%y, disp(3), ierr)
284 call mpi_get_address(re2v2_data%z, disp(4), ierr)
288 disp(i) = mpi_aint_diff(disp(i), base)
293 type = mpi_double_precision
304 type(mpi_datatype) ::
type(3)
305 integer(kind=MPI_ADDRESS_KIND) :: disp(3), base
306 integer :: len(3), ierr, i
312 call mpi_get_address(re2v1_data%rgroup, disp(1), ierr)
313 call mpi_get_address(re2v1_data%x, disp(2), ierr)
314 call mpi_get_address(re2v1_data%y, disp(3), ierr)
318 disp(i) = mpi_aint_diff(disp(i), base)
332 call mpi_get_address(re2v2_data%rgroup, disp(1), ierr)
333 call mpi_get_address(re2v2_data%x, disp(2), ierr)
334 call mpi_get_address(re2v2_data%y, disp(3), ierr)
338 disp(i) = mpi_aint_diff(disp(i), base)
343 type = mpi_double_precision
354 type(mpi_datatype) ::
type(4)
355 integer(kind=MPI_ADDRESS_KIND) :: disp(4), base
356 integer :: len(4), ierr, i
362 call mpi_get_address(re2v1_data%elem, disp(1), ierr)
363 call mpi_get_address(re2v1_data%zone, disp(2), ierr)
364 call mpi_get_address(re2v1_data%point, disp(3), ierr)
365 call mpi_get_address(re2v1_data%type, disp(4), ierr)
369 disp(i) = mpi_aint_diff(disp(i), base)
375 type(1:2) = mpi_integer
377 type(4) = mpi_character
386 call mpi_get_address(re2v2_data%elem, disp(1), ierr)
387 call mpi_get_address(re2v2_data%zone, disp(2), ierr)
388 call mpi_get_address(re2v2_data%point, disp(3), ierr)
389 call mpi_get_address(re2v2_data%type, disp(4), ierr)
393 disp(i) = mpi_aint_diff(disp(i), base)
399 type(1:2) = mpi_double_precision
400 type(3) = mpi_double_precision
401 type(4) = mpi_character
412 type(mpi_datatype) ::
type(4)
413 integer(kind=MPI_ADDRESS_KIND) :: disp(4), base
414 integer :: len(4), ierr, i
420 call mpi_get_address(re2v1_data%elem, disp(1), ierr)
421 call mpi_get_address(re2v1_data%face, disp(2), ierr)
422 call mpi_get_address(re2v1_data%bc_data, disp(3), ierr)
423 call mpi_get_address(re2v1_data%type, disp(4), ierr)
427 disp(i) = mpi_aint_diff(disp(i), base)
433 type(1:2) = mpi_integer
435 type(4) = mpi_character
444 call mpi_get_address(re2v2_data%elem, disp(1), ierr)
445 call mpi_get_address(re2v2_data%face, disp(2), ierr)
446 call mpi_get_address(re2v2_data%bc_data, disp(3), ierr)
447 call mpi_get_address(re2v2_data%type, disp(4), ierr)
451 disp(i) = mpi_aint_diff(disp(i), base)
457 type(1:2) = mpi_double_precision
458 type(3) = mpi_double_precision
459 type(4) = mpi_character
469 type(mpi_datatype) ::
type(2)
470 integer(kind=MPI_ADDRESS_KIND) :: disp(2), base
471 integer :: len(2), ierr, i
473 call mpi_get_address(stl_hdr%hdr, disp(1), ierr)
474 call mpi_get_address(stl_hdr%ntri, disp(2), ierr)
478 disp(i) = mpi_aint_diff(disp(i), base)
484 type(1) = mpi_character
485 type(2) = mpi_integer
487 call mpi_type_create_struct(2, len, disp,
type,
mpi_stl_header, ierr)
495 type(mpi_datatype) ::
type(5)
496 integer(kind=MPI_ADDRESS_KIND) :: disp(5), base
497 integer :: len(5), i, ierr
499 call mpi_get_address(
tri%n, disp(1), ierr)
500 call mpi_get_address(
tri%v1, disp(2), ierr)
501 call mpi_get_address(
tri%v2, disp(3), ierr)
502 call mpi_get_address(
tri%v3, disp(4), ierr)
503 call mpi_get_address(
tri%attrib, disp(5), ierr)
507 disp(i) = mpi_aint_diff(disp(i), base)
514 type(5) = mpi_integer2
type(mpi_comm) neko_comm
MPI communicator.
type(mpi_datatype) mpi_real_precision
MPI type for working precision of REAL types.
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)