Neko 0.9.99
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
mpi_types.f90
Go to the documentation of this file.
1! Copyright (c) 2019-2023, The Neko Authors
2! All rights reserved.
3!
4! Redistribution and use in source and binary forms, with or without
5! modification, are permitted provided that the following conditions
6! are met:
7!
8! * Redistributions of source code must retain the above copyright
9! notice, this list of conditions and the following disclaimer.
10!
11! * Redistributions in binary form must reproduce the above
12! copyright notice, this list of conditions and the following
13! disclaimer in the documentation and/or other materials provided
14! with the distribution.
15!
16! * Neither the name of the authors nor the names of its
17! contributors may be used to endorse or promote products derived
18! from this software without specific prior written permission.
19!
20! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21! "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22! LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23! FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24! COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25! INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26! BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27! LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28! CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29! LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30! ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31! POSSIBILITY OF SUCH DAMAGE.
32!
35 use comm
36 use re2
37 use nmsh
38 use stl
39 implicit none
40 private
41
42 type(mpi_datatype) :: mpi_nmsh_hex
43 type(mpi_datatype) :: mpi_nmsh_quad
44 type(mpi_datatype) :: mpi_nmsh_zone
45 type(mpi_datatype) :: mpi_nmsh_curve
46
47 type(mpi_datatype) :: mpi_re2v1_data_xyz
48 type(mpi_datatype) :: mpi_re2v1_data_xy
49 type(mpi_datatype) :: mpi_re2v1_data_cv
50 type(mpi_datatype) :: mpi_re2v1_data_bc
51
52 type(mpi_datatype) :: mpi_re2v2_data_xyz
53 type(mpi_datatype) :: mpi_re2v2_data_xy
54 type(mpi_datatype) :: mpi_re2v2_data_cv
55 type(mpi_datatype) :: mpi_re2v2_data_bc
56
57 type(mpi_datatype) :: mpi_stl_header
58 type(mpi_datatype) :: mpi_stl_triangle
59
60 integer :: mpi_real_size
66
67 ! Public derived types and size definitions
78
79 ! Public subroutines
81
82contains
83
86 integer :: ierr
87
88 ! Define derived types
93
98
101
102 ! Check sizes of MPI types
103 call mpi_type_size(mpi_real, mpi_real_size, ierr)
104 call mpi_type_size(mpi_double_precision, mpi_double_precision_size, ierr)
105 call mpi_type_size(mpi_character, mpi_character_size, ierr)
106 call mpi_type_size(mpi_integer, mpi_integer_size, ierr)
107 call mpi_type_size(mpi_logical, mpi_logical_size, ierr)
108 call mpi_type_size(mpi_real_precision, mpi_real_prec_size, ierr)
109
110 call mpi_barrier(neko_comm, ierr)
111
112 end subroutine neko_mpi_types_init
113
116 type(nmsh_hex_t) :: nmsh_hex
117 type(mpi_datatype) :: type(17)
118 integer(kind=MPI_ADDRESS_KIND) :: disp(17), base
119 integer :: len(17), i, ierr
120
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)
138
139
140 base = disp(1)
141 do i = 1, 17
142 disp(i) = mpi_aint_diff(disp(i), base)
143 end do
144
145 len(1) = 1
146 len(2:16:2) = 1
147 len(3:17:2) = 3
148
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)
153 call mpi_type_commit(mpi_nmsh_hex, ierr)
154 end subroutine mpi_type_nmsh_hex_init
155
158 type(nmsh_quad_t) :: nmsh_quad
159 type(mpi_datatype) :: type(9)
160 integer(kind=MPI_ADDRESS_KIND) :: disp(9), base
161 integer :: len(9), i, ierr
162
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)
172
173
174 base = disp(1)
175 do i = 1, 9
176 disp(i) = mpi_aint_diff(disp(i), base)
177 end do
178
179 len(1) = 1
180 len(2:8:2) = 1
181 len(3:9:2) = 3
182
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)
187 call mpi_type_commit(mpi_nmsh_quad, ierr)
188 end subroutine mpi_type_nmsh_quad_init
189
192 type(nmsh_zone_t) :: nmsh_zone
193 type(mpi_datatype) :: type(6)
194 integer(kind=MPI_ADDRESS_KIND) :: disp(6), base
195 integer :: len(6), i, ierr
196
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)
203
204 base = disp(1)
205 do i = 1, 6
206 disp(i) = mpi_aint_diff(disp(i), base)
207 end do
208
209 len(1:4) = 1
210 len(5) = 4
211 len(6) = 1
212 type = mpi_integer
213
214 call mpi_type_create_struct(6, len, disp, type, mpi_nmsh_zone, ierr)
215 call mpi_type_commit(mpi_nmsh_zone, ierr)
216
217 end subroutine mpi_type_nmsh_zone_init
218
221 type(nmsh_curve_el_t) :: nmsh_curve_el
222 type(mpi_datatype) :: type(3)
223 integer(kind=MPI_ADDRESS_KIND) :: disp(3), base
224 integer :: len(3), i, ierr
225
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)
229
230 base = disp(1)
231 do i = 1, 3
232 disp(i) = mpi_aint_diff(disp(i), base)
233 end do
234
235 len(1) = 1
236 len(2) = 5*12
237 len(3) = 12
238 type(1) = mpi_integer
239 type(2) = mpi_double_precision
240 type(3) = mpi_integer
241
242 call mpi_type_create_struct(3, len, disp, type, mpi_nmsh_curve, ierr)
243 call mpi_type_commit(mpi_nmsh_curve, ierr)
244
245 end subroutine mpi_type_nmsh_curve_init
246
247
250 type(re2v1_xyz_t) :: re2v1_data
251 type(re2v2_xyz_t) :: re2v2_data
252 type(mpi_datatype) :: type(4)
253 integer(kind=MPI_ADDRESS_KIND) :: disp(4), base
254 integer :: len(4), ierr, i
255
256 !
257 ! Setup version 1
258 !
259
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)
264
265 base = disp(1)
266 do i = 1, 4
267 disp(i) = mpi_aint_diff(disp(i), base)
268 end do
269
270 len = 8
271 len(1) = 1
272 type = mpi_real
273
274 call mpi_type_create_struct(4, len, disp, type, mpi_re2v1_data_xyz, ierr)
275 call mpi_type_commit(mpi_re2v1_data_xyz, ierr)
276
277 !
278 ! Setup version 2
279 !
280
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)
285
286 base = disp(1)
287 do i = 1, 4
288 disp(i) = mpi_aint_diff(disp(i), base)
289 end do
290
291 len = 8
292 len(1) = 1
293 type = mpi_double_precision
294
295 call mpi_type_create_struct(4, len, disp, type, mpi_re2v2_data_xyz, ierr)
296 call mpi_type_commit(mpi_re2v2_data_xyz, ierr)
297
298 end subroutine mpi_type_re2_xyz_init
299
302 type(re2v1_xy_t) :: re2v1_data
303 type(re2v2_xy_t) :: re2v2_data
304 type(mpi_datatype) :: type(3)
305 integer(kind=MPI_ADDRESS_KIND) :: disp(3), base
306 integer :: len(3), ierr, i
307
308 !
309 ! Setup version 1
310 !
311
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)
315
316 base = disp(1)
317 do i = 1, 3
318 disp(i) = mpi_aint_diff(disp(i), base)
319 end do
320
321 len = 4
322 len(1) = 1
323 type = mpi_real
324
325 call mpi_type_create_struct(3, len, disp, type, mpi_re2v1_data_xy, ierr)
326 call mpi_type_commit(mpi_re2v1_data_xy, ierr)
327
328 !
329 ! Setup version 2
330 !
331
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)
335
336 base = disp(1)
337 do i = 1, 3
338 disp(i) = mpi_aint_diff(disp(i), base)
339 end do
340
341 len = 4
342 len(1) = 1
343 type = mpi_double_precision
344
345 call mpi_type_create_struct(3, len, disp, type, mpi_re2v2_data_xy, ierr)
346 call mpi_type_commit(mpi_re2v2_data_xy, ierr)
347
348 end subroutine mpi_type_re2_xy_init
349
352 type(re2v1_curve_t) :: re2v1_data
353 type(re2v2_curve_t) :: re2v2_data
354 type(mpi_datatype) :: type(4)
355 integer(kind=MPI_ADDRESS_KIND) :: disp(4), base
356 integer :: len(4), ierr, i
357
358 !
359 ! Setup version 1
360 !
361
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)
366
367 base = disp(1)
368 do i = 1, 4
369 disp(i) = mpi_aint_diff(disp(i), base)
370 end do
371
372 len(1:2) = 1
373 len(3) = 5
374 len(4) = 4
375 type(1:2) = mpi_integer
376 type(3) = mpi_real
377 type(4) = mpi_character
378
379 call mpi_type_create_struct(4, len, disp, type, mpi_re2v1_data_cv, ierr)
380 call mpi_type_commit(mpi_re2v1_data_cv, ierr)
381
382 !
383 ! Setup version 2
384 !
385
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)
390
391 base = disp(1)
392 do i = 1, 4
393 disp(i) = mpi_aint_diff(disp(i), base)
394 end do
395
396 len(1:2) = 1
397 len(3) = 5
398 len(4) = 8
399 type(1:2) = mpi_double_precision
400 type(3) = mpi_double_precision
401 type(4) = mpi_character
402
403 call mpi_type_create_struct(4, len, disp, type, mpi_re2v2_data_cv, ierr)
404 call mpi_type_commit(mpi_re2v2_data_cv, ierr)
405
406 end subroutine mpi_type_re2_cv_init
407
410 type(re2v1_bc_t) :: re2v1_data
411 type(re2v2_bc_t) :: re2v2_data
412 type(mpi_datatype) :: type(4)
413 integer(kind=MPI_ADDRESS_KIND) :: disp(4), base
414 integer :: len(4), ierr, i
415
416 !
417 ! Setup version 1
418 !
419
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)
424
425 base = disp(1)
426 do i = 1, 4
427 disp(i) = mpi_aint_diff(disp(i), base)
428 end do
429
430 len(1:2) = 1
431 len(3) = 5
432 len(4) = 4
433 type(1:2) = mpi_integer
434 type(3) = mpi_real
435 type(4) = mpi_character
436
437 call mpi_type_create_struct(4, len, disp, type, mpi_re2v1_data_bc, ierr)
438 call mpi_type_commit(mpi_re2v1_data_bc, ierr)
439
440 !
441 ! Setup version 2
442 !
443
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)
448
449 base = disp(1)
450 do i = 1, 4
451 disp(i) = mpi_aint_diff(disp(i), base)
452 end do
453
454 len(1:2) = 1
455 len(3) = 5
456 len(4) = 8
457 type(1:2) = mpi_double_precision
458 type(3) = mpi_double_precision
459 type(4) = mpi_character
460
461 call mpi_type_create_struct(4, len, disp, type, mpi_re2v2_data_bc, ierr)
462 call mpi_type_commit(mpi_re2v2_data_bc, ierr)
463
464 end subroutine mpi_type_re2_bc_init
465
468 type(stl_hdr_t) :: stl_hdr
469 type(mpi_datatype) :: type(2)
470 integer(kind=MPI_ADDRESS_KIND) :: disp(2), base
471 integer :: len(2), ierr, i
472
473 call mpi_get_address(stl_hdr%hdr, disp(1), ierr)
474 call mpi_get_address(stl_hdr%ntri, disp(2), ierr)
475
476 base = disp(1)
477 do i = 1, 2
478 disp(i) = mpi_aint_diff(disp(i), base)
479 end do
480
481 len(1) = 80
482 len(2) = 1
483
484 type(1) = mpi_character
485 type(2) = mpi_integer
486
487 call mpi_type_create_struct(2, len, disp, type, mpi_stl_header, ierr)
488 call mpi_type_commit(mpi_stl_header, ierr)
489
490 end subroutine mpi_type_stl_header_init
491
494 type(stl_triangle_t) :: tri
495 type(mpi_datatype) :: type(5)
496 integer(kind=MPI_ADDRESS_KIND) :: disp(5), base
497 integer :: len(5), i, ierr
498
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)
504
505 base = disp(1)
506 do i = 1, 5
507 disp(i) = mpi_aint_diff(disp(i), base)
508 end do
509
510 len(1:4) = 3
511 len(5) = 1
512
513 type(1:4) = mpi_real
514 type(5) = mpi_integer2
515
516 call mpi_type_create_struct(5, len, disp, type, mpi_stl_triangle, ierr)
517 call mpi_type_commit(mpi_stl_triangle, ierr)
518
519 end subroutine mpi_type_stl_triangle_init
520
532 end subroutine neko_mpi_types_free
533
536 integer ierr
537 call mpi_type_free(mpi_nmsh_hex, ierr)
538 end subroutine mpi_type_nmsh_hex_free
539
542 integer ierr
543 call mpi_type_free(mpi_nmsh_quad, ierr)
544 end subroutine mpi_type_nmsh_quad_free
545
548 integer ierr
549 call mpi_type_free(mpi_nmsh_zone, ierr)
550 end subroutine mpi_type_nmsh_zone_free
551
554 integer ierr
555 call mpi_type_free(mpi_nmsh_curve, ierr)
556 end subroutine mpi_type_nmsh_curve_free
557
560 integer ierr
561 call mpi_type_free(mpi_re2v1_data_xyz, ierr)
562 call mpi_type_free(mpi_re2v2_data_xyz, ierr)
563 end subroutine mpi_type_re2_xyz_free
564
567 integer ierr
568 call mpi_type_free(mpi_re2v1_data_xy, ierr)
569 call mpi_type_free(mpi_re2v2_data_xy, ierr)
570 end subroutine mpi_type_re2_xy_free
571
574 integer ierr
575 call mpi_type_free(mpi_re2v1_data_cv, ierr)
576 call mpi_type_free(mpi_re2v2_data_cv, ierr)
577 end subroutine mpi_type_re2_cv_free
578
581 integer ierr
582 call mpi_type_free(mpi_re2v1_data_bc, ierr)
583 call mpi_type_free(mpi_re2v2_data_bc, ierr)
584 end subroutine mpi_type_re2_bc_free
585
588 integer ierr
589 call mpi_type_free(mpi_stl_header, ierr)
590 end subroutine mpi_type_stl_header_free
591
594 integer ierr
595 call mpi_type_free(mpi_stl_triangle, ierr)
596 end subroutine mpi_type_stl_triangle_free
597end module neko_mpi_types
Definition comm.F90:1
type(mpi_comm) neko_comm
MPI communicator.
Definition comm.F90:16
type(mpi_datatype) mpi_real_precision
MPI type for working precision of REAL types.
Definition comm.F90:23
MPI derived types.
Definition mpi_types.f90:34
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.
Definition mpi_types.f90:42
subroutine, public neko_mpi_types_init
Define all MPI derived types.
Definition mpi_types.f90:86
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.
Definition mpi_types.f90:61
integer, public mpi_real_prec_size
Size of working precision REAL types.
Definition mpi_types.f90:65
type(mpi_datatype), public mpi_re2v2_data_xyz
MPI derived type for 3D NEKTON re2 data.
Definition mpi_types.f90:52
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.
Definition mpi_types.f90:53
type(mpi_datatype), public mpi_nmsh_quad
MPI derived type for 2D Neko nmsh data.
Definition mpi_types.f90:43
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.
Definition mpi_types.f90:45
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.
Definition mpi_types.f90:62
integer, public mpi_real_size
Size of MPI type real.
Definition mpi_types.f90:60
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.
Definition mpi_types.f90:63
type(mpi_datatype), public mpi_re2v1_data_cv
MPI derived type for NEKTON re2 cv data.
Definition mpi_types.f90:49
type(mpi_datatype), public mpi_re2v2_data_cv
MPI derived type for NEKTON re2 cv data.
Definition mpi_types.f90:54
integer, public mpi_logical_size
Size of MPI type logical.
Definition mpi_types.f90:64
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.
Definition mpi_types.f90:48
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.
Definition mpi_types.f90:50
type(mpi_datatype), public mpi_stl_header
MPI Derived type for a STL header.
Definition mpi_types.f90:57
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.
Definition mpi_types.f90:44
type(mpi_datatype), public mpi_re2v2_data_bc
MPI derived type for NEKTON re2 bc data.
Definition mpi_types.f90:55
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.
Definition mpi_types.f90:58
type(mpi_datatype), public mpi_re2v1_data_xyz
MPI derived type for 3D NEKTON re2 data.
Definition mpi_types.f90:47
subroutine, public neko_mpi_types_free
Deallocate all derived MPI types.
subroutine mpi_type_stl_header_free
Deallocate STL header dervied MPI type.
Neko binary mesh format.
Definition nmsh.f90:2
NEKTON re2 format.
Definition re2.f90:2
Stereolithography format.
Definition stl.f90:2
Defines a triangular element.
Definition tri.f90:34
Neko curve data.
Definition nmsh.f90:39
Neko hex element data.
Definition nmsh.f90:24
Neko quad element data.
Definition nmsh.f90:19
Neko zone data.
Definition nmsh.f90:29
NEKTON re2 bc data (version 1)
Definition re2.f90:39
NEKTON re2 curve data (version 1)
Definition re2.f90:31
NEKTON re2 element data (2d) (version 1)
Definition re2.f90:25
NEKTON re2 element data (3d) (version 1)
Definition re2.f90:18
NEKTON re2 bc data (version 2)
Definition re2.f90:73
NEKTON re2 curve data (version 2)
Definition re2.f90:65
NEKTON re2 element data (2d) (version 2)
Definition re2.f90:59
NEKTON re2 element data (3d) (version 2)
Definition re2.f90:52
Defines a STL hdr.
Definition stl.f90:8
Defines a STL triangle.
Definition stl.f90:14