20 #include <fms_platform.h>    22   use mpp_mod, 
only: mpp_init, mpp_exit, mpp_pe, mpp_npes, stderr, stdout, &
    23        mpp_clock_id, mpp_clock_begin, mpp_clock_end
    31   integer, 
parameter :: n=96 
    32   real, 
allocatable, 
dimension(:,:,:) :: a, b, cc
    34 #ifdef use_CRI_pointers    37   integer(POINTER_KIND) :: ptr 
    38   integer :: i, j, k, ks, ke
    42   type(mpp_pset_type) :: pset
    45   integer :: id_full, id_alloc, id_auto
    46   integer :: out_unit, errunit
    53   write( out_unit,
'(a,i6)' )
'Starting MPP_PSET unit test, npes=', npes
    56   id_full = mpp_clock_id( 
'Full array' )
    57   id_alloc = mpp_clock_id( 
'Allocatable array, PSETs' )
    58   id_auto = mpp_clock_id( 
'Automatic array, PSETs' )
    65 #ifdef use_CRI_pointers    70 #ifdef use_CRI_pointers    75   call mpp_clock_begin(id_full)
    83   call mpp_clock_end(id_full)
    86   write( errunit,
'(a,4i6)' )
'pe, n, ks, ke=', pe, n, ks, ke
    87   call mpp_clock_begin(id_alloc)
    96   call mpp_clock_end(id_alloc)
    97   write( errunit,
'(a,i6,2es23.15)' )
'b, c should be equal: pe b c=', &
   106   subroutine test_auto(m)
   109     integer, 
intent(in) :: m
   112 #ifdef use_CRI_pointers   117     call mpp_clock_begin(id_auto)
   121              d(i,j,k) = 2*a(i,j,k)
   126     call mpp_clock_end(id_auto)
   127     write( errunit,
'(a,i6,2es23.15)' )
'b, d should be equal: pe b d=', &
   130   end subroutine test_auto
 subroutine, public mpp_pset_segment_array(pset, ls, le, lsp, lep)
 
subroutine, public mpp_pset_stack_push(pset, ptr, len)
 
subroutine, public mpp_pset_create(npset, pset, stacksize, pelist, commID)
 
subroutine, public mpp_pset_delete(pset)
 
logical function, public mpp_pset_root(pset)
 
subroutine, public mpp_pset_sync(pset)