GRAY.f bugs fixed to avoid NaN when rays do not enter into plasma
GRAY.f "ad-hoc" fix in subroutine contour_psi, that MUST be checked
This commit is contained in:
parent
6153060056
commit
b7c4630657
76
src/gray.f
76
src/gray.f
@ -208,7 +208,8 @@ c
|
|||||||
common/dsds/dst
|
common/dsds/dst
|
||||||
common/index_rt/index_rt
|
common/index_rt/index_rt
|
||||||
common/ipass/ipass
|
common/ipass/ipass
|
||||||
c
|
common/rwallm/rwallm
|
||||||
|
|
||||||
pabstot=0.0d0
|
pabstot=0.0d0
|
||||||
currtot=0.0d0
|
currtot=0.0d0
|
||||||
taumn=1d+30
|
taumn=1d+30
|
||||||
@ -324,6 +325,9 @@ c print*,' '
|
|||||||
if(psimin.gt.1.0d0.and.rrm11.gt.rcen.and.index_rt.gt.1)
|
if(psimin.gt.1.0d0.and.rrm11.gt.rcen.and.index_rt.gt.1)
|
||||||
. istop=1
|
. istop=1
|
||||||
|
|
||||||
|
if(rrm11.lt.rwallm.and.ipass.eq.1) istop=1
|
||||||
|
if(iovmin.eq.2.and.ipass.eq.1) istop=1
|
||||||
|
|
||||||
if(iovmin.eq.3) istop=1
|
if(iovmin.eq.3) istop=1
|
||||||
|
|
||||||
c print ray positions for j=nray in local reference system
|
c print ray positions for j=nray in local reference system
|
||||||
@ -1389,31 +1393,29 @@ c
|
|||||||
end if
|
end if
|
||||||
print*,' '
|
print*,' '
|
||||||
|
|
||||||
c
|
|
||||||
c compute B_toroidal on axis
|
c compute B_toroidal on axis
|
||||||
c
|
|
||||||
btaxis=fpol(1)/rmaxis
|
btaxis=fpol(1)/rmaxis
|
||||||
btrcen=abs(btrcen)*factb
|
btrcen=abs(btrcen)*factb
|
||||||
print'(a,f8.4)','factb = ',factb
|
print'(a,f8.4)','factb = ',factb
|
||||||
print'(a,f8.4)','|BT_centr|= ',btrcen
|
print'(a,f8.4)','|BT_centr|= ',btrcen
|
||||||
print'(a,f8.4)','|BT_axis| = ',abs(btaxis)
|
print'(a,f8.4)','|BT_axis| = ',abs(btaxis)
|
||||||
c
|
|
||||||
c compute normalized rho_tor from eqdsk q profile
|
c compute normalized rho_tor from eqdsk q profile
|
||||||
c
|
|
||||||
call rhotor(nr)
|
call rhotor(nr)
|
||||||
c phitedge=deltapsi*rhotsx*2*pi
|
c phitedge=deltapsi*rhotsx*2*pi
|
||||||
c rrtor=sqrt(phitedge/abs(btrcen)/pi)
|
c rrtor=sqrt(phitedge/abs(btrcen)/pi)
|
||||||
c
|
|
||||||
c compute flux surface averaged quantities
|
c compute flux surface averaged quantities
|
||||||
c
|
|
||||||
rup=rmaxis
|
rup=rmaxis
|
||||||
rlw=rmaxis
|
rlw=rmaxis
|
||||||
zup=(zbmax+zmaxis)/2.0d0
|
zup=zmaxis+(zbmax-zmaxis)/10.0d0
|
||||||
zlw=(zmaxis+zbmin)/2.0d0
|
zlw=zmaxis-(zmaxis-zbmin)/10.0d0
|
||||||
call flux_average
|
call flux_average
|
||||||
c
|
|
||||||
c locate psi surface for q=1.5 and q=2
|
c locate psi surface for q=1.5 and q=2
|
||||||
c
|
|
||||||
rup=rmaxis
|
rup=rmaxis
|
||||||
rlw=rmaxis
|
rlw=rmaxis
|
||||||
zup=(zbmax+zmaxis)/2.0d0
|
zup=(zbmax+zmaxis)/2.0d0
|
||||||
@ -1809,7 +1811,7 @@ c
|
|||||||
|
|
||||||
function frhotor_av(psi)
|
function frhotor_av(psi)
|
||||||
implicit real*8(a-h,o-z)
|
implicit real*8(a-h,o-z)
|
||||||
parameter(nnintp=101)
|
parameter(nnintp=41)
|
||||||
dimension rpstab(nnintp),crhotq(nnintp,4)
|
dimension rpstab(nnintp),crhotq(nnintp,4)
|
||||||
common/pstab/rpstab
|
common/pstab/rpstab
|
||||||
common/eqnn/nr,nz,npp,nintp
|
common/eqnn/nr,nz,npp,nintp
|
||||||
@ -2055,18 +2057,17 @@ c
|
|||||||
if(ier.gt.0) print*,' profil =',ier
|
if(ier.gt.0) print*,' profil =',ier
|
||||||
val=h+psiaxis0/psia
|
val=h+psiaxis0/psia
|
||||||
call sproota(val,tr,nsr,czc,zeroc,mest,m,ier)
|
call sproota(val,tr,nsr,czc,zeroc,mest,m,ier)
|
||||||
|
call sort (mest, zeroc)
|
||||||
if (zeroc(1).gt.rwallm) then
|
if (zeroc(1).gt.rwallm) then
|
||||||
rcn(ic)=zeroc(1)
|
iic=1
|
||||||
zcn(ic)=zc
|
|
||||||
rcn(2*np+2-ic)=zeroc(2)
|
|
||||||
zcn(2*np+2-ic)=zc
|
|
||||||
else
|
else
|
||||||
rcn(ic)=zeroc(2)
|
iic=2
|
||||||
zcn(ic)=zc
|
if (zeroc(2).lt.rwallm) iic=3
|
||||||
rcn(2*np+2-ic)=zeroc(3)
|
|
||||||
zcn(2*np+2-ic)=zc
|
|
||||||
end if
|
end if
|
||||||
|
rcn(ic)=zeroc(iic)
|
||||||
|
zcn(ic)=zc
|
||||||
|
rcn(2*np+2-ic)=zeroc(iic+1)
|
||||||
|
zcn(2*np+2-ic)=zc
|
||||||
end do
|
end do
|
||||||
if (ipr.gt.0) then
|
if (ipr.gt.0) then
|
||||||
do ii=1,2*np+1
|
do ii=1,2*np+1
|
||||||
@ -2077,7 +2078,22 @@ c
|
|||||||
end if
|
end if
|
||||||
return
|
return
|
||||||
111 format(i6,12(1x,e12.5))
|
111 format(i6,12(1x,e12.5))
|
||||||
99 format(2i6,12(1x,e16.8e3))
|
99 format(12(1x,e12.5))
|
||||||
|
end
|
||||||
|
|
||||||
|
subroutine sort(n,a)
|
||||||
|
implicit none
|
||||||
|
integer n,i,j
|
||||||
|
double precision a(n),temp
|
||||||
|
do i = 2, n
|
||||||
|
j = i - 1
|
||||||
|
temp = a(i)
|
||||||
|
do while (j.ge.1.and.a(j).gt.temp)
|
||||||
|
a(j+1) = a(j)
|
||||||
|
j = j - 1
|
||||||
|
end do
|
||||||
|
a(j+1) = temp
|
||||||
|
end do
|
||||||
end
|
end
|
||||||
c
|
c
|
||||||
c
|
c
|
||||||
@ -2086,7 +2102,7 @@ c
|
|||||||
implicit real*8 (a-h,o-z)
|
implicit real*8 (a-h,o-z)
|
||||||
real*8 lam
|
real*8 lam
|
||||||
|
|
||||||
parameter(nnintp=101,ncnt=100,ncntt=2*ncnt+1,nlam=101)
|
parameter(nnintp=41,ncnt=100,ncntt=2*ncnt+1,nlam=41)
|
||||||
parameter(zero=0.0d0,one=1.0d0)
|
parameter(zero=0.0d0,one=1.0d0)
|
||||||
parameter(pi=3.14159265358979d0,ccj=1.0d+7/(4.0d0*pi))
|
parameter(pi=3.14159265358979d0,ccj=1.0d+7/(4.0d0*pi))
|
||||||
parameter(ksp=3,njest=nnintp+ksp+1,nlest=nlam+ksp+1)
|
parameter(ksp=3,njest=nnintp+ksp+1,nlest=nlam+ksp+1)
|
||||||
@ -2179,10 +2195,10 @@ c computation of flux surface averaged quantities
|
|||||||
ffc(1)=fc
|
ffc(1)=fc
|
||||||
rhot2q=0.0d0
|
rhot2q=0.0d0
|
||||||
|
|
||||||
rup=rmaxis
|
C rup=rmaxis
|
||||||
rlw=rmaxis
|
C rlw=rmaxis
|
||||||
zup=(zbmax+zmaxis)/2.0d0
|
C zup=(zbmax+zmaxis)/2.0d0
|
||||||
zlw=(zmaxis+zbmin)/2.0d0
|
C zlw=(zmaxis+zbmin)/2.0d0
|
||||||
|
|
||||||
do jp=2,nintp
|
do jp=2,nintp
|
||||||
height=dble(jp-1)/dble(nintp-1)
|
height=dble(jp-1)/dble(nintp-1)
|
||||||
@ -4208,7 +4224,7 @@ c
|
|||||||
subroutine valpsispl(rpsi,voli,dervoli,areai,rrii,rbavi,
|
subroutine valpsispl(rpsi,voli,dervoli,areai,rrii,rbavi,
|
||||||
. bmxi,bmni,fci,intp)
|
. bmxi,bmni,fci,intp)
|
||||||
implicit real*8 (a-h,o-z)
|
implicit real*8 (a-h,o-z)
|
||||||
parameter(nnintp=101)
|
parameter(nnintp=41)
|
||||||
dimension rpstab(nnintp),cbmx(nnintp,4),cbmn(nnintp,4)
|
dimension rpstab(nnintp),cbmx(nnintp,4),cbmn(nnintp,4)
|
||||||
dimension cvol(nnintp,4),crri(nnintp,4),crbav(nnintp,4)
|
dimension cvol(nnintp,4),crri(nnintp,4),crbav(nnintp,4)
|
||||||
dimension carea(nnintp,4),cfc(nnintp,4)
|
dimension carea(nnintp,4),cfc(nnintp,4)
|
||||||
@ -4242,7 +4258,7 @@ c
|
|||||||
c
|
c
|
||||||
subroutine ratioj(rpsi,ratj1i,ratj2i)
|
subroutine ratioj(rpsi,ratj1i,ratj2i)
|
||||||
implicit real*8 (a-h,o-z)
|
implicit real*8 (a-h,o-z)
|
||||||
parameter(nnintp=101)
|
parameter(nnintp=41)
|
||||||
dimension rpstab(nnintp),cratj1(nnintp,4),cratj2(nnintp,4)
|
dimension rpstab(nnintp),cratj1(nnintp,4),cratj2(nnintp,4)
|
||||||
common/pstab/rpstab
|
common/pstab/rpstab
|
||||||
common/eqnn/nr,nz,npp,nintp
|
common/eqnn/nr,nz,npp,nintp
|
||||||
@ -5550,7 +5566,7 @@ c gg=F(u)/u with F(u) as in Cohen paper
|
|||||||
|
|
||||||
subroutine vlambda(alam,psi,fv,dfv)
|
subroutine vlambda(alam,psi,fv,dfv)
|
||||||
implicit real*8 (a-h,o-z)
|
implicit real*8 (a-h,o-z)
|
||||||
parameter (nnintp=101,nlam=101)
|
parameter (nnintp=41,nlam=41)
|
||||||
parameter(ksp=3,njest=nnintp+ksp+1,nlest=nlam+ksp+1)
|
parameter(ksp=3,njest=nnintp+ksp+1,nlest=nlam+ksp+1)
|
||||||
parameter(lwrk=4*(nnintp+nlam)+11*(njest+nlest)+
|
parameter(lwrk=4*(nnintp+nlam)+11*(njest+nlest)+
|
||||||
. njest*nnintp+nlest+54)
|
. njest*nnintp+nlest+54)
|
||||||
|
Loading…
Reference in New Issue
Block a user