Advertisement
Guest User

Untitled

a guest
Oct 10th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Fortran 18.43 KB | None | 0 0
  1. !******************************************************************************
  2. !
  3. !.....Calculation of the Q^2 distribution and total cross
  4. !     section of the process
  5. !
  6. !       \nu_\ell + 12C --> \ell^- + X
  7. !
  8. !     in the CCQE, resonance production and DIS channels.
  9. !
  10. !     ilept = 1,2,3 for muon, electron or tau neutrino
  11. !     ig selects the vector form factors (see below)
  12. !
  13. !     Omar Benhar
  14. !     Last revised: Roma, September 2018
  15. !
  16. !******************************************************************************
  17. !
  18.       include 'd2sigma_Ar.f'
  19. !
  20.       implicit none
  21. !
  22.       integer istop,nnn,nmax,nevent,n_gauss
  23. !
  24.       parameter( nnn = 500000 , nmax = 500 , nevent = 50 )
  25.       parameter( n_gauss =  128 )
  26. !
  27.       real*8 event(nevent),x(nnn),y(nnn),z(nnn),omega(n_gauss)
  28.      $      ,T_lept(n_gauss),Q2(nmax),distQ2(nmax),F_int(n_gauss)
  29.      $      ,weight(n_gauss)
  30. !
  31.       real*8 zero,xmp,xmn,xm,xmA,xmAm1,xmR_0,xm_lept,EA,ER,E_min,eps
  32.      $      ,pi,E_nu,time_0,time_1,time_2,h_Q2,E_lept,p_lept
  33.      $      ,omega_min,omega_max,dsigma,aux,JD,cos_theta_b,small
  34.      $      ,k_F,sigma_tot,h_Q2_1,h_Q2_2,Q2_min,Q2_max,Q2_mid
  35.      $      ,dsigma_QE,dsigma_RES,dsigma_DIS,xmpi,gg,amu
  36. !
  37.       integer nsamples,ig,ilept,nestr,iev,indev,i,j,k
  38.      $       ,ip,np,n_Q2,n_Q2_1,n_Q2_2,n_last,n_omega
  39. !
  40.       common / config1 / nsamples
  41.       common / config2 / x,y,z
  42. !
  43.       common / constants / zero,xmp,xmn,xm,xmA,xmAm1,xmR_0,xm_lept
  44.      $                    ,EA,ER,E_min,eps,k_F
  45. !
  46.       common / flags / ig,ilept
  47. c
  48.       open (3,file='Q2dist.in')
  49.       open (7,file='evgen_argon_n.tape')
  50.       open (8,file='Q2dist.out')
  51.       open (9,file='sigma_tot.out')
  52. c
  53.       call cpu_time(time_0)
  54. c
  55. c.....set constants [energies are in GeV]
  56. c
  57.       pi = 4.*atan(1.)
  58.       zero = 0.
  59.       small = 1.e-4
  60.       amu = 930.4940954
  61.       xmp = .938272081  ! proton mass [GeV]
  62.       xmn = .939565413  ! neutron mass [GeV]
  63.       xmpi = .13957018  ! pion mass [GeV]
  64.       xm = .5*(xmp + xmn)   ! mass of isoscalar nucleon [GeV]
  65.       xmA = 39.962      ! mass of 40Ar nucleus [GeV]
  66.       xmAm1 = 38.964*amu    ! mass of 39Ar nucleus [GeV]
  67. c     xmAm1 = 38.968*amu    ! mass of 39Cl nucleus [GeV]
  68.       xmR_0 = xmA - xmn
  69.       EA = 18.*xmp + 22.*xmn - xmA  ! carbon binding energy [GeV]
  70.       ER = 18.*xmp + 21.*xmn - xmAm1    ! chlorine binding energy [GeV]
  71.       E_min = EA - ER
  72.       k_F = .251    ! Ar Fermi momentum. TAken from Ankowski & Sobczyk
  73. c
  74.       n_omega = 128
  75. c     n_omega = 128
  76.       omega_min = zero
  77. c
  78. c.....read ig, to select the vector form factors,
  79. c     ilept, to select neutrino flavour and
  80. c     and the width of the delta-function representation [GeV]
  81. c
  82. c     ig = 1  Dipole parametrization
  83. c     ig = 2  Kelly's parametrization [PRC 70, 068282 (2004)]
  84. c     ig = 3  BBBA parametrization [NPB Proc. Suppl., 159, 127 (2006)]
  85. c
  86. c     ilept = 1 muon neutrino
  87. c     ilept = 2 electron neutrino
  88. c     ilept = 3 tau neutrino
  89. c
  90.       read(3,*)ig
  91.       read(3,*)ilept
  92.       read(3,*)eps
  93. c
  94. c.....set mass of charged lepton
  95. c
  96.       if(ilept.eq.1)then
  97.       xm_lept = 105.6583745/1000.               ! muon mass [GeV]
  98.       else if(ilept.eq.2)then
  99.       xm_lept = .5109989461/1000.               ! electron mass [GeV]
  100.       else if(ilept.eq.3)then
  101.       xm_lept = 1776.86/1000.                   ! tau mass [GeV]
  102.       end if
  103. c
  104.       write(6,*)'               '
  105.       if(ilept.eq.1)then
  106.       write(6,*)' *** muon neutrino beam '
  107.       else if(ilept.eq.2)then
  108.       write(6,*)' *** electron neutrino beam '
  109.       else if(ilept.eq.3)then
  110.       write(6,*)' *** tau neutrino beam '
  111.       end if
  112.       write(6,*)'     charged lepton mass = ',xm_lept,' GeV '
  113.       write(6,*)'               '
  114.       if(ig.eq.1)then
  115.       write(6,*)'     dipole fit of vector form factors'
  116.       else if(ig.eq.2)then
  117.       write(6,*)'     Kelly fit of vector form factors '
  118.       else if(ig.eq.3)then
  119.       write(6,*)'     BBBA fit of vector form factors  '
  120.       end if
  121.       write(6,*)'               '
  122.       write(6,*)'     width of delta-function [GeV] = ',eps
  123.       write(6,*)'               '
  124. c
  125. c.....read total number of samples from unit 7
  126. c
  127.       read(7,*)nestr
  128.       write(6,*)'     # of samples ',nestr
  129.       write(6,*)'               '
  130. c
  131. c.....read sampled momentum, energy and polar angle from unit 7
  132. c     [energy and momentum in GeV]
  133. c
  134.       do iev = 1,nestr
  135.       read(7,9000)indev,(event(j),j=1,3)
  136.       x(iev) = event(1)
  137.       y(iev) = event(2)
  138.       z(iev) = event(3)
  139.       end do
  140. c
  141. c.....read number of samples to be used in the calculation of the cross
  142. c     section (cannot exceed nestr) from unit 5
  143. c
  144.       read(3,*)nsamples
  145. c
  146.       if(nsamples.gt.nestr)then
  147.       write(6,*)' >>> Error: nsamples > nestr '
  148.       stop
  149.       end if
  150. c
  151. c.....read neutrino energy [GeV]
  152. c
  153.       read(3,*)E_nu
  154.       write(6,*)' *** neutrino energy     = ',E_nu,' GeV '
  155.       write(6,*)'                                        '
  156. c
  157.       call cpu_time(time_1)
  158. c
  159.       write(6,*)'                                          '
  160.       write(6,*)' *** elapsed time ',time_1-time_0,' sec   '
  161. c
  162.       write(6,*)'                                           '
  163.       write(6,*)' *** start calculation of Q^2-distribution '
  164.       write(6,*)'                                           '
  165. c
  166. c.....set Q2 grid [GeV^2]
  167. c
  168. c.....low-Q^2 region
  169. c
  170. c     electron or muon neutrinos: 0 = Q2_min < Q2 < Q2_mid = 40*0.015 = 0.6 GeV^2
  171. c     tau neutrino: 0 = Q2_min < Q2 < Q2_mid = 100*0.02 = 2.0 GeV^2
  172. c
  173.       if(ilept.eq.1.or.ilept.eq.2)then
  174.          Q2_min = zero
  175.          n_Q2_1 = 40
  176.          h_Q2_1 = 0.015
  177.       else if(ilept.eq.3)then
  178.          Q2_min = zero
  179.          n_Q2_1 = 100
  180.          h_Q2_1 = 0.020
  181.       end if
  182. c
  183. !     write(6,*)E_nu,xm_lept,Q2_min
  184. c
  185. c.....high-Q^2 region: Q2_mid < Q2 < Q2_max
  186. c
  187.       Q2_mid = Q2_min + n_Q2_1*h_Q2_1
  188. c
  189. c.....high Q^2 region Q2_mid < Q2 < Q2_max
  190. c
  191. c.....Q2_max modified on April 25, 2018
  192. c
  193.       Q2_max = 4.*E_nu**2 - xm_lept**2
  194. c
  195.       if(Q2_max.gt.5.)then
  196.       Q2_max = 5.
  197.       end if
  198. c
  199.       n_Q2_2 = 100
  200.       h_Q2_2 = (Q2_max - Q2_mid)/n_Q2_2
  201.       if(h_Q2_2.le.h_Q2_1)then
  202.       h_Q2_2 = h_Q2_1
  203.       end if
  204.       n_Q2 = n_Q2_1 + n_Q2_2
  205. c
  206.       write(6,*)' >>>>> Q2_min h_Q2_1 n_Q2_1 ',Q2_min,h_Q2_1,n_Q2_1
  207.       write(6,*)' >>>>> Q2_mid Q2_max h_Q2_2 n_Q2_2 '
  208.      $                 ,Q2_mid,Q2_max,h_Q2_2,n_Q2_2
  209. c
  210.       do j = 1,n_Q2
  211.       if(j.le.n_Q2_1)then
  212.       Q2(j) = Q2_min + (j - 0.5)*h_Q2_1
  213.       else
  214.       Q2(j) = Q2(n_Q2_1) + (j - n_Q2_1 - 0.5)*h_Q2_2
  215.       end if
  216.       end do
  217. c
  218. c     write(56,6556)(j,Q2(j),j=1,n_Q2)
  219. c6556 format(i5,e15.5)
  220. c     write(6,*)' enter istop...'
  221. c     read(5,*)istop
  222. c     if(istop.gt.0)stop
  223. c
  224. c.....calculation of Q2 distribution [10^-38 cm^2/GeV^2]
  225. c
  226.       do j = 1,n_Q2             ! start Q2 loop
  227.       distQ2(j) = zero
  228. c
  229. c.....set omega grid [GeV]
  230. c
  231.       gg = ( Q2(j) + xm_lept**2 )/2./E_nu
  232.       omega_max = E_nu - gg/2. - xm_lept**2/2./gg
  233. c     write(6,*)' +++++ ',E_nu,Q2(j),omega_max
  234. c     if(j.eq.1)then
  235. c     n_omega = 4
  236. c     end if
  237.       call dsetgauss(omega_min,omega_max,n_omega,omega,weight)
  238. c
  239. c     if(j.eq.1)then
  240. c     write(6,6226)(k,omega(k),k=1,n_omega)
  241. c6226 format(i5,e15.5)
  242. c     end if
  243. c
  244.          do k = 1,n_omega       ! start omega loop
  245. c
  246.          T_lept(k) = E_nu - omega(k) - xm_lept
  247.          E_lept = T_lept(k) + xm_lept
  248.          p_lept = sqrt(E_lept**2 - xm_lept**2)
  249.          JD = 2.*E_nu*p_lept
  250.          cos_theta_b = ( 2.*E_nu*E_lept - Q2(j) - xm_lept**2 )/JD
  251. c
  252.             if(cos_theta_b.ge.-1..and.cos_theta_b.le.1.)then
  253. c           write(18,1818)Q2(j),omega(k)
  254. c    $                   ,dsigma(E_nu,cos_theta_b,omega(k))
  255. c1818       format(3e25.12)
  256.             F_int(k) = 2.*pi*dsigma(E_nu,cos_theta_b,omega(k))/JD
  257.             else
  258. c           write(28,1818)Q2(j),T_lept(k)
  259. c    $           ,dsigma(E_nu,cos_theta_b,omega(k))
  260.             F_int(k) = zero
  261.             end if
  262. c
  263.          distQ2(j) = distQ2(j)
  264.      $             + F_int(k)*weight(k)
  265. c
  266.          end do             ! end omega loop
  267. c
  268.       write(6,*)j,Q2(j),distQ2(j)
  269.       if(j.gt.n_Q2_1.and.j.lt.n_Q2.and.distQ2(j).lt.small)then
  270.       n_last = j-1
  271.       go to 1000
  272.       else
  273.       n_last = j
  274.       endif
  275. c
  276.       end do                ! end Q2 loop
  277. c
  278.  1000 continue
  279. c
  280. c.....print Q2 distribution
  281. c
  282. c     write(6,6767)(Q2(j),distQ2(j),j=1,n_last)
  283.       write(8,6767)(Q2(j),distQ2(j),j=1,n_last)
  284. c
  285. c.....calculation of total cross section [10^-38 cm^2]
  286. c
  287.       sigma_tot = zero
  288.       do i = 1,n_last
  289. c     do i = 2,n_last
  290.       if(i.le.n_Q2_1)then
  291.       h_Q2 = h_Q2_1
  292.       else
  293.       h_Q2 = h_Q2_2
  294.       end if
  295.       sigma_tot = sigma_tot + distQ2(i)*h_Q2
  296.       end do
  297. c
  298.       write(6,*)'                                        '
  299.       write(6,*)' *** E_nu [Gev] sigma_tot [10^-38 cm^2] '
  300.      $          ,E_nu,sigma_tot
  301.       write(6,*)'     sigma_tot/E_nu [10^-38 cm^2/GeV] ',sigma_tot/E_nu
  302.       write(9,7000)E_nu,sigma_tot,sigma_tot/E_nu
  303. c
  304.       call cpu_time(time_2)
  305. c
  306.       write(6,*)'                                          '
  307.       write(6,*)' *** elapsed time ',time_2-time_1,' sec '
  308. c
  309.       stop
  310. c
  311.  9000 format(i8,3e15.5)
  312.  1212 format(i8,2e15.5)
  313.  6767 format(2e16.5)
  314.  7000 format(3e16.5)
  315. c
  316.       end
  317. c
  318. c******************************************************************************
  319. c
  320. c     Returns abscissas and weights for gaussian integration
  321. c     works with n=4,6,8,10,16,20,24,32,64,128
  322. c
  323.       subroutine dsetgauss(a,b,n,x,w)
  324.       implicit none
  325.       integer i,n,nm,kiplus,kiminus
  326.       real*8 a,b,gauss4(4),gauss6(6),gauss8(8),work(256)
  327.       real*8 gauss10(10),gauss16(16),gauss20(20)
  328.       real*8 gauss24(24),gauss32(32),gauss64(64),gauss128(128)
  329.       real*8 x(128),w(128),xuni(128),wuni(128)
  330.       data gauss4/0.339981043584856d0,0.652145154862546d0,
  331.      #0.861136311594053d0,0.347854845137454d0/
  332.       data gauss6/0.238619186083197d0,0.467913934572691,
  333.      #0.661209386466265d0,0.360761573048139,
  334.      #0.932469514203152d0,0.171324492379170d0/
  335.       data gauss8/0.183434642495650d0,0.362683783378362d0,
  336.      #0.525532409916329d0,0.313706645877887d0,
  337.      #0.796666477413627d0,0.222381034453374d0,
  338.      #0.960289856497536d0,0.101228536290376d0/
  339.       data gauss10/0.148874338981631d0,0.295524224714753d0,
  340.      #0.433395394129247d0,0.269266719309996d0,
  341.      #0.679409568299024d0,0.219086362515982d0,
  342.      #0.865063366688985d0,0.149451349150581d0,
  343.      #0.973906528517172d0,0.066671344308688d0/
  344.       data gauss16/0.095012509837637d0,0.189450610455068d0,
  345.      #0.281603550779258d0,0.182603415044923d0,
  346.      #0.458016777657227d0,0.169156519395002d0,
  347.      #0.617876244402643d0,0.149595988816576d0,
  348.      #0.755404408355003d0,0.124628971255533d0,
  349.      #0.865631202387831d0,0.095158511682492d0,
  350.      #0.944575023073232d0,0.062253523938647d0,
  351.      #0.989400934991649d0,0.027152459411754d0/
  352.       data gauss20/0.076526521133497d0,0.152753387130725d0,
  353.      #0.227785851141645d0,0.149172986472603d0,
  354.      #0.373706088715419d0,0.142096109318382d0,
  355.      #0.510867001950827d0,0.131688638449176d0,
  356.      #0.636053680726515d0,0.118194531961518d0,
  357.      #0.746331906460150d0,0.101930119817240d0,
  358.      #0.839116971822218d0,0.083276741576704d0,
  359.      #0.912234428251325d0,0.062672048334109d0,
  360.      #0.963971927277913d0,0.040601429800386d0,
  361.      #0.993128599185094d0,0.017614007139152d0/
  362.       data gauss24/0.064056892862605d0,0.127938195346752d0,
  363.      #0.191118867473616d0,0.125837456346828d0,
  364.      #0.315042679696163d0,0.121670472927803d0,
  365.      #0.433793507626045d0,0.115505668053725d0,
  366.      #0.545421471388839d0,0.107444270115965d0,
  367.      #0.648093651936975d0,0.097618652104113d0,
  368.      #0.740124191578554d0,0.086190161531953d0,
  369.      #0.820001985973902d0,0.073346481411080d0,
  370.      #0.886415527004401d0,0.059298584915436d0,
  371.      #0.938274552002732d0,0.044277438817419d0,
  372.      #0.974728555971309d0,0.028531388628933d0,
  373.      #0.995187219997021d0,0.012341229799987d0/
  374.       data gauss32/0.048307665687738d0,0.096540088514727d0,
  375.      #0.144471961582796d0,0.095638720079274d0,
  376.      #0.239287362252137d0,0.093844399080804d0,
  377.      #0.331868602282127d0,0.091173878695763d0,
  378.      #0.421351276130635d0,0.087652093004403d0,
  379.      #0.506899908932229d0,0.083311924226946d0,
  380.      #0.587715757240762d0,0.078193895787070d0,
  381.      #0.663044266930215d0,0.072345794108848d0,
  382.      #0.732182118740289d0,0.065822222776361d0,
  383.      #0.794483795967942d0,0.058684093478535d0,
  384.      #0.849367613732569d0,0.050998059262376d0,
  385.      #0.896321155766052d0,0.042835898022226d0,
  386.      #0.934906075937739d0,0.034273862913021d0,
  387.      #0.964762255587506d0,0.025392065309262d0,
  388.      #0.985611511545268d0,0.016274394730905d0,
  389.      #0.997263861849481d0,0.007018610009470d0/
  390.       data gauss64/0.02435029266342d0,0.04869095700914d0,
  391.      &0.07299312178780d0,0.04857546744150d0,
  392.      &0.12146281929612d0,0.04834476223477d0,
  393.      &0.16964442042399d0,0.04799938859631d0,
  394.      &0.21742364374001d0,0.04754016571443d0,
  395.      &0.26468716220877d0,0.04696818281529d0,
  396.      &0.31132287199021d0,0.04628479657947d0,
  397.      &0.35722015833767d0,0.04549162792405d0,
  398.      &0.40227015796399d0,0.04459055815801d0,
  399.      &0.44636601725346d0,0.04358372451999d0,
  400.      &0.48940314570705d0,0.04247351510908d0,
  401.      &0.53127946401989d0,0.04126256322055d0,
  402.      &0.57189564620263d0,0.03995374110007d0,
  403.      &0.61115535517239d0,0.03855015317862d0,
  404.      &0.64896547125466d0,0.03705512854024d0,
  405.      &0.68523631305423d0,0.03547221325688d0,
  406.      &0.71988185017161d0,0.03380516183714d0,
  407.      &0.75281990726053d0,0.03205792835485d0,
  408.      &0.78397235894334d0,0.03023465707240d0,
  409.      &0.81326531512280d0,0.02833967261426d0,
  410.      &0.84062929625258d0,0.02637746971505d0,
  411.      &0.86599939815409d0,0.02435270256871d0,
  412.      &0.88931544599511d0,0.02227017380838d0,
  413.      &0.91052213707850d0,0.02013482315353d0,
  414.      &0.92956917213194d0,0.01795171577570d0,
  415.      &0.94641137485840d0,0.01572603047602d0,
  416.      &0.96100879965205d0,0.01346304789672d0,
  417.      &0.97332682778991d0,0.01116813946013d0,
  418.      &0.98333625388463d0,0.00884675982634d0,
  419.      &0.99101337147674d0,0.00650445796881d0,
  420.      &0.99634011677196d0,0.00414703325659d0,
  421.      &0.99930504173577d0,0.00178327963660d0/
  422.       data gauss128/0.01222369896062d0,0.02444618019626d0,
  423.      &0.03666379096873d0,0.02443156909785d0,
  424.      &0.06108196960414d0,0.02440235563385d0,
  425.      &0.08546364050452d0,0.02435855726469d0,
  426.      &0.10979423112764d0,0.02430020016797d0,
  427.      &0.13405919946119d0,0.02422731922281d0,
  428.      &0.15824404271422d0,0.02413995798902d0,
  429.      &0.18233430598534d0,0.02403816868102d0,
  430.      &0.20631559090208d0,0.02392201213669d0,
  431.      &0.23017356422666d0,0.02379155778099d0,
  432.      &0.25389396642269d0,0.02364688358442d0,
  433.      &0.27746262017790d0,0.02348807601650d0,
  434.      &0.30086543887768d0,0.02331522999401d0,
  435.      &0.32408843502441d0,0.02312844882432d0,
  436.      &0.34711772859764d0,0.02292784414359d0,
  437.      &0.36993955534986d0,0.02271353585011d0,
  438.      &0.39254027503327d0,0.02248565203258d0,
  439.      &0.41490637955227d0,0.02224432889359d0,
  440.      &0.43702450103710d0,0.02198971066819d0,
  441.      &0.45888141983355d0,0.02172194953771d0,
  442.      &0.48046407240417d0,0.02144120553878d0,
  443.      &0.50175955913614d0,0.02114764646770d0,
  444.      &0.52275515205118d0,0.02084144778010d0,
  445.      &0.54343830241281d0,0.02052279248617d0,
  446.      &0.56379664822662d0,0.02019187104117d0,
  447.      &0.58381802162876d0,0.01984888123167d0,
  448.      &0.60349045615855d0,0.01949402805730d0,
  449.      &0.62280219391058d0,0.01912752360826d0,
  450.      &0.64174169256231d0,0.01874958693853d0,
  451.      &0.66029763227265d0,0.01836044393492d0,
  452.      &0.67845892244772d0,0.01796032718214d0,
  453.      &0.69621470836951d0,0.01754947582371d0,
  454.      &0.71355437768359d0,0.01712813541906d0,
  455.      &0.73046756674191d0,0.01669655779679d0,
  456.      &0.74694416679706d0,0.01625500090410d0,
  457.      &0.76297433004409d0,0.01580372865266d0,
  458.      &0.77854847550641d0,0.01534301076088d0,
  459.      &0.79365729476219d0,0.01487312259269d0,
  460.      &0.80829175750791d0,0.01439434499294d0,
  461.      &0.82244311695564d0,0.01390696411961d0,
  462.      &0.83610291506091d0,0.01341127127272d0,
  463.      &0.84926298757797d0,0.01290756272029d0,
  464.      &0.86191546893955d0,0.01239613952122d0,
  465.      &0.87405279695803d0,0.01187730734541d0,
  466.      &0.88566771734540d0,0.01135137629108d0,
  467.      &0.89675328804916d0,0.01081866069944d0,
  468.      &0.90730288340176d0,0.01027947896690d0,
  469.      &0.91731019808096d0,0.00973415335479d0,
  470.      &0.92676925087895d0,0.00918300987166d0,
  471.      &0.93567438827792d0,0.00862637779862d0,
  472.      &0.94402028783022d0,0.00806458989049d0,
  473.      &0.95180196134126d0,0.00749798192563d0,
  474.      &0.95901475785370d0,0.00692689256690d0,
  475.      &0.96565436643197d0,0.00635166316171d0,
  476.      &0.97171681874714d0,0.00577263754287d0,
  477.      &0.97719849146391d0,0.00519016183268d0,
  478.      &0.98209610843572d0,0.00460458425670d0,
  479.      &0.98640674272459d0,0.00401625498374d0,
  480.      &0.99012781849173d0,0.00342552604091d0,
  481.      &0.99325711290021d0,0.00283275147146d0,
  482.      &0.99579275853498d0,0.00223828843096d0,
  483.      &0.99773324862551d0,0.00164250301862d0,
  484.      &0.99907745997738d0,0.00104581267832d0,
  485.      &0.99982488794713d0,0.00044938068609d0/
  486. c
  487.       nm=n/2
  488.  
  489.       if(n.eq.4)then
  490.          do i=1,n
  491.             work(i)=gauss4(i)
  492.          enddo
  493.       else if(n.eq.6)then
  494.          do i=1,n
  495.             work(i)=gauss6(i)
  496.          enddo
  497.       else if(n.eq.8)then
  498.          do i=1,n
  499.             work(i)=gauss8(i)
  500.          enddo
  501.       else if(n.eq.10)then
  502.          do i=1,n
  503.             work(i)=gauss10(i)
  504.          enddo
  505.       else if(n.eq.16)then
  506.          do i=1,n
  507.             work(i)=gauss16(i)
  508.          enddo
  509.       else if(n.eq.20)then
  510.          do i=1,n
  511.             work(i)=gauss20(i)
  512.          enddo
  513.       else if(n.eq.24)then
  514.          do i=1,n
  515.             work(i)=gauss24(i)
  516.          enddo
  517.       else if(n.eq.32)then
  518.          do i=1,n
  519.             work(i)=gauss32(i)
  520.          enddo
  521.       else if(n.eq.64)then
  522.          do i=1,n
  523.             work(i)=gauss64(i)
  524.          enddo
  525.       else if(n.eq.128)then
  526.          do i=1,n
  527.             work(i)=gauss128(i)
  528.          enddo
  529.       else
  530.         write(6,*)
  531.      $  ' >>> Error: wrong number of points for gaussian integration '
  532.          stop
  533.       endif
  534. c
  535.       do 10 i=1,nm
  536.       kiplus=nm+i
  537.       kiminus=nm+1-i
  538.       xuni(kiplus)=work(2*i-1)
  539.       xuni(kiminus)=-work(2*i-1)
  540.       wuni(kiplus)=work(2*i)
  541.       wuni(kiminus)=work(2*i)
  542.  10   continue
  543. c
  544.       do i=1,n
  545.       x(i)=(b-a)/2.d0*xuni(i)+(b+a)/2.
  546.       w(i)=(b-a)/2.d0*wuni(i)
  547.       end do
  548. c
  549.       return
  550.       end
  551. c
  552. c******************************************************************************
  553. c
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement