60 USE modi_get_dim_full_n
61 USE modi_ol_define_dim
64 USE modi_def_var_netcdf
65 USE modi_ol_write_coord
67 USE yomhook
,ONLY : lhook, dr_hook
68 USE parkind1
,ONLY : jprb
80 TYPE(sv_t),
INTENT(INOUT) :: sv
82 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
83 INTEGER,
INTENT(IN) :: kluout
88 CHARACTER(LEN=100),
DIMENSION(:),
POINTER :: yname_dim
89 CHARACTER(LEN=100),
DIMENSION(:),
ALLOCATABLE :: yname_dim1
90 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
91 CHARACTER(LEN=40),
DIMENSION(1) :: ydate
92 CHARACTER(LEN=13),
DIMENSION(1) :: yunit1, yunit2
93 CHARACTER(LEN=100) :: ycomment
94 CHARACTER(LEN=50) :: yfile
95 CHARACTER(LEN=12) :: yrecfm
97 REAL,
DIMENSION(:),
POINTER :: zx, zy
99 INTEGER,
DIMENSION(:),
POINTER :: idims, iddim
100 INTEGER,
DIMENSION(:),
ALLOCATABLE :: iddim1, idims1
101 INTEGER :: ifile_id, ivar_id, idimid
102 INTEGER :: idim1, idim2, indims
105 INTEGER :: jret, jspec
107 REAL(KIND=JPRB) :: zhook_handle
113 IF (lhook) CALL dr_hook(
'INIT_OUTFN_SURF_ATM_N',0,zhook_handle)
120 hprogram, kluout, ini, idim1, yunit1, yunit2, &
121 zx, zy, idims, iddim, yname_dim)
125 ALLOCATE(idims1(indims-1))
126 ALLOCATE(iddim1(indims-1))
127 ALLOCATE(yname_dim1(indims-1))
128 idims1=idims(1:indims-1)
129 yname_dim1=yname_dim(1:indims-1)
134 IF (
ALLOCATED(xvar_to_fileout))
DEALLOCATE(xvar_to_fileout)
135 IF (
ALLOCATED(xid))
DEALLOCATE(xid)
139 yatt_title(1)=
'units'
142 yfile=
'SURF_ATM.OUT.nc'
143 CALL
create_file(yfile,idims1,yname_dim1,ifile_id,iddim1)
144 jret=nf_redef(ifile_id)
149 ifile_id,
'FRAC_SEA ',
'Fraction_of_sea ',iddim1,yatt_title,yatt)
151 ifile_id,
'FRAC_WATER ',
'Fraction_of_water ',iddim1,yatt_title,yatt)
153 ifile_id,
'FRAC_TOWN ',
'Fraction_of_town ',iddim1,yatt_title,yatt)
155 ifile_id,
'FRAC_NATURE',
'Fraction_of_nature',iddim1,yatt_title,yatt)
159 yfile,ifile_id,iddim1,yatt_title,yname_dim1,yunit1,yunit2,idim1,ydate,zx,zy)
166 yfile=
'SURF_ATM_DIAGNOSTICS.OUT.nc'
167 CALL
create_file(yfile,idims,yname_dim,ifile_id,iddim)
168 jret=nf_redef(ifile_id)
173 ifile_id,
'RI' ,
'Averaged_Richardson_Number ' ,iddim,yatt_title,yatt)
179 ifile_id,
'CD' ,
'Drag_Coefficient_For_Momentum ' ,iddim,yatt_title,yatt)
182 ifile_id,
'CH' ,
'Drag_Coefficient_For_Heat ' ,iddim,yatt_title,yatt)
185 ifile_id,
'CE' ,
'Drag_Coefficient_For_Evaporation' ,iddim,yatt_title,yatt)
188 ifile_id,
'Z0' ,
'Roughness_Length_For_Momentum' ,iddim,yatt_title,yatt)
190 ifile_id,
'Z0H' ,
'Roughness_Length_For_Heat' ,iddim,yatt_title,yatt)
192 ifile_id,
'UREF' ,
'Reference_Height_For_Momentum' ,iddim,yatt_title,yatt)
194 ifile_id,
'ZREF' ,
'Reference_Height_For_Heat' ,iddim,yatt_title,yatt)
197 IF (dgu%LSURF_VARS)
THEN
200 ifile_id,
'QS' ,
'Surface_specific_humidity' ,iddim,yatt_title,yatt)
203 IF (dgu%LSURF_BUDGET)
THEN
206 ifile_id,
'RN' ,
'Averaged_Net_Radiation ' ,iddim,yatt_title,yatt)
208 ifile_id,
'H' ,
'Averaged_Sensible_Heat_Flux' ,iddim,yatt_title,yatt)
210 ifile_id,
'LE' ,
'Averaged_Total_Latent_Heat_Flux ',iddim,yatt_title,yatt)
212 ifile_id,
'LEI' ,
'Averaged_Sublimation_Latent_Heat_Flux ',iddim,yatt_title,yatt)
214 ifile_id,
'GFLUX',
'Averaged_Ground_Heat_Flux ' ,iddim,yatt_title,yatt)
216 IF (dgu%LRAD_BUDGET)
THEN
219 ifile_id,
'SWD' ,
'Averaged_Downward_SW ' ,iddim,yatt_title,yatt)
221 ifile_id,
'SWU' ,
'Averaged_Upward_SW ' ,iddim,yatt_title,yatt)
223 ifile_id,
'LWD' ,
'Averaged_Downward_LW ' ,iddim,yatt_title,yatt)
225 ifile_id,
'LWU' ,
'Averaged_Upward_LW ' ,iddim,yatt_title,yatt)
231 ifile_id,
'FMU' ,
'Averaged_Zonal_Wind_Stress ' ,iddim,yatt_title,yatt)
233 ifile_id,
'FMV' ,
'Averaged_Merid_Wind_Stress ' ,iddim,yatt_title,yatt)
236 ifile_id,
'EVAP' ,
'Averaged_Total_Evapotranspiration',iddim,yatt_title,yatt)
238 ifile_id,
'SUBL' ,
'Averaged_Sublimation_of_seaice' ,iddim,yatt_title,yatt)
241 IF (dgu%LSURF_BUDGETC)
THEN
244 ifile_id,
'RNC' ,
'Cumulated_Averaged_Net_Radiation ' ,iddim,yatt_title,yatt)
246 ifile_id,
'HC' ,
'Cumulated_Averaged_Sensible_Heat_Flux' ,iddim,yatt_title,yatt)
248 ifile_id,
'LEC' ,
'Cumulated_Averaged_Total_Latent_Heat_Flux ',iddim,yatt_title,yatt)
250 ifile_id,
'LEIC' ,
'Cumulated_Averaged_Sublimation_Latent_Heat_Flux ',iddim,yatt_title,yatt)
252 ifile_id,
'GFLUXC',
'Cumulated_Averaged_Ground_Heat_Flux ' ,iddim,yatt_title,yatt)
254 IF (dgu%LRAD_BUDGET .OR. (dgu%LSURF_BUDGETC .AND. .NOT.dgu%LRESET_BUDGETC))
THEN
257 ifile_id,
'SWDC' ,
'Cumulated_Averaged_Downward_SW ' ,iddim,yatt_title,yatt)
259 ifile_id,
'SWUC' ,
'Cumulated_Averaged_Upward_SW ' ,iddim,yatt_title,yatt)
261 ifile_id,
'LWDC' ,
'Cumulated_Averaged_Downward_LW ' ,iddim,yatt_title,yatt)
263 ifile_id,
'LWUC' ,
'Cumulated_Averaged_Upward_LW ' ,iddim,yatt_title,yatt)
269 ifile_id,
'FMUC' ,
'Cumulated_Averaged_Zonal_Wind_Stress ' ,iddim,yatt_title,yatt)
271 ifile_id,
'FMVC' ,
'Cumulated_Averaged_Merid_Wind_Stress ' ,iddim,yatt_title,yatt)
274 ifile_id,
'EVAPC' ,
'Cumulated_Averaged_Total_Evaporation' ,iddim,yatt_title,yatt)
276 ifile_id,
'SUBLC' ,
'Cumulated_Averaged_Sublimation_of_seaice',iddim,yatt_title,yatt)
279 IF (dgu%N2M>=1.OR.dgu%LSURF_BUDGET.OR.dgu%LSURF_BUDGETC)
THEN
282 ifile_id,
'TS' ,
'Effective_Surface_Temperature ',iddim,yatt_title,yatt)
284 ifile_id,
'TSRAD' ,
'Radiative_Surface_Skin_Temperature ',iddim,yatt_title,yatt)
287 ifile_id,
'EMIS' ,
'Surface_emissivity ' ,iddim,yatt_title,yatt)
292 IF (dgu%L2M_MIN_ZS)
THEN
296 ifile_id,
'T2M_MIN_ZS' ,
'2m_Temperature ' ,iddim,yatt_title,yatt)
299 ifile_id,
'Q2M_MIN_ZS' ,
'2m_Specific_Humidity ' ,iddim,yatt_title,yatt)
302 ifile_id,
'HU2M_MIN_ZS',
'2m_Relative_Humidity ' ,iddim,yatt_title,yatt)
308 ifile_id,
'T2M' ,
'2m_Temperature ' ,iddim,yatt_title,yatt)
310 ifile_id,
'T2MMIN' ,
'Minimum_2m_Temperature ' ,iddim,yatt_title,yatt)
312 ifile_id,
'T2MMAX' ,
'Maximum_2m_Temperature ' ,iddim,yatt_title,yatt)
315 ifile_id,
'Q2M' ,
'2m_Specific_Humidity ' ,iddim,yatt_title,yatt)
318 ifile_id,
'HU2M',
'2m_Relative_Humidity ' ,iddim,yatt_title,yatt)
320 ifile_id,
'HU2MMIN',
'Minimum_2m_Relative_Humidity ' ,iddim,yatt_title,yatt)
322 ifile_id,
'HU2MMAX',
'Maximum_2m_Relative_Humidity ' ,iddim,yatt_title,yatt)
326 ifile_id,
'ZON10M',
'10m_Zonal_wind ' ,iddim,yatt_title,yatt)
328 ifile_id,
'MER10M',
'10m_Meridian_Wind ' ,iddim,yatt_title,yatt)
330 ifile_id,
'W10M',
'10m_Wind ' ,iddim,yatt_title,yatt)
332 ifile_id,
'W10MMAX',
'Maximum_10m_Wind ' ,iddim,yatt_title,yatt)
336 IF (chu%LCH_EMIS .AND. sv%NBEQ>0 .AND. chu%LCH_SURF_EMIS)
THEN
339 ycomment =
"Emission data at time t"
341 IF (chu%CCH_EMIS==
'AGGR')
THEN
343 jret = nf_def_dim(ifile_id,
"Temporal_emiss",che%NTIME_MAX,idimid)
345 ALLOCATE(iddim1(indims+1))
346 iddim1(1:indims-1) = iddim(1:indims-1)
347 iddim1(indims) = idimid
348 iddim1(indims+1) = iddim(indims)
350 DO jspec=1,
SIZE(che%TSEMISS)
351 yrecfm =
"E_"//trim(che%TSEMISS(jspec)%CNAME)
353 ifile_id,yrecfm,ycomment,iddim1,yatt_title,yatt)
358 ELSE IF (chu%CCH_EMIS==
'SNAP')
THEN
360 DO jspec=1,chn%NEMIS_NBR
361 yrecfm =
"E_"//trim(chn%CEMIS_NAME(jspec))
363 ifile_id,yrecfm,ycomment,iddim,yatt_title,yatt)
371 yfile,ifile_id,iddim,yatt_title,yname_dim,yunit1,yunit2,idim1,ydate,zx,zy)
373 IF (lhook) CALL dr_hook(
'INIT_OUTFN_SURF_ATM_N',1,zhook_handle)
subroutine create_file(HFILE, KDIMS, HNAME_DIM, KFILE_ID, KDIM_ID)
subroutine get_dim_full_n(U, KDIM_FULL)
subroutine ol_write_coord(DGU, HFILE, KFILE_ID, KDDIM, HATT_TITLE, HNAME_DIM, HUNIT1, HUNIT2, KDIM1, HDATE, PX, PY)
subroutine get_date_ol(TPTIME, PTSTEP, HDATE)
subroutine ol_define_dim(UG, U, HPROGRAM, KLUOUT, KNI, KDIM1, HUNIT1, HUNIT2, PX, PY, KDIMS, KDDIM, HNAME_DIM, KNPATCH)
subroutine init_outfn_surf_atm_n(CHE, CHN, CHU, DGU, UG, U, SV, HPROGRAM, KLUOUT)
subroutine def_var_netcdf(DGU, KFILE_ID, HNAME, HLONG_NAME, KDIM_ID, HATT_TITLE, HATT_TEXT, KVAR_ID, KTYPE, KLEN)