00001 subroutine hydrostatic_eq_qeos(rho)
00002 use phys_constant, only : long
00003 use grid_parameter
00004 use def_matter, only : utf, omef, jomef, jomef_int
00005 use def_matter_parameter, only : ome, ber, rhoc_qs, rhos_qs
00006 use def_metric_on_SFC_CF, only : alphf, psif, bvxdf, bvydf, bvzdf
00007 use coordinate_grav_r, only : rg
00008 use def_vector_phi, only : vec_phif
00009 use make_array_3d
00010 use interface_interpo_gr2fl
00011 implicit none
00012 real(long), pointer :: rho(:,:,:)
00013 real(long) :: vphif(3)
00014 real(long) :: ovufc(3), ovufc2
00015 real(long) :: omefc, jomef_intfc
00016 real(long) :: hh, ut, pre, ene, qq
00017 real(8) :: rhomin, rhomax, rhotmp
00018 real(8), external :: quark_rho2h, quark_rho2h_dot
00019 integer :: irf, itf, ipf
00020
00021 rhomin = 0.5d0*rhos_qs
00022 rhomax = 1.1d0*rhoc_qs
00023 do ipf = 0, npf
00024 do itf = 0, ntf
00025 rhotmp = rhoc_qs
00026 do irf = 0, nrf
00027 vphif(1) = vec_phif(irf,itf,ipf,1)
00028 vphif(2) = vec_phif(irf,itf,ipf,2)
00029 vphif(3) = vec_phif(irf,itf,ipf,3)
00030 omefc = omef(irf,itf,ipf)
00031 ovufc(1) = bvxdf(irf,itf,ipf) + omefc*vphif(1)
00032 ovufc(2) = bvydf(irf,itf,ipf) + omefc*vphif(2)
00033 ovufc(3) = bvzdf(irf,itf,ipf) + omefc*vphif(3)
00034 ovufc2 = ovufc(1)**2 + ovufc(2)**2 + ovufc(3)**2
00035 ut = 1.0d0/sqrt(alphf(irf,itf,ipf)**2 &
00036 & - psif(irf,itf,ipf)**4*ovufc2)
00037 jomef_intfc = jomef_int(irf,itf,ipf)
00038 hh = ber*ut*dexp(-jomef_intfc)
00039 call quark_h2rho(quark_rho2h,quark_rho2h_dot,rhomin,rhomax,hh,rhotmp)
00040 rho(irf,itf,ipf) = rhotmp
00041 utf(irf,itf,ipf) = ut
00042 end do
00043 end do
00044 end do
00045
00046 end subroutine hydrostatic_eq_qeos