AbstractCommSplitter.F90 Source File


Files dependent on this one

sourcefile~~abstractcommsplitter.f90~~AfferentGraph sourcefile~abstractcommsplitter.f90 AbstractCommSplitter.F90 sourcefile~maplshared.f90 MaplShared.F90 sourcefile~maplshared.f90->sourcefile~abstractcommsplitter.f90 sourcefile~simplecommsplitter.f90 SimpleCommSplitter.F90 sourcefile~maplshared.f90->sourcefile~simplecommsplitter.f90 sourcefile~simplecommsplitter.f90->sourcefile~abstractcommsplitter.f90 sourcefile~base.f90 Base.F90 sourcefile~base.f90->sourcefile~simplecommsplitter.f90 sourcefile~componentdriver.f90 ComponentDriver.F90 sourcefile~componentdriver.f90->sourcefile~maplshared.f90 sourcefile~extdataroot_gridcomp.f90 ExtDataRoot_GridComp.F90 sourcefile~extdataroot_gridcomp.f90->sourcefile~maplshared.f90 sourcefile~fieldunits.f90 FieldUnits.F90 sourcefile~fieldunits.f90->sourcefile~maplshared.f90 sourcefile~mapl_cap.f90 MAPL_Cap.F90 sourcefile~mapl_cap.f90->sourcefile~simplecommsplitter.f90 sourcefile~mapl_generic.f90~2 MAPL_Generic.F90 sourcefile~mapl_generic.f90~2->sourcefile~maplshared.f90 sourcefile~multicommserver.f90 MultiCommServer.F90 sourcefile~multicommserver.f90->sourcefile~simplecommsplitter.f90 sourcefile~multigroupserver.f90 MultiGroupServer.F90 sourcefile~multigroupserver.f90->sourcefile~simplecommsplitter.f90 sourcefile~pfio_mapl_demo.f90 pfio_MAPL_demo.F90 sourcefile~pfio_mapl_demo.f90->sourcefile~simplecommsplitter.f90 sourcefile~servermanager.f90 ServerManager.F90 sourcefile~servermanager.f90->sourcefile~simplecommsplitter.f90

Source Code

#include "MAPL_ErrLog.h"
#include "unused_dummy.H"

module MAPL_AbstractCommSplitterMod
   use MPI
   implicit none
   private

   public :: AbstractCommSplitter

   type, abstract :: AbstractCommSplitter
      private
      integer :: shared_communicator
   contains
      procedure(split), deferred :: split
      procedure :: set_shared_communicator
      procedure :: get_shared_communicator
   end type AbstractCommSplitter


   abstract interface

      function split(this, unusable, rc) result(split_communicator)
         use MAPL_KeywordEnforcerMod
         use MAPL_SplitCommunicatorMod
         import AbstractCommSplitter
         type (SplitCommunicator) :: split_communicator
         class (AbstractCommSplitter), intent(in) :: this
         class (KeywordEnforcer), optional, intent(in) :: unusable
         integer, optional, intent(out) :: rc
      end function split

   end interface

contains

   
   integer function get_shared_communicator(this) result(shared_communicator)
      class (AbstractCommSplitter), intent(in) :: this

      shared_communicator = this%shared_communicator

   end function get_shared_communicator


   subroutine set_shared_communicator(this, shared_communicator)
      class (AbstractCommSplitter), intent(inout) :: this
      integer, intent(in) :: shared_communicator

      this%shared_communicator = shared_communicator

   end subroutine set_shared_communicator

end module MAPL_AbstractCommSplitterMod