fRE_H_3D Function

public function fRE_H_3D(F, eta, g, R, Z, R0, Z0)

Arguments

Type IntentOptional AttributesName
type(FIELDS), intent(in) :: F
real(kind=rp), intent(in) :: eta
real(kind=rp), intent(in) :: g
real(kind=rp), intent(in) :: R
real(kind=rp), intent(in) :: Z
real(kind=rp), intent(in) :: R0
real(kind=rp), intent(in) :: Z0

Return Value real(kind=rp)


Contents

Source Code


Source Code

  FUNCTION fRE_H_3D(F,eta,g,R,Z,R0,Z0)
    TYPE(FIELDS), INTENT(IN)    :: F
    REAL(rp), INTENT(IN) 	:: eta ! pitch angle in degrees
    REAL(rp), INTENT(IN) 	:: g ! Relativistic gamma factor
    REAL(rp), INTENT(IN)  :: R,Z,R0,Z0
    REAL(rp) 				:: fRE_H_3D
    REAL(rp) 				:: D
    REAL(rp) 				:: g0
    REAL(rp) 				:: g1
    REAL(rp) 				:: f0
    REAL(rp) 				:: f1
    REAL(rp) 				:: m
    REAL(rp) 				:: feta
    REAL(rp) 				:: A
    REAL(rp) 				:: rm,E_G,Z_G
    INTEGER 				:: index

    index = MINLOC(ABS(h_params%g - g),1)
    ! index of gamma supplied to function in Hollmann input gamma range
    D = h_params%g(index) - g

    ! linear interpolation of Hollmann input gamma range to gamma supplied
    ! to function
    if (D.GT.0) then
       f0 = h_params%fRE_E(index-1)
       g0 = h_params%g(index-1)

       f1 = h_params%fRE_E(index)
       g1 = h_params%g(index)
    else
       f0 = h_params%fRE_E(index)
       g0 = h_params%g(index)

       f1 = h_params%fRE_E(index+1)
       g1 = h_params%g(index+1)
    end if

    m = (f1-f0)/(g1-g0)

    fRE_H_3D = f0 + m*(g - g0)
    ! end of linear interpolation, fRE_H is evaluation of input Hollman energy
    ! distribution PDF at gamma supplied to function

    rm=sqrt((R-R0)**2+(Z-Z0)**2)

    E_G=F%Ro*h_params%Eo/R

!    E_G=h_params%E*exp(-(rm/h_params%sigma_E)**2/2)
    Z_G=h_params%Zeff*exp(-(rm/h_params%sigma_Z)**2/2)

!    write(6,'("rm: ",E17.10)') rm
    
    A = (2.0_rp*E_G/(Z_G + 1.0_rp))*(g**2 - 1.0_rp)/g
    A = A*h_params%A_fact

    feta = A*EXP(-A*(1.0_rp - COS(deg2rad(eta))))/(1.0_rp - EXP(-2.0_rp*A))     ! MRC
    !	feta = 0.5_rp*A*EXP(A*COS(deg2rad(eta)))/SINH(A)                            ! MRC

    fRE_H_3D = fRE_H_3D*feta
  END FUNCTION fRE_H_3D