00001 subroutine hydro_irbns_1stint_WL_peos(emd)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrf, ntf, npf
00004 use def_metric_on_SFC, only : alphf, psif &
00005 & hxxuf, hxyuf, hxzuf, hyyuf, hyzuf, hzzuf
00006 use make_array_3d
00007 use interface_interpo_gr2fl
00008 implicit none
00009 real(long), pointer :: emd(:,:,:)
00010 real(long) :: hh, ut, pre, rho, ene, qq
00011 real(long) :: psic, alphc, lamc
00012 real(long) :: gamxxu, gamxyu, gamxzu, gamyxu, gamyyu, gamyzu,
00013 gamzxu, gamzyu, gamzzu
00014 real(long) :: dxvp, dyvp, dzvp
00015 integer :: ir, it, ip
00016
00017 do ip = 0, npf
00018 do it = 0, ntf
00019 do ir = 0, nrf
00020
00021 gamxxu = hxxuf(ir,it,ip) + 1.0d0
00022 gamxyu = hxyuf(ir,it,ip)
00023 gamxzu = hxzuf(ir,it,ip)
00024 gamyyu = hyyuf(ir,it,ip) + 1.0d0
00025 gamyzu = hyzuf(ir,it,ip)
00026 gamzzu = hzzuf(ir,it,ip) + 1.0d0
00027 gamyxu = gamxyu
00028 gamzxu = gamxzu
00029 gamzyu = gamyzu
00030 dxvp = grad_velpot(ir,it,ip,1)
00031 dyvp = grad_velpot(ir,it,ip,2)
00032 dzvp = grad_velpot(ir,it,ip,3)
00033
00034 psic = psif(ir,it,ip)
00035 alphc = alphf(ir,it,ip)
00036 lamc = lambda(ir,it,ip)
00037
00038 hh = &
00039 & ((lamc/alphc)**2 - 1.0d0/psic**4* &
00040 & (gamxxu*dxvp*dxvp + gamxyu*dxvp*dyvp + gamxzu*dxvp*dzvp &
00041 & + gamyxu*dyvp*dxvp + gamyyu*dyvp*dyvp + gamyzu*dyvp*dzvp &
00042 & + gamzxu*dzvp*dxvp + gamzyu*dzvp*dyvp + gamzzu*dzvp*dzvp))**0.5
00043
00044 call peos_h2qprho(hh, qq, pre, rho, ene)
00045 emd(ir,it,ip) = qq
00046
00047 end do
00048 end do
00049 end do
00050
00051 end subroutine hydro_irbns_1stint_WL_peos