00001 subroutine source_adm_mass_peos_irrot(soug,souf)
00002 use phys_constant, only : long, pi
00003 use grid_parameter, only : nrg, ntg, npg, nrf, ntf, npf
00004 use def_matter, only : emdg, emd, vep, vepxf, vepyf, vepzf
00005 use def_metric_on_SFC_CF
00006 use def_vector_phi, only : hvec_phif, vec_phif
00007 use def_matter_parameter, only : radi, ber, ome
00008 use def_metric, only : tfkijkij, psi, alph
00009 use make_array_3d
00010 use interface_flgrad_4th_gridpoint
00011 use interface_flgrad_2nd_gridpoint
00012 use interface_interpo_gr2fl
00013 use interface_interpo_linear_type0
00014 implicit none
00015 real(long), pointer :: soug(:,:,:)
00016 real(long), pointer :: souf(:,:,:)
00017 integer :: irg,itg,ipg,irf,itf,ipf
00018 real(long) :: psiwm7
00019 real(long) :: emdw, alphw, psiw, rhow, prew, hhw, utw, rhoHw
00020 real(long) :: epsilonw, alutw
00021 real(long) :: dxvep, dyvep, dzvep, lam, alphw2, ovdfc(3)
00022 real(long) :: zfac, small = 1.0d-15
00023
00024 do ipg = 1, npg
00025 do itg = 1, ntg
00026 do irg = 1, nrg
00027 call interpo_linear_type0(psiw,psi,irg,itg,ipg)
00028 soug(irg,itg,ipg) = 0.125d0*psiw**5*tfkijkij(irg,itg,ipg)
00029 end do
00030 end do
00031 end do
00032
00033 do ipf = 0, npf
00034 do itf = 0, ntf
00035 do irf = 0, nrf
00036 emdw = emd(irf,itf,ipf)
00037 if (emdw <= small) emdw = small
00038 psiw = psif(irf,itf,ipf)
00039 alphw = alphf(irf,itf,ipf)
00040 call peos_q2hprho(emdw, hhw, prew, rhow, epsilonw)
00041
00042 ovdfc(1) = bvxdf(irf,itf,ipf) + ome*vec_phif(irf,itf,ipf,1)
00043 ovdfc(2) = bvydf(irf,itf,ipf) + ome*vec_phif(irf,itf,ipf,2)
00044 ovdfc(3) = bvzdf(irf,itf,ipf) + ome*vec_phif(irf,itf,ipf,3)
00045 dxvep = vepxf(irf,itf,ipf)
00046 dyvep = vepyf(irf,itf,ipf)
00047 dzvep = vepzf(irf,itf,ipf)
00048
00049
00050 alphw2 = alphw**2
00051 lam = ber + ovdfc(1)*dxvep + ovdfc(2)*dyvep + ovdfc(3)*dzvep
00052 utw = lam/alphw2/hhw
00053
00054 alutw = alphw*utw
00055
00056
00057 souf(irf,itf,ipf) = 2.0d0*pi*psiw**5 &
00058 & *(epsilonw*alutw**2 + prew*(alutw-1.0d0)*(alutw+1.0d0))
00059 end do
00060 end do
00061 end do
00062
00063 end subroutine source_adm_mass_peos_irrot