SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/TOPD/init_surf_topd.F90
Go to the documentation of this file.
00001 !-------------------------------------------------------------------------------
00002 !     #############################################################
00003       SUBROUTINE INIT_SURF_TOPD(HPROGRAM,KI)
00004 !     #############################################################
00005 !
00006 !!****  *INIT_SURF_TOPD* - routine to initialize variables needed for coupling with Topmodel
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!**  METHOD
00012 !!    ------
00013 !!    The routine open and read the namelists NAM_COUPL_TOPD and NAM_TOPD,
00014 !! calculates the number of catchments concerned, the different time step 
00015 !! variables and all the variables nedded for coupling with Topmodel. 
00016 !!
00017 !!    EXTERNAL
00018 !!    --------
00019 !!
00020 !!
00021 !!    IMPLICIT ARGUMENTS
00022 !!    ------------------
00023 !!
00024 !!    REFERENCE
00025 !!    ---------
00026 !!
00027 !!
00028 !!    AUTHOR
00029 !!    ------
00030 !!      B. Vincendon   *Meteo France*   
00031 !!
00032 !!    MODIFICATIONS
00033 !!    -------------
00034 !!      Original    11/2006
00035 !!      Modif 04/2007: Arguments PTOPD_STEP,KNB_TOPD_STEP become module
00036 !!                     variables from MODD_TOPDDYN
00037 !-------------------------------------------------------------------------------
00038 !
00039 !*       0.    DECLARATIONS
00040 !              ------------
00041 !
00042 USE MODD_SURFEX_MPI, ONLY : NPROC
00043 USE MODD_SURFEX_OMP, ONLY : NBLOCKTOT
00044 !
00045 USE MODD_TOPODYN, ONLY :CCAT, XSPEEDR, XSPEEDH, NNCAT, &
00046                         XRTOP_D2, XSPEEDG
00047 USE MODD_COUPLING_TOPD, ONLY :  LCOUPL_TOPD, NNB_TOPD, LBUDGET_TOPD
00048 !
00049 USE MODD_ISBA_n, ONLY : TSNOW
00050 !
00051 USE MODI_GET_LUOUT
00052 USE MODI_ABOR1_SFX
00053 !
00054 USE MODI_INIT_TOPD
00055 USE MODI_INIT_COUPL_TOPD
00056 USE MODI_INIT_BUDGET_COUPL_ROUT
00057 !
00058 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00059 USE PARKIND1  ,ONLY : JPRB
00060 !
00061 IMPLICIT NONE
00062 !
00063 !*       0.1   Declarations of arguments
00064 !              -------------------------
00065 !
00066  CHARACTER(LEN=*),  INTENT(IN)     :: HPROGRAM      !
00067 INTEGER,           INTENT(IN)     :: KI            ! grid dimension
00068 !
00069 INTEGER :: ILUOUT
00070 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00071 !-------------------------------------------------------------------------------
00072 IF (LHOOK) CALL DR_HOOK('INIT_SURF_TOPD',0,ZHOOK_HANDLE)
00073 !
00074 IF (LCOUPL_TOPD) THEN
00075   IF (NPROC>1) CALL ABOR1_SFX('INIT_SURF_TOPD: TOPD CANNOT RUN WITH MORE THAN 1 MPI TASK') 
00076   IF (NBLOCKTOT>1) CALL ABOR1_SFX("INIT_SURF_TOPD: TOPD CANNOT RUN WITH NUMEROUS OPENMP BLOCKS")
00077   IF (TSNOW%SCHEME/='3-L') &
00078         CALL ABOR1_SFX("INIT_SURF_TOPD: coupling with topmodel only runs with TSNOW%SCHEME=3-L")
00079 ENDIF
00080 !
00081  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00082 !            
00083 !         1.   Reads the namelists
00084 !              --------------------
00085 !
00086 WRITE(ILUOUT,*) 'Debut init_surf_topo_n'
00087 !
00088 IF (LCOUPL_TOPD) THEN
00089   !
00090   !         3.   Initialises variables specific to Topmodel
00091   !              -------------------------------------------
00092   WRITE(ILUOUT,*) 'NNCAT',NNCAT
00093   !
00094   CALL INIT_TOPD(HPROGRAM)
00095   !
00096   !         4.   Initialises variables nedded for coupling with Topmodel
00097   !              -------------------------------------------------------
00098   !
00099   CALL INIT_COUPL_TOPD(HPROGRAM,KI)
00100   !
00101   WRITE(ILUOUT,*) 'Couplage avec TOPMODEL active'
00102   !
00103   IF (LBUDGET_TOPD) CALL INIT_BUDGET_COUPL_ROUT(KI)
00104   !
00105 ELSE
00106   !
00107   WRITE(ILUOUT,*) 'Pas de couplage avec TOPMODEL'
00108   !
00109 ENDIF
00110 !
00111 IF (LHOOK) CALL DR_HOOK('INIT_SURF_TOPD',1,ZHOOK_HANDLE)
00112 !
00113 END SUBROUTINE INIT_SURF_TOPD