SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE INIT_OUTFN_FLAKE_n(HPROGRAM,KLUOUT) 00003 ! ############################### 00004 ! 00005 !!**** *INIT_OUTFN_FLAKE_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 !! Modified 06-10 by S. Faroux 00032 !------------------------------------------------------------------------------- 00033 ! 00034 !* 0. DECLARATIONS 00035 ! ------------ 00036 00037 USE MODD_OL_FILEID, ONLY : XVAR_TO_FILEOUT, XID, XOUT 00038 USE MODD_DIAG_FLAKE_n 00039 USE MODD_FLAKE_n, ONLY : LSBL, TTIME 00040 USE MODD_FLAKE_SBL_n, ONLY : NLVL 00041 USE MODN_IO_OFFLINE, ONLY : XTSTEP_OUTPUT 00042 ! 00043 USE MODI_GET_DIM_FULL_n 00044 USE MODI_OL_DEFINE_DIM 00045 USE MODI_GET_DATE_OL 00046 USE MODI_CREATE_FILE 00047 USE MODI_DEF_VAR_NETCDF 00048 USE MODI_OL_WRITE_COORD 00049 ! 00050 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00051 USE PARKIND1 ,ONLY : JPRB 00052 ! 00053 IMPLICIT NONE 00054 include 'netcdf.inc' 00055 00056 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM 00057 INTEGER, INTENT(IN) :: KLUOUT 00058 ! 00059 !* 0.2 Declarations of local variables 00060 ! ------------------------------- 00061 ! 00062 INTEGER :: INI, ICANLVL 00063 INTEGER :: IDIM1 00064 CHARACTER(LEN=13),DIMENSION(1) :: YUNIT1, YUNIT2 00065 REAL,DIMENSION(:), POINTER :: ZX, ZY 00066 INTEGER, DIMENSION(:), POINTER :: IDIMS, IDDIM 00067 CHARACTER(LEN=100), DIMENSION(:), POINTER :: YNAME_DIM 00068 ! 00069 CHARACTER(LEN=40),DIMENSION(1) :: YDATE 00070 INTEGER :: IFILE_ID, IVAR_ID 00071 CHARACTER(LEN=50) :: YFILE 00072 CHARACTER(LEN=100), DIMENSION(1) :: YATT_TITLE, YATT 00073 CHARACTER(LEN=2) :: YLVLV 00074 INTEGER :: JLAYER 00075 INTEGER :: JRET 00076 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00077 ! 00078 !------------------------------------------------------------------------------- 00079 00080 ! 1. Compute output lenght dimension 00081 !----------------------------------- 00082 IF (LHOOK) CALL DR_HOOK('INIT_OUTFN_FLAKE_N',0,ZHOOK_HANDLE) 00083 CALL GET_DIM_FULL_n(INI) 00084 ! 00085 CALL OL_DEFINE_DIM(HPROGRAM, KLUOUT, INI, IDIM1, YUNIT1, YUNIT2, & 00086 ZX, ZY, IDIMS, IDDIM, YNAME_DIM) 00087 CALL GET_DATE_OL(TTIME,XTSTEP_OUTPUT,YDATE(1)) 00088 ! 00089 ! 4. Create output file for fluxes values 00090 !---------------------------------------------------------- 00091 00092 IF (ALLOCATED(XVAR_TO_FILEOUT)) DEALLOCATE(XVAR_TO_FILEOUT) 00093 IF (ALLOCATED(XID)) DEALLOCATE(XID) 00094 ALLOCATE(XVAR_TO_FILEOUT(0)) 00095 ALLOCATE(XID(0)) 00096 XOUT=0 00097 ! 00098 YATT_TITLE(1)='units' 00099 ! 00100 YFILE='WATFLUX_DIAGNOSTICS.OUT.nc' 00101 CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM) 00102 YATT='dimensionless' 00103 ! 00104 IF (LCOEF) THEN 00105 YATT='W/s2' 00106 CALL DEF_VAR_NETCDF(IFILE_ID,'CD_WAT' ,'Drag_Coefficient_For_Momentum ' ,IDDIM,YATT_TITLE,YATT) 00107 YATT='W/s' 00108 CALL DEF_VAR_NETCDF(IFILE_ID,'CH_WAT' ,'Drag_Coefficient_For_Heat ' ,IDDIM,YATT_TITLE,YATT) 00109 YATT='W/s/K' 00110 CALL DEF_VAR_NETCDF(IFILE_ID,'CE_WAT' ,'Drag_Coefficient_For_Evaporation' ,IDDIM,YATT_TITLE,YATT) 00111 YATT='m' 00112 CALL DEF_VAR_NETCDF(IFILE_ID,'Z0_WAT' ,'Roughness_Length_For_Momentum' ,IDDIM,YATT_TITLE,YATT) 00113 YATT='m' 00114 CALL DEF_VAR_NETCDF(IFILE_ID,'Z0H_WAT' ,'Roughness_Length_For_Heat' ,IDDIM,YATT_TITLE,YATT) 00115 ENDIF 00116 ! 00117 IF (LSURF_VARS) THEN 00118 YATT='kg/kg' 00119 CALL DEF_VAR_NETCDF(IFILE_ID,'QS_WAT' ,'Surface_Humidity ' ,IDDIM,YATT_TITLE,YATT) 00120 ENDIF 00121 ! 00122 IF (N2M>0) THEN 00123 YATT='K' 00124 CALL DEF_VAR_NETCDF(IFILE_ID,'T2M_WAT' ,'2m_Temperature ' ,IDDIM,YATT_TITLE,YATT) 00125 YATT='kg/kg' 00126 CALL DEF_VAR_NETCDF(IFILE_ID,'Q2M_WAT' ,'2m_Specific_Humidity ' ,IDDIM,YATT_TITLE,YATT) 00127 YATT='(-)' 00128 CALL DEF_VAR_NETCDF(IFILE_ID,'HU2M_WAT','2m_Relative_Humidity ' ,IDDIM,YATT_TITLE,YATT) 00129 YATT='m/s' 00130 CALL DEF_VAR_NETCDF(IFILE_ID,'ZON10M_WAT','10m_Zonal_wind ' ,IDDIM,YATT_TITLE,YATT) 00131 YATT='m/s' 00132 CALL DEF_VAR_NETCDF(IFILE_ID,'MER10M_WAT','2m_Meridian_Wind ' ,IDDIM,YATT_TITLE,YATT) 00133 ENDIF 00134 ! 00135 IF (N2M>0) THEN 00136 YATT='-' 00137 CALL DEF_VAR_NETCDF(IFILE_ID,'RI_WAT' ,'Averaged_Richardson_Number' ,IDDIM,YATT_TITLE,YATT) 00138 ENDIF 00139 ! 00140 IF(LSURF_BUDGET) THEN 00141 YATT='W/m2' 00142 CALL DEF_VAR_NETCDF(IFILE_ID,'RN_WAT' ,'Averaged_Net_Radiation' ,IDDIM,YATT_TITLE,YATT) 00143 CALL DEF_VAR_NETCDF(IFILE_ID,'H_WAT' ,'Averaged_Sensible_Heat_Flux' ,IDDIM,YATT_TITLE,YATT) 00144 CALL DEF_VAR_NETCDF(IFILE_ID,'LE_WAT' ,'Averaged_Latent_Heat_Flux ' ,IDDIM,YATT_TITLE,YATT) 00145 CALL DEF_VAR_NETCDF(IFILE_ID,'GFLUX_WAT' ,'Averaged_Ground_Heat_Flux ' ,IDDIM,YATT_TITLE,YATT) 00146 CALL DEF_VAR_NETCDF(IFILE_ID,'SWD_WAT' ,'Averaged_Downward_SW ' ,IDDIM,YATT_TITLE,YATT) 00147 CALL DEF_VAR_NETCDF(IFILE_ID,'SWU_WAT' ,'Averaged_Upward_SW ' ,IDDIM,YATT_TITLE,YATT) 00148 CALL DEF_VAR_NETCDF(IFILE_ID,'LWD_WAT' ,'Averaged_Downward_LW ' ,IDDIM,YATT_TITLE,YATT) 00149 CALL DEF_VAR_NETCDF(IFILE_ID,'LWU_WAT' ,'Averaged_Upward_LW ' ,IDDIM,YATT_TITLE,YATT) 00150 CALL DEF_VAR_NETCDF(IFILE_ID,'FMU_WAT' ,'Averaged_Zonal_Wind_Stress ' ,IDDIM,YATT_TITLE,YATT) 00151 CALL DEF_VAR_NETCDF(IFILE_ID,'FMV_WAT' ,'Averaged_Merid_Wind_Stress ' ,IDDIM,YATT_TITLE,YATT) 00152 ENDIF 00153 ! 00154 CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY) 00155 ! 00156 !YFILE='WATFLUX_DIAG_CUMUL.OUT.nc' 00157 !CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM) 00158 !YATT (1)='dimensionless' 00159 !CALL DEF_VAR_NETCDF(IFILE_ID,'RNC_WAT' ,'Averaged_Cumulated_Net_Radiation' ,IDDIM,YATT_TITLE,YATT) 00160 !CALL DEF_VAR_NETCDF(IFILE_ID,'HC_WAT' ,'Averaged_Cumulated_Sensible_Heat_Flux' ,IDDIM,YATT_TITLE,YATT) 00161 !CALL DEF_VAR_NETCDF(IFILE_ID,'LEC_WAT' ,'Averaged_Cumulated_Latent_Heat_Flux' ,IDDIM,YATT_TITLE,YATT) 00162 !CALL DEF_VAR_NETCDF(IFILE_ID,'GFLUXC_WAT' ,'Averaged_Cumulated_Ground_Heat_Flux' ,IDDIM,YATT_TITLE,YATT) 00163 !CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY) 00164 ! 00165 ! 00166 YFILE='WATFLUX_PROGNOSTIC.OUT.nc' 00167 CALL CREATE_FILE(YFILE,IDIMS,YNAME_DIM,IFILE_ID,IDDIM) 00168 YATT='dimensionless' 00169 ! 00170 YATT='K' 00171 CALL DEF_VAR_NETCDF(IFILE_ID,'TS_WATER' , 'Averaged_Water_S_Temperature' ,IDDIM,YATT_TITLE,YATT) 00172 CALL DEF_VAR_NETCDF(IFILE_ID,'T_MNW' , 'Averaged_Water_Temperature ' ,IDDIM,YATT_TITLE,YATT) 00173 CALL DEF_VAR_NETCDF(IFILE_ID,'T_WML' , 'Mixed_layer_wat_temperature ' ,IDDIM,YATT_TITLE,YATT) 00174 CALL DEF_VAR_NETCDF(IFILE_ID,'T_BOT' , 'Bottom_Water_Temperature ' ,IDDIM,YATT_TITLE,YATT) 00175 YATT='m' 00176 CALL DEF_VAR_NETCDF(IFILE_ID,'H_ML' , 'Mixed_Layer_Depth ' ,IDDIM,YATT_TITLE,YATT) 00177 YATT=' ' 00178 CALL DEF_VAR_NETCDF(IFILE_ID,'CT' , 'Termocline_Shape_Factor ' ,IDDIM,YATT_TITLE,YATT) 00179 YATT='K' 00180 CALL DEF_VAR_NETCDF(IFILE_ID,'T_SNOW' , 'Temperature at the air-snow interface' ,IDDIM,YATT_TITLE,YATT) 00181 CALL DEF_VAR_NETCDF(IFILE_ID,'T_ICE' , 'Ice_surface_Temperature ' ,IDDIM,YATT_TITLE,YATT) 00182 CALL DEF_VAR_NETCDF(IFILE_ID,'T_B1' , 'Temperature of the upper layer of sediments ' ,IDDIM,YATT_TITLE,YATT) 00183 YATT='m' 00184 CALL DEF_VAR_NETCDF(IFILE_ID,'H_SNOW' , 'Snow thickness' ,IDDIM,YATT_TITLE,YATT) 00185 CALL DEF_VAR_NETCDF(IFILE_ID,'H_ICE' , 'Ice thickness' ,IDDIM,YATT_TITLE,YATT) 00186 CALL DEF_VAR_NETCDF(IFILE_ID,'H_B1' , 'Thickness of the upper layer of sediments' ,IDDIM,YATT_TITLE,YATT) 00187 ! 00188 IF (LSBL) THEN 00189 DO JLAYER=1,ICANLVL 00190 WRITE(YLVLV,'(i2.2)') JLAYER 00191 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_Z'//YLVLV,'Canopy height', IDDIM,YATT_TITLE,(/'m'/)) 00192 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_U'//YLVLV,'Canopy wind', IDDIM,YATT_TITLE,(/'m/s'/)) 00193 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_T'//YLVLV,'Canopy temp', IDDIM,YATT_TITLE,(/'K'/)) 00194 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_Q'//YLVLV,'Canopy humidity', IDDIM,YATT_TITLE,(/'kg/m3'/)) 00195 CALL DEF_VAR_NETCDF(IFILE_ID,'WAT_SBL_E'//YLVLV,'Canopy TKE', IDDIM,YATT_TITLE,(/'m2/s2'/)) 00196 END DO 00197 ENDIF 00198 ! 00199 CALL OL_WRITE_COORD(YFILE,IFILE_ID,IDDIM,YATT_TITLE,YNAME_DIM,YUNIT1,YUNIT2,IDIM1,YDATE,ZX,ZY) 00200 ! 00201 IF (LHOOK) CALL DR_HOOK('INIT_OUTFN_FLAKE_N',1,ZHOOK_HANDLE) 00202 ! 00203 END SUBROUTINE INIT_OUTFN_FLAKE_n