42 energy,rhov,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,rhov,qsourcesplit
51 logical,
intent(inout) :: active
53 double precision :: gravity_field(ixI^S,ndim)
60 if(
size(iw_mom)<ndim)
then
61 w(ixo^s,iw_mom(1)) = w(ixo^s,iw_mom(1)) &
62 + qdt*gravity_field(ixo^s,idim)*wct(ixo^s,iw_rho)*
block%B0(ixo^s,idim,0)
64 w(ixo^s,iw_mom(idim)) = w(ixo^s,iw_mom(idim)) &
65 + qdt*gravity_field(ixo^s,idim)*wct(ixo^s,iw_rho)
69 if(
size(iw_mom)<ndim)
call mpistop(
"rhov is not supported for ffHD")
70 w(ixo^s,iw_e)=w(ixo^s,iw_e) &
71 +qdt*gravity_field(ixo^s,idim)*wctprim(ixo^s,iw_mom(idim))*wctprim(ixo^s,iw_rho)
73 if(
size(iw_mom)<ndim)
then
74 w(ixo^s,iw_e)=w(ixo^s,iw_e) &
75 + qdt*gravity_field(ixo^s,idim)*wct(ixo^s,iw_mom(1))*
block%B0(ixo^s,idim,0)
77 w(ixo^s,iw_e)=w(ixo^s,iw_e) &
78 + qdt*gravity_field(ixo^s,idim)*wct(ixo^s,iw_mom(idim))
90 integer,
intent(in) :: ixI^L, ixO^L
91 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim), w(ixI^S,1:nw)
92 double precision,
intent(inout) :: dtnew
94 double precision :: dxinv(1:ndim), max_grav
95 double precision :: gravity_field(ixI^S,ndim)
98 ^d&dxinv(^d)=one/dx^d;
101 max_grav = maxval(abs(gravity_field(ixo^s,idim)))
102 max_grav = max(max_grav, epsilon(1.0d0))
103 dtnew = min(dtnew, 1.0d0 / sqrt(max_grav * dxinv(idim)))
subroutine gravity_add_source(qdt, ixil, ixol, wct, wctprim, w, x, energy, rhov, qsourcesplit, active)
w[iw]=w[iw]+qdt*S[wCT,qtC,x] where S is the source based on wCT within ixO