SCALE-RM
mod_rm_prep.F90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
12 !-------------------------------------------------------------------------------
13 #include "scalelib.h"
15  !-----------------------------------------------------------------------------
16  !
17  !++ used modules
18  !
19  use scale_precision
20  use scale_io
22  use scale_prof
23  !-----------------------------------------------------------------------------
24  implicit none
25  private
26  !-----------------------------------------------------------------------------
27  !
28  !++ included parameters
29  !
30 #include "scale-rm.h"
31  !-----------------------------------------------------------------------------
32  !
33  !++ Public procedure
34  !
35  public :: rm_prep
36 
37  !-----------------------------------------------------------------------------
38  !
39  !++ Public parameters & variables
40  !
41  !-----------------------------------------------------------------------------
42  !
43  !++ Private procedure
44  !
45  !-----------------------------------------------------------------------------
46  !
47  !++ Private parameters & variables
48  !
49  character(len=H_MID), private, parameter :: MODELNAME = "SCALE-RM ver. "//version
50 
51  !-----------------------------------------------------------------------------
52 contains
53  !-----------------------------------------------------------------------------
55  subroutine rm_prep( &
56  comm_world, &
57  cnf_fname, &
58  path, &
59  add_path )
60  use scale_file, only: &
61  file_finalize, &
63  use scale_prc, only: &
65  use scale_prc_cartesc, only: &
68  use scale_const, only: &
69  tem00 => const_tem00, &
70  lhv0 => const_lhv0, &
71  lhf0 => const_lhf0, &
72  rdry => const_rdry, &
73  rvap => const_rvap, &
74  cl => const_cl, &
75  ci => const_ci, &
76  karman => const_karman, &
77  grav => const_grav, &
78  stb => const_stb, &
79  const_setup, &
81  use scale_atmos_solarins, only: &
82  solarins_constant => atmos_solarins_constant
83  use scale_calendar, only: &
85  use scale_random, only: &
86  random_setup, &
88  use scale_tracer, only: &
92  ia, ja
93  use scale_atmos_grid_cartesc, only: &
96  domain_center_y => atmos_grid_cartesc_domain_center_y, &
97  cy => atmos_grid_cartesc_cy, &
98  dx, dy
99  use scale_comm_cartesc_nest, only: &
102  use scale_ocean_grid_cartesc_index, only: &
104  use scale_ocean_grid_cartesc, only: &
107  use scale_ocean_grid_cartesc_real, only: &
111  use scale_land_grid_cartesc_index, only: &
113  use scale_land_grid_cartesc, only: &
116  use scale_land_grid_cartesc_real, only: &
120  use scale_urban_grid_cartesc_index, only: &
122  use scale_urban_grid_cartesc, only: &
125  use scale_urban_grid_cartesc_real, only: &
129  use scale_file_cartesc, only: &
132  use scale_file_grads, only: &
134  use scale_comm_cartesc, only: &
135  comm_setup, &
136  comm_regist, &
138  use scale_topography, only: &
142  use scale_landuse, only: &
143  landuse_setup, &
144  landuse_write, &
146  use scale_atmos_grid_cartesc_real, only: &
150  real_lat => atmos_grid_cartesc_real_lat, &
156  use scale_statistics, only: &
158  use scale_coriolis, only: &
159  coriolis_setup, &
161  use scale_atmos_hydrostatic, only: &
163  use scale_atmos_thermodyn, only: &
165  use scale_atmos_hydrometeor, only: &
168  use scale_atmos_saturation, only: &
170  use scale_bulkflux, only: &
172  use mod_atmos_driver, only: &
174  use mod_admin_restart, only: &
176  use mod_admin_versioncheck, only: &
178  use mod_admin_time, only: &
180  use mod_atmos_admin, only: &
183  atmos_do
184  use mod_atmos_vars, only: &
187  use mod_atmos_phy_mp_vars, only: &
188  qa_mp
189  use mod_ocean_admin, only: &
191  ocean_do
192  use mod_ocean_vars, only: &
195  use mod_land_admin, only: &
197  land_do
198  use mod_land_vars, only: &
199  land_vars_setup, &
201  use mod_urban_admin, only: &
203  urban_do, &
204  urban_land
205  use mod_urban_vars, only: &
208  use mod_lake_admin, only: &
210  lake_do
211  use mod_cpl_admin, only: &
212  cpl_admin_setup, &
213  cpl_sw
214  use mod_cpl_vars, only: &
215  cpl_vars_setup, &
217  use mod_convert, only: &
218  convert_setup, &
219  convert
220  use mod_mktopo, only: &
221  mktopo_setup, &
222  mktopo
223  use mod_mkinit, only: &
224  mkinit_setup, &
225  mkinit_finalize, &
226  mkinit
227  use mod_user, only: &
229  user_setup, &
230  user_finalize, &
232  use mod_atmos_driver, only: &
236  use mod_ocean_driver, only: &
238  use mod_land_driver, only: &
240  use mod_urban_driver, only: &
242  use mod_admin_restart, only: &
244  use mod_admin_time, only: &
249 #ifdef JMAPPLIB
250  use pp_print_parm, only: &
251  pp_print_parm_set_flg_out_msg
252  use pp_phys_const, only: &
253  pp_phys_const_set
254 #endif
255  implicit none
256 
257  integer, intent(in) :: comm_world
258  character(len=*), intent(in) :: cnf_fname
259  character(len=*), intent(in) :: path
260  logical, intent(in) :: add_path
261 
262  integer :: myrank
263  logical :: ismaster
264 
265  logical :: output
266 
267  integer :: id
268  !---------------------------------------------------------------------------
269 
270  !########## Initial setup ##########
271 
272  ! setup standard I/O
273  if ( add_path .and. path /= "" ) then
274  call io_setup( modelname, trim(path)//cnf_fname, prefix=path )
275  else
276  call io_setup( modelname, trim(path)//cnf_fname )
277  end if
278 
279  ! setup MPI
280  call prc_local_setup( comm_world, & ! [IN]
281  myrank, & ! [OUT]
282  ismaster ) ! [OUT]
283 
284  ! setup Log
285  call io_log_setup( myrank, ismaster )
286 
287  ! namelist compatibility check
288  call admin_versioncheck
289 
290  ! setup process
291  call prc_cartesc_setup
292 
293  ! setup PROF
294  call prof_setup
295 
296 
297  ! profiler start
298  call prof_setprefx('INIT')
299  call prof_rapstart('Initialize', 0)
300 
301 
302  ! setup constants
303  call const_setup
304 
305  ! setup calendar
306  call calendar_setup
307 
308  ! setup random number
309  call random_setup
310 
311  ! setup submodel administrator
312  call atmos_admin_setup
313  call ocean_admin_setup
314  call land_admin_setup
315  call urban_admin_setup
316  call lake_admin_setup
317  call cpl_admin_setup
318 
319  ! setup horizontal/vertical grid coordinates (cartesian,idealized)
320  if ( atmos_do ) then
323  end if
324 
325  if ( ocean_do ) then
328  end if
329 
330  if ( land_do ) then
333  end if
334 
335  if ( urban_do ) then
338  end if
339 
340  ! setup tracer index
342  call atmos_driver_tracer_setup
343  call user_tracer_setup
344 
345  ! setup file I/O
346  call file_cartesc_setup
347 
348  ! setup mpi communication
349  call comm_setup
350  call comm_regist( ka, ia, ja, ihalo, jhalo, id )
351 
352  ! setup topography
353  call topography_setup
354  ! setup land use category index/fraction
355  call landuse_setup( ocean_do, (.not. urban_land), lake_do )
356 
357  ! setup grid coordinates (real world)
362 
363  ! setup restart
364  call admin_restart_setup
365  ! setup time
366  call admin_time_setup( setup_timeintegration = .false. )
367  ! setup statistics
368  call statistics_setup
369 
370  ! setup nesting grid
372 
373  ! setup coriolis parameter
374  call coriolis_setup( ia, ja, real_lat(:,:), cy(:), domain_center_y )
375 
376  ! setup common tools
380 
381 #ifdef JMAPPLIB
382  call pp_print_parm_set_flg_out_msg( 0 )
383  call pp_phys_const_set( &
384  tkelvn_in = tem00, &
385  hlatnt_in = lhv0, &
386  hlf_in = lhf0, &
387  rd_in = rdry, &
388  rv_in = rvap, &
389  cwater_in = cl, &
390  cice_in = ci, &
391  vkman_in = karman, &
392  grav_in = grav, &
393  stb_in = stb, &
394  sc0_in = solarins_constant)
395 #endif
396 
397  call bulkflux_setup( sqrt(dx**2+dy**2) )
398 
399  ! setup variable container
400  if ( atmos_do ) call atmos_vars_setup
401  if ( ocean_do ) call ocean_vars_setup
402  if ( land_do ) call land_vars_setup
403  if ( urban_do ) call urban_vars_setup
404  if ( cpl_sw ) call cpl_vars_setup
405 
406  ! setup driver
407  if ( atmos_do ) call atmos_driver_setup( .true. )
408 
409  ! setup preprocess converter
410  call convert_setup
411 
412  ! setup mktopo
413  call mktopo_setup
414 
415  ! setup mkinit
416  call mkinit_setup
417 
418  ! setup mod_user
419  call user_setup
420 
421  call prof_rapend('Initialize',0)
422 
423  !########## main ##########
424 
425  call prof_setprefx('MAIN')
426  call prof_rapstart('Main_prep',0)
427 
428  ! execute preprocess
429  call prof_rapstart('Convert',1)
430  call convert
431  call prof_rapend ('Convert',1)
432 
433  ! execute mktopo
434  call prof_rapstart('MkTopo',1)
435  call mktopo
436  call prof_rapend ('MkTopo',1)
437 
438  ! re-setup
445 
446  ! execute mkinit
447  call prof_rapstart('MkInit',1)
448  call mkinit( output )
449  call user_mkinit
450  call prof_rapend ('MkInit',1)
451 
452 
453  ! output
454  call topography_write
455  call landuse_write
456 
457 
458  if ( output ) then
459  call prof_rapstart('MkInit_restart',1)
460 
461  ! setup surface condition
462  call ocean_surface_set( countup = .false. )
463  call land_surface_set ( countup = .false. )
464  call urban_surface_set( countup = .false. )
465  call atmos_surface_get
466 
467  ! output restart file
468  time_doocean_restart = .true.
469  time_doland_restart = .true.
470  time_dourban_restart = .true.
471  time_doatmos_restart = .true.
473 
474  call prof_rapend ('MkInit_restart',1)
475 
476  end if
477 
478  call prof_rapend('Main_prep',0)
479 
480  !########## Finalize ##########
481 
482  ! file I/O
483  call prof_rapstart('File', 1)
486  call file_close_all
487  call file_finalize
488  call prof_rapend ('File', 1)
489 
491 
492  ! finalize mkinit
493  call mkinit_finalize
494 
495  ! finalize atmosphere
496  if ( atmos_do ) call atmos_driver_finalize( .true. )
497 
498  ! finalize variable container
499  if ( atmos_do ) call atmos_vars_finalize
500  if ( ocean_do ) call ocean_vars_finalize
501  if ( land_do ) call land_vars_finalize
502  if ( urban_do ) call urban_vars_finalize
503  if ( cpl_sw ) call cpl_vars_finalize
504 
505  ! finalize coriolis parameter
506  call coriolis_finalize
507 
508  ! finalize nesting grid
510 
511  ! finalize grid coordinates (real world)
516 
517  ! finalize land use category index/fraction
518  call landuse_finalize
519 
520  ! finalize topography
522 
523  ! finalize communication
524  call comm_finalize
525 
526  ! user module
527  call user_finalize
528 
529  ! finalize tracer
531  call tracer_finalize
532 
533  ! finalize horizontal/vertical grid coordinates (cartesian, idealized)
538 
540 
541  call random_finalize
542 
543  call const_finalize
544 
545  call prof_rapreport
546 
547  ! finalize profiler
548  call prof_finalize
549 
550  ! finalize io
551  call io_finalize
552 
553  return
554  end subroutine rm_prep
555 
556 end module mod_rm_prep
module administrator for restart
subroutine, public admin_restart_write
Write data to restart files.
subroutine, public admin_restart_setup
Setup.
module ADMIN TIME
logical, public time_doocean_restart
execute ocean restart output in this step?
logical, public time_dourban_restart
execute urban restart output in this step?
subroutine, public admin_time_setup(setup_TimeIntegration)
Setup.
logical, public time_doatmos_restart
execute atmosphere restart output in this step?
logical, public time_doland_restart
execute land restart output in this step?
module ADMIN VERSIONCHECK
subroutine, public admin_versioncheck
Setup.
module ATMOS admin
logical, public atmos_do
character(len=h_short), public atmos_phy_mp_type
subroutine, public atmos_admin_setup
Setup.
module ATMOSPHERE driver
subroutine, public atmos_driver_tracer_setup
Tracer setup.
subroutine, public atmos_driver_setup(init)
Setup.
subroutine, public atmos_driver_finalize(init)
Finalize.
subroutine, public atmos_surface_get
Get surface boundary condition.
module Atmosphere / Physics Cloud Microphysics
module ATMOSPHERIC Variables
subroutine, public atmos_vars_finalize
finalize
subroutine, public atmos_vars_setup
Setup.
module CONVERT driver
Definition: mod_convert.F90:11
subroutine, public convert_setup
Setup.
Definition: mod_convert.F90:52
subroutine, public convert
Driver.
module Coupler admin
logical, public cpl_sw
subroutine, public cpl_admin_setup
Setup.
module COUPLER Variables
subroutine, public cpl_vars_setup
Setup.
subroutine, public cpl_vars_finalize
Finalize.
module Lake admin
subroutine, public lake_admin_setup
Setup.
logical, public lake_do
module Land admin
subroutine, public land_admin_setup
Setup.
logical, public land_do
module LAND driver
subroutine, public land_surface_set(countup)
Put surface boundary to other model.
module LAND Variables
subroutine, public land_vars_finalize
Finalize.
subroutine, public land_vars_setup
Setup.
module INITIAL
Definition: mod_mkinit.F90:12
subroutine, public mkinit_setup
Setup.
Definition: mod_mkinit.F90:210
subroutine, public mkinit(output)
Driver.
Definition: mod_mkinit.F90:379
subroutine, public mkinit_finalize
Finalize.
Definition: mod_mkinit.F90:343
module MKTOPO
Definition: mod_mktopo.F90:12
subroutine, public mktopo_setup
Setup.
Definition: mod_mktopo.F90:68
subroutine, public mktopo
Driver.
Definition: mod_mktopo.F90:112
module Ocean admin
logical, public ocean_do
subroutine, public ocean_admin_setup
Setup.
module OCEAN driver
subroutine, public ocean_surface_set(countup)
Put surface boundary to other model.
module OCEAN Variables
subroutine, public ocean_vars_finalize
Finalize.
subroutine, public ocean_vars_setup
Setup.
module SCALE-RM prep
Definition: mod_rm_prep.F90:14
subroutine, public rm_prep(comm_world, cnf_fname, path, add_path)
Setup.
Definition: mod_rm_prep.F90:60
module Urban admin
subroutine, public urban_admin_setup
Setup.
logical, public urban_do
logical, public urban_land
module URBAN driver
subroutine, public urban_surface_set(countup)
Set surface boundary to other model.
module URBAN Variables
subroutine, public urban_vars_finalize
Finalize.
subroutine, public urban_vars_setup
Setup.
module USER
Definition: mod_user.F90:12
subroutine, public user_setup
Setup before setup of other components.
Definition: mod_user.F90:84
subroutine, public user_finalize
Finalization.
Definition: mod_user.F90:117
subroutine, public user_tracer_setup
Config before setup of tracers.
Definition: mod_user.F90:55
subroutine, public user_mkinit
Make initial state.
Definition: mod_user.F90:126
module atmosphere / grid / cartesC index
subroutine, public atmos_grid_cartesc_index_setup(KMAX, IMAXG, JMAXG, IMAX, JMAX, KHALO, IHALO, JHALO, IBLOCK, JBLOCK)
setup index
module Atmosphere Grid CartesianC metirc
subroutine, public atmos_grid_cartesc_metric_finalize
Finalize.
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_mapf
map factor
subroutine, public atmos_grid_cartesc_metric_setup
Setup.
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_lat
latitude [rad,-pi,pi]
subroutine, public atmos_grid_cartesc_real_calc_areavol(MAPF)
Calc control area/volume.
subroutine, public atmos_grid_cartesc_real_finalize
Finalize.
subroutine, public atmos_grid_cartesc_real_setup
Setup.
subroutine, public atmos_grid_cartesc_real_calc_z
Convert Xi to Z coordinate.
module atmosphere / grid / cartesC
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cy
center coordinate [m]: y, local
subroutine, public atmos_grid_cartesc_setup(basename, aggregate)
Setup.
subroutine, public atmos_grid_cartesc_finalize
real(rp), public atmos_grid_cartesc_domain_center_y
center position of global domain [m]: y
module atmosphere / hydrometeor
subroutine, public atmos_hydrometeor_finalize
Finalize.
subroutine, public atmos_hydrometeor_setup
Setup.
module atmosphere / hydrostatic barance
subroutine, public atmos_hydrostatic_setup
Setup.
module atmosphere / saturation
subroutine, public atmos_saturation_setup
Setup.
module atmosphere / SOLARINS
real(rp), public atmos_solarins_constant
module atmosphere / thermodyn
subroutine, public atmos_thermodyn_setup
Setup.
module Surface bulk flux
subroutine, public bulkflux_setup(dx)
module CALENDAR
subroutine, public calendar_setup
Setup.
module Communication CartesianC nesting
subroutine, public comm_cartesc_nest_setup(QA_MP, MP_TYPE_in)
Setup.
subroutine, public comm_cartesc_nest_finalize
finalize
module COMMUNICATION
subroutine, public comm_finalize
Finalize.
subroutine, public comm_regist(KA, IA, JA, IHALO, JHALO, gid)
Regist grid.
subroutine, public comm_setup
Setup.
module CONSTANT
Definition: scale_const.F90:11
real(rp), parameter, public const_tem00
temperature reference (0C) [K]
Definition: scale_const.F90:99
real(rp), parameter, public const_rvap
specific gas constant (water vapor) [J/kg/K]
Definition: scale_const.F90:68
real(rp), parameter, public const_karman
von Karman constant
Definition: scale_const.F90:54
subroutine, public const_setup
Setup.
real(rp), public const_lhf0
latent heat of fusion at 0C [J/kg]
Definition: scale_const.F90:86
subroutine, public const_finalize
Finalize.
real(rp), parameter, public const_cl
specific heat (liquid water) [J/kg/K]
Definition: scale_const.F90:71
real(rp), parameter, public const_stb
Stefan-Boltzman constant [W/m2/K4].
Definition: scale_const.F90:53
real(rp), parameter, public const_ci
specific heat (ice) [J/kg/K]
Definition: scale_const.F90:72
real(rp), public const_grav
standard acceleration of gravity [m/s2]
Definition: scale_const.F90:49
real(rp), public const_rdry
specific gas constant (dry air) [J/kg/K]
Definition: scale_const.F90:59
real(rp), parameter, public const_lhv0
latent heat of vaporizaion at 0C [J/kg]
Definition: scale_const.F90:82
module Coriolis
subroutine, public coriolis_finalize
Finalize.
subroutine, public coriolis_setup(IA, JA, LAT, CY, DOMAIN_CENTER_Y)
Setup.
module file / cartesianC
subroutine, public file_cartesc_setup
Setup.
subroutine, public file_cartesc_finalize
deallocate buffers
module file_grads
subroutine, public file_grads_finalize
module file
Definition: scale_file.F90:15
subroutine, public file_close_all(skip_abort)
subroutine, public file_finalize
finalize
Definition: scale_file.F90:277
module STDIO
Definition: scale_io.F90:10
subroutine, public io_log_setup(myrank, is_master)
Setup LOG.
Definition: scale_io.F90:161
subroutine, public io_setup(APPNAME, conf_name, prefix, allow_noconf)
Setup.
Definition: scale_io.F90:99
subroutine, public io_finalize
Definition: scale_io.F90:334
module land / grid / cartesianC / index
subroutine, public land_grid_cartesc_index_setup
Setup.
module land / grid / cartesianC / real
subroutine, public land_grid_cartesc_real_finalize
Finalize.
subroutine, public land_grid_cartesc_real_setup
Setup real grid.
module land / grid / cartesianC
subroutine, public land_grid_cartesc_finalize
Finalize.
subroutine, public land_grid_cartesc_setup
Setup.
module LANDUSE
subroutine, public landuse_write
Write landuse data.
subroutine, public landuse_finalize
Finalize.
subroutine, public landuse_setup(OCEAN_do, URBAN_do, LAKE_do)
Setup.
module ocean / grid / cartesianC / index
subroutine, public ocean_grid_cartesc_index_setup
Setup.
module ocean / grid / cartesianC / real
subroutine, public ocean_grid_cartesc_real_finalize
Finalize.
subroutine, public ocean_grid_cartesc_real_setup
Setup area and volume.
module ocean / grid / cartesianC
subroutine, public ocean_grid_cartesc_setup
Setup.
subroutine, public ocean_grid_cartesc_finalize
Finalize.
module process / cartesC
subroutine, public prc_cartesc_setup
Setup Processor topology.
subroutine, public prc_cartesc_finalize
Setup Processor topology.
module PROCESS
Definition: scale_prc.F90:11
subroutine, public prc_local_setup(comm, myrank, ismaster)
Setup MPI in local communicator.
Definition: scale_prc.F90:229
module PRECISION
module profiler
Definition: scale_prof.F90:11
subroutine, public prof_rapreport
Report raptime.
Definition: scale_prof.F90:315
subroutine, public prof_rapend(rapname_base, level, disable_barrier)
Save raptime.
Definition: scale_prof.F90:246
subroutine, public prof_rapstart(rapname_base, level, disable_barrier)
Start raptime.
Definition: scale_prof.F90:174
subroutine, public prof_setup
Definition: scale_prof.F90:107
subroutine, public prof_finalize
Definition: scale_prof.F90:141
subroutine, public prof_setprefx(prefxname)
Definition: scale_prof.F90:160
module RANDOM
subroutine, public random_setup
Setup.
subroutine, public random_finalize
finalize
module Statistics
subroutine, public statistics_setup
Setup.
module TOPOGRAPHY
subroutine, public topography_setup
Setup.
subroutine, public topography_write
Write topography.
subroutine, public topography_finalize
finalize
module TRACER
subroutine, public tracer_finalize
module urban / grid / icosahedralA / index
subroutine, public urban_grid_cartesc_index_setup
Setup.
module urban / grid / cartesianC / real
subroutine, public urban_grid_cartesc_real_setup
Setup real grid.
subroutine, public urban_grid_cartesc_real_finalize
Finalize.
module urban / grid / cartesianC
subroutine, public urban_grid_cartesc_finalize
Finalize.
subroutine, public urban_grid_cartesc_setup
Setup.