|
SURFEX v7.3
General documentation of Surfex
|
00001 ! #################################### 00002 SUBROUTINE WRITE_SURF_ATM_n(HPROGRAM,HWRITE,OLAND_USE) 00003 ! #################################### 00004 ! 00005 !!**** *WRITE_SURF_ATM_n* - routine to write 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 !! V. Masson *Meteo France* 00028 !! 00029 !! MODIFICATIONS 00030 !! ------------- 00031 !! Original 01/2003 00032 !! Modified 06/2007, P.LeMoigne: do not write pgd fields in 00033 !! historical files 00034 !! Modified 03/2009, B.Decharme: keys for arrange cover 00035 !! Modified 04/2009, B.Decharme: write precipitation forcing into the restart file for ARPEGE/ALADIN run 00036 ! Modified 06/2009, B.Decharme: flag to desactivate writing of horizontal grid 00037 ! Modified 08/2009, B.Decharme: BUDGETC for all tiles 00038 ! Modified 07/2011, B.Decharme: delete write pgd fields 00039 ! Modified 07/2011, B.Decharme: land_use key for writing semi-prognostic variables 00040 ! Modified 05/2012, B.Decharme: supress LPROVAR_TO_DIAG to write prognostic fields if user want 00041 !------------------------------------------------------------------------------- 00042 ! 00043 !* 0. DECLARATIONS 00044 ! ------------ 00045 ! 00046 USE MODD_SURF_CONF, ONLY : CPROGNAME 00047 USE MODD_SURF_PAR, ONLY : NVERSION, NBUGFIX 00048 USE MODD_WRITE_SURF_ATM, ONLY : LNOWRITE_CANOPY 00049 USE MODD_SURF_ATM_n, ONLY : NDIM_FULL, NDIM_SEA, NDIM_WATER, NDIM_TOWN, NDIM_NATURE, TTIME 00050 USE MODD_SURF_ATM_SSO_n, ONLY : CROUGH 00051 USE MODD_DIAG_SURF_ATM_n, ONLY : TIME_BUDGETC,LSURF_BUDGETC,LSELECT 00052 USE MODD_CH_SURF_n, ONLY : LCH_EMIS, LRW_CH_EMIS, CCH_EMIS 00053 USE MODD_SURF_ATM_GRID_n, ONLY : CGRID, XGRID_PAR, XLAT, XLON, XMESH_SIZE 00054 ! 00055 USE MODI_INIT_IO_SURF_n 00056 USE MODI_WRITE_SURF 00057 USE MODI_WRITE_SEA_n 00058 USE MODI_WRITE_INLAND_WATER_n 00059 USE MODI_WRITE_NATURE_n 00060 USE MODI_WRITE_TOWN_n 00061 USE MODI_END_IO_SURF_n 00062 USE MODI_WRITE_GRID 00063 ! 00064 USE MODI_WRITESURF_ATM_CONF_n 00065 USE MODI_WRITESURF_SSO_CANOPY_n 00066 USE MODI_READWRITE_EMIS_FIELD_n 00067 USE MODI_WRITESURF_PRECIP_n 00068 USE MODI_WRITE_DIAG_CH_SNAP_n 00069 ! 00070 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00071 USE PARKIND1 ,ONLY : JPRB 00072 ! 00073 IMPLICIT NONE 00074 ! 00075 !* 0.1 Declarations of arguments 00076 ! ------------------------- 00077 ! 00078 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00079 CHARACTER(LEN=3), INTENT(IN) :: HWRITE ! 'PREP' : does not write SBL XUNDEF fields 00080 ! ! 'ALL' : all fields are written 00081 LOGICAL, INTENT(IN) :: OLAND_USE ! 00082 ! 00083 !* 0.2 Declarations of local variables 00084 ! ------------------------------- 00085 ! 00086 CHARACTER(LEN=100) :: YCOMMENT 00087 INTEGER :: IRESP 00088 LOGICAL :: LSAVE_SELECT 00089 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00090 !------------------------------------------------------------------------------- 00091 ! 00092 IF (LHOOK) CALL DR_HOOK('WRITE_SURF_ATM_N',0,ZHOOK_HANDLE) 00093 CPROGNAME = HPROGRAM 00094 ! 00095 !* 1. Configuration and cover fields: 00096 ! ------------------------------ 00097 ! 00098 ! 00099 ! Initialisation for IO 00100 ! 00101 CALL INIT_IO_SURF_n(HPROGRAM,'FULL ','SURF ','WRITE') 00102 ! 00103 LSAVE_SELECT=LSELECT 00104 LSELECT =.FALSE. 00105 ! 00106 YCOMMENT='(-)' 00107 CALL WRITE_SURF(HPROGRAM,'VERSION',NVERSION,IRESP,YCOMMENT) 00108 CALL WRITE_SURF(HPROGRAM,'BUG ',NBUGFIX ,IRESP,YCOMMENT) 00109 CALL WRITE_SURF(HPROGRAM,'STORAGETYPE',HWRITE,IRESP,YCOMMENT) 00110 CALL WRITE_SURF(HPROGRAM,'DIM_FULL ',NDIM_FULL,IRESP,HCOMMENT=YCOMMENT) 00111 ! 00112 YCOMMENT='s' 00113 CALL WRITE_SURF(HPROGRAM,'DTCUR',TTIME,IRESP,YCOMMENT) 00114 ! 00115 LSELECT=LSAVE_SELECT 00116 ! 00117 CALL WRITE_GRID(HPROGRAM,CGRID,XGRID_PAR,XLAT,XLON,XMESH_SIZE,IRESP) 00118 ! 00119 CALL WRITESURF_ATM_CONF_n(HPROGRAM) 00120 ! 00121 CALL WRITESURF_SSO_CANOPY_n(HPROGRAM,HWRITE,(CROUGH=='BE04' .AND. .NOT. LNOWRITE_CANOPY)) 00122 ! 00123 CALL WRITESURF_PRECIP_n(HPROGRAM) 00124 ! 00125 YCOMMENT='flag for accumulated variables' 00126 CALL WRITE_SURF(HPROGRAM,'BUDC',LSURF_BUDGETC,IRESP,HCOMMENT=YCOMMENT) 00127 ! 00128 IF (LSURF_BUDGETC) THEN 00129 YCOMMENT='time of beginning of accumulation' 00130 CALL WRITE_SURF(HPROGRAM,'TIME_BUDC',TIME_BUDGETC,IRESP,HCOMMENT=YCOMMENT) 00131 END IF 00132 ! 00133 ! End of IO 00134 ! 00135 CALL END_IO_SURF_n(HPROGRAM) 00136 ! 00137 ! 00138 !* 2. Chemistry 00139 ! --------- 00140 ! 00141 IF (LCH_EMIS) THEN 00142 IF (CCH_EMIS=='AGGR') THEN 00143 IF (LRW_CH_EMIS) CALL READWRITE_EMIS_FIELD_n(HPROGRAM) 00144 ELSE IF (CCH_EMIS=='SNAP') THEN 00145 CALL WRITE_DIAG_CH_SNAP_n(HPROGRAM) 00146 END IF 00147 END IF 00148 ! 00149 ! 00150 !* 3. Sea 00151 ! --- 00152 ! 00153 IF (NDIM_SEA>0) CALL WRITE_SEA_n(HPROGRAM,HWRITE) 00154 ! 00155 ! 00156 !* 4. Inland water 00157 ! ------------ 00158 ! 00159 IF (NDIM_WATER>0) CALL WRITE_INLAND_WATER_n(HPROGRAM,HWRITE) 00160 ! 00161 ! 00162 !* 5. Vegetation scheme 00163 ! ----------------- 00164 ! 00165 IF (NDIM_NATURE>0) CALL WRITE_NATURE_n(HPROGRAM,HWRITE,OLAND_USE) 00166 ! 00167 ! 00168 !* 6. Urban scheme 00169 ! ------------ 00170 ! 00171 IF (NDIM_TOWN>0) CALL WRITE_TOWN_n(HPROGRAM,HWRITE) 00172 IF (LHOOK) CALL DR_HOOK('WRITE_SURF_ATM_N',1,ZHOOK_HANDLE) 00173 ! 00174 !------------------------------------------------------------------------------- 00175 ! 00176 END SUBROUTINE WRITE_SURF_ATM_n
1.8.0