The TELEMAC-MASCARET system  trunk
gredel_fdnrst.f
Go to the documentation of this file.
1 ! ***************************
2  SUBROUTINE gredel_fdnrst
3 ! ***************************
4  &(ifrm,ito,x,y,nodenrs,npoin2,ifrm1,itop1)
5 !
6 !***********************************************************************
7 ! PARALLEL V6P0 21/08/2010
8 !***********************************************************************
9 !
10 !brief FINDS THE NEAREST FROM -1 AND TO +1 POINTER.
11 !
12 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
13 !+ 13/07/2010
14 !+ V6P0
15 !+ Translation of French comments within the FORTRAN sources into
16 !+ English comments
17 !
18 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
19 !+ 21/08/2010
20 !+ V6P0
21 !+ Creation of DOXYGEN tags for automated documentation and
22 !+ cross-referencing of the FORTRAN sources
23 !
24 !history LEO POSTMA (DELFT HYDRAULICS)
25 !+ 03/04/2007
26 !+ V5P7
27 !+
28 !
29 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30 !| IFRM |-->|
31 !| IFRM1 |---|
32 !| ITO |-->|
33 !| ITOP1 |---|
34 !| NODENRS |-->| IF > 0 : NODE NUMBER
35 !| | | IF
36 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D
37 !| NPTFR |-->| NOMBRE DE POINTS FRONTIERES
38 !| X,Y |-->| NODE COORDINATES
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !
42  IMPLICIT NONE
43 !
44 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
45 !
46  INTEGER, INTENT(IN) :: IFRM,ITO,NPOIN2
47  INTEGER, INTENT(IN) :: NODENRS(npoin2)
48  INTEGER, INTENT(INOUT) :: IFRM1,ITOP1
49  REAL, INTENT(IN) :: X(npoin2), Y(npoin2)
50 !
51 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
52 !
53  INTEGER IPOIN
54  REAL XFRM1,XTOP1,YFRM1,YTOP1,DISFRM,DISTO,DX,DY
55 !
56 !-----------------------------------------------------------------------
57 !
58  xfrm1 = x(ifrm)
59  yfrm1 = y(ifrm)
60  xtop1 = x(ito )
61  ytop1 = y(ito )
62  disfrm = xfrm1-xtop1
63  xfrm1 = xfrm1 + disfrm
64  xtop1 = xtop1 - disfrm
65  disfrm = yfrm1-ytop1
66  yfrm1 = yfrm1 + disfrm
67  ytop1 = ytop1 - disfrm
68 !
69  dx = xfrm1-x(1)
70  dy = yfrm1-y(1)
71  disfrm = dx*dx + dy*dy
72  dx = xtop1-x(1)
73  dy = ytop1-y(1)
74  disto = dx*dx + dy*dy
75  ifrm1 = 1
76  itop1 = 1
77  DO ipoin = 2, npoin2
78  dx = xfrm1-x(ipoin)
79  dy = yfrm1-y(ipoin)
80  dx = dx*dx + dy*dy
81  IF(dx.LT.disfrm) THEN
82  disfrm = dx
83  ifrm1 = ipoin
84  ENDIF
85  dx = xtop1-x(ipoin)
86  dy = ytop1-y(ipoin)
87  dx = dx*dx + dy*dy
88  IF(dx.LT.disto) THEN
89  disto = dx
90  itop1 = ipoin
91  ENDIF
92  ENDDO
93  ifrm1 = nodenrs(ifrm1)
94  itop1 = nodenrs(itop1)
95 !
96 !-----------------------------------------------------------------------
97 !
98  RETURN
99  END SUBROUTINE gredel_fdnrst
100 
subroutine gredel_fdnrst(IFRM, ITO, X, Y, NODENRS, NPOIN2, IFRM1, ITOP1)
Definition: gredel_fdnrst.f:6