!======================================= ! 2D cumulus model - kaminari ! - subroutine kener_sub_1stp ! ! Author : TAKAHASHI Koko ! Date : 2003/11/05 ! Note : 1ステップ目のサブグリッド ! 運動エネルギー ! !======================================= subroutine kener_sub_1stp(i,k,im,km,nuh,nuv,eps,lv,rd,cp,cm,& & ml,grv,dtb,dx,dz,ptemp_bs,u,w,omg,& & temp,ptemp,qv,qc,g_sqrt,g_sqrt_z, & & g13x,g13z,g13xz,km_sub) implicit none integer, intent(in) :: i, k integer, intent(in) :: im, km real(8), intent(in) :: nuh,nuv,eps, lv, rd, cp, cm, ml real(8), intent(in) :: grv, dtb real(8), intent(in) :: dx, dz real(8), intent(in) :: u(0:im+1,0:km+1) real(8), intent(in) :: w(0:im+1,0:km+1) real(8), intent(in) :: omg(0:im+1,0:km+1) real(8), intent(in) :: ptemp_bs(0:im+1,0:km+1) real(8), intent(in) :: temp(0:im+1,0:km+1) real(8), intent(in) :: ptemp(0:im+1,0:km+1) real(8), intent(in) :: qv(0:im+1,0:km+1) real(8), intent(in) :: qc(0:im+1,0:km+1) real(8), intent(in) :: g_sqrt(0:im+1,0:km+1) real(8), intent(in) :: g_sqrt_z(0:im+1,0:km+1) real(8), intent(in) :: g13x(0:im+1,0:km+1) real(8), intent(in) :: g13z(0:im+1,0:km+1) real(8), intent(in) :: g13xz(0:im+1,0:km+1) ! real(8), intent(in) :: (0:im+1,0:km+1) ! real(8), intent(in) :: real(8), intent(inout) :: km_sub(0:im+1,0:km+1) real(8) :: e_sub(0:im+1,0:km+1) real(8) :: e_sub_dif(0:im+1,0:km+1) real(8) :: e_sub_adv(0:im+1,0:km+1) real(8) :: a(0:im+1,0:km+1) real(8) :: ptemp_e(0:im+1,0:km+1) real(8) :: ql(0:im+1,0:km+1) ! real(8) :: (0:im+1,0:km+1) !--- サブグリッド運動エネルギーの数値粘性項 e_sub_dif(i,k) = nuh & & *( & & e_sub(i+1,k) - 2*e_sub(i,k) & & + e_sub(i-1,k) & & ) & & /(4*dx**2) & & + nuv & & *( & & e_sub(i,k+1) - 2*e_sub(i,k) & & + e_sub(i,k-1) & & )/(4*dz**2) e_sub_dif(i,k) = 0.0D0 !--- サブグリッド運動エネルギーの移流項 e_sub_adv(i,k) = (u(i+1,k) + u(i,k))/2 & & *(e_sub(i+1,k) - e_sub(i,k))/(4*dx) & & + (omg(i,k+1) + omg(i,k))/2 & & *(e_sub(i,k+1) - e_sub(i,k))/(4*dz) & & + e_sub_dif(i,k) e_sub_adv(i,k) = 0.0D0 !--- 係数 A a(i,k) = 1/ptemp_bs(i,k) & & *(1 + 1.61*eps*lv*qv(i,k)/(rd*temp(i,k))) & & /(1 + eps*(lv**2)*qv(i,k)/(cp*rd*temp(i,k)**2)) !--- 相当温位 ptemp_e(i,k) = ptemp(i,k)*(1 + lv*qv(i,k)/(cp*temp(i,k))) !--- 水蒸気と雲水混合比の和 ql(i,k) = qv(i,k) + qc(i,k) !-- サブグリッド運動エネルギー e_sub(i,k) = e_sub(i,k) & & + dtb & & *(- e_sub_adv(i,k) & & + 3*grv*cm*ml*e_sub(i,k)**(1/2)/g_sqrt(i,k) & & *(- a(i,k)*ptemp_e(i,k+1) & & - ptemp_e(i,k-1)/(4*dz) & & + (ql(i,k+1) - ql(i,k-1))/(4*dz) & & ) & & + 2*cm*ml*e_sub(i,k)**(1/2) & & *( & & ((u(i+1,k) - u(i,k))/(2*dx) & & + g13xz(i,k) & & *(u(i+1,k+1) + u(i,k+1) & & - u(i+1,k-1)- u(i,k-1) & & )/(8*dz) & & )**2 & & + ( & & 1/g_sqrt(i,k) & & *(w(i,k+1) - w(i,k)) & & /(2*dz) & & )**2 & & + (w(i+1,k+1) + w(i+1,k-1) & & - w(i-1,k+1) - w(i-1,k-1) & & )/(8*dx) & & + g13xz(i,k) & & *(w(i,k+1) - w(i,k)) & & /(2*dz) & & + 1/g_sqrt(i,k) & & *( & & u(i+1,k+1) + u(i-1,k+1) & & - u(i+1,k-1) - u(i-1,k-1) & & )/(8*dz) & & ) & & + cm*ml & & /(2*e_sub(i,k)**(1/2)) & & *( & & ( & & e_sub(i+1,k)**2 & & - e_sub(i,k)**2 & & )/dx**2 & & + ( & & g13z(i+1,k) & & *( & & e_sub(i+2,k+1)**2 & & + e_sub(i,k+1)**2 & & + e_sub(i+2,k-1)**2 & & + e_sub(i,k-1)**2 & & )/(8*dz) & & - g13z(i,k) & & *( & & e_sub(i+1,k+1)**2 & & + e_sub(i-1,k+1)**2 & & + e_sub(i+1,k-1)**2 & & + e_sub(i-1,k-1)**2 & & )/(8*dz) & & )/(2*dx) & & + ( & & g13x(i,k+1) & & *( & & e_sub(i+1,k+2)**2 & & + e_sub(i+1,k)**2 & & + e_sub(i-1,k+2)**2 & & + e_sub(i-1,k)**2 & & )/(8*dx) & & - g13x(i,k) & & *( & & e_sub(i+1,k+1)**2 & & + e_sub(i+1,k-1)**2 & & + e_sub(i-1,k+1)**2 & & + e_sub(i-1,k-1)**2 & & )/(8*dx) & & )/(2*dz) & & + g13xz(i,k) & & *( & & g13x(i+1,k) & & *( & & e_sub(i,k+2)**2 & & - e_sub(i,k+1)**2 & & )/(2*dz) & & - g13x(i,k) & & *( & & e_sub(i,k+1)**2 & & - e_sub(i,k)**2 & & )/(2*dz) & & )/(2*dz) & & + 1/g_sqrt(i,k) & & *( & & g_sqrt_z(i,k+1) & & *( & & e_sub(i,k+2)**2 & & - e_sub(i,k+1)**2 & & )/(2*dz) & & - g_sqrt_z(i,k+1) & & *( & & e_sub(i,k+1)**2 & & - e_sub(i,k)**2 & & )/(2*dz) & & ) & & - ( & & ( & & e_sub(i+1,k)**2 & & - e_sub(i-1,k) & & )/(4*dx) & & + g13xz(i,k) & & *( & & e_sub(i,k+1)**2 & & - e_sub(i,k-1) & & )/(4*dz) & & )**2 & & - ( & & 1/g_sqrt_z(i,k) & & *( & & e_sub(i,k+1) & & - e_sub(i,k-1) & & )/(2*dz) & & )**2 & & ) & & + cm/ml*e_sub(i,k)**(3/2) & & ) !--- 渦混合係数 km_sub(i,k) = cm*ml*sqrt(e_sub(i,k)) end subroutine kener_sub_1stp