SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/init_outfn_tebn.F90
Go to the documentation of this file.
00001 !     #########
00002        SUBROUTINE INIT_OUTFN_TEB_n(HPROGRAM,KLUOUT)
00003 !     ###############################
00004 !
00005 !
00006 !!****  *INIT_OUTFN_TEB_n* -  create output files and defines variables
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 !!      P. LeMoigne   *Meteo France*
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original    04-04  P. LeMoigne
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 USE MODD_OL_FILEID,       ONLY : XVAR_TO_FILEOUT, XID, XOUT
00038 USE MODD_TEB_n,           ONLY: NROOF_LAYER, NROAD_LAYER, NWALL_LAYER, &
00039                                 XZ0_TOWN, TTIME
00040 USE MODD_TEB_CANOPY_n,    ONLY: NLVL
00041 USE MODD_DIAG_TEB_n
00042 USE MODD_DIAG_MISC_TEB_n ,ONLY : LSURF_MISC_BUDGET, XQF_BLD,      &
00043                                  XFLX_BLD, XQF_TOWN, XDQS_TOWN,   &
00044                                  XH_WALL_A, XH_WALL_B,XH_ROOF,XH_ROAD
00045 !
00046 USE MODN_IO_OFFLINE,      ONLY : XTSTEP_OUTPUT
00047 !
00048 USE MODI_GET_DIM_FULL_n
00049 USE MODI_OL_DEFINE_DIM
00050 USE MODI_GET_DATE_OL
00051 USE MODI_CREATE_FILE
00052 USE MODI_DEF_VAR_NETCDF
00053 USE MODI_OL_WRITE_COORD
00054 !
00055 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00056 USE PARKIND1  ,ONLY : JPRB
00057 !
00058 IMPLICIT NONE
00059 include 'netcdf.inc'
00060 
00061  CHARACTER(LEN=6),  INTENT(IN) :: HPROGRAM
00062 INTEGER,           INTENT(IN) :: KLUOUT
00063 !
00064 !*       0.2   Declarations of local variables
00065 !              -------------------------------
00066 !
00067 INTEGER                          :: INI
00068 INTEGER                          :: IDIM1
00069  CHARACTER(LEN=13),DIMENSION(1)   :: YUNIT1, YUNIT2
00070 REAL,DIMENSION(:), POINTER       :: ZX, ZY
00071 INTEGER, DIMENSION(:), POINTER   :: IDIMS, IDDIM
00072  CHARACTER(LEN=100), DIMENSION(:), POINTER :: YNAME_DIM
00073 !
00074  CHARACTER(LEN=40),DIMENSION(1)   :: YDATE
00075 INTEGER                          :: IFILE_ID
00076  CHARACTER(LEN=50)                :: YFILE
00077  CHARACTER(LEN=100), DIMENSION(1) :: YATT_TITLE, YATT
00078  CHARACTER(LEN=3)                 :: YPAS, YLVL
00079 INTEGER                          :: JLAYER
00080 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00081 !
00082 !-------------------------------------------------------------------------------
00083 
00084 ! 1. Compute output lenght dimension
00085 !-----------------------------------
00086 IF (LHOOK) CALL DR_HOOK('INIT_OUTFN_TEB_N',0,ZHOOK_HANDLE)
00087  CALL GET_DIM_FULL_n(INI)
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='TEB_DIAGNOSTICS.OUT.nc'
00104  CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM)
00105 YATT='-'
00106 !
00107 IF (LSURF_MISC_BUDGET) THEN
00108   CALL DEF_VAR_NETCDF(IFILE_ID,'Z0_TOWN'  ,'Town_Rougness_Length',IDDIM,YATT_TITLE,YATT)
00109   CALL DEF_VAR_NETCDF(IFILE_ID,'XQF_BLD'  ,'Domestic_heating',IDDIM,YATT_TITLE,YATT)
00110   CALL DEF_VAR_NETCDF(IFILE_ID,'XQF_BLDWFR'  ,'Domestic_heating',IDDIM,YATT_TITLE,YATT)
00111   CALL DEF_VAR_NETCDF(IFILE_ID,'XFLX_BLD'  ,'Heat flux from bld',IDDIM,YATT_TITLE,YATT)
00112   CALL DEF_VAR_NETCDF(IFILE_ID,'XQF_TOWN' ,'Anthropogenic heat',IDDIM,YATT_TITLE,YATT)
00113   CALL DEF_VAR_NETCDF(IFILE_ID,'XDQS_TOWN'  ,'Storage',IDDIM,YATT_TITLE,YATT)
00114   CALL DEF_VAR_NETCDF(IFILE_ID,'XH_WALL_A'  ,'Wall sensible heat flux',IDDIM,YATT_TITLE,YATT)
00115   CALL DEF_VAR_NETCDF(IFILE_ID,'XH_WALL_B'  ,'Wall sensible heat flux',IDDIM,YATT_TITLE,YATT)  
00116   CALL DEF_VAR_NETCDF(IFILE_ID,'XH_ROOF'  ,'Roof sensible heat flux',IDDIM,YATT_TITLE,YATT)
00117   CALL DEF_VAR_NETCDF(IFILE_ID,'XH_ROAD'  ,'Road sensible heat flux',IDDIM,YATT_TITLE,YATT)
00118 ENDIF
00119 !
00120 IF (LCOEF)  THEN
00121   YATT='W/s2'
00122   CALL DEF_VAR_NETCDF(IFILE_ID,'CD_TEB'   ,'Drag_Coefficient_For_Momentum   '   ,IDDIM,YATT_TITLE,YATT)
00123   YATT='W/s'
00124   CALL DEF_VAR_NETCDF(IFILE_ID,'CH_TEB'   ,'Drag_Coefficient_For_Heat       '   ,IDDIM,YATT_TITLE,YATT)
00125   YATT='W/s/K'
00126   CALL DEF_VAR_NETCDF(IFILE_ID,'CE_TEB'   ,'Drag_Coefficient_For_Evaporation'   ,IDDIM,YATT_TITLE,YATT)
00127   YATT='m'
00128   CALL DEF_VAR_NETCDF(IFILE_ID,'Z0_TEB'   ,'Roughness_Length_For_Momentum'   ,IDDIM,YATT_TITLE,YATT)
00129   YATT='m'
00130   CALL DEF_VAR_NETCDF(IFILE_ID,'Z0H_TEB'  ,'Roughness_Length_For_Heat'   ,IDDIM,YATT_TITLE,YATT)
00131 ENDIF
00132 !
00133 IF (LSURF_VARS) THEN
00134   YATT='kg/kg'
00135   CALL DEF_VAR_NETCDF(IFILE_ID,'QS_TEB'   ,'Surface_Humidity   '   ,IDDIM,YATT_TITLE,YATT)
00136 ENDIF
00137 !
00138 IF (N2M>0) THEN
00139   YATT='K'
00140   CALL DEF_VAR_NETCDF(IFILE_ID,'T2M_TEB' ,'2m_Temperature         '   ,IDDIM,YATT_TITLE,YATT)
00141   YATT='kg/kg'
00142   CALL DEF_VAR_NETCDF(IFILE_ID,'Q2M_TEB' ,'2m_Specific_Humidity   '   ,IDDIM,YATT_TITLE,YATT)
00143   YATT='(-)'
00144   CALL DEF_VAR_NETCDF(IFILE_ID,'HU2M_TEB','2m_Relative_Humidity   '   ,IDDIM,YATT_TITLE,YATT)
00145   YATT='m/s'
00146   CALL DEF_VAR_NETCDF(IFILE_ID,'ZON10M_TEB','10m_Zonal_wind       '   ,IDDIM,YATT_TITLE,YATT)
00147   YATT='m/s'
00148   CALL DEF_VAR_NETCDF(IFILE_ID,'MER10M_TEB','2m_Meridian_Wind     '   ,IDDIM,YATT_TITLE,YATT)
00149 ENDIF
00150 
00151 IF (N2M>0) THEN
00152   YATT='-'
00153   CALL DEF_VAR_NETCDF(IFILE_ID,'RI_TEB'   ,'Averaged_Richardson_Number'                ,IDDIM,YATT_TITLE,YATT)
00154 ENDIF
00155 !
00156 YATT='W/m2'
00157  CALL DEF_VAR_NETCDF(IFILE_ID,'RN_TEB'   ,'Averaged_Net_Radiation'                    ,IDDIM,YATT_TITLE,YATT)
00158  CALL DEF_VAR_NETCDF(IFILE_ID,'H_TEB'    ,'Averaged_Sensible_Heat_Flux'               ,IDDIM,YATT_TITLE,YATT)
00159  CALL DEF_VAR_NETCDF(IFILE_ID,'LE_TEB'   ,'Averaged_Latent_Heat_Flux  '               ,IDDIM,YATT_TITLE,YATT)
00160  CALL DEF_VAR_NETCDF(IFILE_ID,'GFLUX_TEB','Averaged_Ground_Heat_Flux  '               ,IDDIM,YATT_TITLE,YATT)
00161  CALL DEF_VAR_NETCDF(IFILE_ID,'SWD_TEB'  ,'Averaged_Downward_SW       '               ,IDDIM,YATT_TITLE,YATT)
00162  CALL DEF_VAR_NETCDF(IFILE_ID,'SWU_TEB'  ,'Averaged_Upward_SW         '               ,IDDIM,YATT_TITLE,YATT)
00163  CALL DEF_VAR_NETCDF(IFILE_ID,'LWD_TEB'  ,'Averaged_Downward_LW       '               ,IDDIM,YATT_TITLE,YATT)
00164  CALL DEF_VAR_NETCDF(IFILE_ID,'LWU_TEB'  ,'Averaged_Upward_LW         '               ,IDDIM,YATT_TITLE,YATT)
00165  CALL DEF_VAR_NETCDF(IFILE_ID,'FMU_TEB'  ,'Averaged_Zonal_Wind_Stress '               ,IDDIM,YATT_TITLE,YATT)
00166  CALL DEF_VAR_NETCDF(IFILE_ID,'FMV_TEB'  ,'Averaged_Merid_Wind_Stress '               ,IDDIM,YATT_TITLE,YATT)
00167 !
00168  CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY)
00169 !
00170 !
00171 !YFILE='TEB_DIAG_CUMUL.OUT.nc'
00172 !CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM)
00173 !YATT='dimensionless'
00174 !
00175 !CALL DEF_VAR_NETCDF(IFILE_ID,'RNC_TEB'  ,'Averaged_Cumulated_Net_Radiation'        ,IDDIM,YATT_TITLE,YATT)
00176 !CALL DEF_VAR_NETCDF(IFILE_ID,'HC_TEB'   ,'Averaged_Cumulated_Sensible_Heat_Flux'   ,IDDIM,YATT_TITLE,YATT)
00177 !CALL DEF_VAR_NETCDF(IFILE_ID,'LEC_TEB'  ,'Averaged_Cumulated_Latent_Heat_Flux'     ,IDDIM,YATT_TITLE,YATT)
00178 !CALL DEF_VAR_NETCDF(IFILE_ID,'GFLUXC_TEB','Averaged_Cumulated_Ground_Heat_Flux'    ,IDDIM,YATT_TITLE,YATT)
00179 !
00180 !CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY)
00181 !
00182 !
00183 ! 5. Create output file for prognostic and semi-pronostic variable in teb
00184 !------------------------------------------------------------------------
00185 
00186 YFILE='TEB_PROGNOSTIC.OUT.nc'
00187  CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM)
00188 !
00189 ! 5.1 Temperatures
00190 YATT='K'
00191 !
00192 ! Roof temperatures
00193 DO JLAYER=1,NROOF_LAYER
00194   WRITE(YPAS,'(I3)') JLAYER ; YLVL=ADJUSTL(YPAS(:LEN_TRIM(YPAS)))
00195   CALL DEF_VAR_NETCDF(IFILE_ID,'T_ROOF'//YLVL,'Roof_Temperature_Layer_'//YLVL ,IDDIM,YATT_TITLE,YATT)
00196 END DO
00197 ! Road temperatures
00198 DO JLAYER=1,NROAD_LAYER
00199   WRITE(YPAS,'(I3)') JLAYER ; YLVL=ADJUSTL(YPAS(:LEN_TRIM(YPAS)))
00200   CALL DEF_VAR_NETCDF(IFILE_ID,'T_ROAD'//YLVL,'Road_Temperature_Layer_'//YLVL ,IDDIM,YATT_TITLE,YATT)
00201 END DO
00202 ! Wall temperatures
00203 DO JLAYER=1,NWALL_LAYER
00204   WRITE(YPAS,'(I3)') JLAYER ; YLVL=ADJUSTL(YPAS(:LEN_TRIM(YPAS)))
00205   CALL DEF_VAR_NETCDF(IFILE_ID,'T_WALL_A'//YLVL,'Wall_Temperature_Layer_'//YLVL ,IDDIM,YATT_TITLE,YATT)
00206   CALL DEF_VAR_NETCDF(IFILE_ID,'T_WALL_B'//YLVL,'Wall_Temperature_Layer_'//YLVL ,IDDIM,YATT_TITLE,YATT)  
00207 END DO
00208 ! Internal building temperature
00209  CALL DEF_VAR_NETCDF(IFILE_ID,'TI_BLD','Internal_Building_Temperature',IDDIM,YATT_TITLE,YATT)
00210 !
00211 ! Deep road temperature
00212  CALL DEF_VAR_NETCDF(IFILE_ID,'TI_ROAD','Deep_Road_Temperature',IDDIM,YATT_TITLE,YATT)
00213 !
00214 ! 5.2 Water contents
00215 !
00216 YATT = 'kg/m2'
00217 ! Roof water content
00218  CALL DEF_VAR_NETCDF(IFILE_ID,'WS_ROOF','Roof_Water_Content_Layer' ,IDDIM,YATT_TITLE,YATT)
00219 !
00220 ! Road water content
00221  CALL DEF_VAR_NETCDF(IFILE_ID,'WS_ROAD','Road_Water_Content_Layer' ,IDDIM,YATT_TITLE,YATT)
00222 !
00223 ! 5.3 semi pronostic variables
00224 !
00225 ! temperature of canyon air
00226 YATT = 'K'
00227  CALL DEF_VAR_NETCDF(IFILE_ID,'T_CANYON','Canyon_Air_Temperature',IDDIM,YATT_TITLE,YATT)
00228 !
00229 ! humidity of canyon air
00230 YATT = 'kg/kg'
00231  CALL DEF_VAR_NETCDF(IFILE_ID,'Q_CANYON','Canyon_Air_Humidity',IDDIM,YATT_TITLE,YATT)
00232 !
00233  CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY)
00234 !
00235 ! 6. Create output file for prognostic variables in teb canopy
00236 !------------------------------------------------------------------------
00237 !
00238 YFILE='TEB_CANOPY.OUT.nc'
00239  CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM)
00240 !
00241 ! 6.1 Heights
00242 YATT = 'm'
00243 !
00244 DO JLAYER=1,NLVL
00245   WRITE(YPAS,'(I2.2,1X)') JLAYER ; YLVL=ADJUSTL(YPAS(:LEN_TRIM(YPAS)))
00246   CALL DEF_VAR_NETCDF(IFILE_ID,'TEB_CAN_Z'//YLVL,'Height_of_canopy_Layer_'//YLVL ,IDDIM,YATT_TITLE,YATT)
00247 END DO
00248 !
00249 ! 6.2 Wind
00250 YATT = 'm/s'
00251 DO JLAYER=1,NLVL
00252   WRITE(YPAS,'(I2.2,1X)') JLAYER ; YLVL=ADJUSTL(YPAS(:LEN_TRIM(YPAS)))
00253   CALL DEF_VAR_NETCDF(IFILE_ID,'TEB_CAN_U'//YLVL,'Wind_of_canopy_Layer_'//YLVL ,IDDIM,YATT_TITLE,YATT)
00254 END DO
00255 !
00256 ! 6.3 Temperature
00257 YATT = 'K'
00258 DO JLAYER=1,NLVL
00259   WRITE(YPAS,'(I2.2,1X)') JLAYER ; YLVL=ADJUSTL(YPAS(:LEN_TRIM(YPAS)))
00260   CALL DEF_VAR_NETCDF(IFILE_ID,'TEB_CAN_T'//YLVL,'Temperature_of_canopy_Layer_'//YLVL ,IDDIM,YATT_TITLE,YATT)
00261 END DO
00262 !
00263 ! 6.4 Temperature
00264 YATT = 'kg/m3'
00265 DO JLAYER=1,NLVL
00266   WRITE(YPAS,'(I2.2,1X)') JLAYER ; YLVL=ADJUSTL(YPAS(:LEN_TRIM(YPAS)))
00267   CALL DEF_VAR_NETCDF(IFILE_ID,'TEB_CAN_Q'//YLVL,'Humidity_of_canopy_Layer_'//YLVL ,IDDIM,YATT_TITLE,YATT)
00268 END DO
00269 !
00270 ! 6.5 Turbulence
00271 YATT = 'm2/s2'
00272 DO JLAYER=1,NLVL
00273   WRITE(YPAS,'(I2.2,1X)') JLAYER ; YLVL=ADJUSTL(YPAS(:LEN_TRIM(YPAS)))
00274   CALL DEF_VAR_NETCDF(IFILE_ID,'TEB_CAN_E'//YLVL,'TKE_of_canopy_Layer_'//YLVL ,IDDIM,YATT_TITLE,YATT)
00275 END DO
00276 !
00277  CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY)
00278 !
00279 IF (LHOOK) CALL DR_HOOK('INIT_OUTFN_TEB_N',1,ZHOOK_HANDLE)
00280 !
00281 END SUBROUTINE INIT_OUTFN_TEB_n