subroutine addsource_local(qdt, dtfactor, qtC, wCT, wCTprim, qt, wnew, x, dr, &
qsourcesplit)
use mod_usr, only: addsource_usr
use mod_usr, only: gravity_field
use mod_radiative_cooling, only: rc_fl, radiative_cooling_add_source
use mod_global_parameters, only:cmax_global
real(dp), intent(in) :: qdt, dtfactor, qtC, qt
real(dp), intent(in) :: wCT(nw_phys), wCTprim(nw_phys)
real(dp), intent(in) :: x(1:ndim), dr(ndim)
real(dp), intent(inout) :: wnew(nw_phys)
logical, intent(in) :: qsourcesplit
! .. local ..
integer :: idim
real(dp) :: field
if (.not. qsourcesplit) then
!---------------------------------
! unsplit sources
!---------------------------------
do idim = 1, ndim
field = gravity_field(wCT, x, idim)
wnew(iw_mom(idim)) = wnew(iw_mom(idim)) + qdt * field * wCT(iw_rho)
wnew(iw_e) = wnew(iw_e) + qdt * field * wCT(iw_mom(idim))
end do
call radiative_cooling_add_source(qdt,wCT,wCTprim,wnew,x)
call addsource_usr(qdt, qt, wCT, wCTprim, wnew, x, .false.)
else
!---------------------------------
! split sources
!---------------------------------
wnew(psi_)=wnew(psi_)*dexp(-qdt*cmax_global*mhd_glm_alpha/minval(dr))
end if
end subroutine addsource_local