mpimod Module

  • Need to consider overloading routines as send_ghost and send_noghost so that it is more clear what the structure of the input arrays should be. code needs to know how many species are being used.

Uses

  • module~~mpimod~~UsesGraph module~mpimod mpimod mpi mpi module~mpimod->mpi iso_fortran_env iso_fortran_env module~mpimod->iso_fortran_env module~phys_consts phys_consts module~mpimod->module~phys_consts module~phys_consts->iso_fortran_env

Used by

  • module~~mpimod~~UsedByGraph module~mpimod mpimod module~potentialbcs_mumps potentialBCs_mumps module~potentialbcs_mumps->module~mpimod module~grid grid module~potentialbcs_mumps->module~grid module~potential_comm potential_comm module~potential_comm->module~mpimod module~potential_comm->module~potentialbcs_mumps module~pdeelliptic PDEelliptic module~potential_comm->module~pdeelliptic module~potential_comm->module~grid module~potential_mumps potential_mumps module~potential_comm->module~potential_mumps module~pdeelliptic->module~mpimod module~io io module~io->module~mpimod module~io->module~grid program~gemini3d Gemini3D program~gemini3d->module~mpimod program~gemini3d->module~potentialbcs_mumps program~gemini3d->module~potential_comm program~gemini3d->module~io program~gemini3d->module~grid module~multifluid multifluid program~gemini3d->module~multifluid module~temporal temporal program~gemini3d->module~temporal module~precipbcs_mod precipBCs_mod program~gemini3d->module~precipbcs_mod module~neutral neutral program~gemini3d->module~neutral module~mpisend mpisend module~mpisend->module~mpimod module~mpihalo mpihalo module~mpihalo->module~mpimod module~sources_mpi sources_mpi module~sources_mpi->module~mpimod module~sources sources module~sources_mpi->module~sources module~grid->module~mpimod module~multifluid->module~mpimod module~multifluid->module~grid module~ionization ionization module~multifluid->module~ionization module~multifluid->module~precipbcs_mod module~advec_mpi advec_mpi module~multifluid->module~advec_mpi module~diffusion diffusion module~multifluid->module~diffusion module~multifluid->module~sources module~potential_mumps->module~mpimod module~potential_mumps->module~pdeelliptic module~temporal->module~mpimod module~ionization->module~mpimod module~ionization->module~grid module~ionization->module~neutral module~precipbcs_mod->module~mpimod module~precipbcs_mod->module~grid module~neutral->module~mpimod module~neutral->module~grid module~advec_mpi->module~mpimod module~advec_mpi->module~grid module~mpirecv mpirecv module~mpirecv->module~mpimod program~magcalc MagCalc program~magcalc->module~mpimod program~magcalc->module~io program~magcalc->module~grid module~mag_hdf5~2 mag_hdf5 module~mag_hdf5~2->module~io module~mag_hdf5 mag_hdf5 module~mag_hdf5->module~io module~diffusion->module~grid module~output output module~output->module~io module~mag mag module~mag->module~io module~potential_root potential_root module~potential_root->module~potential_comm module~input input module~input->module~io module~atmos atmos module~atmos->module~neutral module~glow_dummy glow_dummy module~glow_dummy->module~ionization module~sources->module~grid module~io_aurora io_aurora module~io_aurora->module~io module~grid_read grid_read module~grid_read->module~grid module~plasma plasma module~plasma->module~io program~test_potential2d test_potential2d program~test_potential2d->module~pdeelliptic module~elliptic3d elliptic3d module~elliptic3d->module~pdeelliptic module~potential2d potential2d module~potential2d->module~pdeelliptic module~potential2d->module~grid module~potential2d->module~potential_mumps module~mag_raw mag_raw module~mag_raw->module~io module~glow_mod glow_mod module~glow_mod->module~ionization module~potential_worker potential_worker module~potential_worker->module~potential_comm module~elliptic2d elliptic2d module~elliptic2d->module~pdeelliptic module~plasma_output_hdf5 plasma_output_hdf5 module~plasma_output_hdf5->module~plasma module~io_aurora_raw io_aurora_raw module~io_aurora_raw->module~io_aurora module~path_exists~2 path_exists module~path_exists~2->module~input module~plasma_input_raw plasma_input_raw module~plasma_input_raw->module~plasma module~plasma_input_hdf5 plasma_input_hdf5 module~plasma_input_hdf5->module~plasma module~io_aurora_hdf5 io_aurora_hdf5 module~io_aurora_hdf5->module~io_aurora module~io_aurora_hdf5~2 io_aurora_hdf5 module~io_aurora_hdf5~2->module~io_aurora module~readgrid_hdf5 readgrid_hdf5 module~readgrid_hdf5->module~grid_read module~plasma_output_raw plasma_output_raw module~plasma_output_raw->module~plasma module~plasma_output_hdf5~2 plasma_output_hdf5 module~plasma_output_hdf5~2->module~plasma module~path_exists path_exists module~path_exists->module~input module~readgrid_raw readgrid_raw module~readgrid_raw->module~grid_read

Contents


Variables

TypeVisibility AttributesNameInitial
integer, public, parameter:: tagns =2

NOW A LIST OF TAGS SO THESE DO NOT NEED TO BE EMBEDDED IN EACH SUBROUTINE root/workers input routines. also output routines for root/worker

integer, public, parameter:: tagvs1 =3

NOW A LIST OF TAGS SO THESE DO NOT NEED TO BE EMBEDDED IN EACH SUBROUTINE root/workers input routines. also output routines for root/worker

integer, public, parameter:: tagTs =4

NOW A LIST OF TAGS SO THESE DO NOT NEED TO BE EMBEDDED IN EACH SUBROUTINE root/workers input routines. also output routines for root/worker

integer, public, parameter:: tagJ1 =6

output root/worker routines, main program, potential_comm

integer, public, parameter:: tagJ2 =7

output root/worker routines, main program, potential_comm

integer, public, parameter:: tagJ3 =8

output root/worker routines, main program, potential_comm

integer, public, parameter:: tagv2 =9

output root/worker routines, main program, potential_comm

integer, public, parameter:: tagv3 =10

output root/worker routines, main program, potential_comm

integer, public, parameter:: tagvs3BC =100

used in the advection boundary conditions

integer, public, parameter:: tagnsBC =101

used in the advection boundary conditions

integer, public, parameter:: tagrhovs1BC =102

used in the advection boundary conditions

integer, public, parameter:: tagrhoesBC =103

used in the advection boundary conditions

integer, public, parameter:: tagvs1BC =1000
integer, public, parameter:: tagvs2BC =1001
integer, public, parameter:: tagE1 =11

THESE MESSAGES ARE USED IN ELECTRODYNAMICS MODULE

integer, public, parameter:: tagE2 =12

THESE MESSAGES ARE USED IN ELECTRODYNAMICS MODULE

integer, public, parameter:: tagE3 =13

THESE MESSAGES ARE USED IN ELECTRODYNAMICS MODULE

integer, public, parameter:: tagsigP =16
integer, public, parameter:: tagsigH =17
integer, public, parameter:: tagsig0 =18
integer, public, parameter:: tagincap =19
integer, public, parameter:: tagv2pol =20
integer, public, parameter:: tagv3pol =21
integer, public, parameter:: tagDE2Dt =22
integer, public, parameter:: tagDE3Dt =23
integer, public, parameter:: tagflagdirich =24
integer, public, parameter:: tagvn2 =25
integer, public, parameter:: tagvn3 =26
integer, public, parameter:: tagB1 =27
integer, public, parameter:: tagx3 =1

IN THE MAIN PROGRAM

integer, public, parameter:: tagdt =5

IN THE MAIN PROGRAM

integer, public, parameter:: tagx1 =27
integer, public, parameter:: tagx2 =28
integer, public, parameter:: tagh1 =29

IN THE GRID MODULE

integer, public, parameter:: tagh2 =30

IN THE GRID MODULE

integer, public, parameter:: tagh3 =31

IN THE GRID MODULE

integer, public, parameter:: tagglat =32
integer, public, parameter:: tagglon =33
integer, public, parameter:: tagalt =34
integer, public, parameter:: taglx1 =35
integer, public, parameter:: taglx2 =36
integer, public, parameter:: taglx3 =37
integer, public, parameter:: taglx3all =38
integer, public, parameter:: tagBmag =39
integer, public, parameter:: taginc =40
integer, public, parameter:: tagnull =41
integer, public, parameter:: tageunit1 =42
integer, public, parameter:: tageunit2 =43
integer, public, parameter:: tageunit3 =44
integer, public, parameter:: tager =45
integer, public, parameter:: tagetheta =46
integer, public, parameter:: tagephi =47
integer, public, parameter:: tagr =56
integer, public, parameter:: tagtheta =57
integer, public, parameter:: tagphi =58
integer, public, parameter:: taglrho =48

IN THE NEUTRAL MODULE

integer, public, parameter:: taglz =49

IN THE NEUTRAL MODULE

integer, public, parameter:: tagdnO =50
integer, public, parameter:: tagdnN2 =51
integer, public, parameter:: tagdnO2 =52
integer, public, parameter:: tagdTn =53
integer, public, parameter:: tagdvnrho =54
integer, public, parameter:: tagdvnz =55
integer, public, parameter:: tagly =69
integer, public, parameter:: tagllat =59

FOR DEALING WITH PRECIPITATION BOUNDARY CONDITIONS MODULE

integer, public, parameter:: tagllon =60

FOR DEALING WITH PRECIPITATION BOUNDARY CONDITIONS MODULE

integer, public, parameter:: tagmlat =61

FOR DEALING WITH PRECIPITATION BOUNDARY CONDITIONS MODULE

integer, public, parameter:: tagmlon =62

FOR DEALING WITH PRECIPITATION BOUNDARY CONDITIONS MODULE

integer, public, parameter:: tagQp =63

FOR DEALING WITH PRECIPITATION BOUNDARY CONDITIONS MODULE

integer, public, parameter:: tagE0p =64

FOR DEALING WITH PRECIPITATION BOUNDARY CONDITIONS MODULE

integer, public, parameter:: tagE0xp =65

FOR DEALING WITH THE ELECTRIC FIELD BOUNDARY CONDITIONS

integer, public, parameter:: tagE0yp =66

FOR DEALING WITH THE ELECTRIC FIELD BOUNDARY CONDITIONS

integer, public, parameter:: tagE0xi =67

FOR DEALING WITH THE ELECTRIC FIELD BOUNDARY CONDITIONS

integer, public, parameter:: tagE0yi =68

FOR DEALING WITH THE ELECTRIC FIELD BOUNDARY CONDITIONS

integer, public, parameter:: tagsrc =69

FOR DISTRIBUTING PART OF THE ELECTRODYNAMICS CALCULATIONS

integer, public, parameter:: tagSigPint2 =70

FOR DISTRIBUTING PART OF THE ELECTRODYNAMICS CALCULATIONS

integer, public, parameter:: tagSigPint3 =71

FOR DISTRIBUTING PART OF THE ELECTRODYNAMICS CALCULATIONS

integer, public, parameter:: tagSigHint =72

FOR DISTRIBUTING PART OF THE ELECTRODYNAMICS CALCULATIONS

integer, public, parameter:: tagincapint =73

FOR DISTRIBUTING PART OF THE ELECTRODYNAMICS CALCULATIONS

integer, public, parameter:: tagv2electro =74

FOR DISTRIBUTING PART OF THE ELECTRODYNAMICS CALCULATIONS

integer, public, parameter:: tagv3electro =75

FOR DISTRIBUTING PART OF THE ELECTRODYNAMICS CALCULATIONS

integer, public, parameter:: tagE01 =76
integer, public, parameter:: tagE02 =77
integer, public, parameter:: tagE03 =78
integer, public, parameter:: tagVminx1 =79
integer, public, parameter:: tagVmaxx1 =80
integer, public, parameter:: tagBr =81

THESE ARE USED IN MAGCALC.F90 PROGRAM

integer, public, parameter:: tagBtheta =82

THESE ARE USED IN MAGCALC.F90 PROGRAM

integer, public, parameter:: tagBphi =83

THESE ARE USED IN MAGCALC.F90 PROGRAM

integer, public, parameter:: tagdV =84
integer, public, parameter:: tagJx =85
integer, public, parameter:: tagJy =86
integer, public, parameter:: tagRx =87
integer, public, parameter:: tagRy =88
integer, public, parameter:: tagRz =89
integer, public, parameter:: tagRcubed =90
integer, public, parameter:: tagJz =91
integer, public, parameter:: tagswap =92

FOR COMMUNICATING IF THE GRID DIMENSIONS HAVE BEEN SWAPPED

integer, public, parameter:: taglx2all =93

FOR SENDING THE FULL X2 GRID SIZE

integer, public, parameter:: tagx2all =94
integer, public, parameter:: tagx3all =95
integer, public, parameter:: tagAur =96

AURORAL TAG(S)

GENERIC PARAMETER (USED BY ADVECTION CODE - HOPEFULLY DOESN'T CREATE PROBLEMS; MZ - probably need to fix???

integer, public, parameter:: tagTninf =98
integer, public, parameter:: tagxnrange =99
integer, public, parameter:: tagynrange =104
integer, public, parameter:: taglx =105
integer, public, parameter:: tagxn =106
integer, public, parameter:: tagyn =107
integer, public, parameter:: tagzn =108
integer, public, parameter:: tagdvnx =109
integer, protected :: myid

VARIABLES REUSED BY ALL WORKERS AND USING MODULES no external procedure should mess with these (but they need to be able to read them)

integer, protected :: lid

VARIABLES REUSED BY ALL WORKERS AND USING MODULES no external procedure should mess with these (but they need to be able to read them)

integer, private :: ierr =0
integer, protected :: lid2

using procedures need to be able to overwrite this to prevent seg. faults (or something) VARIABLES RELATED TO PROCESS GRID (IF USED)

integer, protected :: lid3

using procedures need to be able to overwrite this to prevent seg. faults (or something) VARIABLES RELATED TO PROCESS GRID (IF USED)

integer, protected :: myid2

using procedures need to be able to overwrite this to prevent seg. faults (or something) VARIABLES RELATED TO PROCESS GRID (IF USED)

integer, protected :: myid3

using procedures need to be able to overwrite this to prevent seg. faults (or something) VARIABLES RELATED TO PROCESS GRID (IF USED)


Interfaces

public interface gather_recv

Some explanation as the the naming convention used in this module is in order at this point. Generally it is: _

Read more…

public interface gather_send

public interface bcast_send

public interface bcast_recv

public interface bcast_send1D_2

public interface bcast_recv1D_2

public interface bcast_send1D_3

public interface bcast_recv1D_3

public interface halo

  • public interface halo_23()

    Arguments

    None

public interface bcast_send3D_x3i

public interface bcast_recv3D_x3i

public interface bcast_send3D_x2i

public interface bcast_recv3D_x2i

public interface bcast_send3D_ghost

public interface bcast_recv3D_ghost

public interface halo_end

interface

  • public module subroutine gather_send2D_23(paramtrim, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:):: paramtrim
    integer, intent(in) :: tag

interface

  • public module subroutine gather_send3D_23(paramtrim, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:,:):: paramtrim
    integer, intent(in) :: tag

interface

  • public module subroutine gather_send4D_23(param, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: param
    integer, intent(in) :: tag

interface

  • public subroutine bcast_send1D_23(paramall, tag, param)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(-1:):: paramall
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(-1:):: param

interface

  • public module subroutine bcast_send2D_23(paramtrimall, tag, paramtrim)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:):: paramtrimall
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(:,:):: paramtrim

interface

  • public module subroutine bcast_send3D_23(paramtrimall, tag, paramtrim)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:,:):: paramtrimall
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(:,:,:):: paramtrim

interface

  • public module subroutine bcast_send4D_23(paramall, tag, param)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: paramall
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(-1:,-1:,-1:,:):: param

interface

  • public module subroutine bcast_send3D_x3i_23(paramtrimall, tag, paramtrim)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:,:):: paramtrimall
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(:,:,:):: paramtrim

interface

  • public module subroutine bcast_send3D_ghost_23(paramall, tag, param)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:):: paramall
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(-1:,-1:,-1:):: param

interface

  • public module subroutine bcast_send3D_x2i_23(paramtrimall, tag, paramtrim)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:,:):: paramtrimall
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(:,:,:):: paramtrim

interface

  • public module subroutine bcast_send1D_23_3(paramall, tag, param)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(-1:):: paramall
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(-1:):: param

interface

  • public module subroutine bcast_send1D_23_2(paramall, tag, param)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(-1:):: paramall
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(-1:):: param

interface

  • public module subroutine gather_recv2D_23(paramtrim, tag, paramtrimall)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:):: paramtrim
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(:,:):: paramtrimall

interface

  • public module subroutine gather_recv3D_23(paramtrim, tag, paramtrimall)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:,:):: paramtrim
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(:,:,:):: paramtrimall

interface

  • public module subroutine gather_recv4D_23(param, tag, paramall)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: param
    integer, intent(in) :: tag
    real(kind=wp), intent(out), dimension(-1:,-1:,-1:,:):: paramall

interface

  • public subroutine bcast_recv1D_23(param, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(-1:):: param
    integer, intent(in) :: tag

interface

  • public module subroutine bcast_recv2D_23(paramtrim, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(:,:):: paramtrim
    integer, intent(in) :: tag

interface

  • public module subroutine bcast_recv3D_23(paramtrim, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(:,:,:):: paramtrim
    integer, intent(in) :: tag

interface

  • public module subroutine bcast_recv4D_23(param, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(-1:,-1:,-1:,:):: param
    integer, intent(in) :: tag

interface

  • public module subroutine bcast_recv3D_x3i_23(paramtrim, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(:,:,:):: paramtrim
    integer, intent(in) :: tag

interface

  • public module subroutine bcast_recv3D_ghost_23(param, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(-1:,-1:,-1:):: param
    integer, intent(in) :: tag

interface

  • public module subroutine bcast_recv1D_old3(param, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(-1:):: param
    integer, intent(in) :: tag

interface

  • public module subroutine bcast_recv1D_23_2(param, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(-1:):: param
    integer, intent(in) :: tag

interface

  • public module subroutine bcast_recv1D_23_3(param, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(-1:):: param
    integer, intent(in) :: tag

interface

  • public subroutine bcast_recv2D_23_3(paramtrim, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(:,:):: paramtrim
    integer, intent(in) :: tag

interface

  • public module subroutine bcast_recv3D_x2i_23(paramtrim, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(out), dimension(:,:,:):: paramtrim
    integer, intent(in) :: tag

interface

  • public module subroutine halo_23(param, lhalo, tag, isperiodic)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(inout), dimension(-1:,-1:,-1:):: param
    integer, intent(in) :: lhalo
    integer, intent(in) :: tag
    logical, intent(in) :: isperiodic

interface

  • public module subroutine halo_end_23(param, paramend, paramtop, tag)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(inout), dimension(:,:,:):: param
    real(kind=wp), intent(out), dimension(:,:):: paramend
    real(kind=wp), intent(out), dimension(:,:):: paramtop
    integer, intent(in) :: tag

Functions

public function grid2ID(i2, i3)

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: i2
integer, intent(in) :: i3

Return Value integer

public function ID2grid(ID)

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: ID

Return Value integer, dimension(2)

public function slabinds(ID, lx2, lx3)

GET THE MIN AND MAX X2,X3 INDICES REFERENCING FULL GRID VARIABLE FOR A GIVEN PROCESS ID

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: ID
integer, intent(in) :: lx2
integer, intent(in) :: lx3

Return Value integer, dimension(4)

public function mpibreakdown() result(ierr)

SHUTS DOWN MPI

Arguments

None

Return Value integer


Subroutines

public subroutine mpisetup()

INITIALIZES MODULE MPI VARIABLES FOR A WORKER. THIS CURRENTLY IS UNUSED AS IT HAS NOT BEEN FULLY IMPLEMENTED IN THIS VERSINO OF THE CODE.

Read more…

Arguments

None

public subroutine mpi_manualgrid(lx2all, lx3all, lid2in, lid3in)

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: lx2all
integer, intent(in) :: lx3all
integer, intent(in) :: lid2in
integer, intent(in) :: lid3in

public subroutine mpigrid(lx2all, lx3all)

THIS SUBROUTINE DEFINES A PROCESS GRID, IF REQUIRED

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: lx2all
integer, intent(in) :: lx3all