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