comm_start Subroutine

public subroutine comm_start()

Uses

  • proc~~comm_start~~UsesGraph proc~comm_start comm_start module~mod_global_parameters mod_global_parameters proc~comm_start->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Initialize the MPI environment

Arguments

None

Calls

proc~~comm_start~~CallsGraph proc~comm_start comm_start mpi_comm_rank mpi_comm_rank proc~comm_start->mpi_comm_rank mpi_comm_size mpi_comm_size proc~comm_start->mpi_comm_size mpi_type_get_extent mpi_type_get_extent proc~comm_start->mpi_type_get_extent proc~mpistop mpistop proc~comm_start->proc~mpistop mpi_abort mpi_abort proc~mpistop->mpi_abort

Called by

proc~~comm_start~~CalledByGraph proc~comm_start comm_start proc~main main proc~main->proc~comm_start program~agile agile program~agile->proc~main

Source Code

  subroutine comm_start
    use mod_global_parameters

    integer(kind=MPI_ADDRESS_KIND) :: lb
    integer(kind=MPI_ADDRESS_KIND) :: sizes

    ! Each process stores its rank, which ranges from 0 to N-1, where N is the
    ! number of processes.
    call MPI_COMM_RANK(MPI_COMM_WORLD,mype,ierrmpi)

    ! Store the number of processes
    call MPI_COMM_SIZE(MPI_COMM_WORLD,npe,ierrmpi)

    

    ! Use the default communicator, which contains all the processes
    icomm = MPI_COMM_WORLD

    ! Get size of double/integer
    call MPI_TYPE_GET_EXTENT(MPI_REAL,lb,sizes,ierrmpi)
    if (sizes /= size_real) call mpistop("Incompatible real size")
    call MPI_TYPE_GET_EXTENT(MPI_DOUBLE_PRECISION,lb,sizes,ierrmpi)
    if (sizes /= size_double) call mpistop("Incompatible double size")
    call MPI_TYPE_GET_EXTENT(MPI_INTEGER,lb,sizes,ierrmpi)
    if (sizes /= size_int) call mpistop("Incompatible integer size")
    call MPI_TYPE_GET_EXTENT(MPI_LOGICAL,lb,sizes,ierrmpi)
    if (sizes /= size_logical) call mpistop("Incompatible logical size")

  end subroutine comm_start