add_analytical_E_p Subroutine

public subroutine add_analytical_E_p(params, tt, F, E_PHI, Y_R)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(inout) :: params
integer(kind=ip), intent(in) :: tt
type(FIELDS), intent(in) :: F
real(kind=rp), intent(inout), DIMENSION(8):: E_PHI
real(kind=rp), intent(in), DIMENSION(8):: Y_R

Contents

Source Code


Source Code

  subroutine add_analytical_E_p(params,tt,F,E_PHI,Y_R)

    TYPE(KORC_PARAMS), INTENT(INOUT)                              :: params
    TYPE(FIELDS), INTENT(IN)                                   :: F
    INTEGER(ip),INTENT(IN)  :: tt
    REAL(rp)  :: E_dyn,E_pulse,E_width,time,arg,arg1,R0
    REAL(rp),DIMENSION(8),INTENT(INOUT) :: E_PHI
    REAL(rp),DIMENSION(8),INTENT(IN) :: Y_R
    integer(ip) :: cc

    time=params%init_time+(params%it-1+tt)*params%dt
    
    E_dyn=F%E_dyn
    E_pulse=F%E_pulse
    E_width=F%E_width
    R0=F%Ro

!    write(6,'("E_dyn: ",E17.10)') E_dyn
!    write(6,'("E_pulse: ",E17.10)') E_pulse
!    write(6,'("E_width: ",E17.10)') E_width
    
    !$OMP SIMD
    !    !$OMP& aligned(E_PHI)
    do cc=1_idef,8_idef

       arg=(time-E_pulse)**2/(2._rp*E_width**2)
       arg1=10._rp*(time-E_pulse)/(sqrt(2._rp)*E_width)
       
       E_PHI(cc)=E_PHI(cc)+R0*E_dyn/Y_R(cc)*exp(-arg)*(1._rp+erf(-arg1))/2._rp
    end do
    !$OMP END SIMD

  end subroutine add_analytical_E_p