SURFEX v7.3
General documentation of Surfex
|
00001 ! #################################### 00002 SUBROUTINE WRITE_PGD_SURF_ATM_n(HPROGRAM) 00003 ! #################################### 00004 ! 00005 !!**** *WRITE_PGD_SURF_ATM_n* - routine to write pgd surface variables 00006 !! in their respective files or in file 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 !! B. Decharme *Meteo France* 00028 !! 00029 !! MODIFICATIONS 00030 !! ------------- 00031 !! Original 05/2011 according to previous write_surf_atmn.f90 00032 !------------------------------------------------------------------------------- 00033 ! 00034 !* 0. DECLARATIONS 00035 ! ------------ 00036 ! 00037 USE MODD_SURF_CONF, ONLY : CPROGNAME 00038 USE MODD_SURF_PAR, ONLY : NVERSION, NBUGFIX 00039 USE MODD_SURF_ATM_GRID_n, ONLY : CGRID, XGRID_PAR, XLAT, XLON, XMESH_SIZE 00040 USE MODD_SURF_ATM_n, ONLY : NDIM_FULL, NDIM_SEA, NDIM_WATER, NDIM_TOWN, NDIM_NATURE, & 00041 CSEA, CWATER, CNATURE, CTOWN, XCOVER, TTIME, LECOCLIMAP, & 00042 LWATER_TO_NATURE, LTOWN_TO_ROCK, LGARDEN 00043 USE MODD_SURF_ATM_SSO_n, ONLY : XZ0EFFJPDIR 00044 USE MODD_CH_SURF_n, ONLY : LCH_EMIS, CCH_EMIS 00045 USE MODD_IO_SURF_FA, ONLY : LFANOCOMPACT 00046 ! 00047 USE MODI_INIT_IO_SURF_n 00048 USE MODI_WRITE_SURF 00049 USE MODI_WRITE_PGD_SEA_n 00050 USE MODI_WRITE_PGD_INLAND_WATER_n 00051 USE MODI_WRITE_PGD_NATURE_n 00052 USE MODI_WRITE_PGD_TOWN_n 00053 USE MODI_END_IO_SURF_n 00054 ! 00055 USE MODI_FLAG_UPDATE 00056 ! 00057 USE MODI_WRITESURF_COVER_n 00058 USE MODI_WRITESURF_SSO_n 00059 USE MODI_WRITESURF_DUMMY_n 00060 USE MODI_WRITESURF_SNAP_n 00061 USE MODI_WRITESURF_CH_EMIS_n 00062 USE MODI_WRITE_GRID 00063 ! 00064 USE MODI_WRITE_ECOCLIMAP2_DATA 00065 ! 00066 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00067 USE PARKIND1 ,ONLY : JPRB 00068 ! 00069 IMPLICIT NONE 00070 ! 00071 !* 0.1 Declarations of arguments 00072 ! ------------------------- 00073 ! 00074 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00075 ! 00076 !* 0.2 Declarations of local variables 00077 ! ------------------------------- 00078 ! 00079 CHARACTER(LEN=3) :: YWRITE 00080 CHARACTER(LEN=100) :: YCOMMENT 00081 INTEGER :: IRESP 00082 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00083 !------------------------------------------------------------------------------- 00084 ! 00085 IF (LHOOK) CALL DR_HOOK('WRITE_PGD_SURF_ATM_N',0,ZHOOK_HANDLE) 00086 ! 00087 !* 0. Initialize some options: 00088 ! ------------------------ 00089 ! 00090 CPROGNAME = HPROGRAM 00091 ! 00092 CALL FLAG_UPDATE(.FALSE.,.TRUE.,.FALSE.,.FALSE.) 00093 ! 00094 !* 1. Configuration and cover fields: 00095 ! ------------------------------ 00096 ! 00097 ! 00098 ! Initialisation for IO 00099 ! 00100 CALL INIT_IO_SURF_n(HPROGRAM,'FULL ','SURF ','WRITE') 00101 ! 00102 YWRITE='PGD' 00103 YCOMMENT='(-)' 00104 CALL WRITE_SURF(HPROGRAM,'VERSION',NVERSION,IRESP,YCOMMENT) 00105 CALL WRITE_SURF(HPROGRAM,'BUG ',NBUGFIX ,IRESP,YCOMMENT) 00106 CALL WRITE_SURF(HPROGRAM,'STORAGETYPE',YWRITE,IRESP,YCOMMENT) 00107 ! 00108 CALL WRITE_SURF(HPROGRAM,'SEA ',CSEA ,IRESP,YCOMMENT) 00109 CALL WRITE_SURF(HPROGRAM,'WATER ',CWATER ,IRESP,YCOMMENT) 00110 CALL WRITE_SURF(HPROGRAM,'NATURE',CNATURE,IRESP,YCOMMENT) 00111 CALL WRITE_SURF(HPROGRAM,'TOWN ',CTOWN ,IRESP,YCOMMENT) 00112 ! 00113 CALL WRITE_SURF(HPROGRAM,'DIM_FULL ',NDIM_FULL, IRESP,HCOMMENT=YCOMMENT) 00114 CALL WRITE_SURF(HPROGRAM,'DIM_SEA ',NDIM_SEA, IRESP,HCOMMENT=YCOMMENT) 00115 CALL WRITE_SURF(HPROGRAM,'DIM_NATURE',NDIM_NATURE,IRESP,HCOMMENT=YCOMMENT) 00116 CALL WRITE_SURF(HPROGRAM,'DIM_WATER ',NDIM_WATER, IRESP,HCOMMENT=YCOMMENT) 00117 CALL WRITE_SURF(HPROGRAM,'DIM_TOWN ',NDIM_TOWN, IRESP,HCOMMENT=YCOMMENT) 00118 CALL WRITE_SURF(HPROGRAM,'ECOCLIMAP ',LECOCLIMAP ,IRESP,YCOMMENT) 00119 CALL WRITE_SURF(HPROGRAM,'WATER_TO_NAT',LWATER_TO_NATURE,IRESP,YCOMMENT) 00120 CALL WRITE_SURF(HPROGRAM,'TOWN_TO_ROCK',LTOWN_TO_ROCK,IRESP,YCOMMENT) 00121 CALL WRITE_SURF(HPROGRAM,'GARDEN',LGARDEN,IRESP,YCOMMENT) 00122 IF (HPROGRAM.NE.'BINARY' .AND. HPROGRAM.NE.'TEXTE ') THEN 00123 CALL WRITE_ECOCLIMAP2_DATA(HPROGRAM) 00124 ENDIF 00125 ! 00126 CALL WRITE_GRID(HPROGRAM,CGRID,XGRID_PAR,XLAT,XLON,XMESH_SIZE,IRESP,XZ0EFFJPDIR) 00127 ! 00128 CALL WRITESURF_COVER_n(HPROGRAM) 00129 CALL WRITESURF_SSO_n(HPROGRAM) 00130 CALL WRITESURF_DUMMY_n(HPROGRAM) 00131 ! 00132 YCOMMENT='CH_EMIS' 00133 CALL WRITE_SURF(HPROGRAM,'CH_EMIS',LCH_EMIS,IRESP,HCOMMENT=YCOMMENT) 00134 ! 00135 IF (LCH_EMIS) THEN 00136 YCOMMENT='CH_EMIS_OPT' 00137 CALL WRITE_SURF(HPROGRAM,'CH_EMIS_OPT',CCH_EMIS,IRESP,HCOMMENT=YCOMMENT) 00138 END IF 00139 ! 00140 IF (LCH_EMIS) THEN 00141 IF (CCH_EMIS=='AGGR') THEN 00142 CALL WRITESURF_CH_EMIS_n(HPROGRAM) 00143 ELSE IF (CCH_EMIS=='SNAP') THEN 00144 CALL WRITESURF_SNAP_n(HPROGRAM) 00145 ENDIF 00146 ENDIF 00147 ! 00148 ! End of IO 00149 ! 00150 CALL END_IO_SURF_n(HPROGRAM) 00151 ! 00152 ! 00153 !* 2. Sea 00154 ! --- 00155 ! 00156 IF (NDIM_SEA>0) CALL WRITE_PGD_SEA_n(HPROGRAM) 00157 ! 00158 ! 00159 !* 3. Inland water 00160 ! ------------ 00161 ! 00162 IF (NDIM_WATER>0) CALL WRITE_PGD_INLAND_WATER_n(HPROGRAM) 00163 ! 00164 ! 00165 !* 4. Vegetation scheme 00166 ! ----------------- 00167 ! 00168 IF (NDIM_NATURE>0) CALL WRITE_PGD_NATURE_n(HPROGRAM) 00169 ! 00170 ! 00171 !* 5. Urban scheme 00172 ! ------------ 00173 ! 00174 IF (NDIM_TOWN>0) CALL WRITE_PGD_TOWN_n(HPROGRAM) 00175 ! 00176 ! 00177 IF (LHOOK) CALL DR_HOOK('WRITE_PGD_SURF_ATM_N',1,ZHOOK_HANDLE) 00178 ! 00179 !------------------------------------------------------------------------------- 00180 ! 00181 END SUBROUTINE WRITE_PGD_SURF_ATM_n