calc_ni4_xy_derivatives Subroutine

public subroutine calc_ni4_xy_derivatives(ni4x, ni4y, ksi, eta, x, y, dj)


Arguments

Type IntentOptional AttributesName
real(kind=R8), intent(out), dimension(4):: ni4x
real(kind=R8), intent(out), dimension(4):: ni4y
real(kind=R8), intent(in) :: ksi
real(kind=R8), intent(in) :: eta
real(kind=R8), intent(in), dimension(4):: x
real(kind=R8), intent(in), dimension(4):: y
real(kind=R8), intent(in) :: dj

Contents


Source Code

   subroutine calc_ni4_xy_derivatives(ni4x, ni4y, ksi, eta, x, y, dj)
   implicit none
   real(kind=R8),    intent(out), dimension(4) :: ni4x
   real(kind=R8),    intent(out), dimension(4) :: ni4y
   real(kind=R8),    intent(in )               :: ksi
   real(kind=R8),    intent(in )               :: eta
   real(kind=R8),    intent(in ), dimension(4) :: x
   real(kind=R8),    intent(in ), dimension(4) :: y
   real(kind=R8),    intent(in )               :: dj

   !~       standard calculation
   !~       ni4x = ( j4(4, ksi, eta, x, y)*ni4ksi(numn, eta) -&
   !~                j4(3, ksi, eta, x, y)*ni4eta(numn, ksi) )/dj4(ksi, eta, x, y)
   !~       ni4y = ( -j4(2, ksi, eta, x, y)*ni4ksi(numn, eta) +&
   !~                 j4(1, ksi, eta, x, y)*ni4eta(numn, ksi) )/dj4(ksi, eta, x, y)

      real(kind=R8)    :: km1, kp1, em1, ep1, kme, kpe, & !
                          x1, x2, x3, x4,               & !
                          y1, y2, y3, y4,               & !
                          kx, ky, ex, ey

      km1 = ksi -1._R8
      kp1 = ksi +1._R8
      em1 = eta -1._R8
      ep1 = eta +1._R8
      kme = ksi -eta
      kpe = ksi +eta

      x1 = x(1) ; x2 = x(2) ; x3 = x(3) ; x4 = x(4)
      y1 = y(1) ; y2 = y(2) ; y3 = y(3) ; y4 = y(4)

      kx = -km1*x1 +kp1*x2 -kp1*x3 +km1*x4
      ky = -km1*y1 +kp1*y2 -kp1*y3 +km1*y4
      ex = -em1*x1 +ep1*x2 -ep1*x3 +em1*x4
      ey = -em1*y1 +ep1*y2 -ep1*y3 +em1*y4

      ni4x(1) = 0.0625_R8*(+km1*kx -em1*ky)/dj
      ni4x(2) = 0.0625_R8*(-kp1*kx +em1*ky)/dj
      ni4x(3) = 0.0625_R8*(+kp1*kx -ep1*ky)/dj
      ni4x(4) = 0.0625_R8*(-km1*kx +ep1*ky)/dj

      kx = -km1*x1 +km1*x2 -kp1*x3 +kp1*x4
      ky = -km1*y1 +km1*y2 -kp1*y3 +kp1*y4
      ex = -em1*x1 +em1*x2 -ep1*x3 +ep1*x4
      ey = -em1*y1 +em1*y2 -ep1*y3 +ep1*y4

      ni4y(1) = 0.0625_R8*(-km1*ex +em1*ey)/dj
      ni4y(2) = 0.0625_R8*(+kp1*ex -em1*ey)/dj
      ni4y(3) = 0.0625_R8*(-kp1*ex +ep1*ey)/dj
      ni4y(4) = 0.0625_R8*(+km1*ex -ep1*ey)/dj

   return
   endsubroutine calc_ni4_xy_derivatives