SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/init_outfn_surf_atmn.F90
Go to the documentation of this file.
00001 !     #########
00002        SUBROUTINE INIT_OUTFN_SURF_ATM_n(HPROGRAM,KLUOUT)
00003 !     ###############################
00004 !
00005 !
00006 !!****  *INIT_OUTFN_SURF_ATM_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    05-04
00032 !!      Modified 06-10 by S. Faroux
00033 !-------------------------------------------------------------------------------
00034 !
00035 !*       0.    DECLARATIONS
00036 !              ------------
00037 
00038 USE MODD_DIAG_SURF_ATM_n, ONLY : LFRAC, LCOEF, N2M, LSURF_BUDGET, LSURF_BUDGETC, LSELECT
00039 USE MODD_OL_FILEID,       ONLY : XVAR_TO_FILEOUT, XID, XOUT
00040 USE MODD_SURF_ATM_n,      ONLY : TTIME
00041 !
00042 USE MODN_IO_OFFLINE,      ONLY : XTSTEP_OUTPUT
00043 !
00044 USE MODI_GET_DIM_FULL_n
00045 USE MODI_OL_DEFINE_DIM
00046 USE MODI_GET_DATE_OL
00047 USE MODI_CREATE_FILE
00048 USE MODI_DEF_VAR_NETCDF
00049 USE MODI_OL_WRITE_COORD
00050 !
00051 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00052 USE PARKIND1  ,ONLY : JPRB
00053 !
00054 IMPLICIT NONE
00055 include 'netcdf.inc'
00056 
00057  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM
00058 INTEGER, INTENT(IN) :: KLUOUT
00059 !
00060 !*       0.2   Declarations of local variables
00061 !              -------------------------------
00062 !
00063 INTEGER                          :: INI
00064 INTEGER                          :: IDIM1, IDIM2, INDIMS
00065  CHARACTER(LEN=13),DIMENSION(1)   :: YUNIT1, YUNIT2
00066 REAL,DIMENSION(:), POINTER       :: ZX, ZY
00067 INTEGER, DIMENSION(:), POINTER   :: IDIMS, IDDIM
00068  CHARACTER(LEN=100), DIMENSION(:), POINTER :: YNAME_DIM
00069 !
00070  CHARACTER(LEN=40),DIMENSION(1)   :: YDATE
00071 INTEGER                          :: IFILE_ID, IVAR_ID
00072  CHARACTER(LEN=50)                :: YFILE
00073  CHARACTER(LEN=100), DIMENSION(1) :: YATT_TITLE, YATT
00074 INTEGER                          :: JLAYER
00075 INTEGER                          :: JRET
00076 !
00077 INTEGER, DIMENSION(:), ALLOCATABLE  :: IDDIM1, IDIMS1
00078  CHARACTER(LEN=100), DIMENSION(:),ALLOCATABLE :: YNAME_DIM1
00079 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00080 !
00081 !-------------------------------------------------------------------------------
00082 
00083 ! 1. Compute output lenght dimension
00084 !-----------------------------------
00085 IF (LHOOK) CALL DR_HOOK('INIT_OUTFN_SURF_ATM_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 INDIMS = SIZE(IDDIM)
00093 ALLOCATE(IDIMS1(INDIMS-1))
00094 ALLOCATE(IDDIM1(INDIMS-1))
00095 ALLOCATE(YNAME_DIM1(INDIMS-1))
00096 IDIMS1=IDIMS(1:INDIMS-1)
00097 YNAME_DIM1=YNAME_DIM(1:INDIMS-1)
00098 !
00099 ! 4. Create output file for fraction of tiles
00100 !--------------------------------------------
00101 !
00102 IF (ALLOCATED(XVAR_TO_FILEOUT)) DEALLOCATE(XVAR_TO_FILEOUT)
00103 IF (ALLOCATED(XID)) DEALLOCATE(XID)
00104 ALLOCATE(XVAR_TO_FILEOUT(0))
00105 ALLOCATE(XID(0))
00106 XOUT=0
00107 !
00108 YATT_TITLE(1)='units'
00109 !
00110 !
00111 YFILE='SURF_ATM.OUT.nc'
00112  CALL CREATE_FILE(YFILE,IDIMS1,YNAME_DIM1,IFILE_ID,IDDIM1)
00113 !
00114 IF (LFRAC) THEN
00115    YATT='%'
00116    CALL DEF_VAR_NETCDF(IFILE_ID,'FRAC_SEA   ','Fraction_of_sea   ',IDDIM1,YATT_TITLE,YATT)
00117    CALL DEF_VAR_NETCDF(IFILE_ID,'FRAC_WATER ','Fraction_of_water ',IDDIM1,YATT_TITLE,YATT)
00118    CALL DEF_VAR_NETCDF(IFILE_ID,'FRAC_TOWN  ','Fraction_of_town  ',IDDIM1,YATT_TITLE,YATT)
00119    CALL DEF_VAR_NETCDF(IFILE_ID,'FRAC_NATURE','Fraction_of_nature',IDDIM1,YATT_TITLE,YATT)
00120 ENDIF
00121 !
00122  CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM1,YATT_TITLE,YNAME_DIM1,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY)
00123 !
00124 ! 5. Create output file for diagnostic variables
00125 !-----------------------------------------------
00126 YFILE='SURF_ATM_DIAGNOSTICS.OUT.nc'
00127  CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM)
00128 !
00129 IF (N2M>0) THEN
00130    YATT='(-)'
00131    CALL DEF_VAR_NETCDF(IFILE_ID,'RI'   ,'Averaged_Richardson_Number      '   ,IDDIM,YATT_TITLE,YATT)
00132 ENDIF
00133 !
00134 IF (LCOEF) THEN
00135    YATT='W/s2'
00136    CALL DEF_VAR_NETCDF(IFILE_ID,'CD'   ,'Drag_Coefficient_For_Momentum   '   ,IDDIM,YATT_TITLE,YATT)
00137    YATT='W/s'
00138    CALL DEF_VAR_NETCDF(IFILE_ID,'CH'   ,'Drag_Coefficient_For_Heat       '   ,IDDIM,YATT_TITLE,YATT)
00139    YATT='W/s/K'
00140    CALL DEF_VAR_NETCDF(IFILE_ID,'CE'   ,'Drag_Coefficient_For_Evaporation'   ,IDDIM,YATT_TITLE,YATT)
00141    YATT='m'
00142    CALL DEF_VAR_NETCDF(IFILE_ID,'Z0'   ,'Roughness_Length_For_Momentum'   ,IDDIM,YATT_TITLE,YATT)
00143    YATT='m'
00144    CALL DEF_VAR_NETCDF(IFILE_ID,'Z0H'  ,'Roughness_Length_For_Heat'   ,IDDIM,YATT_TITLE,YATT)
00145    YATT='m'
00146    CALL DEF_VAR_NETCDF(IFILE_ID,'UREF'  ,'Reference_Height_For_Momentum'   ,IDDIM,YATT_TITLE,YATT)
00147    YATT='m'
00148    CALL DEF_VAR_NETCDF(IFILE_ID,'ZREF'  ,'Reference_Height_For_Heat'   ,IDDIM,YATT_TITLE,YATT)
00149 ENDIF
00150 !
00151 IF (LSURF_BUDGET)  THEN
00152    YATT='W/m2'
00153    CALL DEF_VAR_NETCDF(IFILE_ID,'RN'   ,'Averaged_Net_Radiation     '   ,IDDIM,YATT_TITLE,YATT)
00154    CALL DEF_VAR_NETCDF(IFILE_ID,'H'    ,'Averaged_Sensible_Heat_Flux'   ,IDDIM,YATT_TITLE,YATT)
00155    CALL DEF_VAR_NETCDF(IFILE_ID,'LE'   ,'Averaged_Total_Latent_Heat_Flux  ',IDDIM,YATT_TITLE,YATT)
00156    CALL DEF_VAR_NETCDF(IFILE_ID,'LEI'  ,'Averaged_Sublimation_Latent_Heat_Flux  ',IDDIM,YATT_TITLE,YATT)
00157    CALL DEF_VAR_NETCDF(IFILE_ID,'GFLUX','Averaged_Ground_Heat_Flux  '   ,IDDIM,YATT_TITLE,YATT)
00158    CALL DEF_VAR_NETCDF(IFILE_ID,'SWD'  ,'Averaged_Downward_SW       '   ,IDDIM,YATT_TITLE,YATT)
00159    CALL DEF_VAR_NETCDF(IFILE_ID,'SWU'  ,'Averaged_Upward_SW         '   ,IDDIM,YATT_TITLE,YATT)
00160    CALL DEF_VAR_NETCDF(IFILE_ID,'LWD'  ,'Averaged_Downward_LW       '   ,IDDIM,YATT_TITLE,YATT)
00161    CALL DEF_VAR_NETCDF(IFILE_ID,'LWU'  ,'Averaged_Upward_LW         '   ,IDDIM,YATT_TITLE,YATT)
00162    YATT='kg/ms2'
00163    CALL DEF_VAR_NETCDF(IFILE_ID,'FMU'  ,'Averaged_Zonal_Wind_Stress '   ,IDDIM,YATT_TITLE,YATT)
00164    CALL DEF_VAR_NETCDF(IFILE_ID,'FMV'  ,'Averaged_Merid_Wind_Stress '   ,IDDIM,YATT_TITLE,YATT)
00165 ENDIF
00166 !
00167 IF (LSURF_BUDGETC) THEN
00168    YATT='J/m2'
00169    CALL DEF_VAR_NETCDF(IFILE_ID,'RNC'   ,'Cumulated_Averaged_Net_Radiation     '   ,IDDIM,YATT_TITLE,YATT)
00170    CALL DEF_VAR_NETCDF(IFILE_ID,'HC'    ,'Cumulated_Averaged_Sensible_Heat_Flux'   ,IDDIM,YATT_TITLE,YATT)
00171    CALL DEF_VAR_NETCDF(IFILE_ID,'LEC'   ,'Cumulated_Averaged_Total_Latent_Heat_Flux  ',IDDIM,YATT_TITLE,YATT)
00172    CALL DEF_VAR_NETCDF(IFILE_ID,'LEIC'  ,'Cumulated_Averaged_Sublimation_Latent_Heat_Flux  ',IDDIM,YATT_TITLE,YATT)
00173    CALL DEF_VAR_NETCDF(IFILE_ID,'GFLUXC','Cumulated_Averaged_Ground_Heat_Flux  '   ,IDDIM,YATT_TITLE,YATT)
00174    CALL DEF_VAR_NETCDF(IFILE_ID,'SWDC'  ,'Cumulated_Averaged_Downward_SW       '   ,IDDIM,YATT_TITLE,YATT)
00175    CALL DEF_VAR_NETCDF(IFILE_ID,'SWUC'  ,'Cumulated_Averaged_Upward_SW         '   ,IDDIM,YATT_TITLE,YATT)
00176    CALL DEF_VAR_NETCDF(IFILE_ID,'LWDC'  ,'Cumulated_Averaged_Downward_LW       '   ,IDDIM,YATT_TITLE,YATT)
00177    CALL DEF_VAR_NETCDF(IFILE_ID,'LWUC'  ,'Cumulated_Averaged_Upward_LW         '   ,IDDIM,YATT_TITLE,YATT)
00178    YATT='kg/ms'
00179    CALL DEF_VAR_NETCDF(IFILE_ID,'FMUC'  ,'Cumulated_Averaged_Zonal_Wind_Stress '   ,IDDIM,YATT_TITLE,YATT)
00180    CALL DEF_VAR_NETCDF(IFILE_ID,'FMVC'  ,'Cumulated_Averaged_Merid_Wind_Stress '   ,IDDIM,YATT_TITLE,YATT)
00181 ENDIF
00182 !
00183 IF (N2M>=1.OR.LSURF_BUDGET.OR.LSURF_BUDGETC) THEN
00184    YATT='K'
00185    CALL DEF_VAR_NETCDF(IFILE_ID,'TS' ,'Surface_Temperature         '   ,IDDIM,YATT_TITLE,YATT)
00186    CALL DEF_VAR_NETCDF(IFILE_ID,'TSRAD' ,'Surface_Skin,Temperature '   ,IDDIM,YATT_TITLE,YATT)
00187    YATT='-'
00188    CALL DEF_VAR_NETCDF(IFILE_ID,'EMIS' ,'Surface_emissivity '   ,IDDIM,YATT_TITLE,YATT)
00189 ENDIF
00190 !
00191 IF (N2M>0) THEN
00192    YATT='K'
00193    CALL DEF_VAR_NETCDF(IFILE_ID,'T2M_MIN_ZS' ,'2m_Temperature         '   ,IDDIM,YATT_TITLE,YATT)
00194    YATT='kg/kg'
00195    CALL DEF_VAR_NETCDF(IFILE_ID,'Q2M_MIN_ZS' ,'2m_Specific_Humidity   '   ,IDDIM,YATT_TITLE,YATT)
00196    YATT='(-)'
00197    CALL DEF_VAR_NETCDF(IFILE_ID,'HU2M_MIN_ZS','2m_Relative_Humidity   '   ,IDDIM,YATT_TITLE,YATT)
00198    YATT='K'
00199    CALL DEF_VAR_NETCDF(IFILE_ID,'T2M' ,'2m_Temperature         '   ,IDDIM,YATT_TITLE,YATT)
00200    CALL DEF_VAR_NETCDF(IFILE_ID,'T2MMIN' ,'Minimum_2m_Temperature         '   ,IDDIM,YATT_TITLE,YATT)
00201    CALL DEF_VAR_NETCDF(IFILE_ID,'T2MMAX' ,'Maximum_2m_Temperature         '   ,IDDIM,YATT_TITLE,YATT)
00202    YATT='kg/kg'
00203    CALL DEF_VAR_NETCDF(IFILE_ID,'Q2M' ,'2m_Specific_Humidity   '   ,IDDIM,YATT_TITLE,YATT)
00204    YATT='(-)'
00205    CALL DEF_VAR_NETCDF(IFILE_ID,'HU2M','2m_Relative_Humidity   '   ,IDDIM,YATT_TITLE,YATT)
00206    CALL DEF_VAR_NETCDF(IFILE_ID,'HU2MMIN','Minimum_2m_Relative_Humidity   '   ,IDDIM,YATT_TITLE,YATT)
00207    CALL DEF_VAR_NETCDF(IFILE_ID,'HU2MMAX','Maximum_2m_Relative_Humidity   '   ,IDDIM,YATT_TITLE,YATT)
00208    YATT='m/s'
00209    CALL DEF_VAR_NETCDF(IFILE_ID,'ZON10M','10m_Zonal_wind       '   ,IDDIM,YATT_TITLE,YATT)
00210    CALL DEF_VAR_NETCDF(IFILE_ID,'MER10M','10m_Meridian_Wind     '   ,IDDIM,YATT_TITLE,YATT)
00211    CALL DEF_VAR_NETCDF(IFILE_ID,'W10M','10m_Wind     '   ,IDDIM,YATT_TITLE,YATT)
00212    CALL DEF_VAR_NETCDF(IFILE_ID,'W10MMAX','Maximum_10m_Wind     ' ,IDDIM,YATT_TITLE,YATT)
00213 ENDIF
00214 !
00215  CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY)
00216 !
00217 IF (LHOOK) CALL DR_HOOK('INIT_OUTFN_SURF_ATM_N',1,ZHOOK_HANDLE)
00218 !
00219 END SUBROUTINE INIT_OUTFN_SURF_ATM_n