subroutine interp_FOfields_p(F,Y_R,Y_PHI,Y_Z,B_X,B_Y,B_Z,E_X,E_Y,E_Z,PSIp, &
flag_cache)
TYPE(FIELDS), INTENT(IN) :: F
REAL(rp),DIMENSION(8),INTENT(IN) :: Y_R,Y_PHI,Y_Z
REAL(rp),DIMENSION(8),INTENT(OUT) :: B_X,B_Y,B_Z
REAL(rp),DIMENSION(8) :: B_R,B_PHI
REAL(rp),DIMENSION(8),INTENT(OUT) :: E_X,E_Y,E_Z
REAL(rp),DIMENSION(8),INTENT(OUT) :: PSIp
REAL(rp),DIMENSION(8) :: E_R,E_PHI
REAL(rp),DIMENSION(8) :: cP,sP
! INTEGER(ip) :: ezerr
INTEGER :: cc
!! Particle chunk iterator.
INTEGER(is),DIMENSION(8),INTENT(INOUT) :: flag_cache
call check_if_in_fields_domain_p(F,Y_R,Y_PHI,Y_Z,flag_cache)
call EZspline_interp(bfield_2d%A,8,Y_R, Y_Z,PSIp, ezerr)
call EZspline_error(ezerr)
call EZspline_interp(bfield_2d%R,bfield_2d%PHI,bfield_2d%Z,efield_2d%R, &
efield_2d%PHI,efield_2d%Z,8,Y_R,Y_Z,B_R,B_PHI,B_Z, &
E_R,E_PHI,E_Z,ezerr)
call EZspline_error(ezerr)
!$OMP SIMD
! !$OMP& aligned (cP,sP,B_X,B_Y,E_X,E_Y,Y_PHI,B_R,B_PHI,E_R,E_PHI)
do cc=1_idef,8_idef
cP(cc)=cos(Y_PHI(cc))
sP(cc)=sin(Y_PHI(cc))
B_X(cc) = B_R(cc)*cP(cc) - B_PHI(cc)*sP(cc)
B_Y(cc) = B_R(cc)*sP(cc) + B_PHI(cc)*cP(cc)
E_X(cc) = E_R(cc)*cP(cc) - E_PHI(cc)*sP(cc)
E_Y(cc) = E_R(cc)*sP(cc) + E_PHI(cc)*cP(cc)
end do
!$OMP END SIMD
end subroutine interp_FOfields_p