SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_seafluxn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_SEAFLUX_n(HPROGRAM)
00003 !     #########################################
00004 !
00005 !!****  *READ_SEAFLUX_n* - read SEAFLUX varaibles
00006 !!
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!
00018 !!    IMPLICIT ARGUMENTS
00019 !!    ------------------
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!      V. Masson   *Meteo France*      
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original    01/2003 
00032 !!      Modified    02/2008 Add oceanic variables initialisation
00033 !-------------------------------------------------------------------------------
00034 !
00035 !*       0.    DECLARATIONS
00036 !              ------------
00037 !
00038 USE MODD_SEAFLUX_n,      ONLY : XSST, XZ0, LINTERPOL_SST, &
00039                                   CINTERPOL_SST, XSST_MTH, TTIME  
00040 USE MODD_OCEAN_n,        ONLY : LMERCATOR
00041 !
00042 USE MODI_READ_SURF
00043 USE MODI_INTERPOL_SST_MTH
00044 !
00045 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00046 USE PARKIND1  ,ONLY : JPRB
00047 !
00048 USE MODI_GET_TYPE_DIM_n
00049 !
00050 IMPLICIT NONE
00051 !
00052 !*       0.1   Declarations of arguments
00053 !              -------------------------
00054 !
00055  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! calling program
00056 !
00057 !*       0.2   Declarations of local variables
00058 !              -------------------------------
00059 !
00060 INTEGER           :: JMTH, INMTH
00061  CHARACTER(LEN=2 ) :: YMTH
00062 !
00063 INTEGER           :: ILU          ! 1D physical dimension
00064 !
00065 INTEGER           :: IRESP          ! Error code after redding
00066 !
00067  CHARACTER(LEN=12) :: YRECFM         ! Name of the article to be read
00068 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00069 !
00070 !
00071 !-------------------------------------------------------------------------------
00072 !
00073 !* 1D physical dimension
00074 !
00075 IF (LHOOK) CALL DR_HOOK('READ_SEAFLUX_N',0,ZHOOK_HANDLE)
00076 YRECFM='SIZE_SEA'
00077  CALL GET_TYPE_DIM_n('SEA   ',ILU)
00078 !
00079 !*       2.     Prognostic fields:
00080 !               -----------------
00081 !
00082 !* water temperature
00083 !
00084 ALLOCATE(XSST(ILU))
00085 !
00086 IF(LINTERPOL_SST)THEN
00087 !
00088 ! Precedent, Current and Next Monthly SST
00089   INMTH=3
00090 ! Precedent, Current and Next Annual Monthly SST
00091   IF(CINTERPOL_SST=='ANNUAL')INMTH=14
00092 !
00093   ALLOCATE(XSST_MTH(SIZE(XSST),INMTH))
00094   DO JMTH=1,INMTH
00095      WRITE(YMTH,'(I2)') (JMTH-1)
00096      YRECFM='SST_MTH'//ADJUSTL(YMTH(:LEN_TRIM(YMTH)))
00097      CALL READ_SURF(HPROGRAM,YRECFM,XSST_MTH(:,JMTH),IRESP)
00098   ENDDO
00099 !
00100   CALL INTERPOL_SST_MTH(TTIME%TDATE%YEAR,TTIME%TDATE%MONTH,TTIME%TDATE%DAY,XSST)
00101 !
00102 ELSE
00103 ! 
00104   ALLOCATE(XSST_MTH(0,0))
00105 !
00106   YRECFM='SST'
00107   CALL READ_SURF(HPROGRAM,YRECFM,XSST(:),IRESP)
00108 !
00109 ENDIF
00110 !
00111 !-------------------------------------------------------------------------------
00112 !
00113 !*       3.     Semi-prognostic fields:
00114 !               ----------------------
00115 !
00116 !* roughness length
00117 !
00118 ALLOCATE(XZ0(ILU))
00119 YRECFM='Z0SEA'
00120 XZ0(:) = 0.001
00121  CALL READ_SURF(HPROGRAM,YRECFM,XZ0(:),IRESP)
00122 IF (LHOOK) CALL DR_HOOK('READ_SEAFLUX_N',1,ZHOOK_HANDLE)
00123 !
00124 !------------------------------------------------------------------------------
00125 END SUBROUTINE READ_SEAFLUX_n