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/fake_parallel_close [private]
- mpicomm/fake_parallel_open [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/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/llcorn [integer,private]
- mpicomm/lroot [public]
- 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/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/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/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/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
- 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
- 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:
- 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:
- 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:
- 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:
- 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:
- 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:
- 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:
- 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:
- 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
- subroutine mpicomm/end_serialize()
Do block between start_serialize and end_serialize serially in iproc order.
19-nov-02/wolf: coded
- subroutine mpicomm/mpibarrier()
Synchronize nodes.
23-jul-2002/wolf: coded
- subroutine mpicomm/mpifinalize()
- 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.
- 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.
- 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 :
- 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:
- 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:
- 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:
- Call to:
- 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:
- Call to:
- 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:
- Call to:
- 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:
- Call to:
- 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:
- 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:
- subroutine mpicomm/y2x(a, xi, zj, zproc_no, ay)
Load the y dimension of an array in a 1-d array.
- Parameters:
- Call to:
- subroutine mpicomm/z2x(a, xi, yj, yproc_no, az)
Load the z dimension of an array in a 1-d array.
- Parameters:
- Call to:
- 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:
- 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:
- Call to:
- 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:
- Call to:
- 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 :
- Call to:
- subroutine mpicomm/mpiwait(bwait)
Wrapper to go with non-blocking communication functions.
12-dec-14/wlad: coded
- Parameters:
bwait [integer]
- Call to:
- 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:
- 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())