00001 subroutine source_MoC_WL(souvec,sou)
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_corot
00007   use interface_sourceterm_MoC_CF
00008   use interface_sourceterm_MoC_WL_corot
00009   use interface_sourceterm_MoC_WL
00010   use def_vector_x, only : hvec_xg
00011   use make_array_3d
00012   use make_array_4d
00013   implicit none
00014   real(8), pointer :: sou(:,:,:), souvec(:,:,:,:)
00015   real(8), pointer :: souvec1(:,:,:,:), souvec2(:,:,:,:), 
00016                      souvec3(:,:,:,:), souvec4(:,:,:,:)
00017   real(8) :: xxx, yyy, zzz
00018   integer :: ipg, itg, irg
00019   character(len=1) :: chgra
00020 
00021   call alloc_array4d(souvec1,0,nrg,0,ntg,0,npg,1,3)
00022   call alloc_array4d(souvec2,0,nrg,0,ntg,0,npg,1,3)
00023   call alloc_array4d(souvec3,0,nrg,0,ntg,0,npg,1,3)
00024   call alloc_array4d(souvec4,0,nrg,0,ntg,0,npg,1,3)
00025 
00026   call sourceterm_MoC_CF_corot(souvec1)
00027   call sourceterm_MoC_CF(souvec2)
00028   call sourceterm_MoC_WL_corot(souvec3)
00029   call sourceterm_MoC_WL(souvec4)
00030   souvec(0:nrg,0:ntg,0:npg,1:3) = souvec1(0:nrg,0:ntg,0:npg,1:3) &
00031   &                             + souvec2(0:nrg,0:ntg,0:npg,1:3) &
00032   &                             + souvec3(0:nrg,0:ntg,0:npg,1:3) &
00033   &                             + souvec4(0:nrg,0:ntg,0:npg,1:3)
00034 
00035   do ipg = 1, npg
00036     do itg = 1, ntg
00037       do irg = 1, nrg
00038         xxx = hvec_xg(irg,itg,ipg,1)
00039         yyy = hvec_xg(irg,itg,ipg,2)
00040         zzz = hvec_xg(irg,itg,ipg,3)
00041         sou(irg,itg,ipg) = xxx*souvec(irg,itg,ipg,1) &
00042         &                + yyy*souvec(irg,itg,ipg,2) &
00043         &                + zzz*souvec(irg,itg,ipg,3)
00044       end do
00045     end do
00046   end do
00047 
00048   deallocate(souvec1)
00049   deallocate(souvec2)
00050   deallocate(souvec3)
00051   deallocate(souvec4)
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 end subroutine source_MoC_WL