00001 subroutine correct_matter_source_midpoint(sou)
00002 use phys_constant, only : long, pi
00003 use grid_parameter, only : nrg, ntg, npg
00004 use coordinate_grav_r, only : drg, rg
00005 use def_matter, only : rs
00006 use interface_interpo_linear_type0_2Dsurf
00007 implicit none
00008 real(long), pointer :: sou(:,:,:)
00009 real(long) :: hsurf
00010 integer :: irg, itg, ipg
00011
00012
00013 do ipg = 1, npg
00014 do itg = 1, ntg
00015 call interpo_linear_type0_2Dsurf(hsurf,rs,itg,ipg)
00016 do irg = 0, nrg
00017 if (hsurf < rg(irg)) then
00018 sou(irg,itg,ipg) = sou(irg,itg,ipg)*(hsurf-rg(irg-1))/drg(irg)
00019 exit
00020 end if
00021 end do
00022 end do
00023 end do
00024 end subroutine correct_matter_source_midpoint