!-------------------------------------- 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 --------------------------------------
#include "model_macros_f.h"
*

      subroutine pe_rebind (F_nthreads,F_prout) 9
      implicit none
*
      logical F_prout
      integer F_nthreads
*
#include "ptopo.cdk"
*author
*     Lee/Valin     Mar 2007
*
*revision
* v3_30 - Lee/Valin       - initial version
* v3_32 - Lee/Desgagne    - simplification
*
      integer  omp_get_max_threads
      external omp_get_max_threads
      logical flag
*
*-------------------------------------------------------------------
*
      if (F_nthreads .eq. Ptopo_npeOpenMP) return

      call omp_set_num_threads (F_nthreads)
      Ptopo_npeOpenMP = F_nthreads

      flag = .false.
      if (Ptopo_bind_L) then
         if ( (mod(F_nthreads,Ptopo_npeOpenMP_resv).eq.0 ) .or.
     $         (F_nthreads.lt.Ptopo_npeOpenMP_resv) ) then
            call rebind()
	    flag = .true.
         endif
      endif

      if (F_prout) write (6,9000) Ptopo_npeOpenMP,flag

 9000 format (/' Ptopo_npeOpenMP reset to: ',I,' Rebind: ',L)
*
*-------------------------------------------------------------------
*
      return
      end