get_lat_subset.F90 Source File


This file depends on

sourcefile~~get_lat_subset.f90~~EfferentGraph sourcefile~get_lat_subset.f90 get_lat_subset.F90 sourcefile~base_base.f90 Base_Base.F90 sourcefile~get_lat_subset.f90->sourcefile~base_base.f90 sourcefile~errorhandling.f90 ErrorHandling.F90 sourcefile~get_lat_subset.f90->sourcefile~errorhandling.f90 sourcefile~latlondecomposition.f90 LatLonDecomposition.F90 sourcefile~get_lat_subset.f90->sourcefile~latlondecomposition.f90 sourcefile~constants.f90 Constants.F90 sourcefile~base_base.f90->sourcefile~constants.f90 sourcefile~keywordenforcer.f90 KeywordEnforcer.F90 sourcefile~base_base.f90->sourcefile~keywordenforcer.f90 sourcefile~mapl_range.f90 MAPL_Range.F90 sourcefile~base_base.f90->sourcefile~mapl_range.f90 sourcefile~maplgrid.f90 MaplGrid.F90 sourcefile~base_base.f90->sourcefile~maplgrid.f90 sourcefile~mapl_throw.f90 MAPL_Throw.F90 sourcefile~errorhandling.f90->sourcefile~mapl_throw.f90 sourcefile~latlondecomposition.f90->sourcefile~base_base.f90 sourcefile~latlondecomposition.f90->sourcefile~keywordenforcer.f90 sourcefile~lataxis.f90 LatAxis.F90 sourcefile~latlondecomposition.f90->sourcefile~lataxis.f90 sourcefile~lonaxis.f90 LonAxis.F90 sourcefile~latlondecomposition.f90->sourcefile~lonaxis.f90 sourcefile~internalconstants.f90 InternalConstants.F90 sourcefile~constants.f90->sourcefile~internalconstants.f90 sourcefile~mathconstants.f90 MathConstants.F90 sourcefile~constants.f90->sourcefile~mathconstants.f90 sourcefile~physicalconstants.f90 PhysicalConstants.F90 sourcefile~constants.f90->sourcefile~physicalconstants.f90 sourcefile~coordinateaxis.f90 CoordinateAxis.F90 sourcefile~lataxis.f90->sourcefile~coordinateaxis.f90 sourcefile~pfio.f90 pFIO.F90 sourcefile~lataxis.f90->sourcefile~pfio.f90 sourcefile~lonaxis.f90->sourcefile~coordinateaxis.f90 sourcefile~lonaxis.f90->sourcefile~pfio.f90 sourcefile~mapl_exceptionhandling.f90 MAPL_ExceptionHandling.F90 sourcefile~mapl_range.f90->sourcefile~mapl_exceptionhandling.f90 sourcefile~maplgrid.f90->sourcefile~errorhandling.f90 sourcefile~maplgrid.f90->sourcefile~constants.f90 sourcefile~maplgrid.f90->sourcefile~keywordenforcer.f90 sourcefile~mapl_sort.f90 MAPL_Sort.F90 sourcefile~maplgrid.f90->sourcefile~mapl_sort.f90 sourcefile~pflogger_stub.f90 pflogger_stub.F90 sourcefile~maplgrid.f90->sourcefile~pflogger_stub.f90

Source Code

#include "MAPL_ErrLog.h"

submodule (mapl3g_LatLonDecomposition) get_lat_subset_smod
   use mapl_ErrorHandlingMod
   use MAPL_Base
   implicit none (type, external)

contains

   pure module function get_lat_subset(this, axis, rank) result(local_axis)
      type(LatAxis) :: local_axis
      class(LatLonDecomposition), intent(in) :: this
      type(LatAxis), intent(in) :: axis
      integer, intent(in) :: rank

      real(kind=R8), allocatable :: centers(:)
      real(kind=R8), allocatable :: corners(:)
      
      integer :: j_0, j_1, j_n

      call get_idx_range(this%lat_distribution, rank, j_0, j_1)
      j_n = j_1 ! unless

      associate (ny => size(this%get_lat_distribution()))
        if (1+rank == ny) then
           j_n = j_n + 1
        end if
      end associate
      
      centers = get_subset(axis%get_centers(), j_0, j_1)
      corners = get_subset(axis%get_corners(), j_0, j_n)
         
      local_axis = LatAxis(centers, corners)

   end function get_lat_subset

end submodule get_lat_subset_smod