The TELEMAC-MASCARET system  trunk
cflp11.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE cflp11
3 ! *****************
4 !
5  &(u,v,x,y,ikle,nelem,nelmax,w1)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief COMPUTES THE COURANT NUMBER AT EACH POINT OF THE MESH
12 !+ AND FOR EACH TIMESTEP.
13 !+
14 !+ THE STABILITY CRITERION OF THE DISTRIBUTIVE SCHEME N
15 !+ IS HERE USED TO EVALUATE THE COURANT NUMBER.
16 !
17 !history JMH
18 !+ 17/08/94
19 !+ V5P1
20 !+
21 !
22 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
23 !+ 13/07/2010
24 !+ V6P0
25 !+ Translation of French comments within the FORTRAN sources into
26 !+ English comments
27 !
28 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
29 !+ 21/08/2010
30 !+ V6P0
31 !+ Creation of DOXYGEN tags for automated documentation and
32 !+ cross-referencing of the FORTRAN sources
33 !
34 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35 !| IKLE |-->| CONNECTIVITY TABLE
36 !| NELEM |-->| NUMBER OF ELEMENTS IN THE MESH
37 !| NELMAX |-->| FIRST DIMENSION OF IKLE, MAXIMUM NUMBER OF ELEMENTS
38 !| | | IN THE MESH
39 !| U |-->| VELOCITY ALONG X.
40 !| V |-->| VELOCITY ALONG Y.
41 !| W1 |-->| RESULT IN NON ASSEMBLED FORM
42 !| X |-->| ABSCISSAE OF POINTS GIVEN PER ELEMENT
43 !| Y |-->| ORDINATES OF POINTS GIVEN PER ELEMENT
44 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45 !
47  IMPLICIT NONE
48 !
49 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
50 !
51  INTEGER , INTENT(IN) :: NELEM,NELMAX
52  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
53  DOUBLE PRECISION, INTENT(IN) :: X(nelmax,*),Y(nelmax,*)
54  INTEGER , INTENT(IN) :: IKLE(nelmax,*)
55 ! NO DEFAULT INITIALISATION FOR USER TYPE COMPONENTS ALLOWED
56  DOUBLE PRECISION, INTENT(INOUT) :: W1(nelmax,*)
57 !
58 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59 !
60  INTEGER IELEM
61 !
62  DOUBLE PRECISION U1,U2,U3,V1,V2,V3,USUR2,VSUR2
63  DOUBLE PRECISION SUR6,K1,K2,K3,L12,L13,L21,L23,L31,L32
64  DOUBLE PRECISION X2,X3,Y2,Y3
65 !
66  INTRINSIC max,min
67 !
68 !-----------------------------------------------------------------------
69 !
70  sur6 = 1.d0 / 6.d0
71 !
72 ! LOOP ON THE ELEMENTS
73 !
74  DO ielem = 1, nelem
75 !
76  x2 = x(ielem,2)
77  x3 = x(ielem,3)
78  y2 = y(ielem,2)
79  y3 = y(ielem,3)
80 !
81  u1 = u(ikle(ielem,1))
82  u2 = u(ikle(ielem,2))
83  u3 = u(ikle(ielem,3))
84  v1 = v(ikle(ielem,1))
85  v2 = v(ikle(ielem,2))
86  v3 = v(ikle(ielem,3))
87 !
88  usur2 = (u1+u2+u3)*sur6
89  vsur2 = (v1+v2+v3)*sur6
90 !
91  k1 = usur2 * (y2-y3) - vsur2 * (x2-x3)
92  k2 = usur2 * (y3 ) - vsur2 * (x3 )
93  k3 = usur2 * ( -y2) - vsur2 * ( -x2)
94 !
95  l12 = max( min(k1,-k2) , 0.d0 )
96  l13 = max( min(k1,-k3) , 0.d0 )
97  l21 = max( min(k2,-k1) , 0.d0 )
98  l23 = max( min(k2,-k3) , 0.d0 )
99  l31 = max( min(k3,-k1) , 0.d0 )
100  l32 = max( min(k3,-k2) , 0.d0 )
101 !
102  w1(ielem,1) = l12 + l13
103  w1(ielem,2) = l21 + l23
104  w1(ielem,3) = l31 + l32
105 !
106  ENDDO ! IELEM
107 !
108 !-----------------------------------------------------------------------
109 !
110  RETURN
111  END
subroutine cflp11(U, V, X, Y, IKLE, NELEM, NELMAX, W1)
Definition: cflp11.f:7