The TELEMAC-MASCARET system  trunk
qgauss.f
Go to the documentation of this file.
1 ! ***************
2  FUNCTION qgauss
3 ! ***************
4 !
5  &( b , n , a , xm )
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P1 23/06/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE INTEGRAL (0 TO INFINITY) OF THE FUNCTION
12 !+ GIVEN BY 'FONCRO', USING GAUSS QUADRATURES.
13 !
14 !history F. BECQ (EDF/DER/LNH)
15 !+ 26/03/96
16 !+ V1P1
17 !+
18 !
19 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
20 !+ 13/07/2010
21 !+ V6P0
22 !+ Translation of French comments within the FORTRAN sources into
23 !+ English comments
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 21/08/2010
27 !+ V6P0
28 !+ Creation of DOXYGEN tags for automated documentation and
29 !+ cross-referencing of the FORTRAN sources
30 !
31 !history G.MATTAROLO (EDF - LNHE)
32 !+ 23/06/2011
33 !+ V6P1
34 !+ Translation of French names of the variables in argument
35 !
36 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 !| A |-->| PARAMETER A OF THE FUNCTION TO BE INTEGRATED
38 !| B |-->| PARAMETER B OF THE FUNCTION TO BE INTEGRATED
39 !| N |-->| EXPONENT N OF THE FUNCTION TO BE INTEGRATED
40 !| XM |-->| PARAMETER M OF THE FUNCTION TO BE INTEGRATED
41 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42 !
43  USE interface_tomawac, ex_qgauss => qgauss
44  IMPLICIT NONE
45 !
46 ! VARIABLES IN ARGUMENT
47 ! """""""""""""""""""""
48  INTEGER, INTENT(IN) :: N
49  DOUBLE PRECISION QGAUSS
50  DOUBLE PRECISION, INTENT(IN) :: B , A , XM
51 !
52 ! LOCAL VARIABLES
53 ! """"""""""""""""""
54  INTEGER J , I , NFOIS
55  DOUBLE PRECISION :: XB , XR , DX , DA , SS , W(5)
56  DOUBLE PRECISION :: A1 , A2 , A3 , Y2 , X(5)
57  parameter( x = (/ .1488743389d0,.4333953941d0,.6794095682d0,
58  & .8650633666d0,.9739065285d0 /) )
59  parameter( w = (/ .2955242247d0,.2692667193d0,.2190863625d0,
60  & .1494513491d0,.0666713443d0 /) )
61 !
62  nfois = 1
63 !
64  CALL bornes
65  &( b , n , a , xm , a2 , a3 )
66  qgauss = 0.d0
67  da = (a3-a2)/dble(nfois)
68 !
69  DO i=1,nfois
70  a1 = a2
71  a2 = a2+da
72  xb = 0.5d0*(a1+a2)
73  xr = 0.5d0*(a2-a1)
74  ss = 0.d0
75  DO j=1,5
76  dx = xr*x(j)
77  ss = ss + w(j)*(foncro(xb+dx,b,n,a,xm)
78  & +foncro(xb-dx,b,n,a,xm))
79  ENDDO
80  y2 = xr*ss
81  qgauss = qgauss + y2
82  ENDDO
83 !
84  RETURN
85  END
subroutine bornes(B, N, A, XM, X0, X1)
Definition: bornes.f:7
double precision function foncro(X, B, N, A, XM)
Definition: foncro.f:7
double precision function qgauss(B, N, A, XM)
Definition: qgauss.f:7