SUBROUTINE CALIFE(KREP1,KREP2)
!****---------------------------------------------------------------------------
!****   CALIFE : GESTION DE L'EBAUCHE ET INITIALISATION DES STATISTIQUES.
!****   ------
!****  Auteurs : YD 11/89, JH 04/90, AAD 93, VC 04/94, FT 10/95
!****---------------------------------------------------------------------------
!*  
!*    BUT : verification du guess trouve par rapport a celui demande en namelist
!*    ---   initialisations d'elements du modele statistique : portees, coefs.
!*          divers et ecart-types pour PHI et Hu. Ces initialisations dependent
!*          de l'echeance du guess IGUESS et de l'utilisation selon LAESTU
!*          d'ecart-type autres que ceux en DATA (assimilation des stats)
!*          A la fin de CALIFE, les commons QACOSS et QASSET sont remplis.
!*  
!*    ROUTINE APPELANTE : CANARI
!*    -----------------
!*  
!*    SOUS-PROGRAMMES APPELES :
!*    -----------------------
!*        - CAISSE : initialisation assimilee des ecart-types de PHI et Hu.
!*        - CANIFE : ecriture sur fichier des ecart-types d'erreur de PHI et Hu.
!*  
!*    COMMON utilises : QAPASS pour JPNBGU
!*    ---------------   QACTEX pour LAESTU et LAESTA
!*------------------------------------------------------------------------------

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

USE YOMLUN   , ONLY : NULASE
USE YOMTAG   , ONLY : MTAGGSUM
USE YOMCT0   , ONLY : NPROC
USE YOMMP    , ONLY : MYPROC   ,NSTRIN   ,NSTROUT
USE QAPASS   , ONLY : JPNBGU
USE QACTEX   , ONLY : LAESTU   ,LAESTA
USE MPL_MODULE

IMPLICIT NONE

INTEGER(KIND=JPIM),INTENT(INOUT) :: KREP1 
INTEGER(KIND=JPIM),INTENT(INOUT) :: KREP2 
INTEGER(KIND=JPIM) :: IGUESS, ITAG, IREP
REAL(KIND=JPRB) :: ZHOOK_HANDLE

#include "cabane.intfb.h"
#include "cagade.intfb.h"
#include "caissedm.intfb.h"
#include "canape.intfb.h"
#include "canife.intfb.h"
#include "caohis.intfb.h"


!**-----------------------------------------------------------------------------
!**   1.    Test de compatibilite du guess lu.
!**         ---------------------------------

IF (LHOOK) CALL DR_HOOK('CALIFE',0,ZHOOK_HANDLE)
IGUESS = JPNBGU
IF (MYPROC <= NSTRIN) CALL CAGADE (IGUESS)

!**-----------------------------------------------------------------------------
!**   2.    Initialisations.
!**         ---------------

CALL CANAPE
CALL CABANE

!**-----------------------------------------------------------------------------
!**   3.    Assimilation des ecart-types.
!**         ----------------------------

!  Utilisation des statistiques assimilees si c'est demande et si le guess n'est
!  pas une climatologie, utilisation de valeurs tabulees ("climatologie" pour
!  ecart-types) sinon.

IF ( LAESTU ) THEN
  IF (IGUESS < JPNBGU) THEN
    IF (KREP1 /= 1) CALL CAOHIS (.FALSE.,KREP1)
    IF (NSTRIN < NPROC) THEN
      ITAG=MTAGGSUM+19
      CALL MPL_BROADCAST(KREP1,ITAG,1,CDSTRING='CALIFE:')
    ENDIF
    IF (KREP1 == 1) THEN
      CALL CAISSEDM (IGUESS)
      IF (MYPROC <= NSTRIN) CALL FAIRME (IREP,NULASE,'UNKNOWN')
    ENDIF
  ENDIF
ENDIF
!  Sauvegarde des ecart-types d'erreur du guess
IF ( LAESTA ) THEN
  IF (KREP2 /= 1) CALL CAOHIS (.TRUE.,KREP2)
  IF (NSTROUT < NPROC) THEN
    ITAG=MTAGGSUM+20
    CALL MPL_BROADCAST(KREP2,ITAG,1,CDSTRING='CALIFE:')
  ENDIF
  IF (KREP2 == 1) THEN
    CALL CANIFE
  ENDIF
ENDIF

!**-----------------------------------------------------------------------------
IF (LHOOK) CALL DR_HOOK('CALIFE',1,ZHOOK_HANDLE)
END SUBROUTINE CALIFE
