SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE INIT_OUTFN_WATER_n(HPROGRAM,KLUOUT) 00003 ! ############################### 00004 ! 00005 !!**** *INIT_OUTFN_WATER_n* - create output files and defines variables 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! EXTERNAL 00014 !! -------- 00015 !! 00016 !! 00017 !! IMPLICIT ARGUMENTS 00018 !! ------------------ 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! 00024 !! AUTHOR 00025 !! ------ 00026 !! P. LeMoigne *Meteo France* 00027 !! 00028 !! MODIFICATIONS 00029 !! ------------- 00030 !! Original 04-04 P. LeMoigne 00031 !------------------------------------------------------------------------------- 00032 ! 00033 !* 0. DECLARATIONS 00034 ! ------------ 00035 ! 00036 USE MODD_DIAG_SURF_ATM_n, ONLY : LPROVAR_TO_DIAG 00037 ! 00038 USE MODD_OL_FILEID, ONLY : XVAR_TO_FILEOUT, XID, XOUT 00039 USE MODD_WATFLUX_n , ONLY : LSBL, TTIME 00040 USE MODD_WATFLUX_SBL_n, ONLY : NLVL 00041 USE MODD_DIAG_WATFLUX_n 00042 ! 00043 USE MODN_IO_OFFLINE, ONLY : XTSTEP_OUTPUT 00044 ! 00045 USE MODI_GET_DIM_FULL_n 00046 USE MODI_OL_DEFINE_DIM 00047 USE MODI_GET_DATE_OL 00048 USE MODI_CREATE_FILE 00049 USE MODI_DEF_VAR_NETCDF 00050 USE MODI_OL_WRITE_COORD 00051 ! 00052 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00053 USE PARKIND1 ,ONLY : JPRB 00054 ! 00055 USE MODI_GET_DIM_FULL_n 00056 ! 00057 IMPLICIT NONE 00058 include 'netcdf.inc' 00059 00060 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM 00061 INTEGER, INTENT(IN) :: KLUOUT 00062 ! 00063 !* 0.2 Declarations of local variables 00064 ! ------------------------------- 00065 ! 00066 INTEGER :: INI 00067 INTEGER :: IDIM1 00068 CHARACTER(LEN=13),DIMENSION(1) :: YUNIT1, YUNIT2 00069 REAL,DIMENSION(:), POINTER :: ZX, ZY 00070 INTEGER, DIMENSION(:), POINTER :: IDIMS, IDDIM 00071 CHARACTER(LEN=100), DIMENSION(:), POINTER :: YNAME_DIM 00072 ! 00073 CHARACTER(LEN=40),DIMENSION(1) :: YDATE 00074 INTEGER :: IFILE_ID 00075 CHARACTER(LEN=50) :: YFILE 00076 CHARACTER(LEN=100), DIMENSION(1) :: YATT_TITLE, YATT 00077 CHARACTER(LEN=2) :: YLVLV 00078 INTEGER :: JLAYER 00079 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00080 ! 00081 !------------------------------------------------------------------------------- 00082 00083 ! 1. Compute output lenght dimension 00084 !----------------------------------- 00085 IF (LHOOK) CALL DR_HOOK('INIT_OUTFN_WATER_N',0,ZHOOK_HANDLE) 00086 CALL GET_DIM_FULL_n(INI) 00087 ! 00088 CALL OL_DEFINE_DIM(HPROGRAM, KLUOUT, INI, IDIM1, YUNIT1, YUNIT2, & 00089 ZX, ZY, IDIMS, IDDIM, YNAME_DIM) 00090 CALL GET_DATE_OL(TTIME,XTSTEP_OUTPUT,YDATE(1)) 00091 ! 00092 ! 4. Create output file for fluxes values 00093 !---------------------------------------------------------- 00094 00095 IF (ALLOCATED(XVAR_TO_FILEOUT)) DEALLOCATE(XVAR_TO_FILEOUT) 00096 IF (ALLOCATED(XID)) DEALLOCATE(XID) 00097 ALLOCATE(XVAR_TO_FILEOUT(0)) 00098 ALLOCATE(XID(0)) 00099 XOUT=0 00100 ! 00101 YATT_TITLE(1)='units' 00102 ! 00103 YFILE='WATFLUX_DIAGNOSTICS.OUT.nc' 00104 CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM) 00105 ! 00106 YATT='dimensionless' 00107 ! 00108 IF(LPROVAR_TO_DIAG) THEN 00109 YATT='K' 00110 CALL DEF_VAR_NETCDF(IFILE_ID,'TS_WATER' ,'Water_Temperature ' ,IDDIM,YATT_TITLE,YATT) 00111 ENDIF 00112 ! 00113 IF (LCOEF) THEN 00114 YATT='W/s2' 00115 CALL DEF_VAR_NETCDF(IFILE_ID,'CD_WAT' ,'Drag_Coefficient_For_Momentum ' ,IDDIM,YATT_TITLE,YATT) 00116 YATT='W/s' 00117 CALL DEF_VAR_NETCDF(IFILE_ID,'CH_WAT' ,'Drag_Coefficient_For_Heat ' ,IDDIM,YATT_TITLE,YATT) 00118 YATT='W/s/K' 00119 CALL DEF_VAR_NETCDF(IFILE_ID,'CE_WAT' ,'Drag_Coefficient_For_Evaporation' ,IDDIM,YATT_TITLE,YATT) 00120 YATT='m' 00121 CALL DEF_VAR_NETCDF(IFILE_ID,'Z0_WAT' ,'Roughness_Length_For_Momentum' ,IDDIM,YATT_TITLE,YATT) 00122 YATT='m' 00123 CALL DEF_VAR_NETCDF(IFILE_ID,'Z0H_WAT' ,'Roughness_Length_For_Heat' ,IDDIM,YATT_TITLE,YATT) 00124 ENDIF 00125 ! 00126 IF (LSURF_VARS) THEN 00127 YATT='kg/kg' 00128 CALL DEF_VAR_NETCDF(IFILE_ID,'QS_WAT' ,'Surface_Humidity ' ,IDDIM,YATT_TITLE,YATT) 00129 ENDIF 00130 ! 00131 IF (N2M>0) THEN 00132 YATT='K' 00133 CALL DEF_VAR_NETCDF(IFILE_ID,'T2M_WAT' ,'2m_Temperature ' ,IDDIM,YATT_TITLE,YATT) 00134 CALL DEF_VAR_NETCDF(IFILE_ID,'T2MMIN_WAT' ,'Minimum_2m_Temperature' ,IDDIM,YATT_TITLE,YATT) 00135 CALL DEF_VAR_NETCDF(IFILE_ID,'T2MMAX_WAT' ,'Maximum_2m_Temperature' ,IDDIM,YATT_TITLE,YATT) 00136 YATT='kg/kg' 00137 CALL DEF_VAR_NETCDF(IFILE_ID,'Q2M_WAT' ,'2m_Specific_Humidity ' ,IDDIM,YATT_TITLE,YATT) 00138 YATT='(-)' 00139 CALL DEF_VAR_NETCDF(IFILE_ID,'HU2M_WAT','2m_Relative_Humidity ' ,IDDIM,YATT_TITLE,YATT) 00140 CALL DEF_VAR_NETCDF(IFILE_ID,'HU2MMIN_WAT','Minimum_2m_Relative_Humidity ' ,IDDIM,YATT_TITLE,YATT) 00141 CALL DEF_VAR_NETCDF(IFILE_ID,'HU2MMAX_WAT','Maximum_2m_Relative_Humidity ' ,IDDIM,YATT_TITLE,YATT) 00142 YATT='m/s' 00143 CALL DEF_VAR_NETCDF(IFILE_ID,'ZON10M_WAT','10m_Zonal_wind ' ,IDDIM,YATT_TITLE,YATT) 00144 CALL DEF_VAR_NETCDF(IFILE_ID,'MER10M_WAT','10m_Meridian_Wind ' ,IDDIM,YATT_TITLE,YATT) 00145 CALL DEF_VAR_NETCDF(IFILE_ID,'W10M_WAT','10m_Wind ' ,IDDIM,YATT_TITLE,YATT) 00146 CALL DEF_VAR_NETCDF(IFILE_ID,'W10MMAX_WAT','Maximum_10m_Wind ' ,IDDIM,YATT_TITLE,YATT) 00147 ENDIF 00148 ! 00149 IF (N2M>0) THEN 00150 YATT='-' 00151 CALL DEF_VAR_NETCDF(IFILE_ID,'RI_WAT' ,'Averaged_Richardson_Number' ,IDDIM,YATT_TITLE,YATT) 00152 ENDIF 00153 ! 00154 IF (LSURF_BUDGET) THEN 00155 YATT='W/m2' 00156 CALL DEF_VAR_NETCDF(IFILE_ID,'RN_WAT' ,'Averaged_Net_Radiation' ,IDDIM,YATT_TITLE,YATT) 00157 CALL DEF_VAR_NETCDF(IFILE_ID,'H_WAT' ,'Averaged_Sensible_Heat_Flux' ,IDDIM,YATT_TITLE,YATT) 00158 CALL DEF_VAR_NETCDF(IFILE_ID,'LE_WAT' ,'Averaged_Total_Latent_Heat_Flux ' ,IDDIM,YATT_TITLE,YATT) 00159 CALL DEF_VAR_NETCDF(IFILE_ID,'LEI_WAT' ,'Averaged_Sublimation_Latent_Heat_Flux ' ,IDDIM,YATT_TITLE,YATT) 00160 CALL DEF_VAR_NETCDF(IFILE_ID,'GFLUX_WAT' ,'Averaged_Ground_Heat_Flux ' ,IDDIM,YATT_TITLE,YATT) 00161 IF(LRAD_BUDGET)THEN 00162 CALL DEF_VAR_NETCDF(IFILE_ID,'SWD_WAT' ,'Averaged_Downward_SW ' ,IDDIM,YATT_TITLE,YATT) 00163 CALL DEF_VAR_NETCDF(IFILE_ID,'SWU_WAT' ,'Averaged_Upward_SW ' ,IDDIM,YATT_TITLE,YATT) 00164 CALL DEF_VAR_NETCDF(IFILE_ID,'LWD_WAT' ,'Averaged_Downward_LW ' ,IDDIM,YATT_TITLE,YATT) 00165 CALL DEF_VAR_NETCDF(IFILE_ID,'LWU_WAT' ,'Averaged_Upward_LW ' ,IDDIM,YATT_TITLE,YATT) 00166 ENDIF 00167 YATT='kg/ms2' 00168 CALL DEF_VAR_NETCDF(IFILE_ID,'FMU_WAT' ,'Averaged_Zonal_Wind_Stress ' ,IDDIM,YATT_TITLE,YATT) 00169 CALL DEF_VAR_NETCDF(IFILE_ID,'FMV_WAT' ,'Averaged_Merid_Wind_Stress ' ,IDDIM,YATT_TITLE,YATT) 00170 ENDIF 00171 ! 00172 CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY) 00173 ! 00174 IF (LSURF_BUDGETC) THEN 00175 ! 00176 YFILE='WATFLUX_DIAG_CUMUL.OUT.nc' 00177 CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM) 00178 ! 00179 YATT='J/m2' 00180 CALL DEF_VAR_NETCDF(IFILE_ID,'RNC_WAT' ,'Cumulated_Averaged_Net_Radiation' ,IDDIM,YATT_TITLE,YATT) 00181 CALL DEF_VAR_NETCDF(IFILE_ID,'HC_WAT' ,'Cumulated_Averaged_Sensible_Heat_Flux' ,IDDIM,YATT_TITLE,YATT) 00182 CALL DEF_VAR_NETCDF(IFILE_ID,'LEC_WAT' ,'Cumulated_Averaged_Total_Latent_Heat_Flux',IDDIM,YATT_TITLE,YATT) 00183 CALL DEF_VAR_NETCDF(IFILE_ID,'LEIC_WAT' ,'Cumulated_Averaged_Sublimation_Latent_Heat_Flux',IDDIM,YATT_TITLE,YATT) 00184 CALL DEF_VAR_NETCDF(IFILE_ID,'GFLUXC_WAT','Cumulated_Averaged_Ground_Heat_Flux' ,IDDIM,YATT_TITLE,YATT) 00185 IF(LRAD_BUDGET)THEN 00186 CALL DEF_VAR_NETCDF(IFILE_ID,'SWDC_WAT' ,'Cumulated_Averaged_Downward_SW ' ,IDDIM,YATT_TITLE,YATT) 00187 CALL DEF_VAR_NETCDF(IFILE_ID,'SWUC_WAT' ,'Cumulated_Averaged_Upward_SW ' ,IDDIM,YATT_TITLE,YATT) 00188 CALL DEF_VAR_NETCDF(IFILE_ID,'LWDC_WAT' ,'Cumulated_Averaged_Downward_LW ' ,IDDIM,YATT_TITLE,YATT) 00189 CALL DEF_VAR_NETCDF(IFILE_ID,'LWUC_WAT' ,'Cumulated_Averaged_Upward_LW ' ,IDDIM,YATT_TITLE,YATT) 00190 ENDIF 00191 YATT='kg/ms' 00192 CALL DEF_VAR_NETCDF(IFILE_ID,'FMUC_WAT' ,'Cumulated_Averaged_Zonal_Wind_Stress ' ,IDDIM,YATT_TITLE,YATT) 00193 CALL DEF_VAR_NETCDF(IFILE_ID,'FMVC_WAT' ,'Cumulated_Averaged_Merid_Wind_Stress ' ,IDDIM,YATT_TITLE,YATT) 00194 ! 00195 CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY) 00196 ! 00197 ENDIF 00198 ! 00199 IF(.NOT.LPROVAR_TO_DIAG)THEN 00200 ! 00201 YFILE='WATFLUX_PROGNOSTIC.OUT.nc' 00202 CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM) 00203 ! 00204 YATT='K' 00205 CALL DEF_VAR_NETCDF(IFILE_ID,'TS_WATER' ,'Water_Temperature ' ,IDDIM,YATT_TITLE,YATT) 00206 ! 00207 YATT='m' 00208 CALL DEF_VAR_NETCDF(IFILE_ID,'Z0_WATER' ,'Roughness length ' ,IDDIM,YATT_TITLE,YATT) 00209 ! 00210 IF(LSBL) THEN 00211 DO JLAYER=1,NLVL 00212 WRITE(YLVLV,'(i2.2)') JLAYER 00213 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_Z'//YLVLV,'Canopy height',IDDIM,YATT_TITLE,(/'m'/)) 00214 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_U'//YLVLV,'Canopy wind',IDDIM,YATT_TITLE,(/'m/s'/)) 00215 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_T'//YLVLV,'Canopy temp',IDDIM,YATT_TITLE,(/'K'/)) 00216 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_Q'//YLVLV,'Canopy humidity',IDDIM,YATT_TITLE,(/'kg/m3'/)) 00217 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_E'//YLVLV,'Canopy TKE',IDDIM,YATT_TITLE,(/'m2/s2'/)) 00218 END DO 00219 ENDIF 00220 ! 00221 CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY) 00222 ! 00223 ENDIF 00224 IF (LHOOK) CALL DR_HOOK('INIT_OUTFN_WATER_N',1,ZHOOK_HANDLE) 00225 ! 00226 END SUBROUTINE INIT_OUTFN_WATER_n