Yet Another eXchange Tool  0.9.0
yaxt.f90
Go to the documentation of this file.
1 
13 
14 !
15 ! Keywords:
16 ! Maintainer: Jörg Behrens <behrens@dkrz.de>
17 ! Moritz Hanke <hanke@dkrz.de>
18 ! Thomas Jahns <jahns@dkrz.de>
19 ! URL: https://doc.redmine.dkrz.de/yaxt/html/
20 !
21 ! Redistribution and use in source and binary forms, with or without
22 ! modification, are permitted provided that the following conditions are
23 ! met:
24 !
25 ! Redistributions of source code must retain the above copyright notice,
26 ! this list of conditions and the following disclaimer.
27 !
28 ! Redistributions in binary form must reproduce the above copyright
29 ! notice, this list of conditions and the following disclaimer in the
30 ! documentation and/or other materials provided with the distribution.
31 !
32 ! Neither the name of the DKRZ GmbH nor the names of its contributors
33 ! may be used to endorse or promote products derived from this software
34 ! without specific prior written permission.
35 !
36 ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
37 ! IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
38 ! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
39 ! PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
40 ! OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
41 ! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
42 ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
43 ! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
44 ! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
45 ! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
46 ! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47 !
48 
49 MODULE yaxt
50  !
51  ! Fortran interface to yaxt implementation
52  !
53  USE xt_core, ONLY: i4, xt_int_kind, xt_int_mpidt, &
56  xt_pos_ext, OPERATOR(/=), OPERATOR(==), &
57  xt_set_abort_handler => set_abort_handler, xt_restore_default_abort_hndl
64  USE xt_sort, ONLY: xt_sort_int, xt_sort_index, xt_sort_idxpos, &
65  xt_sort_permutation
66  USE xt_idxlist_abstract, ONLY: &
75  xt_idxlist_get_num_indices, xt_is_null, &
106  xt_redist_repeat_new, xt_is_null, xt_redist_get_mpi_comm, &
111  xt_redist_get_recv_mpi_datatype, xt_redist_get_send_mpi_datatype, &
121  xt_is_null, xt_request_null
123 
124  USE iso_c_binding, ONLY: c_int, c_ptr, c_null_ptr, c_loc
125  IMPLICIT NONE
126 
127  PRIVATE
128 
129  PUBLIC :: xt_initialize, xt_finalize, xt_abort, xt_get_default_comm, &
131  xt_set_abort_handler, xt_restore_default_abort_hndl, &
133  xt_sort_int, xt_sort_index, xt_sort_idxpos, xt_sort_permutation, &
166  xt_redist_msg, &
170  xt_redist_get_mpi_comm, &
171  xt_redist_get_recv_mpi_datatype, xt_redist_get_send_mpi_datatype, &
176  xt_is_null, &
177  OPERATOR(==), OPERATOR(/=), char, &
181 
188 
195 
196  INTERFACE OPERATOR(==)
197  MODULE PROCEDURE xt_bounds_eq
198  END INTERFACE OPERATOR(==)
199 
200  INTERFACE OPERATOR(/=)
201  MODULE PROCEDURE xt_bounds_ne
202  END INTERFACE OPERATOR(/=)
203 
204  TYPE, BIND(C), PUBLIC :: xt_modifier
205  TYPE(xt_idxlist) :: extract
206  TYPE(xt_idxlist) :: subst
207  INTEGER(c_int) :: mask
208  END TYPE xt_modifier
209 
210  INTERFACE
211  FUNCTION xt_idxmod_new_c(patch, modifier, modifier_num, mstate_ptr) &
212  bind(c, name='xt_idxmod_new') result(res)
213  IMPORT :: xt_int_kind, xt_modifier, c_ptr, c_int
214  IMPLICIT NONE
215  TYPE(c_ptr), VALUE, INTENT(in) :: patch
216  INTEGER(c_int), VALUE, INTENT(in) :: modifier_num
217  TYPE(xt_modifier), INTENT(in) :: modifier(modifier_num)
218  TYPE(c_ptr), VALUE, INTENT(in) :: mstate_ptr
219  TYPE(c_ptr) :: res
220  END FUNCTION xt_idxmod_new_c
221  END INTERFACE
222 
223  INTERFACE xt_idxmod_new
224  MODULE PROCEDURE xt_idxmod_new_a1d
225  MODULE PROCEDURE xt_idxmod_new_a1d_a1d
226  MODULE PROCEDURE xt_idxmod_new_a1d_i4
227  MODULE PROCEDURE xt_idxmod_new_a1d_i4_a1d
228  MODULE PROCEDURE xt_idxmod_new_a1d_i4_a2d
229  END INTERFACE xt_idxmod_new
230  CHARACTER(len=*), PARAMETER :: filename = 'yaxt.f90'
231 CONTAINS
232 
233  FUNCTION xt_idxempty_new() RESULT(res)
234  IMPLICIT NONE
235  TYPE(xt_idxlist) :: res
236 
237  INTERFACE
238  FUNCTION xt_idxempty_new_c() &
239  bind(c, name='xt_idxempty_new') result(res_ptr)
240  IMPORT :: c_ptr
241  IMPLICIT NONE
242  TYPE(c_ptr) :: res_ptr
243  END FUNCTION xt_idxempty_new_c
244  END INTERFACE
245 
246  res = xt_idxlist_c2f(xt_idxempty_new_c())
247 
248  END FUNCTION xt_idxempty_new
249 
250  ELEMENTAL FUNCTION xt_bounds_eq(a, b) RESULT(a_equals_b)
251  TYPE(xt_bounds), INTENT(in) :: a, b
252  LOGICAL :: a_equals_b
253  a_equals_b = a%size == b%size .AND. a%start == b%start
254  END FUNCTION xt_bounds_eq
255 
256  ELEMENTAL FUNCTION xt_bounds_ne(a, b) RESULT(a_equals_b)
257  TYPE(xt_bounds), INTENT(in) :: a, b
258  LOGICAL :: a_equals_b
259  a_equals_b = a%size /= b%size .OR. a%start /= b%start
260  END FUNCTION xt_bounds_ne
261 
262  FUNCTION xt_idxmod_new_a1d(patch, modifier) RESULT(res)
263  IMPLICIT NONE
264  TYPE(xt_idxlist), INTENT(in) :: patch
265  TYPE(xt_modifier), INTENT(in) :: modifier(:)
266  TYPE(xt_idxlist) :: res
267 
268  INTEGER :: num_modifier
269  INTEGER(c_int) :: num_modifier_c
270  num_modifier = SIZE(modifier)
271  IF (num_modifier > huge(1_c_int)) &
272  CALL xt_abort("number of modifiers too high", filename, __line__)
273  num_modifier_c = int(num_modifier, c_int)
274  res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
275  num_modifier_c, c_null_ptr))
276  END FUNCTION xt_idxmod_new_a1d
277 
278  FUNCTION xt_idxmod_new_a1d_a1d(patch, modifier, mstate) RESULT(res)
279  IMPLICIT NONE
280  TYPE(xt_idxlist), INTENT(in) :: patch
281  TYPE(xt_modifier), INTENT(in) :: modifier(:)
282  INTEGER(c_int), TARGET, INTENT(inout) :: mstate(*)
283  TYPE(xt_idxlist) :: res
284 
285  INTEGER :: num_modifier
286  INTEGER(c_int) :: num_modifier_c
287  num_modifier = SIZE(modifier)
288  IF (num_modifier > huge(1_c_int)) &
289  CALL xt_abort("number of modifiers too high", filename, __line__)
290  num_modifier_c = int(num_modifier, c_int)
291  res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
292  num_modifier_c, c_loc(mstate)))
293  END FUNCTION xt_idxmod_new_a1d_a1d
294 
295  FUNCTION xt_idxmod_new_a1d_i4(patch, modifier, num_modifier) RESULT(res)
296  IMPLICIT NONE
297  TYPE(xt_idxlist), INTENT(in) :: patch
298  TYPE(xt_modifier), INTENT(in) :: modifier(*)
299  INTEGER(i4), INTENT(in) :: num_modifier
300  TYPE(xt_idxlist) :: res
301  INTEGER(c_int) :: num_modifier_c
302 
303  num_modifier_c = int(num_modifier, c_int)
304  res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
305  num_modifier_c, c_null_ptr))
306  END FUNCTION xt_idxmod_new_a1d_i4
307 
308  FUNCTION xt_idxmod_new_a1d_i4_a1d(patch, modifier, num_modifier, mstate) &
309  result(res)
310  IMPLICIT NONE
311  TYPE(xt_idxlist), INTENT(in) :: patch
312  TYPE(xt_modifier), INTENT(in) :: modifier(*)
313  INTEGER(i4), INTENT(in) :: num_modifier
314  INTEGER(c_int), TARGET, INTENT(inout) :: mstate(*)
315  TYPE(xt_idxlist) :: res
316  INTEGER(c_int) :: num_modifier_c
317 
318  num_modifier_c = int(num_modifier, c_int)
319  res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
320  num_modifier_c, c_loc(mstate)))
321  END FUNCTION xt_idxmod_new_a1d_i4_a1d
322 
323  FUNCTION xt_idxmod_new_a1d_i4_a2d(patch, modifier, num_modifier, mstate) &
324  result(res)
325  IMPLICIT NONE
326  TYPE(xt_idxlist), INTENT(in) :: patch
327  TYPE(xt_modifier), INTENT(in) :: modifier(*)
328  INTEGER(i4), INTENT(in) :: num_modifier
329  INTEGER(c_int), TARGET, INTENT(inout) :: mstate(1,*)
330  TYPE(xt_idxlist) :: res
331  INTEGER(c_int) :: num_modifier_c
332 
333  num_modifier_c = int(num_modifier, c_int)
334  res = xt_idxlist_c2f(xt_idxmod_new_c(xt_idxlist_f2c(patch), modifier, &
335  num_modifier_c, c_loc(mstate)))
336  END FUNCTION xt_idxmod_new_a1d_i4_a2d
337 
338 END MODULE yaxt
339 !
340 ! Local Variables:
341 ! f90-continuation-indent: 5
342 ! coding: utf-8
343 ! indent-tabs-mode: nil
344 ! show-trailing-whitespace: t
345 ! require-trailing-newline: t
346 ! End:
347 !
subroutine, public set_abort_handler(f)
set routine f to use as abort function which is called on xt_abort
Definition: xt_core_f.f90:216
integer, parameter, public xt_int_kind
Definition: xt_core_f.f90:54
integer, parameter, public xt_int_mpidt
Definition: xt_core_f.f90:67
integer, parameter, public i4
Definition: xt_core_f.f90:59
external, public xt_slice_c_loc
Definition: xt_core_f.f90:146
external, public xt_idxlist_unpack_f
external, public xt_idxlist_pack_f
type(xt_idxlist) function, public xt_idxlist_c2f(idxlist)
type(xt_idxlist) function, public xt_idxfsection_new(start, global_size, local_size, local_start)
Fortran style version of xt_idxsection_new. Compared to xt_idxsection_new, here the elements of the v...
type(xt_redist) function, public xt_redist_c2f(redist)
type(xt_request), parameter, public xt_request_null
@, public xt_reorder_none
Definition: xt_xmap_f.f90:91
@, public xt_reorder_send_up
Definition: xt_xmap_f.f90:91
type(xt_xmap) function, public xt_xmap_c2f(xmap)
Definition: xt_xmap_f.f90:157
integer, parameter, public xt_reorder_type_kind
Definition: xt_xmap_f.f90:93
@, public xt_reorder_recv_up
Definition: xt_xmap_f.f90:91
Definition: yaxt.f90:49
describes range of positions starting with start up to start + size - 1 i.e. [start,...
Definition: xt_core_f.f90:91
int xt_exchanger_id_by_name(const char *name)
Definition: xt_config.c:103
void xt_config_delete(Xt_config config)
Definition: xt_config.c:76
void xt_config_set_exchange_method(Xt_config config, int method)
Definition: xt_config.c:125
@ xt_exchanger_irecv_isend
Definition: xt_config.h:75
@ xt_exchanger_irecv_send
Definition: xt_config.h:74
@ xt_exchanger_irecv_isend_packed
Definition: xt_config.h:76
@ xt_exchanger_neigh_alltoall
Definition: xt_config.h:78
@ xt_exchanger_mix_isend_irecv
Definition: xt_config.h:77
Xt_config xt_config_new(void)
Definition: xt_config.c:69
int xt_config_get_exchange_method(Xt_config config)
Definition: xt_config.c:111
int xt_finalized(void)
Definition: xt_init.c:113
void xt_initialize(MPI_Comm default_comm)
Definition: xt_init.c:70
int xt_initialized(void)
Definition: xt_init.c:107
void xt_finalize(void)
Definition: xt_init.c:89
Xt_idxlist xt_idxempty_new(void)
Definition: xt_idxempty.c:165
int xt_idxlist_get_num_indices(Xt_idxlist idxlist)
Definition: xt_idxlist.c:98
int xt_idxlist_get_positions_of_indices(Xt_idxlist idxlist, const Xt_int *indices, int num_indices, int *positions, int single_match_only)
Definition: xt_idxlist.c:203
Xt_idxlist xt_idxlist_unpack(void *buffer, int buffer_size, int *position, MPI_Comm comm)
int xt_idxlist_get_index_at_position(Xt_idxlist idxlist, int position, Xt_int *index)
Definition: xt_idxlist.c:158
void xt_idxlist_get_indices(Xt_idxlist idxlist, Xt_int *indices)
Definition: xt_idxlist.c:102
int xt_idxlist_get_position_of_index_off(Xt_idxlist idxlist, Xt_int index, int *position, int offset)
Definition: xt_idxlist.c:264
void xt_idxlist_pack(Xt_idxlist idxlist, void *buffer, int buffer_size, int *position, MPI_Comm comm)
Definition: xt_idxlist.c:85
size_t xt_idxlist_get_pack_size(Xt_idxlist idxlist, MPI_Comm comm)
Definition: xt_idxlist.c:79
int xt_idxlist_get_indices_at_positions(Xt_idxlist idxlist, const int *positions, int num_pos, Xt_int *indices, Xt_int undef_idx)
Definition: xt_idxlist.c:165
void xt_idxlist_get_index_stripes(Xt_idxlist idxlist, struct Xt_stripe **stripes, int *num_stripes)
Definition: xt_idxlist.c:118
void xt_idxlist_get_bounding_box(Xt_idxlist idxlist, unsigned ndim, const Xt_int global_size[ndim], Xt_int global_start_index, struct Xt_bounds bounds[ndim])
Definition: xt_idxlist.c:332
int xt_idxlist_get_pos_exts_of_index_stripes(Xt_idxlist idxlist, int num_stripes, const struct Xt_stripe stripes[num_stripes], int *num_ext, struct Xt_pos_ext **pos_ext, int single_match_only)
Definition: xt_idxlist.c:237
Xt_idxlist xt_idxlist_get_intersection(Xt_idxlist idxlist_src, Xt_idxlist idxlist_dst)
Xt_idxlist xt_idxlist_copy(Xt_idxlist idxlist)
Definition: xt_idxlist.c:93
const Xt_int * xt_idxlist_get_indices_const(Xt_idxlist idxlist)
Definition: xt_idxlist.c:108
int xt_idxlist_get_position_of_index(Xt_idxlist idxlist, Xt_int index, int *position)
Definition: xt_idxlist.c:196
void xt_idxlist_delete(Xt_idxlist idxlist)
Definition: xt_idxlist.c:74
Xt_idxlist xt_idxlist_collection_new(Xt_idxlist *idxlists, int num_idxlists)
Xt_idxlist xt_idxmod_new(Xt_idxlist patch_idxlist, struct Xt_modifier *modifier, int modifier_num, int *mstate)
generates a new index list based on an index list and a sequence of modifiers
Definition: xt_idxmod.c:61
Xt_idxlist xt_idxsection_new(Xt_int start, int num_dimensions, const Xt_int global_size[num_dimensions], const int local_size[num_dimensions], const Xt_int local_start[num_dimensions])
Xt_idxlist xt_idxstripes_from_idxlist_new(Xt_idxlist idxlist_src)
Xt_idxlist xt_idxstripes_new(struct Xt_stripe const *stripes, int num_stripes)
Xt_idxlist xt_idxvec_from_stripes_new(const struct Xt_stripe *stripes, int num_stripes)
Xt_idxlist xt_idxvec_new(const Xt_int *idxlist, int num_indices)
Definition: xt_idxvec.c:163
void xt_redist_delete(Xt_redist redist)
Definition: xt_redist.c:68
int xt_redist_get_num_recv_msg(Xt_redist redist)
Definition: xt_redist.c:102
int xt_redist_get_num_send_msg(Xt_redist redist)
Definition: xt_redist.c:97
void xt_redist_a_exchange1(Xt_redist redist, const void *src_data, void *dst_data, Xt_request *request)
Definition: xt_redist.c:91
Xt_redist xt_redist_copy(Xt_redist redist)
Definition: xt_redist.c:63
void xt_redist_a_exchange(Xt_redist redist, int num_arrays, const void **src_data, void **dst_data, Xt_request *request)
Definition: xt_redist.c:79
void xt_redist_s_exchange(Xt_redist redist, int num_arrays, const void **src_data, void **dst_data)
Definition: xt_redist.c:73
void xt_redist_s_exchange1(Xt_redist redist, const void *src_data, void *dst_data)
Definition: xt_redist.c:86
Xt_redist xt_redist_collection_new(Xt_redist *redists, int num_redists, int cache_size, MPI_Comm comm)
Xt_redist xt_redist_collection_static_new(Xt_redist *redists, int num_redists, const MPI_Aint src_displacements[num_redists], const MPI_Aint dst_displacements[num_redists], MPI_Comm comm)
Xt_redist xt_redist_p2p_custom_new(Xt_xmap xmap, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_off_new(Xt_xmap xmap, const int *src_offsets, const int *dst_offsets, MPI_Datatype datatype)
Xt_redist xt_redist_p2p_blocks_custom_new(Xt_xmap xmap, const int *src_block_sizes, int src_block_num, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_new(Xt_xmap xmap, MPI_Datatype datatype)
Xt_redist xt_redist_p2p_off_custom_new(Xt_xmap xmap, const int *src_offsets, const int *dst_offsets, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_blocks_off_custom_new(Xt_xmap xmap, const int *src_block_offsets, const int *src_block_sizes, int src_block_num, const int *dst_block_offsets, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_ext_new(Xt_xmap xmap, int num_src_ext, const struct Xt_offset_ext src_extents[], int num_dst_ext, const struct Xt_offset_ext dst_extents[], MPI_Datatype datatype)
Xt_redist xt_redist_p2p_blocks_off_new(Xt_xmap xmap, const int *src_block_offsets, const int *src_block_sizes, int src_block_num, const int *dst_block_offsets, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype)
Xt_redist xt_redist_p2p_blocks_new(Xt_xmap xmap, const int *src_block_sizes, int src_block_num, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype)
Xt_redist xt_redist_repeat_new(Xt_redist redist, MPI_Aint src_extent, MPI_Aint dst_extent, int num_repetitions, const int displacements[num_repetitions])
Xt_redist xt_redist_single_array_base_new(int nsend, int nrecv, const struct Xt_redist_msg send_msgs[], const struct Xt_redist_msg recv_msgs[], MPI_Comm comm)
Xt_redist xt_redist_single_array_base_custom_new(int nsend, int nrecv, const struct Xt_redist_msg send_msgs[], const struct Xt_redist_msg recv_msgs[], MPI_Comm comm, Xt_config config)
void xt_request_wait(Xt_request *request)
Definition: xt_request.c:57
void xt_request_test(Xt_request *request, int *flag)
Definition: xt_request.c:65
Xt_xmap xt_xmap_update_positions(Xt_xmap xmap, const int *src_positions, const int *dst_positions)
Definition: xt_xmap.c:146
int xt_xmap_iterator_next(Xt_xmap_iter iter)
Definition: xt_xmap.c:100
Xt_xmap xt_xmap_reorder(Xt_xmap xmap, enum xt_reorder_type type)
Definition: xt_xmap.c:142
void xt_xmap_delete(Xt_xmap xmap)
Definition: xt_xmap.c:85
Xt_xmap_iter xt_xmap_get_out_iterator(Xt_xmap xmap)
Definition: xt_xmap.c:95
int xt_xmap_iterator_get_num_transfer_pos_ext(Xt_xmap_iter iter)
Definition: xt_xmap.c:125
Xt_xmap xt_xmap_spread(Xt_xmap xmap, int num_repetitions, const int src_displacements[num_repetitions], const int dst_displacements[num_repetitions])
Definition: xt_xmap.c:151
int const * xt_xmap_iterator_get_transfer_pos(Xt_xmap_iter iter)
Definition: xt_xmap.c:110
void xt_xmap_iterator_delete(Xt_xmap_iter iter)
Definition: xt_xmap.c:129
int xt_xmap_get_num_destinations(Xt_xmap xmap)
Definition: xt_xmap.c:60
Xt_xmap xt_xmap_copy(Xt_xmap xmap)
Definition: xt_xmap.c:80
int xt_xmap_iterator_get_rank(Xt_xmap_iter iter)
Definition: xt_xmap.c:105
int xt_xmap_get_max_dst_pos(Xt_xmap xmap)
Definition: xt_xmap.c:138
int xt_xmap_get_num_sources(Xt_xmap xmap)
Definition: xt_xmap.c:65
void xt_xmap_get_source_ranks(Xt_xmap xmap, int *ranks)
Definition: xt_xmap.c:75
const struct Xt_pos_ext * xt_xmap_iterator_get_transfer_pos_ext(Xt_xmap_iter iter)
Definition: xt_xmap.c:121
Xt_xmap_iter xt_xmap_get_in_iterator(Xt_xmap xmap)
Definition: xt_xmap.c:90
void xt_xmap_get_destination_ranks(Xt_xmap xmap, int *ranks)
Definition: xt_xmap.c:70
int xt_xmap_get_max_src_pos(Xt_xmap xmap)
Definition: xt_xmap.c:134
int xt_xmap_iterator_get_num_transfer_pos(Xt_xmap_iter iter)
Definition: xt_xmap.c:115
Xt_xmap xt_xmap_all2all_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
Xt_xmap xt_xmap_dist_dir_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
Xt_xmap xt_xmap_dist_dir_intercomm_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm inter_comm, MPI_Comm intra_comm)
Xt_xmap xt_xmap_intersection_ext_new(int num_src_intersections, const struct Xt_com_list src_com[num_src_intersections], int num_dst_intersections, const struct Xt_com_list dst_com[num_dst_intersections], Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
Xt_xmap xt_xmap_intersection_pos_new(int num_src_msg, const struct Xt_com_pos src_com[num_src_msg], int num_dst_msg, const struct Xt_com_pos dst_com[num_dst_msg], MPI_Comm comm)
Xt_xmap xt_xmap_intersection_new(int num_src_intersections, const struct Xt_com_list src_com[num_src_intersections], int num_dst_intersections, const struct Xt_com_list dst_com[num_dst_intersections], Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
Xt_idxlist xt_idxlist_f2c(struct xt_idxlist_f *p)
Definition: yaxt_f2c.c:156
Xt_xmap xt_xmap_f2c(struct xt_xmap_f *p)
Definition: yaxt_f2c.c:176