48 integer,
intent(in) :: ixI^L, ixO^L
49 double precision,
intent(in) :: qdt, dtfactor,x(ixI^S,1:ndim)
50 double precision,
intent(in) :: wCT(ixI^S,1:nw)
51 double precision,
intent(inout) :: w(ixI^S,1:nw)
54 double precision :: rotating_terms(ixI^S), frame_omega(ixI^S)
55 double precision :: work(ixI^S)
62 rotating_terms(ixo^s) =
omega_frame**2 * x(ixo^s,
r_) * wct(ixo^s,iw_rho)
65 rotating_terms(ixo^s) = rotating_terms(ixo^s) + 2.d0 *
omega_frame *wct(ixo^s,iw_mom(
phi_))*wct(ixo^s,iw_rho)
69 w(ixo^s, iw_mom(
r_)) = w(ixo^s, iw_mom(
r_)) +
block%dt(ixo^s)*dtfactor * rotating_terms(ixo^s)
71 w(ixo^s, iw_mom(
r_)) = w(ixo^s, iw_mom(
r_)) + qdt * rotating_terms(ixo^s)
75 rotating_terms(ixo^s) = - 2.0d0*
omega_frame * wct(ixo^s,iw_mom(
r_))*wct(ixo^s,iw_rho)
77 w(ixo^s, iw_mom(
phi_)) = w(ixo^s, iw_mom(
phi_)) +
block%dt(ixo^s)*dtfactor * rotating_terms(ixo^s)
79 w(ixo^s, iw_mom(
phi_)) = w(ixo^s, iw_mom(
phi_)) + qdt * rotating_terms(ixo^s)
86 w(ixo^s, iw_e) = w(ixo^s, iw_e) +
block%dt(ixo^s) *dtfactor *
omega_frame**2 * x(ixo^s,
r_) * wct(ixo^s,iw_mom(
r_))*wct(ixo^s,iw_rho)
88 w(ixo^s, iw_e) = w(ixo^s, iw_e) + qdt *
omega_frame**2 * x(ixo^s,
r_) * wct(ixo^s,iw_mom(
r_))*wct(ixo^s,iw_rho)
93 frame_omega(ixo^s) =
omega_frame{^nooned * dsin(x(ixo^s,2))}
96 rotating_terms(ixo^s) = frame_omega(ixo^s)**2 * x(ixo^s,
r_) * wct(ixo^s,iw_rho)
99 rotating_terms(ixo^s) = rotating_terms(ixo^s) + &
100 2.d0 * frame_omega(ixo^s) * wct(ixo^s,iw_mom(
phi_))*wct(ixo^s,iw_rho)
103 w(ixo^s, iw_mom(
r_)) = w(ixo^s, iw_mom(
r_)) +
block%dt(ixo^s)*dtfactor * rotating_terms(ixo^s)
105 w(ixo^s, iw_mom(
r_)) = w(ixo^s, iw_mom(
r_)) + qdt * rotating_terms(ixo^s)
110 w(ixo^s, iw_mom(2)) = w(ixo^s, iw_mom(2)) +
block%dt(ixo^s)*dtfactor * rotating_terms(ixo^s)/ tan(x(ixo^s, 2))
112 w(ixo^s, iw_mom(2)) = w(ixo^s, iw_mom(2)) + qdt * rotating_terms(ixo^s)/ tan(x(ixo^s, 2))
116 rotating_terms(ixo^s) = -2.d0*frame_omega(ixo^s)* wct(ixo^s, iw_mom(
r_))*wct(ixo^s,iw_rho)&
117 - 2.d0*wct(ixo^s, iw_mom(2))*wct(ixo^s,iw_rho) * frame_omega(ixo^s)/ tan(x(ixo^s, 2))
119 w(ixo^s, iw_mom(3)) = w(ixo^s, iw_mom(3)) +
block%dt(ixo^s)*dtfactor * rotating_terms(ixo^s)
121 w(ixo^s, iw_mom(3)) = w(ixo^s, iw_mom(3)) + qdt * rotating_terms(ixo^s)
128 work(ixo^s) = frame_omega(ixo^s)**2 * x(ixo^s,
r_) * wct(ixo^s,iw_mom(
r_))*wct(ixo^s,iw_rho)
130 work(ixo^s) = work(ixo^s) + frame_omega(ixo^s)**2 * x(ixo^s,
r_) * wct(ixo^s, iw_mom(2))*wct(ixo^s,iw_rho)/ tan(x(ixo^s, 2))
133 w(ixo^s, iw_e) = w(ixo^s, iw_e) +
block%dt(ixo^s)*dtfactor* work(ixo^s)
135 w(ixo^s, iw_e) = w(ixo^s, iw_e) + qdt * work(ixo^s)
140 call mpistop(
"Rotating frame not implemented in this geometry")
subroutine rotating_frame_add_source(qdt, dtfactor, ixil, ixol, wct, w, x)
w[iw]=w[iw]+qdt*S[wCT,qtC,x] where S is the source based on wCT within ixO