The TELEMAC-MASCARET system  trunk
dots.f
Go to the documentation of this file.
1 ! ******************************
2  DOUBLE PRECISION FUNCTION dots
3 ! ******************************
4 !
5  &( x , y )
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief SCALAR PRODUCT OF TWO OBJECTS, WHICH CAN BE:
12 !+
13 !+ TWO VECTORS STRUCTURES, OR
14 !+
15 !+ TWO VECTOR BLOCKS STRUCTURES OF IDENTICAL NUMBER AND
16 !+ CHARACTERISTICS.
17 !
18 !warning IF THE VECTORS HAVE A SECOND DIMENSION, IT IS IGNORED
19 !+ FOR THE TIME BEING
20 !
21 !history J-M HERVOUET (LNH)
22 !+ 08/12/94
23 !+ V5P1
24 !+
25 !
26 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
27 !+ 13/07/2010
28 !+ V6P0
29 !+ Translation of French comments within the FORTRAN sources into
30 !+ English comments
31 !
32 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
33 !+ 21/08/2010
34 !+ V6P0
35 !+ Creation of DOXYGEN tags for automated documentation and
36 !+ cross-referencing of the FORTRAN sources
37 !
38 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39 !| X |-->| FIRST VECTOR OR BLOCK
40 !| Y |-->| SECOND VECTOR OR BLOCK
41 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42 !
43  USE bief, ex_dots => dots
44 !
46  IMPLICIT NONE
47 !
48 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
49 !
50  TYPE(bief_obj), INTENT(IN) :: X,Y
51 !
52 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
53 !
54  INTEGER IBL
55 !
56 !-----------------------------------------------------------------------
57 !
58 ! CASE WHERE THE STRUCTURES ARE BLOCKS
59 !
60  IF(x%TYPE.EQ.4) THEN
61 !
62  dots = 0.d0
63  DO ibl = 1 , x%N
64  dots=dots+dot(x%ADR(ibl)%P%DIM1,x%ADR(ibl)%P%R,y%ADR(ibl)%P%R)
65  ENDDO
66 !
67 !-----------------------------------------------------------------------
68 !
69 ! CASE WHERE THE STRUCTURES ARE NOT BLOCKS
70 ! IT ASSUMES THAT Y HAS THE SAME TYPE AS X
71 !
72  ELSEIF(x%TYPE.EQ.2) THEN
73 !
74  dots = dot(x%DIM1,x%R,y%R)
75 !
76 !-----------------------------------------------------------------------
77 !
78 ! ERROR
79 !
80  ELSE
81 !
82  WRITE(lu,60) x%NAME,x%TYPE
83  WRITE(lu,61) y%NAME,y%TYPE
84  WRITE(lu,63)
85 60 FORMAT(1x,'DOTS (BIEF) : NAME OF X : ',a6,' TYPE : ',1i6)
86 61 FORMAT(1x,' NAME OF Y : ',a6,' TYPE : ',1i6)
87 63 FORMAT(1x,' NOT IMPLEMENTED')
88  CALL plante(1)
89  stop
90 !
91  ENDIF
92 !
93 !-----------------------------------------------------------------------
94 !
95  RETURN
96  END
double precision function dots(X, Y)
Definition: dots.f:7
double precision function dot(NPOIN, X, Y)
Definition: dot.f:7
Definition: bief.f:3