subroutine in1eu(qi,mxi,lbi,ubi,q,mx,lb,ub, & lbr,ubr,shaper,meqn,nc,t) ! ========================================================== ! ! # Computes conserved quantities from primitives for ! # Euler equations. The inverse to flgout2eu.f. ! ! ---- share variables USE method_parms implicit none ! integer meqn, mx, mxi double precision t, q(meqn,mx), qi(mxi) ! integer lb(1), ub(1), lbi(1), ubi(1), lbr(1), ubr(1), shaper(1), & stride, imin(1), imax(1), i, getindx, d, nc ! stride = (ub(1) - lb(1))/(mx-1) do d = 1, 1 imin(d) = max(lb(d), lbr(d)) imax(d) = min(ub(d), ubr(d)) if (mod(imin(d)-lb(d),stride) .ne. 0) then imin(d) = imin(d) + stride - mod(imin(d)-lb(d),stride) endif imin(d) = getindx(imin(d), lb(d), stride) if (mod(imax(d)-lb(d),stride) .ne. 0) then imax(d) = imax(d) - mod(imax(d)-lb(d),stride) endif imax(d) = getindx(imax(d), lb(d), stride) enddo do i = imin(1), imax(1) ! Density if (nc.eq.1) q(1,i) = qi(i) ! Velocity u if (nc.eq.2) then q(2,i) = q(1,i)*qi(i) q(3,i) = 0.0d0 q(4,i) = 0.0d0 endif ! Total energy density if (nc.eq.3) q(5,i) = qi(i) ! Temperature if (nc.eq.4) q(nvars+1,i) = qi(i) ! Scalars IF (nc.ge.(nvars-nscal+2) .and. nc.le.(nvars+1)) & q(nc-1,i) = q(1,i)*qi(i) enddo return end subroutine in1eu subroutine in2eu(qi,mxi,myi,lbi,ubi,q,mx,my,lb,ub, & lbr,ubr,shaper,meqn,nc,t) ! ========================================================== ! ! # Computes conserved quantities from primitives for ! # Euler equations. The inverse to flgout2eu.f. ! ! ---- share variables USE method_parms implicit none ! integer meqn, mx, my, mxi, myi double precision t, q(meqn,mx,my), qi(mxi,myi) ! integer lb(2), ub(2), lbi(2), ubi(2), lbr(2), ubr(2), shaper(2), & stride, imin(2), imax(2), i, j, getindx, d, nc ! stride = (ub(1) - lb(1))/(mx-1) do d = 1, 2 imin(d) = max(lb(d), lbr(d)) imax(d) = min(ub(d), ubr(d)) if (mod(imin(d)-lb(d),stride) .ne. 0) then imin(d) = imin(d) + stride - mod(imin(d)-lb(d),stride) endif imin(d) = getindx(imin(d), lb(d), stride) if (mod(imax(d)-lb(d),stride) .ne. 0) then imax(d) = imax(d) - mod(imax(d)-lb(d),stride) endif imax(d) = getindx(imax(d), lb(d), stride) enddo do i = imin(1), imax(1) do j = imin(2), imax(2) ! Density if (nc.eq.1) q(1,i,j) = qi(i,j) ! Velocity u if (nc.eq.2) q(2,i,j) = q(1,i,j)*qi(i,j) ! Velocity v if (nc.eq.3) then q(3,i,j) = q(1,i,j)*qi(i,j) q(4,i,j) = 0.0d0 endif ! Total energy density if (nc.eq.4) q(5,i,j) = qi(i,j) ! Temperature if (nc.eq.5) q(nvars+1,i,j) = qi(i,j) ! Scalars IF (nc.ge.(nvars-nscal+3) .and. nc.le.(nvars+2) ) & q(nc-2,i,j) = q(1,i,j)*qi(i,j) enddo enddo return end subroutine in2eu subroutine in3eu(qi,mxi,myi,mzi,lbi,ubi,q,mx,my,mz,lb,ub, & lbr,ubr,shaper,meqn,nc,t) ! ========================================================== ! ! # Computes conserved quantities from primitives for ! # Euler equations. The inverse to flgout2eu.f. ! ! ---- share variables USE method_parms implicit none include 'cles.i' ! integer meqn, mx, my, mz,mxi, myi,mzi double precision t, q(meqn,mx,my,mz), qi(mxi,myi,mz) ! integer lb(3), ub(3), lbi(3), ubi(3), lbr(3), ubr(3), shaper(3), & stride, imin(3), imax(3), i, j, k, getindx, d, nc ! stride = (ub(1) - lb(1))/(mx-1) do d = 1, 3 imin(d) = max(lb(d), lbr(d)) imax(d) = min(ub(d), ubr(d)) if (mod(imin(d)-lb(d),stride) .ne. 0) then imin(d) = imin(d) + stride - mod(imin(d)-lb(d),stride) endif imin(d) = getindx(imin(d), lb(d), stride) if (mod(imax(d)-lb(d),stride) .ne. 0) then imax(d) = imax(d) - mod(imax(d)-lb(d),stride) endif imax(d) = getindx(imax(d), lb(d), stride) enddo do i = imin(1), imax(1) do j = imin(2), imax(2) do k = imin(3), imax(3) ! Density if (nc.eq.1) q(1,i,j,k) = qi(i,j,k) ! Velocity u if (nc.eq.2) q(2,i,j,k) = q(1,i,j,k)*qi(i,j,k) ! Velocity v if (nc.eq.3) q(3,i,j,k) = q(1,i,j,k)*qi(i,j,k) ! Velocity w if (nc.eq.4) q(4,i,j,k) = q(1,i,j,k)*qi(i,j,k) ! Total energy density if (nc.eq.5) q(5,i,j,k) = qi(i,j,k) ! Temperature if (nc.eq.6) q(nvars+1,i,j,k) = qi(i,j,k) ! Scalars IF (nc.ge.(nvars-nscal+4) .and. nc.le.(nvars+3) ) & q(nc-3,i,j,k) = q(1,i,j,k)*qi(i,j,k) IF (nc.eq.(nvars+5) .and. useLES .eq. CLES_TRUE) & q(nvars+3,i,j,k) = q(1,i,j,k)*qi(i,j,k) enddo enddo enddo return end subroutine in3eu