The TELEMAC-MASCARET system  trunk
as3_1212_q.f
Go to the documentation of this file.
1 ! *********************
2  SUBROUTINE as3_1212_q
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-QUASIBUBBLE 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(nseg12*2)
70 !
71 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
72 !
73  INTEGER ISEG,IELEM
74 !
75 !-----------------------------------------------------------------------
76 !
77 ! INITIALISES
78 !
79  DO iseg = 1 , nseg11
80  xm(iseg ) = 0.d0
81  xm(iseg+nseg12) = 0.d0
82  ENDDO
83 !
84 ! ASSEMBLES PART P1
85 !
86  DO ielem = 1,nelem
87 ! TERM 12
88  xm(eltseg1(ielem)+nseg12*(oriseg1(ielem)-1))
89  & = xm(eltseg1(ielem)+nseg12*(oriseg1(ielem)-1)) + xmt(ielem,01)
90 ! TERM 23
91  xm(eltseg2(ielem)+nseg12*(oriseg2(ielem)-1))
92  & = xm(eltseg2(ielem)+nseg12*(oriseg2(ielem)-1)) + xmt(ielem,04)
93 ! TERM 31
94  xm(eltseg3(ielem)+nseg12*(oriseg3(ielem)-1))
95  & = xm(eltseg3(ielem)+nseg12*(oriseg3(ielem)-1)) + xmt(ielem,08)
96 ! TERM 21
97  xm(eltseg1(ielem)+nseg12*(2-oriseg1(ielem)))
98  & = xm(eltseg1(ielem)+nseg12*(2-oriseg1(ielem))) + xmt(ielem,07)
99 ! TERM 32
100  xm(eltseg2(ielem)+nseg12*(2-oriseg2(ielem)))
101  & = xm(eltseg2(ielem)+nseg12*(2-oriseg2(ielem))) + xmt(ielem,10)
102 ! TERM 13
103  xm(eltseg3(ielem)+nseg12*(2-oriseg3(ielem)))
104  & = xm(eltseg3(ielem)+nseg12*(2-oriseg3(ielem))) + xmt(ielem,02)
105  ENDDO
106 !
107 ! ASSEMBLES QUASIBUBBLE PART
108 !
109  DO ielem = 1,nelem
110 ! TERM 14
111  xm(eltseg4(ielem)) = xmt(ielem,03)
112 ! TERM 24
113  xm(eltseg5(ielem)) = xmt(ielem,05)
114 ! TERM 34
115  xm(eltseg6(ielem)) = xmt(ielem,06)
116 ! TERM 41
117  xm(eltseg4(ielem)+nseg12) = xmt(ielem,09)
118 ! TERM 42
119  xm(eltseg5(ielem)+nseg12) = xmt(ielem,11)
120 ! TERM 43
121  xm(eltseg6(ielem)+nseg12) = xmt(ielem,12)
122  ENDDO
123 !
124 !-----------------------------------------------------------------------
125 !
126  RETURN
127  END
subroutine as3_1212_q(XM, NSEG11, NSEG12, XMT, NELMAX, NELEM, ELTSEG1, ELTSEG2, ELTSEG3, ELTSEG4, ELTSEG5, ELTSEG6, ORISEG1, ORISEG2, ORISEG3)
Definition: as3_1212_q.f:9