!OPTIONS XOPT(NOEVAL)
SUBROUTINE ACNPART ( KIDIA,KFDIA,KLON,KTDIA,KLEV,&
 !-----------------------------------------------------------------------
 ! - INPUT  2D .
 & PNEB,PNEBC,&
 ! - OUTPUT 1D .
 & PCLCC,PCLCH,PCLCL,PCLCM,PCLCT,&
 ! - LOCK ARGUMENTS .
 & CDLOCK)  

!**** *ACNPART * - CALCUL DES NEBULOSITES PARTIELLES.

!     Sujet.
!     ------
!     - ROUTINE DE CALCUL ACTIF .
!       CALCUL DES NEBULOSITES PARTIELLES.

!**   Interface.
!     ----------
!        *CALL* *ACNPART*

!-----------------------------------------------------------------------
! WARNING: THE ENGLISH VERSION OF VARIABLES' NAMES IS TO BE READ IN THE
!          "APLPAR" CODE.
!-----------------------------------------------------------------------

! -   ARGUMENTS D'ENTREE.
!     -------------------

! - NOM DES PARAMETRES DE DIMENSIONNEMENT DE LA PHYSIQUE.

! KIDIA      : INDICE DE DEPART DES BOUCLES VECTORISEES SUR L'HORIZONT..
! KFDIA      : INDICE DE FIN DES BOUCLES VECTORISEES SUR L'HORIZONTALE.
! KLON       : DIMENSION HORIZONTALE DES TABLEAUX.
! KTDIA      : INDICE DE DEPART DES BOUCLES VERTICALES (1 EN GENERAL).
! KLEV       : DIMENSION VERTICALE DES TABLEAUX "FULL LEVEL".

! - NOM DES VARIABLES DE LA PHYSIQUE (PAR ORDRE ALPHABETIQUE DANS CHAQUE
!   CATEGORIE).

! - 2D (1:KLEV) .
                                                                                
! PNEB       : NEBULOSITE TOTALE
! PNEBC      : NEBULOSITE CONVECTIVE
                                                                                

!-----------------------------------------------------------------------

! -   ARGUMENTS DE SORTIE.
!     --------------------

! - 1D (DIAGNOSTIQUE) .

! PCLCC      : SORTIE DIAGNOSTIQUE DE LA NEBULOSITE CONVECTIVE.
! PCLCH      : SORTIE DIAGNOSTIQUE DE LA NEBULOSITE HAUTE.
! PCLCL      : SORTIE DIAGNOSTIQUE DE LA NEBULOSITE BASSE.
! PCLCM      : SORTIE DIAGNOSTIQUE DE LA NEBULOSITE MOYENNE.
! PCLCT      : SORTIE DIAGNOSTIQUE DE LA NEBULOSITE TOTALE.

!-----------------------------------------------------------------------

! -   ARGUMENTS IMPLICITES.
!     ---------------------

! COMMON/YOMPHY /
! COMMON/YOMCST /
! COMMON/YOMPHY0/
! COMMON/YOMPHY2/

!-----------------------------------------------------------------------

!     Externes.
!     ---------

!     Methode.
!     --------

!     Auteur.
!     -------
!        07-02, R. Brozkova.

!-----------------------------------------------------------------------

USE PARKIND1  ,ONLY : JPIM     ,JPRB
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK

USE YOMPHY   , ONLY : LRNUMX   
USE YOMPHY2  , ONLY : NTSHM    ,NTSML 

IMPLICIT NONE

INTEGER(KIND=JPIM),INTENT(IN)    :: KLON 
INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV 
INTEGER(KIND=JPIM),INTENT(IN)    :: KIDIA 
INTEGER(KIND=JPIM),INTENT(IN)    :: KFDIA 
INTEGER(KIND=JPIM),INTENT(IN)    :: KTDIA 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PNEB(KLON,KLEV)
REAL(KIND=JPRB)   ,INTENT(IN)    :: PNEBC(KLON,KLEV)
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PCLCC(KLON) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PCLCH(KLON) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PCLCL(KLON) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PCLCM(KLON) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PCLCT(KLON) 
CHARACTER(LEN=7)  ,INTENT(IN)    :: CDLOCK 

INTEGER(KIND=JPIM) :: JLEV, JLON

REAL(KIND=JPRB) :: ZB1

REAL(KIND=JPRB) :: ZHOOK_HANDLE

#include "abor1.intfb.h"

!     CHECK RELIABILITY OF INPUT ARGUMENTS.

IF (LHOOK) CALL DR_HOOK('ACNPART',0,ZHOOK_HANDLE)
IF(CDLOCK /= 'ACNPART ') CALL ABOR1('BAD NUMBER OF ARGUMENTS!')

!     ------------------------------------------------------------------
!     NEBULOSITES PARTIELLES: LE CALCUL EST EFFECTUE POUR LE COMPLEMENT A UN.
!     PARTIAL COUDINESSES: COMPUTATION IS DONE FOR COMPLEMENT TO ONE.

DO JLON=KIDIA,KFDIA
  PCLCH(JLON)=1.0_JPRB
  PCLCM(JLON)=1.0_JPRB
  PCLCL(JLON)=1.0_JPRB
  PCLCC(JLON)=1.0_JPRB
ENDDO

!     ------------------------------------------------------------------
!     NEBULOSITE (CONVECTIVE+STRATIFORME) A TROIS NIVEAUX.
!     DIAGNOSTIC OF THREE LEVELS (CONVECTIVE+STRATIFORM) CLOUDINESS.

DO JLEV=KTDIA,NTSHM
  DO JLON=KIDIA,KFDIA

!             CALCULS OPTIONNELS SUIVANT LA GEOMETRIE NUAGEUSE CHOISIE.
!             OPTIONAL COMPUTATIONS ACCORDING TO THE CHOSEN GEOMETRY.

    IF (LRNUMX.AND.JLEV > KTDIA) THEN
      ZB1=(1.0_JPRB-MAX(PNEB(JLON,JLEV),PNEB(JLON,JLEV-1)))/(1.0_JPRB &
       & -PNEB(JLON,JLEV-1))  
    ELSE
      ZB1=1.0_JPRB-PNEB(JLON,JLEV)
    ENDIF
    PCLCH(JLON)=PCLCH(JLON)*ZB1
  ENDDO
ENDDO
DO JLEV=NTSHM+1,NTSML
  DO JLON=KIDIA,KFDIA

!             CALCULS OPTIONNELS SUIVANT LA GEOMETRIE NUAGEUSE CHOISIE.
!             OPTIONAL COMPUTATIONS ACCORDING TO THE CHOSEN GEOMETRY.

    IF (LRNUMX.AND.JLEV > NTSHM+1) THEN
      ZB1=(1.0_JPRB-MAX(PNEB(JLON,JLEV),PNEB(JLON,JLEV-1)))/(1.0_JPRB &
       & -PNEB(JLON,JLEV-1))  
    ELSE
      ZB1=1.0_JPRB-PNEB(JLON,JLEV)
    ENDIF
    PCLCM(JLON)=PCLCM(JLON)*ZB1
  ENDDO
ENDDO
DO JLEV=NTSML+1,KLEV
  DO JLON=KIDIA,KFDIA

!             CALCULS OPTIONNELS SUIVANT LA GEOMETRIE NUAGEUSE CHOISIE.
!             OPTIONAL COMPUTATIONS ACCORDING TO THE CHOSEN GEOMETRY.

    IF (LRNUMX.AND.JLEV > NTSML+1) THEN
      ZB1=(1.0_JPRB-MAX(PNEB(JLON,JLEV),PNEB(JLON,JLEV-1)))/(1.0_JPRB &
       & -PNEB(JLON,JLEV-1))  
    ELSE
      ZB1=1.0_JPRB-PNEB(JLON,JLEV)
    ENDIF
    PCLCL(JLON)=PCLCL(JLON)*ZB1
  ENDDO
ENDDO

!     ------------------------------------------------------------------
!     NEBULOSITE CONVECTIVE DE CONVECTION PROFONDE, INTEGREE SUR LA VERTICALE.
!     DEEP CONVECTION CLOUDINESS, VERTICALLY INTEGRATED.

DO JLEV=KTDIA,KLEV
  DO JLON=KIDIA,KFDIA

!             CALCULS OPTIONNELS SUIVANT LA GEOMETRIE NUAGEUSE CHOISIE.
!             OPTIONAL COMPUTATIONS ACCORDING TO THE CHOSEN GEOMETRY.

    IF (LRNUMX.AND.JLEV > KTDIA) THEN
      ZB1=(1.0_JPRB-MAX(PNEBC(JLON,JLEV),PNEBC(JLON,JLEV-1)))/(1.0_JPRB &
       & -PNEBC(JLON,JLEV-1))  
    ELSE
      ZB1=1.0_JPRB-PNEBC(JLON,JLEV)
    ENDIF
    PCLCC(JLON)=PCLCC(JLON)*ZB1
  ENDDO
ENDDO

!     ------------------------------------------------------------------
!     ON VEUT EN SORTIE LA NEBULOSITE ET NON SON COMPLEMENT A UN.
!     ONE NEEDS AS OUTPUT CLOUDINESS AND NOT ITS COMPLEMENT TO ONE.

DO JLON=KIDIA,KFDIA
  PCLCH(JLON)=1.0_JPRB-PCLCH(JLON)
  PCLCM(JLON)=1.0_JPRB-PCLCM(JLON)
  PCLCL(JLON)=1.0_JPRB-PCLCL(JLON)
  PCLCC(JLON)=1.0_JPRB-PCLCC(JLON)
ENDDO

!     ------------------------------------------------------------------
!     DIAGNOSTIC DE LA NEBULOSITE TOTALE.
!     DIAGNOSTIC OF TOTAL CLOUDINESS.

DO JLON=KIDIA,KFDIA
  PCLCT(JLON)=1.0_JPRB
ENDDO
DO JLEV=KTDIA,KLEV
  DO JLON=KIDIA,KFDIA

!             CALCULS OPTIONNELS SUIVANT LA GEOMETRIE NUAGEUSE CHOISIE.
!             OPTIONAL COMPUTATIONS ACCORDING TO THE CHOSEN GEOMETRY.

    IF (LRNUMX.AND.JLEV > KTDIA) THEN
      ZB1=(1.0_JPRB-MAX(PNEB(JLON,JLEV),PNEB(JLON,JLEV-1)))/(1.0_JPRB &
       & -PNEB(JLON,JLEV-1))  
    ELSE
      ZB1=1.0_JPRB-PNEB(JLON,JLEV)
    ENDIF
    PCLCT(JLON)=PCLCT(JLON)*ZB1
  ENDDO
ENDDO
DO JLON=KIDIA,KFDIA
  PCLCT(JLON)=1.0_JPRB-PCLCT(JLON)
ENDDO
IF (LHOOK) CALL DR_HOOK('ACNPART',1,ZHOOK_HANDLE)
END SUBROUTINE ACNPART
