!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer, 
!                     version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms 
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer 
!version 3 or (at your option) any later version that should be found at: 
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html 
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software; 
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec), 
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
***s/r check_parti - Checks domain partitioning
*

      logical function check_parti (F_si,F_n,F_npe)
*
#include "impnone.cdk"
*
      integer F_si,F_n,F_npe
*
*author
*     Michel Desgagne
*
*revision
* v2_10 - Desgagne M.       - initial version
* v2_21 - Desgagne M.       - rpn_comm stooge for MPI
*
*object
*
*arguments
*  Name        I/O                 Description
*----------------------------------------------------------------
*  F_si         I         Starting global index of local sub-domain     
*  F_n          I         Global dimension
*  F_npe        I         Number of PEs
*----------------------------------------------------------------
*implicits
#include "lun.cdk"
*
      integer part_ok,part_ok_,err
*
*-------------------------------------------------------------------
*
      check_parti = .true.
      part_ok = 0
      if (F_si.gt.F_n) part_ok=1
      call rpn_comm_ALLREDUCE (part_ok,part_ok_,1,"MPI_INTEGER",
     $                                    "MPI_BOR","grid",err)
      if (part_ok_.gt.0) check_parti = .false.
      if ((.not.check_parti).and.(Lun_out.gt.0)) 
     $     write (Lun_out,900) F_n,F_npe
 900  format (/' ILLEGAL DOMAIN PARTITIONING:'/
     $         ' CANNOT PARTITION ',I5,' POINTS IN ',I5,' SUBDOMAINS'/)
*
*-------------------------------------------------------------------
*
      return
      end