SCALE-RM
mod_urban_vars.f90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
10 !-------------------------------------------------------------------------------
12  !-----------------------------------------------------------------------------
13  !
14  !++ used modules
15  !
16  use scale_precision
17  use scale_stdio
18  use scale_prof
19  use scale_debug
22 
23  use scale_const, only: &
24  i_sw => const_i_sw, &
25  i_lw => const_i_lw
26  !-----------------------------------------------------------------------------
27  implicit none
28  private
29  !-----------------------------------------------------------------------------
30  !
31  !++ Public procedure
32  !
33  public :: urban_vars_setup
34  public :: urban_vars_restart_read
35  public :: urban_vars_restart_write
36  public :: urban_vars_history
37  public :: urban_vars_total
38  public :: urban_vars_external_in
39 
41  public :: urban_vars_restart_open
44  public :: urban_vars_restart_close
45 
46  !-----------------------------------------------------------------------------
47  !
48  !++ Public parameters & variables
49  !
50  logical, public :: urban_restart_output = .false.
51 
52  character(len=H_LONG), public :: urban_restart_in_basename = ''
53  logical, public :: urban_restart_in_postfix_timelabel = .false.
54  character(len=H_LONG), public :: urban_restart_out_basename = ''
55  logical, public :: urban_restart_out_postfix_timelabel = .true.
56  character(len=H_MID), public :: urban_restart_out_title = 'URBAN restart'
57  character(len=H_SHORT), public :: urban_restart_out_dtype = 'DEFAULT'
58 
59  ! prognostic variables
60  real(RP), public, allocatable :: urban_tr (:,:) ! urban surface temperature of roof [K]
61  real(RP), public, allocatable :: urban_tb (:,:) ! urban surface temperature of wall [K]
62  real(RP), public, allocatable :: urban_tg (:,:) ! urban surface temperature of road [K]
63  real(RP), public, allocatable :: urban_tc (:,:) ! urban canopy air temperature [K]
64  real(RP), public, allocatable :: urban_qc (:,:) ! urban canopy humidity [kg/kg]
65  real(RP), public, allocatable :: urban_uc (:,:) ! urban canopy wind [m/s]
66  real(RP), public, allocatable :: urban_trl (:,:,:) ! urban temperature in layer of roof [K]
67  real(RP), public, allocatable :: urban_tbl (:,:,:) ! urban temperature in layer of wall [K]
68  real(RP), public, allocatable :: urban_tgl (:,:,:) ! urban temperature in layer of road [K]
69  real(RP), public, allocatable :: urban_rainr(:,:) ! urban rain storage on roof [mm=kg/m2]
70  real(RP), public, allocatable :: urban_rainb(:,:) ! urban rain storage on wall [mm=kg/m2]
71  real(RP), public, allocatable :: urban_raing(:,:) ! urban rain storage on road [mm=kg/m2]
72  real(RP), public, allocatable :: urban_roff (:,:) ! urban runoff [mm=kg/m2]
73 
74  ! tendency variables
75  real(RP), public, allocatable :: urban_trl_t (:,:,:) ! tendency of URBAN_TRL
76  real(RP), public, allocatable :: urban_tbl_t (:,:,:) ! tendency of URBAN_TBL
77  real(RP), public, allocatable :: urban_tgl_t (:,:,:) ! tendency of URBAN_TGL
78  real(RP), public, allocatable :: urban_tc_t (:,:) ! tendency of URBAN_TC
79  real(RP), public, allocatable :: urban_uc_t (:,:) ! tendency of URBAN_UC
80  real(RP), public, allocatable :: urban_qc_t (:,:) ! tendency of URBAN_QC
81  real(RP), public, allocatable :: urban_tr_t (:,:) ! tendency of URBAN_TR
82  real(RP), public, allocatable :: urban_tb_t (:,:) ! tendency of URBAN_TB
83  real(RP), public, allocatable :: urban_tg_t (:,:) ! tendency of URBAN_TG
84  real(RP), public, allocatable :: urban_rainr_t(:,:) ! tendency of URBAN_RAINR
85  real(RP), public, allocatable :: urban_rainb_t(:,:) ! tendency of URBAN_RAINB
86  real(RP), public, allocatable :: urban_raing_t(:,:) ! tendency of URBAN_RAING
87  real(RP), public, allocatable :: urban_roff_t (:,:) ! tendency of URBAN_ROFF
88 
89  ! for restart
90  real(RP), public, allocatable :: urban_sfc_temp (:,:) ! urban grid average of surface temperature [K]
91  real(RP), public, allocatable :: urban_sfc_albedo(:,:,:) ! urban grid average of albedo (0-1)
92  real(RP), public, allocatable :: urban_sflx_mw (:,:) ! urban grid average of w-momentum flux [kg/m2/s]
93  real(RP), public, allocatable :: urban_sflx_mu (:,:) ! urban grid average of u-momentum flux [kg/m2/s]
94  real(RP), public, allocatable :: urban_sflx_mv (:,:) ! urban grid average of v-momentum flux [kg/m2/s]
95  real(RP), public, allocatable :: urban_sflx_sh (:,:) ! urban grid average of sensible heat flux [W/m2]
96  real(RP), public, allocatable :: urban_sflx_lh (:,:) ! urban grid average of latent heat flux [W/m2]
97  real(RP), public, allocatable :: urban_sflx_gh (:,:) ! urban grid average of ground heat flux [W/m2]
98  real(RP), public, allocatable :: urban_sflx_evap (:,:) ! urban grid average of water vapor flux [kg/m2/s]
99 
100  ! diagnostic variables
101  real(RP), public, allocatable :: urban_z0m(:,:) ! urban grid average of rougness length (momentum) [m]
102  real(RP), public, allocatable :: urban_z0h(:,:) ! urban grid average of rougness length (heat) [m]
103  real(RP), public, allocatable :: urban_z0e(:,:) ! urban grid average of rougness length (vapor) [m]
104  real(RP), public, allocatable :: urban_u10(:,:) ! urban grid average of velocity u at 10m [m/s]
105  real(RP), public, allocatable :: urban_v10(:,:) ! urban grid average of velocity v at 10m [m/s]
106  real(RP), public, allocatable :: urban_t2 (:,:) ! urban grid average of temperature at 2m [K]
107  real(RP), public, allocatable :: urban_q2 (:,:) ! urban grid average of water vapor at 2m [kg/kg]
108 
109  ! recieved atmospheric variables
110  real(RP), public, allocatable :: atmos_temp (:,:)
111  real(RP), public, allocatable :: atmos_pres (:,:)
112  real(RP), public, allocatable :: atmos_w (:,:)
113  real(RP), public, allocatable :: atmos_u (:,:)
114  real(RP), public, allocatable :: atmos_v (:,:)
115  real(RP), public, allocatable :: atmos_dens (:,:)
116  real(RP), public, allocatable :: atmos_qv (:,:)
117  real(RP), public, allocatable :: atmos_pbl (:,:)
118  real(RP), public, allocatable :: atmos_sfc_pres (:,:)
119  real(RP), public, allocatable :: atmos_sflx_lw (:,:,:)
120  real(RP), public, allocatable :: atmos_sflx_sw (:,:,:)
121  real(RP), public, allocatable :: atmos_cossza (:,:)
122  real(RP), public, allocatable :: atmos_sflx_prec(:,:)
123 
124  !-----------------------------------------------------------------------------
125  !
126  !++ Private procedure
127  !
128  !-----------------------------------------------------------------------------
129  !
130  !++ Private parameters & variables
131  !
132  logical, private :: urban_vars_checkrange = .false.
133 
134  integer, private, parameter :: vmax = 23
135  integer, private, parameter :: i_tr = 1
136  integer, private, parameter :: i_tb = 2
137  integer, private, parameter :: i_tg = 3
138  integer, private, parameter :: i_tc = 4
139  integer, private, parameter :: i_qc = 5
140  integer, private, parameter :: i_uc = 6
141  integer, private, parameter :: i_trl = 7
142  integer, private, parameter :: i_tbl = 8
143  integer, private, parameter :: i_tgl = 9
144  integer, private, parameter :: i_rainr = 10
145  integer, private, parameter :: i_rainb = 11
146  integer, private, parameter :: i_raing = 12
147  integer, private, parameter :: i_roff = 13
148  integer, private, parameter :: i_sfc_temp = 14
149  integer, private, parameter :: i_alb_lw = 15
150  integer, private, parameter :: i_alb_sw = 16
151  integer, private, parameter :: i_sflx_mw = 17
152  integer, private, parameter :: i_sflx_mu = 18
153  integer, private, parameter :: i_sflx_mv = 19
154  integer, private, parameter :: i_sflx_sh = 20
155  integer, private, parameter :: i_sflx_lh = 21
156  integer, private, parameter :: i_sflx_gh = 22
157  integer, private, parameter :: i_sflx_evap = 23
158 
159  character(len=H_SHORT), private :: var_name(vmax)
160  character(len=H_MID), private :: var_desc(vmax)
161  character(len=H_SHORT), private :: var_unit(vmax)
162  integer, private :: var_id(vmax)
163  integer, private :: restart_fid = -1 ! file ID
164 
165  logical, private :: urban_restart_in_check_coordinates = .true.
166 
167  data var_name / 'URBAN_TR' , &
168  'URBAN_TB' , &
169  'URBAN_TG' , &
170  'URBAN_TC' , &
171  'URBAN_QC' , &
172  'URBAN_UC' , &
173  'URBAN_TRL' , &
174  'URBAN_TBL' , &
175  'URBAN_TGL' , &
176  'URBAN_RAINR' , &
177  'URBAN_RAINB' , &
178  'URBAN_RAING' , &
179  'URBAN_ROFF', &
180  'URBAN_SFC_TEMP', &
181  'URBAN_ALB_LW', &
182  'URBAN_ALB_SW', &
183  'URBAN_SFLX_MW', &
184  'URBAN_SFLX_MU', &
185  'URBAN_SFLX_MV', &
186  'URBAN_SFLX_SH', &
187  'URBAN_SFLX_LH', &
188  'URBAN_SFLX_GH', &
189  'URBAN_SFLX_evap' /
190 
191  data var_desc / 'urban surface temperature of roof', &
192  'urban surface temperature of wall', &
193  'urban surface temperature of road', &
194  'urban canopy air temperature', &
195  'urban canopy humidity', &
196  'urban canopy wind', &
197  'urban temperature in layer of roof', &
198  'urban temperature in layer of wall', &
199  'urban temperature in layer of road', &
200  'urban rain strage on roof', &
201  'urban rain strage on wall', &
202  'urban rain strage on road', &
203  'urban runoff ', &
204  'urban grid average of temperature', &
205  'urban grid average of albedo LW', &
206  'urban grid average of albedo SW', &
207  'urban grid average of w-momentum flux', &
208  'urban grid average of u-momentum flux', &
209  'urban grid average of v-momentum flux', &
210  'urban grid average of sensible heat flux', &
211  'urban grid average of latent heat flux', &
212  'urban grid average of ground heat flux', &
213  'urban grid average of water vapor flux' /
214 
215  data var_unit / 'K', &
216  'K', &
217  'K', &
218  'K', &
219  'kg/kg', &
220  'm/s', &
221  'K', &
222  'K', &
223  'K', &
224  'kg/m2', &
225  'kg/m2', &
226  'kg/m2', &
227  'kg/m2', &
228  'K', &
229  '1', &
230  '1', &
231  'kg/m2/s', &
232  'kg/m2/s', &
233  'kg/m2/s', &
234  'W/m2', &
235  'W/m2', &
236  'W/m2', &
237  'kg/m2/s' /
238 
239  !-----------------------------------------------------------------------------
240 contains
241  !-----------------------------------------------------------------------------
243  subroutine urban_vars_setup
244  use scale_process, only: &
246  use scale_const, only: &
247  undef => const_undef
248  implicit none
249 
250  namelist / param_urban_vars / &
253  urban_restart_in_check_coordinates, &
259  urban_vars_checkrange
260 
261  integer :: ierr
262  integer :: iv
263  !---------------------------------------------------------------------------
264 
265  if( io_l ) write(io_fid_log,*)
266  if( io_l ) write(io_fid_log,*) '++++++ Module[VARS] / Categ[URBAN] / Origin[SCALE-RM]'
267 
268  allocate( urban_tr(ia,ja) )
269  allocate( urban_tb(ia,ja) )
270  allocate( urban_tg(ia,ja) )
271  allocate( urban_tc(ia,ja) )
272  allocate( urban_qc(ia,ja) )
273  allocate( urban_uc(ia,ja) )
274  allocate( urban_trl(uks:uke,ia,ja) )
275  allocate( urban_tbl(uks:uke,ia,ja) )
276  allocate( urban_tgl(uks:uke,ia,ja) )
277  allocate( urban_rainr(ia,ja) )
278  allocate( urban_rainb(ia,ja) )
279  allocate( urban_raing(ia,ja) )
280  allocate( urban_roff(ia,ja) )
281  urban_tr(:,:) = undef
282  urban_tb(:,:) = undef
283  urban_tg(:,:) = undef
284  urban_tc(:,:) = undef
285  urban_qc(:,:) = undef
286  urban_uc(:,:) = undef
287  urban_trl(:,:,:) = undef
288  urban_tbl(:,:,:) = undef
289  urban_tgl(:,:,:) = undef
290  urban_rainr(:,:) = undef
291  urban_rainb(:,:) = undef
292  urban_raing(:,:) = undef
293  urban_roff(:,:) = undef
294 
295  allocate( urban_tr_t(ia,ja) )
296  allocate( urban_tb_t(ia,ja) )
297  allocate( urban_tg_t(ia,ja) )
298  allocate( urban_tc_t(ia,ja) )
299  allocate( urban_qc_t(ia,ja) )
300  allocate( urban_uc_t(ia,ja) )
301  allocate( urban_trl_t(uks:uke,ia,ja) )
302  allocate( urban_tbl_t(uks:uke,ia,ja) )
303  allocate( urban_tgl_t(uks:uke,ia,ja) )
304  allocate( urban_rainr_t(ia,ja) )
305  allocate( urban_rainb_t(ia,ja) )
306  allocate( urban_raing_t(ia,ja) )
307  allocate( urban_roff_t(ia,ja) )
308  urban_tr_t(:,:) = undef
309  urban_tb_t(:,:) = undef
310  urban_tg_t(:,:) = undef
311  urban_tc_t(:,:) = undef
312  urban_qc_t(:,:) = undef
313  urban_uc_t(:,:) = undef
314  urban_trl_t(:,:,:) = undef
315  urban_tbl_t(:,:,:) = undef
316  urban_tgl_t(:,:,:) = undef
317  urban_rainr_t(:,:) = undef
318  urban_rainb_t(:,:) = undef
319  urban_raing_t(:,:) = undef
320  urban_roff_t(:,:) = undef
321 
322  allocate( urban_sfc_temp(ia,ja) )
323  allocate( urban_sfc_albedo(ia,ja,2) )
324  allocate( urban_sflx_mw(ia,ja) )
325  allocate( urban_sflx_mu(ia,ja) )
326  allocate( urban_sflx_mv(ia,ja) )
327  allocate( urban_sflx_sh(ia,ja) )
328  allocate( urban_sflx_lh(ia,ja) )
329  allocate( urban_sflx_gh(ia,ja) )
330  allocate( urban_sflx_evap(ia,ja) )
331  urban_sfc_temp(:,:) = undef
332  urban_sfc_albedo(:,:,:) = undef
333  urban_sflx_mw(:,:) = undef
334  urban_sflx_mu(:,:) = undef
335  urban_sflx_mv(:,:) = undef
336  urban_sflx_sh(:,:) = undef
337  urban_sflx_lh(:,:) = undef
338  urban_sflx_gh(:,:) = undef
339  urban_sflx_evap(:,:) = undef
340 
341  allocate( urban_z0m(ia,ja) )
342  allocate( urban_z0h(ia,ja) )
343  allocate( urban_z0e(ia,ja) )
344  allocate( urban_u10(ia,ja) )
345  allocate( urban_v10(ia,ja) )
346  allocate( urban_t2(ia,ja) )
347  allocate( urban_q2(ia,ja) )
348  urban_z0m(:,:) = undef
349  urban_z0h(:,:) = undef
350  urban_z0e(:,:) = undef
351  urban_u10(:,:) = undef
352  urban_v10(:,:) = undef
353  urban_t2(:,:) = undef
354  urban_q2(:,:) = undef
355 
356  allocate( atmos_temp(ia,ja) )
357  allocate( atmos_pres(ia,ja) )
358  allocate( atmos_w(ia,ja) )
359  allocate( atmos_u(ia,ja) )
360  allocate( atmos_v(ia,ja) )
361  allocate( atmos_dens(ia,ja) )
362  allocate( atmos_qv(ia,ja) )
363  allocate( atmos_pbl(ia,ja) )
364  allocate( atmos_sfc_pres(ia,ja) )
365  allocate( atmos_sflx_lw(ia,ja,2) )
366  allocate( atmos_sflx_sw(ia,ja,2) )
367  allocate( atmos_cossza(ia,ja) )
368  allocate( atmos_sflx_prec(ia,ja) )
369  atmos_temp(:,:) = undef
370  atmos_pres(:,:) = undef
371  atmos_w(:,:) = undef
372  atmos_u(:,:) = undef
373  atmos_v(:,:) = undef
374  atmos_dens(:,:) = undef
375  atmos_qv(:,:) = undef
376  atmos_pbl(:,:) = undef
377  atmos_sfc_pres(:,:) = undef
378  atmos_sflx_lw(:,:,:) = undef
379  atmos_sflx_sw(:,:,:) = undef
380  atmos_cossza(:,:) = undef
381  atmos_sflx_prec(:,:) = undef
382 
383  !--- read namelist
384  rewind(io_fid_conf)
385  read(io_fid_conf,nml=param_urban_vars,iostat=ierr)
386  if( ierr < 0 ) then !--- missing
387  if( io_l ) write(io_fid_log,*) '*** Not found namelist. Default used.'
388  elseif( ierr > 0 ) then !--- fatal error
389  write(*,*) 'xxx Not appropriate names in namelist PARAM_URBAN_VARS. Check!'
390  call prc_mpistop
391  endif
392  if( io_nml ) write(io_fid_nml,nml=param_urban_vars)
393 
394  if( io_l ) write(io_fid_log,*)
395  if( io_l ) write(io_fid_log,*) '*** List of prognostic variables (URBAN) ***'
396  if( io_l ) write(io_fid_log,'(1x,A,A24,A,A48,A,A12,A)') &
397  '*** |', 'VARNAME ','|', &
398  'DESCRIPTION ', '[', 'UNIT ', ']'
399  do iv = 1, vmax
400  if( io_l ) write(io_fid_log,'(1x,A,I3,A,A24,A,A48,A,A12,A)') &
401  '*** NO.',iv,'|',var_name(iv),'|',var_desc(iv),'[',var_unit(iv),']'
402  enddo
403 
404  if( io_l ) write(io_fid_log,*)
405  if ( urban_restart_in_basename /= '' ) then
406  if( io_l ) write(io_fid_log,*) '*** Restart input? : YES, file = ', trim(urban_restart_in_basename)
407  if( io_l ) write(io_fid_log,*) '*** Add timelabel? : ', urban_restart_in_postfix_timelabel
408  else
409  if( io_l ) write(io_fid_log,*) '*** Restart input? : NO'
410  endif
411  if ( urban_restart_output &
412  .AND. urban_restart_out_basename /= '' ) then
413  if( io_l ) write(io_fid_log,*) '*** Restart output? : YES, file = ', trim(urban_restart_out_basename)
414  if( io_l ) write(io_fid_log,*) '*** Add timelabel? : ', urban_restart_out_postfix_timelabel
415  else
416  if( io_l ) write(io_fid_log,*) '*** Restart output? : NO'
417  urban_restart_output = .false.
418  endif
419 
420  return
421  end subroutine urban_vars_setup
422 
423  !-----------------------------------------------------------------------------
425  subroutine urban_vars_restart_open
426  use scale_time, only: &
428  use scale_fileio, only: &
429  fileio_open, &
430  fileio_check_coordinates
431  use mod_urban_admin, only: &
432  urban_sw
433  implicit none
434 
435  character(len=19) :: timelabel
436  character(len=H_LONG) :: basename
437  !---------------------------------------------------------------------------
438 
439  if( io_l ) write(io_fid_log,*)
440  if( io_l ) write(io_fid_log,*) '*** Open restart file (URBAN) ***'
441 
442  if ( urban_sw .and. urban_restart_in_basename /= '' ) then
443 
445  call time_gettimelabel( timelabel )
446  basename = trim(urban_restart_in_basename)//'_'//trim(timelabel)
447  else
448  basename = trim(urban_restart_in_basename)
449  endif
450 
451  if( io_l ) write(io_fid_log,*) '*** basename: ', trim(basename)
452 
453  call fileio_open( restart_fid, & ! [OUT]
454  basename ) ! [IN]
455 
456  if ( urban_restart_in_check_coordinates ) then
457  call fileio_check_coordinates( restart_fid, urban=.true. )
458  end if
459 
460  else
461  if( io_l ) write(io_fid_log,*) '*** restart file for urban is not specified.'
462  endif
463 
464  return
465  end subroutine urban_vars_restart_open
466 
467  !-----------------------------------------------------------------------------
469  subroutine urban_vars_restart_read
470  use scale_fileio, only: &
471  fileio_read, &
473  implicit none
474  !---------------------------------------------------------------------------
475 
476  if ( restart_fid /= -1 ) then
477  if( io_l ) write(io_fid_log,*)
478  if( io_l ) write(io_fid_log,*) '*** Read from restart file (URBAN) ***'
479 
480  call fileio_read( urban_tr(:,:), & ! [OUT]
481  restart_fid, var_name(i_tr), 'XY', step=1 ) ! [IN]
482  call fileio_read( urban_tb(:,:), & ! [OUT]
483  restart_fid, var_name(i_tb), 'XY', step=1 ) ! [IN]
484  call fileio_read( urban_tg(:,:), & ! [OUT]
485  restart_fid, var_name(i_tg), 'XY', step=1 ) ! [IN]
486  call fileio_read( urban_tc(:,:), & ! [OUT]
487  restart_fid, var_name(i_tc), 'XY', step=1 ) ! [IN]
488  call fileio_read( urban_qc(:,:), & ! [OUT]
489  restart_fid, var_name(i_qc), 'XY', step=1 ) ! [IN]
490  call fileio_read( urban_uc(:,:), & ! [OUT]
491  restart_fid, var_name(i_uc), 'XY', step=1 ) ! [IN]
492 
493  call fileio_read( urban_trl(:,:,:), & ! [OUT]
494  restart_fid, var_name(i_trl), 'Urban', step=1 ) ! [IN]
495  call fileio_read( urban_tbl(:,:,:), & ! [OUT]
496  restart_fid, var_name(i_tbl), 'Urban', step=1 ) ! [IN]
497  call fileio_read( urban_tgl(:,:,:), & ! [OUT]
498  restart_fid, var_name(i_tgl), 'Urban', step=1 ) ! [IN]
499 
500  call fileio_read( urban_rainr(:,:), & ! [OUT]
501  restart_fid, var_name(i_rainr), 'XY', step=1 ) ! [IN]
502  call fileio_read( urban_rainb(:,:), & ! [OUT]
503  restart_fid, var_name(i_rainb), 'XY', step=1 ) ! [IN]
504  call fileio_read( urban_raing(:,:), & ! [OUT]
505  restart_fid, var_name(i_raing), 'XY', step=1 ) ! [IN]
506  call fileio_read( urban_roff(:,:), & ! [OUT]
507  restart_fid, var_name(i_roff), 'XY', step=1 ) ! [IN]
508 
509  call fileio_read( urban_sfc_temp(:,:), & ! [OUT]
510  restart_fid, var_name(i_sfc_temp), 'XY', step=1 ) ! [IN]
511  call fileio_read( urban_sfc_albedo(:,:,i_lw), & ! [OUT]
512  restart_fid, var_name(i_alb_lw), 'XY', step=1 ) ! [IN]
513  call fileio_read( urban_sfc_albedo(:,:,i_sw), & ! [OUT]
514  restart_fid, var_name(i_alb_sw), 'XY', step=1 ) ! [IN]
515 
516  call fileio_read( urban_sflx_mw(:,:), & ! [OUT]
517  restart_fid, var_name(i_sflx_mw), 'XY', step=1 ) ! [IN]
518  call fileio_read( urban_sflx_mu(:,:), & ! [OUT]
519  restart_fid, var_name(i_sflx_mu), 'XY', step=1 ) ! [IN]
520  call fileio_read( urban_sflx_mv(:,:), & ! [OUT]
521  restart_fid, var_name(i_sflx_mv), 'XY', step=1 ) ! [IN]
522  call fileio_read( urban_sflx_sh(:,:), & ! [OUT]
523  restart_fid, var_name(i_sflx_sh), 'XY', step=1 ) ! [IN]
524  call fileio_read( urban_sflx_lh(:,:), & ! [OUT]
525  restart_fid, var_name(i_sflx_lh), 'XY', step=1 ) ! [IN]
526  call fileio_read( urban_sflx_gh(:,:), & ! [OUT]
527  restart_fid, var_name(i_sflx_gh), 'XY', step=1 ) ! [IN]
528  call fileio_read( urban_sflx_evap(:,:), & ! [OUT]
529  restart_fid, var_name(i_sflx_evap), 'XY', step=1 ) ! [IN]
530 
531  if( io_aggregate ) call fileio_flush( restart_fid ) ! commit all pending read requests
532 
533  call urban_vars_total
534  else
535  if( io_l ) write(io_fid_log,*) '*** invalid restart file ID for urban.'
536  endif
537 
538  return
539  end subroutine urban_vars_restart_read
540 
541  !-----------------------------------------------------------------------------
543  subroutine urban_vars_history
544  use scale_history, only: &
545  hist_in
546  implicit none
547  !---------------------------------------------------------------------------
548 
549  if ( urban_vars_checkrange ) then
550  call valcheck( urban_tr(is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_tr), &
551  __file__, __line__ )
552  call valcheck( urban_tb(is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_tb), &
553  __file__, __line__ )
554  call valcheck( urban_tg(is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_tg), &
555  __file__, __line__ )
556  call valcheck( urban_tc(is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_tc), &
557  __file__, __line__ )
558  call valcheck( urban_qc(is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_qc), &
559  __file__, __line__ )
560  call valcheck( urban_uc(is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_uc), &
561  __file__, __line__ )
562  call valcheck( urban_trl(:,is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_trl), &
563  __file__, __line__ )
564  call valcheck( urban_tbl(:,is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_tbl), &
565  __file__, __line__ )
566  call valcheck( urban_tgl(:,is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_tgl), &
567  __file__, __line__ )
568  call valcheck( urban_rainr(is:ie,js:je), -1000.0_rp, 1000.0_rp, var_name(i_rainr), &
569  __file__, __line__ )
570  call valcheck( urban_rainb(is:ie,js:je), -1000.0_rp, 1000.0_rp, var_name(i_rainb), &
571  __file__, __line__ )
572  call valcheck( urban_raing(is:ie,js:je), -1000.0_rp, 1000.0_rp, var_name(i_raing), &
573  __file__, __line__ )
574  call valcheck( urban_roff(is:ie,js:je), -1000.0_rp, 1000.0_rp, var_name(i_roff), &
575  __file__, __line__ )
576  call valcheck( urban_sfc_temp(is:ie,js:je), 0.0_rp, 1000.0_rp, var_name(i_sfc_temp), &
577  __file__, __line__ )
578  call valcheck( urban_sfc_albedo(is:ie,js:je,i_lw), 0.0_rp, 2.0_rp, var_name(i_alb_lw), &
579  __file__, __line__ )
580  call valcheck( urban_sfc_albedo(is:ie,js:je,i_sw), 0.0_rp, 2.0_rp, var_name(i_alb_sw), &
581  __file__, __line__ )
582  endif
583 
584  call hist_in( urban_tr(:,:), var_name(i_tr), var_desc(i_tr), var_unit(i_tr) )
585  call hist_in( urban_tb(:,:), var_name(i_tb), var_desc(i_tb), var_unit(i_tb) )
586  call hist_in( urban_tg(:,:), var_name(i_tg), var_desc(i_tg), var_unit(i_tg) )
587  call hist_in( urban_tc(:,:), var_name(i_tc), var_desc(i_tc), var_unit(i_tc) )
588  call hist_in( urban_qc(:,:), var_name(i_qc), var_desc(i_qc), var_unit(i_qc) )
589  call hist_in( urban_uc(:,:), var_name(i_uc), var_desc(i_uc), var_unit(i_uc) )
590 
591  call hist_in( urban_trl(:,:,:), var_name(i_trl), var_desc(i_trl), var_unit(i_trl), zdim='urban' )
592  call hist_in( urban_tbl(:,:,:), var_name(i_tbl), var_desc(i_tbl), var_unit(i_tbl), zdim='urban' )
593  call hist_in( urban_tgl(:,:,:), var_name(i_tgl), var_desc(i_tgl), var_unit(i_tgl), zdim='urban' )
594 
595  call hist_in( urban_rainr(:,:), var_name(i_rainr), var_desc(i_rainr), var_unit(i_rainr) )
596  call hist_in( urban_rainb(:,:), var_name(i_rainb), var_desc(i_rainb), var_unit(i_rainb) )
597  call hist_in( urban_raing(:,:), var_name(i_raing), var_desc(i_raing), var_unit(i_raing) )
598  call hist_in( urban_roff(:,:), var_name(i_roff), var_desc(i_roff), var_unit(i_roff) )
599 
600  call hist_in( urban_sfc_temp(:,:), var_name(i_sfc_temp), var_desc(i_sfc_temp), var_unit(i_sfc_temp) )
601  call hist_in( urban_sfc_albedo(:,:,i_lw), var_name(i_alb_lw), var_desc(i_alb_lw), var_unit(i_alb_lw) )
602  call hist_in( urban_sfc_albedo(:,:,i_sw), var_name(i_alb_sw), var_desc(i_alb_sw), var_unit(i_alb_sw) )
603 
604  call hist_in( urban_sflx_mw(:,:), var_name(i_sflx_mw), var_desc(i_sflx_mw), var_unit(i_sflx_mw) )
605  call hist_in( urban_sflx_mu(:,:), var_name(i_sflx_mu), var_desc(i_sflx_mu), var_unit(i_sflx_mu) )
606  call hist_in( urban_sflx_mv(:,:), var_name(i_sflx_mv), var_desc(i_sflx_mv), var_unit(i_sflx_mv) )
607  call hist_in( urban_sflx_sh(:,:), var_name(i_sflx_sh), var_desc(i_sflx_sh), var_unit(i_sflx_sh) )
608  call hist_in( urban_sflx_lh(:,:), var_name(i_sflx_lh), var_desc(i_sflx_lh), var_unit(i_sflx_lh) )
609  call hist_in( urban_sflx_gh(:,:), var_name(i_sflx_gh), var_desc(i_sflx_gh), var_unit(i_sflx_gh) )
610  call hist_in( urban_sflx_evap(:,:), var_name(i_sflx_evap), var_desc(i_sflx_evap), var_unit(i_sflx_evap) )
611 
612  return
613  end subroutine urban_vars_history
614 
615  !-----------------------------------------------------------------------------
617  subroutine urban_vars_total
618  use scale_rm_statistics, only: &
620  stat_total
621  implicit none
622 
623  real(RP) :: total
624  integer :: k
625  !---------------------------------------------------------------------------
626 
627  if ( statistics_checktotal ) then
628  call stat_total( total, urban_tr(:,:), var_name(i_tr) )
629  call stat_total( total, urban_tb(:,:), var_name(i_tb) )
630  call stat_total( total, urban_tg(:,:), var_name(i_tg) )
631  call stat_total( total, urban_tc(:,:), var_name(i_tc) )
632  call stat_total( total, urban_qc(:,:), var_name(i_qc) )
633  call stat_total( total, urban_uc(:,:), var_name(i_uc) )
634 
635  do k = uks, uke
636  call stat_total( total, urban_trl(k,:,:), var_name(i_trl) )
637  call stat_total( total, urban_tbl(k,:,:), var_name(i_tbl) )
638  call stat_total( total, urban_tgl(k,:,:), var_name(i_tgl) )
639  enddo
640 
641  call stat_total( total, urban_rainr(:,:), var_name(i_rainr) )
642  call stat_total( total, urban_rainb(:,:), var_name(i_rainb) )
643  call stat_total( total, urban_raing(:,:), var_name(i_raing) )
644  call stat_total( total, urban_roff(:,:), var_name(i_roff) )
645 
646  call stat_total( total, urban_sfc_temp(:,:), var_name(i_sfc_temp) )
647  call stat_total( total, urban_sfc_albedo(:,:,i_lw), var_name(i_alb_lw) )
648  call stat_total( total, urban_sfc_albedo(:,:,i_sw), var_name(i_alb_sw) )
649 
650  call stat_total( total, urban_sflx_mw(:,:), var_name(i_sflx_mw) )
651  call stat_total( total, urban_sflx_mu(:,:), var_name(i_sflx_mu) )
652  call stat_total( total, urban_sflx_mv(:,:), var_name(i_sflx_mv) )
653  call stat_total( total, urban_sflx_sh(:,:), var_name(i_sflx_sh) )
654  call stat_total( total, urban_sflx_lh(:,:), var_name(i_sflx_lh) )
655  call stat_total( total, urban_sflx_gh(:,:), var_name(i_sflx_gh) )
656  call stat_total( total, urban_sflx_evap(:,:), var_name(i_sflx_evap) )
657 
658  endif
659 
660  return
661  end subroutine urban_vars_total
662 
663  !-----------------------------------------------------------------------------
665  subroutine urban_vars_external_in( &
666  URBAN_TC_in, &
667  URBAN_QC_in, &
668  URBAN_UC_in, &
669  URBAN_SFC_TEMP_in, &
670  URBAN_SFC_albedo_in )
671  implicit none
672 
673  real(RP), intent(in) :: urban_tc_in (ia,ja)
674  real(RP), intent(in) :: urban_qc_in (ia,ja)
675  real(RP), intent(in) :: urban_uc_in (ia,ja)
676  real(RP), intent(in) :: urban_sfc_temp_in (ia,ja)
677  real(RP), intent(in) :: urban_sfc_albedo_in(ia,ja,2)
678 
679  integer :: k
680  !---------------------------------------------------------------------------
681 
682  if( io_l ) write(io_fid_log,*)
683  if( io_l ) write(io_fid_log,*) '*** External Input (coupler) ***'
684 
685  urban_tr(:,:) = urban_sfc_temp_in(:,:)
686  urban_tb(:,:) = urban_sfc_temp_in(:,:)
687  urban_tg(:,:) = urban_sfc_temp_in(:,:)
688 
689  urban_tc(:,:) = urban_tc_in(:,:)
690  urban_qc(:,:) = urban_qc_in(:,:)
691  urban_uc(:,:) = urban_uc_in(:,:)
692 
693  do k = uks, uke
694  urban_trl(k,:,:) = urban_sfc_temp_in(:,:)
695  urban_tbl(k,:,:) = urban_sfc_temp_in(:,:)
696  urban_tgl(k,:,:) = urban_sfc_temp_in(:,:)
697  end do
698 
699  urban_rainr(:,:) = 0.0_rp
700  urban_rainb(:,:) = 0.0_rp
701  urban_raing(:,:) = 0.0_rp
702  urban_roff(:,:) = 0.0_rp
703 
704  urban_sfc_temp(:,:) = urban_sfc_temp_in(:,:)
705  urban_sfc_albedo(:,:,:) = urban_sfc_albedo_in(:,:,:)
706 
707  urban_z0m(:,:) = 2.0_rp ! tentative, will be replace in urban scheme
708  urban_z0h(:,:) = 0.2_rp ! tentative, will be replace in urban scheme
709  urban_z0e(:,:) = 0.2_rp ! tentative, will be replace in urban scheme
710  urban_sflx_mw(:,:) = 0.0_rp
711  urban_sflx_mu(:,:) = 0.0_rp
712  urban_sflx_mv(:,:) = 0.0_rp
713  urban_sflx_sh(:,:) = 0.0_rp
714  urban_sflx_lh(:,:) = 0.0_rp
715  urban_sflx_gh(:,:) = 0.0_rp
716  urban_sflx_evap(:,:) = 0.0_rp
717 
718  call urban_vars_total
719 
720  return
721  end subroutine urban_vars_external_in
722 
723  !-----------------------------------------------------------------------------
725  subroutine urban_vars_restart_create
726  use scale_time, only: &
728  use scale_fileio, only: &
730  use mod_urban_admin, only: &
731  urban_sw
732  implicit none
733 
734  character(len=19) :: timelabel
735  character(len=H_LONG) :: basename
736  !---------------------------------------------------------------------------
737 
738  if ( urban_sw .and. urban_restart_out_basename /= '' ) then
739 
740  if( io_l ) write(io_fid_log,*)
741  if( io_l ) write(io_fid_log,*) '*** Create restart file (URBAN) ***'
742 
744  call time_gettimelabel( timelabel )
745  basename = trim(urban_restart_out_basename)//'_'//trim(timelabel)
746  else
747  basename = trim(urban_restart_out_basename)
748  endif
749 
750  if( io_l ) write(io_fid_log,*) '*** basename: ', trim(basename)
751 
752  call fileio_create( restart_fid, & ! [OUT]
754 
755  endif
756 
757  return
758  end subroutine urban_vars_restart_create
759 
760  !-----------------------------------------------------------------------------
762  subroutine urban_vars_restart_enddef
763  use scale_fileio, only: &
765  implicit none
766 
767  if ( restart_fid /= -1 ) then
768  call fileio_enddef( restart_fid ) ! [IN]
769  endif
770 
771  return
772  end subroutine urban_vars_restart_enddef
773 
774  !-----------------------------------------------------------------------------
776  subroutine urban_vars_restart_close
777  use scale_fileio, only: &
779  implicit none
780  !---------------------------------------------------------------------------
781 
782  if ( restart_fid /= -1 ) then
783  if( io_l ) write(io_fid_log,*)
784  if( io_l ) write(io_fid_log,*) '*** Close restart file (URBAN) ***'
785 
786  call fileio_close( restart_fid ) ! [IN]
787 
788  restart_fid = -1
789  endif
790 
791  return
792  end subroutine urban_vars_restart_close
793 
794  !-----------------------------------------------------------------------------
796  subroutine urban_vars_restart_def_var
797  use scale_fileio, only: &
799  implicit none
800  !---------------------------------------------------------------------------
801 
802  if ( restart_fid /= -1 ) then
803 
804  call fileio_def_var( restart_fid, var_id(i_tr), var_name(i_tr), var_desc(i_tr), &
805  var_unit(i_tr), 'XY', urban_restart_out_dtype )
806  call fileio_def_var( restart_fid, var_id(i_tb), var_name(i_tb), var_desc(i_tb), &
807  var_unit(i_tb), 'XY', urban_restart_out_dtype )
808  call fileio_def_var( restart_fid, var_id(i_tg), var_name(i_tg), var_desc(i_tg), &
809  var_unit(i_tg), 'XY', urban_restart_out_dtype )
810  call fileio_def_var( restart_fid, var_id(i_tc), var_name(i_tc), var_desc(i_tc), &
811  var_unit(i_tc), 'XY', urban_restart_out_dtype )
812  call fileio_def_var( restart_fid, var_id(i_qc), var_name(i_qc), var_desc(i_qc), &
813  var_unit(i_qc), 'XY', urban_restart_out_dtype )
814  call fileio_def_var( restart_fid, var_id(i_uc), var_name(i_uc), var_desc(i_uc), &
815  var_unit(i_uc), 'XY', urban_restart_out_dtype )
816 
817  call fileio_def_var( restart_fid, var_id(i_trl), var_name(i_trl), var_desc(i_trl), &
818  var_unit(i_trl), 'Urban', urban_restart_out_dtype )
819  call fileio_def_var( restart_fid, var_id(i_tbl), var_name(i_tbl), var_desc(i_tbl), &
820  var_unit(i_tbl), 'Urban', urban_restart_out_dtype )
821  call fileio_def_var( restart_fid, var_id(i_tgl), var_name(i_tgl), var_desc(i_tgl), &
822  var_unit(i_tgl), 'Urban', urban_restart_out_dtype )
823 
824  call fileio_def_var( restart_fid, var_id(i_rainr), var_name(i_rainr), var_desc(i_rainr), &
825  var_unit(i_rainr), 'XY', urban_restart_out_dtype )
826  call fileio_def_var( restart_fid, var_id(i_rainb), var_name(i_rainb), var_desc(i_rainb), &
827  var_unit(i_rainb), 'XY', urban_restart_out_dtype )
828  call fileio_def_var( restart_fid, var_id(i_raing), var_name(i_raing), var_desc(i_raing), &
829  var_unit(i_raing), 'XY', urban_restart_out_dtype )
830  call fileio_def_var( restart_fid, var_id(i_roff), var_name(i_roff), var_desc(i_roff), &
831  var_unit(i_roff), 'XY', urban_restart_out_dtype )
832 
833  call fileio_def_var( restart_fid, var_id(i_sfc_temp), var_name(i_sfc_temp), var_desc(i_sfc_temp), &
834  var_unit(i_sfc_temp), 'XY', urban_restart_out_dtype )
835  call fileio_def_var( restart_fid, var_id(i_alb_lw), var_name(i_alb_lw), var_desc(i_alb_lw), &
836  var_unit(i_alb_lw), 'XY', urban_restart_out_dtype )
837  call fileio_def_var( restart_fid, var_id(i_alb_sw), var_name(i_alb_sw), var_desc(i_alb_sw), &
838  var_unit(i_alb_sw), 'XY', urban_restart_out_dtype )
839 
840  call fileio_def_var( restart_fid, var_id(i_sflx_mw), var_name(i_sflx_mw), var_desc(i_sflx_mw), &
841  var_unit(i_sflx_mw), 'XY', urban_restart_out_dtype )
842  call fileio_def_var( restart_fid, var_id(i_sflx_mu), var_name(i_sflx_mu), var_desc(i_sflx_mu), &
843  var_unit(i_sflx_mu), 'XY', urban_restart_out_dtype )
844  call fileio_def_var( restart_fid, var_id(i_sflx_mv), var_name(i_sflx_mv), var_desc(i_sflx_mv), &
845  var_unit(i_sflx_mv), 'XY', urban_restart_out_dtype )
846  call fileio_def_var( restart_fid, var_id(i_sflx_sh), var_name(i_sflx_sh), var_desc(i_sflx_sh), &
847  var_unit(i_sflx_sh), 'XY', urban_restart_out_dtype )
848  call fileio_def_var( restart_fid, var_id(i_sflx_lh), var_name(i_sflx_lh), var_desc(i_sflx_lh), &
849  var_unit(i_sflx_lh), 'XY', urban_restart_out_dtype )
850  call fileio_def_var( restart_fid, var_id(i_sflx_gh), var_name(i_sflx_gh), var_desc(i_sflx_gh), &
851  var_unit(i_sflx_gh), 'XY', urban_restart_out_dtype )
852  call fileio_def_var( restart_fid, var_id(i_sflx_evap), var_name(i_sflx_evap), var_desc(i_sflx_evap), &
853  var_unit(i_sflx_evap), 'XY', urban_restart_out_dtype )
854 
855  endif
856 
857  return
858  end subroutine urban_vars_restart_def_var
859 
860  !-----------------------------------------------------------------------------
862  subroutine urban_vars_restart_write
863  use scale_fileio, only: &
864  fileio_write_var
865  implicit none
866  !---------------------------------------------------------------------------
867 
868  if ( restart_fid /= -1 ) then
869 
870  call urban_vars_total
871 
872  call fileio_write_var( restart_fid, var_id(i_tr), urban_tr(:,:), & ! [IN]
873  var_name(i_tr), 'XY', nohalo=.true. ) ! [IN]
874  call fileio_write_var( restart_fid, var_id(i_tb), urban_tb(:,:), & ! [IN]
875  var_name(i_tb), 'XY', nohalo=.true. ) ! [IN]
876  call fileio_write_var( restart_fid, var_id(i_tg), urban_tg(:,:), & ! [IN]
877  var_name(i_tg), 'XY', nohalo=.true. ) ! [IN]
878  call fileio_write_var( restart_fid, var_id(i_tc), urban_tc(:,:), & ! [IN]
879  var_name(i_tc), 'XY', nohalo=.true. ) ! [IN]
880  call fileio_write_var( restart_fid, var_id(i_qc), urban_qc(:,:), & ! [IN]
881  var_name(i_qc), 'XY', nohalo=.true. ) ! [IN]
882  call fileio_write_var( restart_fid, var_id(i_uc), urban_uc(:,:), & ! [IN]
883  var_name(i_uc), 'XY', nohalo=.true. ) ! [IN]
884 
885  call fileio_write_var( restart_fid, var_id(i_trl), urban_trl(:,:,:), & ! [IN]
886  var_name(i_trl), 'Urban', nohalo=.true. ) ! [IN]
887  call fileio_write_var( restart_fid, var_id(i_tbl), urban_tbl(:,:,:), & ! [IN]
888  var_name(i_tbl), 'Urban', nohalo=.true. ) ! [IN]
889  call fileio_write_var( restart_fid, var_id(i_tgl), urban_tgl(:,:,:), & ! [IN]
890  var_name(i_tgl), 'Urban', nohalo=.true. ) ! [IN]
891 
892  call fileio_write_var( restart_fid, var_id(i_rainr), urban_rainr(:,:), & ! [IN]
893  var_name(i_rainr), 'XY', nohalo=.true. ) ! [IN]
894  call fileio_write_var( restart_fid, var_id(i_rainb), urban_rainb(:,:), & ! [IN]
895  var_name(i_rainb), 'XY', nohalo=.true. ) ! [IN]
896  call fileio_write_var( restart_fid, var_id(i_raing), urban_raing(:,:), & ! [IN]
897  var_name(i_raing), 'XY', nohalo=.true. ) ! [IN]
898  call fileio_write_var( restart_fid, var_id(i_roff), urban_roff(:,:), & ! [IN]
899  var_name(i_roff), 'XY', nohalo=.true. ) ! [IN]
900 
901  call fileio_write_var( restart_fid, var_id(i_sfc_temp), urban_sfc_temp(:,:), & ! [IN]
902  var_name(i_sfc_temp), 'XY', nohalo=.true. ) ! [IN]
903  call fileio_write_var( restart_fid, var_id(i_alb_lw), urban_sfc_albedo(:,:,i_lw), & ! [IN]
904  var_name(i_alb_lw), 'XY', nohalo=.true. ) ! [IN]
905  call fileio_write_var( restart_fid, var_id(i_alb_sw), urban_sfc_albedo(:,:,i_sw), & ! [IN]
906  var_name(i_alb_sw), 'XY', nohalo=.true. ) ! [IN]
907 
908  call fileio_write_var( restart_fid, var_id(i_sflx_mw), urban_sflx_mw(:,:), & ! [IN]
909  var_name(i_sflx_mw), 'XY', nohalo=.true. ) ! [IN]
910  call fileio_write_var( restart_fid, var_id(i_sflx_mu), urban_sflx_mu(:,:), & ! [IN]
911  var_name(i_sflx_mu), 'XY', nohalo=.true. ) ! [IN]
912  call fileio_write_var( restart_fid, var_id(i_sflx_mv), urban_sflx_mv(:,:), & ! [IN]
913  var_name(i_sflx_mv), 'XY', nohalo=.true. ) ! [IN]
914  call fileio_write_var( restart_fid, var_id(i_sflx_sh), urban_sflx_sh(:,:), & ! [IN]
915  var_name(i_sflx_sh), 'XY', nohalo=.true. ) ! [IN]
916  call fileio_write_var( restart_fid, var_id(i_sflx_lh), urban_sflx_lh(:,:), & ! [IN]
917  var_name(i_sflx_lh), 'XY', nohalo=.true. ) ! [IN]
918  call fileio_write_var( restart_fid, var_id(i_sflx_gh), urban_sflx_gh(:,:), & ! [IN]
919  var_name(i_sflx_gh), 'XY', nohalo=.true. ) ! [IN]
920  call fileio_write_var( restart_fid, var_id(i_sflx_evap), urban_sflx_evap(:,:), & ! [IN]
921  var_name(i_sflx_evap), 'XY', nohalo=.true. ) ! [IN]
922 
923  endif
924 
925  return
926  end subroutine urban_vars_restart_write
927 
928 end module mod_urban_vars
real(rp), dimension(:,:), allocatable, public urban_qc_t
integer, public is
start point of inner domain: x, local
module DEBUG
Definition: scale_debug.F90:13
logical, public statistics_checktotal
calc&report variable totals to logfile?
logical, public urban_sw
integer, public je
end point of inner domain: y, local
integer, public const_i_lw
long-wave radiation index
Definition: scale_const.F90:95
subroutine, public prc_mpistop
Abort MPI.
real(rp), dimension(:,:), allocatable, public urban_qc
real(rp), dimension(:,:), allocatable, public urban_rainr_t
real(rp), dimension(:,:,:), allocatable, public urban_trl_t
real(rp), dimension(:,:), allocatable, public urban_tg_t
real(rp), dimension(:,:), allocatable, public urban_u10
subroutine, public urban_vars_restart_create
Create urban restart file.
logical, public io_l
output log or not? (this process)
Definition: scale_stdio.F90:61
real(rp), dimension(:,:), allocatable, public urban_v10
real(rp), dimension(:,:), allocatable, public urban_raing_t
real(rp), dimension(:,:), allocatable, public urban_z0e
real(rp), dimension(:,:), allocatable, public urban_sflx_mu
subroutine, public fileio_flush(fid)
Flush all pending requests to a netCDF file (PnetCDF only)
subroutine, public urban_vars_restart_enddef
Exit netCDF define mode.
real(rp), dimension(:,:), allocatable, public urban_sflx_evap
real(rp), dimension(:,:), allocatable, public urban_z0m
subroutine, public urban_vars_total
Budget monitor for urban.
subroutine, public urban_vars_restart_read
Read urban restart.
module STDIO
Definition: scale_stdio.F90:12
real(rp), dimension(:,:), allocatable, public urban_tb_t
real(rp), dimension(:,:), allocatable, public urban_t2
subroutine, public urban_vars_history
History output set for urban variables.
real(rp), dimension(:,:), allocatable, public urban_tb
logical, public urban_restart_out_postfix_timelabel
Add timelabel to the basename of output file?
subroutine, public urban_vars_external_in(URBAN_TC_in, URBAN_QC_in, URBAN_UC_in, URBAN_SFC_TEMP_in, URBAN_SFC_albedo_in)
Input from External I/O.
module URBAN Variables
real(rp), dimension(:,:), allocatable, public urban_raing
module FILE I/O (netcdf)
real(rp), dimension(:,:), allocatable, public urban_uc
real(rp), dimension(:,:), allocatable, public atmos_sflx_prec
real(rp), public const_undef
Definition: scale_const.F90:43
module Statistics
character(len=h_short), public urban_restart_out_dtype
REAL4 or REAL8.
subroutine, public urban_vars_restart_write
Write urban restart.
module grid index
subroutine, public urban_vars_restart_close
Close restart file.
real(rp), dimension(:,:), allocatable, public atmos_pbl
logical, public io_nml
output log or not? (for namelist, this process)
Definition: scale_stdio.F90:62
real(rp), dimension(:,:), allocatable, public urban_sflx_sh
character(len=h_long), public urban_restart_out_basename
Basename of the output file.
real(rp), dimension(:,:), allocatable, public urban_tr
integer, public ia
of whole cells: x, local, with HALO
real(rp), dimension(:,:,:), allocatable, public urban_tgl
subroutine, public time_gettimelabel(timelabel)
generate time label
Definition: scale_time.F90:90
real(rp), dimension(:,:), allocatable, public atmos_qv
real(rp), dimension(:,:), allocatable, public atmos_sfc_pres
real(rp), dimension(:,:), allocatable, public atmos_cossza
real(rp), dimension(:,:), allocatable, public urban_uc_t
real(rp), dimension(:,:), allocatable, public urban_z0h
subroutine, public fileio_create(fid, basename, title, datatype, date, subsec, append, nozcoord)
Create/open a netCDF file.
real(rp), dimension(:,:,:), allocatable, public atmos_sflx_sw
real(rp), dimension(:,:), allocatable, public atmos_v
integer, public js
start point of inner domain: y, local
module TIME
Definition: scale_time.F90:15
real(rp), dimension(:,:), allocatable, public urban_roff
module PROCESS
real(rp), dimension(:,:), allocatable, public atmos_dens
subroutine, public urban_vars_setup
Setup.
module CONSTANT
Definition: scale_const.F90:14
real(rp), dimension(:,:,:), allocatable, public urban_sfc_albedo
real(rp), dimension(:,:), allocatable, public urban_sflx_lh
real(rp), dimension(:,:), allocatable, public urban_tc
real(rp), dimension(:,:), allocatable, public atmos_pres
logical, public urban_restart_output
Output restart file?
subroutine, public fileio_enddef(fid)
Exit netCDF file define mode.
real(rp), dimension(:,:), allocatable, public urban_rainr
module profiler
Definition: scale_prof.F90:10
integer, public ie
end point of inner domain: x, local
subroutine, public urban_vars_restart_open
Open urban restart file for read.
logical, public urban_restart_in_postfix_timelabel
Add timelabel to the basename of input file?
logical, public io_aggregate
do parallel I/O through PnetCDF
Definition: scale_stdio.F90:66
real(rp), dimension(:,:), allocatable, public atmos_temp
subroutine, public fileio_open(fid, basename)
open a netCDF file for read
integer, public const_i_sw
short-wave radiation index
Definition: scale_const.F90:96
module PRECISION
subroutine, public fileio_def_var(fid, vid, varname, desc, unit, axistype, datatype, timeintv, nsteps)
Define a variable to file.
module HISTORY
real(rp), dimension(:,:), allocatable, public urban_q2
real(rp), dimension(:,:), allocatable, public urban_tg
real(rp), dimension(:,:), allocatable, public atmos_u
subroutine, public urban_vars_restart_def_var
Define urban variables in restart file.
real(rp), dimension(:,:), allocatable, public urban_sfc_temp
subroutine, public fileio_close(fid)
Close a netCDF file.
real(rp), dimension(:,:,:), allocatable, public urban_trl
integer, public io_fid_conf
Config file ID.
Definition: scale_stdio.F90:55
real(rp), dimension(:,:), allocatable, public urban_rainb_t
real(rp), dimension(:,:,:), allocatable, public atmos_sflx_lw
integer, public io_fid_log
Log file ID.
Definition: scale_stdio.F90:56
module Urban admin
real(rp), dimension(:,:,:), allocatable, public urban_tbl
real(rp), dimension(:,:), allocatable, public urban_tr_t
real(rp), dimension(:,:,:), allocatable, public urban_tgl_t
real(rp), dimension(:,:), allocatable, public urban_sflx_gh
real(rp), dimension(:,:), allocatable, public urban_sflx_mv
real(rp), dimension(:,:), allocatable, public atmos_w
integer, public io_fid_nml
Log file ID (only for output namelist)
Definition: scale_stdio.F90:57
real(rp), dimension(:,:), allocatable, public urban_rainb
real(rp), dimension(:,:), allocatable, public urban_tc_t
character(len=h_long), public urban_restart_in_basename
Basename of the input file.
real(rp), dimension(:,:), allocatable, public urban_roff_t
real(rp), dimension(:,:,:), allocatable, public urban_tbl_t
real(rp), dimension(:,:), allocatable, public urban_sflx_mw
character(len=h_mid), public urban_restart_out_title
Title of the output file.
module urban grid index
integer, public ja
of whole cells: y, local, with HALO