Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(KORC_PARAMS), | intent(inout) | :: | params | Core KORC simulation parameters. |
||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | X_X | ||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | X_Y | ||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | X_Z | ||
real(kind=rp), | intent(inout), | DIMENSION(params%pchunk) | :: | V_X | ||
real(kind=rp), | intent(inout), | DIMENSION(params%pchunk) | :: | V_Y | ||
real(kind=rp), | intent(inout), | DIMENSION(params%pchunk) | :: | V_Z | ||
real(kind=rp), | intent(inout), | DIMENSION(params%pchunk) | :: | g | ||
real(kind=rp), | intent(in) | :: | m_cache | |||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | B_X | ||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | B_Y | ||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | B_Z | ||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | E_X | ||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | E_Y | ||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | E_Z | ||
integer(kind=is), | intent(inout), | DIMENSION(params%pchunk) | :: | flagCon | ||
integer(kind=is), | intent(inout), | DIMENSION(params%pchunk) | :: | flagCol | ||
type(PROFILES), | intent(in) | :: | P | |||
type(FIELDS), | intent(in) | :: | F | |||
real(kind=rp), | intent(in), | DIMENSION(params%pchunk) | :: | PSIp |
subroutine advance_FP3Dinterp_vars(params,X_X,X_Y,X_Z,V_X,V_Y,V_Z,g, &
m_cache,B_X,B_Y,B_Z,E_X,E_Y,E_Z,flagCon,flagCol,P,F,PSIp)
TYPE(KORC_PARAMS), INTENT(INOUT) :: params
!! Core KORC simulation parameters.
TYPE(PROFILES), INTENT(IN) :: P
TYPE(FIELDS), INTENT(IN) :: F
INTEGER :: cc,pchunk
!! Chunk iterator.
INTEGER(ip) :: tt
!! time iterator.
REAL(rp),DIMENSION(params%pchunk), INTENT(IN) :: X_X,X_Y,X_Z
REAL(rp),DIMENSION(params%pchunk) :: Y_R,Y_PHI,Y_Z
REAL(rp),DIMENSION(params%pchunk), INTENT(IN) :: E_X,E_Y,E_Z,PSIp
REAL(rp),DIMENSION(params%pchunk), INTENT(IN) :: B_X,B_Y,B_Z
REAL(rp),DIMENSION(params%pchunk) :: U_X,U_Y,U_Z
REAL(rp),DIMENSION(params%pchunk), INTENT(INOUT) :: V_X,V_Y,V_Z
REAL(rp),DIMENSION(params%pchunk) :: ne,Te,Zeff
REAL(rp),DIMENSION(params%pchunk),INTENT(INOUT) :: g
INTEGER(is),DIMENSION(params%pchunk),INTENT(INOUT) :: flagCon,flagCol
REAL(rp),intent(in) :: m_cache
pchunk=params%pchunk
!$OMP SIMD
! !$OMP& aligned(U_X,U_Y,U_Z,V_X,V_Y,V_Z,g)
do cc=1_idef,pchunk
U_X(cc)=V_X(cc)*g(cc)
U_Y(cc)=V_Y(cc)*g(cc)
U_Z(cc)=V_Z(cc)*g(cc)
end do
!$OMP END SIMD
do tt=1_ip,params%t_skip
call include_CoulombCollisions_FO_p(tt,params,X_X,X_Y,X_Z, &
U_X,U_Y,U_Z,B_X,B_Y,B_Z,m_cache,P,F,flagCon,flagCol,PSIp)
end do
!$OMP SIMD
! !$OMP& aligned(U_X,U_Y,U_Z,V_X,V_Y,V_Z,g)
do cc=1_idef,pchunk
g(cc)=sqrt(1._rp+U_X(cc)*U_X(cc)+U_Y(cc)*U_Y(cc)+U_Z(cc)*U_Z(cc))
V_X(cc)=U_X(cc)/g(cc)
V_Y(cc)=U_Y(cc)/g(cc)
V_Z(cc)=U_Z(cc)/g(cc)
end do
!$OMP END SIMD
end subroutine advance_FP3Dinterp_vars