The TELEMAC-MASCARET system  trunk
as3_1111_q.f
Go to the documentation of this file.
1 ! *********************
2  SUBROUTINE as3_1111_q
3 ! *********************
4 !
5  &(xm,nseg1,xmt,dim1xmt,dim2xmt,nelmax,nelem,stoxmt,
6  & eltseg1,eltseg2,eltseg3,oriseg1,oriseg2,oriseg3)
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 LINEAR-LINEAR ELEMENT
16 !+ AND NON 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 !history S. PAVAN (LNHE)
36 !+ 30/06/99
37 !+ V6P3
38 !+ Two storages of extra-diagonal terms treated.
39 !
40 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41 !| ELTSEG1 |-->| FIRST SEGMENT OF A TRIANGLE
42 !| ELTSEG2 |-->| SECOND SEGMENT OF A TRIANGLE
43 !| ELTSEG3 |-->| THIRD SEGMENT OF A TRIANGLE
44 !| NELEM |-->| NUMBER OF ELEMENTS IN THE MESH
45 !| NELMAX |-->| FIRST DIMENSION OF IKLE AND W.
46 !| NSEG1 |-->| NUMBER OF SEGMENTS (HERE JOINING LINEAR POINTS)
47 !| ORISEG1 |-->| ORIENTATION OF SEGMENT 1 OF TRIANGLE
48 !| ORISEG2 |-->| ORIENTATION OF SEGMENT 2 OF TRIANGLE
49 !| ORISEG3 |-->| ORIENTATION OF SEGMENT 3 OF TRIANGLE
50 !| XM |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
51 !| XMT |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
52 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53 !
55  IMPLICIT NONE
56 !
57 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
58 !
59  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG1
60  INTEGER , INTENT(IN) :: DIM1XMT,DIM2XMT,STOXMT
61  INTEGER , INTENT(IN) :: ELTSEG1(nelmax)
62  INTEGER , INTENT(IN) :: ELTSEG2(nelmax)
63  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
64  INTEGER , INTENT(IN) :: ORISEG1(nelmax)
65  INTEGER , INTENT(IN) :: ORISEG2(nelmax)
66  INTEGER , INTENT(IN) :: ORISEG3(nelmax)
67  DOUBLE PRECISION, INTENT(INOUT) :: XMT(dim1xmt,dim2xmt)
68  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg1,2)
69 !
70 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
71 !
72  INTEGER ISEG,IELEM
73 !
74 !-----------------------------------------------------------------------
75 !
76 ! INITIALISES
77 !
78  DO iseg = 1 , nseg1
79  xm(iseg,1) = 0.d0
80  xm(iseg,2) = 0.d0
81  ENDDO
82 !
83 ! ASSEMBLES
84 !
85  IF(stoxmt.EQ.1) THEN
86 !
87  DO ielem = 1,nelem
88 ! TERM 12
89  xm(eltseg1(ielem), oriseg1(ielem))
90  & = xm(eltseg1(ielem), oriseg1(ielem)) + xmt(ielem,1)
91 ! TERM 23
92  xm(eltseg2(ielem), oriseg2(ielem))
93  & = xm(eltseg2(ielem), oriseg2(ielem)) + xmt(ielem,3)
94 ! TERM 31
95  xm(eltseg3(ielem), oriseg3(ielem))
96  & = xm(eltseg3(ielem), oriseg3(ielem)) + xmt(ielem,5)
97 ! TERM 21
98  xm(eltseg1(ielem),3-oriseg1(ielem))
99  & = xm(eltseg1(ielem),3-oriseg1(ielem)) + xmt(ielem,4)
100 ! TERM 32
101  xm(eltseg2(ielem),3-oriseg2(ielem))
102  & = xm(eltseg2(ielem),3-oriseg2(ielem)) + xmt(ielem,6)
103 ! TERM 13
104  xm(eltseg3(ielem),3-oriseg3(ielem))
105  & = xm(eltseg3(ielem),3-oriseg3(ielem)) + xmt(ielem,2)
106  ENDDO
107 !
108 !-----------------------------------------------------------------------
109 !
110  ELSEIF(stoxmt.EQ.2) THEN
111 !
112 ! ASSEMBLES
113 !
114  DO ielem = 1,nelem
115 ! TERM 12
116  xm(eltseg1(ielem), oriseg1(ielem))
117  & = xm(eltseg1(ielem), oriseg1(ielem)) + xmt(1,ielem)
118 ! TERM 23
119  xm(eltseg2(ielem), oriseg2(ielem))
120  & = xm(eltseg2(ielem), oriseg2(ielem)) + xmt(3,ielem)
121 ! TERM 31
122  xm(eltseg3(ielem), oriseg3(ielem))
123  & = xm(eltseg3(ielem), oriseg3(ielem)) + xmt(5,ielem)
124 ! TERM 21
125  xm(eltseg1(ielem),3-oriseg1(ielem))
126  & = xm(eltseg1(ielem),3-oriseg1(ielem)) + xmt(4,ielem)
127 ! TERM 32
128  xm(eltseg2(ielem),3-oriseg2(ielem))
129  & = xm(eltseg2(ielem),3-oriseg2(ielem)) + xmt(6,ielem)
130 ! TERM 13
131  xm(eltseg3(ielem),3-oriseg3(ielem))
132  & = xm(eltseg3(ielem),3-oriseg3(ielem)) + xmt(2,ielem)
133 !
134  ENDDO
135 !
136 !-----------------------------------------------------------------------
137 !
138  ELSE
139  WRITE(lu,*) 'AS3_1111_Q: UNKNOWN STORAGE OF XMT : ',stoxmt
140  CALL plante(1)
141  stop
142  ENDIF
143 !
144 !-----------------------------------------------------------------------
145 !
146  RETURN
147  END
148 
subroutine as3_1111_q(XM, NSEG1, XMT, DIM1XMT, DIM2XMT, NELMAX, NELEM, STOXMT, ELTSEG1, ELTSEG2, ELTSEG3, ORISEG1, ORISEG2, ORISEG3)
Definition: as3_1111_q.f:8