00001 subroutine calc_radius
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_matter, only : rs
00007 use def_matter_parameter, only : radi
00008 use def_quantities, only : proper_radius_x,proper_radius_y,proper_radius_z, &
00009 & coord_radius_x, coord_radius_y, coord_radius_z
00010 use make_array_1d
00011 use make_array_3d
00012 use interface_interpo_gr2fl
00013 use interface_radial_int_fluid
00014 implicit none
00015 integer :: it, ip, ir
00016 real(long) :: radius
00017 real(long), pointer :: sou(:)
00018 real(long), pointer :: psif(:,:,:)
00019
00020 call alloc_array1d(sou, 0, nrf)
00021 call alloc_array3d(psif, 0, nrf, 0, ntf, 0, npf)
00022
00023 call interpo_gr2fl(psi, psif)
00024
00025 it = ntfxy ; ip = npfxzp
00026 sou(0:nrf) = psif(0:nrf,it,ip)**2
00027 call radial_int_fluid(sou,radius,it,ip)
00028 proper_radius_x = radi*radius
00029 coord_radius_x = radi*rs(it,ip)
00030
00031 it = ntfxy ; ip = npfyzp
00032 sou(0:nrf) = psif(0:nrf,it,ip)**2
00033 call radial_int_fluid(sou,radius,it,ip)
00034 proper_radius_y = radi*radius
00035 coord_radius_y = radi*rs(it,ip)
00036
00037 it = ntfpolp ; ip = npfxzp
00038 sou(0:nrf) = psif(0:nrf,it,ip)**2
00039 call radial_int_fluid(sou,radius,it,ip)
00040 proper_radius_z = radi*radius
00041 coord_radius_z = radi*rs(it,ip)
00042
00043 deallocate(sou)
00044 deallocate(psif)
00045 end subroutine calc_radius