00001 subroutine source_MoC_WL_EMF(souvec)
00002 use grid_parameter, only : nrg, ntg, npg, nrf, ntf, npf, ntgeq
00003 use coordinate_grav_r, only : hrg
00004 use interface_sourceterm_MoC_CF_with_divshift
00005 use interface_sourceterm_MoC_WL
00006 use interface_sourceterm_MoC_WL_EMF
00007 use interface_sourceterm_MoC_WL_SEM
00008 use interface_interpo_fl2gr_midpoint
00009 use interface_correct_matter_source_midpoint
00010 use make_array_3d
00011 use make_array_4d
00012 implicit none
00013 real(8), pointer :: souvec(:,:,:,:)
00014 real(8), pointer :: sou(:,:,:), souf(:,:,:), souvecf(:,:,:,:)
00015 real(8), pointer :: souvec1(:,:,:,:), souvec2(:,:,:,:)
00016 real(8), pointer :: souvec3(:,:,:,:), souvec4(:,:,:,:)
00017 integer :: ia, irg
00018
00019 call alloc_array4d(souvec1,0,nrg,0,ntg,0,npg,1,3)
00020 call alloc_array4d(souvec2,0,nrg,0,ntg,0,npg,1,3)
00021 call alloc_array4d(souvec3,0,nrg,0,ntg,0,npg,1,3)
00022 call alloc_array4d(souvec4,0,nrg,0,ntg,0,npg,1,3)
00023 call alloc_array4d(souvecf,0,nrf,0,ntf,0,npf,1,3)
00024 call alloc_array3d(sou ,0,nrg,0,ntg,0,npg)
00025 call alloc_array3d(souf,0,nrf,0,ntf,0,npf)
00026
00027 call sourceterm_MoC_CF_with_divshift(souvec1)
00028 call sourceterm_MoC_WL(souvec2)
00029 call sourceterm_MoC_WL_EMF(souvec3)
00030 call sourceterm_MoC_WL_SEM(souvecf)
00031 do ia = 1, 3
00032 souf(0:nrf,0:ntf,0:npf) = souvecf(0:nrf,0:ntf,0:npf,ia)
00033 call interpo_fl2gr_midpoint(souf,sou)
00034 call correct_matter_source_midpoint(sou)
00035 souvec4(0:nrg,0:ntg,0:npg,ia) = sou(0:nrg,0:ntg,0:npg)
00036 end do
00037 souvec(0:nrg,0:ntg,0:npg,1:3) = souvec1(0:nrg,0:ntg,0:npg,1:3) &
00038 & + souvec2(0:nrg,0:ntg,0:npg,1:3) &
00039 & + souvec3(0:nrg,0:ntg,0:npg,1:3) &
00040 & + souvec4(0:nrg,0:ntg,0:npg,1:3)
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 deallocate(souvec1)
00060 deallocate(souvec2)
00061 deallocate(souvec3)
00062 deallocate(souvec4)
00063 deallocate(souvecf)
00064 deallocate(sou)
00065 deallocate(souf)
00066
00067 end subroutine source_MoC_WL_EMF