cart_to_tor_check_if_confined_p Subroutine

public subroutine cart_to_tor_check_if_confined_p(ar, R0, X_X, X_Y, X_Z, T_R, T_T, T_Z, flag_cache)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: ar
real(kind=rp), intent(in) :: R0
real(kind=rp), intent(in), DIMENSION(8):: X_X
real(kind=rp), intent(in), DIMENSION(8):: X_Y
real(kind=rp), intent(in), DIMENSION(8):: X_Z
real(kind=rp), intent(out), DIMENSION(8):: T_R
real(kind=rp), intent(out), DIMENSION(8):: T_T
real(kind=rp), intent(out), DIMENSION(8):: T_Z
integer(kind=is), intent(inout), DIMENSION(8):: flag_cache

Contents


Source Code

  subroutine cart_to_tor_check_if_confined_p(ar,R0,X_X,X_Y,X_Z, &
       T_R,T_T,T_Z,flag_cache)
    REAL(rp),  INTENT(IN)      :: R0,ar
    REAL(rp),  INTENT(IN),DIMENSION(8)      :: X_X,X_Y,X_Z
    REAL(rp),  INTENT(OUT),DIMENSION(8)      :: T_R,T_T,T_Z
    INTEGER(is),  INTENT(INOUT),DIMENSION(8)      :: flag_cache
    REAL(rp),DIMENSION(8)   :: RR
    INTEGER                                      :: cc
    !! Particle chunk iterator.

    !$OMP SIMD
!    !$OMP& aligned(RR,X_X,X_Y,T_R,T_T,T_Z,X_Z)
    do cc=1_idef,8
       RR(cc)=SQRT(X_X(cc)*X_X(cc) + X_Y(cc)*X_Y(cc)) - R0


       T_R(cc) = SQRT( RR(cc)*RR(cc) + X_Z(cc)*X_Z(cc) )
       T_T(cc) = ATAN2(X_Z(cc), RR(cc))
       T_T(cc) = MODULO(T_T(cc),2.0_rp*C_PI)
       T_Z(cc) = ATAN2(X_X(cc),X_Y(cc))
       T_Z(cc) = MODULO(T_Z(cc),2.0_rp*C_PI)
    end do
    !$OMP END SIMD

    !$OMP SIMD
    do cc=1_idef,8
       if (T_R(cc) .GT. ar) then
          flag_cache(cc) = 0_is
       end if
    end do
    !$OMP END SIMD
    
  end subroutine cart_to_tor_check_if_confined_p