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)