72 profile_isa => atmos_profile_isa
74 hydrometeor_lhv => atmos_hydrometeor_lhv
76 hydrostatic_buildrho => atmos_hydrostatic_buildrho, &
77 hydrostatic_buildrho_atmos => atmos_hydrostatic_buildrho_atmos, &
78 hydrostatic_buildrho_bytemp => atmos_hydrostatic_buildrho_bytemp
80 saturation_pres2qsat_all => atmos_saturation_pres2qsat_all, &
81 saturation_pres2qsat_liq => atmos_saturation_pres2qsat_liq
124 integer,
public,
parameter ::
i_rico = 15
139 integer,
public,
parameter ::
i_real = 25
153 private :: bubble_setup
154 private :: sbmaero_setup
155 private :: aerosol_setup
157 private :: mkinit_planestate
158 private :: mkinit_tracerbubble
159 private :: mkinit_coldbubble
160 private :: mkinit_lambwave
161 private :: mkinit_gravitywave
162 private :: mkinit_khwave
163 private :: mkinit_turbulence
164 private :: mkinit_cavityflow
165 private :: mkinit_mountainwave
166 private :: mkinit_barocwave
168 private :: mkinit_warmbubble
169 private :: mkinit_supercell
170 private :: mkinit_squallline
171 private :: mkinit_wk1982
172 private :: mkinit_dycoms2_rf01
173 private :: mkinit_dycoms2_rf02
174 private :: mkinit_rico
175 private :: mkinit_bomex
177 private :: mkinit_interporation
179 private :: mkinit_landcouple
180 private :: mkinit_oceancouple
181 private :: mkinit_urbancouple
182 private :: mkinit_seabreeze
183 private :: mkinit_heatisland
185 private :: mkinit_dycoms2_rf02_dns
187 private :: mkinit_real
189 private :: mkinit_grayzone
191 private :: mkinit_boxaero
192 private :: mkinit_warmbubbleaero
198 real(RP),
private,
parameter :: thetastd = 300.0_rp
200 real(RP),
private,
allocatable :: pres (:,:,:)
201 real(RP),
private,
allocatable :: temp (:,:,:)
202 real(RP),
private,
allocatable :: pott (:,:,:)
203 real(RP),
private,
allocatable :: qsat (:,:,:)
204 real(RP),
private,
allocatable :: qv (:,:,:)
205 real(RP),
private,
allocatable :: qc (:,:,:)
206 real(RP),
private,
allocatable :: velx (:,:,:)
207 real(RP),
private,
allocatable :: vely (:,:,:)
209 real(RP),
private,
allocatable :: pres_sfc(:,:,:)
210 real(RP),
private,
allocatable :: temp_sfc(:,:,:)
211 real(RP),
private,
allocatable :: pott_sfc(:,:,:)
212 real(RP),
private,
allocatable :: qsat_sfc(:,:,:)
213 real(RP),
private,
allocatable :: qv_sfc (:,:,:)
214 real(RP),
private,
allocatable :: qc_sfc (:,:,:)
216 real(RP),
private,
allocatable :: rndm (:,:,:)
217 real(RP),
private,
allocatable,
target :: bubble (:,:,:)
218 real(RP),
private,
allocatable,
target :: rect (:,:,:)
219 real(RP),
private,
allocatable :: gan (:)
221 logical,
private :: flg_intrp = .false.
230 character(len=H_SHORT) :: mkinit_initname =
'NONE' 232 namelist / param_mkinit / &
240 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[make init] / Categ[preprocess] / Origin[SCALE-RM]' 246 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 247 elseif( ierr > 0 )
then 248 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT. Check!' 253 allocate( pres(
ka,
ia,
ja) )
254 allocate( temp(
ka,
ia,
ja) )
255 allocate( pott(
ka,
ia,
ja) )
256 allocate( qsat(
ka,
ia,
ja) )
259 allocate( velx(
ka,
ia,
ja) )
260 allocate( vely(
ka,
ia,
ja) )
262 allocate( pres_sfc(1,
ia,
ja) )
263 allocate( temp_sfc(1,
ia,
ja) )
264 allocate( pott_sfc(1,
ia,
ja) )
265 allocate( qsat_sfc(1,
ia,
ja) )
266 allocate( qv_sfc(1,
ia,
ja) )
267 allocate( qc_sfc(1,
ia,
ja) )
269 allocate( rndm(
ka,
ia,
ja) )
270 allocate( bubble(
ka,
ia,
ja) )
271 allocate( rect(
ka,
ia,
ja) )
273 select case(trim(mkinit_initname))
315 case(
'INTERPORATION')
332 case(
'DYCOMS2_RF02_DNS')
340 case(
'WARMBUBBLEAERO')
348 write(*,*)
'xxx Unsupported TYPE:', trim(mkinit_initname)
386 if(
io_l )
write(
io_fid_log,*)
'++++++ SKIP MAKING INITIAL DATA ++++++' 389 if(
io_l )
write(
io_fid_log,*)
'++++++ START MAKING INITIAL DATA ++++++' 394 qtrc(:,:,:,iq) = 0.0_rp
417 if(
io_l )
write(
io_fid_log,*)
'*** Aerosols for SBM are included ***' 423 call mkinit_planestate
425 call mkinit_tracerbubble
427 call mkinit_coldbubble
431 call mkinit_gravitywave
435 call mkinit_turbulence
437 call mkinit_mountainwave
439 call mkinit_warmbubble
441 call mkinit_supercell
443 call mkinit_squallline
447 call mkinit_dycoms2_rf01
449 call mkinit_dycoms2_rf02
455 call mkinit_interporation
457 call mkinit_planestate
458 call mkinit_oceancouple
460 call mkinit_planestate
461 call mkinit_landcouple
463 call mkinit_planestate
464 call mkinit_landcouple
465 call mkinit_urbancouple
467 call mkinit_planestate
468 call mkinit_oceancouple
469 call mkinit_landcouple
470 call mkinit_urbancouple
472 call mkinit_planestate
473 call mkinit_warmbubble
474 call mkinit_oceancouple
475 call mkinit_landcouple
476 call mkinit_urbancouple
478 call mkinit_planestate
479 call mkinit_seabreeze
481 call mkinit_planestate
482 call mkinit_heatisland
484 call mkinit_dycoms2_rf02_dns
492 call mkinit_warmbubbleaero
494 call mkinit_cavityflow
496 call mkinit_barocwave
504 if(
io_l )
write(
io_fid_log,*)
'++++++ END MAKING INITIAL DATA ++++++' 529 subroutine bubble_setup
535 logical :: bbl_eachnode = .false.
536 real(RP) :: bbl_cz = 2.e3_rp
537 real(RP) :: bbl_cx = 2.e3_rp
538 real(RP) :: bbl_cy = 2.e3_rp
539 real(RP) :: bbl_rz = 0.0_rp
540 real(RP) :: bbl_rx = 0.0_rp
541 real(RP) :: bbl_ry = 0.0_rp
543 namelist / param_bubble / &
552 real(RP) :: cz_offset
553 real(RP) :: cx_offset
554 real(RP) :: cy_offset
555 real(RP) :: distx, disty, distz
557 real(RP) :: domain_rx, domain_ry
564 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit bubble] / Categ[preprocess] / Origin[SCALE-RM]' 570 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 571 elseif( ierr > 0 )
then 572 write(*,*)
'xxx Not appropriate names in namelist PARAM_BUBBLE. Check!' 577 if ( abs(bbl_rz*bbl_rx*bbl_ry) <= 0.0_rp )
then 579 bubble(:,:,:) = 0.0_rp
584 if ( bbl_eachnode )
then 603 distz = ( (
grid_cz(k)-cz_offset-bbl_cz)/bbl_rz )**2
605 distx = min( ( (
grid_cx(i)-cx_offset-bbl_cx )/bbl_rx )**2, &
606 ( (
grid_cx(i)-cx_offset-bbl_cx-domain_rx)/bbl_rx )**2, &
607 ( (
grid_cx(i)-cx_offset-bbl_cx+domain_rx)/bbl_rx )**2 )
609 disty = min( ( (
grid_cy(j)-cy_offset-bbl_cy )/bbl_ry )**2, &
610 ( (
grid_cy(j)-cy_offset-bbl_cy-domain_ry)/bbl_ry )**2, &
611 ( (
grid_cy(j)-cy_offset-bbl_cy+domain_ry)/bbl_ry )**2 )
613 bubble(k,i,j) = cos( 0.5_rp*pi*sqrt( min(distz+distx+disty,1.0_rp) ) )**2
621 end subroutine bubble_setup
631 logical :: RCT_eachnode = .false.
632 real(RP) :: RCT_CZ = 2.e3_rp
633 real(RP) :: RCT_CX = 2.e3_rp
634 real(RP) :: RCT_CY = 2.e3_rp
635 real(RP) :: RCT_RZ = 2.e3_rp
636 real(RP) :: RCT_RX = 2.e3_rp
637 real(RP) :: RCT_RY = 2.e3_rp
639 namelist / param_rect / &
648 real(RP) :: CZ_offset
649 real(RP) :: CX_offset
650 real(RP) :: CY_offset
658 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit rectangle] / Categ[preprocess] / Origin[SCALE-RM]' 664 write(*,*)
'xxx Not found namelist. Check!' 666 elseif( ierr > 0 )
then 667 write(*,*)
'xxx Not appropriate names in namelist PARAM_RECT. Check!' 674 if ( rct_eachnode )
then 689 dist = 2.0_rp * max( &
690 abs(
grid_cz(k) - cz_offset - rct_cz)/rct_rz, &
691 abs(
grid_cx(i) - cx_offset - rct_cx)/rct_rx, &
692 abs(
grid_cy(j) - cy_offset - rct_cy)/rct_ry &
694 if ( dist <= 1.0_rp )
then 708 subroutine aerosol_setup
713 real(RP),
parameter :: d_min_def = 1.e-9_rp
714 real(RP),
parameter :: d_max_def = 1.e-5_rp
715 integer,
parameter :: n_kap_def = 1
716 real(RP),
parameter :: k_min_def = 0.e0_rp
717 real(RP),
parameter :: k_max_def = 1.e0_rp
719 real(RP) :: m0_init = 0.0_rp
720 real(RP) :: dg_init = 80.e-9_rp
721 real(RP) :: sg_init = 1.6_rp
723 real(RP) :: d_min_inp(3) = d_min_def
724 real(RP) :: d_max_inp(3) = d_max_def
725 real(RP) :: k_min_inp(3) = k_min_def
726 real(RP) :: k_max_inp(3) = k_max_def
727 integer :: n_kap_inp(3) = n_kap_def
729 namelist / param_aero / &
743 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit aerosol] / Categ[preprocess] / Origin[SCALE-RM]' 749 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used!' 750 elseif( ierr > 0 )
then 751 write(*,*)
'xxx Not appropriate names in namelist PARAM_AERO. Check!' 758 m0_init, dg_init, sg_init, &
759 d_min_inp, d_max_inp, &
760 k_min_inp, k_max_inp, &
764 end subroutine aerosol_setup
768 subroutine sbmaero_setup
779 real(RP) :: xasta, xaend, dxaer
780 real(RP),
allocatable :: xabnd( : ), xactr( : )
782 real(RP) :: F0_AERO = 1.e+7_rp
783 real(RP) :: R0_AERO = 1.e-7_rp
784 real(RP) :: R_MAX = 1.e-06_rp
785 real(RP) :: R_MIN = 1.e-08_rp
786 real(RP) :: A_ALPHA = 3.0_rp
787 real(RP) :: RHO_AERO = 2.25e+03_rp
789 namelist / param_sbmaero / &
798 integer :: iq, i, j, k
802 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit aerobin] / Categ[preprocess] / Origin[SCALE-RM]' 809 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. default value used' 810 elseif( ierr > 0 )
then 811 write(*,*)
'xxx Not appropriate names in namelist SBMAERO. Check!' 817 allocate( gan(
nccn ) )
818 allocate( xactr(
nccn) )
819 allocate( xabnd(
nccn+1) )
821 xasta = log( rho_aero*4.0_rp/3.0_rp*pi * ( r_min )**3 )
822 xaend = log( rho_aero*4.0_rp/3.0_rp*pi * ( r_max )**3 )
823 dxaer = ( xaend-xasta )/
nccn 825 xabnd( iq ) = xasta + dxaer*( iq-1 )
828 xactr( iq ) = ( xabnd( iq )+xabnd( iq+1 ) )*0.5_rp
831 gan( iq ) =
faero( f0_aero,r0_aero,xactr( iq ), a_alpha, rho_aero )*exp( xactr(iq) )
840 qtrc(k,i,j,iq) = 0.0_rp
864 end subroutine sbmaero_setup
867 function faero( f0,r0,x,alpha,rhoa )
872 real(RP),
intent(in) :: x, f0, r0, alpha, rhoa
877 rad = ( exp(x) * 3.0_rp / 4.0_rp / pi / rhoa )**(1.0_rp/3.0_rp)
879 faero = f0 * (rad/r0)**(-alpha)
903 real(RP) :: FLX_rain = 0.0_rp
904 real(RP) :: FLX_snow = 0.0_rp
905 real(RP) :: FLX_LW_dn = 0.0_rp
906 real(RP) :: FLX_SW_dn = 0.0_rp
908 namelist / param_mkinit_flux / &
920 read(
io_fid_conf,nml=param_mkinit_flux,iostat=ierr)
922 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 923 elseif( ierr > 0 )
then 924 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_FLUX. Check!' 931 sflx_rain(i,j) = flx_rain
932 sflx_snow(i,j) = flx_snow
934 sflx_lw_up(i,j) = 0.0_rp
935 sflx_lw_dn(i,j) = flx_lw_dn
936 sflx_sw_up(i,j) = 0.0_rp
937 sflx_sw_dn(i,j) = flx_sw_dn
939 toaflx_lw_up(i,j) = 0.0_rp
940 toaflx_lw_dn(i,j) = 0.0_rp
941 toaflx_sw_up(i,j) = 0.0_rp
942 toaflx_sw_dn(i,j) = 0.0_rp
944 sflx_rad_dn(i,j,1,1) = flx_sw_dn
945 sflx_rad_dn(i,j,1,2) = 0.0_rp
946 sflx_rad_dn(i,j,2,1) = flx_lw_dn
947 sflx_rad_dn(i,j,2,2) = 0.0_rp
966 real(RP) :: LND_WATER = 0.15_rp
968 real(RP) :: SFC_albedo_LW = 0.01_rp
969 real(RP) :: SFC_albedo_SW = 0.20_rp
974 namelist /param_mkinit_land/ &
986 read(
io_fid_conf,nml=param_mkinit_land,iostat=ierr)
988 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 989 elseif( ierr > 0 )
then 990 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_LAND. Check!' 1021 real(RP) :: OCN_TEMP
1022 real(RP) :: SFC_TEMP
1023 real(RP) :: SFC_albedo_LW = 0.04_rp
1024 real(RP) :: SFC_albedo_SW = 0.05_rp
1025 real(RP) :: SFC_Z0M = 1.0e-4_rp
1026 real(RP) :: SFC_Z0H = 1.0e-4_rp
1027 real(RP) :: SFC_Z0E = 1.0e-4_rp
1032 namelist /param_mkinit_ocean/ &
1046 read(
io_fid_conf,nml=param_mkinit_ocean,iostat=ierr)
1048 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1049 elseif( ierr > 0 )
then 1050 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_OCEAN. Check!' 1093 real(RP) :: URB_ROOF_TEMP
1094 real(RP) :: URB_BLDG_TEMP
1095 real(RP) :: URB_GRND_TEMP
1096 real(RP) :: URB_CNPY_TEMP
1097 real(RP) :: URB_CNPY_HMDT = 0.0_rp
1098 real(RP) :: URB_CNPY_WIND = 0.0_rp
1099 real(RP) :: URB_ROOF_LAYER_TEMP
1100 real(RP) :: URB_BLDG_LAYER_TEMP
1101 real(RP) :: URB_GRND_LAYER_TEMP
1102 real(RP) :: URB_ROOF_RAIN = 0.0_rp
1103 real(RP) :: URB_BLDG_RAIN = 0.0_rp
1104 real(RP) :: URB_GRND_RAIN = 0.0_rp
1105 real(RP) :: URB_RUNOFF = 0.0_rp
1106 real(RP) :: URB_SFC_TEMP
1107 real(RP) :: URB_ALB_LW = 0.0_rp
1108 real(RP) :: URB_ALB_SW = 0.0_rp
1113 namelist /param_mkinit_urban/ &
1120 urb_roof_layer_temp, &
1121 urb_bldg_layer_temp, &
1122 urb_grnd_layer_temp, &
1131 urb_roof_temp = thetastd
1132 urb_bldg_temp = thetastd
1133 urb_grnd_temp = thetastd
1134 urb_cnpy_temp = thetastd
1135 urb_roof_layer_temp = thetastd
1136 urb_bldg_layer_temp = thetastd
1137 urb_grnd_layer_temp = thetastd
1139 urb_sfc_temp = thetastd
1143 read(
io_fid_conf,nml=param_mkinit_urban,iostat=ierr)
1145 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1146 elseif( ierr > 0 )
then 1147 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_URBAN. Check!' 1186 real(RP) :: TKE_CONST
1188 namelist / param_mkinit_tke / &
1199 read(
io_fid_conf,nml=param_mkinit_tke,iostat=ierr)
1201 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1202 elseif( ierr > 0 )
then 1203 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_TKE. Check!' 1208 if (
i_tke > 0 )
then 1224 DENS, VELX, VELY, POTT, QV )
1229 real(RP),
intent(out) :: DENS(KA)
1230 real(RP),
intent(out) :: VELX(KA)
1231 real(RP),
intent(out) :: VELY(KA)
1232 real(RP),
intent(out) :: POTT(KA)
1233 real(RP),
intent(out) :: QV (KA)
1235 real(RP) :: TEMP(KA)
1236 real(RP) :: PRES(KA)
1239 character(len=H_LONG) :: ENV_IN_SOUNDING_file =
'' 1241 integer,
parameter :: EXP_klim = 100
1244 real(RP) :: SFC_THETA
1245 real(RP) :: SFC_PRES
1248 real(RP) :: EXP_z (EXP_klim+1)
1249 real(RP) :: EXP_pott(EXP_klim+1)
1250 real(RP) :: EXP_qv (EXP_klim+1)
1251 real(RP) :: EXP_u (EXP_klim+1)
1252 real(RP) :: EXP_v (EXP_klim+1)
1254 real(RP) :: fact1, fact2
1259 namelist /param_mkinit_sounding/ &
1260 env_in_sounding_file
1264 read(
io_fid_conf,nml=param_mkinit_sounding,iostat=ierr)
1267 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1268 elseif( ierr > 0 )
then 1269 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SOUNDING. Check!' 1275 if(
io_l )
write(
io_fid_log,*)
'+++ Input sounding file:', trim(env_in_sounding_file)
1278 file = trim(env_in_sounding_file), &
1279 form =
'formatted', &
1283 if ( ierr /= 0 )
then 1284 write(*,*)
'xxx [mod_mkinit/read_sounding] Input file not found!' 1288 read(fid,*) sfc_pres, sfc_theta, sfc_qv
1290 if(
io_l )
write(
io_fid_log,*)
'+++ Surface pressure [hPa]', sfc_pres
1291 if(
io_l )
write(
io_fid_log,*)
'+++ Surface pot. temp [K]', sfc_theta
1292 if(
io_l )
write(
io_fid_log,*)
'+++ Surface water vapor [g/kg]', sfc_qv
1295 read(fid,*,iostat=ierr) exp_z(k), exp_pott(k), exp_qv(k), exp_u(k), exp_v(k)
1296 if ( ierr /= 0 )
exit 1304 exp_pott(1) = sfc_theta
1308 exp_z(exp_kmax+1) = 100.e3_rp
1309 exp_pott(exp_kmax+1) = exp_pott(exp_kmax)
1310 exp_qv(exp_kmax+1) = exp_qv(exp_kmax)
1311 exp_u(exp_kmax+1) = exp_u(exp_kmax)
1312 exp_v(exp_kmax+1) = exp_v(exp_kmax)
1314 do k = 1, exp_kmax+1
1315 exp_qv(k) = exp_qv(k) * 1.e-3_rp
1319 pres_sfc = sfc_pres * 1.e2_rp
1320 pott_sfc = sfc_theta
1321 if (
i_qv > 0 )
then 1322 qv_sfc = sfc_qv * 1.e-3_rp
1332 do kref = 2, exp_kmax+1
1333 if (
grid_cz(k) > exp_z(kref-1) &
1334 .AND.
grid_cz(k) <= exp_z(kref ) )
then 1336 fact1 = ( exp_z(kref) -
grid_cz(k) ) / ( exp_z(kref)-exp_z(kref-1) )
1337 fact2 = (
grid_cz(k) - exp_z(kref-1) ) / ( exp_z(kref)-exp_z(kref-1) )
1339 pott(k) = exp_pott(kref-1) * fact1 &
1340 + exp_pott(kref ) * fact2
1341 qv(k) = exp_qv(kref-1) * fact1 &
1342 + exp_qv(kref ) * fact2
1343 velx(k) = exp_u(kref-1) * fact1 &
1344 + exp_u(kref ) * fact2
1345 vely(k) = exp_v(kref-1) * fact1 &
1346 + exp_v(kref ) * fact2
1350 if (
i_qv < 1 ) qv = 0.0_rp
1353 call hydrostatic_buildrho( dens(:), &
1370 subroutine mkinit_planestate
1376 real(RP) :: SFC_THETA
1377 real(RP) :: SFC_PRES
1378 real(RP) :: SFC_RH = 0.0_rp
1380 real(RP) :: ENV_THETA
1381 real(RP) :: ENV_TLAPS = 0.0_rp
1382 real(RP) :: ENV_U = 0.0_rp
1383 real(RP) :: ENV_V = 0.0_rp
1384 real(RP) :: ENV_RH = 0.0_rp
1386 real(RP) :: RANDOM_THETA = 0.0_rp
1387 real(RP) :: RANDOM_U = 0.0_rp
1388 real(RP) :: RANDOM_V = 0.0_rp
1389 real(RP) :: RANDOM_RH = 0.0_rp
1391 namelist / param_mkinit_planestate / &
1410 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit Horiz_UNIFORM] / Categ[preprocess] / Origin[SCALE-RM]' 1412 sfc_theta = thetastd
1414 env_theta = thetastd
1418 read(
io_fid_conf,nml=param_mkinit_planestate,iostat=ierr)
1421 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1422 elseif( ierr > 0 )
then 1423 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_PLANESTATE. Check!' 1431 pott_sfc(1,i,j) = sfc_theta
1432 pres_sfc(1,i,j) = sfc_pres
1433 qv_sfc(1,i,j) = 0.0_rp
1434 qc_sfc(1,i,j) = 0.0_rp
1443 if ( env_theta < 0.0_rp )
then 1445 call profile_isa(
ka,
ks,
ke, &
1458 pott(k,i,j) = env_theta + env_tlaps *
real_cz(k,i,j)
1466 call hydrostatic_buildrho(
dens(:,:,:), &
1478 if (
i_qv > 0 )
then 1480 call saturation_pres2qsat_all( qsat_sfc(1,:,:), temp_sfc(1,:,:), pres_sfc(1,:,:) )
1481 call saturation_pres2qsat_all( qsat(:,:,:), temp(:,:,:), pres(:,:,:) )
1486 qv_sfc(1,i,j) = ( sfc_rh + rndm(
ks-1,i,j) * random_rh ) * 1.e-2_rp * qsat_sfc(1,i,j)
1489 qv(k,i,j) = ( env_rh + rndm(k,i,j) * random_rh ) * 1.e-2_rp * qsat(k,i,j)
1498 pott_sfc(1,i,j) = pott_sfc(1,i,j) + rndm(
ks-1,i,j) * random_theta
1501 pott(k,i,j) = pott(k,i,j) + rndm(k,i,j) * random_theta
1507 call hydrostatic_buildrho(
dens(:,:,:), &
1519 call comm_vars8(
dens(:,:,:), 1 )
1520 call comm_wait (
dens(:,:,:), 1 )
1526 momx(k,i,j) = ( env_u + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_u ) &
1527 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
1536 momy(k,i,j) = ( env_v + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_v ) &
1537 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
1545 momz(k,i,j) = 0.0_rp
1546 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
1551 if (
i_qv > 0 )
then 1566 end subroutine mkinit_planestate
1570 subroutine mkinit_tracerbubble
1579 real(RP) :: SFC_THETA
1580 real(RP) :: SFC_PRES
1582 real(RP) :: ENV_THETA
1583 real(RP) :: ENV_U = 0.0_rp
1584 real(RP) :: ENV_V = 0.0_rp
1586 character(len=H_SHORT) :: SHAPE_NC =
'BUBBLE' 1587 real(RP) :: BBL_NC = 1.0_rp
1589 namelist / param_mkinit_tracerbubble / &
1598 real(RP),
pointer :: shapeFac(:,:,:) => null()
1600 integer :: k, i, j, iq
1605 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit TRACERBUBBLE] / Categ[preprocess] / Origin[SCALE-RM]' 1607 sfc_theta = thetastd
1609 env_theta = thetastd
1613 read(
io_fid_conf,nml=param_mkinit_tracerbubble,iostat=ierr)
1616 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1617 elseif( ierr > 0 )
then 1618 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_TRACERBUBBLE. Check!' 1624 pres_sfc(1,1,1) = sfc_pres
1625 pott_sfc(1,1,1) = sfc_theta
1626 qv_sfc(1,1,1) = 0.0_rp
1627 qc_sfc(1,1,1) = 0.0_rp
1630 pott(k,1,1) = env_theta
1636 call hydrostatic_buildrho(
dens(:,1,1), &
1652 momz(k,i,j) = 0.0_rp
1655 rhot(k,i,j) = pott(k,1,1) *
dens(k,1,1)
1658 qtrc(k,i,j,iq) = 0.0_rp
1665 if (
i_nc > 0 )
then 1667 select case(shape_nc)
1675 write(*,*)
'xxx SHAPE_NC=', trim(shape_nc),
' cannot be used on advect. Check!' 1682 qtrc(k,i,j,
i_nc) = bbl_nc * shapefac(k,i,j)
1687 write(*,*)
'xxx tracer I_NC is not defined. Check!' 1692 write(*,*)
'xxx SBM cannot be used on tracerbubble. Check!' 1698 end subroutine mkinit_tracerbubble
1710 subroutine mkinit_coldbubble
1716 real(RP) :: SFC_THETA
1717 real(RP) :: SFC_PRES
1719 real(RP) :: ENV_THETA
1721 real(RP) :: BBL_TEMP = -15.0_rp
1723 namelist / param_mkinit_coldbubble / &
1732 integer :: k, i, j, iq
1736 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit COLDBUBBLE] / Categ[preprocess] / Origin[SCALE-RM]' 1738 sfc_theta = thetastd
1740 env_theta = thetastd
1744 read(
io_fid_conf,nml=param_mkinit_coldbubble,iostat=ierr)
1747 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1748 elseif( ierr > 0 )
then 1749 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_COLDBUBBLE. Check!' 1754 rovcp = rdry / cpdry
1757 pres_sfc(1,1,1) = sfc_pres
1758 pott_sfc(1,1,1) = sfc_theta
1759 qv_sfc(1,1,1) = 0.0_rp
1760 qc_sfc(1,1,1) = 0.0_rp
1763 pott(k,1,1) = env_theta
1769 call hydrostatic_buildrho(
dens(:,1,1), &
1785 momz(k,i,j) = 0.0_rp
1786 momx(k,i,j) = 0.0_rp
1787 momy(k,i,j) = 0.0_rp
1790 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) &
1791 + bbl_temp * ( p00/pres(k,1,1) )**rovcp * bubble(k,i,j) )
1794 qtrc(k,i,j,iq) = 0.0_rp
1801 write(*,*)
'xxx SBM cannot be used on coldbubble. Check!' 1806 end subroutine mkinit_coldbubble
1810 subroutine mkinit_lambwave
1816 real(RP) :: SFC_PRES
1818 real(RP) :: ENV_U = 0.0_rp
1819 real(RP) :: ENV_V = 0.0_rp
1820 real(RP) :: ENV_TEMP = 300.0_rp
1822 real(RP) :: BBL_PRES = 100._rp
1824 namelist / param_mkinit_lambwave / &
1834 integer :: k, i, j, iq
1838 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit LAMBWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 1844 read(
io_fid_conf,nml=param_mkinit_lambwave,iostat=ierr)
1847 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1848 elseif( ierr > 0 )
then 1849 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_LAMBWAVE. Check!' 1854 rovcp = rdry / cpdry
1859 dens(k,i,j) = sfc_pres/(rdry*env_temp) * exp( - grav/(rdry*env_temp) *
grid_cz(k) )
1860 momz(k,i,j) = 0.0_rp
1865 pres(k,i,j) =
dens(k,i,j) * env_temp * rdry + bbl_pres * bubble(k,i,j)
1867 rhot(k,i,j) =
dens(k,i,j) * env_temp * ( p00/pres(k,i,j) )**rovcp
1870 qtrc(k,i,j,iq) = 0.0_rp
1877 write(*,*)
'xxx SBM cannot be used on lambwave. Check!' 1882 end subroutine mkinit_lambwave
1887 subroutine mkinit_gravitywave
1893 real(RP) :: SFC_THETA
1894 real(RP) :: SFC_PRES
1896 real(RP) :: ENV_U = 20.0_rp
1897 real(RP) :: ENV_V = 0.0_rp
1898 real(RP) :: ENV_BVF = 0.01_rp
1900 real(RP) :: BBL_THETA = 0.01_rp
1902 namelist / param_mkinit_gravitywave / &
1911 integer :: k, i, j, iq
1915 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit GRAVITYWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 1917 sfc_theta = thetastd
1922 read(
io_fid_conf,nml=param_mkinit_gravitywave,iostat=ierr)
1925 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1926 elseif( ierr > 0 )
then 1927 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_GRAVITYWAVE. Check!' 1933 pres_sfc(1,1,1) = sfc_pres
1934 pott_sfc(1,1,1) = sfc_theta
1935 qv_sfc(1,1,1) = 0.0_rp
1936 qc_sfc(1,1,1) = 0.0_rp
1939 pott(k,1,1) = sfc_theta * exp( env_bvf*env_bvf / grav *
grid_cz(k) )
1945 call hydrostatic_buildrho(
dens(:,1,1), &
1961 momz(k,i,j) = 0.0_rp
1966 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) + bbl_theta * bubble(k,i,j) )
1969 qtrc(k,i,j,iq) = 0.0_rp
1976 write(*,*)
'xxx SBM cannot be used on gravitywave. Check!' 1981 end subroutine mkinit_gravitywave
1985 subroutine mkinit_khwave
1991 real(RP) :: SFC_THETA
1992 real(RP) :: SFC_PRES
1994 real(RP) :: ENV_L1_ZTOP = 1900.0_rp
1995 real(RP) :: ENV_L3_ZBOTTOM = 2100.0_rp
1996 real(RP) :: ENV_L1_THETA = 300.0_rp
1997 real(RP) :: ENV_L3_THETA = 301.0_rp
1998 real(RP) :: ENV_L1_U = 0.0_rp
1999 real(RP) :: ENV_L3_U = 20.0_rp
2001 real(RP) :: RANDOM_U = 0.0_rp
2003 namelist / param_mkinit_khwave / &
2017 integer :: k, i, j, iq
2021 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit KHWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2023 sfc_theta = thetastd
2028 read(
io_fid_conf,nml=param_mkinit_khwave,iostat=ierr)
2031 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2032 elseif( ierr > 0 )
then 2033 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_KHWAVE. Check!' 2039 pres_sfc(1,1,1) = sfc_pres
2040 pott_sfc(1,1,1) = sfc_theta
2041 qv_sfc(1,1,1) = 0.0_rp
2042 qc_sfc(1,1,1) = 0.0_rp
2045 fact = (
grid_cz(k)-env_l1_ztop ) / ( env_l3_zbottom-env_l1_ztop )
2046 fact = max( min( fact, 1.0_rp ), 0.0_rp )
2048 pott(k,1,1) = env_l1_theta * ( 1.0_rp - fact ) &
2049 + env_l3_theta * ( fact )
2056 call hydrostatic_buildrho(
dens(:,1,1), &
2072 momz(k,i,j) = 0.0_rp
2073 momy(k,i,j) = 0.0_rp
2074 rhot(k,i,j) =
dens(k,1,1) * pott(k,1,1)
2077 qtrc(k,i,j,iq) = 0.0_rp
2087 fact = (
grid_cz(k)-env_l1_ztop ) / ( env_l3_zbottom-env_l1_ztop )
2088 fact = max( min( fact, 1.0_rp ), 0.0_rp )
2090 momx(k,i,j) = ( env_l1_u * ( 1.0_rp - fact ) &
2091 + env_l3_u * ( fact ) &
2092 + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_u &
2099 write(*,*)
'xxx SBM cannot be used on khwave. Check!' 2104 end subroutine mkinit_khwave
2108 subroutine mkinit_turbulence
2116 real(RP) :: SFC_THETA
2117 real(RP) :: SFC_PRES
2118 real(RP) :: SFC_RH = 0.0_rp
2120 real(RP) :: ENV_THETA
2121 real(RP) :: ENV_TLAPS = 4.e-3_rp
2122 real(RP) :: ENV_U = 5.0_rp
2123 real(RP) :: ENV_V = 0.0_rp
2124 real(RP) :: ENV_RH = 0.0_rp
2126 real(RP) :: RANDOM_THETA = 1.0_rp
2127 real(RP) :: RANDOM_U = 0.0_rp
2128 real(RP) :: RANDOM_V = 0.0_rp
2129 real(RP) :: RANDOM_RH = 0.0_rp
2131 namelist / param_mkinit_turbulence / &
2146 integer :: k, i, j, iq
2150 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit TURBULENCE] / Categ[preprocess] / Origin[SCALE-RM]' 2152 sfc_theta = thetastd
2154 env_theta = thetastd
2158 read(
io_fid_conf,nml=param_mkinit_turbulence,iostat=ierr)
2161 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2162 elseif( ierr > 0 )
then 2163 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_TURBULENCE. Check!' 2169 pres_sfc(1,1,1) = sfc_pres
2170 pott_sfc(1,1,1) = sfc_theta
2171 qv_sfc(1,:,:) = 0.0_rp
2172 qc_sfc(1,:,:) = 0.0_rp
2175 pott(k,1,1) = env_theta + env_tlaps *
grid_cz(k)
2181 call hydrostatic_buildrho(
dens(:,1,1), &
2193 if (
i_qv > 0 )
then 2195 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
2196 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
2201 qv_sfc(1,i,j) = ( sfc_rh + rndm(
ks-1,i,j) * random_rh ) * 1.e-2_rp * qsat_sfc(1,1,1)
2204 qv(k,i,j) = ( env_rh + rndm(k,i,j) * random_rh ) * 1.e-2_rp * qsat(k,1,1)
2213 pres_sfc(1,i,j) = sfc_pres
2214 pott_sfc(1,i,j) = sfc_theta + rndm(
ks-1,i,j) * random_theta
2217 pott(k,i,j) = env_theta + env_tlaps *
grid_cz(k) + rndm(k,i,j) * random_theta
2223 call hydrostatic_buildrho(
dens(:,:,:), &
2235 call comm_vars8(
dens(:,:,:), 1 )
2236 call comm_wait (
dens(:,:,:), 1 )
2242 momx(k,i,j) = ( env_u + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_u ) &
2243 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
2252 momy(k,i,j) = ( env_v + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_v ) &
2253 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
2261 momz(k,i,j) = 0.0_rp
2262 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
2267 if (
i_qv > 0.0_rp )
then 2279 if ( iq ==
i_qv ) cycle
2283 qtrc(k,i,j,iq) = 0.0_rp
2291 write(*,*)
'xxx SBM cannot be used on turbulence. Check!' 2296 end subroutine mkinit_turbulence
2300 subroutine mkinit_cavityflow
2304 real(RP) :: REYNOLDS_NUM = 1.d03
2305 real(RP) :: MACH_NUM = 3.d-2
2306 real(RP) :: Ulid = 1.d01
2307 real(RP) :: PRES0 = 1.d05
2309 namelist / param_mkinit_cavityflow / &
2325 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit CAVITYFLOW] / Categ[preprocess] / Origin[SCALE-RM]' 2329 read(
io_fid_conf,nml=param_mkinit_cavityflow,iostat=ierr)
2332 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2333 elseif( ierr > 0 )
then 2334 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_CAVITYFLOW. Check!' 2339 gam = cpdry / ( cpdry - rdry )
2340 cs2 = ( ulid / mach_num )**2
2341 temp = cs2 / ( gam * rdry )
2342 dens0 = pres0 / ( rdry * temp )
2354 momz(k,i,j) = 0.0_rp
2355 momx(k,i,j) = 0.0_rp
2356 momy(k,i,j) = 0.0_rp
2358 rhot(k,i,j) = p00/rdry * (p00/pres0)**((rdry - cpdry)/cpdry)
2359 qtrc(k,i,j,:) = 0.0_rp
2367 end subroutine mkinit_cavityflow
2371 subroutine mkinit_mountainwave
2377 real(RP) :: SFC_THETA
2378 real(RP) :: SFC_PRES
2380 real(RP) :: ENV_U = 0.0_rp
2381 real(RP) :: ENV_V = 0.0_rp
2383 real(RP) :: SCORER = 2.e-3_rp
2384 real(RP) :: BBL_NC = 0.0_rp
2386 namelist / param_mkinit_mountainwave / &
2394 real(RP) :: Ustar2, N2
2401 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit MOUNTAINWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2403 sfc_theta = thetastd
2408 read(
io_fid_conf,nml=param_mkinit_mountainwave,iostat=ierr)
2411 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2412 elseif( ierr > 0 )
then 2413 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_MOUNTAINWAVE. Check!' 2421 pres_sfc(1,i,j) = sfc_pres
2422 pott_sfc(1,i,j) = sfc_theta
2423 qv_sfc(1,i,j) = 0.0_rp
2424 qc_sfc(1,i,j) = 0.0_rp
2431 ustar2 = env_u * env_u + env_v * env_v
2432 n2 = ustar2 * (scorer*scorer)
2434 pott(k,i,j) = sfc_theta * exp( n2 / grav *
real_cz(k,i,j) )
2442 call hydrostatic_buildrho(
dens(:,:,:), &
2458 momz(k,i,j) = 0.0_rp
2461 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
2463 qtrc(k,i,j,:) = 0.0_rp
2469 if ( bbl_nc > 0.0_rp )
then 2470 if (
i_nc > 0 )
then 2474 qtrc(k,i,j,
i_nc) = bbl_nc * bubble(k,i,j)
2479 write(*,*)
'xxx tracer I_NC is not defined. Check!' 2485 end subroutine mkinit_mountainwave
2492 subroutine mkinit_barocwave
2510 real(RP) :: REF_TEMP = 288.e0_rp
2511 real(RP) :: REF_PRES = 1.e5_rp
2512 real(RP) :: LAPSE_RATE = 5.e-3_rp
2515 real(RP) :: Phi0Deg = 45.e0_rp
2518 real(RP) :: U0 = 35.e0_rp
2519 real(RP) :: b = 2.e0_rp
2523 real(RP) :: Up = 1.e0_rp
2524 real(RP) :: Lp = 600.e3_rp
2525 real(RP) :: Xc = 2000.e3_rp
2526 real(RP) :: Yc = 2500.e3_rp
2528 namelist / param_mkinit_barocwave / &
2529 ref_temp, ref_pres, lapse_rate, &
2534 real(RP) :: f0, beta0
2536 real(RP) :: geopot(KA,IA,JA)
2537 real(RP) :: eta(KA,IA,JA)
2538 real(RP) :: temp(KA,IA,JA)
2544 real(RP) :: temp_vfunc
2545 real(RP) :: geopot_hvari
2552 integer,
parameter :: ITRMAX = 1000
2553 real(RP),
parameter :: CONV_EPS = 1e-15_rp
2557 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit BAROCWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2562 read(
io_fid_conf,nml=param_mkinit_barocwave,iostat=ierr)
2565 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2566 elseif( ierr > 0 )
then 2567 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_BAROCWAVE. Check!' 2575 f0 = 2.0_rp*ohm*sin(phi0deg*pi/180.0_rp)
2576 beta0 = (2.0_rp*ohm/rplanet)*cos(phi0deg*pi/180.0_rp)
2581 eta(:,:,:) = 1.0e-8_rp
2587 yphase = 2.0_rp*pi*y/ly
2590 geopot_hvari = 0.5_rp*u0*( &
2591 (f0 - beta0*y0)*(y - 0.5_rp*ly*(1.0_rp + sin(yphase)/pi)) &
2592 + 0.5_rp*beta0*( y**2 - ly*y/pi*sin(yphase) - 0.5_rp*(ly/pi)**2*(cos(yphase) + 1.0_rp) &
2597 pres_sfc(1,i,j) = ref_pres
2598 pott_sfc(1,i,j) = ref_temp - geopot_hvari/rdry
2601 qv_sfc(1,i,j) = 0.0_rp
2603 qc_sfc(1,i,j) = 0.0_rp
2610 do while( abs(del_eta) > conv_eps )
2611 ln_eta = log(eta(k,i,j))
2613 temp_vfunc = eta(k,i,j)**(rdry*lapse_rate/grav)
2615 ref_temp*temp_vfunc &
2616 + geopot_hvari/rdry*(2.0_rp*(ln_eta/b)**2 - 1.0_rp)*exp(-(ln_eta/b)**2)
2618 ref_temp*grav/lapse_rate*(1.0_rp - temp_vfunc) &
2619 + geopot_hvari*ln_eta*exp(-(ln_eta/b)**2)
2621 del_eta = - ( - grav*grid_cz(k) + geopot(k,i,j) ) &
2622 & *( - eta(k,i,j)/(rdry*temp(k,i,j)) )
2624 eta(k,i,j) = eta(k,i,j) + del_eta
2627 if ( itr > itrmax )
then 2628 write(*,*)
"* (X,Y,Z)=", grid_cx(i), grid_cy(j), grid_cz(k)
2629 write(*,*)
"Fail the convergence of iteration. Check!" 2630 write(*,*)
"itr=", itr,
"del_eta=", del_eta,
"eta=", eta(k,i,j),
"temp=", temp(k,i,j)
2635 pres(k,i,j) = eta(k,i,j)*ref_pres
2636 dens(k,i,j) = pres(k,i,j)/(rdry*temp(k,i,j))
2637 pott(k,i,j) = temp(k,i,j)*eta(k,i,j)**(-rdry/cpdry)
2643 call hydrostatic_buildrho(
dens(:,i,j), &
2662 eta(k,
is,j) = pres(k,
is,j)/ref_pres
2663 ln_eta = log(eta(k,
is,j))
2664 yphase = 2.0_rp*pi*grid_cy(j)/ly
2668 pres(k,
is:
ie,j) = pres(k,
is,j)
2669 momx(k,
is-1:
ie,j) =
dens(k,
is,j)*(-u0*sin(0.5_rp*yphase)**2*ln_eta*exp(-(ln_eta/b)**2))
2674 momy(:,:,:) = 0.0_rp
2675 momz(:,:,:) = 0.0_rp
2683 +
dens(
ks:
ke,i,j)* up*exp( - ((grid_fx(i) - xc)**2 + (grid_cy(j) - yc)**2)/lp**2 )
2688 end subroutine mkinit_barocwave
2692 subroutine mkinit_warmbubble
2698 real(RP) :: SFC_THETA
2699 real(RP) :: SFC_PRES
2700 real(RP) :: SFC_RH = 80.0_rp
2702 real(RP) :: ENV_U = 0.0_rp
2703 real(RP) :: ENV_V = 0.0_rp
2704 real(RP) :: ENV_RH = 80.0_rp
2705 real(RP) :: ENV_L1_ZTOP = 1.e3_rp
2706 real(RP) :: ENV_L2_ZTOP = 14.e3_rp
2707 real(RP) :: ENV_L2_TLAPS = 4.e-3_rp
2708 real(RP) :: ENV_L3_TLAPS = 3.e-2_rp
2710 real(RP) :: BBL_THETA = 1.0_rp
2712 namelist / param_mkinit_warmbubble / &
2729 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit WARMBUBBLE] / Categ[preprocess] / Origin[SCALE-RM]' 2731 if (
i_qv < 1 )
then 2732 write(*,*)
'xxx QV is not registered' 2736 sfc_theta = thetastd
2741 read(
io_fid_conf,nml=param_mkinit_warmbubble,iostat=ierr)
2744 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2745 elseif( ierr > 0 )
then 2746 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_WARMBUBBLE. Check!' 2752 pres_sfc(1,1,1) = sfc_pres
2753 pott_sfc(1,1,1) = sfc_theta
2754 qv_sfc(1,:,:) = 0.0_rp
2755 qc_sfc(1,:,:) = 0.0_rp
2758 if (
grid_cz(k) <= env_l1_ztop )
then 2759 pott(k,1,1) = sfc_theta
2760 elseif(
grid_cz(k) < env_l2_ztop )
then 2761 pott(k,1,1) = pott(k-1,1,1) + env_l2_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
2763 pott(k,1,1) = pott(k-1,1,1) + env_l3_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
2770 call hydrostatic_buildrho(
dens(:,1,1), &
2783 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
2784 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
2786 qv_sfc(1,1,1) = sfc_rh * 1.e-2_rp * qsat_sfc(1,1,1)
2788 if (
grid_cz(k) <= env_l1_ztop )
then 2789 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
2790 elseif(
grid_cz(k) <= env_l2_ztop )
then 2791 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
2798 call hydrostatic_buildrho(
dens(:,1,1), &
2814 momz(k,i,j) = 0.0_rp
2819 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) + bbl_theta * bubble(k,i,j) )
2829 end subroutine mkinit_warmbubble
2833 subroutine mkinit_supercell
2839 real(RP) :: VELX(KA)
2840 real(RP) :: VELY(KA)
2841 real(RP) :: POTT(KA)
2845 real(RP) :: BBL_THETA = 3.d0
2847 namelist / param_mkinit_supercell / &
2855 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit SUPERCELL] / Categ[preprocess] / Origin[SCALE-RM]' 2857 if (
i_qv < 1 )
then 2858 write(*,*)
'xxx QV is not registered' 2864 read(
io_fid_conf,nml=param_mkinit_supercell,iostat=ierr)
2867 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2868 elseif( ierr > 0 )
then 2869 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SUPERCELL. Check!' 2879 dens(k,i,j) = rho(k)
2880 momz(k,i,j) = 0.0_rp
2881 momx(k,i,j) = rho(k) * velx(k)
2882 momy(k,i,j) = rho(k) * vely(k)
2885 rhot(k,i,j) = rho(k) * ( pott(k) + bbl_theta * bubble(k,i,j) )
2895 end subroutine mkinit_supercell
2899 subroutine mkinit_squallline
2905 real(RP) :: VELX(KA)
2906 real(RP) :: VELY(KA)
2907 real(RP) :: POTT(KA)
2910 real(RP) :: RANDOM_THETA = 0.01_rp
2911 real(RP) :: OFFSET_velx = 12.0_rp
2912 real(RP) :: OFFSET_vely = -2.0_rp
2914 namelist / param_mkinit_squallline / &
2924 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit SQUALLLINE] / Categ[preprocess] / Origin[SCALE-RM]' 2926 if (
i_qv < 1 )
then 2927 write(*,*)
'xxx QV is not registered' 2933 read(
io_fid_conf,nml=param_mkinit_squallline,iostat=ierr)
2936 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2937 elseif( ierr > 0 )
then 2938 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SQUALLLINE. Check!' 2949 dens(k,i,j) = rho(k)
2950 momz(k,i,j) = 0.0_rp
2951 momx(k,i,j) = ( velx(k) - offset_velx ) * rho(k)
2952 momy(k,i,j) = ( vely(k) - offset_vely ) * rho(k)
2953 rhot(k,i,j) = rho(k) * ( pott(k) + rndm(k,i,j) * random_theta )
2965 end subroutine mkinit_squallline
2969 subroutine mkinit_wk1982
2975 real(RP) :: SFC_THETA = 300.0_rp
2976 real(RP) :: SFC_PRES
2978 real(RP) :: TR_Z = 12000.0_rp
2979 real(RP) :: TR_THETA = 343.0_rp
2980 real(RP) :: TR_TEMP = 213.0_rp
2981 real(RP) :: SHEAR_Z = 3000.0_rp
2982 real(RP) :: SHEAR_U = 15.0_rp
2984 real(RP) :: BBL_THETA = 3.d0
2986 namelist / param_mkinit_wk1982 / &
2996 real(RP) :: rh (KA,IA,JA)
2997 real(RP) :: rh_sfc(1 ,IA,JA)
3000 integer :: k, i, j, iq
3004 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit WK1982] / Categ[preprocess] / Origin[SCALE-RM]' 3006 if (
i_qv < 1 )
then 3007 write(*,*)
'xxx QV is not registered' 3014 read(
io_fid_conf,nml=param_mkinit_wk1982,iostat=ierr)
3016 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3017 elseif( ierr > 0 )
then 3018 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_WK1982. Check!' 3026 pres_sfc(1,i,j) = sfc_pres
3027 pott_sfc(1,i,j) = sfc_theta
3028 qv_sfc(1,i,j) = 0.0_rp
3029 qc_sfc(1,i,j) = 0.0_rp
3032 if (
real_cz(k,i,j) <= tr_z )
then 3033 pott(k,i,j) = pott_sfc(1,i,j) &
3034 + ( tr_theta - pott_sfc(1,i,j) ) * (
real_cz(k,i,j) / tr_z )**1.25_rp
3036 pott(k,i,j) = tr_theta * exp( grav * (
real_cz(k,i,j) - tr_z ) / cpdry / tr_temp )
3046 call hydrostatic_buildrho(
dens(:,:,:), &
3061 rh_sfc(1,i,j) = 1.0_rp - 0.75_rp * (
real_fz(
ks-1,i,j) / tr_z )**1.25_rp
3064 if (
real_cz(k,i,j) <= tr_z )
then 3065 rh(k,i,j) = 1.0_rp - 0.75_rp * (
real_cz(k,i,j) / tr_z )**1.25_rp
3073 call saturation_pres2qsat_all( qsat_sfc(1,:,:), temp_sfc(1,:,:), pres_sfc(1,:,:) )
3074 call saturation_pres2qsat_all( qsat(:,:,:), temp(:,:,:), pres(:,:,:) )
3078 qv_sfc(1,i,j) = rh_sfc(1,i,j) * qsat_sfc(1,i,j)
3080 qv(k,i,j) = rh(k,i,j) * qsat(k,i,j)
3086 call hydrostatic_buildrho(
dens(:,:,:), &
3099 if(
io_l )
write(
io_fid_log,*) k,
real_cz(k,
is,
js), pres(k,
is,
js), pott(k,
is,
js), rh(k,
is,
js), qv(k,
is,
js)*1000
3102 call comm_vars8(
dens(:,:,:), 1 )
3103 call comm_wait (
dens(:,:,:), 1 )
3108 momx(k,i,j) = shear_u * tanh(
real_cz(k,i,j) / shear_z ) &
3109 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3117 momy(k,i,j) = 0.0_rp
3118 momz(k,i,j) = 0.0_rp
3119 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3122 rhot(k,i,j) =
dens(k,i,j) * ( pott(k,i,j) + bbl_theta * bubble(k,i,j) )
3135 qtrc(k,i,j,iq) = 0.0_rp
3146 end subroutine mkinit_wk1982
3150 subroutine mkinit_dycoms2_rf01
3164 real(RP) :: PERTURB_AMP = 0.0_rp
3165 integer :: RANDOM_LIMIT = 5
3166 integer :: RANDOM_FLAG = 0
3169 logical :: USE_LWSET = .false.
3171 namelist / param_mkinit_rf01 / &
3177 real(RP) :: potl(KA,IA,JA)
3178 real(RP) :: LHV (KA,IA,JA)
3187 integer :: k, i, j, iq
3190 pi2 = atan(1.0_rp) * 2.0_rp
3193 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit DYCOMS2RF01] / Categ[preprocess] / Origin[SCALE-RM]' 3197 if (
i_qv < 1 )
then 3198 write(*,*)
'xxx QV is not registered' 3202 read(
io_fid_conf,nml=param_mkinit_rf01,iostat=ierr)
3204 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3205 elseif( ierr > 0 )
then 3206 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RF01. Check!' 3211 if ( use_lwset )
then 3221 pres_sfc(1,i,j) = 1017.8e2_rp
3222 pott_sfc(1,i,j) = 289.0_rp
3223 qv_sfc(1,i,j) = 0.0_rp
3224 qc_sfc(1,i,j) = 0.0_rp
3227 velx(k,i,j) = 7.0_rp
3228 vely(k,i,j) = -5.5_rp
3229 if (
grid_cz(k) < 820.0_rp )
then 3230 potl(k,i,j) = 289.0_rp - grav / cpdry *
grid_cz(k) * geop_sw
3231 elseif(
grid_cz(k) <= 860.0_rp )
then 3232 sint = sin( pi2 * (
grid_cz(k)-840.0_rp ) / 20.0_rp ) * 0.5_rp
3233 potl(k,i,j) = ( 289.0_rp - grav / cpdry *
grid_cz(k) * geop_sw ) * (0.5_rp-sint) &
3234 + ( 297.5_rp+sign(abs(
grid_cz(k)-840.0_rp)**(1.0_rp/3.0_rp),
grid_cz(k)-840.0_rp) &
3235 - grav / cpdry *
grid_cz(k) * geop_sw ) * (0.5_rp+sint)
3237 potl(k,i,j) = 297.5_rp + (
grid_cz(k)-840.0_rp )**(1.0_rp/3.0_rp) &
3238 - grav / cpdry *
grid_cz(k) * geop_sw
3249 call hydrostatic_buildrho(
dens(:,:,:), &
3264 qv_sfc(1,i,j) = 9.0e-3_rp
3265 qc_sfc(1,i,j) = 0.0_rp
3268 if (
grid_cz(k) < 820.0_rp )
then 3270 elseif(
grid_cz(k) <= 860.0_rp )
then 3271 sint = sin( pi2 * (
grid_cz(k)-840.0_rp ) / 20.0_rp ) * 0.5_rp
3272 qall = 9.0e-3_rp * (0.5_rp-sint) &
3273 + 1.5e-3_rp * (0.5_rp+sint)
3274 elseif(
grid_cz(k) <= 5000.0_rp )
then 3280 if (
grid_cz(k) <= 600.0_rp )
then 3282 elseif(
grid_cz(k) < 820.0_rp )
then 3283 fact = (
grid_cz(k)-600.0_rp ) / ( 840.0_rp-600.0_rp )
3284 qc(k,i,j) = 0.45e-3_rp * fact
3285 elseif(
grid_cz(k) <= 860.0_rp )
then 3286 sint = sin( pi2 * (
grid_cz(k)-840.0_rp ) / 20.0_rp ) * 0.5_rp
3287 fact = (
grid_cz(k)-600.0_rp ) / ( 840.0_rp-600.0_rp )
3288 qc(k,i,j) = 0.45e-3_rp * fact * (0.5_rp-sint)
3293 qv(k,i,j) = qall - qc(k,i,j)
3299 call hydrometeor_lhv( lhv(:,:,:), temp(:,:,:) )
3304 temp(k,i,j) = temp(k,i,j) + lhv(k,i,j) / cpdry * qc(k,i,j)
3310 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
3329 call comm_vars8(
dens(:,:,:), 1 )
3330 call comm_wait (
dens(:,:,:), 1 )
3336 if ( random_flag == 2 .and. k <= random_limit )
then 3337 momz(k,i,j) = ( 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3338 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
3340 momz(k,i,j) = 0.0_rp
3350 if ( random_flag == 2 .AND. k <= random_limit )
then 3351 momx(k,i,j) = ( velx(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3352 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3354 momx(k,i,j) = velx(k,i,j) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3364 if ( random_flag == 2 .AND. k <= random_limit )
then 3365 momy(k,i,j) = ( vely(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3366 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3368 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3378 if ( random_flag == 1 .and. k <= random_limit )
then 3379 rhot(k,i,j) = ( pott(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3382 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3392 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
3409 if (
i_nc > 0 )
then 3413 if ( qc(k,i,j) > 0.0_rp )
then 3427 end subroutine mkinit_dycoms2_rf01
3431 subroutine mkinit_dycoms2_rf02
3445 real(RP) :: PERTURB_AMP = 0.0_rp
3446 integer :: RANDOM_LIMIT = 5
3447 integer :: RANDOM_FLAG = 0
3451 namelist / param_mkinit_rf02 / &
3456 real(RP) :: potl(KA,IA,JA)
3457 real(RP) :: LHV (KA,IA,JA)
3465 integer :: k, i, j, iq
3468 pi2 = atan(1.0_rp) * 2.0_rp
3470 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit DYCOMS2RF02] / Categ[preprocess] / Origin[SCALE-RM]' 3472 if (
i_qv < 1 )
then 3473 write(*,*)
'xxx QV is not registered' 3478 read(
io_fid_conf,nml=param_mkinit_rf02,iostat=ierr)
3480 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3481 elseif( ierr > 0 )
then 3482 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RF02. Check!' 3492 pres_sfc(1,i,j) = 1017.8e2_rp
3493 pott_sfc(1,i,j) = 288.3_rp
3494 qv_sfc(1,i,j) = 0.0_rp
3495 qc_sfc(1,i,j) = 0.0_rp
3498 velx(k,i,j) = 3.0_rp + 4.3 *
grid_cz(k)*1.e-3_rp
3499 vely(k,i,j) = -9.0_rp + 5.6 *
grid_cz(k)*1.e-3_rp
3501 if (
grid_cz(k) < 775.0_rp )
then 3502 potl(k,i,j) = 288.3_rp
3503 else if (
grid_cz(k) <= 815.0_rp )
then 3504 sint = sin( pi2 * (
grid_cz(k) - 795.0_rp)/20.0_rp )
3505 potl(k,i,j) = 288.3_rp * (1.0_rp-sint)*0.5_rp &
3506 + ( 295.0_rp+sign(abs(
grid_cz(k)-795.0_rp)**(1.0_rp/3.0_rp),
grid_cz(k)-795.0_rp) ) &
3507 * (1.0_rp+sint)*0.5_rp
3509 potl(k,i,j) = 295.0_rp + (
grid_cz(k)-795.0_rp )**(1.0_rp/3.0_rp)
3519 call hydrostatic_buildrho(
dens(:,:,:), &
3534 qv_sfc(1,i,j) = 9.45e-3_rp
3535 qc_sfc(1,i,j) = 0.0_rp
3538 if (
grid_cz(k) < 775.0_rp )
then 3540 else if (
grid_cz(k) <= 815.0_rp )
then 3541 sint = sin( pi2 * (
grid_cz(k) - 795.0_rp)/20.0_rp )
3542 qall = 9.45e-3_rp * (1.0_rp-sint)*0.5_rp + &
3543 ( 5.e-3_rp - 3.e-3_rp * ( 1.0_rp - exp( (795.0_rp-
grid_cz(k))/500.0_rp ) ) ) * (1.0_rp+sint)*0.5_rp
3545 qall = 5.e-3_rp - 3.e-3_rp * ( 1.0_rp - exp( (795.0_rp-
grid_cz(k))/500.0_rp ) )
3548 if(
grid_cz(k) < 400.0_rp )
then 3550 elseif(
grid_cz(k) < 775.0_rp )
then 3551 fact = (
grid_cz(k)-400.0_rp ) / ( 795.0_rp-400.0_rp )
3552 qc(k,i,j) = 0.65e-3_rp * fact
3553 elseif(
grid_cz(k) <= 815.0_rp )
then 3554 sint = sin( pi2 * (
grid_cz(k)-795.0_rp )/20.0_rp )
3555 fact = (
grid_cz(k)-400.0_rp ) / ( 795.0_rp-400.0_rp )
3556 qc(k,i,j) = 0.65e-3_rp * fact * (1.0_rp-sint) * 0.5_rp
3560 qv(k,i,j) = qall - qc(k,i,j)
3566 call hydrometeor_lhv( lhv(:,:,:), temp(:,:,:) )
3571 temp(k,i,j) = temp(k,i,j) + lhv(k,i,j) / cpdry * qc(k,i,j)
3577 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
3596 call comm_vars8(
dens(:,:,:), 1 )
3597 call comm_wait (
dens(:,:,:), 1 )
3603 if( random_flag == 2 .and. k <= random_limit )
then 3604 momz(k,i,j) = ( 0.0_rp + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3605 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
3607 momz(k,i,j) = 0.0_rp
3617 if( random_flag == 2 .and. k <= random_limit )
then 3618 momx(k,i,j) = ( velx(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3619 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3621 momx(k,i,j) = ( velx(k,i,j) ) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3631 if( random_flag == 2 .and. k <= random_limit )
then 3632 momy(k,i,j) = ( vely(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3633 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3635 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3645 if( random_flag == 1 .and. k <= random_limit )
then 3646 rhot(k,i,j) = ( pott(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3649 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3660 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
3677 if (
i_nc > 0 )
then 3681 if ( qc(k,i,j) > 0.0_rp )
then 3695 end subroutine mkinit_dycoms2_rf02
3699 subroutine mkinit_dycoms2_rf02_dns
3712 real(RP) :: ZB = 750.0_rp
3714 real(RP) :: CONST_U = 0.0_rp
3715 real(RP) :: CONST_V = 0.0_rp
3716 real(RP) :: PRES_ZB = 93060.0_rp
3717 real(RP) :: PERTURB_AMP = 0.0_rp
3718 integer :: RANDOM_LIMIT = 5
3719 integer :: RANDOM_FLAG = 0
3723 namelist / param_mkinit_rf02_dns / &
3724 zb, const_u, const_v,pres_zb,&
3729 real(RP) :: potl(KA,IA,JA)
3730 real(RP) :: LHV (KA,IA,JA)
3738 integer :: k, i, j, iq
3741 pi2 = atan(1.0_rp) * 2.0_rp
3744 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit DYCOMS2RF02_DNS] / Categ[preprocess] / Origin[SCALE-RM]' 3746 if (
i_qv < 1 )
then 3747 write(*,*)
'xxx QV is not registered' 3752 read(
io_fid_conf,nml=param_mkinit_rf02_dns,iostat=ierr)
3754 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3755 elseif( ierr > 0 )
then 3756 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RF02_DNS. Check!' 3766 pres_sfc(1,i,j) = pres_zb
3773 velx(k,i,j) = const_u
3774 vely(k,i,j) = const_v
3777 if ( zb+
grid_cz(k) <= 795.0_rp )
then 3778 potl(k,i,j) = 288.3_rp
3788 potl(k,i,j) = 295.0_rp + ( zb+
grid_cz(k)-795.0_rp )**(1.0_rp/3.0_rp)
3789 qall = 5.e-3_rp - 3.e-3_rp * ( 1.0_rp - exp( (795.0_rp-(zb+
grid_cz(k)))/500.0_rp ) )
3792 if( zb+
grid_cz(k) < 400.0_rp )
then 3794 elseif( zb+
grid_cz(k) <= 795.0_rp )
then 3795 fact = ( (zb+
grid_cz(k))-400.0_rp ) / ( 795.0_rp-400.0_rp )
3796 qc(k,i,j) = 0.8e-3_rp * fact
3800 qv(k,i,j) = qall - qc(k,i,j)
3809 pott_sfc(1,:,:) = potl(
ks,:,:)-0.5*(potl(
ks+1,:,:)-potl(
ks,:,:))
3810 qv_sfc(1,:,:) = qv(
ks,:,:)-0.5*(qv(
ks+1,:,:)-qv(
ks,:,:))
3811 qc_sfc(1,:,:) = qc(
ks,:,:)-0.5*(qc(
ks+1,:,:)-qc(
ks,:,:))
3814 call hydrostatic_buildrho(
dens(:,:,:), &
3826 call hydrometeor_lhv( lhv(:,:,:), temp(:,:,:) )
3828 rovcp = rdry / cpdry
3832 pott(k,i,j) = potl(k,i,j) + lhv(k,i,j) / cpdry * qc(k,i,j) * ( p00/pres(k,i,j) )**rovcp
3838 call hydrostatic_buildrho(
dens(:,:,:), &
3857 call comm_vars8(
dens(:,:,:), 1 )
3858 call comm_wait (
dens(:,:,:), 1 )
3864 if( random_flag == 2 .and. k <= random_limit )
then 3865 momz(k,i,j) = ( 0.0_rp + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3866 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
3868 momz(k,i,j) = 0.0_rp
3879 if( random_flag == 2 .and. k <= random_limit )
then 3880 momx(k,i,j) = ( velx(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3881 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3883 momx(k,i,j) = ( velx(k,i,j) ) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3894 if( random_flag == 2 .and. k <= random_limit )
then 3895 momy(k,i,j) = ( vely(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3896 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3898 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3909 if( random_flag == 1 .and. k <= random_limit )
then 3910 rhot(k,i,j) = ( pott(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3913 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3924 qtrc(k,i,j,iq) = 0.0_rp
3936 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
3955 if (
i_nc > 0 )
then 3959 if ( qc(k,i,j) > 0.0_rp )
then 3970 end subroutine mkinit_dycoms2_rf02_dns
3974 subroutine mkinit_rico
3988 real(RP):: PERTURB_AMP_PT = 0.1_rp
3989 real(RP):: PERTURB_AMP_QV = 2.5e-5_rp
3991 namelist / param_mkinit_rico / &
3995 real(RP) :: LHV (KA,IA,JA)
3996 real(RP) :: potl(KA,IA,JA)
4001 integer :: k, i, j, iq
4005 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit RICO] / Categ[preprocess] / Origin[SCALE-RM]' 4007 if (
i_qv < 1 )
then 4008 write(*,*)
'xxx QV is not registered' 4013 read(
io_fid_conf,nml=param_mkinit_rico,iostat=ierr)
4015 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4016 elseif( ierr > 0 )
then 4017 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RICO. Check!' 4026 pres_sfc(1,i,j) = 1015.4e2_rp
4027 pott_sfc(1,i,j) = 297.9_rp
4028 qv_sfc(1,i,j) = 0.0_rp
4029 qc_sfc(1,i,j) = 0.0_rp
4033 if (
grid_cz(k) < 740.0_rp )
then 4034 potl(k,i,j) = 297.9_rp
4036 fact = (
grid_cz(k)-740.0_rp ) * ( 317.0_rp-297.9_rp ) / ( 4000.0_rp-740.0_rp )
4037 potl(k,i,j) = 297.9_rp + fact
4041 if (
grid_cz(k) <= 4000.0_rp )
then 4042 fact = (
grid_cz(k)-0.0_rp ) * ( -1.9_rp+9.9_rp ) / ( 4000.0_rp-0.0_rp )
4043 velx(k,i,j) = -9.9_rp + fact
4044 vely(k,i,j) = -3.8_rp
4046 velx(k,i,j) = -1.9_rp
4047 vely(k,i,j) = -3.8_rp
4059 call hydrostatic_buildrho(
dens(:,:,:), &
4074 qv_sfc(1,i,j) = 16.0e-3_rp
4075 qc_sfc(1,i,j) = 0.0_rp
4079 if (
grid_cz(k) <= 740.0_rp )
then 4080 fact = (
grid_cz(k)-0.0_rp ) * ( 13.8e-3_rp-16.0e-3_rp ) / ( 740.0_rp-0.0_rp )
4081 qall = 16.0e-3_rp + fact
4082 elseif (
grid_cz(k) <= 3260.0_rp )
then 4083 fact = (
grid_cz(k)-740.0_rp ) * ( 2.4e-3_rp-13.8e-3_rp ) / ( 3260.0_rp-740.0_rp )
4084 qall = 13.8e-3_rp + fact
4085 elseif(
grid_cz(k) <= 4000.0_rp )
then 4086 fact = (
grid_cz(k)-3260.0_rp ) * ( 1.8e-3_rp-2.4e-3_rp ) / ( 4000.0_rp-3260.0_rp )
4087 qall = 2.4e-3_rp + fact
4093 qv(k,i,j) = qall - qc(k,i,j)
4099 call hydrometeor_lhv( lhv(:,:,:), temp(:,:,:) )
4104 temp(k,i,j) = temp(k,i,j) + lhv(k,i,j) / cpdry * qc(k,i,j)
4110 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
4130 call comm_vars8(
dens(:,:,:), 1 )
4131 call comm_wait (
dens(:,:,:), 1 )
4136 momz(k,i,j) = 0.0_rp
4144 momx(k,i,j) = velx(k,i,j) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
4152 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
4161 rhot(k,i,j) = ( pott(k,i,j)+2.0_rp*( rndm(k,i,j)-0.5_rp )*perturb_amp_pt ) *
dens(k,i,j)
4173 qtrc(k,i,j,
i_qv) = qv(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp_qv &
4185 qtrc(k,i,j,
i_qv) = qv(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp_qv
4191 if (
i_nc > 0 )
then 4195 if ( qc(k,i,j) > 0.0_rp )
then 4209 end subroutine mkinit_rico
4213 subroutine mkinit_bomex
4227 real(RP):: PERTURB_AMP_PT = 0.1_rp
4228 real(RP):: PERTURB_AMP_QV = 2.5e-5_rp
4230 namelist / param_mkinit_bomex / &
4234 real(RP) :: LHV (KA,IA,JA)
4235 real(RP) :: potl(KA,IA,JA)
4240 integer :: k, i, j, iq
4244 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit BOMEX] / Categ[preprocess] / Origin[SCALE-RM]' 4246 if (
i_qv < 1 )
then 4247 write(*,*)
'xxx QV is not registered' 4252 read(
io_fid_conf,nml=param_mkinit_bomex,iostat=ierr)
4254 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4255 elseif( ierr > 0 )
then 4256 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_BOMEX. Check!' 4265 pres_sfc(1,i,j) = 1015.e2_rp
4266 pott_sfc(1,i,j) = 299.1_rp
4267 qv_sfc(1,i,j) = 0.0_rp
4268 qc_sfc(1,i,j) = 0.0_rp
4272 if (
grid_cz(k) < 520.0_rp )
then 4273 potl(k,i,j) = 298.7_rp
4274 elseif(
grid_cz(k) < 1480.0_rp )
then 4275 fact = (
grid_cz(k)-520.0_rp ) * ( 302.4_rp-298.7_rp ) / ( 1480.0_rp-520.0_rp )
4276 potl(k,i,j) = 298.7_rp + fact
4277 elseif(
grid_cz(k) < 2000.0_rp )
then 4278 fact = (
grid_cz(k)-1480.0_rp ) * ( 308.2_rp-302.4_rp ) / ( 2000.0_rp-1480.0_rp )
4279 potl(k,i,j) = 302.4_rp + fact
4281 fact = (
grid_cz(k)-2000.0_rp ) * 3.65e-3_rp
4282 potl(k,i,j) = 308.2_rp + fact
4286 if (
grid_cz(k) <= 700.0_rp )
then 4287 velx(k,i,j) = -8.75_rp
4288 vely(k,i,j) = 0.0_rp
4290 fact = 1.8e-3_rp * (
grid_cz(k)-700.0_rp )
4291 velx(k,i,j) = -8.75_rp + fact
4292 vely(k,i,j) = 0.0_rp
4304 call hydrostatic_buildrho(
dens(:,:,:), &
4319 qv_sfc(1,i,j) = 22.45e-3_rp
4320 qc_sfc(1,i,j) = 0.0_rp
4324 if (
grid_cz(k) <= 520.0_rp )
then 4325 fact = (
grid_cz(k)-0.0_rp ) * ( 16.3e-3_rp-17.0e-3_rp ) / ( 520.0_rp-0.0_rp )
4326 qall = 17.0e-3_rp + fact
4327 elseif (
grid_cz(k) <= 1480.0_rp )
then 4328 fact = (
grid_cz(k)-520.0_rp ) * ( 10.7e-3_rp-16.3e-3_rp ) / ( 1480.0_rp-520.0_rp )
4329 qall = 16.3e-3_rp + fact
4330 elseif(
grid_cz(k) <= 2000.0_rp )
then 4331 fact = (
grid_cz(k)-1480.0_rp ) * ( 4.2e-3_rp-10.7e-3_rp ) / ( 2000.0_rp-1480.0_rp )
4332 qall = 10.7e-3_rp + fact
4334 fact = (
grid_cz(k)-2000.0_rp ) * ( -1.2e-6_rp )
4335 qall = 4.2e-3_rp + fact
4339 qv(k,i,j) = qall - qc(k,i,j)
4345 call hydrometeor_lhv( lhv(:,:,:), temp(:,:,:) )
4350 temp(k,i,j) = temp(k,i,j) + lhv(k,i,j) / cpdry * qc(k,i,j)
4356 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
4376 call comm_vars8(
dens(:,:,:), 1 )
4377 call comm_wait (
dens(:,:,:), 1 )
4382 momz(k,i,j) = 0.0_rp
4390 momx(k,i,j) = velx(k,i,j) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
4398 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
4407 if(
grid_cz(k) <= 1600.0_rp )
then 4408 rhot(k,i,j) = ( pott(k,i,j)+2.0_rp*( rndm(k,i,j)-0.5_rp )*perturb_amp_pt ) *
dens(k,i,j)
4410 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
4423 if(
grid_cz(k) <= 1600.0_rp )
then 4424 qtrc(k,i,j,
i_qv) = qv(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp_qv &
4427 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
4439 if(
grid_cz(k) <= 1600.0_rp )
then 4440 qtrc(k,i,j,
i_qv) = qv(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp_qv
4449 if (
i_nc > 0 )
then 4453 if ( qc(k,i,j) > 0.0_rp )
then 4467 end subroutine mkinit_bomex
4470 subroutine mkinit_interporation
4479 real(RP) :: dz(KA,IA,JA)
4481 real(RP) :: W(KA,IA,JA)
4482 real(RP) :: U(KA,IA,JA)
4483 real(RP) :: V(KA,IA,JA)
4485 real(RP) :: fact_cz0(KA)
4486 real(RP) :: fact_cz1(KA)
4487 real(RP) :: fact_fz0(KA)
4488 real(RP) :: fact_fz1(KA)
4489 real(RP) :: fact_cx0(IA)
4490 real(RP) :: fact_cx1(IA)
4491 real(RP) :: fact_fx0(IA)
4492 real(RP) :: fact_fx1(IA)
4493 real(RP) :: fact_cy0(JA)
4494 real(RP) :: fact_cy1(JA)
4495 real(RP) :: fact_fy0(JA)
4496 real(RP) :: fact_fy1(JA)
4498 integer :: idx_cz0(KA)
4499 integer :: idx_cz1(KA)
4500 integer :: idx_fz0(KA)
4501 integer :: idx_fz1(KA)
4502 integer :: idx_cx0(IA)
4503 integer :: idx_cx1(IA)
4504 integer :: idx_fx0(IA)
4505 integer :: idx_fx1(IA)
4506 integer :: idx_cy0(JA)
4507 integer :: idx_cy1(JA)
4508 integer :: idx_fy0(JA)
4509 integer :: idx_fy1(JA)
4511 real(RP),
allocatable :: DENS_ORG(:,:,:)
4512 real(RP),
allocatable :: MOMZ_ORG(:,:,:)
4513 real(RP),
allocatable :: MOMX_ORG(:,:,:)
4514 real(RP),
allocatable :: MOMY_ORG(:,:,:)
4515 real(RP),
allocatable :: RHOT_ORG(:,:,:)
4516 real(RP),
allocatable :: QTRC_ORG(:,:,:,:)
4518 real(RP),
allocatable :: W_ORG(:,:,:)
4519 real(RP),
allocatable :: U_ORG(:,:,:)
4520 real(RP),
allocatable :: V_ORG(:,:,:)
4521 real(RP),
allocatable :: POTT_ORG(:,:,:)
4523 real(RP),
allocatable :: CZ_ORG(:)
4524 real(RP),
allocatable :: FZ_ORG(:)
4525 real(RP),
allocatable :: CX_ORG(:)
4526 real(RP),
allocatable :: FX_ORG(:)
4527 real(RP),
allocatable :: CY_ORG(:)
4528 real(RP),
allocatable :: FY_ORG(:)
4532 character(len=H_LONG) :: BASENAME_ORG =
'' 4534 namelist / param_mkinit_interporation / &
4538 integer :: k, i, j, iq
4542 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit INTERPORATION] / Categ[preprocess] / Origin[SCALE-RM]' 4546 read(
io_fid_conf,nml=param_mkinit_interporation,iostat=ierr)
4549 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4550 elseif( ierr > 0 )
then 4551 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_INTERPORATION. Check!' 4557 basename_org,
"DENS", 1, single=.true. )
4559 allocate( dens_org(dims(1),dims(2),dims(3)) )
4560 allocate( momz_org(dims(1),dims(2),dims(3)) )
4561 allocate( momx_org(dims(1),dims(2),dims(3)) )
4562 allocate( momy_org(dims(1),dims(2),dims(3)) )
4563 allocate( rhot_org(dims(1),dims(2),dims(3)) )
4564 allocate( qtrc_org(dims(1),dims(2),dims(3),
qa) )
4566 allocate( w_org(dims(1),dims(2),dims(3)) )
4567 allocate( u_org(dims(1),dims(2),dims(3)) )
4568 allocate( v_org(dims(1),dims(2),dims(3)) )
4569 allocate( pott_org(dims(1),dims(2),dims(3)) )
4571 allocate( cz_org(dims(1)) )
4572 allocate( fz_org(dims(1)) )
4573 allocate( cx_org(dims(2)) )
4574 allocate( fx_org(dims(2)) )
4575 allocate( cy_org(dims(3)) )
4576 allocate( fy_org(dims(3)) )
4578 call fileread( dens_org(:,:,:), &
4579 basename_org,
"DENS", 1, 1, single=.true. )
4580 call fileread( momz_org(:,:,:), &
4581 basename_org,
"MOMZ", 1, 1, single=.true. )
4582 call fileread( momx_org(:,:,:), &
4583 basename_org,
"MOMX", 1, 1, single=.true. )
4584 call fileread( momy_org(:,:,:), &
4585 basename_org,
"MOMY", 1, 1, single=.true. )
4586 call fileread( rhot_org(:,:,:), &
4587 basename_org,
"RHOT", 1, 1, single=.true. )
4589 call fileread( qtrc_org(:,:,:,iq), &
4590 basename_org,
tracer_name(iq), 1, 1, single=.true. )
4593 call fileread( cz_org(:), &
4594 basename_org,
"z" , 1, 1, single=.true. )
4595 call fileread( cx_org(:), &
4596 basename_org,
"x" , 1, 1, single=.true. )
4597 call fileread( cy_org(:), &
4598 basename_org,
"y" , 1, 1, single=.true. )
4599 call fileread( fx_org(:), &
4600 basename_org,
"xh", 1, 1, single=.true. )
4601 call fileread( fy_org(:), &
4602 basename_org,
"yh", 1, 1, single=.true. )
4606 idx_cz0( k), idx_cz1(k), &
4607 grid_cz(k), cz_org, dims(1), &
4610 idx_fz0(k), idx_fz1(k), &
4611 grid_fz(k), fz_org, dims(1), &
4616 idx_cx0(i), idx_cx1(i), &
4617 grid_cx(i), cx_org, dims(2), &
4620 idx_fx0(i), idx_fx1(i), &
4621 grid_fx(i), fx_org, dims(2), &
4626 idx_cy0(j), idx_cy1(j), &
4627 grid_cy(j), cy_org, dims(3), &
4630 idx_fy0(j), idx_fy1(j), &
4631 grid_fy(j), fy_org, dims(3), &
4639 w_org(k,i,j) = 2.0_rp * momz_org(k,i,j) / ( dens_org(k+1,i,j) + dens_org(k,i,j) )
4645 w_org(dims(1),i,j) = 0.0_rp
4652 u_org(k,i,j) = 2.0_rp * momx_org(k,i,j) / ( dens_org(k,i+1,j) + dens_org(k,i,j) )
4658 u_org(k,dims(2),j) = 2.0_rp * momx_org(k,dims(2),j) / ( dens_org(k,1,j) + dens_org(k,dims(2),j) )
4665 v_org(k,i,j) = 2.0_rp * momy_org(k,i,j) / ( dens_org(k,i,j+1) + dens_org(k,i,j) )
4671 v_org(k,i,dims(3)) = 2.0_rp * momy_org(k,i,dims(3)) / ( dens_org(k,i,1) + dens_org(k,i,dims(3)) )
4678 pott_org(k,i,j) = rhot_org(k,i,j) / dens_org(k,i,j)
4686 dens_org(k,i,j) = log( dens_org(k,i,j) )
4694 dens(k,i,j) = exp( &
4695 fact_cz0(k)*fact_cx0(i)*fact_cy0(j)*dens_org(idx_cz0(k),idx_cx0(i),idx_cy0(j)) &
4696 + fact_cz1(k)*fact_cx0(i)*fact_cy0(j)*dens_org(idx_cz1(k),idx_cx0(i),idx_cy0(j)) &
4697 + fact_cz0(k)*fact_cx1(i)*fact_cy0(j)*dens_org(idx_cz0(k),idx_cx1(i),idx_cy0(j)) &
4698 + fact_cz1(k)*fact_cx1(i)*fact_cy0(j)*dens_org(idx_cz1(k),idx_cx1(i),idx_cy0(j)) &
4699 + fact_cz0(k)*fact_cx0(i)*fact_cy1(j)*dens_org(idx_cz0(k),idx_cx0(i),idx_cy1(j)) &
4700 + fact_cz1(k)*fact_cx0(i)*fact_cy1(j)*dens_org(idx_cz1(k),idx_cx0(i),idx_cy1(j)) &
4701 + fact_cz0(k)*fact_cx1(i)*fact_cy1(j)*dens_org(idx_cz0(k),idx_cx1(i),idx_cy1(j)) &
4702 + fact_cz1(k)*fact_cx1(i)*fact_cy1(j)*dens_org(idx_cz1(k),idx_cx1(i),idx_cy1(j)) &
4705 w(k,i,j) = fact_fz0(k)*fact_cx0(i)*fact_cy0(j)*w_org(idx_fz0(k),idx_cx0(i),idx_cy0(j)) &
4706 + fact_fz1(k)*fact_cx0(i)*fact_cy0(j)*w_org(idx_fz1(k),idx_cx0(i),idx_cy0(j)) &
4707 + fact_fz0(k)*fact_cx1(i)*fact_cy0(j)*w_org(idx_fz0(k),idx_cx1(i),idx_cy0(j)) &
4708 + fact_fz1(k)*fact_cx1(i)*fact_cy0(j)*w_org(idx_fz1(k),idx_cx1(i),idx_cy0(j)) &
4709 + fact_fz0(k)*fact_cx0(i)*fact_cy1(j)*w_org(idx_fz0(k),idx_cx0(i),idx_cy1(j)) &
4710 + fact_fz1(k)*fact_cx0(i)*fact_cy1(j)*w_org(idx_fz1(k),idx_cx0(i),idx_cy1(j)) &
4711 + fact_fz0(k)*fact_cx1(i)*fact_cy1(j)*w_org(idx_fz0(k),idx_cx1(i),idx_cy1(j)) &
4712 + fact_fz1(k)*fact_cx1(i)*fact_cy1(j)*w_org(idx_fz1(k),idx_cx1(i),idx_cy1(j))
4714 u(k,i,j) = fact_cz0(k)*fact_fx0(i)*fact_cy0(j)*u_org(idx_cz0(k),idx_fx0(i),idx_cy0(j)) &
4715 + fact_cz1(k)*fact_fx0(i)*fact_cy0(j)*u_org(idx_cz1(k),idx_fx0(i),idx_cy0(j)) &
4716 + fact_cz0(k)*fact_fx1(i)*fact_cy0(j)*u_org(idx_cz0(k),idx_fx1(i),idx_cy0(j)) &
4717 + fact_cz1(k)*fact_fx1(i)*fact_cy0(j)*u_org(idx_cz1(k),idx_fx1(i),idx_cy0(j)) &
4718 + fact_cz0(k)*fact_fx0(i)*fact_cy1(j)*u_org(idx_cz0(k),idx_fx0(i),idx_cy1(j)) &
4719 + fact_cz1(k)*fact_fx0(i)*fact_cy1(j)*u_org(idx_cz1(k),idx_fx0(i),idx_cy1(j)) &
4720 + fact_cz0(k)*fact_fx1(i)*fact_cy1(j)*u_org(idx_cz0(k),idx_fx1(i),idx_cy1(j)) &
4721 + fact_cz1(k)*fact_fx1(i)*fact_cy1(j)*u_org(idx_cz1(k),idx_fx1(i),idx_cy1(j))
4723 v(k,i,j) = fact_cz0(k)*fact_cx0(i)*fact_fy0(j)*v_org(idx_cz0(k),idx_cx0(i),idx_fy0(j)) &
4724 + fact_cz1(k)*fact_cx0(i)*fact_fy0(j)*v_org(idx_cz1(k),idx_cx0(i),idx_fy0(j)) &
4725 + fact_cz0(k)*fact_cx1(i)*fact_fy0(j)*v_org(idx_cz0(k),idx_cx1(i),idx_fy0(j)) &
4726 + fact_cz1(k)*fact_cx1(i)*fact_fy0(j)*v_org(idx_cz1(k),idx_cx1(i),idx_fy0(j)) &
4727 + fact_cz0(k)*fact_cx0(i)*fact_fy1(j)*v_org(idx_cz0(k),idx_cx0(i),idx_fy1(j)) &
4728 + fact_cz1(k)*fact_cx0(i)*fact_fy1(j)*v_org(idx_cz1(k),idx_cx0(i),idx_fy1(j)) &
4729 + fact_cz0(k)*fact_cx1(i)*fact_fy1(j)*v_org(idx_cz0(k),idx_cx1(i),idx_fy1(j)) &
4730 + fact_cz1(k)*fact_cx1(i)*fact_fy1(j)*v_org(idx_cz1(k),idx_cx1(i),idx_fy1(j))
4732 pott(k,i,j) = fact_cz0(k)*fact_cx0(i)*fact_cy0(j)*pott_org(idx_cz0(k),idx_cx0(i),idx_cy0(j)) &
4733 + fact_cz1(k)*fact_cx0(i)*fact_cy0(j)*pott_org(idx_cz1(k),idx_cx0(i),idx_cy0(j)) &
4734 + fact_cz0(k)*fact_cx1(i)*fact_cy0(j)*pott_org(idx_cz0(k),idx_cx1(i),idx_cy0(j)) &
4735 + fact_cz1(k)*fact_cx1(i)*fact_cy0(j)*pott_org(idx_cz1(k),idx_cx1(i),idx_cy0(j)) &
4736 + fact_cz0(k)*fact_cx0(i)*fact_cy1(j)*pott_org(idx_cz0(k),idx_cx0(i),idx_cy1(j)) &
4737 + fact_cz1(k)*fact_cx0(i)*fact_cy1(j)*pott_org(idx_cz1(k),idx_cx0(i),idx_cy1(j)) &
4738 + fact_cz0(k)*fact_cx1(i)*fact_cy1(j)*pott_org(idx_cz0(k),idx_cx1(i),idx_cy1(j)) &
4739 + fact_cz1(k)*fact_cx1(i)*fact_cy1(j)*pott_org(idx_cz1(k),idx_cx1(i),idx_cy1(j))
4742 qtrc(k,i,j,iq) = fact_cz0(k)*fact_cx0(i)*fact_cy0(j)*qtrc_org(idx_cz0(k),idx_cx0(i),idx_cy0(j),iq) &
4743 + fact_cz1(k)*fact_cx0(i)*fact_cy0(j)*qtrc_org(idx_cz1(k),idx_cx0(i),idx_cy0(j),iq) &
4744 + fact_cz0(k)*fact_cx1(i)*fact_cy0(j)*qtrc_org(idx_cz0(k),idx_cx1(i),idx_cy0(j),iq) &
4745 + fact_cz1(k)*fact_cx1(i)*fact_cy0(j)*qtrc_org(idx_cz1(k),idx_cx1(i),idx_cy0(j),iq) &
4746 + fact_cz0(k)*fact_cx0(i)*fact_cy1(j)*qtrc_org(idx_cz0(k),idx_cx0(i),idx_cy1(j),iq) &
4747 + fact_cz1(k)*fact_cx0(i)*fact_cy1(j)*qtrc_org(idx_cz1(k),idx_cx0(i),idx_cy1(j),iq) &
4748 + fact_cz0(k)*fact_cx1(i)*fact_cy1(j)*qtrc_org(idx_cz0(k),idx_cx1(i),idx_cy1(j),iq) &
4749 + fact_cz1(k)*fact_cx1(i)*fact_cy1(j)*qtrc_org(idx_cz1(k),idx_cx1(i),idx_cy1(j),iq)
4755 deallocate( dens_org )
4756 deallocate( momz_org )
4757 deallocate( momx_org )
4758 deallocate( momy_org )
4759 deallocate( rhot_org )
4760 deallocate( qtrc_org )
4765 deallocate( pott_org )
4767 deallocate( cz_org )
4768 deallocate( fz_org )
4769 deallocate( cx_org )
4770 deallocate( fx_org )
4771 deallocate( cy_org )
4772 deallocate( fy_org )
4774 if (
i_qv > 0 )
then 4792 if (
i_qc > 0 )
then 4819 call hydrostatic_buildrho_atmos(
dens(:,:,:), &
4830 momz(k,i,j) = 0.5_rp * w(k,i,j) * (
dens(k,i,j) +
dens(k+1,i,j) )
4838 momx(k,i,j) = 0.5_rp * u(k,i,j) * (
dens(k,i+1,j) +
dens(k,i,j) )
4846 momy(k,i,j) = 0.5_rp * v(k,i,j) * (
dens(k,i,j+1) +
dens(k,i,j) )
4854 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
4860 end subroutine mkinit_interporation
4870 real(RP),
intent(out) :: fact0
4871 real(RP),
intent(out) :: fact1
4872 integer,
intent(out) :: idx0
4873 integer,
intent(out) :: idx1
4874 real(RP),
intent(in) :: x
4875 integer,
intent(in) :: nx
4876 real(RP),
intent(in) :: x_org(nx)
4877 logical,
intent(in) :: loop
4882 if ( x < x_org(1) )
then 4884 xwork = x_org(1) - ( x_org(2) - x_org(1) )**2 / ( x_org(3) - x_org(2) )
4885 fact0 = ( x_org(1) - x ) / ( x_org(1) - xwork )
4886 fact1 = ( x - xwork ) / ( x_org(1) - xwork )
4890 fact0 = ( x_org(2) - x ) / ( x_org(2) - x_org(1) )
4891 fact1 = ( x - x_org(1) ) / ( x_org(2) - x_org(1) )
4895 else if ( x > x_org(nx) )
then 4897 xwork = x_org(nx) + ( x_org(nx) - x_org(nx-1) )**2 / ( x_org(nx-1) - x_org(nx-2) )
4898 fact0 = ( xwork - x ) / ( xwork - x_org(nx) )
4899 fact1 = ( x - x_org(nx) ) / ( xwork - x_org(nx) )
4903 fact0 = ( x_org(nx) - x ) / ( x_org(nx) - x_org(nx-1) )
4904 fact1 = ( x - x_org(nx-1) ) / ( x_org(nx) - x_org(nx-1) )
4910 if ( x <= x_org(i) )
then 4911 fact0 = ( x_org(i) - x ) / ( x_org(i) - x_org(i-1) )
4912 fact1 = ( x - x_org(i-1) ) / ( x_org(i) - x_org(i-1) )
4924 subroutine mkinit_oceancouple
4928 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit OceanCouple] / Categ[preprocess] / Origin[SCALE-RM]' 4935 end subroutine mkinit_oceancouple
4939 subroutine mkinit_landcouple
4943 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit LandCouple] / Categ[preprocess] / Origin[SCALE-RM]' 4950 end subroutine mkinit_landcouple
4954 subroutine mkinit_urbancouple
4958 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit UrbanCouple] / Categ[preprocess] / Origin[SCALE-RM]' 4965 end subroutine mkinit_urbancouple
4969 subroutine mkinit_seabreeze
4979 real(RP) :: LAND_SIZE
4981 namelist / param_mkinit_seabreeze / &
4989 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit SEABREEZE] / Categ[preprocess] / Origin[SCALE-RM]' 4995 read(
io_fid_conf,nml=param_mkinit_seabreeze,iostat=ierr)
4998 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4999 elseif( ierr > 0 )
then 5000 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SEABREEZE. Check!' 5025 end subroutine mkinit_seabreeze
5029 subroutine mkinit_heatisland
5044 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit HEATISLAND] / Categ[preprocess] / Origin[SCALE-RM]' 5058 if (
grid_cx(i) >= dist * 4.0_rp &
5059 .AND.
grid_cx(i) < dist * 5.0_rp )
then 5072 end subroutine mkinit_heatisland
5076 subroutine mkinit_grayzone
5082 real(RP) :: VELX(KA)
5083 real(RP) :: VELY(KA)
5084 real(RP) :: POTT(KA)
5087 real(RP) :: PERTURB_AMP = 0.0_rp
5088 integer :: RANDOM_LIMIT = 0
5089 integer :: RANDOM_FLAG = 0
5093 namelist / param_mkinit_grayzone / &
5103 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit GRAYZONE] / Categ[preprocess] / Origin[SCALE-RM]' 5105 if (
i_qv < 1 )
then 5106 write(*,*)
'xxx QV is not registered' 5112 read(
io_fid_conf,nml=param_mkinit_grayzone,iostat=ierr)
5115 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 5116 elseif( ierr > 0 )
then 5117 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_GRAYZONE. Check!' 5129 dens(k,i,j) = rho(k)
5152 if ( random_flag == 2 .and. k <= random_limit )
then 5153 momz(k,i,j) = ( 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
5154 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
5156 momz(k,i,j) = 0.0_rp
5166 if ( random_flag == 2 .AND. k <= random_limit )
then 5167 momx(k,i,j) = ( velx(k) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
5168 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
5170 momx(k,i,j) = velx(k) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
5180 if ( random_flag == 2 .AND. k <= random_limit )
then 5181 momy(k,i,j) = ( vely(k) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
5182 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
5184 momy(k,i,j) = vely(k) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
5194 if ( random_flag == 1 .and. k <= random_limit )
then 5195 rhot(k,i,j) = ( pott(k) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
5198 rhot(k,i,j) = pott(k) *
dens(k,i,j)
5205 end subroutine mkinit_grayzone
5209 subroutine mkinit_boxaero
5216 real(RP) :: init_dens = 1.12_rp
5217 real(RP) :: init_temp = 298.18_rp
5218 real(RP) :: init_pres = 1.e+5_rp
5219 real(RP) :: init_ssliq = 0.01_rp
5221 namelist / param_mkinit_boxaero / &
5228 integer :: i, j, k, ierr
5233 if(
io_l )
write(
io_fid_log,*)
'+++ ATMOS_PHY_AE_TYPE should be KAJINO13. Stop!' 5237 if (
i_qv < 1 )
then 5238 write(*,*)
'xxx QV is not registered' 5243 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit Box model of aerosol] / Categ[preprocess] / Origin[SCALE-RM]' 5247 read(
io_fid_conf,nml=param_mkinit_boxaero,iostat=ierr)
5249 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 5250 elseif( ierr > 0 )
then 5251 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_BOXAERO. Check!' 5256 qtrc(:,:,:,:) = 0.0_rp
5257 call saturation_pres2qsat_all( qsat, init_temp, init_pres )
5262 dens(k,i,j) = init_dens
5263 momx(k,i,j) = 0.0_rp
5264 momy(k,i,j) = 0.0_rp
5265 momz(k,i,j) = 0.0_rp
5266 pott(k,i,j) = init_temp * ( p00/init_pres )**(rdry/cpdry)
5267 rhot(k,i,j) = init_dens * pott(k,i,j)
5269 qtrc(k,i,j,
i_qv) = ( init_ssliq + 1.0_rp ) * qsat
5279 end subroutine mkinit_boxaero
5283 subroutine mkinit_warmbubbleaero
5291 real(RP) :: SFC_THETA
5292 real(RP) :: SFC_PRES
5293 real(RP) :: SFC_RH = 80.0_rp
5295 real(RP) :: ENV_U = 0.0_rp
5296 real(RP) :: ENV_V = 0.0_rp
5297 real(RP) :: ENV_RH = 80.0_rp
5298 real(RP) :: ENV_L1_ZTOP = 1.e3_rp
5299 real(RP) :: ENV_L2_ZTOP = 14.e3_rp
5300 real(RP) :: ENV_L2_TLAPS = 4.e-3_rp
5301 real(RP) :: ENV_L3_TLAPS = 3.e-2_rp
5303 real(RP) :: BBL_THETA = 1.0_rp
5305 namelist / param_mkinit_warmbubble / &
5322 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit WARMBUBBLEAERO] / Categ[preprocess] / Origin[SCALE-RM]' 5324 if (
i_qv < 1 )
then 5325 write(*,*)
'xxx QV is not registerd' 5330 sfc_theta = thetastd
5335 read(
io_fid_conf,nml=param_mkinit_warmbubble,iostat=ierr)
5338 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 5339 elseif( ierr > 0 )
then 5340 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_WARMBUBBLE. Check!' 5346 pres_sfc(1,1,1) = sfc_pres
5347 pott_sfc(1,1,1) = sfc_theta
5348 qv_sfc(1,1,1) = 0.0_rp
5349 qc_sfc(1,1,1) = 0.0_rp
5352 if (
grid_cz(k) <= env_l1_ztop )
then 5353 pott(k,1,1) = sfc_theta
5354 elseif(
grid_cz(k) < env_l2_ztop )
then 5355 pott(k,1,1) = pott(k-1,1,1) + env_l2_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
5357 pott(k,1,1) = pott(k-1,1,1) + env_l3_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
5364 call hydrostatic_buildrho(
dens(:,1,1), &
5377 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
5378 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
5380 qv_sfc(1,1,1) = sfc_rh * 1.e-2_rp * qsat_sfc(1,1,1)
5382 if (
grid_cz(k) <= env_l1_ztop )
then 5383 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
5384 elseif(
grid_cz(k) <= env_l2_ztop )
then 5385 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
5392 call hydrostatic_buildrho(
dens(:,1,1), &
5408 momz(k,i,j) = 0.0_rp
5413 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) + bbl_theta * bubble(k,i,j) )
5427 end subroutine mkinit_warmbubbleaero
5431 subroutine mkinit_real
5444 end subroutine mkinit_real
integer, public imax
of computational cells: x, local
integer, public prc_num_x
x length of 2D processor topology
integer, public is
start point of inner domain: x, local
real(rp), dimension(:,:,:), allocatable, target, public momz
real(rp), public grid_domain_center_x
center position of global domain [m]: x
integer, public je
end point of inner domain: y, local
real(rp), public const_cpdry
specific heat (dry air,constant pressure) [J/kg/K]
module ATMOSPHERE / Saturation adjustment
real(rp), dimension(:,:,:), allocatable, public ocean_sfc_albedo
ocean surface albedo (0-1)
integer, public const_i_lw
long-wave radiation index
subroutine, public prc_mpistop
Abort MPI.
real(rp), dimension(:,:), allocatable, public urban_qc
integer, parameter, public i_oceancouple
real(rp), dimension(:,:,:), allocatable, target, public rhot
real(rp), dimension(:), allocatable, public grid_cxg
center coordinate [m]: x, global
module Atmosphere / Physics Cloud Microphysics
logical, public io_l
output log or not? (this process)
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0e
ocean surface roughness length for vapor [m]
real(rp), dimension(:), allocatable, public grid_cz
center coordinate [m]: z, local=global
real(rp), dimension(:,:), allocatable, public ocean_temp
temperature at uppermost ocean layer [K]
integer, parameter, public i_boxaero
real(rp), dimension(:), allocatable, public grid_fxg
face coordinate [m]: x, global
subroutine land_setup
Land setup.
module ATMOSPHERIC Variables
real(rp), public const_radius
radius of the planet [m]
real(rp), dimension(:,:,:), allocatable, target, public momx
subroutine ocean_setup
Ocean setup.
subroutine, public landuse_calc_fact
integer, parameter, public i_dycoms2_rf02_dns
integer, public ke
end point of inner domain: z, local
logical, public time_doatmos_restart
execute atmosphere restart output in this step?
logical, public time_doocean_restart
execute ocean restart output in this step?
real(rp), dimension(:,:,:), allocatable, public real_fz
geopotential height [m] (cell face )
integer, parameter, public i_turbulence
subroutine, public mkinit
Driver.
integer, parameter, public i_urbancouple
real(rp), dimension(:,:,:), allocatable, public real_cz
geopotential height [m] (cell center)
integer, parameter, public i_gravitywave
character(len=h_short), public atmos_phy_ae_type
real(rp) function faero(f0, r0, x, alpha, rhoa)
real(rp), dimension(:,:), allocatable, public urban_tb
integer, parameter, public i_grayzone
real(rp), dimension(:,:,:), allocatable, target, public dens
subroutine interporation_fact(fact0, fact1, idx0, idx1, x, x_org, nx, loop)
real(rp), dimension(:,:), allocatable, public landuse_frac_urban
urban fraction
real(rp), dimension(:,:), allocatable, public urban_raing
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_lw_up
character(len=h_short), dimension(qa_max), public tracer_name
integer, parameter, public i_landcouple
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_rain
real(rp), dimension(:,:), allocatable, public urban_uc
real(rp), dimension(:), allocatable, public grid_fx
face coordinate [m]: x, local
real(rp), public const_rdry
specific gas constant (dry air) [J/kg/K]
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_sw_up
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_lw_dn
subroutine, public urban_surface_set(countup)
Set surface boundary to other model.
module Atmosphere / Physics Radiation
real(rp), dimension(:,:), allocatable, public land_sfc_temp
land surface skin temperature [K]
subroutine, public atmos_phy_ae_kajino13_mkinit(QTRC, CCN, DENS, RHOT, m0_init, dg_init, sg_init, d_min_inp, d_max_inp, k_min_inp, k_max_inp, n_kap_inp)
real(rp), public const_ohm
angular velocity of the planet [1/s]
logical, public io_nml
output log or not? (for namelist, this process)
subroutine, public atmos_surface_get
Get surface boundary condition.
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_up
subroutine tke_setup
TKE setup.
real(rp), dimension(:,:), allocatable, public urban_tr
module ATMOSPHERE / Typical vertical profile
integer, parameter, public i_seabreeze
integer, public ia
of whole cells: x, local, with HALO
real(rp), dimension(:,:,:), allocatable, public urban_tgl
integer, public jag
of computational grids
integer function, public io_get_available_fid()
search & get available file ID
subroutine rect_setup
Bubble.
integer, public ka
of whole cells: z, local, with HALO
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_dn
integer, parameter, public i_warmbubble
subroutine, public ocean_surface_set(countup)
Put surface boundary to other model.
real(rp), public const_pre00
pressure reference [Pa]
subroutine read_sounding(DENS, VELX, VELY, POTT, QV)
Read sounding data from file.
real(rp), dimension(:), allocatable, public grid_fz
face coordinate [m]: z, local=global
integer, parameter, public i_mountainwave
subroutine, public landuse_write
Write landuse data.
integer, public jhalo
of halo cells: y
real(rp), dimension(:,:,:), allocatable, public land_temp
temperature of each soil layer [K]
module ATMOSPHERE / Hydrostatic barance
real(rp), public const_grav
standard acceleration of gravity [m/s2]
integer, public js
start point of inner domain: y, local
integer, public iag
of computational grids
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_dn
real(rp), dimension(:,:), allocatable, public urban_roff
real(rp), dimension(:,:,:), allocatable, public atmos_phy_ae_ccn
integer, parameter, public i_real
real(rp), dimension(:,:,:), allocatable, public land_sfc_albedo
land surface albedo (0-1)
integer, parameter, public i_heatisland
integer, parameter, public i_triplecouple
module administrator for restart
real(rp), dimension(:,:,:), allocatable, public urban_sfc_albedo
module ATMOSPHERE / Physics Turbulence
integer, parameter, public i_planestate
character(len=h_short), public atmos_phy_mp_type
integer, parameter, public i_khwave
integer, public ks
start point of inner domain: z, local
real(rp), dimension(:), allocatable, public grid_cx
center coordinate [m]: x, local
integer, parameter, public i_squallline
real(rp), dimension(:,:), allocatable, public urban_tc
real(rp), dimension(:,:,:), allocatable, target, public momy
logical, public time_dourban_restart
execute urban restart output in this step?
real(rp), dimension(:,:), allocatable, public urban_rainr
subroutine, public random_get(var)
Get random number.
real(dp), parameter, public const_undef8
undefined value (REAL8)
real(rp), dimension(:,:,:), allocatable, public land_water
moisture of each soil layer [m3/m3]
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_rd_sflx_downall
integer, public mkinit_type
subroutine, public admin_restart_write
Write data to restart files.
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_snow
integer, parameter, public i_rico
real(rp), public grid_domain_center_y
center position of global domain [m]: y
integer, public ie
end point of inner domain: x, local
integer, parameter, public i_ignore
real(rp), public const_eps
small number
integer, parameter, public i_lambwave
integer, parameter, public i_supercell
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0m
ocean surface roughness length for momentum [m]
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_sw_dn
integer, parameter, public i_bomex
integer, public const_i_sw
short-wave radiation index
module ATMOSPHERE / Physics Aerosol Microphysics
integer, parameter, public i_dycoms2_rf01
integer, parameter, public i_interporation
logical, public time_doland_restart
execute land restart output in this step?
real(rp), public const_pi
pi
real(rp), dimension(:,:), allocatable, public urban_tg
real(rp), dimension(:,:), allocatable, public ocean_sfc_temp
ocean surface skin temperature [K]
real(rp), dimension(:,:), allocatable, public urban_sfc_temp
real(rp), dimension(:,:,:), allocatable, public urban_trl
integer, public io_fid_conf
Config file ID.
integer, parameter, public i_warmbubbleaero
integer, parameter, public i_wk1982
integer, parameter, public i_bubblecouple
integer, parameter, public i_tracerbubble
integer, public io_fid_log
Log file ID.
integer, parameter, public i_coldbubble
integer, parameter, public i_cavityflow
module Spectran Bin Microphysics
real(rp), dimension(:,:,:), allocatable, public urban_tbl
module ATMOSPHERE / Physics Aerosol Microphysics
integer, parameter, public i_barocwave
real(rp), dimension(:,:), allocatable, public landuse_frac_land
land fraction
subroutine, public mkinit_setup
Setup.
integer, parameter, public i_dycoms2_rf02
subroutine, public land_surface_set(countup)
Put surface boundary to other model.
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0h
ocean surface roughness length for heat [m]
integer, public io_fid_nml
Log file ID (only for output namelist)
real(rp), public const_pstd
standard pressure [Pa]
real(rp), dimension(:), allocatable, public grid_fyg
face coordinate [m]: y, global
real(rp), dimension(:), allocatable, public grid_cy
center coordinate [m]: y, local
real(rp), dimension(:,:), allocatable, public urban_rainb
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_up
subroutine urban_setup
Urban setup.
subroutine flux_setup
flux setup
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
integer, public ihalo
of halo cells: x
integer, public ja
of whole cells: y, local, with HALO
real(rp), dimension(:), allocatable, public grid_fy
face coordinate [m]: y, local