00001 subroutine calc_4velocity_ut_irrot
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrf, ntf, npf, ntfeq, npfyzp
00004 use def_matter, only : emd, utf, utg, lambda
00005 use def_velocity_potential, only : grad_vpot
00006 use def_vector_phi, only : vec_phif
00007 use def_metric, only : alph, bvxu, bvyu, bvzu
00008 use make_array_3d
00009 use interface_interpo_gr2fl
00010 use interface_interpo_fl2gr
00011 implicit none
00012 real(long) :: emdfc, rhofc, prefc, hhfc, ene
00013 real(long) :: bvxfc, bvyfc, bvzfc, vphix, vphiy, vphiz
00014 real(long) :: dxvp, dyvp, dzvp, lam, lamfc
00015 integer :: ir, it, ip
00016
00017 real(long), pointer :: alphf(:,:,:)
00018 real(long), pointer :: bvxuf(:,:,:), bvyuf(:,:,:), bvzuf(:,:,:)
00019
00020 call alloc_array3d(alphf, 0, nrf, 0, ntf, 0, npf)
00021 call alloc_array3d(bvxuf, 0, nrf, 0, ntf, 0, npf)
00022 call alloc_array3d(bvyuf, 0, nrf, 0, ntf, 0, npf)
00023 call alloc_array3d(bvzuf, 0, nrf, 0, ntf, 0, npf)
00024
00025 call interpo_gr2fl(alph,alphf)
00026 call interpo_gr2fl(bvxu,bvxuf)
00027 call interpo_gr2fl(bvyu,bvyuf)
00028 call interpo_gr2fl(bvzu,bvzuf)
00029
00030 do ip = 0, npf
00031 do it = 0, ntf
00032 do ir = 0, nrf
00033
00034 if (ir.eq.0) then
00035 bvyfc = bvyuf(ir,ntfeq,npfyzp)
00036 vphiy = vec_phif(ir,ntfeq,npfyzp,2)
00037 dyvp = grad_vpot(ir,ntfeq,npfyzp,2)
00038 lam = ber + (bvyfc + ome*vphiy)*dyvp
00039 else
00040 bvxfc = bvxuf(ir,it,ip)
00041 bvyfc = bvyuf(ir,it,ip)
00042 bvzfc = bvzuf(ir,it,ip)
00043 vphix = vec_phif(ir,it,ip,1)
00044 vphiy = vec_phif(ir,it,ip,2)
00045 vphiz = vec_phif(ir,it,ip,3)
00046 dxvp = grad_vpot(ir,it,ip,1)
00047 dyvp = grad_vpot(ir,it,ip,2)
00048 dzvp = grad_vpot(ir,it,ip,3)
00049 lam = ber + (bvxfc + ome*vphix)*dxvp &
00050 & + (bvyfc + ome*vphiy)*dyvp &
00051 & + (bvzfc + ome*vphiz)*dzvp
00052 end if
00053
00054 lamfc = lam
00055 alpfc = alphf(ir,it,ip)
00056 emdfc = emd(ir,it,ip)
00057 if (emdfc <= 1.0d-15) emdfc = 1.0d-15
00058 call peos_q2hprho(emdfc, hhfc, prefc, rhofc, ene)
00059
00060 lambda(ir,it,ip) = lamfc
00061 utf(ir,it,ip) = lamfc/(alpfc**2*hhfc)
00062
00063 end do
00064 end do
00065 end do
00066 call interpo_fl2gr(utf,utg)
00067
00068 deallocate(alphf)
00069 deallocate(bvxuf)
00070 deallocate(bvyuf)
00071 deallocate(bvzuf)
00072 end subroutine calc_4velocity_ut_irrot