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)
378 if(
io_l )
write(
io_fid_log,*)
'++++++ SKIP MAKING INITIAL DATA ++++++' 381 if(
io_l )
write(
io_fid_log,*)
'++++++ START MAKING INITIAL DATA ++++++' 386 qtrc(:,:,:,iq) = 0.0_rp
409 if(
io_l )
write(
io_fid_log,*)
'*** Aerosols for SBM are included ***' 415 call mkinit_planestate
417 call mkinit_tracerbubble
419 call mkinit_coldbubble
423 call mkinit_gravitywave
427 call mkinit_turbulence
429 call mkinit_mountainwave
431 call mkinit_warmbubble
433 call mkinit_supercell
435 call mkinit_squallline
439 call mkinit_dycoms2_rf01
441 call mkinit_dycoms2_rf02
445 call mkinit_interporation
447 call mkinit_planestate
448 call mkinit_oceancouple
450 call mkinit_planestate
451 call mkinit_landcouple
453 call mkinit_planestate
454 call mkinit_landcouple
455 call mkinit_urbancouple
457 call mkinit_planestate
458 call mkinit_oceancouple
459 call mkinit_landcouple
460 call mkinit_urbancouple
462 call mkinit_planestate
463 call mkinit_warmbubble
464 call mkinit_oceancouple
465 call mkinit_landcouple
466 call mkinit_urbancouple
468 call mkinit_planestate
469 call mkinit_seabreeze
471 call mkinit_planestate
472 call mkinit_heatisland
474 call mkinit_dycoms2_rf02_dns
482 call mkinit_warmbubbleaero
484 call mkinit_cavityflow
490 if(
io_l )
write(
io_fid_log,*)
'++++++ END MAKING INITIAL DATA ++++++' 513 subroutine bubble_setup
519 logical :: BBL_eachnode = .false.
520 real(RP) :: BBL_CZ = 2.e3_rp
521 real(RP) :: BBL_CX = 2.e3_rp
522 real(RP) :: BBL_CY = 2.e3_rp
523 real(RP) :: BBL_RZ = 0.0_rp
524 real(RP) :: BBL_RX = 0.0_rp
525 real(RP) :: BBL_RY = 0.0_rp
527 namelist / param_bubble / &
536 real(RP) :: CZ_offset
537 real(RP) :: CX_offset
538 real(RP) :: CY_offset
546 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit bubble] / Categ[preprocess] / Origin[SCALE-RM]' 553 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 554 elseif( ierr > 0 )
then 555 write(*,*)
'xxx Not appropriate names in namelist PARAM_BUBBLE. Check!' 560 if ( abs(bbl_rz*bbl_rx*bbl_ry) <= 0.0_rp )
then 562 bubble(:,:,:) = 0.0_rp
567 if ( bbl_eachnode )
then 582 dist = ( (
grid_cz(k)-cz_offset-bbl_cz)/bbl_rz )**2 &
583 + ( (
grid_cx(i)-cx_offset-bbl_cx)/bbl_rx )**2 &
584 + ( (
grid_cy(j)-cy_offset-bbl_cy)/bbl_ry )**2
586 bubble(k,i,j) = cos( 0.5_rp*pi*sqrt( min(dist,1.0_rp) ) )**2
594 end subroutine bubble_setup
604 logical :: RCT_eachnode = .false.
605 real(RP) :: RCT_CZ = 2.e3_rp
606 real(RP) :: RCT_CX = 2.e3_rp
607 real(RP) :: RCT_CY = 2.e3_rp
608 real(RP) :: RCT_RZ = 2.e3_rp
609 real(RP) :: RCT_RX = 2.e3_rp
610 real(RP) :: RCT_RY = 2.e3_rp
612 namelist / param_rect / &
621 real(RP) :: CZ_offset
622 real(RP) :: CX_offset
623 real(RP) :: CY_offset
631 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit rectangle] / Categ[preprocess] / Origin[SCALE-RM]' 640 elseif( ierr > 0 )
then 641 write(*,*)
'xxx Not appropriate names in namelist PARAM_RECT. Check!' 648 if ( rct_eachnode )
then 663 dist = 2.0_rp * max( &
664 abs(
grid_cz(k) - cz_offset - rct_cz)/rct_rz, &
665 abs(
grid_cx(i) - cx_offset - rct_cx)/rct_rx, &
666 abs(
grid_cy(j) - cy_offset - rct_cy)/rct_ry &
668 if ( dist <= 1.0_rp )
then 682 subroutine aerosol_setup
695 integer,
parameter :: ia_m0 = 1
696 integer,
parameter :: ia_m2 = 2
697 integer,
parameter :: ia_m3 = 3
698 integer,
parameter :: ia_ms = 4
699 integer,
parameter :: ia_kp = 5
700 integer,
parameter :: ik_out = 1
702 real(RP) :: m0_init = 0.0_rp
703 real(RP) :: dg_init = 80.e-9_rp
704 real(RP) :: sg_init = 1.6_rp
706 real(RP),
parameter :: d_min_def = 1.e-9_rp
707 real(RP),
parameter :: d_max_def = 1.e-5_rp
708 integer,
parameter :: n_kap_def = 1
709 real(RP),
parameter :: k_min_def = 0.e0_rp
710 real(RP),
parameter :: k_max_def = 1.e0_rp
711 real(RP) :: c_kappa = 0.3_rp
712 real(RP),
parameter :: cleannumber = 1.e-3_rp
714 real(RP) :: d_min_inp(3) = d_min_def
715 real(RP) :: d_max_inp(3) = d_max_def
716 real(RP) :: k_min_inp(3) = k_min_def
717 real(RP) :: k_max_inp(3) = k_max_def
718 integer :: n_kap_inp(3) = n_kap_def
720 namelist / param_aero / &
731 real(RP),
parameter :: rhod_ae = 1.83_rp
732 real(RP),
parameter :: conv_vl_ms = rhod_ae/1.e-12_rp
734 integer :: ia0, ik, is0, ic, k, i, j, it, iq
735 integer :: ierr, n_trans
736 real(RP) :: m0t, dgt, sgt, m2t, m3t, mst
737 real(RP),
allocatable :: aerosol_procs(:,:,:,:)
738 real(RP),
allocatable :: aerosol_activ(:,:,:,:)
739 real(RP),
allocatable :: emis_procs(:,:,:,:)
742 integer :: n_siz_max, n_kap_max, n_ctg
749 real(RP),
allocatable :: d_lw(:,:), d_ct(:,:), d_up(:,:)
750 real(RP),
allocatable :: k_lw(:,:), k_ct(:,:), k_up(:,:)
751 real(RP) :: dlogd, dk
752 real(RP),
allocatable :: d_min(:)
753 real(RP),
allocatable :: d_max(:)
754 integer,
allocatable :: n_kap(:)
755 real(RP),
allocatable :: k_min(:)
756 real(RP),
allocatable :: k_max(:)
758 real(RP) :: pott, qdry, pres
759 real(RP) :: temp, cpa, cva, qsat_tmp, ssliq, Rmoist
763 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit aerosol] / Categ[preprocess] / Origin[SCALE-RM]' 768 allocate( d_min(n_ctg) )
769 allocate( d_max(n_ctg) )
770 allocate( n_kap(n_ctg) )
771 allocate( k_min(n_ctg) )
772 allocate( k_max(n_ctg) )
774 d_min(1:n_ctg) = d_min_def
775 d_max(1:n_ctg) = d_max_def
776 n_kap(1:n_ctg) = n_kap_def
777 k_min(1:n_ctg) = k_min_def
778 k_max(1:n_ctg) = k_max_def
779 d_min_inp(1:n_ctg) = d_min(1:n_ctg)
780 d_max_inp(1:n_ctg) = d_max(1:n_ctg)
781 n_kap_inp(1:n_ctg) = n_kap(1:n_ctg)
782 k_min_inp(1:n_ctg) = k_min(1:n_ctg)
783 k_max_inp(1:n_ctg) = k_max(1:n_ctg)
790 if(
io_l )
write(
io_fid_log,*)
'xxx Not found namelist. Default used!' 792 elseif( ierr > 0 )
then 793 write(*,*)
'xxx Not appropriate names in namelist PARAM_AERO. Check!' 796 d_min(1:n_ctg) = d_min_inp(1:n_ctg)
797 d_max(1:n_ctg) = d_max_inp(1:n_ctg)
798 n_kap(1:n_ctg) = n_kap_inp(1:n_ctg)
799 k_min(1:n_ctg) = k_min_inp(1:n_ctg)
800 k_max(1:n_ctg) = k_max_inp(1:n_ctg)
810 n_siz_max = max(n_siz_max,
nsiz(ic))
811 n_kap_max = max(n_kap_max,
nkap(ic))
814 allocate( aerosol_procs(
n_atr,n_siz_max,n_kap_max,n_ctg) )
815 allocate( aerosol_activ(
n_atr,n_siz_max,n_kap_max,n_ctg) )
816 allocate( emis_procs(
n_atr,n_siz_max,n_kap_max,n_ctg) )
817 aerosol_procs(:,:,:,:) = 0._rp
818 aerosol_activ(:,:,:,:) = 0._rp
819 emis_procs(:,:,:,:) = 0._rp
828 allocate(d_lw(n_siz_max,n_ctg))
829 allocate(d_ct(n_siz_max,n_ctg))
830 allocate(d_up(n_siz_max,n_ctg))
831 allocate(k_lw(n_kap_max,n_ctg))
832 allocate(k_ct(n_kap_max,n_ctg))
833 allocate(k_up(n_kap_max,n_ctg))
843 dlogd = (
log(d_max(ic)) -
log(d_min(ic)))/
real(NSIZ(ic),kind=
rp)
846 d_lw(is0,ic) = exp(
log(d_min(ic))+dlogd*
real(is0-1,kind=RP) )
847 d_ct(is0,ic) = exp(
log(d_min(ic))+dlogd*(
real(is0 ,kind=
rp)-0.5_rp))
848 d_up(is0,ic) = exp(
log(d_min(ic))+dlogd*
real(is0 ,kind=RP) )
850 dk = (k_max(ic) - k_min(ic))/
real(n_kap(ic),kind=
rp)
852 k_lw(ik,ic) = k_min(ic) + dk *
real(ik-1,kind=
rp)
853 k_ct(ik,ic) = k_min(ic) + dk *(
real(ik ,kind=
rp)-0.5_rp)
854 k_up(ik,ic) = k_min(ic) + dk *
real(ik ,kind=
rp)
864 if ( m0t <= cleannumber )
then 869 write(
io_fid_log,*)
'*** WARNING! Initial aerosol number is set as ', cleannumber,
'[#/m3]' 873 m2t = m0t*dgt**(2.d0) *dexp(2.0d0 *(dlog(
real(sgt,kind=
dp))**2.d0))
874 m3t = m0t*dgt**(3.d0) *dexp(4.5d0 *(dlog(
real(sgt,kind=
dp))**2.d0))
875 mst = m3t*pi6*conv_vl_ms
881 if (dgt >= d_lw(is0,ic) .and. dgt < d_up(is0,ic))
then 882 aerosol_procs(ia_m0,is0,ik,ic) = aerosol_procs(ia_m0,is0,ik,ic) + m0t
883 aerosol_procs(ia_m2,is0,ik,ic) = aerosol_procs(ia_m2,is0,ik,ic) + m2t
884 aerosol_procs(ia_m3,is0,ik,ic) = aerosol_procs(ia_m3,is0,ik,ic) + m3t
885 aerosol_procs(ia_ms,is0,ik,ic) = aerosol_procs(ia_ms,is0,ik,ic) + mst*1.e-9_rp
886 elseif (dgt < d_lw(1,ic))
then 887 aerosol_procs(ia_m0,1 ,ik,ic) = aerosol_procs(ia_m0,1 ,ik,ic) + m0t
888 aerosol_procs(ia_m2,1 ,ik,ic) = aerosol_procs(ia_m2,1 ,ik,ic) + m2t
889 aerosol_procs(ia_m3,1 ,ik,ic) = aerosol_procs(ia_m3,1 ,ik,ic) + m3t
890 aerosol_procs(ia_ms,1 ,ik,ic) = aerosol_procs(ia_ms,1 ,ik,ic) + mst*1.e-9_rp
891 elseif (dgt >= d_up(
nsiz(ic),ic))
then 892 aerosol_procs(ia_m0,
nsiz(ic),ik,ic) = aerosol_procs(ia_m0,
nsiz(ic),ik,ic) + m0t
893 aerosol_procs(ia_m2,
nsiz(ic),ik,ic) = aerosol_procs(ia_m2,
nsiz(ic),ik,ic) + m2t
894 aerosol_procs(ia_m3,
nsiz(ic),ik,ic) = aerosol_procs(ia_m3,
nsiz(ic),ik,ic) + m3t
895 aerosol_procs(ia_ms,
nsiz(ic),ik,ic) = aerosol_procs(ia_ms,
nsiz(ic),ik,ic) + mst*1.e-9_rp
909 qdry = qdry -
qtrc(k,i,j,iq)
919 temp = pres / (
dens(k,i,j) * rmoist )
921 call saturation_pres2qsat_liq( qsat_tmp,temp,pres )
922 ssliq =
qtrc(k,i,j,
i_qv)/qsat_tmp - 1.0_rp
924 (c_kappa, ssliq, temp, ia_m0, ia_m2, ia_m3, &
925 n_atr,n_siz_max,n_kap_max,n_ctg,
nsiz,n_kap, &
926 d_ct,aerosol_procs, aerosol_activ)
929 ccn(k,i,j) = ccn(k,i,j) + aerosol_activ(ia_m0,is0,ik_out,
ic_mix)
947 qtrc(k,i,j,
qaes-1+it) = aerosol_procs(ia0,is0,ik,ic)/
dens(k,i,j)
959 end subroutine aerosol_setup
966 ia_m0, ia_m2, ia_m3, &
967 n_atr,n_siz_max,n_kap_max,n_ctg,n_siz,n_kap, &
968 d_ct, aerosol_procs, aerosol_activ)
976 real(RP),
intent(in) :: super
977 real(RP),
intent(in) :: c_kappa
978 real(RP),
intent(in) :: temp_k
979 integer,
intent(in) :: ia_m0, ia_m2, ia_m3
980 integer,
intent(in) :: n_atr
981 integer,
intent(in) :: n_siz_max
982 integer,
intent(in) :: n_kap_max
983 integer,
intent(in) :: n_ctg
984 real(RP),
intent(in) :: d_ct(n_siz_max,n_ctg)
985 real(RP) :: aerosol_procs(n_atr,n_siz_max,n_kap_max,n_ctg)
986 real(RP) :: aerosol_activ(n_atr,n_siz_max,n_kap_max,n_ctg)
987 integer,
intent(in) :: n_siz(n_ctg), n_kap(n_ctg)
989 real(RP),
parameter :: two3 = 2._rp/3._rp
990 real(RP),
parameter :: rt2 = sqrt(2._rp)
991 real(RP),
parameter :: twort2 = rt2
992 real(RP),
parameter :: thrrt2 = 3._rp/rt2
994 real(RP) :: am,scrit_am,aa,tc,st,bb,ac
995 real(RP) :: m0t,m2t,m3t,dgt,sgt,dm2
997 real(RP) :: tmp1, tmp2, tmp3
998 real(RP) :: ccn_frc,cca_frc,ccv_frc
999 integer :: is0, ik, ic
1001 aerosol_activ(:,:,:,:) = 0._rp
1003 if (super.le.0._rp)
return 1005 smax_inv = 1._rp / super
1008 tc = temp_k - const_tem00
1009 if (tc >= 0._rp )
then 1010 st = 75.94_rp-0.1365_rp*tc-0.3827e-3_rp*tc**2._rp
1012 st = 75.93_rp +0.115_rp*tc &
1013 + 6.818e-2_rp*tc**2._rp+6.511e-3_rp*tc**3._rp &
1014 + 2.933e-4_rp*tc**4._rp+6.283e-6_rp*tc**5._rp &
1015 + 5.285e-8_rp*tc**6._rp
1021 aa = 2._rp * st *
const_mvap * 1.e-3_rp / (const_dwatr * const_r * temp_k )
1024 do ik = 1, n_kap(ic)
1025 do is0 = 1, n_siz(ic)
1026 m0t = aerosol_procs(ia_m0,is0,ik,ic)
1027 m2t = aerosol_procs(ia_m2,is0,ik,ic)
1028 m3t = aerosol_procs(ia_m3,is0,ik,ic)
1029 call diag_ds(m0t,m2t,m3t,dgt,sgt,dm2)
1030 if (dgt <= 0._rp) dgt = d_ct(is0,ic)
1031 if (sgt <= 0._rp) sgt = 1.3_rp
1034 if (bb > 0._rp .and. am > 0._rp )
then 1035 scrit_am = 2._rp/sqrt(bb)*(aa/(3._rp*am))**1.5_rp
1039 ac = am * (scrit_am * smax_inv)**two3
1041 tmp1 =
log(d_crit) -
log(dgt)
1042 tmp2 = 1._rp/(rt2*
log(sgt))
1044 ccn_frc= 0.5_rp*(1._rp-erf(tmp1*tmp2))
1045 cca_frc= 0.5_rp*(1._rp-erf(tmp1*tmp2-twort2*tmp3))
1046 ccv_frc= 0.5_rp*(1._rp-erf(tmp1*tmp2-thrrt2*tmp3))
1047 aerosol_activ(ia_m0,is0,ik,ic) = ccn_frc * aerosol_procs(ia_m0,is0,ik,ic)
1048 aerosol_activ(ia_m2,is0,ik,ic) = cca_frc * aerosol_procs(ia_m2,is0,ik,ic)
1049 aerosol_activ(ia_m3,is0,ik,ic) = ccv_frc * aerosol_procs(ia_m3,is0,ik,ic)
1057 subroutine diag_ds(m0,m2,m3, & !i
1060 real(RP) :: m0,m2,m3,dg,sg,m3_bar,m2_bar
1061 real(RP) :: m2_new,m2_old,dm2
1062 real(RP),
parameter :: sgmax=2.5_rp
1063 real(RP),
parameter :: rk1=2._rp
1064 real(RP),
parameter :: rk2=3._rp
1065 real(RP),
parameter :: ratio =rk1/rk2
1066 real(RP),
parameter :: rk1_hat=1._rp/(ratio*(rk2-rk1))
1067 real(RP),
parameter :: rk2_hat=ratio/(rk1-rk2)
1071 if (m0 <= 0._rp .or. m2 <= 0._rp .or. m3 <= 0._rp)
then 1083 dg = m2_bar**rk1_hat*m3_bar**rk2_hat
1085 if (m2_bar/m3_bar**ratio < 1._rp)
then 1086 sg = exp(sqrt(2._rp/(rk1*(rk1-rk2)) &
1087 *
log(m2_bar/m3_bar**ratio) ))
1090 if (sg > sgmax)
then 1093 call diag_d2(m0,m3,sg, &
1098 if (m2_bar/m3_bar**ratio >= 1._rp)
then 1100 call diag_d2(m0,m3,sg, &
1106 dm2 = m2_old - m2_new
1113 subroutine diag_d2(m0,m3,sg, & !i
1116 real(RP) :: dg,sg,m0,m2,m3,aaa
1117 real(RP),
parameter :: one3=1._rp/3._rp
1118 aaa = m0 * exp( 4.5_rp * (
log(sg)**2._rp) )
1120 m2 = m0 * dg ** 2._rp * exp( 2.0_rp * (
log(sg)**2._rp) )
1123 end subroutine diag_d2
1126 subroutine sbmaero_setup
1134 real(RP) :: xasta, xaend, dxaer
1135 real(RP),
allocatable :: xabnd( : ), xactr( : )
1137 real(RP) :: F0_AERO = 1.e+7_rp
1138 real(RP) :: R0_AERO = 1.e-7_rp
1139 real(RP) :: R_MAX = 1.e-06_rp
1140 real(RP) :: R_MIN = 1.e-08_rp
1141 real(RP) :: A_ALPHA = 3.0_rp
1142 real(RP) :: RHO_AERO = 2.25e+03_rp
1144 namelist / param_sbmaero / &
1153 integer :: iq, i, j, k
1157 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit aerobin] / Categ[preprocess] / Origin[SCALE-RM]' 1164 if(
io_l )
write(
io_fid_log,*)
'xxx Not found namelist. default value used' 1165 elseif( ierr > 0 )
then 1166 write(*,*)
'xxx Not appropriate names in namelist SBMAERO. Check!' 1171 if( nccn /= 0 )
then 1172 allocate( gan( nccn ) )
1173 allocate( xactr(nccn) )
1174 allocate( xabnd(nccn+1) )
1176 xasta =
log( rho_aero*4.0_rp/3.0_rp*pi * ( r_min )**3 )
1177 xaend =
log( rho_aero*4.0_rp/3.0_rp*pi * ( r_max )**3 )
1178 dxaer = ( xaend-xasta )/nccn
1180 xabnd( iq ) = xasta + dxaer*( iq-1 )
1183 xactr( iq ) = ( xabnd( iq )+xabnd( iq+1 ) )*0.5_rp
1186 gan( iq ) =
faero( f0_aero,r0_aero,xactr( iq ), a_alpha, rho_aero )*exp( xactr(iq) )
1195 qtrc(k,i,j,iq) = 0.0_rp
1202 if( nccn /= 0 )
then 1219 end subroutine sbmaero_setup
1222 function faero( f0,r0,x,alpha,rhoa )
1227 real(RP),
intent(in) :: x, f0, r0, alpha, rhoa
1232 rad = ( exp(x) * 3.0_rp / 4.0_rp / pi / rhoa )**(1.0_rp/3.0_rp)
1234 faero = f0 * (rad/r0)**(-alpha)
1257 real(RP) :: FLX_rain = 0.0_rp
1258 real(RP) :: FLX_snow = 0.0_rp
1259 real(RP) :: FLX_LW_dn = 0.0_rp
1260 real(RP) :: FLX_SW_dn = 0.0_rp
1262 namelist / param_mkinit_flux / &
1274 read(
io_fid_conf,nml=param_mkinit_flux,iostat=ierr)
1276 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1277 elseif( ierr > 0 )
then 1278 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_FLUX. Check!' 1285 sflx_rain(i,j) = flx_rain
1286 sflx_snow(i,j) = flx_snow
1288 sflx_lw_up(i,j) = 0.0_rp
1289 sflx_lw_dn(i,j) = flx_lw_dn
1290 sflx_sw_up(i,j) = 0.0_rp
1291 sflx_sw_dn(i,j) = flx_sw_dn
1293 toaflx_lw_up(i,j) = 0.0_rp
1294 toaflx_lw_dn(i,j) = 0.0_rp
1295 toaflx_sw_up(i,j) = 0.0_rp
1296 toaflx_sw_dn(i,j) = 0.0_rp
1298 sflx_rad_dn(i,j,1,1) = flx_sw_dn
1299 sflx_rad_dn(i,j,1,2) = 0.0_rp
1300 sflx_rad_dn(i,j,2,1) = flx_lw_dn
1301 sflx_rad_dn(i,j,2,2) = 0.0_rp
1318 real(RP) :: LND_TEMP
1319 real(RP) :: LND_WATER = 0.15_rp
1320 real(RP) :: SFC_TEMP
1321 real(RP) :: SFC_albedo_LW = 0.01_rp
1322 real(RP) :: SFC_albedo_SW = 0.20_rp
1327 namelist /param_mkinit_land/ &
1339 read(
io_fid_conf,nml=param_mkinit_land,iostat=ierr)
1341 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1342 elseif( ierr > 0 )
then 1343 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_LAND. Check!' 1373 real(RP) :: OCN_TEMP
1374 real(RP) :: SFC_TEMP
1375 real(RP) :: SFC_albedo_LW = 0.04_rp
1376 real(RP) :: SFC_albedo_SW = 0.05_rp
1377 real(RP) :: SFC_Z0M = 1.0e-4_rp
1378 real(RP) :: SFC_Z0H = 1.0e-4_rp
1379 real(RP) :: SFC_Z0E = 1.0e-4_rp
1384 namelist /param_mkinit_ocean/ &
1398 read(
io_fid_conf,nml=param_mkinit_ocean,iostat=ierr)
1400 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1401 elseif( ierr > 0 )
then 1402 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_OCEAN. Check!' 1444 real(RP) :: URB_ROOF_TEMP
1445 real(RP) :: URB_BLDG_TEMP
1446 real(RP) :: URB_GRND_TEMP
1447 real(RP) :: URB_CNPY_TEMP
1448 real(RP) :: URB_CNPY_HMDT = 0.0_rp
1449 real(RP) :: URB_CNPY_WIND = 0.0_rp
1450 real(RP) :: URB_ROOF_LAYER_TEMP
1451 real(RP) :: URB_BLDG_LAYER_TEMP
1452 real(RP) :: URB_GRND_LAYER_TEMP
1453 real(RP) :: URB_ROOF_RAIN = 0.0_rp
1454 real(RP) :: URB_BLDG_RAIN = 0.0_rp
1455 real(RP) :: URB_GRND_RAIN = 0.0_rp
1456 real(RP) :: URB_RUNOFF = 0.0_rp
1457 real(RP) :: URB_SFC_TEMP
1458 real(RP) :: URB_ALB_LW = 0.0_rp
1459 real(RP) :: URB_ALB_SW = 0.0_rp
1464 namelist /param_mkinit_urban/ &
1471 urb_roof_layer_temp, &
1472 urb_bldg_layer_temp, &
1473 urb_grnd_layer_temp, &
1482 urb_roof_temp = thetastd
1483 urb_bldg_temp = thetastd
1484 urb_grnd_temp = thetastd
1485 urb_cnpy_temp = thetastd
1486 urb_roof_layer_temp = thetastd
1487 urb_bldg_layer_temp = thetastd
1488 urb_grnd_layer_temp = thetastd
1490 urb_sfc_temp = thetastd
1494 read(
io_fid_conf,nml=param_mkinit_urban,iostat=ierr)
1496 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1497 elseif( ierr > 0 )
then 1498 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_URBAN. Check!' 1531 DENS, VELX, VELY, POTT, QV )
1533 real(RP),
intent(out) :: DENS(
ka)
1534 real(RP),
intent(out) :: VELX(
ka)
1535 real(RP),
intent(out) :: VELY(
ka)
1536 real(RP),
intent(out) :: POTT(
ka)
1537 real(RP),
intent(out) :: QV (
ka)
1539 real(RP) :: TEMP(
ka)
1540 real(RP) :: PRES(
ka)
1543 character(len=H_LONG) :: ENV_IN_SOUNDING_file =
'' 1545 integer,
parameter :: EXP_klim = 100
1548 real(RP) :: SFC_THETA
1549 real(RP) :: SFC_PRES
1552 real(RP) :: EXP_z (exp_klim+1)
1553 real(RP) :: EXP_pott(exp_klim+1)
1554 real(RP) :: EXP_qv (exp_klim+1)
1555 real(RP) :: EXP_u (exp_klim+1)
1556 real(RP) :: EXP_v (exp_klim+1)
1558 real(RP) :: fact1, fact2
1563 namelist /param_mkinit_sounding/ &
1564 env_in_sounding_file
1568 read(
io_fid_conf,nml=param_mkinit_sounding,iostat=ierr)
1571 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1572 elseif( ierr > 0 )
then 1573 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SOUNDING. Check!' 1579 if(
io_l )
write(
io_fid_log,*)
'+++ Input sounding file:', trim(env_in_sounding_file)
1582 file = trim(env_in_sounding_file), &
1583 form =
'formatted', &
1587 if ( ierr /= 0 )
then 1588 if(
io_l )
write(*,*)
'xxx Input file not found!' 1592 read(fid,*) sfc_pres, sfc_theta, sfc_qv
1594 if(
io_l )
write(
io_fid_log,*)
'+++ Surface pressure [hPa]', sfc_pres
1595 if(
io_l )
write(
io_fid_log,*)
'+++ Surface pot. temp [K]', sfc_theta
1596 if(
io_l )
write(
io_fid_log,*)
'+++ Surface water vapor [g/kg]', sfc_qv
1599 read(fid,*,iostat=ierr) exp_z(k), exp_pott(k), exp_qv(k), exp_u(k), exp_v(k)
1600 if ( ierr /= 0 )
exit 1608 exp_pott(1) = sfc_theta
1612 exp_z(exp_kmax+1) = 100.e3_rp
1613 exp_pott(exp_kmax+1) = exp_pott(exp_kmax)
1614 exp_qv(exp_kmax+1) = exp_qv(exp_kmax)
1615 exp_u(exp_kmax+1) = exp_u(exp_kmax)
1616 exp_v(exp_kmax+1) = exp_v(exp_kmax)
1618 do k = 1, exp_kmax+1
1619 exp_qv(k) = exp_qv(k) * 1.e-3_rp
1623 pres_sfc = sfc_pres * 1.e2_rp
1624 pott_sfc = sfc_theta
1625 qv_sfc = sfc_qv * 1.e-3_rp
1632 do kref = 2, exp_kmax+1
1633 if (
grid_cz(k) > exp_z(kref-1) &
1634 .AND.
grid_cz(k) <= exp_z(kref ) )
then 1636 fact1 = ( exp_z(kref) -
grid_cz(k) ) / ( exp_z(kref)-exp_z(kref-1) )
1637 fact2 = (
grid_cz(k) - exp_z(kref-1) ) / ( exp_z(kref)-exp_z(kref-1) )
1639 pott(k) = exp_pott(kref-1) * fact1 &
1640 + exp_pott(kref ) * fact2
1641 qv(k) = exp_qv(kref-1) * fact1 &
1642 + exp_qv(kref ) * fact2
1643 velx(k) = exp_u(kref-1) * fact1 &
1644 + exp_u(kref ) * fact2
1645 vely(k) = exp_v(kref-1) * fact1 &
1646 + exp_v(kref ) * fact2
1652 call hydrostatic_buildrho( dens(:), &
1669 subroutine mkinit_planestate
1673 real(RP) :: SFC_THETA
1674 real(RP) :: SFC_PRES
1675 real(RP) :: SFC_RH = 0.0_rp
1677 real(RP) :: ENV_THETA
1678 real(RP) :: ENV_TLAPS = 0.0_rp
1679 real(RP) :: ENV_U = 0.0_rp
1680 real(RP) :: ENV_V = 0.0_rp
1681 real(RP) :: ENV_RH = 0.0_rp
1683 real(RP) :: RANDOM_THETA = 0.0_rp
1684 real(RP) :: RANDOM_U = 0.0_rp
1685 real(RP) :: RANDOM_V = 0.0_rp
1686 real(RP) :: RANDOM_RH = 0.0_rp
1688 namelist / param_mkinit_planestate / &
1707 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit Horiz_UNIFORM] / Categ[preprocess] / Origin[SCALE-RM]' 1709 sfc_theta = thetastd
1711 env_theta = thetastd
1715 read(
io_fid_conf,nml=param_mkinit_planestate,iostat=ierr)
1718 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1719 elseif( ierr > 0 )
then 1720 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_PLANESTATE. Check!' 1728 pott_sfc(1,i,j) = sfc_theta
1729 pres_sfc(1,i,j) = sfc_pres
1730 qv_sfc(1,i,j) = 0.0_rp
1731 qc_sfc(1,i,j) = 0.0_rp
1740 if ( env_theta < 0.0_rp )
then 1742 call profile_isa(
ka,
ks,
ke, &
1755 pott(k,i,j) = env_theta + env_tlaps *
real_cz(k,i,j)
1763 call hydrostatic_buildrho(
dens(:,:,:), &
1776 call saturation_pres2qsat_all( qsat_sfc(1,:,:), temp_sfc(1,:,:), pres_sfc(1,:,:) )
1777 call saturation_pres2qsat_all( qsat(:,:,:), temp(:,:,:), pres(:,:,:) )
1782 qv_sfc(1,i,j) = ( sfc_rh + rndm(
ks-1,i,j) * random_rh ) * 1.e-2_rp * qsat_sfc(1,i,j)
1785 qv(k,i,j) = ( env_rh + rndm(k,i,j) * random_rh ) * 1.e-2_rp * qsat(k,i,j)
1793 pott_sfc(1,i,j) = pott_sfc(1,i,j) + rndm(
ks-1,i,j) * random_theta
1796 pott(k,i,j) = pott(k,i,j) + rndm(k,i,j) * random_theta
1802 call hydrostatic_buildrho(
dens(:,:,:), &
1814 call comm_vars8(
dens(:,:,:), 1 )
1815 call comm_wait (
dens(:,:,:), 1 )
1821 momx(k,i,j) = ( env_u + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_u ) &
1822 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
1831 momy(k,i,j) = ( env_v + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_v ) &
1832 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
1840 momz(k,i,j) = 0.0_rp
1841 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
1853 end subroutine mkinit_planestate
1857 subroutine mkinit_tracerbubble
1862 real(RP) :: SFC_THETA
1863 real(RP) :: SFC_PRES
1865 real(RP) :: ENV_THETA
1866 real(RP) :: ENV_U = 0.0_rp
1867 real(RP) :: ENV_V = 0.0_rp
1869 character(len=H_SHORT) :: SHAPE_NC =
'BUBBLE' 1870 real(RP) :: BBL_NC = 1.0_rp
1872 namelist / param_mkinit_tracerbubble / &
1881 real(RP),
pointer :: shapeFac(:,:,:) => null()
1883 integer :: k, i, j, iq
1888 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit TRACERBUBBLE] / Categ[preprocess] / Origin[SCALE-RM]' 1890 sfc_theta = thetastd
1892 env_theta = thetastd
1896 read(
io_fid_conf,nml=param_mkinit_tracerbubble,iostat=ierr)
1899 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 1900 elseif( ierr > 0 )
then 1901 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_TRACERBUBBLE. Check!' 1907 pres_sfc(1,1,1) = sfc_pres
1908 pott_sfc(1,1,1) = sfc_theta
1909 qv_sfc(1,1,1) = 0.0_rp
1910 qc_sfc(1,1,1) = 0.0_rp
1913 pott(k,1,1) = env_theta
1919 call hydrostatic_buildrho(
dens(:,1,1), &
1935 momz(k,i,j) = 0.0_rp
1938 rhot(k,i,j) = pott(k,1,1) *
dens(k,1,1)
1941 qtrc(k,i,j,iq) = 0.0_rp
1948 if (
i_nc > 0 )
then 1950 select case(shape_nc)
1958 write(*,*)
'xxx SHAPE_NC=', trim(shape_nc),
' cannot be used on advect. Check!' 1965 qtrc(k,i,j,
i_nc) = bbl_nc * shapefac(k,i,j)
1970 write(*,*)
'xxx tracer I_NC is not defined. Check!' 1975 write(*,*)
'xxx SBM cannot be used on tracerbubble. Check!' 1981 end subroutine mkinit_tracerbubble
1993 subroutine mkinit_coldbubble
1997 real(RP) :: SFC_THETA
1998 real(RP) :: SFC_PRES
2000 real(RP) :: ENV_THETA
2002 real(RP) :: BBL_TEMP = -15.0_rp
2004 namelist / param_mkinit_coldbubble / &
2013 integer :: k, i, j, iq
2017 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit COLDBUBBLE] / Categ[preprocess] / Origin[SCALE-RM]' 2019 sfc_theta = thetastd
2021 env_theta = thetastd
2025 read(
io_fid_conf,nml=param_mkinit_coldbubble,iostat=ierr)
2028 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2029 elseif( ierr > 0 )
then 2030 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_COLDBUBBLE. Check!' 2035 rovcp = rdry / cpdry
2038 pres_sfc(1,1,1) = sfc_pres
2039 pott_sfc(1,1,1) = sfc_theta
2040 qv_sfc(1,1,1) = 0.0_rp
2041 qc_sfc(1,1,1) = 0.0_rp
2044 pott(k,1,1) = env_theta
2050 call hydrostatic_buildrho(
dens(:,1,1), &
2066 momz(k,i,j) = 0.0_rp
2067 momx(k,i,j) = 0.0_rp
2068 momy(k,i,j) = 0.0_rp
2071 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) &
2072 + bbl_temp * ( p00/pres(k,1,1) )**rovcp * bubble(k,i,j) )
2075 qtrc(k,i,j,iq) = 0.0_rp
2082 write(*,*)
'xxx SBM cannot be used on coldbubble. Check!' 2087 end subroutine mkinit_coldbubble
2091 subroutine mkinit_lambwave
2095 real(RP) :: SFC_PRES
2097 real(RP) :: ENV_U = 0.0_rp
2098 real(RP) :: ENV_V = 0.0_rp
2099 real(RP) :: ENV_TEMP = 300.0_rp
2101 real(RP) :: BBL_PRES = 100._rp
2103 namelist / param_mkinit_lambwave / &
2113 integer :: k, i, j, iq
2117 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit LAMBWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2123 read(
io_fid_conf,nml=param_mkinit_lambwave,iostat=ierr)
2126 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2127 elseif( ierr > 0 )
then 2128 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_LAMBWAVE. Check!' 2133 rovcp = rdry / cpdry
2138 dens(k,i,j) = sfc_pres/(rdry*env_temp) * exp( - grav/(rdry*env_temp) *
grid_cz(k) )
2139 momz(k,i,j) = 0.0_rp
2144 pres(k,i,j) =
dens(k,i,j) * env_temp * rdry + bbl_pres * bubble(k,i,j)
2146 rhot(k,i,j) =
dens(k,i,j) * env_temp * ( p00/pres(k,i,j) )**rovcp
2149 qtrc(k,i,j,iq) = 0.0_rp
2156 write(*,*)
'xxx SBM cannot be used on lambwave. Check!' 2161 end subroutine mkinit_lambwave
2166 subroutine mkinit_gravitywave
2170 real(RP) :: SFC_THETA
2171 real(RP) :: SFC_PRES
2173 real(RP) :: ENV_U = 20.0_rp
2174 real(RP) :: ENV_V = 0.0_rp
2175 real(RP) :: ENV_BVF = 0.01_rp
2177 real(RP) :: BBL_THETA = 0.01_rp
2179 namelist / param_mkinit_gravitywave / &
2188 integer :: k, i, j, iq
2192 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit GRAVITYWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2194 sfc_theta = thetastd
2199 read(
io_fid_conf,nml=param_mkinit_gravitywave,iostat=ierr)
2202 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2203 elseif( ierr > 0 )
then 2204 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_GRAVITYWAVE. Check!' 2210 pres_sfc(1,1,1) = sfc_pres
2211 pott_sfc(1,1,1) = sfc_theta
2212 qv_sfc(1,1,1) = 0.0_rp
2213 qc_sfc(1,1,1) = 0.0_rp
2216 pott(k,1,1) = sfc_theta * exp( env_bvf*env_bvf / grav *
grid_cz(k) )
2222 call hydrostatic_buildrho(
dens(:,1,1), &
2238 momz(k,i,j) = 0.0_rp
2243 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) + bbl_theta * bubble(k,i,j) )
2246 qtrc(k,i,j,iq) = 0.0_rp
2253 write(*,*)
'xxx SBM cannot be used on gravitywave. Check!' 2258 end subroutine mkinit_gravitywave
2262 subroutine mkinit_khwave
2266 real(RP) :: SFC_THETA
2267 real(RP) :: SFC_PRES
2269 real(RP) :: ENV_L1_ZTOP = 1900.0_rp
2270 real(RP) :: ENV_L3_ZBOTTOM = 2100.0_rp
2271 real(RP) :: ENV_L1_THETA = 300.0_rp
2272 real(RP) :: ENV_L3_THETA = 301.0_rp
2273 real(RP) :: ENV_L1_U = 0.0_rp
2274 real(RP) :: ENV_L3_U = 20.0_rp
2276 real(RP) :: RANDOM_U = 0.0_rp
2278 namelist / param_mkinit_khwave / &
2292 integer :: k, i, j, iq
2296 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit KHWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2298 sfc_theta = thetastd
2303 read(
io_fid_conf,nml=param_mkinit_khwave,iostat=ierr)
2306 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2307 elseif( ierr > 0 )
then 2308 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_KHWAVE. Check!' 2314 pres_sfc(1,1,1) = sfc_pres
2315 pott_sfc(1,1,1) = sfc_theta
2316 qv_sfc(1,1,1) = 0.0_rp
2317 qc_sfc(1,1,1) = 0.0_rp
2320 fact = (
grid_cz(k)-env_l1_ztop ) / ( env_l3_zbottom-env_l1_ztop )
2321 fact = max( min( fact, 1.0_rp ), 0.0_rp )
2323 pott(k,1,1) = env_l1_theta * ( 1.0_rp - fact ) &
2324 + env_l3_theta * ( fact )
2331 call hydrostatic_buildrho(
dens(:,1,1), &
2344 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
2345 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
2351 momz(k,i,j) = 0.0_rp
2352 momy(k,i,j) = 0.0_rp
2353 rhot(k,i,j) =
dens(k,1,1) * pott(k,1,1)
2356 qtrc(k,i,j,iq) = 0.0_rp
2366 fact = (
grid_cz(k)-env_l1_ztop ) / ( env_l3_zbottom-env_l1_ztop )
2367 fact = max( min( fact, 1.0_rp ), 0.0_rp )
2369 momx(k,i,j) = ( env_l1_u * ( 1.0_rp - fact ) &
2370 + env_l3_u * ( fact ) &
2371 + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_u &
2378 write(*,*)
'xxx SBM cannot be used on khwave. Check!' 2383 end subroutine mkinit_khwave
2387 subroutine mkinit_turbulence
2391 real(RP) :: SFC_THETA
2392 real(RP) :: SFC_PRES
2393 real(RP) :: SFC_RH = 0.0_rp
2395 real(RP) :: ENV_THETA
2396 real(RP) :: ENV_TLAPS = 4.e-3_rp
2397 real(RP) :: ENV_U = 5.0_rp
2398 real(RP) :: ENV_V = 0.0_rp
2399 real(RP) :: ENV_RH = 0.0_rp
2401 real(RP) :: RANDOM_THETA = 1.0_rp
2402 real(RP) :: RANDOM_U = 0.0_rp
2403 real(RP) :: RANDOM_V = 0.0_rp
2404 real(RP) :: RANDOM_RH = 0.0_rp
2406 namelist / param_mkinit_turbulence / &
2421 integer :: k, i, j, iq
2425 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit TURBULENCE] / Categ[preprocess] / Origin[SCALE-RM]' 2427 sfc_theta = thetastd
2429 env_theta = thetastd
2433 read(
io_fid_conf,nml=param_mkinit_turbulence,iostat=ierr)
2436 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2437 elseif( ierr > 0 )
then 2438 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_TURBULENCE. Check!' 2444 pres_sfc(1,1,1) = sfc_pres
2445 pott_sfc(1,1,1) = sfc_theta
2446 qv_sfc(1,1,1) = 0.0_rp
2447 qc_sfc(1,1,1) = 0.0_rp
2450 pott(k,1,1) = env_theta + env_tlaps *
grid_cz(k)
2456 call hydrostatic_buildrho(
dens(:,1,1), &
2469 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
2470 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
2475 qv_sfc(1,i,j) = ( sfc_rh + rndm(
ks-1,i,j) * random_rh ) * 1.e-2_rp * qsat_sfc(1,1,1)
2476 qc_sfc(1,i,j) = 0.0_rp
2479 qv(k,i,j) = ( env_rh + rndm(k,i,j) * random_rh ) * 1.e-2_rp * qsat(k,1,1)
2488 pres_sfc(1,i,j) = sfc_pres
2489 pott_sfc(1,i,j) = sfc_theta + rndm(
ks-1,i,j) * random_theta
2492 pott(k,i,j) = env_theta + env_tlaps *
grid_cz(k) + rndm(k,i,j) * random_theta
2498 call hydrostatic_buildrho(
dens(:,:,:), &
2510 call comm_vars8(
dens(:,:,:), 1 )
2511 call comm_wait (
dens(:,:,:), 1 )
2517 momx(k,i,j) = ( env_u + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_u ) &
2518 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
2527 momy(k,i,j) = ( env_v + ( rndm(k,i,j) - 0.5_rp ) * 2.0_rp * random_v ) &
2528 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
2536 momz(k,i,j) = 0.0_rp
2537 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
2550 qtrc(k,i,j,iq) = 0.0_rp
2559 write(*,*)
'xxx SBM cannot be used on turbulence. Check!' 2564 end subroutine mkinit_turbulence
2568 subroutine mkinit_cavityflow
2572 real(RP) :: REYNOLDS_NUM = 4.d02
2573 real(RP) :: MACH_NUM = 3.d-2
2574 real(RP) :: TEMP0 = 300.d0
2576 namelist / param_mkinit_cavityflow / &
2583 real(RP) :: Gam, Cs2
2585 real(RP),
parameter :: PRES0 = 1000.e+2_rp
2586 real(RP),
parameter :: Ulid = 10.0_rp
2593 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit CAVITYFLOW] / Categ[preprocess] / Origin[SCALE-RM]' 2597 read(
io_fid_conf,nml=param_mkinit_cavityflow,iostat=ierr)
2600 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2601 elseif( ierr > 0 )
then 2602 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_CAVITYFLOW. Check!' 2607 gam = cpdry / ( cpdry - rdry )
2608 cs2 = ( ulid / mach_num )**2
2609 temp = cs2 / ( gam * rdry )
2610 dens0 = pres0 / ( rdry * temp )
2622 momz(k,i,j) = 0.0_rp
2623 momx(k,i,j) = 0.0_rp
2624 momy(k,i,j) = 0.0_rp
2626 rhot(k,i,j) = p00/rdry * (p00/pres0)**((rdry - cpdry)/cpdry)
2627 qtrc(k,i,j,:) = 0.0_rp
2635 end subroutine mkinit_cavityflow
2639 subroutine mkinit_mountainwave
2643 real(RP) :: SFC_THETA
2644 real(RP) :: SFC_PRES
2646 real(RP) :: ENV_U = 0.0_rp
2647 real(RP) :: ENV_V = 0.0_rp
2649 real(RP) :: SCORER = 2.e-3_rp
2650 real(RP) :: BBL_NC = 0.0_rp
2652 namelist / param_mkinit_mountainwave / &
2660 real(RP) :: Ustar2, N2
2667 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit MOUNTAINWAVE] / Categ[preprocess] / Origin[SCALE-RM]' 2669 sfc_theta = thetastd
2674 read(
io_fid_conf,nml=param_mkinit_mountainwave,iostat=ierr)
2677 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2678 elseif( ierr > 0 )
then 2679 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_MOUNTAINWAVE. Check!' 2687 pres_sfc(1,i,j) = sfc_pres
2688 pott_sfc(1,i,j) = sfc_theta
2689 qv_sfc(1,i,j) = 0.0_rp
2690 qc_sfc(1,i,j) = 0.0_rp
2697 ustar2 = env_u * env_u + env_v * env_v
2698 n2 = ustar2 * (scorer*scorer)
2700 pott(k,i,j) = sfc_theta * exp( n2 / grav *
real_cz(k,i,j) )
2708 call hydrostatic_buildrho(
dens(:,:,:), &
2724 momz(k,i,j) = 0.0_rp
2727 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
2729 qtrc(k,i,j,:) = 0.0_rp
2735 if ( bbl_nc > 0.0_rp )
then 2736 if (
i_nc > 0 )
then 2740 qtrc(k,i,j,
i_nc) = bbl_nc * bubble(k,i,j)
2745 write(*,*)
'xxx tracer I_NC is not defined. Check!' 2751 end subroutine mkinit_mountainwave
2755 subroutine mkinit_warmbubble
2759 real(RP) :: SFC_THETA
2760 real(RP) :: SFC_PRES
2761 real(RP) :: SFC_RH = 80.0_rp
2763 real(RP) :: ENV_U = 0.0_rp
2764 real(RP) :: ENV_V = 0.0_rp
2765 real(RP) :: ENV_RH = 80.0_rp
2766 real(RP) :: ENV_L1_ZTOP = 1.e3_rp
2767 real(RP) :: ENV_L2_ZTOP = 14.e3_rp
2768 real(RP) :: ENV_L2_TLAPS = 4.e-3_rp
2769 real(RP) :: ENV_L3_TLAPS = 3.e-2_rp
2771 real(RP) :: BBL_THETA = 1.0_rp
2773 namelist / param_mkinit_warmbubble / &
2790 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit WARMBUBBLE] / Categ[preprocess] / Origin[SCALE-RM]' 2792 sfc_theta = thetastd
2797 read(
io_fid_conf,nml=param_mkinit_warmbubble,iostat=ierr)
2800 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2801 elseif( ierr > 0 )
then 2802 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_WARMBUBBLE. Check!' 2808 pres_sfc(1,1,1) = sfc_pres
2809 pott_sfc(1,1,1) = sfc_theta
2810 qv_sfc(1,1,1) = 0.0_rp
2811 qc_sfc(1,1,1) = 0.0_rp
2814 if (
grid_cz(k) <= env_l1_ztop )
then 2815 pott(k,1,1) = sfc_theta
2816 elseif(
grid_cz(k) < env_l2_ztop )
then 2817 pott(k,1,1) = pott(k-1,1,1) + env_l2_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
2819 pott(k,1,1) = pott(k-1,1,1) + env_l3_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
2826 call hydrostatic_buildrho(
dens(:,1,1), &
2839 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
2840 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
2842 qv_sfc(1,1,1) = sfc_rh * 1.e-2_rp * qsat_sfc(1,1,1)
2844 if (
grid_cz(k) <= env_l1_ztop )
then 2845 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
2846 elseif(
grid_cz(k) <= env_l2_ztop )
then 2847 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
2854 call hydrostatic_buildrho(
dens(:,1,1), &
2870 momz(k,i,j) = 0.0_rp
2875 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) + bbl_theta * bubble(k,i,j) )
2885 end subroutine mkinit_warmbubble
2889 subroutine mkinit_supercell
2893 real(RP) :: VELX(
ka)
2894 real(RP) :: VELY(
ka)
2895 real(RP) :: POTT(
ka)
2899 real(RP) :: BBL_THETA = 3.d0
2901 namelist / param_mkinit_supercell / &
2909 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit SUPERCELL] / Categ[preprocess] / Origin[SCALE-RM]' 2913 read(
io_fid_conf,nml=param_mkinit_supercell,iostat=ierr)
2916 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2917 elseif( ierr > 0 )
then 2918 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SUPERCELL. Check!' 2928 dens(k,i,j) = rho(k)
2929 momz(k,i,j) = 0.0_rp
2930 momx(k,i,j) = rho(k) * velx(k)
2931 momy(k,i,j) = rho(k) * vely(k)
2934 rhot(k,i,j) = rho(k) * ( pott(k) + bbl_theta * bubble(k,i,j) )
2944 end subroutine mkinit_supercell
2948 subroutine mkinit_squallline
2952 real(RP) :: VELX(
ka)
2953 real(RP) :: VELY(
ka)
2954 real(RP) :: POTT(
ka)
2957 real(RP) :: RANDOM_THETA = 0.01_rp
2958 real(RP) :: OFFSET_velx = 12.0_rp
2959 real(RP) :: OFFSET_vely = -2.0_rp
2961 namelist / param_mkinit_squallline / &
2971 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit SQUALLLINE] / Categ[preprocess] / Origin[SCALE-RM]' 2975 read(
io_fid_conf,nml=param_mkinit_squallline,iostat=ierr)
2978 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 2979 elseif( ierr > 0 )
then 2980 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_SQUALLLINE. Check!' 2991 dens(k,i,j) = rho(k)
2992 momz(k,i,j) = 0.0_rp
2993 momx(k,i,j) = ( velx(k) - offset_velx ) * rho(k)
2994 momy(k,i,j) = ( vely(k) - offset_vely ) * rho(k)
2995 rhot(k,i,j) = rho(k) * ( pott(k) + rndm(k,i,j) * random_theta )
3007 end subroutine mkinit_squallline
3011 subroutine mkinit_wk1982
3015 real(RP) :: SFC_THETA = 300.0_rp
3016 real(RP) :: SFC_PRES
3018 real(RP) :: TR_Z = 12000.0_rp
3019 real(RP) :: TR_THETA = 343.0_rp
3020 real(RP) :: TR_TEMP = 213.0_rp
3021 real(RP) :: SHEAR_Z = 3000.0_rp
3022 real(RP) :: SHEAR_U = 15.0_rp
3024 real(RP) :: BBL_THETA = 3.d0
3026 namelist / param_mkinit_wk1982 / &
3036 real(RP) :: rh (
ka,
ia,
ja)
3037 real(RP) :: rh_sfc(1 ,
ia,
ja)
3040 integer :: k, i, j, iq
3044 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit WK1982] / Categ[preprocess] / Origin[SCALE-RM]' 3049 read(
io_fid_conf,nml=param_mkinit_wk1982,iostat=ierr)
3051 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3052 elseif( ierr > 0 )
then 3053 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_WK1982. Check!' 3061 pres_sfc(1,i,j) = sfc_pres
3062 pott_sfc(1,i,j) = sfc_theta
3063 qv_sfc(1,i,j) = 0.0_rp
3064 qc_sfc(1,i,j) = 0.0_rp
3067 if (
real_cz(k,i,j) <= tr_z )
then 3068 pott(k,i,j) = pott_sfc(1,i,j) &
3069 + ( tr_theta - pott_sfc(1,i,j) ) * (
real_cz(k,i,j) / tr_z )**1.25_rp
3071 pott(k,i,j) = tr_theta * exp( grav * (
real_cz(k,i,j) - tr_z ) / cpdry / tr_temp )
3081 call hydrostatic_buildrho(
dens(:,:,:), &
3096 rh_sfc(1,i,j) = 1.0_rp - 0.75_rp * (
real_fz(
ks-1,i,j) / tr_z )**1.25_rp
3099 if (
real_cz(k,i,j) <= tr_z )
then 3100 rh(k,i,j) = 1.0_rp - 0.75_rp * (
real_cz(k,i,j) / tr_z )**1.25_rp
3108 call saturation_pres2qsat_all( qsat_sfc(1,:,:), temp_sfc(1,:,:), pres_sfc(1,:,:) )
3109 call saturation_pres2qsat_all( qsat(:,:,:), temp(:,:,:), pres(:,:,:) )
3113 qv_sfc(1,i,j) = rh_sfc(1,i,j) * qsat_sfc(1,i,j)
3115 qv(k,i,j) = rh(k,i,j) * qsat(k,i,j)
3121 call hydrostatic_buildrho(
dens(:,:,:), &
3134 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
3137 call comm_vars8(
dens(:,:,:), 1 )
3138 call comm_wait (
dens(:,:,:), 1 )
3143 momx(k,i,j) = shear_u * tanh(
real_cz(k,i,j) / shear_z ) &
3144 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3152 momy(k,i,j) = 0.0_rp
3153 momz(k,i,j) = 0.0_rp
3154 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3157 rhot(k,i,j) =
dens(k,i,j) * ( pott(k,i,j) + bbl_theta * bubble(k,i,j) )
3170 qtrc(k,i,j,iq) = 0.0_rp
3181 end subroutine mkinit_wk1982
3185 subroutine mkinit_dycoms2_rf01
3189 real(RP) :: PERTURB_AMP = 0.0_rp
3190 integer :: RANDOM_LIMIT = 5
3191 integer :: RANDOM_FLAG = 0
3194 logical :: USE_LWSET = .false.
3196 namelist / param_mkinit_rf01 / &
3202 real(RP) :: potl(
ka,
ia,
ja)
3211 integer :: k, i, j, iq
3214 pi2 = atan(1.0_rp) * 2.0_rp
3217 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit DYCOMS2RF01] / Categ[preprocess] / Origin[SCALE-RM]' 3220 read(
io_fid_conf,nml=param_mkinit_rf01,iostat=ierr)
3222 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3223 elseif( ierr > 0 )
then 3224 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RF01. Check!' 3229 if ( use_lwset )
then 3239 pres_sfc(1,i,j) = 1017.8e2_rp
3240 pott_sfc(1,i,j) = 289.0_rp
3241 qv_sfc(1,i,j) = 0.0_rp
3242 qc_sfc(1,i,j) = 0.0_rp
3245 velx(k,i,j) = 7.0_rp
3246 vely(k,i,j) = -5.5_rp
3247 if (
grid_cz(k) < 820.0_rp )
then 3248 potl(k,i,j) = 289.0_rp - grav / cpdry *
grid_cz(k) * geop_sw
3249 elseif(
grid_cz(k) <= 860.0_rp )
then 3250 sint = sin( pi2 * (
grid_cz(k)-840.0_rp ) / 20.0_rp ) * 0.5_rp
3251 potl(k,i,j) = ( 289.0_rp - grav / cpdry *
grid_cz(k) * geop_sw ) * (0.5_rp-sint) &
3252 + ( 297.5_rp+sign(abs(
grid_cz(k)-840.0_rp)**(1.0_rp/3.0_rp),
grid_cz(k)-840.0_rp) &
3253 - grav / cpdry *
grid_cz(k) * geop_sw ) * (0.5_rp+sint)
3255 potl(k,i,j) = 297.5_rp + (
grid_cz(k)-840.0_rp )**(1.0_rp/3.0_rp) &
3256 - grav / cpdry *
grid_cz(k) * geop_sw
3267 call hydrostatic_buildrho(
dens(:,:,:), &
3282 qv_sfc(1,i,j) = 9.0e-3_rp
3283 qc_sfc(1,i,j) = 0.0_rp
3286 if (
grid_cz(k) < 820.0_rp )
then 3288 elseif(
grid_cz(k) <= 860.0_rp )
then 3289 sint = sin( pi2 * (
grid_cz(k)-840.0_rp ) / 20.0_rp ) * 0.5_rp
3290 qall = 9.0e-3_rp * (0.5_rp-sint) &
3291 + 1.5e-3_rp * (0.5_rp+sint)
3292 elseif(
grid_cz(k) <= 5000.0_rp )
then 3298 if (
grid_cz(k) <= 600.0_rp )
then 3300 elseif(
grid_cz(k) < 820.0_rp )
then 3301 fact = (
grid_cz(k)-600.0_rp ) / ( 840.0_rp-600.0_rp )
3302 qc(k,i,j) = 0.45e-3_rp * fact
3303 elseif(
grid_cz(k) <= 860.0_rp )
then 3304 sint = sin( pi2 * (
grid_cz(k)-840.0_rp ) / 20.0_rp ) * 0.5_rp
3305 fact = (
grid_cz(k)-600.0_rp ) / ( 840.0_rp-600.0_rp )
3306 qc(k,i,j) = 0.45e-3_rp * fact * (0.5_rp-sint)
3311 qv(k,i,j) = qall - qc(k,i,j)
3320 temp(k,i,j) = temp(k,i,j) + lhv / cpdry * qc(k,i,j)
3326 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
3345 call comm_vars8(
dens(:,:,:), 1 )
3346 call comm_wait (
dens(:,:,:), 1 )
3352 if ( random_flag == 2 .and. k <= random_limit )
then 3353 momz(k,i,j) = ( 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3354 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
3356 momz(k,i,j) = 0.0_rp
3366 if ( random_flag == 2 .AND. k <= random_limit )
then 3367 momx(k,i,j) = ( velx(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3368 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3370 momx(k,i,j) = velx(k,i,j) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3380 if ( random_flag == 2 .AND. k <= random_limit )
then 3381 momy(k,i,j) = ( vely(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3382 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3384 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3394 if ( random_flag == 1 .and. k <= random_limit )
then 3395 rhot(k,i,j) = ( pott(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
3398 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3408 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
3425 if (
i_nc > 0 )
then 3429 if ( qc(k,i,j) > 0.0_rp )
then 3443 end subroutine mkinit_dycoms2_rf01
3447 subroutine mkinit_dycoms2_rf02
3451 real(RP) :: PERTURB_AMP = 0.0_rp
3452 integer :: RANDOM_LIMIT = 5
3453 integer :: RANDOM_FLAG = 0
3457 namelist / param_mkinit_rf02 / &
3462 real(RP) :: potl(
ka,
ia,
ja)
3470 integer :: k, i, j, iq
3473 pi2 = atan(1.0_rp) * 2.0_rp
3475 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit DYCOMS2RF02] / Categ[preprocess] / Origin[SCALE-RM]' 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)
3569 temp(k,i,j) = temp(k,i,j) + lhv / cpdry * qc(k,i,j)
3575 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
3594 call comm_vars8(
dens(:,:,:), 1 )
3595 call comm_wait (
dens(:,:,:), 1 )
3601 if( random_flag == 2 .and. k <= random_limit )
then 3602 momz(k,i,j) = ( 0.0_rp + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3603 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
3605 momz(k,i,j) = 0.0_rp
3615 if( random_flag == 2 .and. k <= random_limit )
then 3616 momx(k,i,j) = ( velx(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3617 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3619 momx(k,i,j) = ( velx(k,i,j) ) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3629 if( random_flag == 2 .and. k <= random_limit )
then 3630 momy(k,i,j) = ( vely(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3631 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3633 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3643 if( random_flag == 1 .and. k <= random_limit )
then 3644 rhot(k,i,j) = ( pott(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3647 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3658 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
3675 if (
i_nc > 0 )
then 3679 if ( qc(k,i,j) > 0.0_rp )
then 3693 end subroutine mkinit_dycoms2_rf02
3697 subroutine mkinit_dycoms2_rf02_dns
3701 real(RP) :: ZB = 750.0_rp
3703 real(RP) :: CONST_U = 0.0_rp
3704 real(RP) :: CONST_V = 0.0_rp
3705 real(RP) :: PRES_ZB = 93060.0_rp
3706 real(RP) :: PERTURB_AMP = 0.0_rp
3707 integer :: RANDOM_LIMIT = 5
3708 integer :: RANDOM_FLAG = 0
3712 namelist / param_mkinit_rf02_dns / &
3713 zb, const_u, const_v,pres_zb,&
3718 real(RP) :: potl(
ka,
ia,
ja)
3726 integer :: k, i, j, iq
3729 pi2 = atan(1.0_rp) * 2.0_rp
3732 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit DYCOMS2RF02_DNS] / Categ[preprocess] / Origin[SCALE-RM]' 3735 read(
io_fid_conf,nml=param_mkinit_rf02_dns,iostat=ierr)
3737 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3738 elseif( ierr > 0 )
then 3739 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RF02_DNS. Check!' 3749 pres_sfc(1,i,j) = pres_zb
3756 velx(k,i,j) = const_u
3757 vely(k,i,j) = const_v
3760 if ( zb+
grid_cz(k) <= 795.0_rp )
then 3761 potl(k,i,j) = 288.3_rp
3771 potl(k,i,j) = 295.0_rp + ( zb+
grid_cz(k)-795.0_rp )**(1.0_rp/3.0_rp)
3772 qall = 5.e-3_rp - 3.e-3_rp * ( 1.0_rp - exp( (795.0_rp-(zb+
grid_cz(k)))/500.0_rp ) )
3775 if( zb+
grid_cz(k) < 400.0_rp )
then 3777 elseif( zb+
grid_cz(k) <= 795.0_rp )
then 3778 fact = ( (zb+
grid_cz(k))-400.0_rp ) / ( 795.0_rp-400.0_rp )
3779 qc(k,i,j) = 0.8e-3_rp * fact
3783 qv(k,i,j) = qall - qc(k,i,j)
3792 pott_sfc(1,:,:) = potl(
ks,:,:)-0.5*(potl(
ks+1,:,:)-potl(
ks,:,:))
3793 qv_sfc(1,:,:) = qv(
ks,:,:)-0.5*(qv(
ks+1,:,:)-qv(
ks,:,:))
3794 qc_sfc(1,:,:) = qc(
ks,:,:)-0.5*(qc(
ks+1,:,:)-qc(
ks,:,:))
3797 call hydrostatic_buildrho(
dens(:,:,:), &
3810 rovcp = rdry / cpdry
3814 pott(k,i,j) = potl(k,i,j) + lhv / cpdry * qc(k,i,j) * ( p00/pres(k,i,j) )**rovcp
3821 call hydrostatic_buildrho(
dens(:,:,:), &
3840 call comm_vars8(
dens(:,:,:), 1 )
3841 call comm_wait (
dens(:,:,:), 1 )
3848 if( random_flag == 2 .and. k <= random_limit )
then 3849 momz(k,i,j) = ( 0.0_rp + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3850 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
3852 momz(k,i,j) = 0.0_rp
3863 if( random_flag == 2 .and. k <= random_limit )
then 3864 momx(k,i,j) = ( velx(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3865 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3867 momx(k,i,j) = ( velx(k,i,j) ) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
3878 if( random_flag == 2 .and. k <= random_limit )
then 3879 momy(k,i,j) = ( vely(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3880 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3882 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
3893 if( random_flag == 1 .and. k <= random_limit )
then 3894 rhot(k,i,j) = ( pott(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp ) &
3897 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
3908 qtrc(k,i,j,iq) = 0.0_rp
3920 qtrc(k,i,j,
i_qv) = qv(k,i,j) + qc(k,i,j)
3939 if (
i_nc > 0 )
then 3943 if ( qc(k,i,j) > 0.0_rp )
then 3954 end subroutine mkinit_dycoms2_rf02_dns
3958 subroutine mkinit_rico
3962 real(RP):: PERTURB_AMP_PT = 0.1_rp
3963 real(RP):: PERTURB_AMP_QV = 2.5e-5_rp
3965 namelist / param_mkinit_rico / &
3969 real(RP) :: potl(
ka,
ia,
ja)
3974 integer :: k, i, j, iq
3978 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit RICO] / Categ[preprocess] / Origin[SCALE-RM]' 3981 read(
io_fid_conf,nml=param_mkinit_rico,iostat=ierr)
3983 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 3984 elseif( ierr > 0 )
then 3985 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_RICO. Check!' 3994 pres_sfc(1,i,j) = 1015.4e2_rp
3995 pott_sfc(1,i,j) = 297.9_rp
3996 qv_sfc(1,i,j) = 0.0_rp
3997 qc_sfc(1,i,j) = 0.0_rp
4001 if (
grid_cz(k) < 740.0_rp )
then 4002 potl(k,i,j) = 297.9_rp
4004 fact = (
grid_cz(k)-740.0_rp ) * ( 317.0_rp-297.9_rp ) / ( 4000.0_rp-740.0_rp )
4005 potl(k,i,j) = 297.9_rp + fact
4009 if (
grid_cz(k) <= 4000.0_rp )
then 4010 fact = (
grid_cz(k)-0.0_rp ) * ( -1.9_rp+9.9_rp ) / ( 4000.0_rp-0.0_rp )
4011 velx(k,i,j) = -9.9_rp + fact
4012 vely(k,i,j) = -3.8_rp
4014 velx(k,i,j) = -1.9_rp
4015 vely(k,i,j) = -3.8_rp
4027 call hydrostatic_buildrho(
dens(:,:,:), &
4042 qv_sfc(1,i,j) = 16.0e-3_rp
4043 qc_sfc(1,i,j) = 0.0_rp
4047 if (
grid_cz(k) <= 740.0_rp )
then 4048 fact = (
grid_cz(k)-0.0_rp ) * ( 13.8e-3_rp-16.0e-3_rp ) / ( 740.0_rp-0.0_rp )
4049 qall = 16.0e-3_rp + fact
4050 elseif (
grid_cz(k) <= 3260.0_rp )
then 4051 fact = (
grid_cz(k)-740.0_rp ) * ( 2.4e-3_rp-13.8e-3_rp ) / ( 3260.0_rp-740.0_rp )
4052 qall = 13.8e-3_rp + fact
4053 elseif(
grid_cz(k) <= 4000.0_rp )
then 4054 fact = (
grid_cz(k)-3260.0_rp ) * ( 1.8e-3_rp-2.4e-3_rp ) / ( 4000.0_rp-3260.0_rp )
4055 qall = 2.4e-3_rp + fact
4061 qv(k,i,j) = qall - qc(k,i,j)
4070 temp(k,i,j) = temp(k,i,j) + lhv / cpdry * qc(k,i,j)
4076 call hydrostatic_buildrho_bytemp(
dens(:,:,:), &
4096 call comm_vars8(
dens(:,:,:), 1 )
4097 call comm_wait (
dens(:,:,:), 1 )
4102 momz(k,i,j) = 0.0_rp
4110 momx(k,i,j) = velx(k,i,j) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
4118 momy(k,i,j) = vely(k,i,j) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
4127 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)
4139 qtrc(k,i,j,
i_qv) = qv(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp_qv &
4151 qtrc(k,i,j,
i_qv) = qv(k,i,j) + 2.0_rp * ( rndm(k,i,j)-0.50_rp ) * perturb_amp_qv
4157 if (
i_nc > 0 )
then 4161 if ( qc(k,i,j) > 0.0_rp )
then 4175 end subroutine mkinit_rico
4178 subroutine mkinit_interporation
4190 real(RP) :: fact_cz0(
ka)
4191 real(RP) :: fact_cz1(
ka)
4192 real(RP) :: fact_fz0(
ka)
4193 real(RP) :: fact_fz1(
ka)
4194 real(RP) :: fact_cx0(
ia)
4195 real(RP) :: fact_cx1(
ia)
4196 real(RP) :: fact_fx0(
ia)
4197 real(RP) :: fact_fx1(
ia)
4198 real(RP) :: fact_cy0(
ja)
4199 real(RP) :: fact_cy1(
ja)
4200 real(RP) :: fact_fy0(
ja)
4201 real(RP) :: fact_fy1(
ja)
4203 integer :: idx_cz0(
ka)
4204 integer :: idx_cz1(
ka)
4205 integer :: idx_fz0(
ka)
4206 integer :: idx_fz1(
ka)
4207 integer :: idx_cx0(
ia)
4208 integer :: idx_cx1(
ia)
4209 integer :: idx_fx0(
ia)
4210 integer :: idx_fx1(
ia)
4211 integer :: idx_cy0(
ja)
4212 integer :: idx_cy1(
ja)
4213 integer :: idx_fy0(
ja)
4214 integer :: idx_fy1(
ja)
4216 real(RP),
allocatable :: DENS_ORG(:,:,:)
4217 real(RP),
allocatable :: MOMZ_ORG(:,:,:)
4218 real(RP),
allocatable :: MOMX_ORG(:,:,:)
4219 real(RP),
allocatable :: MOMY_ORG(:,:,:)
4220 real(RP),
allocatable :: RHOT_ORG(:,:,:)
4221 real(RP),
allocatable :: QTRC_ORG(:,:,:,:)
4223 real(RP),
allocatable :: W_ORG(:,:,:)
4224 real(RP),
allocatable :: U_ORG(:,:,:)
4225 real(RP),
allocatable :: V_ORG(:,:,:)
4226 real(RP),
allocatable :: POTT_ORG(:,:,:)
4228 real(RP),
allocatable :: CZ_ORG(:)
4229 real(RP),
allocatable :: FZ_ORG(:)
4230 real(RP),
allocatable :: CX_ORG(:)
4231 real(RP),
allocatable :: FX_ORG(:)
4232 real(RP),
allocatable :: CY_ORG(:)
4233 real(RP),
allocatable :: FY_ORG(:)
4237 character(len=H_LONG) :: BASENAME_ORG =
'' 4239 namelist / param_mkinit_interporation / &
4243 integer :: k, i, j, iq
4247 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit INTERPORATION] / Categ[preprocess] / Origin[SCALE-RM]' 4251 read(
io_fid_conf,nml=param_mkinit_interporation,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_INTERPORATION. Check!' 4262 basename_org,
"DENS", 1, single=.true. )
4264 allocate( dens_org(dims(1),dims(2),dims(3)) )
4265 allocate( momz_org(dims(1),dims(2),dims(3)) )
4266 allocate( momx_org(dims(1),dims(2),dims(3)) )
4267 allocate( momy_org(dims(1),dims(2),dims(3)) )
4268 allocate( rhot_org(dims(1),dims(2),dims(3)) )
4269 allocate( qtrc_org(dims(1),dims(2),dims(3),
qa) )
4271 allocate( w_org(dims(1),dims(2),dims(3)) )
4272 allocate( u_org(dims(1),dims(2),dims(3)) )
4273 allocate( v_org(dims(1),dims(2),dims(3)) )
4274 allocate( pott_org(dims(1),dims(2),dims(3)) )
4276 allocate( cz_org(dims(1)) )
4277 allocate( fz_org(dims(1)) )
4278 allocate( cx_org(dims(2)) )
4279 allocate( fx_org(dims(2)) )
4280 allocate( cy_org(dims(3)) )
4281 allocate( fy_org(dims(3)) )
4283 call fileread( dens_org(:,:,:), &
4284 basename_org,
"DENS", 1, 1, single=.true. )
4285 call fileread( momz_org(:,:,:), &
4286 basename_org,
"MOMZ", 1, 1, single=.true. )
4287 call fileread( momx_org(:,:,:), &
4288 basename_org,
"MOMX", 1, 1, single=.true. )
4289 call fileread( momy_org(:,:,:), &
4290 basename_org,
"MOMY", 1, 1, single=.true. )
4291 call fileread( rhot_org(:,:,:), &
4292 basename_org,
"RHOT", 1, 1, single=.true. )
4294 call fileread( qtrc_org(:,:,:,iq), &
4295 basename_org,
aq_name(iq), 1, 1, single=.true. )
4298 call fileread( cz_org(:), &
4299 basename_org,
"z" , 1, 1, single=.true. )
4300 call fileread( cx_org(:), &
4301 basename_org,
"x" , 1, 1, single=.true. )
4302 call fileread( cy_org(:), &
4303 basename_org,
"y" , 1, 1, single=.true. )
4304 call fileread( fx_org(:), &
4305 basename_org,
"xh", 1, 1, single=.true. )
4306 call fileread( fy_org(:), &
4307 basename_org,
"yh", 1, 1, single=.true. )
4311 idx_cz0( k), idx_cz1(k), &
4312 grid_cz(k), cz_org, dims(1), &
4315 idx_fz0(k), idx_fz1(k), &
4316 grid_fz(k), fz_org, dims(1), &
4321 idx_cx0(i), idx_cx1(i), &
4322 grid_cx(i), cx_org, dims(2), &
4325 idx_fx0(i), idx_fx1(i), &
4326 grid_fx(i), fx_org, dims(2), &
4331 idx_cy0(j), idx_cy1(j), &
4332 grid_cy(j), cy_org, dims(3), &
4335 idx_fy0(j), idx_fy1(j), &
4336 grid_fy(j), fy_org, dims(3), &
4344 w_org(k,i,j) = 2.0_rp * momz_org(k,i,j) / ( dens_org(k+1,i,j) + dens_org(k,i,j) )
4350 w_org(dims(1),i,j) = 0.0_rp
4357 u_org(k,i,j) = 2.0_rp * momx_org(k,i,j) / ( dens_org(k,i+1,j) + dens_org(k,i,j) )
4363 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) )
4370 v_org(k,i,j) = 2.0_rp * momy_org(k,i,j) / ( dens_org(k,i,j+1) + dens_org(k,i,j) )
4376 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)) )
4383 pott_org(k,i,j) = rhot_org(k,i,j) / dens_org(k,i,j)
4391 dens_org(k,i,j) =
log( dens_org(k,i,j) )
4399 dens(k,i,j) = exp( &
4400 fact_cz0(k)*fact_cx0(i)*fact_cy0(j)*dens_org(idx_cz0(k),idx_cx0(i),idx_cy0(j)) &
4401 + fact_cz1(k)*fact_cx0(i)*fact_cy0(j)*dens_org(idx_cz1(k),idx_cx0(i),idx_cy0(j)) &
4402 + fact_cz0(k)*fact_cx1(i)*fact_cy0(j)*dens_org(idx_cz0(k),idx_cx1(i),idx_cy0(j)) &
4403 + fact_cz1(k)*fact_cx1(i)*fact_cy0(j)*dens_org(idx_cz1(k),idx_cx1(i),idx_cy0(j)) &
4404 + fact_cz0(k)*fact_cx0(i)*fact_cy1(j)*dens_org(idx_cz0(k),idx_cx0(i),idx_cy1(j)) &
4405 + fact_cz1(k)*fact_cx0(i)*fact_cy1(j)*dens_org(idx_cz1(k),idx_cx0(i),idx_cy1(j)) &
4406 + fact_cz0(k)*fact_cx1(i)*fact_cy1(j)*dens_org(idx_cz0(k),idx_cx1(i),idx_cy1(j)) &
4407 + fact_cz1(k)*fact_cx1(i)*fact_cy1(j)*dens_org(idx_cz1(k),idx_cx1(i),idx_cy1(j)) &
4410 w(k,i,j) = fact_fz0(k)*fact_cx0(i)*fact_cy0(j)*w_org(idx_fz0(k),idx_cx0(i),idx_cy0(j)) &
4411 + fact_fz1(k)*fact_cx0(i)*fact_cy0(j)*w_org(idx_fz1(k),idx_cx0(i),idx_cy0(j)) &
4412 + fact_fz0(k)*fact_cx1(i)*fact_cy0(j)*w_org(idx_fz0(k),idx_cx1(i),idx_cy0(j)) &
4413 + fact_fz1(k)*fact_cx1(i)*fact_cy0(j)*w_org(idx_fz1(k),idx_cx1(i),idx_cy0(j)) &
4414 + fact_fz0(k)*fact_cx0(i)*fact_cy1(j)*w_org(idx_fz0(k),idx_cx0(i),idx_cy1(j)) &
4415 + fact_fz1(k)*fact_cx0(i)*fact_cy1(j)*w_org(idx_fz1(k),idx_cx0(i),idx_cy1(j)) &
4416 + fact_fz0(k)*fact_cx1(i)*fact_cy1(j)*w_org(idx_fz0(k),idx_cx1(i),idx_cy1(j)) &
4417 + fact_fz1(k)*fact_cx1(i)*fact_cy1(j)*w_org(idx_fz1(k),idx_cx1(i),idx_cy1(j))
4419 u(k,i,j) = fact_cz0(k)*fact_fx0(i)*fact_cy0(j)*u_org(idx_cz0(k),idx_fx0(i),idx_cy0(j)) &
4420 + fact_cz1(k)*fact_fx0(i)*fact_cy0(j)*u_org(idx_cz1(k),idx_fx0(i),idx_cy0(j)) &
4421 + fact_cz0(k)*fact_fx1(i)*fact_cy0(j)*u_org(idx_cz0(k),idx_fx1(i),idx_cy0(j)) &
4422 + fact_cz1(k)*fact_fx1(i)*fact_cy0(j)*u_org(idx_cz1(k),idx_fx1(i),idx_cy0(j)) &
4423 + fact_cz0(k)*fact_fx0(i)*fact_cy1(j)*u_org(idx_cz0(k),idx_fx0(i),idx_cy1(j)) &
4424 + fact_cz1(k)*fact_fx0(i)*fact_cy1(j)*u_org(idx_cz1(k),idx_fx0(i),idx_cy1(j)) &
4425 + fact_cz0(k)*fact_fx1(i)*fact_cy1(j)*u_org(idx_cz0(k),idx_fx1(i),idx_cy1(j)) &
4426 + fact_cz1(k)*fact_fx1(i)*fact_cy1(j)*u_org(idx_cz1(k),idx_fx1(i),idx_cy1(j))
4428 v(k,i,j) = fact_cz0(k)*fact_cx0(i)*fact_fy0(j)*v_org(idx_cz0(k),idx_cx0(i),idx_fy0(j)) &
4429 + fact_cz1(k)*fact_cx0(i)*fact_fy0(j)*v_org(idx_cz1(k),idx_cx0(i),idx_fy0(j)) &
4430 + fact_cz0(k)*fact_cx1(i)*fact_fy0(j)*v_org(idx_cz0(k),idx_cx1(i),idx_fy0(j)) &
4431 + fact_cz1(k)*fact_cx1(i)*fact_fy0(j)*v_org(idx_cz1(k),idx_cx1(i),idx_fy0(j)) &
4432 + fact_cz0(k)*fact_cx0(i)*fact_fy1(j)*v_org(idx_cz0(k),idx_cx0(i),idx_fy1(j)) &
4433 + fact_cz1(k)*fact_cx0(i)*fact_fy1(j)*v_org(idx_cz1(k),idx_cx0(i),idx_fy1(j)) &
4434 + fact_cz0(k)*fact_cx1(i)*fact_fy1(j)*v_org(idx_cz0(k),idx_cx1(i),idx_fy1(j)) &
4435 + fact_cz1(k)*fact_cx1(i)*fact_fy1(j)*v_org(idx_cz1(k),idx_cx1(i),idx_fy1(j))
4437 pott(k,i,j) = fact_cz0(k)*fact_cx0(i)*fact_cy0(j)*pott_org(idx_cz0(k),idx_cx0(i),idx_cy0(j)) &
4438 + fact_cz1(k)*fact_cx0(i)*fact_cy0(j)*pott_org(idx_cz1(k),idx_cx0(i),idx_cy0(j)) &
4439 + fact_cz0(k)*fact_cx1(i)*fact_cy0(j)*pott_org(idx_cz0(k),idx_cx1(i),idx_cy0(j)) &
4440 + fact_cz1(k)*fact_cx1(i)*fact_cy0(j)*pott_org(idx_cz1(k),idx_cx1(i),idx_cy0(j)) &
4441 + fact_cz0(k)*fact_cx0(i)*fact_cy1(j)*pott_org(idx_cz0(k),idx_cx0(i),idx_cy1(j)) &
4442 + fact_cz1(k)*fact_cx0(i)*fact_cy1(j)*pott_org(idx_cz1(k),idx_cx0(i),idx_cy1(j)) &
4443 + fact_cz0(k)*fact_cx1(i)*fact_cy1(j)*pott_org(idx_cz0(k),idx_cx1(i),idx_cy1(j)) &
4444 + fact_cz1(k)*fact_cx1(i)*fact_cy1(j)*pott_org(idx_cz1(k),idx_cx1(i),idx_cy1(j))
4447 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) &
4448 + fact_cz1(k)*fact_cx0(i)*fact_cy0(j)*qtrc_org(idx_cz1(k),idx_cx0(i),idx_cy0(j),iq) &
4449 + fact_cz0(k)*fact_cx1(i)*fact_cy0(j)*qtrc_org(idx_cz0(k),idx_cx1(i),idx_cy0(j),iq) &
4450 + fact_cz1(k)*fact_cx1(i)*fact_cy0(j)*qtrc_org(idx_cz1(k),idx_cx1(i),idx_cy0(j),iq) &
4451 + fact_cz0(k)*fact_cx0(i)*fact_cy1(j)*qtrc_org(idx_cz0(k),idx_cx0(i),idx_cy1(j),iq) &
4452 + fact_cz1(k)*fact_cx0(i)*fact_cy1(j)*qtrc_org(idx_cz1(k),idx_cx0(i),idx_cy1(j),iq) &
4453 + fact_cz0(k)*fact_cx1(i)*fact_cy1(j)*qtrc_org(idx_cz0(k),idx_cx1(i),idx_cy1(j),iq) &
4454 + fact_cz1(k)*fact_cx1(i)*fact_cy1(j)*qtrc_org(idx_cz1(k),idx_cx1(i),idx_cy1(j),iq)
4460 deallocate( dens_org )
4461 deallocate( momz_org )
4462 deallocate( momx_org )
4463 deallocate( momy_org )
4464 deallocate( rhot_org )
4465 deallocate( qtrc_org )
4470 deallocate( pott_org )
4472 deallocate( cz_org )
4473 deallocate( fz_org )
4474 deallocate( cx_org )
4475 deallocate( fx_org )
4476 deallocate( cy_org )
4477 deallocate( fy_org )
4479 if (
i_qv > 0 )
then 4497 if (
i_qc > 0 )
then 4524 call hydrostatic_buildrho_atmos(
dens(:,:,:), &
4535 momz(k,i,j) = 0.5_rp * w(k,i,j) * (
dens(k,i,j) +
dens(k+1,i,j) )
4543 momx(k,i,j) = 0.5_rp * u(k,i,j) * (
dens(k,i+1,j) +
dens(k,i,j) )
4551 momy(k,i,j) = 0.5_rp * v(k,i,j) * (
dens(k,i,j+1) +
dens(k,i,j) )
4559 rhot(k,i,j) = pott(k,i,j) *
dens(k,i,j)
4565 end subroutine mkinit_interporation
4575 real(RP),
intent(out) :: fact0
4576 real(RP),
intent(out) :: fact1
4577 integer,
intent(out) :: idx0
4578 integer,
intent(out) :: idx1
4579 real(RP),
intent(in) :: x
4580 integer,
intent(in) :: nx
4581 real(RP),
intent(in) :: x_org(nx)
4582 logical,
intent(in) :: loop
4587 if ( x < x_org(1) )
then 4589 xwork = x_org(1) - ( x_org(2) - x_org(1) )**2 / ( x_org(3) - x_org(2) )
4590 fact0 = ( x_org(1) - x ) / ( x_org(1) - xwork )
4591 fact1 = ( x - xwork ) / ( x_org(1) - xwork )
4595 fact0 = ( x_org(2) - x ) / ( x_org(2) - x_org(1) )
4596 fact1 = ( x - x_org(1) ) / ( x_org(2) - x_org(1) )
4600 else if ( x > x_org(nx) )
then 4602 xwork = x_org(nx) + ( x_org(nx) - x_org(nx-1) )**2 / ( x_org(nx-1) - x_org(nx-2) )
4603 fact0 = ( xwork - x ) / ( xwork - x_org(nx) )
4604 fact1 = ( x - x_org(nx) ) / ( xwork - x_org(nx) )
4608 fact0 = ( x_org(nx) - x ) / ( x_org(nx) - x_org(nx-1) )
4609 fact1 = ( x - x_org(nx-1) ) / ( x_org(nx) - x_org(nx-1) )
4615 if ( x <= x_org(i) )
then 4616 fact0 = ( x_org(i) - x ) / ( x_org(i) - x_org(i-1) )
4617 fact1 = ( x - x_org(i-1) ) / ( x_org(i) - x_org(i-1) )
4629 subroutine mkinit_oceancouple
4633 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit OceanCouple] / Categ[preprocess] / Origin[SCALE-RM]' 4640 end subroutine mkinit_oceancouple
4644 subroutine mkinit_landcouple
4648 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit LandCouple] / Categ[preprocess] / Origin[SCALE-RM]' 4655 end subroutine mkinit_landcouple
4659 subroutine mkinit_urbancouple
4663 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit UrbanCouple] / Categ[preprocess] / Origin[SCALE-RM]' 4670 end subroutine mkinit_urbancouple
4674 subroutine mkinit_seabreeze
4688 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit SEABREEZE] / Categ[preprocess] / Origin[SCALE-RM]' 4702 if (
grid_cx(i) >= dist * 3.0_rp &
4703 .AND.
grid_cx(i) <= dist * 5.0_rp )
then 4714 end subroutine mkinit_seabreeze
4718 subroutine mkinit_heatisland
4733 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit HEATISLAND] / Categ[preprocess] / Origin[SCALE-RM]' 4747 if (
grid_cx(i) >= dist * 4.0_rp &
4748 .AND.
grid_cx(i) < dist * 5.0_rp )
then 4761 end subroutine mkinit_heatisland
4765 subroutine mkinit_grayzone
4769 real(RP) :: VELX(
ka)
4770 real(RP) :: VELY(
ka)
4771 real(RP) :: POTT(
ka)
4774 real(RP) :: PERTURB_AMP = 0.0_rp
4775 integer :: RANDOM_LIMIT = 0
4776 integer :: RANDOM_FLAG = 0
4780 namelist / param_mkinit_grayzone / &
4790 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit GRAYZONE] / Categ[preprocess] / Origin[SCALE-RM]' 4794 read(
io_fid_conf,nml=param_mkinit_grayzone,iostat=ierr)
4797 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4798 elseif( ierr > 0 )
then 4799 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_GRAYZONE. Check!' 4811 dens(k,i,j) = rho(k)
4834 if ( random_flag == 2 .and. k <= random_limit )
then 4835 momz(k,i,j) = ( 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
4836 * 0.5_rp * (
dens(k+1,i,j) +
dens(k,i,j) )
4838 momz(k,i,j) = 0.0_rp
4848 if ( random_flag == 2 .AND. k <= random_limit )
then 4849 momx(k,i,j) = ( velx(k) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
4850 * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
4852 momx(k,i,j) = velx(k) * 0.5_rp * (
dens(k,i+1,j) +
dens(k,i,j) )
4862 if ( random_flag == 2 .AND. k <= random_limit )
then 4863 momy(k,i,j) = ( vely(k) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
4864 * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
4866 momy(k,i,j) = vely(k) * 0.5_rp * (
dens(k,i,j+1) +
dens(k,i,j) )
4876 if ( random_flag == 1 .and. k <= random_limit )
then 4877 rhot(k,i,j) = ( pott(k) + 2.0_rp * ( rndm(k,i,j)-0.5_rp ) * perturb_amp ) &
4880 rhot(k,i,j) = pott(k) *
dens(k,i,j)
4887 end subroutine mkinit_grayzone
4890 subroutine mkinit_boxaero
4894 real(RP) :: init_dens = 1.12_rp
4895 real(RP) :: init_temp = 298.18_rp
4896 real(RP) :: init_pres = 1.e+5_rp
4897 real(RP) :: init_ssliq = 0.01_rp
4899 namelist / param_mkinit_boxaero / &
4906 integer :: i, j, k, ierr
4910 if(
io_l )
write(
io_fid_log,*)
'+++ AETRACER_TYPE should be KAJINO13. Stop!' 4915 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit Box model of aerosol] / Categ[preprocess] / Origin[SCALE-RM]' 4919 read(
io_fid_conf,nml=param_mkinit_boxaero,iostat=ierr)
4921 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4922 elseif( ierr > 0 )
then 4923 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_BOXAERO. Check!' 4928 qtrc(:,:,:,:) = 0.0_rp
4932 dens(k,i,j) = init_dens
4933 momx(k,i,j) = 0.0_rp
4934 momy(k,i,j) = 0.0_rp
4935 momz(k,i,j) = 0.0_rp
4936 pott(k,i,j) = init_temp * ( p00/init_pres )**( rdry/cpdry )
4937 rhot(k,i,j) =
dens(k,i,j) * pott(k,i,j)
4938 call saturation_pres2qsat_all( qsat,init_temp,init_pres )
4939 qtrc(k,i,j,
i_qv) = ( init_ssliq + 1.0_rp )*qsat
4948 end subroutine mkinit_boxaero
4951 subroutine mkinit_warmbubbleaero
4955 real(RP) :: SFC_THETA
4956 real(RP) :: SFC_PRES
4957 real(RP) :: SFC_RH = 80.0_rp
4959 real(RP) :: ENV_U = 0.0_rp
4960 real(RP) :: ENV_V = 0.0_rp
4961 real(RP) :: ENV_RH = 80.0_rp
4962 real(RP) :: ENV_L1_ZTOP = 1.e3_rp
4963 real(RP) :: ENV_L2_ZTOP = 14.e3_rp
4964 real(RP) :: ENV_L2_TLAPS = 4.e-3_rp
4965 real(RP) :: ENV_L3_TLAPS = 3.e-2_rp
4967 real(RP) :: BBL_THETA = 1.0_rp
4969 namelist / param_mkinit_warmbubble / &
4986 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mkinit WARMBUBBLEAERO] / Categ[preprocess] / Origin[SCALE-RM]' 4988 sfc_theta = thetastd
4993 read(
io_fid_conf,nml=param_mkinit_warmbubble,iostat=ierr)
4996 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 4997 elseif( ierr > 0 )
then 4998 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKINIT_WARMBUBBLE. Check!' 5004 pres_sfc(1,1,1) = sfc_pres
5005 pott_sfc(1,1,1) = sfc_theta
5006 qv_sfc(1,1,1) = 0.0_rp
5007 qc_sfc(1,1,1) = 0.0_rp
5010 if (
grid_cz(k) <= env_l1_ztop )
then 5011 pott(k,1,1) = sfc_theta
5012 elseif(
grid_cz(k) < env_l2_ztop )
then 5013 pott(k,1,1) = pott(k-1,1,1) + env_l2_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
5015 pott(k,1,1) = pott(k-1,1,1) + env_l3_tlaps * (
grid_cz(k)-
grid_cz(k-1) )
5022 call hydrostatic_buildrho(
dens(:,1,1), &
5035 call saturation_pres2qsat_all( qsat_sfc(1,1,1), temp_sfc(1,1,1), pres_sfc(1,1,1) )
5036 call saturation_pres2qsat_all( qsat(:,1,1), temp(:,1,1), pres(:,1,1) )
5038 qv_sfc(1,1,1) = sfc_rh * 1.e-2_rp * qsat_sfc(1,1,1)
5040 if (
grid_cz(k) <= env_l1_ztop )
then 5041 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
5042 elseif(
grid_cz(k) <= env_l2_ztop )
then 5043 qv(k,1,1) = env_rh * 1.e-2_rp * qsat(k,1,1)
5050 call hydrostatic_buildrho(
dens(:,1,1), &
5066 momz(k,i,j) = 0.0_rp
5071 rhot(k,i,j) =
dens(k,1,1) * ( pott(k,1,1) + bbl_theta * bubble(k,i,j) )
5085 end subroutine mkinit_warmbubbleaero
5089 subroutine mkinit_real
5102 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
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
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 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
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
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