00001 subroutine calc_area_AHfinder(aharea,ahmass)
00002   use phys_constant, only : long, pi
00003   use def_horizon, only : ahz
00004   use def_metric, only : psi
00005   use grid_parameter, only : npg, nrg, ntg
00006   use coordinate_grav_r, only : rg
00007   use weight_midpoint_grav, only : hwdtg, hwdpg
00008   use interface_interpo_linear_type0_2Dsurf
00009   use interface_interpo_linear_surface_type0
00010   implicit none
00011   real(long), external :: lagint_4th
00012   real(long) :: r4(4), f4(4)
00013   real(long) :: aharea, ahmass, area, detr, psiw, rgv, wds, fn_lagint
00014   integer :: ii, ipg, ir0, irg, irg0, itg
00015 
00016 
00017 write(6,*) "### Should rewrite calc_area_AHfinder.f90 "
00018 
00019   area = 0.0d0
00020   do ipg = 1, npg
00021     do itg = 1, ntg
00022       call interpo_linear_type0_2Dsurf(rgv,ahz,itg,ipg)
00023       do irg = 0, nrg-1
00024         detr = (rg(irg+1)-rgv)*(rg(irg)-rgv)
00025         if(detr <= 0.0d0) then
00026           irg0 = irg
00027           exit
00028         end if
00029       end do
00030 
00031       ir0 = min0(max0(irg0-1,0),nrg-3)
00032 
00033       do ii = 1, 4
00034         irg = ir0-1 + ii
00035         r4(ii) = rg(irg)
00036         call interpo_linear_surface_type0(psiw,psi,irg,itg,ipg)
00037         f4(ii) = psiw
00038       end do
00039 
00040       psiw = lagint_4th(r4,f4,rgv)
00041       wds = hwdtg(itg)*hwdpg(ipg)
00042       area = area + psiw**4*rgv**2*wds
00043 
00044     end do
00045   end do
00046 
00047   aharea = area*2.0d0
00048   ahmass = dsqrt(aharea/(16.0d0*pi))
00049 
00050 end subroutine calc_area_AHfinder