addsource_local Subroutine

private subroutine addsource_local(qdt, dtfactor, qtC, wCT, wCTprim, qt, wnew, x, dr, qsourcesplit)

Uses

    • mod_usr
    • mod_radiative_cooling
  • proc~~addsource_local~8~~UsesGraph proc~addsource_local~8 addsource_local mod_radiative_cooling mod_radiative_cooling proc~addsource_local~8->mod_radiative_cooling mod_usr mod_usr proc~addsource_local~8->mod_usr

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: qdt
real(kind=dp), intent(in) :: dtfactor
real(kind=dp), intent(in) :: qtC
real(kind=dp), intent(in) :: wCT(nw_phys)
real(kind=dp), intent(in) :: wCTprim(nw_phys)
real(kind=dp), intent(in) :: qt
real(kind=dp), intent(inout) :: wnew(nw_phys)
real(kind=dp), intent(in) :: x(1:ndim)
real(kind=dp), intent(in) :: dr(ndim)
logical, intent(in) :: qsourcesplit

Calls

proc~~addsource_local~8~~CallsGraph proc~addsource_local~8 addsource_local addsource_usr addsource_usr proc~addsource_local~8->addsource_usr gravity_field gravity_field proc~addsource_local~8->gravity_field radiative_cooling_add_source radiative_cooling_add_source proc~addsource_local~8->radiative_cooling_add_source

Called by

proc~~addsource_local~8~~CalledByGraph proc~addsource_local~8 addsource_local proc~finite_volume_local_muscl_hllc~4 finite_volume_local_muscl_hllc proc~finite_volume_local_muscl_hllc~4->proc~addsource_local~8 proc~finite_volume_local_muscl_hll~4 finite_volume_local_muscl_hll proc~finite_volume_local_muscl_hll~4->proc~addsource_local~8 proc~finite_volume_local_muscl_llf~4 finite_volume_local_muscl_llf proc~finite_volume_local_muscl_llf~4->proc~addsource_local~8 proc~finite_volume_local~4 finite_volume_local proc~finite_volume_local~4->proc~finite_volume_local_muscl_hllc~4 proc~finite_volume_local~4->proc~finite_volume_local_muscl_hll~4 proc~finite_volume_local~4->proc~finite_volume_local_muscl_llf~4

Source Code

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: radiative_cooling_add_source
  

  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, mag, divb

  if (.not. qsourcesplit) then 
     !---------------------------------
     ! unsplit sources
     !---------------------------------
     
     do idim = 1, ndim
        field = gravity_field(wCT, x, idim)
        mag = wCTprim(iw_b1-1+idim)
        wnew(iw_mom(1)) = wnew(iw_mom(1)) + qdt * field * wCT(iw_rho) * mag
        wnew(iw_e)      = wnew(iw_e) + qdt * field * wCT(iw_mom(1)) * mag
     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     
     !---------------------------------

     ! Not yet implemented

  end if
  
end subroutine addsource_local