The TELEMAC-MASCARET system  trunk
as3_1212_s.f
Go to the documentation of this file.
1 ! *********************
2  SUBROUTINE as3_1212_s
3 ! *********************
4 !
5  &(xm,nseg11,nseg12,xmt,nelmax,nelem,eltseg1,eltseg2,eltseg3,
6  & eltseg4,eltseg5,eltseg6)
7 !
8 !***********************************************************************
9 ! BIEF V6P1 21/08/2010
10 !***********************************************************************
11 !
12 !brief ASSEMBLES MATRICES EXTRA-DIAGONAL TERMS
13 !+ IN THE CASE OF EDGE-BASED STORAGE.
14 !+
15 !+ CASE OF QUASIBUBBLE-QUASIBUBBLE ELEMENT
16 !+ AND SYMMETRICAL MATRIX.
17 !
18 !history J-M HERVOUET (LNH)
19 !+ 30/06/99
20 !+ V5P1
21 !+
22 !
23 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
24 !+ 13/07/2010
25 !+ V6P0
26 !+ Translation of French comments within the FORTRAN sources into
27 !+ English comments
28 !
29 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
30 !+ 21/08/2010
31 !+ V6P0
32 !+ Creation of DOXYGEN tags for automated documentation and
33 !+ cross-referencing of the FORTRAN sources
34 !
35 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36 !| ELTSEG1 |-->| FIRST SEGMENT OF A TRIANGLE
37 !| ELTSEG2 |-->| SECOND SEGMENT OF A TRIANGLE
38 !| ELTSEG3 |-->| THIRD SEGMENT OF A TRIANGLE
39 !| ELTSEG4 |-->| FOURTH SEGMENT OF A QUADRATIC TRIANGLE
40 !| ELTSEG5 |-->| FIFTH SEGMENT OF A QUADRATIC TRIANGLE
41 !| ELTSEG6 |-->| SIXTH SEGMENT OF A QUADRATIC TRIANGLE
42 !| NELEM |-->| NUMBER OF ELEMENTS IN THE MESH
43 !| NELMAX |-->| FIRST DIMENSION OF IKLE AND W.
44 !| NSEG11 |-->| NUMBER OF SEGMENTS (HERE JOINING LINEAR POINTS)
45 !| NSEG12 |-->| NUMBER OF SEGMENTS (HERE QUADRATIC)
46 !| XM |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
47 !| XMT |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
48 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49 !
51  IMPLICIT NONE
52 !
53 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
54 !
55  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG11,NSEG12
56  INTEGER , INTENT(IN) :: ELTSEG1(nelmax)
57  INTEGER , INTENT(IN) :: ELTSEG2(nelmax)
58  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
59  INTEGER , INTENT(IN) :: ELTSEG4(nelmax)
60  INTEGER , INTENT(IN) :: ELTSEG5(nelmax)
61  INTEGER , INTENT(IN) :: ELTSEG6(nelmax)
62  DOUBLE PRECISION, INTENT(INOUT) :: XMT(nelmax,*)
63  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg12)
64 !
65 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
66 !
67  INTEGER ISEG,IELEM
68 !
69 !-----------------------------------------------------------------------
70 !
71 ! INITIALISES
72 !
73  DO iseg = 1 , nseg11
74  xm(iseg) = 0.d0
75  ENDDO
76 !
77 ! ASSEMBLES PART P1
78 !
79  DO ielem = 1,nelem
80 ! TERM 12
81  xm(eltseg1(ielem)) = xm(eltseg1(ielem)) + xmt(ielem,1)
82 ! TERM 23
83  xm(eltseg2(ielem)) = xm(eltseg2(ielem)) + xmt(ielem,4)
84 ! TERM 31
85  xm(eltseg3(ielem)) = xm(eltseg3(ielem)) + xmt(ielem,2)
86  ENDDO
87 !
88 ! ASSEMBLES QUASIBUBBLE PART
89 !
90  DO ielem = 1,nelem
91 ! TERM 14
92  xm(eltseg4(ielem)) = xmt(ielem,3)
93 ! TERM 24
94  xm(eltseg5(ielem)) = xmt(ielem,5)
95 ! TERM 34
96  xm(eltseg6(ielem)) = xmt(ielem,6)
97  ENDDO
98 !
99 !-----------------------------------------------------------------------
100 !
101  RETURN
102  END
subroutine as3_1212_s(XM, NSEG11, NSEG12, XMT, NELMAX, NELEM, ELTSEG1, ELTSEG2, ELTSEG3, ELTSEG4, ELTSEG5, ELTSEG6)
Definition: as3_1212_s.f:8