SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/init_surf_tripn.F90
Go to the documentation of this file.
00001 !#########################################################
00002 SUBROUTINE INIT_SURF_TRIP_n(HPROGRAM, KI, KSW, ORESTART, KYEAR,     &
00003                               KMONTH, PDURATION, KTRIP_MONTH,        &
00004                               KTRIP_COUNT, PZENITH, PSW_BANDS,       &
00005                               PEMIS, PTSRAD, PDIR_ALB, PSCA_ALB      )  
00006 !#########################################################
00007 !
00008 !!****  *INIT_SURF_TRIP_n* - routine to initialize the SURFACE-TRIP coupling
00009 !!
00010 !!    PURPOSE
00011 !!    -------
00012 !!
00013 !!**  METHOD
00014 !!    ------
00015 !!
00016 !!    EXTERNAL
00017 !!    --------
00018 !!
00019 !!
00020 !!    IMPLICIT ARGUMENTS
00021 !!    ------------------
00022 !!
00023 !!    REFERENCE
00024 !!    ---------
00025 !!
00026 !!
00027 !!    AUTHOR
00028 !!    ------
00029 !!      B. Decharme   *Meteo France*    
00030 !!
00031 !!    MODIFICATIONS
00032 !!    -------------
00033 !!      Original    05/2008
00034 !-------------------------------------------------------------------------------
00035 !
00036 !*       0.    DECLARATIONS
00037 !              ------------
00038 !
00039 USE MODD_CSTS,       ONLY : XDAY
00040 !
00041 USE MODD_SURFEX_MPI, ONLY : NPROC
00042 USE MODD_SURFEX_OMP, ONLY : NBLOCKTOT
00043 !
00044 USE MODI_GET_LUOUT
00045 USE MODI_GET_CONF_ISBA_n
00046 !
00047 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00048 USE PARKIND1  ,ONLY : JPRB
00049 !
00050 USE MODI_ABOR1_SFX
00051 USE MODI_INI_CSTS
00052 USE MODI_INIT_COUPLING_SURF_TRIP_n
00053 USE MODI_INIT_TRIP_n
00054 !
00055 IMPLICIT NONE
00056 !
00057 !*       0.1   Declarations of arguments
00058 !              -------------------------
00059 !
00060  CHARACTER(LEN=6),                 INTENT(IN)  :: HPROGRAM    ! program calling surf. schemes
00061 LOGICAL,                          INTENT(IN)  :: ORESTART    
00062 INTEGER,                          INTENT(IN)  :: KI         ! Surfex grid dimension
00063 INTEGER,                          INTENT(IN)  :: KSW        ! Number of spectral bands
00064 INTEGER,                          INTENT(IN)  :: KYEAR       ! current year (UTC)
00065 INTEGER,                          INTENT(IN)  :: KMONTH      ! current month (UTC)
00066 REAL,                             INTENT(IN)  :: PDURATION
00067 INTEGER,                          INTENT(OUT) :: KTRIP_MONTH ! current output month (UTC)
00068 INTEGER,                          INTENT(OUT) :: KTRIP_COUNT ! current TRIP counter
00069 !
00070 REAL,             DIMENSION(KI),  INTENT(IN)  :: PZENITH   ! solar zenithal angle
00071 REAL,             DIMENSION(KI), INTENT(IN)  :: PSW_BANDS ! middle wavelength of each band
00072 REAL,             DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB  ! direct albedo for each band
00073 REAL,             DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB  ! diffuse albedo for each band
00074 REAL,             DIMENSION(KI),  INTENT(OUT) :: PEMIS     ! emissivity
00075 REAL,             DIMENSION(KI),  INTENT(OUT) :: PTSRAD    ! radiative temperature
00076 !
00077 !*       0.2   Declarations of local variables
00078 !              -------------------------------
00079 !
00080  CHARACTER(LEN=10) :: YGRID
00081 !
00082 LOGICAL :: LTRIP
00083 LOGICAL :: LFLOOD
00084 !
00085 INTEGER :: IDIMTAB
00086 INTEGER :: ILUOUT
00087 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00088 !
00089 !-------------------------------------------------------------------------------
00090 !
00091 IF (LHOOK) CALL DR_HOOK('INIT_SURF_TRIP_N',0,ZHOOK_HANDLE)
00092  CALL INI_CSTS
00093 !
00094  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00095 !
00096 ! * 1. Get ISBA configuration
00097 !      
00098  CALL GET_CONF_ISBA_n(LTRIP,LFLOOD,YGRID,IDIMTAB)
00099 !
00100 ! * 2. Initialyse TRIP
00101 !
00102 IF(.NOT.LTRIP)THEN
00103 !        
00104   IF(LFLOOD)THEN
00105     CALL ABOR1_SFX('INIT_SURF_TRIPN: LFLOOD=T BUT LTRIP=F')
00106   ENDIF
00107 !
00108 ELSE
00109 !
00110  IF (NPROC>1) CALL ABOR1_SFX('INIT_SURF_TRIPN: TRIP CANNOT RUN WITH MORE THAN 1 MPI TASK') 
00111  IF (NBLOCKTOT>1) CALL ABOR1_SFX("INIT_SURF_TRIPN: TRIP CANNOT RUN WITH NUMEROUS OPENMP BLOCKS")
00112 !
00113  KTRIP_MONTH=0
00114  IF(PDURATION/XDAY<=31.)THEN
00115     KTRIP_MONTH=KMONTH
00116  ELSEIF(PDURATION/XDAY>366.)THEN
00117    CALL ABOR1_SFX('Trip output time can not be superior to one year per run')
00118  ENDIF
00119 !
00120   KTRIP_COUNT = 0
00121 !  
00122   CALL INIT_TRIP_n(HPROGRAM,KYEAR,KTRIP_MONTH,ORESTART)
00123 !
00124 ! * 3. Test and initialyse Surface-TRIP coupling
00125 !
00126   CALL INIT_COUPLING_SURF_TRIP_n(HPROGRAM,KI,KSW,LFLOOD,YGRID,IDIMTAB,PZENITH,&
00127                                     PSW_BANDS,PEMIS,PTSRAD,PDIR_ALB,PSCA_ALB    )  
00128 !          
00129 ENDIF
00130 IF (LHOOK) CALL DR_HOOK('INIT_SURF_TRIP_N',1,ZHOOK_HANDLE)
00131 !
00132 !-------------------------------------------------------------------------------
00133 !
00134 END SUBROUTINE INIT_SURF_TRIP_n