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