1 subroutine QCDNUM3evolve(x,Q,pdf)
6 real*8 x,Q,Qlam,Q2,Q2fit,alfas0,scale0,alfas
7 real*8 mc,mc2,mb,mb2,mt,mt2,tc,tc2,tb,tb2
8 real*8 singlet,dm,um,dp,up,sp,ub,db,sb,cb,bb,bp,cp,gl,xx
9 real*8 QALFAS,QPDFXQ,XFROMIX
10 real*8 f(-6:6),pdf(-6:6)
11 integer iq0,iqc,iqb,nf,nf0,qnerr,NFLGET,iflag,ix,i,IQFROMQ
13 integer nset,iset,isetlast
15 real*8 xmin,xmax,qmin,qmax,S
16 save iq0,iqc,iqb,nf0,mc2,mb2,tc2,tb2,mt2
17 save nx,xmin,xmax,nq,qmin,qmax,gridname
20 if (iset.ne.isetlast) then
27 pdf(0)=QPDFXQ('GLUON' ,x,Q2,iflag)
28 singlet=QPDFXQ('SINGLET',x,Q2,iflag)
29 dm= QPDFXQ('DM',x,Q2,IFLAG)
30 um= QPDFXQ('UM',x,Q2,IFLAG)
31 dp= QPDFXQ('DP',x,Q2,IFLAG)
32 up= QPDFXQ('UP',x,Q2,IFLAG)
33 sp= QPDFXQ('SP',x,Q2,IFLAG)
34 ub=0.5d0*(up-um+singlet/dble(nf))
35 db=0.5d0*(dp-dm+singlet/dble(nf))
36 sb=0.5d0*(sp+singlet/dble(nf))
52 entry QCDNUM3alfa(alfas,Q)
55 alfas=QALFAS(Q2,Qlam,nf,iflag)
58 entry QCDNUM3read(nset)
61 c gridname='large.grid'
70 read(1,*) gridname,nx,xmin,xmax,nq,qmin,qmax
75 entry QCDNUM3init(nset,Eorder,Q2fit)
77 call QNISET('ORDER',Eorder+1)
79 call grqdef(nq,qmin,qmax)
89 CALL QNLSET('W1ANA',.TRUE.)
90 CALL QNLSET('W2NUM',.TRUE.)
91 CALL QNLSET('W2STF',.FALSE.)
92 call qthres(1d10,2d10)
93 if (index(gridname,'none').eq.1) then
97 open(unit=2,status='old',file=gridname,
98 . form='unformatted',err=1)
99 call QNREAD(2,1,qnerr)
102 write(*,*) 'Grid file problem: ',gridname
104 write(*,*) 'Grid file does not exist'
105 write(*,*) 'Calculating and creating grid file'
107 open(unit=2,status='unknown',file=gridname,
108 . form='unformatted')
112 write(*,*) 'Existing grid file is inconsistent'
114 . write(*,*) 'Defined grid different'
116 . write(*,*) 'Heavy quark weight table different'
118 . write(*,*) 'Charm mass different'
120 . write(*,*) 'Bottom mass different'
127 entry QCDNUM3pdf(nset)
128 c print *,'entering QCDNUMpdf',nset
129 call GetAlfas(nset,alfas0,scale0)
130 c print *,alfas0,scale0
132 CALL QNRSET('ALFAS',alfas0)
133 CALL QNRSET('ALFQ0',Q2)
136 c print *,'calling parmPDF',ix
137 call parmPDF(nset,xx,f)
138 c if(ix.lt.6) print *,nset,xx,f
141 singlet=singlet+f(i)+f(-i)
147 dp=f(1)+f(-1)-singlet/dble(nf0)
148 up=f(2)+f(-2)-singlet/dble(nf0)
149 sp=f(3)+f(-3)-singlet/dble(nf0)
150 CALL QNPSET('SINGLET',ix,iq0,singlet)
151 CALL QNPSET('GLUON',ix,iq0,gl)
152 CALL QNPSET('DM',ix,iq0,DM)
153 CALL QNPSET('UM',ix,iq0,UM)
154 CALL QNPSET('DP',ix,iq0,DP)
155 CALL QNPSET('UP',ix,iq0,UP)
156 CALL QNPSET('SP',ix,iq0,SP)
158 CALL EVOLSG(iq0,1,nq)
159 CALL EVOLNM('DM',iq0,1,nq)
160 CALL EVOLNM('UM',iq0,1,nq)
162 c CALL EVPLUS('DP',iq0,1,nq)
163 c CALL EVPLUS('UP',iq0,1,nq)
164 c CALL EVPLUS('SP',iq0,1,nq)
165 CALL EVOLNP('DP',iq0,1,nq)
166 CALL EVOLNP('UP',iq0,1,nq)
167 CALL EVOLNP('SP',iq0,1,nq)
170 call save_pdfqcd(iset)