The TELEMAC-MASCARET system  trunk
gradp.f
Go to the documentation of this file.
1 ! ****************
2  SUBROUTINE gradp
3 ! ****************
4 !
5  &(ns,nt,ikle,airt,x,y,dpx,dpy)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief COMPUTES THE BASES FUNCTIONS GRADIENTS.
12 !
13 !history INRIA
14 !+
15 !+ V5P4
16 !+
17 !
18 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
19 !+ 13/07/2010
20 !+ V6P0
21 !+ Translation of French comments within the FORTRAN sources into
22 !+ English comments
23 !
24 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
25 !+ 21/08/2010
26 !+ V6P0
27 !+ Creation of DOXYGEN tags for automated documentation and
28 !+ cross-referencing of the FORTRAN sources
29 !
30 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31 !| AIRT |-->| AREA OF TRIANGLES
32 !| DPX |<--| GRADIENT OF BASES FUNCTIONS WITH RESPECT TO X
33 !| DPY |<--| GRADIENT OF BASES FUNCTIONS WITH RESPECT TO Y
34 !| IKLE |-->| CONNECTIVITY TABLE
35 !| NS |-->| NUMBER OF POINTS IN THE MESH
36 !| NT |-->| NUMBER OF TRIANGLES IN THE MESH
37 !| X |-->| ABSCISSAE OF NODES IN THE MESH
38 !| Y |-->| ORDINATES OF NODES IN THE MESH
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !
42  IMPLICIT NONE
43 !
44 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
45 !
46  INTEGER, INTENT(IN) :: NS,NT,IKLE(nt,3)
47  DOUBLE PRECISION, INTENT(IN) :: X(ns),Y(ns),AIRT(nt)
48  DOUBLE PRECISION, INTENT(OUT) :: DPX(3,nt),DPY(3,nt)
49 !
50 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
51 !
52  INTEGER JT,NUBO1,NUBO2,NUBO3
53  DOUBLE PRECISION AIRJI,X1,X2,X3,Y1,Y2,Y3
54 !
55 !-----------------------------------------------------------------------
56 !
57  DO jt=1,nt
58 !
59  nubo1 = ikle(jt,1)
60  nubo2 = ikle(jt,2)
61  nubo3 = ikle(jt,3)
62 !
63  airji = 0.5d0/airt(jt)
64 !
65 ! COMPUTES THE P1-GRADIENTS
66 !
67  x1 = x(nubo1)
68  y1 = y(nubo1)
69  x2 = x(nubo2)
70  y2 = y(nubo2)
71  x3 = x(nubo3)
72  y3 = y(nubo3)
73 !
74  dpx(1,jt) = airji*(y2-y3)
75  dpx(2,jt) = airji*(y3-y1)
76  dpx(3,jt) = airji*(y1-y2)
77  dpy(1,jt) = airji*(x3-x2)
78  dpy(2,jt) = airji*(x1-x3)
79  dpy(3,jt) = airji*(x2-x1)
80 !
81  ENDDO
82 !
83 !-----------------------------------------------------------------------
84 !
85  RETURN
86  END
subroutine gradp(NS, NT, IKLE, AIRT, X, Y, DPX, DPY)
Definition: gradp.f:7