The TELEMAC-MASCARET system  trunk
p_dotpair.f
Go to the documentation of this file.
1 ! *********************
2  SUBROUTINE p_dotpair
3 ! *********************
4 !
5  &(npoin,x,y,ifac,pair)
6 !
7 !***********************************************************************
8 ! BIEF V7 24/02/2016
9 !***********************************************************************
10 !
11 !brief SCALAR PRODUCT OF VECTORS X AND Y (SIZE NPOIN)
12 !+ TAKING PARALLELISM INTO ACCOUNT
13 !+ RETURN THE PAIR RESULT AND ERROR
14 !
15 !history R.NHEILI (Univerte de Perpignan, DALI)
16 !+ 24/02/2016
17 !+ V7P3
18 !
19 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 !| FAC |-->| FAC=1/(NUMBER OF NEIGHBOURING SUB-DOMAINS)
21 !| NPOIN |-->| SIZE OF X AND Y
22 !| X |-->| VECTOR
23 !| Y |-->| VECTOR
24 !| PAIR |-->| DOT RESULT AND DOT ERROR
25 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26 !
27  USE bief, ex_p_dotpair => p_dotpair
28 !
30  IMPLICIT NONE
31 !
32 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
33 !
34  INTEGER, INTENT(IN) :: NPOIN
35  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
36  INTEGER, INTENT(IN) :: IFAC(npoin)
37  DOUBLE PRECISION, INTENT(OUT) ::PAIR(2)
38 
39 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
40 !
41  DOUBLE PRECISION :: P,S,H,R,Q
42  DOUBLE PRECISION :: TMP
43  INTEGER I
44 !
45 !-----------------------------------------------------------------------
46 !
47  p=0.d0
48  s=0.d0
49  h=0.d0
50  r=0.d0
51  q=0.d0
52  pair=0.d0
53  IF (npoin .EQ. 0) THEN
54  pair=0.d0
55  RETURN
56  END IF
57 
58  CALL twoprod(x(1),y(1)*ifac(1),p,s)
59 
60  DO i = 2 , npoin
61  CALL twoprod(x(i),y(i)*ifac(i),h,r)
62  tmp = p
63  CALL twosum(tmp,h,p,q)
64  s=s+(q+r)
65  END DO
66  CALL twosum(p,s,pair(1),pair(2))
67 
68 !-----------------------------------------------------------------------
69 !
70  RETURN
71  END
subroutine twoprod(A, B, X, Y)
Definition: twoprod.f:7
subroutine twosum(A, B, X, Y)
Definition: twosum.f:7
subroutine p_dotpair(NPOIN, X, Y, IFAC, PAIR)
Definition: p_dotpair.f:7
Definition: bief.f:3