00001 subroutine sourceterm_outsurf_interpo_from_asympto_parity_mpt &
00002 & (impt_bin,impt_apt,fnc,sou_out,dsou_out,parchar)
00003 use phys_constant, only : long, nnrg
00004 use grid_parameter, only : nrg, ntg, npg, npgxzm
00005 use coordinate_grav_extended
00006 use grid_points_binary_in_asympto, only : rb_a, thb_a, phib_a
00007 use trigonometry_grav_theta, only : hsinthg
00008 use trigonometry_grav_phi, only : hcosmpg
00009 use make_array_2d
00010 use interface_interpo_patch_to_active_patch_mpt
00011 use interface_interpo_linear_type0_2Dsurf
00012
00013 implicit none
00014 real(long), pointer :: fnc(:,:,:), sou_out(:,:), dsou_out(:,:)
00015 real(long), pointer :: fnc_outsurf(:,:), dfnc_outsurf(:,:)
00016 integer, intent(in) :: impt_bin, impt_apt
00017 real(long) :: deriv, val, r5(5), fr5(5), rv, rc, thc, phic
00018 real(long) :: pari
00019 integer :: irg, itg, ipg, ir0, irg0, ii
00020 real(long), external :: dfdx_4th
00021 character(len=2) :: parchar
00022
00023 if (parchar.eq.'ev') pari = + 1.0d0
00024 if (parchar.eq.'od') pari = - 1.0d0
00025 call alloc_array2d(fnc_outsurf, 0, ntg, 0, npg)
00026 call alloc_array2d(dfnc_outsurf, 0, ntg, 0, npg)
00027
00028 do ipg = 0, npg
00029 do itg = 0, ntg
00030 irg = nrg
00031 ir0 = irg - 2
00032 do ii = 1, 5
00033 irg0 = ir0 + ii - 1
00034 rc = rb_a(irg0,itg,ipg)
00035 thc = thb_a(irg0,itg,ipg)
00036 phic = phib_a(irg0,itg,ipg)
00037 call interpo_patch_to_active_patch_mpt(fnc,val,rc,thc,phic)
00038 r5(ii) = rgex(irg0)
00039 fr5(ii) = val
00040 end do
00041 rv = rgex(irg)
00042 deriv = dfdx_4th(r5,fr5,rv)
00043 fnc_outsurf(itg,ipg) = fr5(3)
00044 dfnc_outsurf(itg,ipg) = deriv
00045 end do
00046 end do
00047
00048
00049 do ipg = 1, npg
00050 do itg = 1, ntg
00051 call interpo_linear_type0_2Dsurf(val,fnc_outsurf,itg,ipg)
00052 sou_out(itg,ipg) = pari*val
00053
00054 call interpo_linear_type0_2Dsurf(val,dfnc_outsurf,itg,ipg)
00055 dsou_out(itg,ipg) = pari*val
00056 end do
00057 end do
00058
00059 deallocate(fnc_outsurf)
00060 deallocate(dfnc_outsurf)
00061 end subroutine sourceterm_outsurf_interpo_from_asympto_parity_mpt