Optimized tests for call to absorption routine. Fixed out of bounds error at 1st step
This commit is contained in:
parent
c36ffbc6b6
commit
4226416c4a
@ -54,6 +54,7 @@ contains
|
|||||||
|
|
||||||
real(wp_) :: sox,ak0,bres,xgcn,xg,yg,zzm,alpha,didp,anpl,anpr,anprim,anprre
|
real(wp_) :: sox,ak0,bres,xgcn,xg,yg,zzm,alpha,didp,anpl,anpr,anprim,anprre
|
||||||
real(wp_) :: chipol,psipol,btot,psinv,dens,tekev,zeff,dersdst,derdnm,st,st0
|
real(wp_) :: chipol,psipol,btot,psinv,dens,tekev,zeff,dersdst,derdnm,st,st0
|
||||||
|
real(wp_) :: tau0,alphaabs0,didst0,ccci0
|
||||||
real(wp_) :: tau,pow,dpdst,ddr,ddi,taumn,taumx
|
real(wp_) :: tau,pow,dpdst,ddr,ddi,taumn,taumx
|
||||||
real(wp_) :: rhotpav,drhotpav,rhotjava,drhotjava
|
real(wp_) :: rhotpav,drhotpav,rhotjava,drhotjava
|
||||||
real(wp_), dimension(3) :: xv,anv0,anv
|
real(wp_), dimension(3) :: xv,anv0,anv
|
||||||
@ -175,13 +176,24 @@ contains
|
|||||||
end if
|
end if
|
||||||
|
|
||||||
tekev=zero
|
tekev=zero
|
||||||
|
if(i==1) then
|
||||||
|
tau0=zero
|
||||||
|
alphaabs0=zero
|
||||||
|
didst0=zero
|
||||||
|
ccci0=zero
|
||||||
|
else
|
||||||
|
tau0=tauv(jk,i-1)
|
||||||
|
alphaabs0=alphav(jk,i-1)
|
||||||
|
didst0=didst(jk,i-1)
|
||||||
|
ccci0=ccci(jk,i-1)
|
||||||
|
end if
|
||||||
zzm = xv(3)*0.01_wp_
|
zzm = xv(3)*0.01_wp_
|
||||||
ins_pl = (psinv>=zero .and. psinv<one .and. zzm>=zbinf .and. zzm<=zbsup)
|
ins_pl = (psinv>=zero .and. psinv<one .and. zzm>=zbinf .and. zzm<=zbsup)
|
||||||
allout = allout .and. .not.ins_pl
|
allout = allout .and. .not.ins_pl
|
||||||
somein = somein .or. ins_pl
|
somein = somein .or. ins_pl
|
||||||
|
|
||||||
! compute ECRH&CD
|
! compute ECRH&CD
|
||||||
if(ierr==0 .and. iwarm>0 .and. ins_pl) then
|
if(ierr==0 .and. iwarm>0 .and. ins_pl .and. tau0<=taucr) then
|
||||||
! print*,i,jk,rayi2jk(jk),psinv,zzm,anpl
|
! print*,i,jk,rayi2jk(jk),psinv,zzm,anpl
|
||||||
tekev=temp(psinv)
|
tekev=temp(psinv)
|
||||||
if(tekev>zero) then
|
if(tekev>zero) then
|
||||||
@ -192,15 +204,18 @@ contains
|
|||||||
end if
|
end if
|
||||||
else
|
else
|
||||||
alpha=zero
|
alpha=zero
|
||||||
|
didp=zero
|
||||||
anprim=zero
|
anprim=zero
|
||||||
anprre=anpr
|
anprre=anpr
|
||||||
didp=zero
|
nharm=0
|
||||||
|
nhf=0
|
||||||
|
iokhawa=0
|
||||||
end if
|
end if
|
||||||
|
|
||||||
psjki(jk,i) = psinv
|
psjki(jk,i) = psinv
|
||||||
|
|
||||||
! computation of optical depth tau, dP/ds, P(s), dI/ds, I(s)
|
! computation of optical depth tau, dP/ds, P(s), dI/ds, I(s)
|
||||||
tau=tauv(jk,i-1)+0.5_wp_*(alpha+alphav(jk,i-1))*dersdst*dst
|
tau=tau0+0.5_wp_*(alpha+alphaabs0)*dersdst*dst
|
||||||
tauv(jk,i)=tau
|
tauv(jk,i)=tau
|
||||||
alphav(jk,i)=alpha
|
alphav(jk,i)=alpha
|
||||||
pow=p0jk(jk)*exp(-tau) !*exp(-tau1v(jk))
|
pow=p0jk(jk)*exp(-tau) !*exp(-tau1v(jk))
|
||||||
@ -208,7 +223,7 @@ contains
|
|||||||
|
|
||||||
dpdst=pow*alpha*dersdst
|
dpdst=pow*alpha*dersdst
|
||||||
didst(jk,i)=didp*dpdst
|
didst(jk,i)=didp*dpdst
|
||||||
ccci(jk,i)=ccci(jk,i-1)+0.5_wp_*(didst(jk,i)+didst(jk,i-1))*dst
|
ccci(jk,i)=ccci0+0.5_wp_*(didst0+didst(jk,i))*dst
|
||||||
|
|
||||||
call print_output(i,jk,st,p0jk(jk)/p0,xv,psinv,btot,ak0,anpl,anpr, &
|
call print_output(i,jk,st,p0jk(jk)/p0,xv,psinv,btot,ak0,anpl,anpr, &
|
||||||
anprim,dens,tekev,alphav(jk,i),tauv(jk,i),didst(jk,i),nhf,iokhawa, &
|
anprim,dens,tekev,alphav(jk,i),tauv(jk,i),didst(jk,i),nhf,iokhawa, &
|
||||||
|
Loading…
Reference in New Issue
Block a user