1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
diff -u a/Xspec/src/XSFunctions/dospin.f b/Xspec/src/XSFunctions/dospin.f
--- a/Xspec/src/XSFunctions/dospin.f 2020-03-31 09:43:58.000000000 -0500
+++ b/Xspec/src/XSFunctions/dospin.f 2022-02-16 10:46:28.400550576 -0600
@@ -52,14 +52,14 @@
integer nradii,ng,ia,imu0,abins,mu0bins,ilun,ios,block,hdutyp
integer ir
parameter(nradii=50,ng=20,abins=20,mu0bins=20)
+ DOUBLE PRECISION, ALLOCATABLE, SAVE :: trff_tab(:,:,:,:,:)
+ DOUBLE PRECISION, ALLOCATABLE, SAVE :: cosne_tab(:,:,:,:,:)
+ DOUBLE PRECISION, ALLOCATABLE, SAVE :: gmin_tab(:,:,:)
+ DOUBLE PRECISION, ALLOCATABLE, SAVE :: gmax_tab(:,:,:)
+ DOUBLE PRECISION, ALLOCATABLE, SAVE :: a_tab(:),mu0_tab(:)
DOUBLE PRECISION sumspec
DOUBLE PRECISION a,theta0,mu0,gstar(ng)
- DOUBLE PRECISION a_tab(abins),mu0_tab(mu0bins)
DOUBLE PRECISION aintfac,mu0intfac
- DOUBLE PRECISION trff_tab(nradii,ng,2,abins,mu0bins)
- DOUBLE PRECISION cosne_tab(nradii,ng,2,abins,mu0bins)
- DOUBLE PRECISION gmin_tab(nradii,abins,mu0bins)
- DOUBLE PRECISION gmax_tab(nradii,abins,mu0bins)
DOUBLE PRECISION re(nradii),gmin(nradii)
DOUBLE PRECISION gmax(nradii),trff(nradii,ng,2)
DOUBLE PRECISION cosne(nradii,ng,2)
@@ -88,7 +88,6 @@
external lenact, fgmodf
SAVE qfirst
- save a_tab,trff_tab,cosne_tab,gmin_tab,gmax_tab,mu0_tab
DATA qfirst / .true. /
@@ -128,6 +127,11 @@
c Read in transfer function from the kerrtable.fits file.
c
if ( qfirst ) then
+ allocate(trff_tab(nradii,ng,2,abins,mu0bins))
+ allocate(cosne_tab(nradii,ng,2,abins,mu0bins))
+ allocate(gmin_tab(nradii,abins,mu0bins))
+ allocate(gmax_tab(nradii,abins,mu0bins))
+ allocate(a_tab(abins),mu0_tab(mu0bins))
call getlun(ilun)
datafile = fgmodf()
datafile=datafile(1:lenact(datafile))//'/kerrtable.fits'
@@ -316,7 +320,8 @@
rad=rmin * 10 ** ( dfloat(ilgrad-1)*dlog(re(1)/re(nradii))/
& dfloat(ilgrad_max-1))
- if ((rad .gt. rmin) .and. (rad .lt. rmax)) then
+ if ((rad .gt. rmin) .and. (rad .gt. re(nradii)) .and.
+ & (rad .lt. rmax)) then
if (rad .gt. re(irad)) irad=irad-1
intfac=(rad-re(irad+1))/(re(irad)-re(irad+1))
diff -u a/Xspec/src/XSFunctions/xsrefsch.f b/Xspec/src/XSFunctions/xsrefsch.f
--- a/Xspec/src/XSFunctions/xsrefsch.f 2019-05-17 14:35:25.000000000 -0500
+++ b/Xspec/src/XSFunctions/xsrefsch.f 2022-02-16 10:46:28.401550579 -0600
@@ -307,7 +307,7 @@
sincl = sin(param(5)/dera)
cincl = cos(param(5)/dera)
- do n=1,ne
+ do n=0,ne
ear(n) = zfac*earp(n)
end do
|