SURFEX v7.3
General documentation of Surfex
|
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