vtf-logo

src/generic/Input.f90

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), &
       mresult, 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), &
       mresult, 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), &
       mresult, 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

<