solid_cells_ogrid_mpicomm
Module
Description
FROM MPICOMM.F90
- ROUTINES
initiate_isendrcv_bdry_ogrid finalize_isendrcv_bdry_ogrid isendrcv_bdry_x_ogrid initialize_mpicomm_ogrid finalize_isend_init_interpol
Quick access
- Variables:
bufsizes_yz_og,filter_hsize,inll,inlu,inul,inuu,inyl,inyu,inzl,inzu,ircv,irecv_rq_frll,irecv_rq_frlu,irecv_rq_fromlowx,irecv_rq_fromlowx_fi,irecv_rq_fromlowy,irecv_rq_fromlowy_fi,irecv_rq_fromlowz,irecv_rq_fromuppx,irecv_rq_fromuppx_fi,irecv_rq_fromuppy,irecv_rq_fromuppy_fi,irecv_rq_fromuppz,irecv_rq_frul,irecv_rq_fruu,isend_rq_toll,isend_rq_tolowx,isend_rq_tolowx_fi,isend_rq_tolowy,isend_rq_tolowy_fi,isend_rq_tolowz,isend_rq_tolu,isend_rq_toul,isend_rq_touppx,isend_rq_touppx_fi,isend_rq_touppy,isend_rq_touppy_fi,isend_rq_touppz,isend_rq_touu,isendrcv_bdry_x_ogrid,isnd,l1_ogrid,l1i_ogrid,l2_ogrid,l2i_ogrid,lbufxi_fi,lbufxi_og,lbufxo_fi,lbufxo_og,lbufyi_fi,lbufyi_og,lbufyo_fi,lbufyo_og,lbufzi_og,lbufzo_og,lcorner_yz,llbufi_og,llbufo_og,llcorn,lubufi_og,lubufo_og,lucorn,m1_ogrid,m1i_ogrid,m2_ogrid,m2i_ogrid,mx_ogrid,my_ogrid,mz_ogrid,n1_ogrid,n1i_ogrid,n2_ogrid,n2i_ogrid,nx_ogrid,ny_ogrid,nz_ogrid,toll,tolowx,tolowy,tolowz,tolu,toul,touppx,touppy,touppz,touu,tridag_parallel_y,tridag_parallel_z,ubufxi_fi,ubufxi_og,ubufxo_fi,ubufxo_og,ubufyi_fi,ubufyi_og,ubufyo_fi,ubufyo_og,ubufzi_og,ubufzo_og,ulbufi_og,ulbufo_og,ulcorn,uubufi_og,uubufo_og,uucorn- Routines:
cyclic_parallel_y(),finalize_isend_init_interpol(),finalize_isendrcv_bdry_filter(),finalize_isendrcv_bdry_ogrid(),initialize_mpicomm_ogrid(),initiate_isendrcv_bdry_filter(),initiate_isendrcv_bdry_ogrid(),tridag_parallel_x()
Needed modules
cdata: $Id$mpicomm(mpisend_nonblock_real(),mpirecv_nonblock_real(),mpiwait(),mpibarrier(),mpisend_real(),mpirecv_real(),mpibcast_real()): $Id$
Variables
- solid_cells_mpicomm/bufsizes_yz_og (4,2) [integer,private]
- solid_cells_mpicomm/filter_hsize [integer,private/parameter/optional/default=10/2-nghost]
- solid_cells_mpicomm/inll [integer,private/parameter/optional/default=3]
- solid_cells_mpicomm/inlu [integer,private/parameter/optional/default=2]
- solid_cells_mpicomm/inul [integer,private/parameter/optional/default=4]
- solid_cells_mpicomm/inuu [integer,private/parameter/optional/default=1]
- solid_cells_mpicomm/inyl [integer,private/parameter/optional/default=3]
- solid_cells_mpicomm/inyu [integer,private/parameter/optional/default=1]
- solid_cells_mpicomm/inzl [integer,private/parameter/optional/default=4]
- solid_cells_mpicomm/inzu [integer,private/parameter/optional/default=2]
- solid_cells_mpicomm/ircv [integer,private/parameter/optional/default=1]
- solid_cells_mpicomm/irecv_rq_frll [integer,private]
- solid_cells_mpicomm/irecv_rq_frlu [integer,private]
- solid_cells_mpicomm/irecv_rq_fromlowx [integer,private]
- solid_cells_mpicomm/irecv_rq_fromlowx_fi [integer,private]
- solid_cells_mpicomm/irecv_rq_fromlowy [integer,private]
- solid_cells_mpicomm/irecv_rq_fromlowy_fi [integer,private]
- solid_cells_mpicomm/irecv_rq_fromlowz [integer,private]
- solid_cells_mpicomm/irecv_rq_fromuppx [integer,private]
- solid_cells_mpicomm/irecv_rq_fromuppx_fi [integer,private]
- solid_cells_mpicomm/irecv_rq_fromuppy [integer,private]
- solid_cells_mpicomm/irecv_rq_fromuppy_fi [integer,private]
- solid_cells_mpicomm/irecv_rq_fromuppz [integer,private]
- solid_cells_mpicomm/irecv_rq_frul [integer,private]
- solid_cells_mpicomm/irecv_rq_fruu [integer,private]
- solid_cells_mpicomm/isend_rq_toll [integer,private]
- solid_cells_mpicomm/isend_rq_tolowx [integer,private]
- solid_cells_mpicomm/isend_rq_tolowx_fi [integer,private]
- solid_cells_mpicomm/isend_rq_tolowy [integer,private]
- solid_cells_mpicomm/isend_rq_tolowy_fi [integer,private]
- solid_cells_mpicomm/isend_rq_tolowz [integer,private]
- solid_cells_mpicomm/isend_rq_tolu [integer,private]
- solid_cells_mpicomm/isend_rq_toul [integer,private]
- solid_cells_mpicomm/isend_rq_touppx [integer,private]
- solid_cells_mpicomm/isend_rq_touppx_fi [integer,private]
- solid_cells_mpicomm/isend_rq_touppy [integer,private]
- solid_cells_mpicomm/isend_rq_touppy_fi [integer,private]
- solid_cells_mpicomm/isend_rq_touppz [integer,private]
- solid_cells_mpicomm/isend_rq_touu [integer,private]
- solid_cells_mpicomm/isendrcv_bdry_x_ogrid [private]
- solid_cells_mpicomm/isnd [integer,private/parameter/optional/default=2]
- solid_cells_mpicomm/l1_ogrid [integer,private/parameter/optional/default=1+nghost]
- solid_cells_mpicomm/l1i_ogrid [integer,private/parameter/optional/default=l1_ogrid+nghost-1]
- solid_cells_mpicomm/l2_ogrid [integer,private/parameter/optional/default=mx_ogrid-nghost]
- solid_cells_mpicomm/l2i_ogrid [integer,private/parameter/optional/default=mx_ogrid-2*nghost+1]
- solid_cells_mpicomm/lbufxi_fi (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lbufxi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lbufxo_fi (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lbufxo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lbufyi_fi (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lbufyi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lbufyo_fi (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lbufyo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lbufzi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lbufzo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lcorner_yz [logical,private/optional/default=.false.]
- solid_cells_mpicomm/llbufi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/llbufo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/llcorn [integer,private]
- solid_cells_mpicomm/lubufi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lubufo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/lucorn [integer,private]
- solid_cells_mpicomm/m1_ogrid [integer,private/parameter/optional/default=1+nghost]
- solid_cells_mpicomm/m1i_ogrid [integer,private/parameter/optional/default=m1_ogrid+nghost-1]
- solid_cells_mpicomm/m2_ogrid [integer,private/parameter/optional/default=my_ogrid-nghost]
- solid_cells_mpicomm/m2i_ogrid [integer,private/parameter/optional/default=my_ogrid-2*nghost+1]
- solid_cells_mpicomm/mx_ogrid [integer,private/parameter/optional/default=nx_ogrid+2*nghost]
- solid_cells_mpicomm/my_ogrid [integer,private/parameter/optional/default=ny_ogrid+2*nghost]
- solid_cells_mpicomm/mz_ogrid [integer,private/parameter/optional/default=nz_ogrid+2*nghost]
- solid_cells_mpicomm/n1_ogrid [integer,private/parameter/optional/default=1+nghost]
- solid_cells_mpicomm/n1i_ogrid [integer,private/parameter/optional/default=n1_ogrid+nghost-1]
- solid_cells_mpicomm/n2_ogrid [integer,private/parameter/optional/default=mz_ogrid-nghost]
- solid_cells_mpicomm/n2i_ogrid [integer,private/parameter/optional/default=mz_ogrid-2*nghost+1]
- solid_cells_mpicomm/nx_ogrid [integer,private/parameter/optional/default=nxgrid_ogrid/nprocx]
- solid_cells_mpicomm/ny_ogrid [integer,private/parameter/optional/default=nygrid_ogrid/nprocy]
- solid_cells_mpicomm/nz_ogrid [integer,private/parameter/optional/default=nzgrid_ogrid/nprocz]
- solid_cells_mpicomm/toll [integer,private/parameter/optional/default=7]
- solid_cells_mpicomm/tolowx [integer,private/parameter/optional/default=13]
- solid_cells_mpicomm/tolowy [integer,private/parameter/optional/default=3]
- solid_cells_mpicomm/tolowz [integer,private/parameter/optional/default=5]
- solid_cells_mpicomm/tolu [integer,private/parameter/optional/default=10]
- solid_cells_mpicomm/toul [integer,private/parameter/optional/default=8]
- solid_cells_mpicomm/touppx [integer,private/parameter/optional/default=14]
- solid_cells_mpicomm/touppy [integer,private/parameter/optional/default=4]
- solid_cells_mpicomm/touppz [integer,private/parameter/optional/default=6]
- solid_cells_mpicomm/touu [integer,private/parameter/optional/default=9]
- solid_cells_mpicomm/tridag_parallel_y [private]
- solid_cells_mpicomm/ubufxi_fi (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ubufxi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ubufxo_fi (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ubufxo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ubufyi_fi (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ubufyi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ubufyo_fi (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ubufyo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ubufzi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ubufzo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ulbufi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ulbufo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/ulcorn [integer,private]
- solid_cells_mpicomm/uubufi_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/uubufo_og (*,*,*,*) [real,private/allocatable]
- solid_cells_mpicomm/uucorn [integer,private]
Subroutines and functions
- subroutine solid_cells_mpicomm/initialize_mpicomm_ogrid(lfilter_solution)
Initialise MPI communication on the overlapping grids. This is run after the standard initialize_mpicomm subroutine.
19-apr-17/Jorgen: Adapted and modified, from initialize_mpicomm in mpicomm.f90 29-nov-17/Jorgen: Allocation of filter zones added
- Parameters:
lfilter_solution [logical,in]
- Call to:
- subroutine solid_cells_mpicomm/initiate_isendrcv_bdry_ogrid(f_og)
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 rightneigh are initialized by mpicomm_init.
apr-17/Jorgen: adapted from mpicomm.f90
- Parameters:
- Call to:
- subroutine solid_cells_mpicomm/finalize_isendrcv_bdry_ogrid(f_og)
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.
07-feb-17/Jorgen: Adapted from mpicomm.f90
- Parameters:
- Call to:
- subroutine solid_cells_mpicomm/finalize_isend_init_interpol(ireq1d, ireq2d, nreq1d, nreq2d)
Wait for non-blocking communication in setting up interpolation arrays to finish
- Parameters:
ireq1d (nreq1d) [integer]
ireq2d (nreq2d) [integer]
nreq1d [integer]
nreq2d [integer]
- Call to:
- subroutine solid_cells_mpicomm/initiate_isendrcv_bdry_filter(f_og, hsize)
Isend and Irecv boundary filter values, called before filter is used. Does not wait for the receives to finish (done in finalize_isendrcv_bdry)
29-nov-17/Jorgen: adapted from initiate_isendrcv_bdry_ogrid 22-jan-18/Jorgen: added filter zone in x-direction
- Parameters:
- Call to:
- subroutine solid_cells_mpicomm/finalize_isendrcv_bdry_filter(f_hlox, f_hupx, f_hloy, f_hupy, hsize)
Make sure the communications initiated with initiate_isendrcv_bdry_filter are finished and insert the just received boundary values.
29-nov-17/Jorgen: Adapted from finalize_isendrcv_bdry_ogrid
- subroutine solid_cells_mpicomm/cyclic_parallel_y(a, b, c, alpha, beta, r, x, n)
Inversion of a tridiagonal system with periodic BC (alpha and beta coefficients in the left and right corners). Used in the ADI scheme of the implicit_physics module. Note: this subroutine is using twice the tridag one written above by tobi.
b1 c1 0 … beta | | x1 | | r1 |a2 b2 c2 … | | x2 | | r2 |0 a3 b3 c3 | | x3 | = | r3 |… | | … | | … |an-1 bn-1 cn-1 | | xn-1 | | rn-1 |alpha 0 a_n b_n | | xn | | rn |17.01.18/Jorgen: Adapded from general.f90
- subroutine solid_cells_mpicomm/tridag_parallel_x(a, b, c, r, u, n)
Solves a tridiagonal system, where the system is distributed over many processors.
22.01.18/Jorgen: Adapded from tridag_parallel_y
b1 c1 0 … | | u1 | | r1 |a2 b2 c2 … | | u2 | | r2 |0 a3 b3 c3 | | u3 | = | r3 |… | | … | | … |an-1 bn-1 cn-1 | | un-1 | | rn-1 |0 a_n b_n | | un | | rn |