The TELEMAC-MASCARET system  trunk
filp12.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE filp12
3 ! *****************
4 !
5  &(f,c,xsom,ysom,nsom,x,y,npoin,nelem,nelmax,ikle)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief INITIALISES A FUNCTION TO A CONSTANT VALUE
12 !+ INSIDE OF A POLYGON.
13 !
14 !history C MOULIN (LNH)
15 !+ 06/12/94
16 !+ V5P1
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 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32 !| C |-->| THE CONSTANT VALUE
33 !| F |<->| THE FUNCTION
34 !| IKLE |-->| CONNECTIVITY TABLE.
35 !| NELEM |-->| NUMBER OF ELEMENTS
36 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
37 !| NPOIN |-->| NUMBER OF POINTS IN THE MESH
38 !| NSOM |-->| NUMBER OF VERTICES IN THE POLYGON
39 !| X |-->| ABSCISSAE OF POINTS IN THE MESH
40 !| XSOM |-->| ABSCISSAE OF POINTS IN THE POLYGON
41 !| Y |-->| ORDINATES OF POINTS IN THE MESH
42 !| YSOM |-->| ORDINATES OF POINTS IN THE POLYGON
43 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44 !
45  USE bief, ex_filp12 => filp12
46 !
48  IMPLICIT NONE
49 !
50 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
51 !
52  INTEGER, INTENT(IN) :: NSOM , NELEM , NELMAX , NPOIN
53  DOUBLE PRECISION, INTENT(INOUT) :: F(*)
54  DOUBLE PRECISION, INTENT(IN) :: X(*) , Y(*)
55  DOUBLE PRECISION, INTENT(IN) :: XSOM(nsom) , YSOM(nsom) , C
56  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
57 !
58 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59 !
60  INTEGER I , I1 , I2 , I3 , IELEM
61 !
62  DOUBLE PRECISION XX , YY
63 !
64 !-----------------------------------------------------------------------
65 !
66  DO i = 1 , npoin
67 !
68  IF(inpoly(x(i),y(i),xsom,ysom,nsom)) f(i) = c
69 !
70  ENDDO ! I
71 !
72  DO ielem = 1 , nelem
73 !
74  i1 = ikle(ielem,1)
75  i2 = ikle(ielem,2)
76  i3 = ikle(ielem,3)
77  xx = 0.3333333333d0 * ( x(i1)+x(i2)+x(i3) )
78  yy = 0.3333333333d0 * ( y(i1)+y(i2)+y(i3) )
79  IF(inpoly(xx,yy,xsom,ysom,nsom)) f(ielem+npoin) = c
80 !
81  ENDDO ! IELEM
82 !
83 !-----------------------------------------------------------------------
84 !
85  RETURN
86  END
subroutine filp12(F, C, XSOM, YSOM, NSOM, X, Y, NPOIN, NELEM, NELMAX, IKLE)
Definition: filp12.f:7
logical function inpoly(X, Y, XSOM, YSOM, NSOM)
Definition: inpoly.f:7
Definition: bief.f:3