SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_seaflux.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE PREP_SEAFLUX(HPROGRAM,HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE)
00003 !     #################################################################################
00004 !
00005 !!****  *PREP_SEAFLUX* - prepares variables for SEAFLUX scheme
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    REFERENCE
00014 !!    ---------
00015 !!      
00016 !!
00017 !!    AUTHOR
00018 !!    ------
00019 !!     S. Malardel 
00020 !!
00021 !!    MODIFICATIONS
00022 !!    -------------
00023 !!      Original    01/2004
00024 !!      S. Riette   06/2009 PREP_SEAFLUX_SBL has no more argument
00025 !!      Modified    07/2012, P. Le Moigne : CMO1D phasing
00026 !!------------------------------------------------------------------
00027 !
00028 !
00029 USE MODI_PREP_HOR_SEAFLUX_FIELD
00030 USE MODI_PREP_VER_SEAFLUX
00031 USE MODI_PREP_OUTPUT_GRID
00032 USE MODI_PREP_SEAFLUX_SBL
00033 USE MODI_GET_LUOUT
00034 !
00035 USE MODN_PREP_SEAFLUX
00036 USE MODD_READ_NAMELIST,  ONLY : LNAM_READ
00037 USE MODD_SEAFLUX_n,      ONLY : XZ0, XSST, LSBL, XZ0H, &
00038                                   LINTERPOL_SST,         &
00039                                   CINTERPOL_SST,         &
00040                                   XSST_MTH  
00041 USE MODD_PREP,           ONLY : XZS_LS
00042 USE MODD_SURF_ATM,       ONLY : LVERTSHIFT
00043 USE MODD_OCEAN_n,        ONLY : LMERCATOR, LCURRENT
00044 USE MODD_SEAFLUX_GRID_n, ONLY : CGRID, XGRID_PAR, XLAT, XLON
00045 !
00046 USE MODD_OCEAN_REL_n, ONLY : XTAU_REL,LREL_CUR,LREL_TS, LFLUX_NULL, &
00047                            XQCORR,LFLX_CORR,LDIAPYCNAL
00048 !
00049 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00050 USE PARKIND1  ,ONLY : JPRB
00051 !
00052 USE MODI_CLEAN_PREP_OUTPUT_GRID
00053 !
00054 IMPLICIT NONE
00055 !
00056 !*      0.1    declarations of arguments
00057 !
00058  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00059  CHARACTER(LEN=28),  INTENT(IN)  :: HATMFILE    ! name of the Atmospheric file
00060  CHARACTER(LEN=6),   INTENT(IN)  :: HATMFILETYPE! type of the Atmospheric file
00061  CHARACTER(LEN=28),  INTENT(IN)  :: HPGDFILE    ! name of the Atmospheric file
00062  CHARACTER(LEN=6),   INTENT(IN)  :: HPGDFILETYPE! type of the Atmospheric file
00063 !
00064 !*      0.2    declarations of local variables
00065 !
00066 INTEGER :: JMTH,INMTH
00067 INTEGER :: ILUOUT
00068 LOGICAL :: GFOUND         ! Return code when searching namelist
00069 INTEGER :: ILUNAM         ! logical unit of namelist file
00070 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00071 
00072 !-------------------------------------------------------------------------------------
00073 !
00074 !*      0.     Default of configuration
00075 !
00076 !
00077 IF (LHOOK) CALL DR_HOOK('PREP_SEAFLUX',0,ZHOOK_HANDLE)
00078  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00079 !
00080  CALL PREP_OUTPUT_GRID(ILUOUT,CGRID,XGRID_PAR,XLAT,XLON)
00081 !
00082 !-------------------------------------------------------------------------------------
00083 !
00084 !*      1.     Read namelist
00085 !
00086 LSBL = LSEA_SBL
00087 LMERCATOR = LOCEAN_MERCATOR
00088 LCURRENT  = LOCEAN_CURRENT
00089 ! Relaxation-forcing parameters
00090 XTAU_REL   = XTIME_REL
00091 XQCORR     = XCORFLX
00092 !
00093 LREL_CUR   = LCUR_REL
00094 LREL_TS    = LTS_REL
00095 LFLUX_NULL = LZERO_FLUX
00096 LFLX_CORR  = LCORR_FLUX
00097 LDIAPYCNAL = LDIAPYC
00098 !
00099 !-------------------------------------------------------------------------------------
00100 !
00101 !*      2.     Reading and horizontal interpolations
00102 !
00103 !
00104 !*      2.0    Large scale orography
00105 !
00106  CALL PREP_HOR_SEAFLUX_FIELD(HPROGRAM,'ZS     ',HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE)
00107 !
00108 !*      2.1    Temperature
00109 !
00110  CALL PREP_HOR_SEAFLUX_FIELD(HPROGRAM,'SST    ',HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE)
00111 !
00112 !
00113 !*      2.2    Roughness
00114 !
00115 ALLOCATE(XZ0(SIZE(XSST)))
00116 XZ0 = 0.001
00117 !
00118 ALLOCATE(XZ0H(SIZE(XSST)))
00119 XZ0H = XZ0
00120 !
00121 !
00122 !-------------------------------------------------------------------------------------
00123  CALL CLEAN_PREP_OUTPUT_GRID
00124 !-------------------------------------------------------------------------------------
00125 !
00126 !*      3.     Vertical interpolations of all variables
00127 !
00128 IF(LVERTSHIFT)THEN
00129   CALL PREP_VER_SEAFLUX
00130 ENDIF
00131 !
00132 DEALLOCATE(XZS_LS)
00133 !-------------------------------------------------------------------------------------
00134 !
00135 !*      4.     Preparation of optional interpolation of monthly sst
00136 !
00137 LINTERPOL_SST=.FALSE.
00138 IF(CINTERPOL_SST/='NONE  ')THEN
00139   LINTERPOL_SST=.TRUE.
00140 ENDIF
00141 !
00142 IF(LINTERPOL_SST)THEN
00143 !
00144 ! Precedent, Current and Next Monthly SST
00145   INMTH=3
00146 ! Precedent, Current and Next Annual Monthly SST
00147   IF(CINTERPOL_SST=='ANNUAL')INMTH=14
00148 !
00149   ALLOCATE(XSST_MTH(SIZE(XSST),INMTH))
00150   DO JMTH=1,INMTH
00151      XSST_MTH(:,JMTH)=XSST(:)
00152   ENDDO
00153 !
00154 ENDIF
00155 !
00156 !-------------------------------------------------------------------------------------
00157 !
00158 !*      5.     Preparation of SBL air variables
00159 !
00160 !
00161 IF (LSBL) CALL PREP_SEAFLUX_SBL()
00162 IF (LHOOK) CALL DR_HOOK('PREP_SEAFLUX',1,ZHOOK_HANDLE)
00163 !
00164 !-------------------------------------------------------------------------------------
00165 !
00166 END SUBROUTINE PREP_SEAFLUX