! *** generated by SAPFOR with version 2415 and build date: May 4 2025 14:48:40 ! *** Enabled options ***: ! *** maximum shadow width is 50 percent ! *** generated by SAPFOR !--------------------------------------------------------------------- !--------------------------------------------------------------------- subroutine x_solve_sp () include 'header_sp.h' integer :: i,j,k,i1,i2,m,m1 double precision :: ru1,fac1,fac2,rhs__(5,0:2),t1,t2 double precision :: lhs__(5,0:2),lhsm__(5,0:2),lhsp__(5,0:2) !--------------------------------------------------------------------- !--------------------------------------------------------------------- !$SPF PARALLEL_REG r0 !$SPF ANALYSIS(PRIVATE(LHS__,LHSP__,LHSM__,RHS__)) ! DVM$ PARALLEL (K,J) ON U(*,*,J,K), CUDA_BLOCK (32,4),PRIVATE (M,I,RU1,I ! DVM$&1,I2,FAC1,FAC2,LHS__,LHSP__,LHSM__,RHS__,T1,T2) ! DVM$ REGION LOCAL (LHS) do k = 1,nz2 do j = 1,ny2 do i = 0,problem_size - 1 if (i .eq. 0) then lhs__(1,0) = 0.0d0 lhsp__(1,0) = 0.0d0 lhsm__(1,0) = 0.0d0 lhs__(2,0) = 0.0d0 lhsp__(2,0) = 0.0d0 lhsm__(2,0) = 0.0d0 lhs__(3,0) = 1.0d0 lhsp__(3,0) = 1.0d0 lhsm__(3,0) = 1.0d0 lhs__(4,0) = 0.0d0 lhsp__(4,0) = 0.0d0 lhsm__(4,0) = 0.0d0 lhs__(5,0) = 0.0d0 lhsp__(5,0) = 0.0d0 lhsm__(5,0) = 0.0d0 lhs__(1,1) = 0.0d0 ru1 = c3c4 * 1.0d0 / u(1,1 - 1,j,k) ru1 = dmax1 (dx2 + con43 * ru1,dx5 + c1c5 * ru1,dxmax &+ ru1,dx1) lhs__(2,1) = (-(dttx2)) * us(1 - 1,j,k) - dttx1 * ru1 ru1 = c3c4 * 1.0d0 / u(1,1,j,k) ru1 = dmax1 (dx2 + con43 * ru1,dx5 + c1c5 * ru1,dxmax &+ ru1,dx1) lhs__(3,1) = 1.0d0 + c2dttx1 * ru1 ru1 = c3c4 * 1.0d0 / u(1,1 + 1,j,k) ru1 = dmax1 (dx2 + con43 * ru1,dx5 + c1c5 * ru1,dxmax &+ ru1,dx1) lhs__(4,1) = dttx2 * us(1 + 1,j,k) - dttx1 * ru1 lhs__(5,1) = 0.0d0 lhs__(3,1) = lhs__(3,1) + comz5 lhs__(4,1) = lhs__(4,1) - comz4 lhs__(5,1) = lhs__(5,1) + comz1 lhsp__(1,1) = lhs__(1,1) lhsp__(2,1) = lhs__(2,1) - dttx2 * speed(1 - 1,j,k) lhsp__(3,1) = lhs__(3,1) lhsp__(4,1) = lhs__(4,1) + dttx2 * speed(1 + 1,j,k) lhsp__(5,1) = lhs__(5,1) lhsm__(1,1) = lhs__(1,1) lhsm__(2,1) = lhs__(2,1) + dttx2 * speed(1 - 1,j,k) lhsm__(3,1) = lhs__(3,1) lhsm__(4,1) = lhs__(4,1) - dttx2 * speed(1 + 1,j,k) lhsm__(5,1) = lhs__(5,1) endif if (i + 2 .lt. problem_size - 1) then m = i + 2 lhs__(1,2) = 0.0d0 ru1 = c3c4 * 1.0d0 / u(1,m - 1,j,k) ru1 = dmax1 (dx2 + con43 * ru1,dx5 + c1c5 * ru1,dxmax &+ ru1,dx1) lhs__(2,2) = (-(dttx2)) * us(m - 1,j,k) - dttx1 * ru1 ru1 = c3c4 * 1.0d0 / u(1,m,j,k) ru1 = dmax1 (dx2 + con43 * ru1,dx5 + c1c5 * ru1,dxmax &+ ru1,dx1) lhs__(3,2) = 1.0d0 + c2dttx1 * ru1 ru1 = c3c4 * 1.0d0 / u(1,m + 1,j,k) ru1 = dmax1 (dx2 + con43 * ru1,dx5 + c1c5 * ru1,dxmax &+ ru1,dx1) lhs__(4,2) = dttx2 * us(m + 1,j,k) - dttx1 * ru1 lhs__(5,2) = 0.0d0 if (m .eq. 1) then lhs__(3,2) = lhs__(3,2) + comz5 lhs__(4,2) = lhs__(4,2) - comz4 lhs__(5,2) = lhs__(5,2) + comz1 else if (m .eq. 2) then lhs__(2,2) = lhs__(2,2) - comz4 lhs__(3,2) = lhs__(3,2) + comz6 lhs__(4,2) = lhs__(4,2) - comz4 lhs__(5,2) = lhs__(5,2) + comz1 else if (m .ge. 3 .and. m .le. nx2 - 2) then lhs__(1,2) = lhs__(1,2) + comz1 lhs__(2,2) = lhs__(2,2) - comz4 lhs__(3,2) = lhs__(3,2) + comz6 lhs__(4,2) = lhs__(4,2) - comz4 lhs__(5,2) = lhs__(5,2) + comz1 else if (m .eq. nx2 - 1) then lhs__(1,2) = lhs__(1,2) + comz1 lhs__(2,2) = lhs__(2,2) - comz4 lhs__(3,2) = lhs__(3,2) + comz6 lhs__(4,2) = lhs__(4,2) - comz4 else if (m .eq. nx2) then lhs__(1,2) = lhs__(1,2) + comz1 lhs__(2,2) = lhs__(2,2) - comz4 lhs__(3,2) = lhs__(3,2) + comz5 endif lhsp__(1,2) = lhs__(1,2) lhsp__(2,2) = lhs__(2,2) - dttx2 * speed(m - 1,j,k) lhsp__(3,2) = lhs__(3,2) lhsp__(4,2) = lhs__(4,2) + dttx2 * speed(m + 1,j,k) lhsp__(5,2) = lhs__(5,2) lhsm__(1,2) = lhs__(1,2) lhsm__(2,2) = lhs__(2,2) + dttx2 * speed(m - 1,j,k) lhsm__(3,2) = lhs__(3,2) lhsm__(4,2) = lhs__(4,2) - dttx2 * speed(m + 1,j,k) lhsm__(5,2) = lhs__(5,2) else if (i + 2 .eq. nx2 + 1) then lhs__(1,2) = 0.0d0 lhsp__(1,2) = 0.0d0 lhsm__(1,2) = 0.0d0 lhs__(2,2) = 0.0d0 lhsp__(2,2) = 0.0d0 lhsm__(2,2) = 0.0d0 lhs__(3,2) = 1.0d0 lhsp__(3,2) = 1.0d0 lhsm__(3,2) = 1.0d0 lhs__(4,2) = 0.0d0 lhsp__(4,2) = 0.0d0 lhsm__(4,2) = 0.0d0 lhs__(5,2) = 0.0d0 lhsp__(5,2) = 0.0d0 lhsm__(5,2) = 0.0d0 endif !********************************** end of init i1 = i + 1 i2 = i + 2 fac1 = 1.d0 / lhs__(3,0) lhs__(4,0) = fac1 * lhs__(4,0) lhs__(5,0) = fac1 * lhs__(5,0) do m = 1,3 rhs(m,i,j,k) = fac1 * rhs(m,i,j,k) enddo if (i .le. nx2 - 1) then lhs__(3,1) = lhs__(3,1) - lhs__(2,1) * lhs__(4,0) lhs__(4,1) = lhs__(4,1) - lhs__(2,1) * lhs__(5,0) lhs__(2,2) = lhs__(2,2) - lhs__(1,2) * lhs__(4,0) lhs__(3,2) = lhs__(3,2) - lhs__(1,2) * lhs__(5,0) do m = 1,3 rhs(m,i1,j,k) = rhs(m,i1,j,k) - lhs__(2,1) * rhs(m, &i,j,k) rhs(m,i2,j,k) = rhs(m,i2,j,k) - lhs__(1,2) * rhs(m, &i,j,k) enddo else lhs__(3,1) = lhs__(3,1) - lhs__(2,1) * lhs__(4,0) lhs__(4,1) = lhs__(4,1) - lhs__(2,1) * lhs__(5,0) fac2 = 1.d0 / lhs__(3,1) do m = 1,3 rhs(m,i1,j,k) = rhs(m,i1,j,k) - lhs__(2,1) * rhs(m, &i,j,k) rhs(m,i1,j,k) = fac2 * rhs(m,i1,j,k) enddo endif m = 4 fac1 = 1.d0 / lhsp__(3,0) lhsp__(4,0) = fac1 * lhsp__(4,0) lhsp__(5,0) = fac1 * lhsp__(5,0) rhs(m,i,j,k) = fac1 * rhs(m,i,j,k) lhsp__(3,1) = lhsp__(3,1) - lhsp__(2,1) * lhsp__(4,0) lhsp__(4,1) = lhsp__(4,1) - lhsp__(2,1) * lhsp__(5,0) rhs(m,i1,j,k) = rhs(m,i1,j,k) - lhsp__(2,1) * rhs(m,i,j,k &) if (i .lt. nx2) then lhsp__(2,2) = lhsp__(2,2) - lhsp__(1,2) * lhsp__(4,0) lhsp__(3,2) = lhsp__(3,2) - lhsp__(1,2) * lhsp__(5,0) rhs(m,i2,j,k) = rhs(m,i2,j,k) - lhsp__(1,2) * rhs(m,i, &j,k) endif m = 5 fac1 = 1.d0 / lhsm__(3,0) lhsm__(4,0) = fac1 * lhsm__(4,0) lhsm__(5,0) = fac1 * lhsm__(5,0) rhs(m,i,j,k) = fac1 * rhs(m,i,j,k) lhsm__(3,1) = lhsm__(3,1) - lhsm__(2,1) * lhsm__(4,0) lhsm__(4,1) = lhsm__(4,1) - lhsm__(2,1) * lhsm__(5,0) rhs(m,i1,j,k) = rhs(m,i1,j,k) - lhsm__(2,1) * rhs(m,i,j,k &) if (i .lt. nx2) then lhsm__(2,2) = lhsm__(2,2) - lhsm__(1,2) * lhsm__(4,0) lhsm__(3,2) = lhsm__(3,2) - lhsm__(1,2) * lhsm__(5,0) rhs(m,i2,j,k) = rhs(m,i2,j,k) - lhsm__(1,2) * rhs(m,i, &j,k) endif if (i .eq. nx2) then rhs(4,i1,j,k) = rhs(4,i1,j,k) / lhsp__(3,1) rhs(5,i1,j,k) = rhs(5,i1,j,k) / lhsm__(3,1) do m = 1,3 rhs(m,i,j,k) = rhs(m,i,j,k) - lhs__(4,0) * rhs(m,i1 &,j,k) enddo rhs(4,i,j,k) = rhs(4,i,j,k) - lhsp__(4,0) * rhs(4,i1,j &,k) rhs(5,i,j,k) = rhs(5,i,j,k) - lhsm__(4,0) * rhs(5,i1,j &,k) endif lhs(0,4,i,j,k) = lhs__(4,0) lhs(1,4,i,j,k) = lhsp__(4,0) lhs(2,4,i,j,k) = lhsm__(4,0) lhs(0,5,i,j,k) = lhs__(5,0) lhs(1,5,i,j,k) = lhsp__(5,0) lhs(2,5,i,j,k) = lhsm__(5,0) lhs__(1,0) = lhs__(1,1) lhsp__(1,0) = lhsp__(1,1) lhsm__(1,0) = lhsm__(1,1) lhs__(1,1) = lhs__(1,2) lhsp__(1,1) = lhsp__(1,2) lhsm__(1,1) = lhsm__(1,2) lhs__(2,0) = lhs__(2,1) lhsp__(2,0) = lhsp__(2,1) lhsm__(2,0) = lhsm__(2,1) lhs__(2,1) = lhs__(2,2) lhsp__(2,1) = lhsp__(2,2) lhsm__(2,1) = lhsm__(2,2) lhs__(3,0) = lhs__(3,1) lhsp__(3,0) = lhsp__(3,1) lhsm__(3,0) = lhsm__(3,1) lhs__(3,1) = lhs__(3,2) lhsp__(3,1) = lhsp__(3,2) lhsm__(3,1) = lhsm__(3,2) lhs__(4,0) = lhs__(4,1) lhsp__(4,0) = lhsp__(4,1) lhsm__(4,0) = lhsm__(4,1) lhs__(4,1) = lhs__(4,2) lhsp__(4,1) = lhsp__(4,2) lhsm__(4,1) = lhsm__(4,2) lhs__(5,0) = lhs__(5,1) lhsp__(5,0) = lhsp__(5,1) lhsm__(5,0) = lhsm__(5,1) lhs__(5,1) = lhs__(5,2) lhsp__(5,1) = lhsp__(5,2) lhsm__(5,1) = lhsm__(5,2) enddo i = problem_size - 3 rhs__(1,2) = rhs(1,i + 2,j,k) rhs__(2,2) = rhs(2,i + 2,j,k) rhs__(3,2) = rhs(3,i + 2,j,k) rhs__(4,2) = rhs(4,i + 2,j,k) rhs__(5,2) = rhs(5,i + 2,j,k) rhs__(1,1) = rhs(1,i + 1,j,k) rhs__(2,1) = rhs(2,i + 1,j,k) rhs__(3,1) = rhs(3,i + 1,j,k) rhs__(4,1) = rhs(4,i + 1,j,k) rhs__(5,1) = rhs(5,i + 1,j,k) rhs__(1,0) = rhs(1,i,j,k) rhs__(2,0) = rhs(2,i,j,k) rhs__(3,0) = rhs(3,i,j,k) rhs__(4,0) = rhs(4,i,j,k) rhs__(5,0) = rhs(5,i,j,k) rhs__(1,0) = rhs__(1,0) - lhs(0,4,i,j,k) * rhs__(1,1) - lhs( &0,5,i,j,k) * rhs__(1,2) rhs__(2,0) = rhs__(2,0) - lhs(0,4,i,j,k) * rhs__(2,1) - lhs( &0,5,i,j,k) * rhs__(2,2) rhs__(3,0) = rhs__(3,0) - lhs(0,4,i,j,k) * rhs__(3,1) - lhs( &0,5,i,j,k) * rhs__(3,2) rhs__(4,0) = rhs__(4,0) - lhs(1,4,i,j,k) * rhs__(4,1) - lhs( &1,5,i,j,k) * rhs__(4,2) rhs__(5,0) = rhs__(5,0) - lhs(2,4,i,j,k) * rhs__(5,1) - lhs( &2,5,i,j,k) * rhs__(5,2) rhs__(1,2) = rhs__(1,1) rhs__(2,2) = rhs__(2,1) rhs__(3,2) = rhs__(3,1) rhs__(4,2) = rhs__(4,1) rhs__(5,2) = rhs__(5,1) rhs__(1,1) = rhs__(1,0) rhs__(2,1) = rhs__(2,0) rhs__(3,1) = rhs__(3,0) rhs__(4,1) = rhs__(4,0) rhs__(5,1) = rhs__(5,0) do i = problem_size - 4,0,(-(1)) rhs__(1,0) = rhs(1,i,j,k) rhs__(2,0) = rhs(2,i,j,k) rhs__(3,0) = rhs(3,i,j,k) rhs__(4,0) = rhs(4,i,j,k) rhs__(5,0) = rhs(5,i,j,k) rhs__(1,0) = rhs__(1,0) - lhs(0,4,i,j,k) * rhs__(1,1) - l &hs(0,5,i,j,k) * rhs__(1,2) rhs__(2,0) = rhs__(2,0) - lhs(0,4,i,j,k) * rhs__(2,1) - l &hs(0,5,i,j,k) * rhs__(2,2) rhs__(3,0) = rhs__(3,0) - lhs(0,4,i,j,k) * rhs__(3,1) - l &hs(0,5,i,j,k) * rhs__(3,2) rhs__(4,0) = rhs__(4,0) - lhs(1,4,i,j,k) * rhs__(4,1) - l &hs(1,5,i,j,k) * rhs__(4,2) rhs__(5,0) = rhs__(5,0) - lhs(2,4,i,j,k) * rhs__(5,1) - l &hs(2,5,i,j,k) * rhs__(5,2) t1 = bt * rhs__(3,2) t2 = 0.5d0 * (rhs__(4,2) + rhs__(5,2)) rhs(1,i + 2,j,k) = (-(rhs__(2,2))) rhs(2,i + 2,j,k) = rhs__(1,2) rhs(3,i + 2,j,k) = bt * (rhs__(4,2) - rhs__(5,2)) rhs(4,i + 2,j,k) = (-(t1)) + t2 rhs(5,i + 2,j,k) = t1 + t2 rhs__(1,2) = rhs__(1,1) rhs__(2,2) = rhs__(2,1) rhs__(3,2) = rhs__(3,1) rhs__(4,2) = rhs__(4,1) rhs__(5,2) = rhs__(5,1) rhs__(1,1) = rhs__(1,0) rhs__(2,1) = rhs__(2,0) rhs__(3,1) = rhs__(3,0) rhs__(4,1) = rhs__(4,0) rhs__(5,1) = rhs__(5,0) enddo t1 = bt * rhs__(3,2) t2 = 0.5d0 * (rhs__(4,2) + rhs__(5,2)) rhs(1,1,j,k) = (-(rhs__(2,2))) rhs(2,1,j,k) = rhs__(1,2) rhs(3,1,j,k) = bt * (rhs__(4,2) - rhs__(5,2)) rhs(4,1,j,k) = (-(t1)) + t2 rhs(5,1,j,k) = t1 + t2 enddo enddo !$SPF END PARALLEL_REG ! DVM$ END REGION return end