00001 subroutine source_MoC_CF(souvec)
00002   use grid_parameter, only : nrg, ntg, npg
00003   use coordinate_grav_r, only : rg
00004   use trigonometry_grav_phi, only : sinphig, cosphig
00005   use trigonometry_grav_theta, only : sinthg, costhg
00006   use interface_sourceterm_MoC_CF_drot
00007   use interface_sourceterm_MoC_CF_with_divshift
00008   use make_array_3d
00009   use make_array_4d
00010   implicit none
00011   real(8), pointer :: souvec(:,:,:,:)
00012   real(8), pointer :: souvec1(:,:,:,:), souvec2(:,:,:,:)
00013   real(8) :: xxx, yyy, zzz
00014   integer :: ipg, itg, irg
00015   character(len=1) :: chgra
00016 
00017   call alloc_array4d(souvec1,0,nrg,0,ntg,0,npg,1,3)
00018   call alloc_array4d(souvec2,0,nrg,0,ntg,0,npg,1,3)
00019 
00020   call sourceterm_MoC_CF_drot(souvec1)
00021   call sourceterm_MoC_CF_with_divshift(souvec2)
00022 
00023   souvec(0:nrg,0:ntg,0:npg,1:3) = souvec1(0:nrg,0:ntg,0:npg,1:3) &
00024   &                             + souvec2(0:nrg,0:ntg,0:npg,1:3)
00025 
00026   deallocate(souvec1)
00027   deallocate(souvec2)
00028 
00029 end subroutine source_MoC_CF