00001 subroutine calc_radius_WL
00002 use phys_constant, only : long, pi
00003 use grid_parameter, only : nrf, ntf, npf, &
00004 & ntfpolp, ntfeq, ntfxy, npfxzp, npfyzp
00005 use def_metric, only : psi
00006 use def_metric_hij, only : hxxd, hyyd, hzzd
00007 use def_matter, only : rs
00008 use def_matter_parameter, only : radi
00009 use def_quantities, only : proper_radius_x,proper_radius_y,proper_radius_z, &
00010 & coord_radius_x, coord_radius_y, coord_radius_z
00011 use make_array_1d
00012 use make_array_3d
00013 use interface_interpo_gr2fl
00014 use interface_radial_int_fluid
00015 implicit none
00016 integer :: it, ip, ir
00017 real(long) :: radius
00018 real(long), pointer :: sou(:)
00019 real(long), pointer :: psif(:,:,:)
00020 real(long), pointer :: hxxdf(:,:,:), hyydf(:,:,:), hzzdf(:,:,:)
00021
00022 call alloc_array1d(sou, 0, nrf)
00023 call alloc_array3d(psif, 0, nrf, 0, ntf, 0, npf)
00024 call alloc_array3d(hxxdf, 0, nrf, 0, ntf, 0, npf)
00025 call alloc_array3d(hyydf, 0, nrf, 0, ntf, 0, npf)
00026 call alloc_array3d(hzzdf, 0, nrf, 0, ntf, 0, npf)
00027
00028 call interpo_gr2fl(psi, psif)
00029 call interpo_gr2fl(hxxd, hxxdf)
00030 call interpo_gr2fl(hyyd, hyydf)
00031 call interpo_gr2fl(hzzd, hzzdf)
00032
00033 it = ntfxy ; ip = npfxzp
00034 sou(0:nrf) = psif(0:nrf,it,ip)**2*sqrt(1.0d0 + hxxdf(0:nrf,it,ip))
00035 call radial_int_fluid(sou,radius,it,ip)
00036 proper_radius_x = radi*radius
00037 coord_radius_x = radi*rs(it,ip)
00038
00039 it = ntfxy ; ip = npfyzp
00040 sou(0:nrf) = psif(0:nrf,it,ip)**2*sqrt(1.0d0 + hyydf(0:nrf,it,ip))
00041 call radial_int_fluid(sou,radius,it,ip)
00042 proper_radius_y = radi*radius
00043 coord_radius_y = radi*rs(it,ip)
00044
00045 it = ntfpolp ; ip = npfxzp
00046 sou(0:nrf) = psif(0:nrf,it,ip)**2*sqrt(1.0d0 + hzzdf(0:nrf,it,ip))
00047 call radial_int_fluid(sou,radius,it,ip)
00048 proper_radius_z = radi*radius
00049 coord_radius_z = radi*rs(it,ip)
00050
00051 deallocate(sou)
00052 deallocate(psif)
00053 end subroutine calc_radius_WL