42 energy,qsourcesplit,active)
46 integer,
intent(in) :: ixI^L, ixO^L
47 double precision,
intent(in) :: qdt, x(ixI^S,1:ndim)
48 double precision,
intent(in) :: wCT(ixI^S,1:nw),wCTprim(ixI^S,1:nw)
49 double precision,
intent(inout) :: w(ixI^S,1:nw)
50 logical,
intent(in) :: energy,qsourcesplit
51 logical,
intent(inout) :: active
53 double precision :: gravity_field(ixI^S,ndim)
59 if(
size(iw_mom)<ndim)
then
60 {
do ix^db=ixomin^db,ixomax^db\}
61 w(ix^d,iw_mom(1)) = w(ix^d,iw_mom(1)) &
62 + qdt*wct(ix^d,iw_rho)*(^d&gravity_field({ix^d},^d)*
block%B0({ix^d},^d,0)+)
64 w(ix^d,iw_e)=w(ix^d,iw_e) &
65 +qdt*wct(ix^d,iw_mom(1))*(^d&gravity_field({ix^d},^d)*
block%B0({ix^d},^d,0)+)
69 {
do ix^db=ixomin^db,ixomax^db\}
70 ^d&w({ix^d},iw_mom(^d))=w({ix^d},iw_mom(^d))+qdt*gravity_field({ix^d},^d)*wct({ix^d},iw_rho)\
72 w(ix^d,iw_e)=w(ix^d,iw_e) &
73 +qdt*wctprim(ix^d,iw_rho)*(^d&gravity_field({ix^d},^d)*wctprim({ix^d},iw_mom(^d))+)
85 integer,
intent(in) :: ixI^L, ixO^L
86 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim), w(ixI^S,1:nw)
87 double precision,
intent(inout) :: dtnew
89 double precision :: dxinv(1:ndim), max_grav
90 double precision :: gravity_field(ixI^S,ndim)
95 ^d&dxinv(^d)=one/dx^d;
97 max_grav = maxval(abs(gravity_field(ixo^s,idim)))
98 max_grav = max(max_grav, epsilon(1.0d0))
99 dtnew = min(dtnew, 1.0d0 / sqrt(max_grav * dxinv(idim)))
103 max_grav = maxval(abs(gravity_field(ixo^s,idim))/
block%ds(ixo^s,idim))
104 max_grav = max(max_grav, epsilon(1.0d0))
105 dtnew = min(dtnew, 1.0d0 / sqrt(max_grav))
subroutine gravity_add_source(qdt, ixil, ixol, wct, wctprim, w, x, energy, qsourcesplit, active)
w[iw]=w[iw]+qdt*S[wCT,qtC,x] where S is the source based on wCT within ixO