1 subroutine A02Mevolve(xb,Q,fset)
3 include 'parmsetup.inc'
4 integer npdf,npar,kschem,i,k,n,m,kx,nxbb
5 integer nxb,nq,np,nvar,pdfmem,imem
6 parameter(nxb=99,nq=20,np=9,nvar=17)
8 data nexp / 0, 3, 4, 5, 5, 5, 5, 5, 5, 5 /
9 character*16 name(nmxset)
10 integer nmem(nmxset),ndef(nmxset),mem
11 common/NAME/name,nmem,ndef,mem
13 c common/SET/iset,iimem
15 real*8 f(0:nvar,nxb,nq+1,0:np),xx(nxb)
16 real*8 fsp(nxb),bs(nxb),cs(nxb),ds(nxb)
17 real*8 bsp(0:nvar,nxb,nq+1,0:np),csp(0:nvar,nxb,nq+1,0:np)
18 + ,dsp(0:nvar,nxb,nq+1,0:np)
19 real*8 x1,xd,del,dels,delx,delx1,xlog1
20 real*8 pdfs(0:np),fset(-6:6),alfas
21 real*8 x,Q,xb,q2,xmin,xmax,qsq,qsqmin,qsqmax,b,ss
23 data xmin,xmax,qsqmin,qsqmax/1d-7,1d0,0.8d0,2d8/
25 save f,npdf,npar,pdfmem,dels,delx,x1,delx1,xlog1,nxbb,xx
30 if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99,q2
31 if(xb.lt.xmin.or.xb.gt.xmax) print 98,x
32 99 format(' WARNING: Q^2 VALUE IS OUT OF RANGE ')
33 98 format(' WARNING: X VALUE IS OUT OF RANGE ')
41 xd=(1d0-x1)**2-(1d0-x)**2
49 ss=dlog(dlog(qsq/0.04d0))-dlog(dlog(qsqmin/0.04d0))
51 b=ss/dels-dble(m)+1.d0
56 f0=f(k,n,m,i) + aa*bsp(k,n,m,i) + aa**2*csp(k,n,m,i)
57 + + aa**3*dsp(k,n,m,i)
58 fp=f(k,n,m+1,i) + aa*bsp(k,n,m+1,i) + aa**2*csp(k,n,m+1,i)
59 + + aa**3*dsp(k,n,m+1,i)
61 fm=f(k,n,m-1,i) + aa*bsp(k,n,m-1,i) + aa**2*csp(k,n,m-1,i)
62 + +aa**3*dsp(k,n,m-1,i)
63 pdfs(i)=fm*b*(b-1d0)/2d0 + f0*(1d0-b**2) + fp*b*(b+1d0)/2d0
65 pdfs(i)= f0*(1d0-b) + fp*b
67 pdfs(i) = pdfs(i)*(1d0-x)**dble(nexp(i))
74 c--reversed mrs 7/7/04 due
78 c--reversed mrs 7/7/04 due
79 fset(2)=pdfs(1)+pdfs(4)
80 fset(1)=pdfs(2)+pdfs(6)
87 entry A02Malfa(alfas,Q)
89 if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99,q2
93 ss=log(log(qsq/0.04))-log(log(qsqmin/0.04))
98 alfas=(1d0-b)*f(k,1,m,0)+b*f(k,1,m+1,0)
102 c following fix because members are 0-nvar
110 c print *,'number of members',npdf
115 read(1,*) (f(k,n,m,i),i=0,npdf)
116 c print 100,(f(k,n,m,i),i=0,npdf)
125 delx=(dlog(x1)-dlog(xmin))/dble(nxbb-1)
126 DELX1=(1.d0-x1)**2/dble(nxbb+1)
130 xx(kx)=dexp(dlog(xmin)+delx*dble(kx-1))
133 xx(kx)=1.d0-dsqrt(dabs((1.d0-x1)**2-delx1*dble(kx-nxbb)))
143 f(k,nxb,m,i)=f(k,nxb-1,m,i)
146 f(k,n,m,i)=f(k,n,m,i)/(1d0-xx(n))**nexp(i)
151 call a02mspline (nxb,xx,fsp,bs,cs,ds)
165 dels=(dlog(dlog(qsqmax/0.04d0))-
166 + dlog(dlog(qsqmin/0.04d0)))/dble(nq-1)
173 if ((pdfmem.lt.0).or.(pdfmem.gt.npar)) then
174 write(*,*) 'A02M PDF set:'
175 write(*,*) 'PDF member out of range:'
176 write(*,*) 'member = ',pdfmem,' member range = (0,',npar,')'
182 * ---------------------------------------------------------------------
183 SUBROUTINE A02MSPLINE(N,X,Y,B,C,D)
184 * ---------------------------------------------------------------------
185 * CALCULATE THE COEFFICIENTS B,C,D IN A CUBIC SPLINE INTERPOLATION.
186 * INTERPOLATION SUBROUTINES ARE TAKEN FROM
187 * G.E. FORSYTHE, M.A. MALCOLM AND C.B. MOLER,
188 * COMPUTER METHODS FOR MATHEMATICAL COMPUTATIONS (PRENTICE-HALL, 1977).
190 IMPLICIT REAL*8(A-H,O-Z)
192 DIMENSION X(N), Y(N), B(N), C(N), D(N)
198 C(2)=(Y(2)-Y(1))/D(1)
201 B(K)=2.0D0*(D(K-1)+D(K))
202 C(K+1)=(Y(K+1)-Y(K))/D(K)
210 C(1)=C(3)/(X(4)-X(2))-C(2)/(X(3)-X(1))
211 C(N)=C(N-1)/(X(N)-X(N-2))-C(N-2)/(X(N-1)-X(N-3))
212 C(1)=C(1)*D(1)**2.0D0/(X(4)-X(1))
213 C(N)=-C(N)*D(N-1)**2.0D0/(X(N)-X(N-3))
223 C(K)=(C(K)-D(K)*C(K+1))/B(K)
225 B(N)=(Y(N)-Y(NM1))/D(NM1)
226 1 +D(NM1)*(C(NM1)+2.0D0*C(N))
228 B(K)=(Y(K+1)-Y(K))/D(K)
229 1 -D(K)*(C(K+1)+2.0D0*C(K))
230 D(K)=(C(K+1)-C(K))/D(K)
237 B(1)=(Y(2)-Y(1))/(X(2)-X(1))