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