00001 subroutine calc_h_udf_axisym
00002 use phys_constant, only : long
00003 use grid_parameter
00004 use coordinate_grav_r, only : rg
00005 use trigonometry_grav_phi, only : sinphig, cosphig
00006 use def_matter, only : rs, emd, hhf, utf , uxf , uyf , uzf, &
00007 & utdf, uxdf, uydf, uzdf
00008 use def_matter_parameter, only : ome, ber
00009 use def_metric_on_SFC_CF, only : alphf, psif, bvxdf, bvydf, bvzdf, &
00010 & bvxuf, bvyuf, bvzuf
00011 use def_metric_on_SFC_WL, only : hxxdf, hxydf, hxzdf, hyydf, hyzdf, hzzdf
00012 use def_emfield, only : vayd
00013 use def_vector_phi, only : vec_phif
00014 use trigonometry_grav_phi, only : sinphig, cosphig
00015 use integrability_fnc_MHD
00016 use make_array_3d
00017 use interface_interpo_gr2fl
00018 use interface_flgrad_4th_gridpoint
00019 implicit none
00020 real(long) :: hh, utd, ut, ux, uy, uz, vx, vy, vz, pre, rho, ene, qq
00021 real(long) :: bvdfc(3), ovufc(3), ovdfc(3)
00022 real(long) :: gmxxdf, gmxydf, gmxzdf, gmyxdf, gmyydf, gmyzdf,
00023 gmzxdf, gmzydf, gmzzdf, ovovf, alphff, psiff
00024 integer :: irf, itf, ipf
00025
00026 ipf = 0
00027 do itf = 0, ntf
00028 do irf = 0, nrf
00029
00030 psiff = psif(irf,itf,ipf)
00031 alphff = alphf(irf,itf,ipf)
00032 gmxxdf = 1.0d0 + hxxdf(irf,itf,ipf)
00033 gmxydf = hxydf(irf,itf,ipf)
00034 gmxzdf = hxzdf(irf,itf,ipf)
00035 gmyydf = 1.0d0 + hyydf(irf,itf,ipf)
00036 gmyzdf = hyzdf(irf,itf,ipf)
00037 gmzzdf = 1.0d0 + hzzdf(irf,itf,ipf)
00038 gmyxdf = gmxydf
00039 gmzxdf = gmxzdf
00040 gmzydf = gmyzdf
00041
00042 ut = utf(irf,itf,ipf)
00043 ux = uxf(irf,itf,ipf)
00044 uy = uyf(irf,itf,ipf)
00045 uz = uzf(irf,itf,ipf)
00046 vx = ux/ut
00047 vy = uy/ut
00048 vz = uz/ut
00049 bvdfc(1) = bvxdf(irf,itf,ipf)
00050 bvdfc(2) = bvydf(irf,itf,ipf)
00051 bvdfc(3) = bvzdf(irf,itf,ipf)
00052 ovufc(1) = bvxuf(irf,itf,ipf) + vx
00053 ovufc(2) = bvyuf(irf,itf,ipf) + vy
00054 ovufc(3) = bvzuf(irf,itf,ipf) + vz
00055 ovdfc(1) = bvxdf(irf,itf,ipf) + gmxxdf*vx + gmxydf*vy + gmxzdf*vz
00056 ovdfc(2) = bvydf(irf,itf,ipf) + gmyxdf*vx + gmyydf*vy + gmyzdf*vz
00057 ovdfc(3) = bvzdf(irf,itf,ipf) + gmzxdf*vx + gmzydf*vy + gmzzdf*vz
00058
00059 utd = ut*(-alphff**2 + psiff**4*(bvdfc(1)*ovufc(1) &
00060 & + bvdfc(2)*ovufc(2) + bvdfc(3)*ovufc(3)))
00061
00062 qq = emd(irf,itf,ipf)
00063 call peos_q2hprho(qq, hh, pre, rho, ene)
00064 hhf( irf,itf,ipf) = hh
00065 utdf(irf,itf,ipf) = utd
00066 uxdf(irf,itf,ipf) = ut*psiff**4*ovdfc(1)
00067 uydf(irf,itf,ipf) = ut*psiff**4*ovdfc(2)
00068 uzdf(irf,itf,ipf) = ut*psiff**4*ovdfc(3)
00069
00070 end do
00071 end do
00072
00073
00074
00075 do ipf = 1, npf
00076 do itf = 0, ntf
00077 do irf = 0, nrf
00078 hhf(irf,itf,ipf) = hhf(irf,itf,0)
00079 utdf(irf,itf,ipf) = utdf(irf,itf,0)
00080 uxdf(irf,itf,ipf) = cosphig(ipf)*uxdf(irf,itf,0) &
00081 & - sinphig(ipf)*uydf(irf,itf,0)
00082 uydf(irf,itf,ipf) = sinphig(ipf)*uxdf(irf,itf,0) &
00083 & + cosphig(ipf)*uydf(irf,itf,0)
00084 uzdf(irf,itf,ipf) = uzdf(irf,itf,0)
00085 end do
00086 end do
00087 end do
00088
00089 itf = ntgeq; ipf = 0
00090
00091 open(15,file='test_vec_4v',status='unknown')
00092 do irf = 0, nrf
00093 write(15,'(1p,9e20.12)') rg(irf), utdf(irf,itf,ipf) &
00094 & , uxdf(irf,itf,ipf) &
00095 & , uydf(irf,itf,ipf) &
00096 & , uzdf(irf,itf,ipf)
00097 end do
00098 close(15)
00099
00100 end subroutine calc_h_udf_axisym