Fix unsafe use of merge and missing igrad override
This commit is contained in:
parent
e3656e8bdd
commit
621c725948
@ -597,7 +597,11 @@ subroutine dielectric_tensor(X, Y, mu, Npl, model, nlarmor, e330, epsl, error)
|
|||||||
|
|
||||||
! Compute the next factorial values
|
! Compute the next factorial values
|
||||||
fact_lpn = fact_lpn * (l + n+1)
|
fact_lpn = fact_lpn * (l + n+1)
|
||||||
fact_lmn = merge(fact_lmn / (l - n), 1, n < l)
|
if (n<l) then
|
||||||
|
fact_lmn = fact_lmn / (l - n)
|
||||||
|
else
|
||||||
|
fact_lmn = 1
|
||||||
|
end if
|
||||||
|
|
||||||
! Functions Q⁺_hl(n) Q⁻_hl(n), eq. 7
|
! Functions Q⁺_hl(n) Q⁻_hl(n), eq. 7
|
||||||
if (model == 1) then
|
if (model == 1) then
|
||||||
@ -609,11 +613,18 @@ subroutine dielectric_tensor(X, Y, mu, Npl, model, nlarmor, e330, epsl, error)
|
|||||||
Qp_2l = Fp(n,1) + mu * Npl2 * (Fp(n,2) + Fp(n,0) - 2*Fp(n,1))
|
Qp_2l = Fp(n,1) + mu * Npl2 * (Fp(n,2) + Fp(n,0) - 2*Fp(n,1))
|
||||||
else
|
else
|
||||||
! Fully relativistic computation
|
! Fully relativistic computation
|
||||||
Qp_0l = rr(n,0,l) + merge(im*ri(n,0,l) + rr(-n,0,l), czero, n > 0)
|
Qp_0l = rr(n,0,l)
|
||||||
Qm_0l = rr(n,0,l) + merge(im*ri(n,0,l) - rr(-n,0,l), czero, n > 0)
|
Qm_0l = rr(n,0,l)
|
||||||
Qp_1l = rr(n,1,l) + merge(im*ri(n,1,l) + rr(-n,1,l), czero, n > 0)
|
Qp_1l = rr(n,1,l)
|
||||||
Qm_1l = rr(n,1,l) + merge(im*ri(n,1,l) - rr(-n,1,l), czero, n > 0)
|
Qm_1l = rr(n,1,l)
|
||||||
Qp_2l = rr(n,2,l) + merge(im*ri(n,2,l) + rr(-n,2,l), czero, n > 0)
|
Qp_2l = rr(n,2,l)
|
||||||
|
if (n>0) then
|
||||||
|
Qp_0l = Qp_0l + im*ri(n,0,l) + rr(-n,0,l)
|
||||||
|
Qm_0l = Qm_0l + im*ri(n,0,l) - rr(-n,0,l)
|
||||||
|
Qp_1l = Qp_1l + im*ri(n,1,l) + rr(-n,1,l)
|
||||||
|
Qm_1l = Qm_1l + im*ri(n,1,l) - rr(-n,1,l)
|
||||||
|
Qp_2l = Qp_2l + im*ri(n,2,l) + rr(-n,2,l)
|
||||||
|
end if
|
||||||
end if
|
end if
|
||||||
|
|
||||||
! Components of the ε̅^(l) tensors, eq. 11
|
! Components of the ε̅^(l) tensors, eq. 11
|
||||||
|
@ -376,7 +376,7 @@ contains
|
|||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
! subroutine arguments
|
! subroutine arguments
|
||||||
type(gray_parameters), intent(in) :: params
|
type(gray_parameters), intent(inout) :: params
|
||||||
|
|
||||||
iequil = params%equilibrium%iequil
|
iequil = params%equilibrium%iequil
|
||||||
iprof = params%profiles%iprof
|
iprof = params%profiles%iprof
|
||||||
@ -386,17 +386,17 @@ contains
|
|||||||
istpr0 = params%output%istpr
|
istpr0 = params%output%istpr
|
||||||
istpl0 = params%output%istpl
|
istpl0 = params%output%istpl
|
||||||
|
|
||||||
|
if (params%raytracing%nrayr < 5) then
|
||||||
|
params%raytracing%igrad = 0
|
||||||
|
call log_warning('nrayr < 5 ⇒ optical case only', &
|
||||||
|
mod="gray_params", proc="set_globals")
|
||||||
|
end if
|
||||||
|
|
||||||
ipol = params%raytracing%ipol
|
ipol = params%raytracing%ipol
|
||||||
igrad = params%raytracing%igrad
|
igrad = params%raytracing%igrad
|
||||||
idst = params%raytracing%idst
|
idst = params%raytracing%idst
|
||||||
ipass = params%raytracing%ipass
|
ipass = params%raytracing%ipass
|
||||||
|
|
||||||
if (params%raytracing%nrayr < 5) then
|
|
||||||
igrad = 0
|
|
||||||
call log_warning('nrayr < 5 ⇒ optical case only', &
|
|
||||||
mod="gray_params", proc="set_globals")
|
|
||||||
end if
|
|
||||||
|
|
||||||
iwarm = params%ecrh_cd%iwarm
|
iwarm = params%ecrh_cd%iwarm
|
||||||
ilarm = params%ecrh_cd%ilarm
|
ilarm = params%ecrh_cd%ilarm
|
||||||
imx = params%ecrh_cd%imx
|
imx = params%ecrh_cd%imx
|
||||||
|
Loading…
Reference in New Issue
Block a user