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

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:

not_implemented(), mpibarrier(), mpiwait()

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:

f_og (mx_ogrid,my_ogrid,mz_ogrid,mvar) [real]

Call to:

mpibarrier(), mpiwait()

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:

f_og (mx_ogrid,my_ogrid,mz_ogrid,mvar) [real,inout]

Call to:

mpiwait(), mpibarrier()

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:

mpiwait(), mpibarrier()

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:

mpiwait(), mpibarrier()

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

Parameters:
Call to:

mpiwait(), mpibarrier()

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

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

  • b (n) [real,in]

  • c (n) [real,in]

  • alpha [real,in]

  • beta [real,in]

  • r (n) [real,in]

  • x (n) [real,inout]

  • n [integer,in,]

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 |
Parameters:
  • a (n) [real,in]

  • b (n) [real,in]

  • c (n) [real,in]

  • r (n) [real,in]

  • u (n) [real,out]

  • n [integer,in,]