SURFEX v7.3
General documentation of Surfex
|
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