SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_PGD_SEAFLUX_n(HPROGRAM) 00003 ! ######################################### 00004 ! 00005 !!**** *READ_PGD_SEAFLUX_n* - routine to read SEAFLUX physiographic fields 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 !------------------------------------------------------------------------------- 00033 ! 00034 !* 0. DECLARATIONS 00035 ! ------------ 00036 ! 00037 USE MODD_TYPE_DATE_SURF 00038 ! 00039 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER 00040 USE MODD_SEAFLUX_n, ONLY : XCOVER, XZS, XSEABATHY, TTIME, LCOVER 00041 USE MODD_SEAFLUX_GRID_n, ONLY : XLAT, XLON, XMESH_SIZE, CGRID, XGRID_PAR, NDIM 00042 USE MODD_DATA_SEAFLUX_n, ONLY : LSST_DATA 00043 ! 00044 ! 00045 USE MODI_READ_SURF 00046 USE MODI_READ_GRID 00047 USE MODI_READ_LCOVER 00048 USE MODI_READ_PGD_SEAFLUX_PAR_n 00049 ! 00050 ! 00051 ! 00052 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00053 USE PARKIND1 ,ONLY : JPRB 00054 ! 00055 USE MODI_GET_TYPE_DIM_n 00056 ! 00057 IMPLICIT NONE 00058 ! 00059 !* 0.1 Declarations of arguments 00060 ! ------------------------- 00061 ! 00062 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program 00063 ! 00064 !* 0.2 Declarations of local variables 00065 ! ------------------------------- 00066 ! 00067 INTEGER :: IRESP ! Error code after redding 00068 ! 00069 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read 00070 ! 00071 INTEGER :: IVERSION ! surface version 00072 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00073 ! 00074 !------------------------------------------------------------------------------- 00075 ! 00076 !* 1D physical dimension 00077 ! 00078 IF (LHOOK) CALL DR_HOOK('READ_PGD_SEAFLUX_N',0,ZHOOK_HANDLE) 00079 YRECFM='SIZE_SEA' 00080 CALL GET_TYPE_DIM_n('SEA ',NDIM) 00081 ! 00082 ! 00083 !* 2. Physiographic data fields: 00084 ! ------------------------- 00085 ! 00086 !* cover classes 00087 ! 00088 ALLOCATE(LCOVER(JPCOVER)) 00089 CALL READ_LCOVER(HPROGRAM,LCOVER) 00090 ! 00091 ALLOCATE(XCOVER(NDIM,JPCOVER)) 00092 CALL READ_SURF(HPROGRAM,'COVER',XCOVER(:,:),LCOVER,IRESP) 00093 ! 00094 !* orography 00095 ! 00096 ALLOCATE(XZS(NDIM)) 00097 XZS(:) = 0. 00098 ! 00099 YRECFM='VERSION' 00100 CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP) 00101 ! 00102 !* bathymetry 00103 ! 00104 ALLOCATE(XSEABATHY(NDIM)) 00105 IF (IVERSION<=3) THEN 00106 XSEABATHY(:) = 300. 00107 ELSE 00108 YRECFM='BATHY' 00109 CALL READ_SURF(HPROGRAM,YRECFM,XSEABATHY(:),IRESP) 00110 END IF 00111 ! 00112 !* latitude, longitude 00113 ! 00114 ALLOCATE(XLAT (NDIM)) 00115 ALLOCATE(XLON (NDIM)) 00116 ALLOCATE(XMESH_SIZE(NDIM)) 00117 CALL READ_GRID(HPROGRAM,CGRID,XGRID_PAR,XLAT,XLON,XMESH_SIZE,IRESP) 00118 ! 00119 ! 00120 !* sst 00121 ! 00122 ! 00123 IF (IVERSION<3) THEN 00124 LSST_DATA = .FALSE. 00125 ELSE 00126 YRECFM='SST_DATA' 00127 CALL READ_SURF(HPROGRAM,YRECFM,LSST_DATA,IRESP) 00128 END IF 00129 ! 00130 IF (LSST_DATA) CALL READ_PGD_SEAFLUX_PAR_n(HPROGRAM,NDIM) 00131 IF (LHOOK) CALL DR_HOOK('READ_PGD_SEAFLUX_N',1,ZHOOK_HANDLE) 00132 ! 00133 !------------------------------------------------------------------------------! 00134 END SUBROUTINE READ_PGD_SEAFLUX_n