mpicomm

Module

Description

$Id$

This module takes care of MPI communication.

Data layout for each processor (`-’ marks ghost points, `+’ real points of the processor shown)

n = mz - - - - - - - - - . - - - - - - - - -

. - - - - - - - - - . - - - - - - - - - . - - - - - - - - - . - - - - - - - - - . n2 - - - + + + + + + . + + + + + + - - - . . - - - + + + + + + . + + + + + + - - - . . n2i - - - + + + + + + . + + + + + + - - - . . - - - + + + + + + . + + + + + + - - - . . - - - + + + + + + . + + + + + + - - - . . - - - + + + + + + . + + + + + + - - -

… … … … … … .

. . - - - + + + + + + . + + + + + + - - - . . - - - + + + + + + . + + + + + + - - - . . - - - + + + + + + . + + + + + + - - - . . n1i - - - + + + + + + . + + + + + + - - - . . - - - + + + + + + . + + + + + + - - - . n1 - - - + + + + + + . + + + + + + - - - 3 - - - - - - - - - . - - - - - - - - - 2 - - - - - - - - - . - - - - - - - - -

n = 1 - - - - - - - - - . - - - - - - - - -

m1i m2i

m1… . . … . . m2

m = 1 2 3 … … … … . . my

Thus, the indices for some important regions are
ghost zones:

1:nghost (1:m1-1) and my-nghost+1:my (m2+1:my)

real points:

m1:m2

boundary points (which become ghost points for adjacent processors):

m1:m1i and m2i:m2

inner points for periodic bc (i.e. points where 7-point derivatives are unaffected by ghost information):

m1i+1:m2i-1

inner points for general bc (i.e. points where 7-point derivatives are unaffected by ghost information plus boundcond for m1,m2):

m1i+2:m2i-2

Quick access

Types:

foreign_setup

Variables:

bufsizes_yz, bufsizes_yz_corn, collect_from_pencil_xy, collect_from_pencil_xy_2d, collect_grid, collect_xy, collect_xy_0d, collect_xy_2d, collect_xy_3d, collect_xy_4d, collect_z, collect_z_3d, collect_z_4d, create_communicators, cyinyang, displs, distribute_to_pencil_xy, distribute_to_pencil_xy_2d, distribute_xy, distribute_xy_0d, distribute_xy_2d, distribute_xy_3d, distribute_xy_4d, distribute_yz, distribute_yz_3d, distribute_yz_4d, distribute_z, distribute_z_3d, distribute_z_4d, fahi, fahihi, fake_parallel_close, fake_parallel_open, falo, falolo, fao, fbhi, fbhihi, fblo, fblolo, fbo, fetch_to_process_masked, foreign_setup, get_foreign_snap_finalize, get_foreign_snap_initiate, get_limits, index_to_iproc_comm, initialize_foreign_comm, intcoeffs, io_perm, io_succ, iproc, ipx, ipx_partner, ipy, ipz, irecv_rq_fromlastlastya, irecv_rq_fromlastlastyb, irecv_rq_fromlastya, irecv_rq_fromlastyb, irecv_rq_fromnextnextya, irecv_rq_fromnextnextyb, irecv_rq_fromnextya, irecv_rq_fromnextyb, irecv_rq_npole, irecv_rq_spole, irecv_stat_fl, irecv_stat_fll, irecv_stat_flu, irecv_stat_fu, irecv_stat_ful, irecv_stat_fuu, irecv_stat_np, irecv_stat_npole, irecv_stat_sp, irecv_stat_spole, isend_rq_npole, isend_rq_spole, isend_rq_tolastlastya, isend_rq_tolastlastyb, isend_rq_tolastya, isend_rq_tolastyb, isend_rq_tonextnextya, isend_rq_tonextnextyb, isend_rq_tonextya, isend_rq_tonextyb, isend_stat_np, isend_stat_npole, isend_stat_sp, isend_stat_spole, isend_stat_tl, isend_stat_tll, isend_stat_tlu, isend_stat_tu, isend_stat_tul, isend_stat_tuu, isendrcv_bdry_npole, isendrcv_bdry_spole, ixbeam, ixyplane, ixzplane, iybeam, iyzplane, izbeam, lastlastya, lastlastyb, lastya, lastyb, lbufxi, lbufxo, lbufyi, lbufyo, lbufzi, lbufzo, lcommunicate_y, left, len_cornbuf, len_cornstrip_y, len_cornstrip_z, lfirst_proc_x, lfirst_proc_xy, lfirst_proc_xyz, lfirst_proc_xz, lfirst_proc_y, lfirst_proc_yz, lfirst_proc_z, llast_proc_x, llast_proc_xy, llast_proc_xyz, llast_proc_xz, llast_proc_y, llast_proc_yz, llast_proc_z, llbufi, llbufo, llcornr, llcorns, lroot, lubufi, lubufo, lucornr, lucorns, lyang, merge_1d, mid, midy, midz, mpi_2float, mpi_any_tag, mpi_cmplx, mpi_comm_grid, mpi_comm_pencil, mpi_comm_rslice, mpi_comm_universe, mpi_comm_world, mpi_comm_xbeam, mpi_comm_xyplane, mpi_comm_xzplane, mpi_comm_ybeam, mpi_comm_yzplane, mpi_comm_zbeam, mpi_info_null, mpi_precision, mpiabort, mpiallreduce_and, mpiallreduce_and_scl, mpiallreduce_max, mpiallreduce_max_arr, mpiallreduce_max_scl, mpiallreduce_max_scl_dbl, mpiallreduce_max_scl_int, mpiallreduce_max_scl_sgl, mpiallreduce_merge, mpiallreduce_min, mpiallreduce_min_dbl, mpiallreduce_min_scl_dbl, mpiallreduce_min_scl_int, mpiallreduce_min_scl_sgl, mpiallreduce_min_sgl, mpiallreduce_or, mpiallreduce_or_arr_inplace, mpiallreduce_or_scl, mpiallreduce_sum, mpiallreduce_sum_arr3, mpiallreduce_sum_arr4, mpiallreduce_sum_arr5, mpiallreduce_sum_arr_inplace, mpiallreduce_sum_int, mpiallreduce_sum_int_arr, mpiallreduce_sum_int_arr_inplace, mpiallreduce_sum_int_scl, mpiallreduce_sum_scl, mpibcast, mpibcast_char, mpibcast_char_arr, mpibcast_char_scl, mpibcast_cmplx, mpibcast_cmplx_arr, mpibcast_double, mpibcast_double_arr, mpibcast_double_scl, mpibcast_int, mpibcast_int_arr, mpibcast_int_arr2, mpibcast_int_scl, mpibcast_logical, mpibcast_logical_arr, mpibcast_logical_arr2, mpibcast_logical_scl, mpibcast_real, mpibcast_real_arr2, mpibcast_real_arr3, mpibcast_real_arr4, mpibcast_real_scl, mpicomm_init_min, mpierr, mpifinalize_min, mpigather_and_out_cmplx, mpigather_scl_str, mpigather_z_1d, mpigetcomm, mpirecv_char, mpirecv_char_scl, mpirecv_int, mpirecv_int_arr, mpirecv_int_arr2, mpirecv_int_scl, mpirecv_logical, mpirecv_logical_arr, mpirecv_logical_scl, mpirecv_nonblock_int, mpirecv_nonblock_int_arr, mpirecv_nonblock_int_arr2, mpirecv_nonblock_int_scl, mpirecv_nonblock_real, mpirecv_nonblock_real_arr, mpirecv_nonblock_real_arr2, mpirecv_nonblock_real_arr3, mpirecv_nonblock_real_arr4, mpirecv_nonblock_real_arr5, mpirecv_real, mpirecv_real_arr, mpirecv_real_arr2, mpirecv_real_arr3, mpirecv_real_arr4, mpirecv_real_arr5, mpirecv_real_scl, mpireduce_and, mpireduce_and_arr, mpireduce_and_scl, mpireduce_max, mpireduce_max_arr, mpireduce_max_arr2, mpireduce_max_arr_inplace, mpireduce_max_arr_int, mpireduce_max_int, mpireduce_max_scl, mpireduce_maxloc_arr, mpireduce_min, mpireduce_min_arr, mpireduce_min_scl, mpireduce_or, mpireduce_or_arr, mpireduce_or_scl, mpireduce_sum, mpireduce_sum_arr, mpireduce_sum_arr2, mpireduce_sum_arr3, mpireduce_sum_arr4, mpireduce_sum_arr_inplace, mpireduce_sum_int, mpireduce_sum_int_arr, mpireduce_sum_int_arr2, mpireduce_sum_int_arr3, mpireduce_sum_int_arr4, mpireduce_sum_int_scl, mpireduce_sum_scl, mpiscan_int, mpiscatter, mpiscatter_real_arr, mpiscatter_real_arr2, mpiscatterv, mpiscatterv_int, mpiscatterv_real, mpiscatterv_real_plain, mpisend_char, mpisend_char_scl, mpisend_int, mpisend_int_arr, mpisend_int_arr2, mpisend_int_scl, mpisend_logical, mpisend_logical_arr, mpisend_logical_scl, mpisend_nonblock_int, mpisend_nonblock_int_arr, mpisend_nonblock_int_arr2, mpisend_nonblock_int_scl, mpisend_nonblock_real, mpisend_nonblock_real_arr, mpisend_nonblock_real_arr2, mpisend_nonblock_real_arr3, mpisend_nonblock_real_arr4, mpisend_nonblock_real_arr5, mpisend_real, mpisend_real_arr, mpisend_real_arr2, mpisend_real_arr3, mpisend_real_arr4, mpisend_real_arr5, mpisend_real_scl, mpisendrecv_int, mpisendrecv_int_arr, mpisendrecv_real, mpisendrecv_real_arr, mpisendrecv_real_arr2, mpisendrecv_real_arr3, mpisendrecv_real_arr4, mpisendrecv_real_scl, nextnextya, nextnextyb, nextya, nextyb, nil, npbufyi, npbufyo, npole_tag, nprocs, parallel_close_ext, parallel_close_int, parallel_open_ext, parallel_open_int, periodic_bdry_x, periodic_bdry_y, periodic_bdry_z, pnbcrn, pnfcrn, psbcrn, psfcrn, qtag_xy, qtag_yz, qtag_zx, radboundary_yz_recv, radboundary_yz_send, read_infile, read_infile_root, real_arr_maxsize, remap_to_pencil_xy, remap_to_pencil_xy_2d, remap_to_pencil_xy_3d, remap_to_pencil_xy_4d, remap_to_pencil_y, remap_to_pencil_y_1d, remap_to_pencil_y_2d, remap_to_pencil_y_3d, remap_to_pencil_y_4d, remap_to_pencil_yz, remap_to_pencil_yz_3d, remap_to_pencil_yz_4d, remap_to_pencil_z, remap_to_pencil_z_1d, remap_to_pencil_z_2d, remap_to_pencil_z_3d, remap_to_pencil_z_4d, right, root_rslice, scatter_snapshot, serial_level, set_rslice_communicator, shiftn, shifts, size_of_double, size_of_int, size_of_real, spbufyi, spbufyo, spole_tag, tonb, tonf, tosb, tosf, transp_pencil_xy, transp_pencil_xy_2d, transp_pencil_xy_3d, transp_pencil_xy_4d, true_parallel_close, true_parallel_open, ubufxi, ubufxo, ubufyi, ubufyo, ubufzi, ubufzo, ulbufi, ulbufo, ulcornr, ulcorns, unmap_from_pencil_xy, unmap_from_pencil_xy_2d, unmap_from_pencil_xy_3d, unmap_from_pencil_xy_4d, unmap_from_pencil_y, unmap_from_pencil_y_1d, unmap_from_pencil_y_2d, unmap_from_pencil_y_3d, unmap_from_pencil_y_4d, unmap_from_pencil_yz, unmap_from_pencil_yz_3d, unmap_from_pencil_yz_4d, unmap_from_pencil_z, unmap_from_pencil_z_1d, unmap_from_pencil_z_2d, unmap_from_pencil_z_3d, unmap_from_pencil_z_4d, update_foreign_data, update_neighbors, uubufi, uubufo, uucornr, uucorns, ycornstart, yy_buflens, yyinit, zcornstart, zero_size

Routines:

check_emergency_brake(), collect_grid(), communicate_vect_field_ghosts(), communicate_xy_ghosts(), create_communicators(), die_gracefully(), die_immediately(), end_serialize(), fetch_to_process_masked(), fill_zghostzones_3vec(), finalize_isendrcv_bdry(), finalize_shearing(), get_foreign_snap_finalize(), get_foreign_snap_initiate(), globalize_xy(), globalize_z(), index_to_iproc_comm(), initialize_foreign_comm(), initialize_mpicomm(), initiate_isendrcv_bdry(), initiate_shearing(), isendrcv_bdry_x(), localize_xy(), localize_z(), mpiabort(), mpiallreduce_merge(), mpiallreduce_sum_arr(), mpiallreduce_sum_arr2(), mpibarrier(), mpibcast_cmplx_arr_dbl(), mpibcast_cmplx_arr_sgl(), mpibcast_real_arr(), mpicomm_init(), mpicomm_init_min(), mpifinalize(), mpifinalize_min(), mpigather(), mpigather_and_out_real(), mpigather_scl_str(), mpigather_xy(), mpigather_z(), mpigather_z_1d(), mpimerge_1d(), mpireduce_max_scl_int(), mpireduce_sum_double_arr(), mpireduce_sum_double_arr2(), mpireduce_sum_double_arr3(), mpireduce_sum_double_arr4(), mpireduce_sum_double_scl(), mpiscan_int(), mpiscatterv_real_plain(), mpiwait(), mpiwtick(), mpiwtime(), periodic_bdry_x(), periodic_bdry_y(), periodic_bdry_z(), radboundary_xy_recv(), radboundary_xy_send(), radboundary_yz_periodic_ray(), radboundary_yz_recv(), radboundary_yz_send(), radboundary_yz_sendrecv(), radboundary_zx_periodic_ray(), radboundary_zx_recv(), radboundary_zx_send(), radboundary_zx_sendrecv(), remap_to_pencil_x(), remap_to_pencil_xy_2d_other(), report_clean_output(), scatter_snapshot(), set_rslice_communicator(), start_serialize(), stop_it(), stop_it_if_any(), sum_xy(), transp(), transp_other(), transp_xy(), transp_xy_other(), transp_xz(), transp_zx(), unmap_from_pencil_x(), unmap_from_pencil_xy_2d_other(), update_foreign_data(), update_neighbors(), y2x(), yyinit(), z2x()

Needed modules

Variables

  • mpicomm/collect_from_pencil_xy [public]
  • mpicomm/collect_from_pencil_xy_2d [private]
  • mpicomm/collect_grid [public]
  • mpicomm/collect_xy [public]
  • mpicomm/collect_xy_0d [private]
  • mpicomm/collect_xy_2d [private]
  • mpicomm/collect_xy_3d [private]
  • mpicomm/collect_xy_4d [private]
  • mpicomm/collect_z [public]
  • mpicomm/collect_z_3d [private]
  • mpicomm/collect_z_4d [private]
  • mpicomm/create_communicators [public]
  • mpicomm/cyinyang [character,public/optional/default=' ']
  • mpicomm/displs [integer,private]
  • mpicomm/distribute_to_pencil_xy [public]
  • mpicomm/distribute_to_pencil_xy_2d [private]
  • mpicomm/distribute_xy [public]
  • mpicomm/distribute_xy_0d [private]
  • mpicomm/distribute_xy_2d [private]
  • mpicomm/distribute_xy_3d [private]
  • mpicomm/distribute_xy_4d [private]
  • mpicomm/distribute_yz [public]
  • mpicomm/distribute_z [public]
  • mpicomm/distribute_z_3d [private]
  • mpicomm/distribute_z_4d [private]
  • mpicomm/fahi (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/fahihi (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/fake_parallel_close [private]
  • mpicomm/fake_parallel_open [private]
  • mpicomm/falo (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/falolo (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/fao (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/fbhi (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/fbhihi (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/fblo (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/fblolo (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/fbo (nghost,my - 2 * nghost,mz,mcom) [real,private]
  • mpicomm/fetch_to_process_masked [public]
  • mpicomm/get_foreign_snap_finalize [public]
  • mpicomm/get_foreign_snap_initiate [public]
  • mpicomm/get_limits [private]
  • mpicomm/index_to_iproc_comm [public]
  • mpicomm/initialize_foreign_comm [public]
  • mpicomm/io_perm [integer,private/optional/default=20]
  • mpicomm/io_succ [integer,private/optional/default=21]
  • mpicomm/iproc [public]
  • mpicomm/ipx [public]
  • mpicomm/ipx_partner [integer,private]
  • mpicomm/ipy [public]
  • mpicomm/ipz [public]
  • mpicomm/irecv_rq_frll [integer,private]
  • mpicomm/irecv_rq_frlu [integer,private]
  • mpicomm/irecv_rq_fromlastlastya [integer,private]
  • mpicomm/irecv_rq_fromlastlastyb [integer,private]
  • mpicomm/irecv_rq_fromlastya [integer,private]
  • mpicomm/irecv_rq_fromlastyb [integer,private]
  • mpicomm/irecv_rq_fromlowx [integer,private]
  • mpicomm/irecv_rq_fromlowy [integer,private]
  • mpicomm/irecv_rq_fromlowz [integer,private]
  • mpicomm/irecv_rq_fromnextnextya [integer,private]
  • mpicomm/irecv_rq_fromnextnextyb [integer,private]
  • mpicomm/irecv_rq_fromnextya [integer,private]
  • mpicomm/irecv_rq_fromnextyb [integer,private]
  • mpicomm/irecv_rq_fromuppx [integer,private]
  • mpicomm/irecv_rq_fromuppy [integer,private]
  • mpicomm/irecv_rq_fromuppz [integer,private]
  • mpicomm/irecv_rq_frul [integer,private]
  • mpicomm/irecv_rq_fruu [integer,private]
  • mpicomm/irecv_rq_npole [integer,private]
  • mpicomm/irecv_rq_spole [integer,private]
  • mpicomm/irecv_stat_fl (mpi_status_size) [integer,private]
  • mpicomm/irecv_stat_fll (mpi_status_size) [integer,private]
  • mpicomm/irecv_stat_flu (mpi_status_size) [integer,private]
  • mpicomm/irecv_stat_fu (mpi_status_size) [integer,private]
  • mpicomm/irecv_stat_ful (mpi_status_size) [integer,private]
  • mpicomm/irecv_stat_fuu (mpi_status_size) [integer,private]
  • mpicomm/irecv_stat_np (mpi_status_size) [integer,private]
  • mpicomm/irecv_stat_npole (mpi_status_size) [integer,private]
  • mpicomm/irecv_stat_sp (mpi_status_size) [integer,private]
  • mpicomm/irecv_stat_spole (mpi_status_size) [integer,private]
  • mpicomm/isend_rq_npole [integer,private]
  • mpicomm/isend_rq_spole [integer,private]
  • mpicomm/isend_rq_tolastlastya [integer,private]
  • mpicomm/isend_rq_tolastlastyb [integer,private]
  • mpicomm/isend_rq_tolastya [integer,private]
  • mpicomm/isend_rq_tolastyb [integer,private]
  • mpicomm/isend_rq_toll [integer,private]
  • mpicomm/isend_rq_tolowx [integer,private]
  • mpicomm/isend_rq_tolowy [integer,private]
  • mpicomm/isend_rq_tolowz [integer,private]
  • mpicomm/isend_rq_tolu [integer,private]
  • mpicomm/isend_rq_tonextnextya [integer,private]
  • mpicomm/isend_rq_tonextnextyb [integer,private]
  • mpicomm/isend_rq_tonextya [integer,private]
  • mpicomm/isend_rq_tonextyb [integer,private]
  • mpicomm/isend_rq_toul [integer,private]
  • mpicomm/isend_rq_touppx [integer,private]
  • mpicomm/isend_rq_touppy [integer,private]
  • mpicomm/isend_rq_touppz [integer,private]
  • mpicomm/isend_rq_touu [integer,private]
  • mpicomm/isend_stat_np (mpi_status_size) [integer,private]
  • mpicomm/isend_stat_npole (mpi_status_size) [integer,private]
  • mpicomm/isend_stat_sp (mpi_status_size) [integer,private]
  • mpicomm/isend_stat_spole (mpi_status_size) [integer,private]
  • mpicomm/isend_stat_tl (mpi_status_size) [integer,private]
  • mpicomm/isend_stat_tll (mpi_status_size) [integer,private]
  • mpicomm/isend_stat_tlu (mpi_status_size) [integer,private]
  • mpicomm/isend_stat_tu (mpi_status_size) [integer,private]
  • mpicomm/isend_stat_tul (mpi_status_size) [integer,private]
  • mpicomm/isend_stat_tuu (mpi_status_size) [integer,private]
  • mpicomm/isendrcv_bdry_npole [private]
  • mpicomm/isendrcv_bdry_spole [private]
  • mpicomm/ixbeam [integer,public/parameter/optional/default=1]
  • mpicomm/ixyplane [integer,public/parameter/optional/default=12]
  • mpicomm/ixzplane [integer,public/parameter/optional/default=13]
  • mpicomm/iybeam [integer,public/parameter/optional/default=2]
  • mpicomm/iyzplane [integer,public/parameter/optional/default=23]
  • mpicomm/izbeam [integer,public/parameter/optional/default=3]
  • mpicomm/lastlastya [integer,private]
  • mpicomm/lastlastyb [integer,private]
  • mpicomm/lastya [integer,private]
  • mpicomm/lastyb [integer,private]
  • mpicomm/lbufxi (nghost,ny,nz,mcom) [real,private]
  • mpicomm/lbufxo (nghost,ny,nz,mcom) [real,private]
  • mpicomm/lbufyi (mx,nghost,nz,mcom) [real,private]
  • mpicomm/lbufyo (mx,nghost,nz,mcom) [real,private]
  • mpicomm/lbufzi (mx,ny,nghost,mcom) [real,private]
  • mpicomm/lbufzo (mx,ny,nghost,mcom) [real,private]
  • mpicomm/lfirst_proc_x [public]
  • mpicomm/lfirst_proc_xy [public]
  • mpicomm/lfirst_proc_xyz [public]
  • mpicomm/lfirst_proc_xz [public]
  • mpicomm/lfirst_proc_y [public]
  • mpicomm/lfirst_proc_yz [public]
  • mpicomm/lfirst_proc_z [public]
  • mpicomm/llast_proc_x [public]
  • mpicomm/llast_proc_xy [public]
  • mpicomm/llast_proc_xyz [public]
  • mpicomm/llast_proc_xz [public]
  • mpicomm/llast_proc_y [public]
  • mpicomm/llast_proc_yz [public]
  • mpicomm/llast_proc_z [public]
  • mpicomm/llbufi (mx,nghost,nghost,mcom) [real,private]
  • mpicomm/llbufo (mx,nghost,nghost,mcom) [real,private]
  • mpicomm/llcorn [integer,private]
  • mpicomm/lroot [public]
  • mpicomm/lubufi (mx,nghost,nghost,mcom) [real,private]
  • mpicomm/lubufo (mx,nghost,nghost,mcom) [real,private]
  • mpicomm/lucorn [integer,private]
  • mpicomm/lyang [public]
  • mpicomm/merge_1d [private]
  • mpicomm/mpi_2float [integer,public]
  • mpicomm/mpi_any_tag [public]
  • mpicomm/mpi_cmplx [integer,public]
  • mpicomm/mpi_comm_grid [integer,public]
  • mpicomm/mpi_comm_pencil [integer,public]
  • mpicomm/mpi_comm_rslice [integer,public]
  • mpicomm/mpi_comm_universe [integer,public/parameter/optional/default=mpi_comm_world]
  • mpicomm/mpi_comm_world [public]
  • mpicomm/mpi_comm_xbeam [integer,public]
  • mpicomm/mpi_comm_xyplane [integer,public]
  • mpicomm/mpi_comm_xzplane [integer,public]
  • mpicomm/mpi_comm_ybeam [integer,public]
  • mpicomm/mpi_comm_yzplane [integer,public]
  • mpicomm/mpi_comm_zbeam [integer,public]
  • mpicomm/mpi_info_null [public]
  • mpicomm/mpi_precision [integer,public]
  • mpicomm/mpiabort [public]
  • mpicomm/mpiallreduce_and [public]
  • mpicomm/mpiallreduce_max [public]
  • mpicomm/mpiallreduce_max_arr [private]
  • mpicomm/mpiallreduce_max_scl [private]
  • mpicomm/mpiallreduce_merge [public]
  • mpicomm/mpiallreduce_min [public]
  • mpicomm/mpiallreduce_min_dbl [private]
  • mpicomm/mpiallreduce_min_scl_dbl [private]
  • mpicomm/mpiallreduce_min_scl_sgl [private]
  • mpicomm/mpiallreduce_min_sgl [private]
  • mpicomm/mpiallreduce_or [public]
  • mpicomm/mpiallreduce_or_scl [private]
  • mpicomm/mpiallreduce_sum [public]
  • mpicomm/mpiallreduce_sum_arr3 [private]
  • mpicomm/mpiallreduce_sum_arr4 [private]
  • mpicomm/mpiallreduce_sum_arr5 [private]
  • mpicomm/mpiallreduce_sum_int [public]
  • mpicomm/mpiallreduce_sum_int_arr [private]
  • mpicomm/mpiallreduce_sum_int_scl [private]
  • mpicomm/mpiallreduce_sum_scl [private]
  • mpicomm/mpibcast [public]
  • mpicomm/mpibcast_char [public]
  • mpicomm/mpibcast_char_arr [private]
  • mpicomm/mpibcast_char_scl [private]
  • mpicomm/mpibcast_cmplx [public]
  • mpicomm/mpibcast_double [public]
  • mpicomm/mpibcast_double_arr [private]
  • mpicomm/mpibcast_double_scl [private]
  • mpicomm/mpibcast_int [public]
  • mpicomm/mpibcast_int_arr [private]
  • mpicomm/mpibcast_int_scl [private]
  • mpicomm/mpibcast_logical [public]
  • mpicomm/mpibcast_logical_arr [private]
  • mpicomm/mpibcast_logical_arr2 [private]
  • mpicomm/mpibcast_logical_scl [private]
  • mpicomm/mpibcast_real [public]
  • mpicomm/mpibcast_real_arr2 [private]
  • mpicomm/mpibcast_real_arr3 [private]
  • mpicomm/mpibcast_real_arr4 [private]
  • mpicomm/mpibcast_real_scl [private]
  • mpicomm/mpicomm_init_min [public]
  • mpicomm/mpierr [integer,private]
  • mpicomm/mpifinalize_min [public]
  • mpicomm/mpigather_and_out_cmplx [public]
  • mpicomm/mpigather_scl_str [public]
  • mpicomm/mpigather_z_1d [public]
  • mpicomm/mpigetcomm [private]
  • mpicomm/mpirecv_char [public]
  • mpicomm/mpirecv_int [public]
  • mpicomm/mpirecv_int_arr [private]
  • mpicomm/mpirecv_int_arr2 [private]
  • mpicomm/mpirecv_int_scl [private]
  • mpicomm/mpirecv_logical [public]
  • mpicomm/mpirecv_logical_arr [private]
  • mpicomm/mpirecv_logical_scl [private]
  • mpicomm/mpirecv_nonblock_int [public]
  • mpicomm/mpirecv_nonblock_int_arr [private]
  • mpicomm/mpirecv_nonblock_int_scl [private]
  • mpicomm/mpirecv_nonblock_real [public]
  • mpicomm/mpirecv_nonblock_real_arr [private]
  • mpicomm/mpirecv_nonblock_real_arr2 [private]
  • mpicomm/mpirecv_nonblock_real_arr4 [private]
  • mpicomm/mpirecv_real [public]
  • mpicomm/mpirecv_real_arr [private]
  • mpicomm/mpirecv_real_arr2 [private]
  • mpicomm/mpirecv_real_arr3 [private]
  • mpicomm/mpirecv_real_arr4 [private]
  • mpicomm/mpirecv_real_scl [private]
  • mpicomm/mpireduce_and [public]
  • mpicomm/mpireduce_and_arr [private]
  • mpicomm/mpireduce_and_scl [private]
  • mpicomm/mpireduce_max [public]
  • mpicomm/mpireduce_max_arr [private]
  • mpicomm/mpireduce_max_int [public]
  • mpicomm/mpireduce_max_scl [private]
  • mpicomm/mpireduce_min [public]
  • mpicomm/mpireduce_min_arr [private]
  • mpicomm/mpireduce_min_scl [private]
  • mpicomm/mpireduce_or [public]
  • mpicomm/mpireduce_or_arr [private]
  • mpicomm/mpireduce_or_scl [private]
  • mpicomm/mpireduce_sum [public]
  • mpicomm/mpireduce_sum_arr [private]
  • mpicomm/mpireduce_sum_arr2 [private]
  • mpicomm/mpireduce_sum_arr3 [private]
  • mpicomm/mpireduce_sum_arr4 [private]
  • mpicomm/mpireduce_sum_int [public]
  • mpicomm/mpireduce_sum_int_arr [private]
  • mpicomm/mpireduce_sum_int_arr2 [private]
  • mpicomm/mpireduce_sum_int_arr3 [private]
  • mpicomm/mpireduce_sum_int_arr4 [private]
  • mpicomm/mpireduce_sum_int_scl [private]
  • mpicomm/mpireduce_sum_scl [private]
  • mpicomm/mpiscan_int [public]
  • mpicomm/mpiscatter [public]
  • mpicomm/mpiscatterv [public]
  • mpicomm/mpiscatterv_real_plain [public]
  • mpicomm/mpisend_char [public]
  • mpicomm/mpisend_int [public]
  • mpicomm/mpisend_int_arr [private]
  • mpicomm/mpisend_int_arr2 [private]
  • mpicomm/mpisend_int_scl [private]
  • mpicomm/mpisend_logical [public]
  • mpicomm/mpisend_logical_arr [private]
  • mpicomm/mpisend_logical_scl [private]
  • mpicomm/mpisend_nonblock_int [public]
  • mpicomm/mpisend_nonblock_int_arr [private]
  • mpicomm/mpisend_nonblock_int_scl [private]
  • mpicomm/mpisend_nonblock_real [public]
  • mpicomm/mpisend_nonblock_real_arr [private]
  • mpicomm/mpisend_nonblock_real_arr4 [private]
  • mpicomm/mpisend_real [public]
  • mpicomm/mpisend_real_arr [private]
  • mpicomm/mpisend_real_arr2 [private]
  • mpicomm/mpisend_real_arr3 [private]
  • mpicomm/mpisend_real_arr4 [private]
  • mpicomm/mpisend_real_scl [private]
  • mpicomm/mpisendrecv_int [public]
  • mpicomm/mpisendrecv_real [public]
  • mpicomm/mpisendrecv_real_arr [private]
  • mpicomm/mpisendrecv_real_arr2 [private]
  • mpicomm/mpisendrecv_real_arr3 [private]
  • mpicomm/mpisendrecv_real_arr4 [private]
  • mpicomm/mpisendrecv_real_scl [private]
  • mpicomm/nextnextya [integer,private]
  • mpicomm/nextnextyb [integer,private]
  • mpicomm/nextya [integer,private]
  • mpicomm/nextyb [integer,private]
  • mpicomm/npbufyi (nx,nghost,nz,mcom) [real,private]
  • mpicomm/npbufyo (nx,nghost,nz,mcom) [real,private]
  • mpicomm/npole_tag [integer,private/optional/default=15]
  • mpicomm/nprocs [integer,public]
  • mpicomm/parallel_close [private]
  • mpicomm/parallel_close_ext [private]
  • mpicomm/parallel_close_int [private]
  • mpicomm/parallel_open [private]
  • mpicomm/parallel_open_ext [private]
  • mpicomm/parallel_open_int [private]
  • mpicomm/periodic_bdry_x [public]
  • mpicomm/periodic_bdry_y [public]
  • mpicomm/periodic_bdry_z [public]
  • mpicomm/qtag_xy [integer,private/parameter/optional/default=350]
  • mpicomm/qtag_yz [integer,private/parameter/optional/default=250]
  • mpicomm/qtag_zx [integer,private/parameter/optional/default=300]
  • mpicomm/radboundary_yz_recv [public]
  • mpicomm/radboundary_yz_send [public]
  • mpicomm/read_infile [private]
  • mpicomm/read_infile_root [private]
  • mpicomm/remap_to_pencil_xy [public]
  • mpicomm/remap_to_pencil_xy_2d [private]
  • mpicomm/remap_to_pencil_xy_3d [private]
  • mpicomm/remap_to_pencil_xy_4d [private]
  • mpicomm/remap_to_pencil_y [public]
  • mpicomm/remap_to_pencil_y_1d [private]
  • mpicomm/remap_to_pencil_y_2d [private]
  • mpicomm/remap_to_pencil_y_3d [private]
  • mpicomm/remap_to_pencil_y_4d [private]
  • mpicomm/remap_to_pencil_yz [public]
  • mpicomm/remap_to_pencil_yz_3d [private]
  • mpicomm/remap_to_pencil_yz_4d [private]
  • mpicomm/remap_to_pencil_z [public]
  • mpicomm/remap_to_pencil_z_1d [private]
  • mpicomm/remap_to_pencil_z_2d [private]
  • mpicomm/remap_to_pencil_z_3d [private]
  • mpicomm/remap_to_pencil_z_4d [private]
  • mpicomm/root_rslice [integer,public]
  • mpicomm/scatter_snapshot [public]
  • mpicomm/serial_level [integer,private/optional/default=0]
  • mpicomm/set_rslice_communicator [public]
  • mpicomm/size_of_double [public]
  • mpicomm/size_of_int [public]
  • mpicomm/size_of_real [public]
  • mpicomm/spbufyi (nx,nghost,nz,mcom) [real,private]
  • mpicomm/spbufyo (nx,nghost,nz,mcom) [real,private]
  • mpicomm/spole_tag [integer,private/optional/default=16]
  • mpicomm/stop_fatal [private]
  • mpicomm/toll [integer,private/optional/default=7]
  • mpicomm/tolowx [integer,private/optional/default=13]
  • mpicomm/tolowy [integer,private/optional/default=3]
  • mpicomm/tolowz [integer,private/optional/default=5]
  • mpicomm/tolu [integer,private/optional/default=10]
  • mpicomm/touch_file [private]
  • mpicomm/toul [integer,private/optional/default=8]
  • mpicomm/touppx [integer,private/optional/default=14]
  • mpicomm/touppy [integer,private/optional/default=4]
  • mpicomm/touppz [integer,private/optional/default=6]
  • mpicomm/touu [integer,private/optional/default=9]
  • mpicomm/transp_pencil_xy [public]
  • mpicomm/transp_pencil_xy_2d [private]
  • mpicomm/transp_pencil_xy_3d [private]
  • mpicomm/transp_pencil_xy_4d [private]
  • mpicomm/true_parallel_close [private]
  • mpicomm/true_parallel_open [private]
  • mpicomm/ubufxi (nghost,ny,nz,mcom) [real,private]
  • mpicomm/ubufxo (nghost,ny,nz,mcom) [real,private]
  • mpicomm/ubufyi (mx,nghost,nz,mcom) [real,private]
  • mpicomm/ubufyo (mx,nghost,nz,mcom) [real,private]
  • mpicomm/ubufzi (mx,ny,nghost,mcom) [real,private]
  • mpicomm/ubufzo (mx,ny,nghost,mcom) [real,private]
  • mpicomm/ulbufi (mx,nghost,nghost,mcom) [real,private]
  • mpicomm/ulbufo (mx,nghost,nghost,mcom) [real,private]
  • mpicomm/ulcorn [integer,private]
  • mpicomm/unmap_from_pencil_xy [public]
  • mpicomm/unmap_from_pencil_xy_2d [private]
  • mpicomm/unmap_from_pencil_xy_3d [private]
  • mpicomm/unmap_from_pencil_xy_4d [private]
  • mpicomm/unmap_from_pencil_y [public]
  • mpicomm/unmap_from_pencil_y_1d [private]
  • mpicomm/unmap_from_pencil_y_2d [private]
  • mpicomm/unmap_from_pencil_y_3d [private]
  • mpicomm/unmap_from_pencil_y_4d [private]
  • mpicomm/unmap_from_pencil_yz [public]
  • mpicomm/unmap_from_pencil_yz_3d [private]
  • mpicomm/unmap_from_pencil_yz_4d [private]
  • mpicomm/unmap_from_pencil_z [public]
  • mpicomm/unmap_from_pencil_z_1d [private]
  • mpicomm/unmap_from_pencil_z_2d [private]
  • mpicomm/unmap_from_pencil_z_3d [private]
  • mpicomm/unmap_from_pencil_z_4d [private]
  • mpicomm/update_foreign_data [public]
  • mpicomm/update_neighbors [public]
  • mpicomm/uubufi (mx,nghost,nghost,mcom) [real,private]
  • mpicomm/uubufo (mx,nghost,nghost,mcom) [real,private]
  • mpicomm/uucorn [integer,private]
  • mpicomm/yyinit [public]

Subroutines and functions

subroutine  mpicomm/mpicomm_init()

Get processor number, number of procs, and whether we are root.

20-aug-01/wolf: coded 29-jul-2010/anders: separate subroutine

Use :

syscalls (sizeof_real())

Call to:

sizeof_real(), stop_it(), isendrcv_bdry_x(), mpibarrier(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/initialize_mpicomm()

Initialise MPI communication and set up some variables. The arrays leftneigh and rghtneigh give the processor numbers to the left and to the right.

20-aug-01/wolf: coded 31-aug-01/axel: added to 3-D 15-sep-01/axel: adapted from Wolfgang’s version 21-may-02/axel: communication of corners added

6-jun-02/axel: generalized to allow for ny=1

23-nov-02/axel: corrected problem with ny=4 or less

Call to:

stop_it(), isendrcv_bdry_x(), mpibarrier(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/initiate_isendrcv_bdry(f[, ivar1_opt[, ivar2_opt]])

Isend and Irecv boundary values. Called in the beginning of pde. Does not wait for the receives to finish (done in finalize_isendrcv_bdry) leftneigh and rghtneigh are initialized by mpicomm_init.

21-may-02/axel: communication of corners added 11-aug-07/axel: communication in the x-direction added

Parameters:
  • f (,,*,*) [real,inout]

  • ivar1_opt [integer,in,]

  • ivar2_opt [integer,in,]

Call to:

isendrcv_bdry_x(), mpibarrier(), stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/finalize_isendrcv_bdry(f[, ivar1_opt[, ivar2_opt]])

Make sure the communications initiated with initiate_isendrcv_bdry are finished and insert the just received boundary values.

Receive requests do not need to (and on OSF1 cannot) be explicitly

freed, since MPI_Wait takes care of this.

21-may-02/axel: communication of corners added

Parameters:
  • f (,,*,*) [real,inout]

  • ivar1_opt [integer,in,]

  • ivar2_opt [integer,in,]

Call to:

mpibarrier(), stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/isendrcv_bdry_x(f[, ivar1_opt[, ivar2_opt]])

Isend and Irecv boundary values for x-direction. Sends and receives before continuing to y and z boundaries, as this allows the edges of the grid to be set properly.

2-may-09/anders: coded

Parameters:
  • f (,,*,*) [real,inout]

  • ivar1_opt [integer,in,]

  • ivar2_opt [integer,in,]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/initiate_shearing(f[, ivar1_opt[, ivar2_opt]])

Subroutine for shearing sheet boundary conditions

27-nov-14/mcnallcp: Now uses 4 shearing neighbours so

y-ghosts are not needed

20-june-02/nils: adapted from pencil_mpi

Parameters:
  • f (mx,my,mz,mfarray) [real]

  • ivar1_opt [integer]

  • ivar2_opt [integer]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/finalize_shearing(f[, ivar1_opt[, ivar2_opt]])

Subroutine for shearing sheet boundary conditions

27-nov-14/mcnallcp: Now uses 4 shearing neighbours so

y-ghosts are not needed

20-june-02/nils: adapted from pencil_mpi 02-mar-02/ulf: Sliding periodic boundary conditions in x

Parameters:
  • f (mx,my,mz,mfarray) [real]

  • ivar1_opt [integer]

  • ivar2_opt [integer]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/radboundary_zx_recv(mrad, idir, qrecv_zx)

receive intensities from neighboring processor in y

11-jul-03/tobi: coded 20-jul-05/tobi: use non-blocking MPI calls

Parameters:
  • mrad [integer]

  • idir [integer]

  • qrecv_zx (mx,mz) [real]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/radboundary_xy_recv(nrad, idir, qrecv_xy)

receive intensities from neighboring processor in z

11-jul-03/tobi: coded 20-jul-05/tobi: use non-blocking MPI calls

Parameters:
  • nrad [integer]

  • idir [integer]

  • qrecv_xy (mx,my) [real]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/radboundary_zx_send(mrad, idir, qsend_zx)

send intensities to neighboring processor in y

11-jul-03/tobi: coded 20-jul-05/tobi: use non-blocking MPI calls

Parameters:
  • mrad [integer]

  • idir [integer]

  • qsend_zx (mx,mz) [real]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/radboundary_xy_send(nrad, idir, qsend_xy)

send intensities to neighboring processor in z

11-jul-03/tobi: coded 20-jul-05/tobi: use non-blocking MPI calls

Parameters:
  • nrad [integer,in]

  • idir [integer,in]

  • qsend_xy (mx,my) [real]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/radboundary_yz_sendrecv(lrad, idir, qsend_yz, qrecv_yz)

receive intensities from isource and send intensities to idest

17-nov-14/axel: adapted from radboundary_zx_sendrecv

Parameters:
  • lrad [integer,in]

  • idir [integer,in]

  • qsend_yz (my,mz) [real]

  • qrecv_yz (my,mz) [real]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/radboundary_zx_sendrecv(mrad, idir, qsend_zx, qrecv_zx)

receive intensities from isource and send intensities to idest

04-aug-03/tobi: coded

Parameters:
  • mrad [integer,in]

  • idir [integer,in]

  • qsend_zx (mx,mz) [real]

  • qrecv_zx (mx,mz) [real]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/radboundary_yz_periodic_ray(qrad_yz, tau_yz, qrad_yz_all, tau_yz_all)

Gather all intrinsic optical depths and heating rates into one rank-3 array that is available on each processor.

17-nov-14/axel: adapted from radboundary_zx_periodic_ray

Parameters:
Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/radboundary_zx_periodic_ray(qrad_zx, tau_zx, qrad_zx_all, tau_zx_all)

Gather all intrinsic optical depths and heating rates into one rank-3 array that is available on each processor.

19-jul-05/tobi: rewritten

Parameters:
Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/mpibcast_real_arr(bcast_array, nbcast_array[, proc])

Communicate real array between processors.

Parameters:
  • bcast_array (nbcast_array) [real]

  • nbcast_array [integer]

  • proc [integer]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/mpibcast_cmplx_arr_dbl(bcast_array, nbcast_array[, proc])

Communicate real array between processors.

Parameters:
  • bcast_array (nbcast_array) [complex]

  • nbcast_array [integer]

  • proc [integer]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/mpibcast_cmplx_arr_sgl(bcast_array, nbcast_array[, proc])

Communicate real array between processors.

Parameters:
  • bcast_array (nbcast_array) [complex]

  • nbcast_array [integer]

  • proc [integer]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/mpiallreduce_sum_arr(fsum_tmp, fsum, nreduce[, idir])

Calculate total sum for each array element and return to all processors.

3-oct-12/MR: communicator corrected

Parameters:
  • fsum_tmp (nreduce) [real]

  • fsum (nreduce) [real]

  • nreduce [integer]

  • idir [integer]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/mpiallreduce_sum_arr2(fsum_tmp, fsum, nreduce[, idir])

Calculate total sum for each array element and return to all processors.

23-nov-08/wlad: included the idir possibility

Parameters:
  • fsum_tmp (nreduce(1,nreduce(2) [real]

  • fsum (nreduce(1,nreduce(2) [real]

  • nreduce (2) [integer,in,required]

  • idir [integer]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/mpireduce_max_scl_int(fmax_tmp, fmax)

Calculate total maximum for each array element and return to root.

Parameters:
  • fmax_tmp [integer]

  • fmax [integer]

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/start_serialize()

Do block between start_serialize and end_serialize serially in iproc order. root goes first, then sends proc1 permission, waits for succes, then sends proc2 permisssion, waits for success, etc.

19-nov-02/wolf: coded

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/end_serialize()

Do block between start_serialize and end_serialize serially in iproc order.

19-nov-02/wolf: coded

Call to:

stop_it(), mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/mpibarrier()

Synchronize nodes.

23-jul-2002/wolf: coded

Call to:

mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/mpifinalize()
Call to:

mpiwtime(), mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it(), stop_it_if_any(), localize_xy(), report_clean_output()

function  mpicomm/mpiwtime()
Return:

precision [double]

Call to:

mpiwtick(), mpifinalize(), die_immediately(), die_gracefully(), stop_it(), stop_it_if_any(), localize_xy(), report_clean_output()

function  mpicomm/mpiwtick()
Return:

precision [double]

Call to:

mpifinalize(), die_immediately(), die_gracefully(), stop_it(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/die_gracefully()

Stop having shutdown MPI neatly With at least some MPI implementations, this only stops if all processors agree to call die_gracefully().

29-jun-05/tony: coded

Tell the world something went wrong – mpirun may not propagate an error status.

Call to:

mpifinalize(), die_immediately(), die_gracefully(), stop_it(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/die_immediately()

Stop without shuting down MPI For those MPI implementations, which only finalize when all processors agree to finalize.

29-jun-05/tony: coded

Tell the world something went wrong – mpirun may not propagate an error status.

Call to:

die_immediately(), die_gracefully(), stop_it(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/stop_it(msg[, code])

Print message and stop. With at least some MPI implementations, this only stops if all processors agree to call stop_it(). To stop (collectively) if only one or a few processors find some condition, use stop_it_if_any().

6-nov-01/wolf: coded 4-nov-11/MR: optional parameter code added

Parameters:
  • msg [character]

  • code [integer]

Use :

general (itoa())

Call to:

die_gracefully(), stop_it(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/stop_it_if_any(stop_flag, msg[, code])

Conditionally print message and stop. This works unilaterally, i.e. if STOP_FLAG is true on _any_ processor, we will all stop. The error message will be printed together with the MPI rank number, if the message is not empty.

22-nov-04/wolf: coded 15-Feb-2012/Bourdin.KIS: optional parameter code added

Parameters:
  • stop_flag [logical]

  • msg [character]

  • code [integer]

Call to:

stop_it(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/check_emergency_brake()

Check the lemergency_brake flag and stop with any provided message if it is set.

29-jul-06/tony: coded

Call to:

stop_it(), stop_it_if_any(), localize_xy(), report_clean_output()

subroutine  mpicomm/transp(a, var)

Doing the transpose of information distributed on several processors Used for doing FFTs in the y and z directions. This routine is presently restricted to the case nxgrid=nygrid (if var=y) and nygrid=nzgrid (if var=z)

03-sep-02/nils: coded 26-oct-02/axel: comments added

6-jun-03/axel: works now also in 2-D (need only nxgrid=nygrid) 5-oct-06/tobi: generalized to nxgrid = n*nygrid

TODO: Implement nxgrid = n*nzgrid

Parameters:
  • a (nx,ny,nz) [real]

  • var [character]

Call to:

stop_it_if_any(), localize_xy(), stop_it(), report_clean_output()

subroutine  mpicomm/transp_xy(a)

Doing the transpose of information distributed on several processors. This routine transposes 2D arrays in x and y only.

6-oct-06/tobi: Adapted from transp

TODO: Implement nygrid = n*nxgrid

Parameters:

a (nx,ny) [real,inout]

Call to:

stop_it_if_any(), localize_xy(), stop_it(), report_clean_output()

subroutine  mpicomm/transp_xy_other(a)

Doing the transpose of information distributed on several processors. This routine transposes 2D arrays of arbitrary size in x and y only.

6-oct-06/tobi: Adapted from transp

TODO: Implement nygrid = n*nxgrid

Parameters:

a (,) [real,inout]

Call to:

stop_it_if_any(), localize_xy(), stop_it(), report_clean_output()

subroutine  mpicomm/transp_other(a, var)

Doing the transpose of information distributed on several processors. This routine transposes 3D arrays but is presently restricted to the case nxgrid=nygrid (if var=y) and nygrid=nzgrid (if var=z)

08-may-08/wlad: Adapted from transp

TODO: Implement nxgrid = n*nzgrid

Parameters:
  • a (,,*) [real,inout]

  • var [character]

Call to:

stop_it_if_any(), localize_xy(), stop_it(), report_clean_output()

subroutine  mpicomm/transp_xz(a, b)

Doing the transpose of information distributed on several processors. This routine transposes 2D arrays in x and z only.

19-dec-06/anders: Adapted from transp

Parameters:
Call to:

stop_it_if_any(), localize_xy(), stop_it(), report_clean_output()

subroutine  mpicomm/transp_zx(a, b)

Doing the transpose of information distributed on several processors. This routine transposes 2D arrays in x and z only.

19-dec-06/anders: Adapted from transp

Parameters:
Call to:

stop_it_if_any(), localize_xy(), stop_it(), report_clean_output()

subroutine  mpicomm/communicate_vect_field_ghosts(f, topbot[, start_index])

Helper routine for communication of ghost cell values of a vector field. Needed by potential field extrapolations, which only compute nx*ny arrays. Can also be used for synchronization of changed uu values with ghost cells, if the start_index parameter set to iux (default is iax).

8-oct-2006/tobi: Coded

28-dec-2010/Bourdin.KIS: extended to work for any 3D vector field data.

Parameters:
  • f (,,*,*) [real,inout]

  • topbot [integer,in]

  • start_index [integer,in,]

Call to:

stop_it_if_any(), localize_xy(), stop_it(), report_clean_output()

subroutine  mpicomm/communicate_xy_ghosts(data)

Helper routine for communication of ghost cells in horizontal direction.

11-apr-2011/Bourdin.KIS: adapted from communicate_vect_field_ghosts.

Parameters:

data (,) [real,inout]

Call to:

localize_xy(), stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/fill_zghostzones_3vec(vec, ivar)

Fills z-direction ghostzones of (mz,3)-array vec depending on the number of processors in z-direction.

The three components of vec are supposed to be subject to the same z-boundary condiitons like the variables ivar, ivar+1, ivar+2

18-oct-2009/MR: Coded

Parameters:
  • vec (mz,3) [real,inout]

  • ivar [integer,in]

Call to:

localize_xy(), stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/sum_xy(in, out)

Sum up 0D data in the xy-plane and distribute back the sum. This routine needs only to be called from all processors a the xy-plane. Several xy-planes can call this routine at once.

19-jan-2011/Bourdin.KIS: coded

Parameters:
  • in [real,in]

  • out [real,out]

Call to:

localize_xy(), stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/globalize_xy(in[, out[, dest_proc[, source_pz]]])

Globalizes local 4D data first along the x, then along the y-direction to the destination processor. The local data is supposed to include the ghost cells. Inner ghost layers are cut away during the combination of the data. ‘dest_proc’ is the destination iproc number relative to the first processor in the corresponding xy-plane (Default: 0, equals lfirst_proc_xy). ‘source_pz’ specifies the source pz-layer (Default: ipz).

23-Apr-2012/Bourdin.KIS: adapted from non-torus-type globalize_xy

Parameters:
  • in (,,*,*) [real,in]

  • out (,,*,*) [real,out,]

  • dest_proc [integer,in,]

  • source_pz [integer,in,]

Call to:

localize_xy(), stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/localize_xy(out[, in[, source_proc[, dest_pz]]])
Parameters:
  • out (,,*,*) [real,out]

  • in (,,*,*) [real,in,]

  • source_proc [integer,in,]

  • dest_pz [integer,in,]

subroutine  mpicomm/globalize_z(in[, out[, dest_proc]])

Globalizes local 1D data in the z-direction to the destination processor. The local data is supposed to include the ghost cells. Inner ghost layers are cut away during the combination of the data. ‘dest_proc’ is the destination ipz-layer number relative to the first processor in the z-direction (Default: 0, equals lfirst_proc_z).

13-aug-2011/Bourdin.KIS: coded

Parameters:
  • in (mz) [real,in]

  • out (mzgrid) [real,out,]

  • dest_proc [integer,in,]

Call to:

stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/localize_z(out[, in[, source_proc]])

Localizes global 1D data to all processors along the z-direction. The global data is supposed to include the outer ghost layers. The returned data will include inner ghost layers. ‘source_proc’ is the source ipz-layer number relative to the first processor in the z-direction (Default: 0, equals lfirst_proc_z).

11-Feb-2012/Bourdin.KIS: coded

Parameters:
  • out (mz) [real,out]

  • in (mzgrid) [real,in,]

  • source_proc [integer,in,]

Call to:

stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/remap_to_pencil_x(in, out)

Remaps data distributed on several processors into pencil shape. This routine remaps 1D arrays in x only for nprocx>1.

08-dec-2010/Bourdin.KIS: coded

Parameters:
  • in (nx) [real,in]

  • out (nxgrid) [real,out]

Call to:

stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/unmap_from_pencil_x(in, out)

Unmaps pencil shaped 1D data distributed on several processors back to normal shape. This routine is the inverse of the remap function for nprocx>1.

08-dec-2010/Bourdin.KIS: coded

Parameters:
  • in (nxgrid) [real,in]

  • out (nx) [real,out]

Call to:

stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/remap_to_pencil_xy_2d_other(in, out)

Remaps data distributed on several processors into pencil shape. This routine remaps 2D arrays in x and y only for nprocx>1.

04-jul-2010/Bourdin.KIS: coded

Parameters:
  • in (,) [real,in]

  • out (,) [real,out]

Call to:

stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/unmap_from_pencil_xy_2d_other(in, out)

Unmaps pencil shaped 2D data distributed on several processors back to normal shape. This routine is the inverse of the remap function for nprocx>1.

4-jul-2010/Bourdin.KIS: coded

Parameters:
  • in (,) [real,in]

  • out (,) [real,out]

Call to:

stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/y2x(a, xi, zj, zproc_no, ay)

Load the y dimension of an array in a 1-d array.

Parameters:
  • a (nx,ny,nz) [real,in]

  • xi [integer,in]

  • zj [integer,in]

  • zproc_no [integer,in]

  • ay (nygrid) [real,out]

Call to:

stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/z2x(a, xi, yj, yproc_no, az)

Load the z dimension of an array in a 1-d array.

Parameters:
  • a (nx,ny,nz) [real,in]

  • xi [integer,in]

  • yj [integer,in]

  • yproc_no [integer,in]

  • az (nzgrid) [real,out]

Call to:

stop_it(), stop_it_if_any(), report_clean_output()

subroutine  mpicomm/mpigather_xy(sendbuf, recvbuf[, lpz])

Gathers the chunks of a 2D array from each processor of the z-layer lpz in a big array at the root of the layer. If lpz not present this is done for all layers (not checked).

Here no parallelization in x allowed.

18-nov-10/MR: coded

Parameters:
Call to:

report_clean_output()

subroutine  mpicomm/mpigather_z(sendbuf, recvbuf, n1[, lproc])

Gathers the chunks of a 2D array from each processor along a z-beam at position, defined by lproc at root of the beam.

25-nov-10/MR: coded

Parameters:
  • sendbuf (n1,nz) [real,in]

  • recvbuf (n1,nzgrid) [real,out]

  • n1 [integer,in,]

  • lproc [integer,in,]

Call to:

report_clean_output()

subroutine  mpicomm/mpigather(sendbuf, recvbuf)

Gathers the chunks of a 3D array from each processor in a big array at root.

Here no parallelization in x allowed.

19-nov-10/MR: coded

Parameters:
  • sendbuf (nxgrid,ny,nz) [real]

  • recvbuf (,,*) [real]

Call to:

report_clean_output()

subroutine  mpicomm/mpigather_and_out_real(sendbuf, unit[, ltransp[, kxrange[, kyrange[, zrange]]]])

Transfers the chunks of a 3D array from each processor to root and writes them out in right order.

Here no parallelization in x allowed.

22-nov-10/MR: coded 06-apr-11/MR: optional parameters kxrange, kyrange, zrange for selective output added 03-feb-14/MR: rewritten 10-apr-15/MR: corrected for nx/=ny

Parameters:
  • sendbuf (,,*) [real,inout]

  • unit [integer,in]

  • ltransp [logical,in,]

  • kxrange (3,*) [integer,in,]

  • kyrange (3,*) [integer,in,]

  • zrange (3,*) [integer,in,]

  • sendbuf_cmplx (,,*,*) [complex,inout]

Use :

general (write_full_columns(), get_range_no())

Call to:

report_clean_output()

subroutine  mpicomm/mpiwait(bwait)

Wrapper to go with non-blocking communication functions.

12-dec-14/wlad: coded

Parameters:

bwait [integer]

Call to:

report_clean_output()

subroutine  mpicomm/mpimerge_1d(vector, nk[, idir])

Merges vectors of processors along idir by filling invalid values (NaN).

22-nov-10/MR: coded

Parameters:
  • vector (nk) [real,inout]

  • nk [integer,in,]

  • idir [integer,in,]

Call to:

report_clean_output()

function  mpicomm/report_clean_output(flag, message)

Generates error message for files (like snapshots) which are distributedly written. Message contains list of processors at which operation failed.

flag (IN) : indicates failure of I/O operation at local processor message(OUT): message fragment containing list of processors where

operation failed (only relevant for root)

return value: flag for ‘synchronize!’, identical for all processors

14-nov-11/MR: coded

Parameters:
  • flag [logical,in]

  • message [character,out]

Return:

report_clean_output [logical]

Use :

general (itoa(), safe_character_append(), safe_character_prepend())