SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/init_outfn_watern.F90
Go to the documentation of this file.
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