71 profile_isa => atmos_profile_isa
73 hydrostatic_buildrho => atmos_hydrostatic_buildrho, &
74 hydrostatic_buildrho_atmos => atmos_hydrostatic_buildrho_atmos, &
75 hydrostatic_buildrho_bytemp => atmos_hydrostatic_buildrho_bytemp
77 saturation_pres2qsat_all => atmos_saturation_pres2qsat_all, &
78 saturation_pres2qsat_liq => atmos_saturation_pres2qsat_liq
121 integer,
public,
parameter ::
i_rico = 15
136 integer,
public,
parameter ::
i_real = 25
148 private :: bubble_setup
149 private :: sbmaero_setup
150 private :: aerosol_setup
152 private :: mkinit_planestate
153 private :: mkinit_tracerbubble
154 private :: mkinit_coldbubble
155 private :: mkinit_lambwave
156 private :: mkinit_gravitywave
157 private :: mkinit_khwave
158 private :: mkinit_turbulence
159 private :: mkinit_cavityflow
160 private :: mkinit_mountainwave
162 private :: mkinit_warmbubble
163 private :: mkinit_supercell
164 private :: mkinit_squallline
165 private :: mkinit_wk1982
166 private :: mkinit_dycoms2_rf01
167 private :: mkinit_dycoms2_rf02
168 private :: mkinit_rico
170 private :: mkinit_interporation
172 private :: mkinit_landcouple
173 private :: mkinit_oceancouple
174 private :: mkinit_urbancouple
175 private :: mkinit_seabreeze
176 private :: mkinit_heatisland
178 private :: mkinit_dycoms2_rf02_dns
180 private :: mkinit_real
182 private :: mkinit_grayzone
184 private :: mkinit_boxaero
185 private :: mkinit_warmbubbleaero
191 real(RP),
private,
parameter :: thetastd = 300.0_rp
193 real(RP),
private,
allocatable :: pres (:,:,:)
194 real(RP),
private,
allocatable :: temp (:,:,:)
195 real(RP),
private,
allocatable :: pott (:,:,:)
196 real(RP),
private,
allocatable :: qsat (:,:,:)
197 real(RP),
private,
allocatable :: qv (:,:,:)
198 real(RP),
private,
allocatable :: qc (:,:,:)
199 real(RP),
private,
allocatable :: velx (:,:,:)
200 real(RP),
private,
allocatable :: vely (:,:,:)
202 real(RP),
private,
allocatable :: pres_sfc(:,:,:)
203 real(RP),
private,
allocatable :: temp_sfc(:,:,:)
204 real(RP),
private,
allocatable :: pott_sfc(:,:,:)
205 real(RP),
private,
allocatable :: qsat_sfc(:,:,:)
206 real(RP),
private,
allocatable :: qv_sfc (:,:,:)
207 real(RP),
private,
allocatable :: qc_sfc (:,:,:)
209 real(RP),
private,
allocatable :: rndm (:,:,:)
210 real(RP),
private,
allocatable,
target :: bubble (:,:,:)
211 real(RP),
private,
allocatable,
target :: rect (:,:,:)
212 real(RP),
private,
allocatable :: gan (:)
214 logical,
private :: flg_intrp = .false.
223 character(len=H_SHORT) :: MKINIT_initname =
'NONE' 225 namelist / param_mkinit / &
233 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[make init] / Categ[preprocess] / Origin[SCALE-RM]' 239 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 240 elseif( ierr > 0 )
then 241 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT. Check!' 246 allocate( pres(
ka,
ia,
ja) )
247 allocate( temp(
ka,
ia,
ja) )
248 allocate( pott(
ka,
ia,
ja) )
249 allocate( qsat(
ka,
ia,
ja) )
252 allocate( velx(
ka,
ia,
ja) )
253 allocate( vely(
ka,
ia,
ja) )
255 allocate( pres_sfc(1,
ia,
ja) )
256 allocate( temp_sfc(1,
ia,
ja) )
257 allocate( pott_sfc(1,
ia,
ja) )
258 allocate( qsat_sfc(1,
ia,
ja) )
259 allocate( qv_sfc(1,
ia,
ja) )
260 allocate( qc_sfc(1,
ia,
ja) )
262 allocate( rndm(
ka,
ia,
ja) )
263 allocate( bubble(
ka,
ia,
ja) )
264 allocate( rect(
ka,
ia,
ja) )
266 select case(trim(mkinit_initname))
306 case(
'INTERPORATION')
323 case(
'DYCOMS2_RF02_DNS')
331 case(
'WARMBUBBLEAERO')
337 write(*,*)
' xxx Unsupported TYPE:', trim(mkinit_initname)
385 if(
io_l )
write(
io_fid_log,*)
'++++++ SKIP MAKING INITIAL DATA ++++++' 388 if(
io_l )
write(
io_fid_log,*)
'++++++ START MAKING INITIAL DATA ++++++' 393 qtrc(:,:,:,iq) = 0.0_rp
416 if(
io_l )
write(
io_fid_log,*)
'*** Aerosols for SBM are included ***' 422 call mkinit_planestate
424 call mkinit_tracerbubble
426 call mkinit_coldbubble
430 call mkinit_gravitywave
434 call mkinit_turbulence
436 call mkinit_mountainwave
438 call mkinit_warmbubble
440 call mkinit_supercell
442 call mkinit_squallline
446 call mkinit_dycoms2_rf01
448 call mkinit_dycoms2_rf02
452 call mkinit_interporation
454 call mkinit_planestate
455 call mkinit_oceancouple
457 call mkinit_planestate
458 call mkinit_landcouple
460 call mkinit_planestate
461 call mkinit_landcouple
462 call mkinit_urbancouple
464 call mkinit_planestate
465 call mkinit_oceancouple
466 call mkinit_landcouple
467 call mkinit_urbancouple
469 call mkinit_planestate
470 call mkinit_warmbubble
471 call mkinit_oceancouple
472 call mkinit_landcouple
473 call mkinit_urbancouple
475 call mkinit_planestate
476 call mkinit_seabreeze
478 call mkinit_planestate
479 call mkinit_heatisland
481 call mkinit_dycoms2_rf02_dns
489 call mkinit_warmbubbleaero
491 call mkinit_cavityflow
497 if(
io_l )
write(
io_fid_log,*)
'++++++ END MAKING INITIAL DATA ++++++' 526 subroutine bubble_setup
532 logical :: BBL_eachnode = .false.
533 real(RP) :: BBL_CZ = 2.e3_rp
534 real(RP) :: BBL_CX = 2.e3_rp
535 real(RP) :: BBL_CY = 2.e3_rp
536 real(RP) :: BBL_RZ = 0.0_rp
537 real(RP) :: BBL_RX = 0.0_rp
538 real(RP) :: BBL_RY = 0.0_rp
540 namelist / param_bubble / &
549 real(RP) :: CZ_offset
550 real(RP) :: CX_offset
551 real(RP) :: CY_offset
559 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit bubble] / Categ[preprocess] / Origin[SCALE-RM]' 566 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 567 elseif( ierr > 0 )
then 568 write(*,*)
'xxx Not appropriate names in namelist PARAM_BUBBLE. Check!' 573 if ( abs(bbl_rz*bbl_rx*bbl_ry) <= 0.0_rp )
then 575 bubble(:,:,:) = 0.0_rp
580 if ( bbl_eachnode )
then 595 dist = ( (
grid_cz(k)-cz_offset-bbl_cz)/bbl_rz )**2 &
596 + ( (
grid_cx(i)-cx_offset-bbl_cx)/bbl_rx )**2 &
597 + ( (
grid_cy(j)-cy_offset-bbl_cy)/bbl_ry )**2
599 bubble(k,i,j) = cos( 0.5_rp*pi*sqrt( min(dist,1.0_rp) ) )**2
607 end subroutine bubble_setup
617 logical :: RCT_eachnode = .false.
618 real(RP) :: RCT_CZ = 2.e3_rp
619 real(RP) :: RCT_CX = 2.e3_rp
620 real(RP) :: RCT_CY = 2.e3_rp
621 real(RP) :: RCT_RZ = 2.e3_rp
622 real(RP) :: RCT_RX = 2.e3_rp
623 real(RP) :: RCT_RY = 2.e3_rp
625 namelist / param_rect / &
634 real(RP) :: CZ_offset
635 real(RP) :: CX_offset
636 real(RP) :: CY_offset
644 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit rectangle] / Categ[preprocess] / Origin[SCALE-RM]' 653 elseif( ierr > 0 )
then 654 write(*,*)
'xxx Not appropriate names in namelist PARAM_RECT. Check!' 661 if ( rct_eachnode )
then 676 dist = 2.0_rp * max( &
677 abs(
grid_cz(k) - cz_offset - rct_cz)/rct_rz, &
678 abs(
grid_cx(i) - cx_offset - rct_cx)/rct_rx, &
679 abs(
grid_cy(j) - cy_offset - rct_cy)/rct_ry &
681 if ( dist <= 1.0_rp )
then 695 subroutine aerosol_setup
708 integer,
parameter :: ia_m0 = 1
709 integer,
parameter :: ia_m2 = 2
710 integer,
parameter :: ia_m3 = 3
711 integer,
parameter :: ia_ms = 4
712 integer,
parameter :: ia_kp = 5
713 integer,
parameter :: ik_out = 1
715 real(RP) :: m0_init = 0.0_rp
716 real(RP) :: dg_init = 80.e-9_rp
717 real(RP) :: sg_init = 1.6_rp
719 real(RP),
parameter :: d_min_def = 1.e-9_rp
720 real(RP),
parameter :: d_max_def = 1.e-5_rp
721 integer,
parameter :: n_kap_def = 1
722 real(RP),
parameter :: k_min_def = 0.e0_rp
723 real(RP),
parameter :: k_max_def = 1.e0_rp
724 real(RP) :: c_kappa = 0.3_rp
725 real(RP),
parameter :: cleannumber = 1.e-3_rp
727 real(RP) :: d_min_inp(3) = d_min_def
728 real(RP) :: d_max_inp(3) = d_max_def
729 real(RP) :: k_min_inp(3) = k_min_def
730 real(RP) :: k_max_inp(3) = k_max_def
731 integer :: n_kap_inp(3) = n_kap_def
733 namelist / param_aero / &
744 real(RP),
parameter :: rhod_ae = 1.83_rp
745 real(RP),
parameter :: conv_vl_ms = rhod_ae/1.e-12_rp
747 integer :: ia0, ik, is0, ic, k, i, j, it, iq
748 integer :: ierr, n_trans
749 real(RP) :: m0t, dgt, sgt, m2t, m3t, mst
750 real(RP),
allocatable :: aerosol_procs(:,:,:,:)
751 real(RP),
allocatable :: aerosol_activ(:,:,:,:)
752 real(RP),
allocatable :: emis_procs(:,:,:,:)
755 integer :: n_siz_max, n_kap_max, n_ctg
762 real(RP),
allocatable :: d_lw(:,:), d_ct(:,:), d_up(:,:)
763 real(RP),
allocatable :: k_lw(:,:), k_ct(:,:), k_up(:,:)
764 real(RP) :: dlogd, dk
765 real(RP),
allocatable :: d_min(:)
766 real(RP),
allocatable :: d_max(:)
767 integer,
allocatable :: n_kap(:)
768 real(RP),
allocatable :: k_min(:)
769 real(RP),
allocatable :: k_max(:)
771 real(RP) :: pott, qdry, pres
772 real(RP) :: temp, cpa, cva, qsat_tmp, ssliq, Rmoist
776 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit aerosol] / Categ[preprocess] / Origin[SCALE-RM]' 781 allocate( d_min(n_ctg) )
782 allocate( d_max(n_ctg) )
783 allocate( n_kap(n_ctg) )
784 allocate( k_min(n_ctg) )
785 allocate( k_max(n_ctg) )
787 d_min(1:n_ctg) = d_min_def
788 d_max(1:n_ctg) = d_max_def
789 n_kap(1:n_ctg) = n_kap_def
790 k_min(1:n_ctg) = k_min_def
791 k_max(1:n_ctg) = k_max_def
792 d_min_inp(1:n_ctg) = d_min(1:n_ctg)
793 d_max_inp(1:n_ctg) = d_max(1:n_ctg)
794 n_kap_inp(1:n_ctg) = n_kap(1:n_ctg)
795 k_min_inp(1:n_ctg) = k_min(1:n_ctg)
796 k_max_inp(1:n_ctg) = k_max(1:n_ctg)
803 if(
io_l )
write(
io_fid_log,*)
'xxx Not found namelist. Default used!' 805 elseif( ierr > 0 )
then 806 write(*,*)
'xxx Not appropriate names in namelist PARAM_AERO. Check!' 809 d_min(1:n_ctg) = d_min_inp(1:n_ctg)
810 d_max(1:n_ctg) = d_max_inp(1:n_ctg)
811 n_kap(1:n_ctg) = n_kap_inp(1:n_ctg)
812 k_min(1:n_ctg) = k_min_inp(1:n_ctg)
813 k_max(1:n_ctg) = k_max_inp(1:n_ctg)
823 n_siz_max = max(n_siz_max,
nsiz(ic))
824 n_kap_max = max(n_kap_max,
nkap(ic))
827 allocate( aerosol_procs(
n_atr,n_siz_max,n_kap_max,n_ctg) )
828 allocate( aerosol_activ(
n_atr,n_siz_max,n_kap_max,n_ctg) )
829 allocate( emis_procs(
n_atr,n_siz_max,n_kap_max,n_ctg) )
830 aerosol_procs(:,:,:,:) = 0._rp
831 aerosol_activ(:,:,:,:) = 0._rp
832 emis_procs(:,:,:,:) = 0._rp
841 allocate(d_lw(n_siz_max,n_ctg))
842 allocate(d_ct(n_siz_max,n_ctg))
843 allocate(d_up(n_siz_max,n_ctg))
844 allocate(k_lw(n_kap_max,n_ctg))
845 allocate(k_ct(n_kap_max,n_ctg))
846 allocate(k_up(n_kap_max,n_ctg))
856 dlogd = (
log(d_max(ic)) -
log(d_min(ic)))/
real(NSIZ(ic),kind=
rp)
859 d_lw(is0,ic) = exp(
log(d_min(ic))+dlogd*
real(is0-1,kind=RP) )
860 d_ct(is0,ic) = exp(
log(d_min(ic))+dlogd*(
real(is0 ,kind=
rp)-0.5_rp))
861 d_up(is0,ic) = exp(
log(d_min(ic))+dlogd*
real(is0 ,kind=RP) )
863 dk = (k_max(ic) - k_min(ic))/
real(n_kap(ic),kind=
rp)
865 k_lw(ik,ic) = k_min(ic) + dk *
real(ik-1,kind=
rp)
866 k_ct(ik,ic) = k_min(ic) + dk *(
real(ik ,kind=
rp)-0.5_rp)
867 k_up(ik,ic) = k_min(ic) + dk *
real(ik ,kind=
rp)
877 if ( m0t <= cleannumber )
then 882 write(
io_fid_log,*)
'*** WARNING! Initial aerosol number is set as ', cleannumber,
'[#/m3]' 886 m2t = m0t*dgt**(2.d0) *dexp(2.0d0 *(dlog(
real(sgt,kind=
dp))**2.d0))
887 m3t = m0t*dgt**(3.d0) *dexp(4.5d0 *(dlog(
real(sgt,kind=
dp))**2.d0))
888 mst = m3t*pi6*conv_vl_ms
894 if (dgt >= d_lw(is0,ic) .and. dgt < d_up(is0,ic))
then 895 aerosol_procs(ia_m0,is0,ik,ic) = aerosol_procs(ia_m0,is0,ik,ic) + m0t
896 aerosol_procs(ia_m2,is0,ik,ic) = aerosol_procs(ia_m2,is0,ik,ic) + m2t
897 aerosol_procs(ia_m3,is0,ik,ic) = aerosol_procs(ia_m3,is0,ik,ic) + m3t
898 aerosol_procs(ia_ms,is0,ik,ic) = aerosol_procs(ia_ms,is0,ik,ic) + mst*1.e-9_rp
899 elseif (dgt < d_lw(1,ic))
then 900 aerosol_procs(ia_m0,1 ,ik,ic) = aerosol_procs(ia_m0,1 ,ik,ic) + m0t
901 aerosol_procs(ia_m2,1 ,ik,ic) = aerosol_procs(ia_m2,1 ,ik,ic) + m2t
902 aerosol_procs(ia_m3,1 ,ik,ic) = aerosol_procs(ia_m3,1 ,ik,ic) + m3t
903 aerosol_procs(ia_ms,1 ,ik,ic) = aerosol_procs(ia_ms,1 ,ik,ic) + mst*1.e-9_rp
904 elseif (dgt >= d_up(
nsiz(ic),ic))
then 905 aerosol_procs(ia_m0,
nsiz(ic),ik,ic) = aerosol_procs(ia_m0,
nsiz(ic),ik,ic) + m0t
906 aerosol_procs(ia_m2,
nsiz(ic),ik,ic) = aerosol_procs(ia_m2,
nsiz(ic),ik,ic) + m2t
907 aerosol_procs(ia_m3,
nsiz(ic),ik,ic) = aerosol_procs(ia_m3,
nsiz(ic),ik,ic) + m3t
908 aerosol_procs(ia_ms,
nsiz(ic),ik,ic) = aerosol_procs(ia_ms,
nsiz(ic),ik,ic) + mst*1.e-9_rp
922 qdry = qdry -
qtrc(k,i,j,iq)
932 temp = pres / (
dens(k,i,j) * rmoist )
934 call saturation_pres2qsat_liq( qsat_tmp,temp,pres )
935 ssliq =
qtrc(k,i,j,
i_qv)/qsat_tmp - 1.0_rp
937 (c_kappa, ssliq, temp, ia_m0, ia_m2, ia_m3, &
938 n_atr,n_siz_max,n_kap_max,n_ctg,
nsiz,n_kap, &
939 d_ct,aerosol_procs, aerosol_activ)
942 ccn(k,i,j) = ccn(k,i,j) + aerosol_activ(ia_m0,is0,ik_out,
ic_mix)
960 qtrc(k,i,j,
qaes-1+it) = aerosol_procs(ia0,is0,ik,ic)/
dens(k,i,j)
972 end subroutine aerosol_setup
979 ia_m0, ia_m2, ia_m3, &
980 n_atr,n_siz_max,n_kap_max,n_ctg,n_siz,n_kap, &
981 d_ct, aerosol_procs, aerosol_activ)
989 real(RP),
intent(in) :: super
990 real(RP),
intent(in) :: c_kappa
991 real(RP),
intent(in) :: temp_k
992 integer,
intent(in) :: ia_m0, ia_m2, ia_m3
993 integer,
intent(in) :: n_atr
994 integer,
intent(in) :: n_siz_max
995 integer,
intent(in) :: n_kap_max
996 integer,
intent(in) :: n_ctg
997 real(RP),
intent(in) :: d_ct(n_siz_max,n_ctg)
998 real(RP) :: aerosol_procs(n_atr,n_siz_max,n_kap_max,n_ctg)
999 real(RP) :: aerosol_activ(n_atr,n_siz_max,n_kap_max,n_ctg)
1000 integer,
intent(in) :: n_siz(n_ctg), n_kap(n_ctg)
1002 real(RP),
parameter :: two3 = 2._rp/3._rp
1003 real(RP),
parameter :: rt2 = sqrt(2._rp)
1004 real(RP),
parameter :: twort2 = rt2
1005 real(RP),
parameter :: thrrt2 = 3._rp/rt2
1006 real(RP) :: smax_inv
1007 real(RP) :: am,scrit_am,aa,tc,st,bb,ac
1008 real(RP) :: m0t,m2t,m3t,dgt,sgt,dm2
1010 real(RP) :: tmp1, tmp2, tmp3
1011 real(RP) :: ccn_frc,cca_frc,ccv_frc
1012 integer :: is0, ik, ic
1014 aerosol_activ(:,:,:,:) = 0._rp
1016 if (super.le.0._rp)
return 1018 smax_inv = 1._rp / super
1021 tc = temp_k - const_tem00
1022 if (tc >= 0._rp )
then 1023 st = 75.94_rp-0.1365_rp*tc-0.3827e-3_rp*tc**2._rp
1025 st = 75.93_rp +0.115_rp*tc &
1026 + 6.818e-2_rp*tc**2._rp+6.511e-3_rp*tc**3._rp &
1027 + 2.933e-4_rp*tc**4._rp+6.283e-6_rp*tc**5._rp &
1028 + 5.285e-8_rp*tc**6._rp
1034 aa = 2._rp * st *
const_mvap * 1.e-3_rp / (const_dwatr * const_r * temp_k )
1037 do ik = 1, n_kap(ic)
1038 do is0 = 1, n_siz(ic)
1039 m0t = aerosol_procs(ia_m0,is0,ik,ic)
1040 m2t = aerosol_procs(ia_m2,is0,ik,ic)
1041 m3t = aerosol_procs(ia_m3,is0,ik,ic)
1042 call diag_ds(m0t,m2t,m3t,dgt,sgt,dm2)
1043 if (dgt <= 0._rp) dgt = d_ct(is0,ic)
1044 if (sgt <= 0._rp) sgt = 1.3_rp
1047 if (bb > 0._rp .and. am > 0._rp )
then 1048 scrit_am = 2._rp/sqrt(bb)*(aa/(3._rp*am))**1.5_rp
1052 ac = am * (scrit_am * smax_inv)**two3
1054 tmp1 =
log(d_crit) -
log(dgt)
1055 tmp2 = 1._rp/(rt2*
log(sgt))
1057 ccn_frc= 0.5_rp*(1._rp-erf(tmp1*tmp2))
1058 cca_frc= 0.5_rp*(1._rp-erf(tmp1*tmp2-twort2*tmp3))
1059 ccv_frc= 0.5_rp*(1._rp-erf(tmp1*tmp2-thrrt2*tmp3))
1060 aerosol_activ(ia_m0,is0,ik,ic) = ccn_frc * aerosol_procs(ia_m0,is0,ik,ic)
1061 aerosol_activ(ia_m2,is0,ik,ic) = cca_frc * aerosol_procs(ia_m2,is0,ik,ic)
1062 aerosol_activ(ia_m3,is0,ik,ic) = ccv_frc * aerosol_procs(ia_m3,is0,ik,ic)
1070 subroutine diag_ds(m0,m2,m3, & !i
1073 real(RP) :: m0,m2,m3,dg,sg,m3_bar,m2_bar
1074 real(RP) :: m2_new,m2_old,dm2
1075 real(RP),
parameter :: sgmax=2.5_rp
1076 real(RP),
parameter :: rk1=2._rp
1077 real(RP),
parameter :: rk2=3._rp
1078 real(RP),
parameter :: ratio =rk1/rk2
1079 real(RP),
parameter :: rk1_hat=1._rp/(ratio*(rk2-rk1))
1080 real(RP),
parameter :: rk2_hat=ratio/(rk1-rk2)
1084 if (m0 <= 0._rp .or. m2 <= 0._rp .or. m3 <= 0._rp)
then 1096 dg = m2_bar**rk1_hat*m3_bar**rk2_hat
1098 if (m2_bar/m3_bar**ratio < 1._rp)
then 1099 sg = exp(sqrt(2._rp/(rk1*(rk1-rk2)) &
1100 *
log(m2_bar/m3_bar**ratio) ))
1103 if (sg > sgmax)
then 1106 call diag_d2(m0,m3,sg, &
1111 if (m2_bar/m3_bar**ratio >= 1._rp)
then 1113 call diag_d2(m0,m3,sg, &
1119 dm2 = m2_old - m2_new
1126 subroutine diag_d2(m0,m3,sg, & !i
1129 real(RP) :: dg,sg,m0,m2,m3,aaa
1130 real(RP),
parameter :: one3=1._rp/3._rp
1131 aaa = m0 * exp( 4.5_rp * (
log(sg)**2._rp) )
1133 m2 = m0 * dg ** 2._rp * exp( 2.0_rp * (
log(sg)**2._rp) )
1136 end subroutine diag_d2
1139 subroutine sbmaero_setup
1147 real(RP) :: xasta, xaend, dxaer
1148 real(RP),
allocatable :: xabnd( : ), xactr( : )
1150 real(RP) :: F0_AERO = 1.e+7_rp
1151 real(RP) :: R0_AERO = 1.e-7_rp
1152 real(RP) :: R_MAX = 1.e-06_rp
1153 real(RP) :: R_MIN = 1.e-08_rp
1154 real(RP) :: A_ALPHA = 3.0_rp
1155 real(RP) :: RHO_AERO = 2.25e+03_rp
1157 namelist / param_sbmaero / &
1166 integer :: iq, i, j, k
1170 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit aerobin] / Categ[preprocess] / Origin[SCALE-RM]' 1177 if(
io_l )
write(
io_fid_log,*)
'xxx Not found namelist. default value used' 1178 elseif( ierr > 0 )
then 1179 write(*,*)
'xxx Not appropriate names in namelist SBMAERO. Check!' 1184 if( nccn /= 0 )
then 1185 allocate( gan( nccn ) )
1186 allocate( xactr(nccn) )
1187 allocate( xabnd(nccn+1) )
1189 xasta =
log( rho_aero*4.0_rp/3.0_rp*pi * ( r_min )**3 )
1190 xaend =
log( rho_aero*4.0_rp/3.0_rp*pi * ( r_max )**3 )
1191 dxaer = ( xaend-xasta )/nccn
1193 xabnd( iq ) = xasta + dxaer*( iq-1 )
1196 xactr( iq ) = ( xabnd( iq )+xabnd( iq+1 ) )*0.5_rp
1199 gan( iq ) =
faero( f0_aero,r0_aero,xactr( iq ), a_alpha, rho_aero )*exp( xactr(iq) )
1208 qtrc(k,i,j,iq) = 0.0_rp
1215 if( nccn /= 0 )
then 1232 end subroutine sbmaero_setup
1235 function faero( f0,r0,x,alpha,rhoa )
1240 real(RP),
intent(in) :: x, f0, r0, alpha, rhoa
1245 rad = ( exp(x) * 3.0_rp / 4.0_rp / pi / rhoa )**(1.0_rp/3.0_rp)
1247 faero = f0 * (rad/r0)**(-alpha)
1270 real(RP) :: FLX_rain = 0.0_rp
1271 real(RP) :: FLX_snow = 0.0_rp
1272 real(RP) :: FLX_LW_dn = 0.0_rp
1273 real(RP) :: FLX_SW_dn = 0.0_rp
1275 namelist / param_mkinit_flux / &
1287 read(
io_fid_conf,nml=param_mkinit_flux,iostat=ierr)
1289 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1290 elseif( ierr > 0 )
then 1291 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_FLUX. Check!' 1298 sflx_rain(i,j) = flx_rain
1299 sflx_snow(i,j) = flx_snow
1301 sflx_lw_up(i,j) = 0.0_rp
1302 sflx_lw_dn(i,j) = flx_lw_dn
1303 sflx_sw_up(i,j) = 0.0_rp
1304 sflx_sw_dn(i,j) = flx_sw_dn
1306 toaflx_lw_up(i,j) = 0.0_rp
1307 toaflx_lw_dn(i,j) = 0.0_rp
1308 toaflx_sw_up(i,j) = 0.0_rp
1309 toaflx_sw_dn(i,j) = 0.0_rp
1311 sflx_rad_dn(i,j,1,1) = flx_sw_dn
1312 sflx_rad_dn(i,j,1,2) = 0.0_rp
1313 sflx_rad_dn(i,j,2,1) = flx_lw_dn
1314 sflx_rad_dn(i,j,2,2) = 0.0_rp
1331 real(RP) :: LND_TEMP
1332 real(RP) :: LND_WATER = 0.15_rp
1333 real(RP) :: SFC_TEMP
1334 real(RP) :: SFC_albedo_LW = 0.01_rp
1335 real(RP) :: SFC_albedo_SW = 0.20_rp
1340 namelist /param_mkinit_land/ &
1352 read(
io_fid_conf,nml=param_mkinit_land,iostat=ierr)
1354 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1355 elseif( ierr > 0 )
then 1356 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_LAND. Check!' 1386 real(RP) :: OCN_TEMP
1387 real(RP) :: SFC_TEMP
1388 real(RP) :: SFC_albedo_LW = 0.04_rp
1389 real(RP) :: SFC_albedo_SW = 0.05_rp
1390 real(RP) :: SFC_Z0M = 1.0e-4_rp
1391 real(RP) :: SFC_Z0H = 1.0e-4_rp
1392 real(RP) :: SFC_Z0E = 1.0e-4_rp
1397 namelist /param_mkinit_ocean/ &
1411 read(
io_fid_conf,nml=param_mkinit_ocean,iostat=ierr)
1413 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1414 elseif( ierr > 0 )
then 1415 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_OCEAN. Check!' 1457 real(RP) :: URB_ROOF_TEMP
1458 real(RP) :: URB_BLDG_TEMP
1459 real(RP) :: URB_GRND_TEMP
1460 real(RP) :: URB_CNPY_TEMP
1461 real(RP) :: URB_CNPY_HMDT = 0.0_rp
1462 real(RP) :: URB_CNPY_WIND = 0.0_rp
1463 real(RP) :: URB_ROOF_LAYER_TEMP
1464 real(RP) :: URB_BLDG_LAYER_TEMP
1465 real(RP) :: URB_GRND_LAYER_TEMP
1466 real(RP) :: URB_ROOF_RAIN = 0.0_rp
1467 real(RP) :: URB_BLDG_RAIN = 0.0_rp
1468 real(RP) :: URB_GRND_RAIN = 0.0_rp
1469 real(RP) :: URB_RUNOFF = 0.0_rp
1470 real(RP) :: URB_SFC_TEMP
1471 real(RP) :: URB_ALB_LW = 0.0_rp
1472 real(RP) :: URB_ALB_SW = 0.0_rp
1477 namelist /param_mkinit_urban/ &
1484 urb_roof_layer_temp, &
1485 urb_bldg_layer_temp, &
1486 urb_grnd_layer_temp, &
1495 urb_roof_temp = thetastd
1496 urb_bldg_temp = thetastd
1497 urb_grnd_temp = thetastd
1498 urb_cnpy_temp = thetastd
1499 urb_roof_layer_temp = thetastd
1500 urb_bldg_layer_temp = thetastd
1501 urb_grnd_layer_temp = thetastd
1503 urb_sfc_temp = thetastd
1507 read(
io_fid_conf,nml=param_mkinit_urban,iostat=ierr)
1509 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1510 elseif( ierr > 0 )
then 1511 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_URBAN. Check!' 1544 DENS, VELX, VELY, POTT, QV )
1546 real(RP),
intent(out) :: DENS(
ka)
1547 real(RP),
intent(out) :: VELX(
ka)
1548 real(RP),
intent(out) :: VELY(
ka)
1549 real(RP),
intent(out) :: POTT(
ka)
1550 real(RP),
intent(out) :: QV (
ka)
1552 real(RP) :: TEMP(
ka)
1553 real(RP) :: PRES(
ka)
1556 character(len=H_LONG) :: ENV_IN_SOUNDING_file =
'' 1558 integer,
parameter :: EXP_klim = 100
1561 real(RP) :: SFC_THETA
1562 real(RP) :: SFC_PRES
1565 real(RP) :: EXP_z (exp_klim+1)
1566 real(RP) :: EXP_pott(exp_klim+1)
1567 real(RP) :: EXP_qv (exp_klim+1)
1568 real(RP) :: EXP_u (exp_klim+1)
1569 real(RP) :: EXP_v (exp_klim+1)
1571 real(RP) :: fact1, fact2
1576 namelist /param_mkinit_sounding/ &
1577 env_in_sounding_file
1581 read(
io_fid_conf,nml=param_mkinit_sounding,iostat=ierr)
1584 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1585 elseif( ierr > 0 )
then 1586 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SOUNDING. Check!' 1592 if(
io_l )
write(
io_fid_log,*)
'+++ Input sounding file:', trim(env_in_sounding_file)
1595 file = trim(env_in_sounding_file), &
1596 form =
'formatted', &
1600 if ( ierr /= 0 )
then 1601 if(
io_l )
write(*,*)
'xxx Input file not found!' 1605 read(fid,*) sfc_pres, sfc_theta, sfc_qv
1607 if(
io_l )
write(
io_fid_log,*)
'+++ Surface pressure [hPa]', sfc_pres
1608 if(
io_l )
write(
io_fid_log,*)
'+++ Surface pot. temp [K]', sfc_theta
1609 if(
io_l )
write(
io_fid_log,*)
'+++ Surface water vapor [g/kg]', sfc_qv
1612 read(fid,*,iostat=ierr) exp_z(k), exp_pott(k), exp_qv(k), exp_u(k), exp_v(k)
1613 if ( ierr /= 0 )
exit 1621 exp_pott(1) = sfc_theta
1625 exp_z(exp_kmax+1) = 100.e3_rp
1626 exp_pott(exp_kmax+1) = exp_pott(exp_kmax)
1627 exp_qv(exp_kmax+1) = exp_qv(exp_kmax)
1628 exp_u(exp_kmax+1) = exp_u(exp_kmax)
1629 exp_v(exp_kmax+1) = exp_v(exp_kmax)
1631 do k = 1, exp_kmax+1
1632 exp_qv(k) = exp_qv(k) * 1.e-3_rp
1636 pres_sfc = sfc_pres * 1.e2_rp
1637 pott_sfc = sfc_theta
1638 qv_sfc = sfc_qv * 1.e-3_rp
1645 do kref = 2, exp_kmax+1
1646 if (
grid_cz(k) > exp_z(kref-1) &
1647 .AND.
grid_cz(k) <= exp_z(kref ) )
then 1649 fact1 = ( exp_z(kref) -
grid_cz(k) ) / ( exp_z(kref)-exp_z(kref-1) )
1650 fact2 = (
grid_cz(k) - exp_z(kref-1) ) / ( exp_z(kref)-exp_z(kref-1) )
1652 pott(k) = exp_pott(kref-1) * fact1 &
1653 + exp_pott(kref ) * fact2
1654 qv(k) = exp_qv(kref-1) * fact1 &
1655 + exp_qv(kref ) * fact2
1656 velx(k) = exp_u(kref-1) * fact1 &
1657 + exp_u(kref ) * fact2
1658 vely(k) = exp_v(kref-1) * fact1 &
1659 + exp_v(kref ) * fact2
1665 call hydrostatic_buildrho( dens(:), &
1682 subroutine mkinit_planestate
1686 real(RP) :: SFC_THETA
1687 real(RP) :: SFC_PRES
1688 real(RP) :: SFC_RH = 0.0_rp
1690 real(RP) :: ENV_THETA
1691 real(RP) :: ENV_TLAPS = 0.0_rp
1692 real(RP) :: ENV_U = 0.0_rp
1693 real(RP) :: ENV_V = 0.0_rp
1694 real(RP) :: ENV_RH = 0.0_rp
1696 real(RP) :: RANDOM_THETA = 0.0_rp
1697 real(RP) :: RANDOM_U = 0.0_rp
1698 real(RP) :: RANDOM_V = 0.0_rp
1699 real(RP) :: RANDOM_RH = 0.0_rp
1701 namelist / param_mkinit_planestate / &
1720 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit Horiz_UNIFORM] / Categ[preprocess] / Origin[SCALE-RM]' 1722 sfc_theta = thetastd
1724 env_theta = thetastd
1728 read(
io_fid_conf,nml=param_mkinit_planestate,iostat=ierr)
1731 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1732 elseif( ierr > 0 )
then 1733 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_PLANESTATE. Check!' 1741 pott_sfc(1,i,j) = sfc_theta
1742 pres_sfc(1,i,j) = sfc_pres
1743 qv_sfc(1,i,j) = 0.0_rp
1744 qc_sfc(1,i,j) = 0.0_rp
1753 if ( env_theta < 0.0_rp )
then 1755 call profile_isa(
ka,
ks,
ke, &
1768 pott(k,i,j) = env_theta + env_tlaps *
real_cz(k,i,j)
1776 call hydrostatic_buildrho(
dens(:,:,:), &
1789 call saturation_pres2qsat_all( qsat_sfc(1,:,:), temp_sfc(1,:,:), pres_sfc(1,:,:) )
1790 call saturation_pres2qsat_all( qsat(:,:,:), temp(:,:,:), pres(:,:,:) )
1795 qv_sfc(1,i,j) = ( sfc_rh + rndm(
ks-1,i,j) * random_rh ) * 1.e-2_rp * qsat_sfc(1,i,j)
1798 qv(k,i,j) = ( env_rh + rndm(k,i,j) * random_rh ) * 1.e-2_rp * qsat(k,i,j)
1806 pott_sfc(1,i,j) = pott_sfc(1,i,j) + rndm(
ks-1,i,j) * random_theta
1809 pott(k,i,j) = pott(k,i,j) + rndm(k,i,j) * random_theta
1815 call hydrostatic_buildrho(
dens(:,:,:), &
1827 call comm_vars8(
dens(:,:,:), 1 )
1828 call comm_wait (
dens(:,:,:), 1 )
1834 momx(k,i,j) = ( env_u + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_u ) &
1835 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
1844 momy(k,i,j) = ( env_v + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_v ) &
1845 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
1853 momz(k,i,j) = 0.0_rp
1854 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
1866 end subroutine mkinit_planestate
1870 subroutine mkinit_tracerbubble
1875 real(RP) :: SFC_THETA
1876 real(RP) :: SFC_PRES
1878 real(RP) :: ENV_THETA
1879 real(RP) :: ENV_U = 0.0_rp
1880 real(RP) :: ENV_V = 0.0_rp
1882 character(len=H_SHORT) :: SHAPE_NC =
'BUBBLE' 1883 real(RP) :: BBL_NC = 1.0_rp
1885 namelist / param_mkinit_tracerbubble / &
1894 real(RP),
pointer :: shapeFac(:,:,:) => null()
1896 integer :: k, i, j, iq
1901 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit TRACERBUBBLE] / Categ[preprocess] / Origin[SCALE-RM]' 1903 sfc_theta = thetastd
1905 env_theta = thetastd
1909 read(
io_fid_conf,nml=param_mkinit_tracerbubble,iostat=ierr)
1912 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1913 elseif( ierr > 0 )
then 1914 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_TRACERBUBBLE. Check!' 1920 pres_sfc(1,1,1) = sfc_pres
1921 pott_sfc(1,1,1) = sfc_theta
1922 qv_sfc(1,1,1) = 0.0_rp
1923 qc_sfc(1,1,1) = 0.0_rp
1926 pott(k,1,1) = env_theta
1932 call hydrostatic_buildrho(
dens(:,1,1), &
1948 momz(k,i,j) = 0.0_rp
1951 rhot(k,i,j) = pott(k,1,1) *
dens(k,1,1)
1954 qtrc(k,i,j,iq) = 0.0_rp
1961 if (
i_nc > 0 )
then 1963 select case(shape_nc)
1971 write(*,*)
'xxx SHAPE_NC=', trim(shape_nc),
' cannot be used on advect. Check!' 1978 qtrc(k,i,j,
i_nc) = bbl_nc * shapefac(k,i,j)
1983 write(*,*)
'xxx tracer I_NC is not defined. Check!' 1988 write(*,*)
'xxx SBM cannot be used on tracerbubble. Check!' 1994 end subroutine mkinit_tracerbubble
2006 subroutine mkinit_coldbubble
2010 real(RP) :: SFC_THETA
2011 real(RP) :: SFC_PRES
2013 real(RP) :: ENV_THETA
2015 real(RP) :: BBL_TEMP = -15.0_rp
2017 namelist / param_mkinit_coldbubble / &
2026 integer :: k, i, j, iq
2030 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit COLDBUBBLE] / Categ[preprocess] / Origin[SCALE-RM]' 2032 sfc_theta = thetastd
2034 env_theta = thetastd
2038 read(
io_fid_conf,nml=param_mkinit_coldbubble,iostat=ierr)
2041 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2042 elseif( ierr > 0 )
then 2043 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_COLDBUBBLE. Check!' 2048 rovcp = rdry / cpdry
2051 pres_sfc(1,1,1) = sfc_pres
2052 pott_sfc(1,1,1) = sfc_theta
2053 qv_sfc(1,1,1) = 0.0_rp
2054 qc_sfc(1,1,1) = 0.0_rp
2057 pott(k,1,1) = env_theta
2063 call hydrostatic_buildrho(
dens(:,1,1), &
2079 momz(k,i,j) = 0.0_rp
2080 momx(k,i,j) = 0.0_rp
2081 momy(k,i,j) = 0.0_rp
2084 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) &
2085 + bbl_temp * ( p00/pres(k,1,1) )**rovcp * bubble(k,i,j) )
2088 qtrc(k,i,j,iq) = 0.0_rp
2095 write(*,*)
'xxx SBM cannot be used on coldbubble. Check!' 2100 end subroutine mkinit_coldbubble
2104 subroutine mkinit_lambwave
2108 real(RP) :: SFC_PRES
2110 real(RP) :: ENV_U = 0.0_rp
2111 real(RP) :: ENV_V = 0.0_rp
2112 real(RP) :: ENV_TEMP = 300.0_rp
2114 real(RP) :: BBL_PRES = 100._rp
2116 namelist / param_mkinit_lambwave / &
2126 integer :: k, i, j, iq
2130 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit LAMBWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2136 read(
io_fid_conf,nml=param_mkinit_lambwave,iostat=ierr)
2139 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2140 elseif( ierr > 0 )
then 2141 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_LAMBWAVE. Check!' 2146 rovcp = rdry / cpdry
2151 dens(k,i,j) = sfc_pres/(rdry*env_temp) * exp( - grav/(rdry*env_temp) *
grid_cz(k) )
2152 momz(k,i,j) = 0.0_rp
2157 pres(k,i,j) =
dens(k,i,j) * env_temp * rdry + bbl_pres * bubble(k,i,j)
2159 rhot(k,i,j) =
dens(k,i,j) * env_temp * ( p00/pres(k,i,j) )**rovcp
2162 qtrc(k,i,j,iq) = 0.0_rp
2169 write(*,*)
'xxx SBM cannot be used on lambwave. Check!' 2174 end subroutine mkinit_lambwave
2179 subroutine mkinit_gravitywave
2183 real(RP) :: SFC_THETA
2184 real(RP) :: SFC_PRES
2186 real(RP) :: ENV_U = 20.0_rp
2187 real(RP) :: ENV_V = 0.0_rp
2188 real(RP) :: ENV_BVF = 0.01_rp
2190 real(RP) :: BBL_THETA = 0.01_rp
2192 namelist / param_mkinit_gravitywave / &
2201 integer :: k, i, j, iq
2205 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit GRAVITYWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2207 sfc_theta = thetastd
2212 read(
io_fid_conf,nml=param_mkinit_gravitywave,iostat=ierr)
2215 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2216 elseif( ierr > 0 )
then 2217 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_GRAVITYWAVE. Check!' 2223 pres_sfc(1,1,1) = sfc_pres
2224 pott_sfc(1,1,1) = sfc_theta
2225 qv_sfc(1,1,1) = 0.0_rp
2226 qc_sfc(1,1,1) = 0.0_rp
2229 pott(k,1,1) = sfc_theta * exp( env_bvf*env_bvf / grav *
grid_cz(k) )
2235 call hydrostatic_buildrho(
dens(:,1,1), &
2251 momz(k,i,j) = 0.0_rp
2256 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) + bbl_theta * bubble(k,i,j) )
2259 qtrc(k,i,j,iq) = 0.0_rp
2266 write(*,*)
'xxx SBM cannot be used on gravitywave. Check!' 2271 end subroutine mkinit_gravitywave
2275 subroutine mkinit_khwave
2279 real(RP) :: SFC_THETA
2280 real(RP) :: SFC_PRES
2282 real(RP) :: ENV_L1_ZTOP = 1900.0_rp
2283 real(RP) :: ENV_L3_ZBOTTOM = 2100.0_rp
2284 real(RP) :: ENV_L1_THETA = 300.0_rp
2285 real(RP) :: ENV_L3_THETA = 301.0_rp
2286 real(RP) :: ENV_L1_U = 0.0_rp
2287 real(RP) :: ENV_L3_U = 20.0_rp
2289 real(RP) :: RANDOM_U = 0.0_rp
2291 namelist / param_mkinit_khwave / &
2305 integer :: k, i, j, iq
2309 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit KHWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2311 sfc_theta = thetastd
2316 read(
io_fid_conf,nml=param_mkinit_khwave,iostat=ierr)
2319 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2320 elseif( ierr > 0 )
then 2321 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_KHWAVE. Check!' 2327 pres_sfc(1,1,1) = sfc_pres
2328 pott_sfc(1,1,1) = sfc_theta
2329 qv_sfc(1,1,1) = 0.0_rp
2330 qc_sfc(1,1,1) = 0.0_rp
2333 fact = (
grid_cz(k)-env_l1_ztop ) / ( env_l3_zbottom-env_l1_ztop )
2334 fact = max( min( fact, 1.0_rp ), 0.0_rp )
2336 pott(k,1,1) = env_l1_theta * ( 1.0_rp - fact ) &
2337 + env_l3_theta * ( fact )
2344 call hydrostatic_buildrho(
dens(:,1,1), &
2357 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
2358 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
2364 momz(k,i,j) = 0.0_rp
2365 momy(k,i,j) = 0.0_rp
2366 rhot(k,i,j) =
dens(k,1,1) * pott(k,1,1)
2369 qtrc(k,i,j,iq) = 0.0_rp
2379 fact = (
grid_cz(k)-env_l1_ztop ) / ( env_l3_zbottom-env_l1_ztop )
2380 fact = max( min( fact, 1.0_rp ), 0.0_rp )
2382 momx(k,i,j) = ( env_l1_u * ( 1.0_rp - fact ) &
2383 + env_l3_u * ( fact ) &
2384 + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_u &
2391 write(*,*)
'xxx SBM cannot be used on khwave. Check!' 2396 end subroutine mkinit_khwave
2400 subroutine mkinit_turbulence
2404 real(RP) :: SFC_THETA
2405 real(RP) :: SFC_PRES
2406 real(RP) :: SFC_RH = 0.0_rp
2408 real(RP) :: ENV_THETA
2409 real(RP) :: ENV_TLAPS = 4.e-3_rp
2410 real(RP) :: ENV_U = 5.0_rp
2411 real(RP) :: ENV_V = 0.0_rp
2412 real(RP) :: ENV_RH = 0.0_rp
2414 real(RP) :: RANDOM_THETA = 1.0_rp
2415 real(RP) :: RANDOM_U = 0.0_rp
2416 real(RP) :: RANDOM_V = 0.0_rp
2417 real(RP) :: RANDOM_RH = 0.0_rp
2419 namelist / param_mkinit_turbulence / &
2434 integer :: k, i, j, iq
2438 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit TURBULENCE] / Categ[preprocess] / Origin[SCALE-RM]' 2440 sfc_theta = thetastd
2442 env_theta = thetastd
2446 read(
io_fid_conf,nml=param_mkinit_turbulence,iostat=ierr)
2449 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2450 elseif( ierr > 0 )
then 2451 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_TURBULENCE. Check!' 2457 pres_sfc(1,1,1) = sfc_pres
2458 pott_sfc(1,1,1) = sfc_theta
2459 qv_sfc(1,1,1) = 0.0_rp
2460 qc_sfc(1,1,1) = 0.0_rp
2463 pott(k,1,1) = env_theta + env_tlaps *
grid_cz(k)
2469 call hydrostatic_buildrho(
dens(:,1,1), &
2482 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
2483 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
2488 qv_sfc(1,i,j) = ( sfc_rh + rndm(
ks-1,i,j) * random_rh ) * 1.e-2_rp * qsat_sfc(1,1,1)
2489 qc_sfc(1,i,j) = 0.0_rp
2492 qv(k,i,j) = ( env_rh + rndm(k,i,j) * random_rh ) * 1.e-2_rp * qsat(k,1,1)
2501 pres_sfc(1,i,j) = sfc_pres
2502 pott_sfc(1,i,j) = sfc_theta + rndm(
ks-1,i,j) * random_theta
2505 pott(k,i,j) = env_theta + env_tlaps *
grid_cz(k) + rndm(k,i,j) * random_theta
2511 call hydrostatic_buildrho(
dens(:,:,:), &
2523 call comm_vars8(
dens(:,:,:), 1 )
2524 call comm_wait (
dens(:,:,:), 1 )
2530 momx(k,i,j) = ( env_u + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_u ) &
2531 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
2540 momy(k,i,j) = ( env_v + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_v ) &
2541 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
2549 momz(k,i,j) = 0.0_rp
2550 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
2563 qtrc(k,i,j,iq) = 0.0_rp
2572 write(*,*)
'xxx SBM cannot be used on turbulence. Check!' 2577 end subroutine mkinit_turbulence
2581 subroutine mkinit_cavityflow
2585 real(RP) :: REYNOLDS_NUM = 4.d02
2586 real(RP) :: MACH_NUM = 3.d-2
2587 real(RP) :: TEMP0 = 300.d0
2589 namelist / param_mkinit_cavityflow / &
2596 real(RP) :: Gam, Cs2
2598 real(RP),
parameter :: PRES0 = 1000.e+2_rp
2599 real(RP),
parameter :: Ulid = 10.0_rp
2606 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit CAVITYFLOW] / Categ[preprocess] / Origin[SCALE-RM]' 2610 read(
io_fid_conf,nml=param_mkinit_cavityflow,iostat=ierr)
2613 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2614 elseif( ierr > 0 )
then 2615 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_CAVITYFLOW. Check!' 2620 gam = cpdry / ( cpdry - rdry )
2621 cs2 = ( ulid / mach_num )**2
2622 temp = cs2 / ( gam * rdry )
2623 dens0 = pres0 / ( rdry * temp )
2635 momz(k,i,j) = 0.0_rp
2636 momx(k,i,j) = 0.0_rp
2637 momy(k,i,j) = 0.0_rp
2639 rhot(k,i,j) = p00/rdry * (p00/pres0)**((rdry - cpdry)/cpdry)
2640 qtrc(k,i,j,:) = 0.0_rp
2648 end subroutine mkinit_cavityflow
2652 subroutine mkinit_mountainwave
2656 real(RP) :: SFC_THETA
2657 real(RP) :: SFC_PRES
2659 real(RP) :: ENV_U = 0.0_rp
2660 real(RP) :: ENV_V = 0.0_rp
2662 real(RP) :: SCORER = 2.e-3_rp
2663 real(RP) :: BBL_NC = 0.0_rp
2665 namelist / param_mkinit_mountainwave / &
2673 real(RP) :: Ustar2, N2
2680 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit MOUNTAINWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2682 sfc_theta = thetastd
2687 read(
io_fid_conf,nml=param_mkinit_mountainwave,iostat=ierr)
2690 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2691 elseif( ierr > 0 )
then 2692 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_MOUNTAINWAVE. Check!' 2700 pres_sfc(1,i,j) = sfc_pres
2701 pott_sfc(1,i,j) = sfc_theta
2702 qv_sfc(1,i,j) = 0.0_rp
2703 qc_sfc(1,i,j) = 0.0_rp
2710 ustar2 = env_u * env_u + env_v * env_v
2711 n2 = ustar2 * (scorer*scorer)
2713 pott(k,i,j) = sfc_theta * exp( n2 / grav *
real_cz(k,i,j) )
2721 call hydrostatic_buildrho(
dens(:,:,:), &
2737 momz(k,i,j) = 0.0_rp
2740 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
2742 qtrc(k,i,j,:) = 0.0_rp
2748 if ( bbl_nc > 0.0_rp )
then 2749 if (
i_nc > 0 )
then 2753 qtrc(k,i,j,
i_nc) = bbl_nc * bubble(k,i,j)
2758 write(*,*)
'xxx tracer I_NC is not defined. Check!' 2764 end subroutine mkinit_mountainwave
2768 subroutine mkinit_warmbubble
2772 real(RP) :: SFC_THETA
2773 real(RP) :: SFC_PRES
2774 real(RP) :: SFC_RH = 80.0_rp
2776 real(RP) :: ENV_U = 0.0_rp
2777 real(RP) :: ENV_V = 0.0_rp
2778 real(RP) :: ENV_RH = 80.0_rp
2779 real(RP) :: ENV_L1_ZTOP = 1.e3_rp
2780 real(RP) :: ENV_L2_ZTOP = 14.e3_rp
2781 real(RP) :: ENV_L2_TLAPS = 4.e-3_rp
2782 real(RP) :: ENV_L3_TLAPS = 3.e-2_rp
2784 real(RP) :: BBL_THETA = 1.0_rp
2786 namelist / param_mkinit_warmbubble / &
2803 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit WARMBUBBLE] / Categ[preprocess] / Origin[SCALE-RM]' 2805 sfc_theta = thetastd
2810 read(
io_fid_conf,nml=param_mkinit_warmbubble,iostat=ierr)
2813 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2814 elseif( ierr > 0 )
then 2815 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_WARMBUBBLE. Check!' 2821 pres_sfc(1,1,1) = sfc_pres
2822 pott_sfc(1,1,1) = sfc_theta
2823 qv_sfc(1,1,1) = 0.0_rp
2824 qc_sfc(1,1,1) = 0.0_rp
2827 if (
grid_cz(k) <= env_l1_ztop )
then 2828 pott(k,1,1) = sfc_theta
2829 elseif(
grid_cz(k) < env_l2_ztop )
then 2830 pott(k,1,1) = pott(k-1,1,1) + env_l2_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
2832 pott(k,1,1) = pott(k-1,1,1) + env_l3_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
2839 call hydrostatic_buildrho(
dens(:,1,1), &
2852 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
2853 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
2855 qv_sfc(1,1,1) = sfc_rh * 1.e-2_rp * qsat_sfc(1,1,1)
2857 if (
grid_cz(k) <= env_l1_ztop )
then 2858 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
2859 elseif(
grid_cz(k) <= env_l2_ztop )
then 2860 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
2867 call hydrostatic_buildrho(
dens(:,1,1), &
2883 momz(k,i,j) = 0.0_rp
2888 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) + bbl_theta * bubble(k,i,j) )
2898 end subroutine mkinit_warmbubble
2902 subroutine mkinit_supercell
2906 real(RP) :: VELX(
ka)
2907 real(RP) :: VELY(
ka)
2908 real(RP) :: POTT(
ka)
2912 real(RP) :: BBL_THETA = 3.d0
2914 namelist / param_mkinit_supercell / &
2922 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit SUPERCELL] / Categ[preprocess] / Origin[SCALE-RM]' 2926 read(
io_fid_conf,nml=param_mkinit_supercell,iostat=ierr)
2929 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2930 elseif( ierr > 0 )
then 2931 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SUPERCELL. Check!' 2941 dens(k,i,j) = rho(k)
2942 momz(k,i,j) = 0.0_rp
2943 momx(k,i,j) = rho(k) * velx(k)
2944 momy(k,i,j) = rho(k) * vely(k)
2947 rhot(k,i,j) = rho(k) * ( pott(k) + bbl_theta * bubble(k,i,j) )
2957 end subroutine mkinit_supercell
2961 subroutine mkinit_squallline
2965 real(RP) :: VELX(
ka)
2966 real(RP) :: VELY(
ka)
2967 real(RP) :: POTT(
ka)
2970 real(RP) :: RANDOM_THETA = 0.01_rp
2971 real(RP) :: OFFSET_velx = 12.0_rp
2972 real(RP) :: OFFSET_vely = -2.0_rp
2974 namelist / param_mkinit_squallline / &
2984 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit SQUALLLINE] / Categ[preprocess] / Origin[SCALE-RM]' 2988 read(
io_fid_conf,nml=param_mkinit_squallline,iostat=ierr)
2991 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2992 elseif( ierr > 0 )
then 2993 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SQUALLLINE. Check!' 3004 dens(k,i,j) = rho(k)
3005 momz(k,i,j) = 0.0_rp
3006 momx(k,i,j) = ( velx(k) - offset_velx ) * rho(k)
3007 momy(k,i,j) = ( vely(k) - offset_vely ) * rho(k)
3008 rhot(k,i,j) = rho(k) * ( pott(k) + rndm(k,i,j) * random_theta )
3020 end subroutine mkinit_squallline
3024 subroutine mkinit_wk1982
3028 real(RP) :: SFC_THETA = 300.0_rp
3029 real(RP) :: SFC_PRES
3031 real(RP) :: TR_Z = 12000.0_rp
3032 real(RP) :: TR_THETA = 343.0_rp
3033 real(RP) :: TR_TEMP = 213.0_rp
3034 real(RP) :: SHEAR_Z = 3000.0_rp
3035 real(RP) :: SHEAR_U = 15.0_rp
3037 real(RP) :: BBL_THETA = 3.d0
3039 namelist / param_mkinit_wk1982 / &
3049 real(RP) :: rh (
ka,
ia,
ja)
3050 real(RP) :: rh_sfc(1 ,
ia,
ja)
3053 integer :: k, i, j, iq
3057 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit WK1982] / Categ[preprocess] / Origin[SCALE-RM]' 3062 read(
io_fid_conf,nml=param_mkinit_wk1982,iostat=ierr)
3064 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3065 elseif( ierr > 0 )
then 3066 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_WK1982. Check!' 3074 pres_sfc(1,i,j) = sfc_pres
3075 pott_sfc(1,i,j) = sfc_theta
3076 qv_sfc(1,i,j) = 0.0_rp
3077 qc_sfc(1,i,j) = 0.0_rp
3080 if (
real_cz(k,i,j) <= tr_z )
then 3081 pott(k,i,j) = pott_sfc(1,i,j) &
3082 + ( tr_theta - pott_sfc(1,i,j) ) * (
real_cz(k,i,j) / tr_z )**1.25_rp
3084 pott(k,i,j) = tr_theta * exp( grav * (
real_cz(k,i,j) - tr_z ) / cpdry / tr_temp )
3094 call hydrostatic_buildrho(
dens(:,:,:), &
3109 rh_sfc(1,i,j) = 1.0_rp - 0.75_rp * (
real_fz(
ks-1,i,j) / tr_z )**1.25_rp
3112 if (
real_cz(k,i,j) <= tr_z )
then 3113 rh(k,i,j) = 1.0_rp - 0.75_rp * (
real_cz(k,i,j) / tr_z )**1.25_rp
3121 call saturation_pres2qsat_all( qsat_sfc(1,:,:), temp_sfc(1,:,:), pres_sfc(1,:,:) )
3122 call saturation_pres2qsat_all( qsat(:,:,:), temp(:,:,:), pres(:,:,:) )
3126 qv_sfc(1,i,j) = rh_sfc(1,i,j) * qsat_sfc(1,i,j)
3128 qv(k,i,j) = rh(k,i,j) * qsat(k,i,j)
3134 call hydrostatic_buildrho(
dens(:,:,:), &
3147 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
3150 call comm_vars8(
dens(:,:,:), 1 )
3151 call comm_wait (
dens(:,:,:), 1 )
3156 momx(k,i,j) = shear_u * tanh(
real_cz(k,i,j) / shear_z ) &
3157 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3165 momy(k,i,j) = 0.0_rp
3166 momz(k,i,j) = 0.0_rp
3167 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3170 rhot(k,i,j) =
dens(k,i,j) * ( pott(k,i,j) + bbl_theta * bubble(k,i,j) )
3183 qtrc(k,i,j,iq) = 0.0_rp
3194 end subroutine mkinit_wk1982
3198 subroutine mkinit_dycoms2_rf01
3202 real(RP) :: PERTURB_AMP = 0.0_rp
3203 integer :: RANDOM_LIMIT = 5
3204 integer :: RANDOM_FLAG = 0
3207 logical :: USE_LWSET = .false.
3209 namelist / param_mkinit_rf01 / &
3215 real(RP) :: potl(
ka,
ia,
ja)
3224 integer :: k, i, j, iq
3227 pi2 = atan(1.0_rp) * 2.0_rp
3230 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit DYCOMS2RF01] / Categ[preprocess] / Origin[SCALE-RM]' 3233 read(
io_fid_conf,nml=param_mkinit_rf01,iostat=ierr)
3235 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3236 elseif( ierr > 0 )
then 3237 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RF01. Check!' 3242 if ( use_lwset )
then 3252 pres_sfc(1,i,j) = 1017.8e2_rp
3253 pott_sfc(1,i,j) = 289.0_rp
3254 qv_sfc(1,i,j) = 0.0_rp
3255 qc_sfc(1,i,j) = 0.0_rp
3258 velx(k,i,j) = 7.0_rp
3259 vely(k,i,j) = -5.5_rp
3260 if (
grid_cz(k) < 820.0_rp )
then 3261 potl(k,i,j) = 289.0_rp - grav / cpdry *
grid_cz(k) * geop_sw
3262 elseif(
grid_cz(k) <= 860.0_rp )
then 3263 sint = sin( pi2 * (
grid_cz(k)-840.0_rp ) / 20.0_rp ) * 0.5_rp
3264 potl(k,i,j) = ( 289.0_rp - grav / cpdry *
grid_cz(k) * geop_sw ) * (0.5_rp-sint) &
3265 + ( 297.5_rp+sign(abs(
grid_cz(k)-840.0_rp)**(1.0_rp/3.0_rp),
grid_cz(k)-840.0_rp) &
3266 - grav / cpdry *
grid_cz(k) * geop_sw ) * (0.5_rp+sint)
3268 potl(k,i,j) = 297.5_rp + (
grid_cz(k)-840.0_rp )**(1.0_rp/3.0_rp) &
3269 - grav / cpdry *
grid_cz(k) * geop_sw
3280 call hydrostatic_buildrho(
dens(:,:,:), &
3295 qv_sfc(1,i,j) = 9.0e-3_rp
3296 qc_sfc(1,i,j) = 0.0_rp
3299 if (
grid_cz(k) < 820.0_rp )
then 3301 elseif(
grid_cz(k) <= 860.0_rp )
then 3302 sint = sin( pi2 * (
grid_cz(k)-840.0_rp ) / 20.0_rp ) * 0.5_rp
3303 qall = 9.0e-3_rp * (0.5_rp-sint) &
3304 + 1.5e-3_rp * (0.5_rp+sint)
3305 elseif(
grid_cz(k) <= 5000.0_rp )
then 3311 if (
grid_cz(k) <= 600.0_rp )
then 3313 elseif(
grid_cz(k) < 820.0_rp )
then 3314 fact = (
grid_cz(k)-600.0_rp ) / ( 840.0_rp-600.0_rp )
3315 qc(k,i,j) = 0.45e-3_rp * fact
3316 elseif(
grid_cz(k) <= 860.0_rp )
then 3317 sint = sin( pi2 * (
grid_cz(k)-840.0_rp ) / 20.0_rp ) * 0.5_rp
3318 fact = (
grid_cz(k)-600.0_rp ) / ( 840.0_rp-600.0_rp )
3319 qc(k,i,j) = 0.45e-3_rp * fact * (0.5_rp-sint)
3324 qv(k,i,j) = qall - qc(k,i,j)
3333 temp(k,i,j) = temp(k,i,j) + lhv / cpdry * qc(k,i,j)
3339 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
3358 call comm_vars8(
dens(:,:,:), 1 )
3359 call comm_wait (
dens(:,:,:), 1 )
3365 if ( random_flag == 2 .and. k <= random_limit )
then 3366 momz(k,i,j) = ( 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3367 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
3369 momz(k,i,j) = 0.0_rp
3379 if ( random_flag == 2 .AND. k <= random_limit )
then 3380 momx(k,i,j) = ( velx(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3381 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3383 momx(k,i,j) = velx(k,i,j) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3393 if ( random_flag == 2 .AND. k <= random_limit )
then 3394 momy(k,i,j) = ( vely(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3395 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3397 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3407 if ( random_flag == 1 .and. k <= random_limit )
then 3408 rhot(k,i,j) = ( pott(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3411 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3421 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
3438 if (
i_nc > 0 )
then 3442 if ( qc(k,i,j) > 0.0_rp )
then 3456 end subroutine mkinit_dycoms2_rf01
3460 subroutine mkinit_dycoms2_rf02
3464 real(RP) :: PERTURB_AMP = 0.0_rp
3465 integer :: RANDOM_LIMIT = 5
3466 integer :: RANDOM_FLAG = 0
3470 namelist / param_mkinit_rf02 / &
3475 real(RP) :: potl(
ka,
ia,
ja)
3483 integer :: k, i, j, iq
3486 pi2 = atan(1.0_rp) * 2.0_rp
3488 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit DYCOMS2RF02] / Categ[preprocess] / Origin[SCALE-RM]' 3491 read(
io_fid_conf,nml=param_mkinit_rf02,iostat=ierr)
3493 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3494 elseif( ierr > 0 )
then 3495 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RF02. Check!' 3505 pres_sfc(1,i,j) = 1017.8e2_rp
3506 pott_sfc(1,i,j) = 288.3_rp
3507 qv_sfc(1,i,j) = 0.0_rp
3508 qc_sfc(1,i,j) = 0.0_rp
3511 velx(k,i,j) = 3.0_rp + 4.3 *
grid_cz(k)*1.e-3_rp
3512 vely(k,i,j) = -9.0_rp + 5.6 *
grid_cz(k)*1.e-3_rp
3514 if (
grid_cz(k) < 775.0_rp )
then 3515 potl(k,i,j) = 288.3_rp
3516 else if (
grid_cz(k) <= 815.0_rp )
then 3517 sint = sin( pi2 * (
grid_cz(k) - 795.0_rp)/20.0_rp )
3518 potl(k,i,j) = 288.3_rp * (1.0_rp-sint)*0.5_rp &
3519 + ( 295.0_rp+sign(abs(
grid_cz(k)-795.0_rp)**(1.0_rp/3.0_rp),
grid_cz(k)-795.0_rp) ) &
3520 * (1.0_rp+sint)*0.5_rp
3522 potl(k,i,j) = 295.0_rp + (
grid_cz(k)-795.0_rp )**(1.0_rp/3.0_rp)
3532 call hydrostatic_buildrho(
dens(:,:,:), &
3547 qv_sfc(1,i,j) = 9.45e-3_rp
3548 qc_sfc(1,i,j) = 0.0_rp
3551 if (
grid_cz(k) < 775.0_rp )
then 3553 else if (
grid_cz(k) <= 815.0_rp )
then 3554 sint = sin( pi2 * (
grid_cz(k) - 795.0_rp)/20.0_rp )
3555 qall = 9.45e-3_rp * (1.0_rp-sint)*0.5_rp + &
3556 ( 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
3558 qall = 5.e-3_rp - 3.e-3_rp * ( 1.0_rp - exp( (795.0_rp-
grid_cz(k))/500.0_rp ) )
3561 if(
grid_cz(k) < 400.0_rp )
then 3563 elseif(
grid_cz(k) < 775.0_rp )
then 3564 fact = (
grid_cz(k)-400.0_rp ) / ( 795.0_rp-400.0_rp )
3565 qc(k,i,j) = 0.65e-3_rp * fact
3566 elseif(
grid_cz(k) <= 815.0_rp )
then 3567 sint = sin( pi2 * (
grid_cz(k)-795.0_rp )/20.0_rp )
3568 fact = (
grid_cz(k)-400.0_rp ) / ( 795.0_rp-400.0_rp )
3569 qc(k,i,j) = 0.65e-3_rp * fact * (1.0_rp-sint) * 0.5_rp
3573 qv(k,i,j) = qall - qc(k,i,j)
3582 temp(k,i,j) = temp(k,i,j) + lhv / cpdry * qc(k,i,j)
3588 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
3607 call comm_vars8(
dens(:,:,:), 1 )
3608 call comm_wait (
dens(:,:,:), 1 )
3614 if( random_flag == 2 .and. k <= random_limit )
then 3615 momz(k,i,j) = ( 0.0_rp + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3616 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
3618 momz(k,i,j) = 0.0_rp
3628 if( random_flag == 2 .and. k <= random_limit )
then 3629 momx(k,i,j) = ( velx(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3630 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3632 momx(k,i,j) = ( velx(k,i,j) ) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3642 if( random_flag == 2 .and. k <= random_limit )
then 3643 momy(k,i,j) = ( vely(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3644 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3646 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3656 if( random_flag == 1 .and. k <= random_limit )
then 3657 rhot(k,i,j) = ( pott(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3660 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3671 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
3688 if (
i_nc > 0 )
then 3692 if ( qc(k,i,j) > 0.0_rp )
then 3706 end subroutine mkinit_dycoms2_rf02
3710 subroutine mkinit_dycoms2_rf02_dns
3714 real(RP) :: ZB = 750.0_rp
3716 real(RP) :: CONST_U = 0.0_rp
3717 real(RP) :: CONST_V = 0.0_rp
3718 real(RP) :: PRES_ZB = 93060.0_rp
3719 real(RP) :: PERTURB_AMP = 0.0_rp
3720 integer :: RANDOM_LIMIT = 5
3721 integer :: RANDOM_FLAG = 0
3725 namelist / param_mkinit_rf02_dns / &
3726 zb, const_u, const_v,pres_zb,&
3731 real(RP) :: potl(
ka,
ia,
ja)
3739 integer :: k, i, j, iq
3742 pi2 = atan(1.0_rp) * 2.0_rp
3745 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit DYCOMS2RF02_DNS] / Categ[preprocess] / Origin[SCALE-RM]' 3748 read(
io_fid_conf,nml=param_mkinit_rf02_dns,iostat=ierr)
3750 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3751 elseif( ierr > 0 )
then 3752 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RF02_DNS. Check!' 3762 pres_sfc(1,i,j) = pres_zb
3769 velx(k,i,j) = const_u
3770 vely(k,i,j) = const_v
3773 if ( zb+
grid_cz(k) <= 795.0_rp )
then 3774 potl(k,i,j) = 288.3_rp
3784 potl(k,i,j) = 295.0_rp + ( zb+
grid_cz(k)-795.0_rp )**(1.0_rp/3.0_rp)
3785 qall = 5.e-3_rp - 3.e-3_rp * ( 1.0_rp - exp( (795.0_rp-(zb+
grid_cz(k)))/500.0_rp ) )
3788 if( zb+
grid_cz(k) < 400.0_rp )
then 3790 elseif( zb+
grid_cz(k) <= 795.0_rp )
then 3791 fact = ( (zb+
grid_cz(k))-400.0_rp ) / ( 795.0_rp-400.0_rp )
3792 qc(k,i,j) = 0.8e-3_rp * fact
3796 qv(k,i,j) = qall - qc(k,i,j)
3805 pott_sfc(1,:,:) = potl(
ks,:,:)-0.5*(potl(
ks+1,:,:)-potl(
ks,:,:))
3806 qv_sfc(1,:,:) = qv(
ks,:,:)-0.5*(qv(
ks+1,:,:)-qv(
ks,:,:))
3807 qc_sfc(1,:,:) = qc(
ks,:,:)-0.5*(qc(
ks+1,:,:)-qc(
ks,:,:))
3810 call hydrostatic_buildrho(
dens(:,:,:), &
3823 rovcp = rdry / cpdry
3827 pott(k,i,j) = potl(k,i,j) + lhv / cpdry * qc(k,i,j) * ( p00/pres(k,i,j) )**rovcp
3834 call hydrostatic_buildrho(
dens(:,:,:), &
3853 call comm_vars8(
dens(:,:,:), 1 )
3854 call comm_wait (
dens(:,:,:), 1 )
3861 if( random_flag == 2 .and. k <= random_limit )
then 3862 momz(k,i,j) = ( 0.0_rp + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3863 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
3865 momz(k,i,j) = 0.0_rp
3876 if( random_flag == 2 .and. k <= random_limit )
then 3877 momx(k,i,j) = ( velx(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3878 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3880 momx(k,i,j) = ( velx(k,i,j) ) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3891 if( random_flag == 2 .and. k <= random_limit )
then 3892 momy(k,i,j) = ( vely(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3893 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3895 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3906 if( random_flag == 1 .and. k <= random_limit )
then 3907 rhot(k,i,j) = ( pott(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3910 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3921 qtrc(k,i,j,iq) = 0.0_rp
3933 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
3952 if (
i_nc > 0 )
then 3956 if ( qc(k,i,j) > 0.0_rp )
then 3967 end subroutine mkinit_dycoms2_rf02_dns
3971 subroutine mkinit_rico
3975 real(RP):: PERTURB_AMP_PT = 0.1_rp
3976 real(RP):: PERTURB_AMP_QV = 2.5e-5_rp
3978 namelist / param_mkinit_rico / &
3982 real(RP) :: potl(
ka,
ia,
ja)
3987 integer :: k, i, j, iq
3991 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit RICO] / Categ[preprocess] / Origin[SCALE-RM]' 3994 read(
io_fid_conf,nml=param_mkinit_rico,iostat=ierr)
3996 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3997 elseif( ierr > 0 )
then 3998 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RICO. Check!' 4007 pres_sfc(1,i,j) = 1015.4e2_rp
4008 pott_sfc(1,i,j) = 297.9_rp
4009 qv_sfc(1,i,j) = 0.0_rp
4010 qc_sfc(1,i,j) = 0.0_rp
4014 if (
grid_cz(k) < 740.0_rp )
then 4015 potl(k,i,j) = 297.9_rp
4017 fact = (
grid_cz(k)-740.0_rp ) * ( 317.0_rp-297.9_rp ) / ( 4000.0_rp-740.0_rp )
4018 potl(k,i,j) = 297.9_rp + fact
4022 if (
grid_cz(k) <= 4000.0_rp )
then 4023 fact = (
grid_cz(k)-0.0_rp ) * ( -1.9_rp+9.9_rp ) / ( 4000.0_rp-0.0_rp )
4024 velx(k,i,j) = -9.9_rp + fact
4025 vely(k,i,j) = -3.8_rp
4027 velx(k,i,j) = -1.9_rp
4028 vely(k,i,j) = -3.8_rp
4040 call hydrostatic_buildrho(
dens(:,:,:), &
4055 qv_sfc(1,i,j) = 16.0e-3_rp
4056 qc_sfc(1,i,j) = 0.0_rp
4060 if (
grid_cz(k) <= 740.0_rp )
then 4061 fact = (
grid_cz(k)-0.0_rp ) * ( 13.8e-3_rp-16.0e-3_rp ) / ( 740.0_rp-0.0_rp )
4062 qall = 16.0e-3_rp + fact
4063 elseif (
grid_cz(k) <= 3260.0_rp )
then 4064 fact = (
grid_cz(k)-740.0_rp ) * ( 2.4e-3_rp-13.8e-3_rp ) / ( 3260.0_rp-740.0_rp )
4065 qall = 13.8e-3_rp + fact
4066 elseif(
grid_cz(k) <= 4000.0_rp )
then 4067 fact = (
grid_cz(k)-3260.0_rp ) * ( 1.8e-3_rp-2.4e-3_rp ) / ( 4000.0_rp-3260.0_rp )
4068 qall = 2.4e-3_rp + fact
4074 qv(k,i,j) = qall - qc(k,i,j)
4083 temp(k,i,j) = temp(k,i,j) + lhv / cpdry * qc(k,i,j)
4089 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
4109 call comm_vars8(
dens(:,:,:), 1 )
4110 call comm_wait (
dens(:,:,:), 1 )
4115 momz(k,i,j) = 0.0_rp
4123 momx(k,i,j) = velx(k,i,j) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
4131 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
4140 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)
4152 qtrc(k,i,j,
i_qv) = qv(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp_qv &
4164 qtrc(k,i,j,
i_qv) = qv(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp_qv
4170 if (
i_nc > 0 )
then 4174 if ( qc(k,i,j) > 0.0_rp )
then 4188 end subroutine mkinit_rico
4191 subroutine mkinit_interporation
4203 real(RP) :: fact_cz0(
ka)
4204 real(RP) :: fact_cz1(
ka)
4205 real(RP) :: fact_fz0(
ka)
4206 real(RP) :: fact_fz1(
ka)
4207 real(RP) :: fact_cx0(
ia)
4208 real(RP) :: fact_cx1(
ia)
4209 real(RP) :: fact_fx0(
ia)
4210 real(RP) :: fact_fx1(
ia)
4211 real(RP) :: fact_cy0(
ja)
4212 real(RP) :: fact_cy1(
ja)
4213 real(RP) :: fact_fy0(
ja)
4214 real(RP) :: fact_fy1(
ja)
4216 integer :: idx_cz0(
ka)
4217 integer :: idx_cz1(
ka)
4218 integer :: idx_fz0(
ka)
4219 integer :: idx_fz1(
ka)
4220 integer :: idx_cx0(
ia)
4221 integer :: idx_cx1(
ia)
4222 integer :: idx_fx0(
ia)
4223 integer :: idx_fx1(
ia)
4224 integer :: idx_cy0(
ja)
4225 integer :: idx_cy1(
ja)
4226 integer :: idx_fy0(
ja)
4227 integer :: idx_fy1(
ja)
4229 real(RP),
allocatable :: DENS_ORG(:,:,:)
4230 real(RP),
allocatable :: MOMZ_ORG(:,:,:)
4231 real(RP),
allocatable :: MOMX_ORG(:,:,:)
4232 real(RP),
allocatable :: MOMY_ORG(:,:,:)
4233 real(RP),
allocatable :: RHOT_ORG(:,:,:)
4234 real(RP),
allocatable :: QTRC_ORG(:,:,:,:)
4236 real(RP),
allocatable :: W_ORG(:,:,:)
4237 real(RP),
allocatable :: U_ORG(:,:,:)
4238 real(RP),
allocatable :: V_ORG(:,:,:)
4239 real(RP),
allocatable :: POTT_ORG(:,:,:)
4241 real(RP),
allocatable :: CZ_ORG(:)
4242 real(RP),
allocatable :: FZ_ORG(:)
4243 real(RP),
allocatable :: CX_ORG(:)
4244 real(RP),
allocatable :: FX_ORG(:)
4245 real(RP),
allocatable :: CY_ORG(:)
4246 real(RP),
allocatable :: FY_ORG(:)
4250 character(len=H_LONG) :: BASENAME_ORG =
'' 4252 namelist / param_mkinit_interporation / &
4256 integer :: k, i, j, iq
4260 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit INTERPORATION] / Categ[preprocess] / Origin[SCALE-RM]' 4264 read(
io_fid_conf,nml=param_mkinit_interporation,iostat=ierr)
4267 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4268 elseif( ierr > 0 )
then 4269 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_INTERPORATION. Check!' 4275 basename_org,
"DENS", 1, single=.true. )
4277 allocate( dens_org(dims(1),dims(2),dims(3)) )
4278 allocate( momz_org(dims(1),dims(2),dims(3)) )
4279 allocate( momx_org(dims(1),dims(2),dims(3)) )
4280 allocate( momy_org(dims(1),dims(2),dims(3)) )
4281 allocate( rhot_org(dims(1),dims(2),dims(3)) )
4282 allocate( qtrc_org(dims(1),dims(2),dims(3),
qa) )
4284 allocate( w_org(dims(1),dims(2),dims(3)) )
4285 allocate( u_org(dims(1),dims(2),dims(3)) )
4286 allocate( v_org(dims(1),dims(2),dims(3)) )
4287 allocate( pott_org(dims(1),dims(2),dims(3)) )
4289 allocate( cz_org(dims(1)) )
4290 allocate( fz_org(dims(1)) )
4291 allocate( cx_org(dims(2)) )
4292 allocate( fx_org(dims(2)) )
4293 allocate( cy_org(dims(3)) )
4294 allocate( fy_org(dims(3)) )
4296 call fileread( dens_org(:,:,:), &
4297 basename_org,
"DENS", 1, 1, single=.true. )
4298 call fileread( momz_org(:,:,:), &
4299 basename_org,
"MOMZ", 1, 1, single=.true. )
4300 call fileread( momx_org(:,:,:), &
4301 basename_org,
"MOMX", 1, 1, single=.true. )
4302 call fileread( momy_org(:,:,:), &
4303 basename_org,
"MOMY", 1, 1, single=.true. )
4304 call fileread( rhot_org(:,:,:), &
4305 basename_org,
"RHOT", 1, 1, single=.true. )
4307 call fileread( qtrc_org(:,:,:,iq), &
4308 basename_org,
aq_name(iq), 1, 1, single=.true. )
4311 call fileread( cz_org(:), &
4312 basename_org,
"z" , 1, 1, single=.true. )
4313 call fileread( cx_org(:), &
4314 basename_org,
"x" , 1, 1, single=.true. )
4315 call fileread( cy_org(:), &
4316 basename_org,
"y" , 1, 1, single=.true. )
4317 call fileread( fx_org(:), &
4318 basename_org,
"xh", 1, 1, single=.true. )
4319 call fileread( fy_org(:), &
4320 basename_org,
"yh", 1, 1, single=.true. )
4324 idx_cz0( k), idx_cz1(k), &
4325 grid_cz(k), cz_org, dims(1), &
4328 idx_fz0(k), idx_fz1(k), &
4329 grid_fz(k), fz_org, dims(1), &
4334 idx_cx0(i), idx_cx1(i), &
4335 grid_cx(i), cx_org, dims(2), &
4338 idx_fx0(i), idx_fx1(i), &
4339 grid_fx(i), fx_org, dims(2), &
4344 idx_cy0(j), idx_cy1(j), &
4345 grid_cy(j), cy_org, dims(3), &
4348 idx_fy0(j), idx_fy1(j), &
4349 grid_fy(j), fy_org, dims(3), &
4357 w_org(k,i,j) = 2.0_rp * momz_org(k,i,j) / ( dens_org(k+1,i,j) + dens_org(k,i,j) )
4363 w_org(dims(1),i,j) = 0.0_rp
4370 u_org(k,i,j) = 2.0_rp * momx_org(k,i,j) / ( dens_org(k,i+1,j) + dens_org(k,i,j) )
4376 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) )
4383 v_org(k,i,j) = 2.0_rp * momy_org(k,i,j) / ( dens_org(k,i,j+1) + dens_org(k,i,j) )
4389 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)) )
4396 pott_org(k,i,j) = rhot_org(k,i,j) / dens_org(k,i,j)
4404 dens_org(k,i,j) =
log( dens_org(k,i,j) )
4412 dens(k,i,j) = exp( &
4413 fact_cz0(k)*fact_cx0(i)*fact_cy0(j)*dens_org(idx_cz0(k),idx_cx0(i),idx_cy0(j)) &
4414 + fact_cz1(k)*fact_cx0(i)*fact_cy0(j)*dens_org(idx_cz1(k),idx_cx0(i),idx_cy0(j)) &
4415 + fact_cz0(k)*fact_cx1(i)*fact_cy0(j)*dens_org(idx_cz0(k),idx_cx1(i),idx_cy0(j)) &
4416 + fact_cz1(k)*fact_cx1(i)*fact_cy0(j)*dens_org(idx_cz1(k),idx_cx1(i),idx_cy0(j)) &
4417 + fact_cz0(k)*fact_cx0(i)*fact_cy1(j)*dens_org(idx_cz0(k),idx_cx0(i),idx_cy1(j)) &
4418 + fact_cz1(k)*fact_cx0(i)*fact_cy1(j)*dens_org(idx_cz1(k),idx_cx0(i),idx_cy1(j)) &
4419 + fact_cz0(k)*fact_cx1(i)*fact_cy1(j)*dens_org(idx_cz0(k),idx_cx1(i),idx_cy1(j)) &
4420 + fact_cz1(k)*fact_cx1(i)*fact_cy1(j)*dens_org(idx_cz1(k),idx_cx1(i),idx_cy1(j)) &
4423 w(k,i,j) = fact_fz0(k)*fact_cx0(i)*fact_cy0(j)*w_org(idx_fz0(k),idx_cx0(i),idx_cy0(j)) &
4424 + fact_fz1(k)*fact_cx0(i)*fact_cy0(j)*w_org(idx_fz1(k),idx_cx0(i),idx_cy0(j)) &
4425 + fact_fz0(k)*fact_cx1(i)*fact_cy0(j)*w_org(idx_fz0(k),idx_cx1(i),idx_cy0(j)) &
4426 + fact_fz1(k)*fact_cx1(i)*fact_cy0(j)*w_org(idx_fz1(k),idx_cx1(i),idx_cy0(j)) &
4427 + fact_fz0(k)*fact_cx0(i)*fact_cy1(j)*w_org(idx_fz0(k),idx_cx0(i),idx_cy1(j)) &
4428 + fact_fz1(k)*fact_cx0(i)*fact_cy1(j)*w_org(idx_fz1(k),idx_cx0(i),idx_cy1(j)) &
4429 + fact_fz0(k)*fact_cx1(i)*fact_cy1(j)*w_org(idx_fz0(k),idx_cx1(i),idx_cy1(j)) &
4430 + fact_fz1(k)*fact_cx1(i)*fact_cy1(j)*w_org(idx_fz1(k),idx_cx1(i),idx_cy1(j))
4432 u(k,i,j) = fact_cz0(k)*fact_fx0(i)*fact_cy0(j)*u_org(idx_cz0(k),idx_fx0(i),idx_cy0(j)) &
4433 + fact_cz1(k)*fact_fx0(i)*fact_cy0(j)*u_org(idx_cz1(k),idx_fx0(i),idx_cy0(j)) &
4434 + fact_cz0(k)*fact_fx1(i)*fact_cy0(j)*u_org(idx_cz0(k),idx_fx1(i),idx_cy0(j)) &
4435 + fact_cz1(k)*fact_fx1(i)*fact_cy0(j)*u_org(idx_cz1(k),idx_fx1(i),idx_cy0(j)) &
4436 + fact_cz0(k)*fact_fx0(i)*fact_cy1(j)*u_org(idx_cz0(k),idx_fx0(i),idx_cy1(j)) &
4437 + fact_cz1(k)*fact_fx0(i)*fact_cy1(j)*u_org(idx_cz1(k),idx_fx0(i),idx_cy1(j)) &
4438 + fact_cz0(k)*fact_fx1(i)*fact_cy1(j)*u_org(idx_cz0(k),idx_fx1(i),idx_cy1(j)) &
4439 + fact_cz1(k)*fact_fx1(i)*fact_cy1(j)*u_org(idx_cz1(k),idx_fx1(i),idx_cy1(j))
4441 v(k,i,j) = fact_cz0(k)*fact_cx0(i)*fact_fy0(j)*v_org(idx_cz0(k),idx_cx0(i),idx_fy0(j)) &
4442 + fact_cz1(k)*fact_cx0(i)*fact_fy0(j)*v_org(idx_cz1(k),idx_cx0(i),idx_fy0(j)) &
4443 + fact_cz0(k)*fact_cx1(i)*fact_fy0(j)*v_org(idx_cz0(k),idx_cx1(i),idx_fy0(j)) &
4444 + fact_cz1(k)*fact_cx1(i)*fact_fy0(j)*v_org(idx_cz1(k),idx_cx1(i),idx_fy0(j)) &
4445 + fact_cz0(k)*fact_cx0(i)*fact_fy1(j)*v_org(idx_cz0(k),idx_cx0(i),idx_fy1(j)) &
4446 + fact_cz1(k)*fact_cx0(i)*fact_fy1(j)*v_org(idx_cz1(k),idx_cx0(i),idx_fy1(j)) &
4447 + fact_cz0(k)*fact_cx1(i)*fact_fy1(j)*v_org(idx_cz0(k),idx_cx1(i),idx_fy1(j)) &
4448 + fact_cz1(k)*fact_cx1(i)*fact_fy1(j)*v_org(idx_cz1(k),idx_cx1(i),idx_fy1(j))
4450 pott(k,i,j) = fact_cz0(k)*fact_cx0(i)*fact_cy0(j)*pott_org(idx_cz0(k),idx_cx0(i),idx_cy0(j)) &
4451 + fact_cz1(k)*fact_cx0(i)*fact_cy0(j)*pott_org(idx_cz1(k),idx_cx0(i),idx_cy0(j)) &
4452 + fact_cz0(k)*fact_cx1(i)*fact_cy0(j)*pott_org(idx_cz0(k),idx_cx1(i),idx_cy0(j)) &
4453 + fact_cz1(k)*fact_cx1(i)*fact_cy0(j)*pott_org(idx_cz1(k),idx_cx1(i),idx_cy0(j)) &
4454 + fact_cz0(k)*fact_cx0(i)*fact_cy1(j)*pott_org(idx_cz0(k),idx_cx0(i),idx_cy1(j)) &
4455 + fact_cz1(k)*fact_cx0(i)*fact_cy1(j)*pott_org(idx_cz1(k),idx_cx0(i),idx_cy1(j)) &
4456 + fact_cz0(k)*fact_cx1(i)*fact_cy1(j)*pott_org(idx_cz0(k),idx_cx1(i),idx_cy1(j)) &
4457 + fact_cz1(k)*fact_cx1(i)*fact_cy1(j)*pott_org(idx_cz1(k),idx_cx1(i),idx_cy1(j))
4460 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) &
4461 + fact_cz1(k)*fact_cx0(i)*fact_cy0(j)*qtrc_org(idx_cz1(k),idx_cx0(i),idx_cy0(j),iq) &
4462 + fact_cz0(k)*fact_cx1(i)*fact_cy0(j)*qtrc_org(idx_cz0(k),idx_cx1(i),idx_cy0(j),iq) &
4463 + fact_cz1(k)*fact_cx1(i)*fact_cy0(j)*qtrc_org(idx_cz1(k),idx_cx1(i),idx_cy0(j),iq) &
4464 + fact_cz0(k)*fact_cx0(i)*fact_cy1(j)*qtrc_org(idx_cz0(k),idx_cx0(i),idx_cy1(j),iq) &
4465 + fact_cz1(k)*fact_cx0(i)*fact_cy1(j)*qtrc_org(idx_cz1(k),idx_cx0(i),idx_cy1(j),iq) &
4466 + fact_cz0(k)*fact_cx1(i)*fact_cy1(j)*qtrc_org(idx_cz0(k),idx_cx1(i),idx_cy1(j),iq) &
4467 + fact_cz1(k)*fact_cx1(i)*fact_cy1(j)*qtrc_org(idx_cz1(k),idx_cx1(i),idx_cy1(j),iq)
4473 deallocate( dens_org )
4474 deallocate( momz_org )
4475 deallocate( momx_org )
4476 deallocate( momy_org )
4477 deallocate( rhot_org )
4478 deallocate( qtrc_org )
4483 deallocate( pott_org )
4485 deallocate( cz_org )
4486 deallocate( fz_org )
4487 deallocate( cx_org )
4488 deallocate( fx_org )
4489 deallocate( cy_org )
4490 deallocate( fy_org )
4492 if (
i_qv > 0 )
then 4510 if (
i_qc > 0 )
then 4537 call hydrostatic_buildrho_atmos(
dens(:,:,:), &
4548 momz(k,i,j) = 0.5_rp * w(k,i,j) * (
dens(k,i,j) +
dens(k+1,i,j) )
4556 momx(k,i,j) = 0.5_rp * u(k,i,j) * (
dens(k,i+1,j) +
dens(k,i,j) )
4564 momy(k,i,j) = 0.5_rp * v(k,i,j) * (
dens(k,i,j+1) +
dens(k,i,j) )
4572 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
4578 end subroutine mkinit_interporation
4588 real(RP),
intent(out) :: fact0
4589 real(RP),
intent(out) :: fact1
4590 integer,
intent(out) :: idx0
4591 integer,
intent(out) :: idx1
4592 real(RP),
intent(in) :: x
4593 integer,
intent(in) :: nx
4594 real(RP),
intent(in) :: x_org(nx)
4595 logical,
intent(in) :: loop
4600 if ( x < x_org(1) )
then 4602 xwork = x_org(1) - ( x_org(2) - x_org(1) )**2 / ( x_org(3) - x_org(2) )
4603 fact0 = ( x_org(1) - x ) / ( x_org(1) - xwork )
4604 fact1 = ( x - xwork ) / ( x_org(1) - xwork )
4608 fact0 = ( x_org(2) - x ) / ( x_org(2) - x_org(1) )
4609 fact1 = ( x - x_org(1) ) / ( x_org(2) - x_org(1) )
4613 else if ( x > x_org(nx) )
then 4615 xwork = x_org(nx) + ( x_org(nx) - x_org(nx-1) )**2 / ( x_org(nx-1) - x_org(nx-2) )
4616 fact0 = ( xwork - x ) / ( xwork - x_org(nx) )
4617 fact1 = ( x - x_org(nx) ) / ( xwork - x_org(nx) )
4621 fact0 = ( x_org(nx) - x ) / ( x_org(nx) - x_org(nx-1) )
4622 fact1 = ( x - x_org(nx-1) ) / ( x_org(nx) - x_org(nx-1) )
4628 if ( x <= x_org(i) )
then 4629 fact0 = ( x_org(i) - x ) / ( x_org(i) - x_org(i-1) )
4630 fact1 = ( x - x_org(i-1) ) / ( x_org(i) - x_org(i-1) )
4642 subroutine mkinit_oceancouple
4646 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit OceanCouple] / Categ[preprocess] / Origin[SCALE-RM]' 4653 end subroutine mkinit_oceancouple
4657 subroutine mkinit_landcouple
4661 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit LandCouple] / Categ[preprocess] / Origin[SCALE-RM]' 4668 end subroutine mkinit_landcouple
4672 subroutine mkinit_urbancouple
4676 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit UrbanCouple] / Categ[preprocess] / Origin[SCALE-RM]' 4683 end subroutine mkinit_urbancouple
4687 subroutine mkinit_seabreeze
4701 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit SEABREEZE] / Categ[preprocess] / Origin[SCALE-RM]' 4715 if (
grid_cx(i) >= dist * 3.0_rp &
4716 .AND.
grid_cx(i) <= dist * 5.0_rp )
then 4727 end subroutine mkinit_seabreeze
4731 subroutine mkinit_heatisland
4746 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit HEATISLAND] / Categ[preprocess] / Origin[SCALE-RM]' 4760 if (
grid_cx(i) >= dist * 4.0_rp &
4761 .AND.
grid_cx(i) < dist * 5.0_rp )
then 4774 end subroutine mkinit_heatisland
4778 subroutine mkinit_grayzone
4782 real(RP) :: VELX(
ka)
4783 real(RP) :: VELY(
ka)
4784 real(RP) :: POTT(
ka)
4787 real(RP) :: PERTURB_AMP = 0.0_rp
4788 integer :: RANDOM_LIMIT = 0
4789 integer :: RANDOM_FLAG = 0
4793 namelist / param_mkinit_grayzone / &
4803 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit GRAYZONE] / Categ[preprocess] / Origin[SCALE-RM]' 4807 read(
io_fid_conf,nml=param_mkinit_grayzone,iostat=ierr)
4810 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4811 elseif( ierr > 0 )
then 4812 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_GRAYZONE. Check!' 4824 dens(k,i,j) = rho(k)
4847 if ( random_flag == 2 .and. k <= random_limit )
then 4848 momz(k,i,j) = ( 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
4849 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
4851 momz(k,i,j) = 0.0_rp
4861 if ( random_flag == 2 .AND. k <= random_limit )
then 4862 momx(k,i,j) = ( velx(k) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
4863 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
4865 momx(k,i,j) = velx(k) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
4875 if ( random_flag == 2 .AND. k <= random_limit )
then 4876 momy(k,i,j) = ( vely(k) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
4877 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
4879 momy(k,i,j) = vely(k) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
4889 if ( random_flag == 1 .and. k <= random_limit )
then 4890 rhot(k,i,j) = ( pott(k) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
4893 rhot(k,i,j) = pott(k) *
dens(k,i,j)
4900 end subroutine mkinit_grayzone
4903 subroutine mkinit_boxaero
4907 real(RP) :: init_dens = 1.12_rp
4908 real(RP) :: init_temp = 298.18_rp
4909 real(RP) :: init_pres = 1.e+5_rp
4910 real(RP) :: init_ssliq = 0.01_rp
4912 namelist / param_mkinit_boxaero / &
4919 integer :: i, j, k, ierr
4923 if(
io_l )
write(
io_fid_log,*)
'+++ AETRACER_TYPE should be KAJINO13. Stop!' 4928 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit Box model of aerosol] / Categ[preprocess] / Origin[SCALE-RM]' 4932 read(
io_fid_conf,nml=param_mkinit_boxaero,iostat=ierr)
4934 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4935 elseif( ierr > 0 )
then 4936 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_BOXAERO. Check!' 4941 qtrc(:,:,:,:) = 0.0_rp
4945 dens(k,i,j) = init_dens
4946 momx(k,i,j) = 0.0_rp
4947 momy(k,i,j) = 0.0_rp
4948 momz(k,i,j) = 0.0_rp
4949 pott(k,i,j) = init_temp * ( p00/init_pres )**( rdry/cpdry )
4950 rhot(k,i,j) =
dens(k,i,j) * pott(k,i,j)
4951 call saturation_pres2qsat_all( qsat,init_temp,init_pres )
4952 qtrc(k,i,j,
i_qv) = ( init_ssliq + 1.0_rp )*qsat
4961 end subroutine mkinit_boxaero
4964 subroutine mkinit_warmbubbleaero
4968 real(RP) :: SFC_THETA
4969 real(RP) :: SFC_PRES
4970 real(RP) :: SFC_RH = 80.0_rp
4972 real(RP) :: ENV_U = 0.0_rp
4973 real(RP) :: ENV_V = 0.0_rp
4974 real(RP) :: ENV_RH = 80.0_rp
4975 real(RP) :: ENV_L1_ZTOP = 1.e3_rp
4976 real(RP) :: ENV_L2_ZTOP = 14.e3_rp
4977 real(RP) :: ENV_L2_TLAPS = 4.e-3_rp
4978 real(RP) :: ENV_L3_TLAPS = 3.e-2_rp
4980 real(RP) :: BBL_THETA = 1.0_rp
4982 namelist / param_mkinit_warmbubble / &
4999 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit WARMBUBBLEAERO] / Categ[preprocess] / Origin[SCALE-RM]' 5001 sfc_theta = thetastd
5006 read(
io_fid_conf,nml=param_mkinit_warmbubble,iostat=ierr)
5009 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 5010 elseif( ierr > 0 )
then 5011 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_WARMBUBBLE. Check!' 5017 pres_sfc(1,1,1) = sfc_pres
5018 pott_sfc(1,1,1) = sfc_theta
5019 qv_sfc(1,1,1) = 0.0_rp
5020 qc_sfc(1,1,1) = 0.0_rp
5023 if (
grid_cz(k) <= env_l1_ztop )
then 5024 pott(k,1,1) = sfc_theta
5025 elseif(
grid_cz(k) < env_l2_ztop )
then 5026 pott(k,1,1) = pott(k-1,1,1) + env_l2_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
5028 pott(k,1,1) = pott(k-1,1,1) + env_l3_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
5035 call hydrostatic_buildrho(
dens(:,1,1), &
5048 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
5049 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
5051 qv_sfc(1,1,1) = sfc_rh * 1.e-2_rp * qsat_sfc(1,1,1)
5053 if (
grid_cz(k) <= env_l1_ztop )
then 5054 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
5055 elseif(
grid_cz(k) <= env_l2_ztop )
then 5056 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
5063 call hydrostatic_buildrho(
dens(:,1,1), &
5079 momz(k,i,j) = 0.0_rp
5084 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) + bbl_theta * bubble(k,i,j) )
5098 end subroutine mkinit_warmbubbleaero
5102 subroutine mkinit_real
5115 end subroutine mkinit_real
integer, public imax
of computational cells: x
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 const_cvdry
specific heat (dry air,constant volume) [J/kg/K]
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
logical, public land_restart_output
output restart file?
integer, parameter, public i_oceancouple
real(rp), dimension(:,:,:), allocatable, target, public rhot
real(rp), dimension(:), allocatable, public grid_cxg
center coordinate [m]: x, global
character(len=h_short), public aetracer_type
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
subroutine, public ocean_vars_restart_write
Write ocean restart.
subroutine land_setup
Land setup.
module ATMOSPHERIC Variables
real(rp), dimension(:,:,:), allocatable, target, public momx
subroutine, public atmos_vars_restart_write
Write restart of atmospheric variables.
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
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
integer, parameter, public i_landcouple
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_rain
character(len=h_short), public tracer_type
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
logical, public atmos_restart_output
output restart file?
subroutine, public urban_surface_set(countup)
Set surface boundary to other model.
module Atmosphere / Physics Radiation
subroutine, public urban_vars_restart_write
Write urban restart.
real(rp), dimension(:,:), allocatable, public land_sfc_temp
land surface skin temperature [K]
real(rp), public const_mvap
mass weight (water vapor) [g/mol]
subroutine, public atmos_surface_get
Get surface boundary condition.
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_up
real(rp), dimension(:,:), allocatable, public urban_tr
module ATMOSPHERE / Typical vertical profile
integer, parameter, public i_seabreeze
integer, public ia
of x whole cells (local, with HALO)
real(rp), dimension(:,:,:), allocatable, public urban_tgl
integer function, public io_get_available_fid()
search & get available file ID
subroutine rect_setup
Bubble.
integer, dimension(:), allocatable, public nkap
integer, public ka
of z whole cells (local, with HALO)
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_dn
integer, parameter, public dp
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.
character(len=h_short), dimension(:), allocatable, public aq_name
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
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, dimension(:), allocatable, public nsiz
integer, parameter, public i_heatisland
subroutine, public log(type, message)
real(rp), public const_lhv
latent heat of vaporizaion for use
integer, parameter, public i_triplecouple
module administrator for restart
real(rp), parameter, public const_rvap
specific gas constant (water vapor) [J/kg/K]
real(rp), dimension(:,:,:), allocatable, public urban_sfc_albedo
real(rp), dimension(:), allocatable, public aq_cv
CV for each hydrometeors [J/kg/K].
integer, parameter, public i_planestate
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?
logical, public urban_restart_output
output restart file?
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
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_snow
integer, parameter, public i_rico
integer, public ie
end point of inner domain: x, local
integer, parameter, public i_ignore
module ATMOSPHERE / Thermodynamics
integer, parameter, public i_lambwave
integer, parameter, public i_supercell
subroutine aerosol_activation_kajino13(c_kappa, super, temp_k, ia_m0, ia_m2, ia_m3, n_atr, n_siz_max, n_kap_max, n_ctg, n_siz, n_kap, d_ct, aerosol_procs, aerosol_activ)
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0m
ocean surface roughness length for momentum [m]
logical, public io_lnml
output log or not? (for namelist, this process)
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_sw_dn
integer, public const_i_sw
short-wave radiation index
subroutine diag_ds(m0, m2, m3, dg, sg, dm2)
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]
subroutine, public admin_restart
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
logical, public ocean_restart_output
output restart file?
integer, public io_fid_log
Log file ID.
subroutine, public land_vars_restart_write
Write land restart.
integer, parameter, public i_coldbubble
integer, parameter, public i_cavityflow
integer, parameter, public rp
real(rp), dimension(:,:,:), allocatable, public urban_tbl
module ATMOSPHERE / Physics Aerosol Microphysics
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]
real(rp), public const_pstd
standard pressure [Pa]
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 ja
of y whole cells (local, with HALO)
real(rp), dimension(:), allocatable, public grid_fy
face coordinate [m]: y, local