The TELEMAC-MASCARET system  trunk
as3_1211.f
Go to the documentation of this file.
1 ! *******************
2  SUBROUTINE as3_1211
3 ! *******************
4 !
5  &(xm,nseg11,nseg12,xmt,nelmax,nelem,eltseg1,eltseg2,eltseg3,
6  & eltseg4,eltseg5,eltseg6,
7  & oriseg1,oriseg2,oriseg3)
8 !
9 !***********************************************************************
10 ! BIEF V6P1 21/08/2010
11 !***********************************************************************
12 !
13 !brief ASSEMBLES MATRICES EXTRA-DIAGONAL TERMS
14 !+ IN THE CASE OF EDGE-BASED STORAGE.
15 !+
16 !+ CASE OF QUASIBUBBLE-LINEAR ELEMENT.
17 !
18 !history J-M HERVOUET (LNH)
19 !+ 29/12/05
20 !+ V5P6
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 !| ORISEG1 |-->| ORIENTATION OF SEGMENT 1 OF TRIANGLE
47 !| ORISEG2 |-->| ORIENTATION OF SEGMENT 2 OF TRIANGLE
48 !| ORISEG3 |-->| ORIENTATION OF SEGMENT 3 OF TRIANGLE
49 !| XM |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
50 !| XMT |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
51 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52 !
54  IMPLICIT NONE
55 !
56 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
57 !
58  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG11,NSEG12
59  INTEGER , INTENT(IN) :: ELTSEG1(nelmax)
60  INTEGER , INTENT(IN) :: ELTSEG2(nelmax)
61  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
62  INTEGER , INTENT(IN) :: ELTSEG4(nelmax)
63  INTEGER , INTENT(IN) :: ELTSEG5(nelmax)
64  INTEGER , INTENT(IN) :: ELTSEG6(nelmax)
65  INTEGER , INTENT(IN) :: ORISEG1(nelmax)
66  INTEGER , INTENT(IN) :: ORISEG2(nelmax)
67  INTEGER , INTENT(IN) :: ORISEG3(nelmax)
68  DOUBLE PRECISION, INTENT(IN) :: XMT(nelmax,*)
69  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg11+nseg12)
70 !
71 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
72 !
73  INTEGER ISEG,IELEM
74 !
75 !-----------------------------------------------------------------------
76 !
77 ! INITIALISES
78 !
79  DO iseg = 1 , 2*nseg11
80  xm(iseg) = 0.d0
81  ENDDO
82 !
83 ! ASSEMBLES PART P1 (BETWEEN 1 AND 2*NSEG11)
84 !
85  DO ielem = 1,nelem
86 ! TERM 12
87  xm(eltseg1(ielem)+nseg11*(oriseg1(ielem)-1))
88  & = xm(eltseg1(ielem)+nseg11*(oriseg1(ielem)-1)) + xmt(ielem,01)
89 ! TERM 23
90  xm(eltseg2(ielem)+nseg11*(oriseg2(ielem)-1))
91  & = xm(eltseg2(ielem)+nseg11*(oriseg2(ielem)-1)) + xmt(ielem,04)
92 ! TERM 31
93  xm(eltseg3(ielem)+nseg11*(oriseg3(ielem)-1))
94  & = xm(eltseg3(ielem)+nseg11*(oriseg3(ielem)-1)) + xmt(ielem,05)
95 ! TERM 21
96  xm(eltseg1(ielem)+nseg11*(2-oriseg1(ielem)))
97  & = xm(eltseg1(ielem)+nseg11*(2-oriseg1(ielem))) + xmt(ielem,03)
98 ! TERM 32
99  xm(eltseg2(ielem)+nseg11*(2-oriseg2(ielem)))
100  & = xm(eltseg2(ielem)+nseg11*(2-oriseg2(ielem))) + xmt(ielem,06)
101 ! TERM 13
102  xm(eltseg3(ielem)+nseg11*(2-oriseg3(ielem)))
103  & = xm(eltseg3(ielem)+nseg11*(2-oriseg3(ielem))) + xmt(ielem,02)
104  ENDDO
105 !
106 ! ASSEMBLES THE QUASIBUBBLE PART
107 ! BETWEEN XM(2*NSEG11+1) AND XM(NSEG11+NSEG12)
108 ! SEE IN STOSEG HOW ELTSEG4,5 AND 6 ARE BUILT
109 !
110  DO ielem = 1,nelem
111 ! TERM 41
112  xm(eltseg4(ielem)+nseg11) = xmt(ielem,07)
113 ! TERM 42
114  xm(eltseg5(ielem)+nseg11) = xmt(ielem,08)
115 ! TERM 43
116  xm(eltseg6(ielem)+nseg11) = xmt(ielem,09)
117  ENDDO
118 !
119 !-----------------------------------------------------------------------
120 !
121  RETURN
122  END
subroutine as3_1211(XM, NSEG11, NSEG12, XMT, NELMAX, NELEM, ELTSEG1, ELTSEG2, ELTSEG3, ELTSEG4, ELTSEG5, ELTSEG6, ORISEG1, ORISEG2, ORISEG3)
Definition: as3_1211.f:9