subroutine mrs99dis(x,q,mode,upv,dnv,usea,dsea,str,chm,bot,glu) C****************************************************************C C DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS C C DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS DIS C C****************************************************************C C C C This is a package for the new **corrected** MRST parton C C distributions, in the DIS scheme. The format is similar C C to the previous (1998) MRST series. C C C C NOTE: 6 new sets are added here, corresponding to shifting C C the small x HERA data up and down by 2.5%, and by varying C C the charm and strange distributions. C C C C As before, x times the parton distribution is returned, C C q is the scale in GeV, DIS factorization is assumed, C C and Lambda(MSbar,nf=4) is given below for each set. C C C C NAMING SCHEME: C C C C mode set comment L(4)/MeV a_s(M_Z) grid#1 C C ---- --- ------- -------- ------- ------ C C C C 1 COR01DIS central gluon, a_s 300 0.1175 0.00643 C C 2 COR02DIS higher gluon 300 0.1175 0.00619 C C 3 COR03DIS lower gluon 300 0.1175 0.00515 C C 4 COR04DIS lower a_s 229 0.1125 0.00697 C C 5 COR05DIS higher a_s 383 0.1225 0.00510 C C 6 COR06DIS quarks up 303.3 0.1178 0.00615 C C 7 COR07DIS quarks down 290.3 0.1171 0.00717 C C 8 COR08DIS strange up 300 0.1175 0.00643 C C 9 COR09DIS strange down 300 0.1175 0.00643 C C 10 C0R10DIS charm up 300 0.1175 0.00644 C C 11 COR11DIS charm down 300 0.1175 0.00643 C C C C The corresponding grid files are called cor01dis.dat etc. C C C C The reference is: C C A.D. Martin, R.G. Roberts, W.J. Stirling, R.S Thorne C C Univ. Durham preprint DTP/99/64, hep-ph/9907231 (1999) C C C C Comments to : W.J.Stirling@durham.ac.uk C C C C C C****************************************************************C implicit real*8(a-h,o-z) data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ q2=q*q if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99 if(x.lt.xmin.or.x.gt.xmax) print 98 if(mode.eq.1) then call mrs991(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.2) then call mrs992(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.3) then call mrs993(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.4) then call mrs994(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.5) then call mrs995(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.6) then call mrs996(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.7) then call mrs997(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.8) then call mrs998(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.9) then call mrs999(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.10) then call mrs9910(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) elseif(mode.eq.11) then call mrs9911(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) endif 99 format(' WARNING: Q^2 VALUE IS OUT OF RANGE ') 98 format(' WARNING: X VALUE IS OUT OF RANGE ') return end subroutine mrs991(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor01dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs992(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor02dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs993(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor03dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs994(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor04dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs995(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor05dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs996(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor06dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs997(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor07dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs998(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor08dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs999(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor09dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs9910(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor10dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end subroutine mrs9911(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) implicit real*8(a-h,o-z) parameter(nx=49,nq=37,ntenth=23,np=8) real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np) data xx/1d-5,2d-5,4d-5,6d-5,8d-5, . 1d-4,2d-4,4d-4,6d-4,8d-4, . 1d-3,2d-3,4d-3,6d-3,8d-3, . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, . .8d0,.9d0,1d0/ data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, . 1.8d6,3.2d6,5.6d6,1d7/ data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ data n0/3,4,5,9,9,9,9,9/ data init/0/ save xsave=x q2save=qsq if(init.ne.0) goto 10 open(unit=1,file='cor11dis.dat',status='old') do 20 n=1,nx-1 do 20 m=1,nq read(1,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m), . f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m) c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea do 25 i=1,np 25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i) 20 continue do 31 j=1,ntenth-1 xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth) do 31 i=1,8 if(i.eq.5.or.i.eq.7) goto 31 do 30 k=1,nq 30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k) 31 continue 50 format(8f10.5) do 40 i=1,np do 40 m=1,nq 40 f(i,nx,m)=0d0 init=1 10 continue if(x.lt.xmin) x=xmin if(x.gt.xmax) x=xmax if(qsq.lt.qsqmin) qsq=qsqmin if(qsq.gt.qsqmax) qsq=qsqmax xxx=x if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth) n=0 70 n=n+1 if(xxx.gt.xx(n+1)) goto 70 a=(xxx-xx(n))/(xx(n+1)-xx(n)) m=0 80 m=m+1 if(qsq.gt.qq(m+1)) goto 80 b=(qsq-qq(m))/(qq(m+1)-qq(m)) do 60 i=1,np g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1) . + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1) if(n.ge.ntenth) goto 65 if(i.eq.5.or.i.eq.7) goto 65 fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1) g(i)=fac*10d0**(g(i)-fac) 65 continue g(i)=g(i)*(1d0-x)**n0(i) 60 continue upv=g(1) dnv=g(2) usea=g(4) dsea=g(8) str=g(6) chm=g(5) glu=g(3) bot=g(7) x=xsave qsq=q2save return end