The TELEMAC-MASCARET system  trunk
as3_3131_q.f
Go to the documentation of this file.
1 ! *********************
2  SUBROUTINE as3_3131_q
3 ! *********************
4 !
5  &(xm,nseg,xmt,dim1xmt,dim2xmt,stoxmt,
6  & nelmax,nelem,eltseg1,eltseg2,eltseg3,
7  & eltseg4,eltseg5,eltseg6,oriseg1,oriseg2,oriseg3,
8  & oriseg4,oriseg5,oriseg6)
9 !
10 !***********************************************************************
11 ! BIEF V6P2 21/08/2010
12 !***********************************************************************
13 !
14 !brief ASSEMBLES MATRICES EXTRA-DIAGONAL TERMS
15 !+ IN THE CASE OF EDGE-BASED STORAGE AND NON SYMMETRICAL
16 !+ MATRIX.
17 !+
18 !+ CASE OF TETRAHEDRON ELEMENT.
19 !
20 !history J-M HERVOUET (LNHE)
21 !+ 25/08/2011
22 !+ V6P2
23 !+
24 !
25 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26 !| DIM1XMT |-->| FIRST DIMENSION OF XMT
27 !| DIM2XMT |-->| SECOND DIMENSION OF XMT
28 !| ELTSEG1 |-->| FIRST SEGMENT OF A TRIANGLE
29 !| ELTSEG2 |-->| SECOND SEGMENT OF A TRIANGLE
30 !| ELTSEG3 |-->| THIRD SEGMENT OF A TRIANGLE
31 !| ELTSEG4 |-->| FOURTH SEGMENT OF A QUADRATIC TRIANGLE
32 !| ELTSEG5 |-->| FIFTH SEGMENT OF A QUADRATIC TRIANGLE
33 !| ELTSEG6 |-->| SIXTH SEGMENT OF A QUADRATIC TRIANGLE
34 !| NELEM |-->| NUMBER OF ELEMENTS IN THE MESH
35 !| NELMAX |-->| FIRST DIMENSION OF IKLE AND W.
36 !| NSEG |-->| NUMBER OF SEGMENTS
37 !| ORISEG1 |-->| ORIENTATION OF SEGMENT 1 OF TRIANGLE
38 !| ORISEG2 |-->| ORIENTATION OF SEGMENT 2 OF TRIANGLE
39 !| ORISEG3 |-->| ORIENTATION OF SEGMENT 3 OF TRIANGLE
40 !| ORISEG4 |-->| ORIENTATION OF SEGMENT 4 OF TRIANGLE
41 !| ORISEG5 |-->| ORIENTATION OF SEGMENT 5 OF TRIANGLE
42 !| ORISEG6 |-->| ORIENTATION OF SEGMENT 6 OF TRIANGLE
43 !| STOXMT |-->| STORAGE MODE OF XMT
44 !| XM |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
45 !| XMT |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
46 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
47 !
49  IMPLICIT NONE
50 !
51 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
52 !
53  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG
54  INTEGER , INTENT(IN) :: DIM1XMT,DIM2XMT,STOXMT
55  INTEGER , INTENT(IN) :: ELTSEG1(nelmax),ELTSEG2(nelmax)
56  INTEGER , INTENT(IN) :: ELTSEG3(nelmax),ELTSEG4(nelmax)
57  INTEGER , INTENT(IN) :: ELTSEG5(nelmax),ELTSEG6(nelmax)
58  INTEGER , INTENT(IN) :: ORISEG1(nelmax),ORISEG2(nelmax)
59  INTEGER , INTENT(IN) :: ORISEG3(nelmax),ORISEG4(nelmax)
60  INTEGER , INTENT(IN) :: ORISEG5(nelmax),ORISEG6(nelmax)
61  DOUBLE PRECISION, INTENT(INOUT) :: XMT(dim1xmt,dim2xmt)
62  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg*2)
63 !
64 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
65 !
66  INTEGER ISEG,IELEM
67 !
68 !-----------------------------------------------------------------------
69 !
70 ! INITIALISES
71 !
72  DO iseg = 1 , 2*nseg
73  xm(iseg) = 0.d0
74  ENDDO
75 !
76 !-----------------------------------------------------------------------
77 !
78  IF(stoxmt.EQ.1) THEN
79 !
80 ! ASSEMBLES
81 !
82  DO ielem = 1,nelem
83 ! TERM 12
84  xm(eltseg1(ielem)+nseg*(oriseg1(ielem)-1))
85  & = xm(eltseg1(ielem)+nseg*(oriseg1(ielem)-1)) + xmt(ielem,01)
86 ! TERM 23
87  xm(eltseg2(ielem)+nseg*(oriseg2(ielem)-1))
88  & = xm(eltseg2(ielem)+nseg*(oriseg2(ielem)-1)) + xmt(ielem,04)
89 ! TERM 31
90  xm(eltseg3(ielem)+nseg*(oriseg3(ielem)-1))
91  & = xm(eltseg3(ielem)+nseg*(oriseg3(ielem)-1)) + xmt(ielem,08)
92 ! TERM 21
93  xm(eltseg1(ielem)+nseg*(2-oriseg1(ielem)))
94  & = xm(eltseg1(ielem)+nseg*(2-oriseg1(ielem))) + xmt(ielem,07)
95 ! TERM 32
96  xm(eltseg2(ielem)+nseg*(2-oriseg2(ielem)))
97  & = xm(eltseg2(ielem)+nseg*(2-oriseg2(ielem))) + xmt(ielem,10)
98 ! TERM 13
99  xm(eltseg3(ielem)+nseg*(2-oriseg3(ielem)))
100  & = xm(eltseg3(ielem)+nseg*(2-oriseg3(ielem))) + xmt(ielem,02)
101 ! TERM 14
102  xm(eltseg4(ielem)+nseg*(oriseg4(ielem)-1))
103  & = xm(eltseg4(ielem)+nseg*(oriseg4(ielem)-1)) + xmt(ielem,03)
104 ! TERM 24
105  xm(eltseg5(ielem)+nseg*(oriseg5(ielem)-1))
106  & = xm(eltseg5(ielem)+nseg*(oriseg5(ielem)-1)) + xmt(ielem,05)
107 ! TERM 34
108  xm(eltseg6(ielem)+nseg*(oriseg6(ielem)-1))
109  & = xm(eltseg6(ielem)+nseg*(oriseg6(ielem)-1)) + xmt(ielem,06)
110 ! TERM 41
111  xm(eltseg4(ielem)+nseg*(2-oriseg4(ielem)))
112  & = xm(eltseg4(ielem)+nseg*(2-oriseg4(ielem))) + xmt(ielem,09)
113 ! TERM 42
114  xm(eltseg5(ielem)+nseg*(2-oriseg5(ielem)))
115  & = xm(eltseg5(ielem)+nseg*(2-oriseg5(ielem))) + xmt(ielem,11)
116 ! TERM 43
117  xm(eltseg6(ielem)+nseg*(2-oriseg6(ielem)))
118  & = xm(eltseg6(ielem)+nseg*(2-oriseg6(ielem))) + xmt(ielem,12)
119  ENDDO
120 !
121 !-----------------------------------------------------------------------
122 !
123  ELSEIF(stoxmt.EQ.2) THEN
124 !
125  DO ielem = 1,nelem
126 ! TERM 12
127  xm(eltseg1(ielem)+nseg*(oriseg1(ielem)-1))
128  & = xm(eltseg1(ielem)+nseg*(oriseg1(ielem)-1)) + xmt(01,ielem)
129 ! TERM 23
130  xm(eltseg2(ielem)+nseg*(oriseg2(ielem)-1))
131  & = xm(eltseg2(ielem)+nseg*(oriseg2(ielem)-1)) + xmt(04,ielem)
132 ! TERM 31
133  xm(eltseg3(ielem)+nseg*(oriseg3(ielem)-1))
134  & = xm(eltseg3(ielem)+nseg*(oriseg3(ielem)-1)) + xmt(08,ielem)
135 ! TERM 21
136  xm(eltseg1(ielem)+nseg*(2-oriseg1(ielem)))
137  & = xm(eltseg1(ielem)+nseg*(2-oriseg1(ielem))) + xmt(07,ielem)
138 ! TERM 32
139  xm(eltseg2(ielem)+nseg*(2-oriseg2(ielem)))
140  & = xm(eltseg2(ielem)+nseg*(2-oriseg2(ielem))) + xmt(10,ielem)
141 ! TERM 13
142  xm(eltseg3(ielem)+nseg*(2-oriseg3(ielem)))
143  & = xm(eltseg3(ielem)+nseg*(2-oriseg3(ielem))) + xmt(02,ielem)
144 ! TERM 14
145  xm(eltseg4(ielem)+nseg*(oriseg4(ielem)-1))
146  & = xm(eltseg4(ielem)+nseg*(oriseg4(ielem)-1)) + xmt(03,ielem)
147 ! TERM 24
148  xm(eltseg5(ielem)+nseg*(oriseg5(ielem)-1))
149  & = xm(eltseg5(ielem)+nseg*(oriseg5(ielem)-1)) + xmt(05,ielem)
150 ! TERM 34
151  xm(eltseg6(ielem)+nseg*(oriseg6(ielem)-1))
152  & = xm(eltseg6(ielem)+nseg*(oriseg6(ielem)-1)) + xmt(06,ielem)
153 ! TERM 41
154  xm(eltseg4(ielem)+nseg*(2-oriseg4(ielem)))
155  & = xm(eltseg4(ielem)+nseg*(2-oriseg4(ielem))) + xmt(09,ielem)
156 ! TERM 42
157  xm(eltseg5(ielem)+nseg*(2-oriseg5(ielem)))
158  & = xm(eltseg5(ielem)+nseg*(2-oriseg5(ielem))) + xmt(11,ielem)
159 ! TERM 43
160  xm(eltseg6(ielem)+nseg*(2-oriseg6(ielem)))
161  & = xm(eltseg6(ielem)+nseg*(2-oriseg6(ielem))) + xmt(12,ielem)
162  ENDDO
163 !
164 !-----------------------------------------------------------------------
165 !
166  ELSE
167  WRITE(lu,*) 'AS3_3131_Q: UNKNOWN STORAGE OF XMT : ',stoxmt
168  CALL plante(1)
169  stop
170  ENDIF
171 !
172 !-----------------------------------------------------------------------
173 !
174  RETURN
175  END
subroutine as3_3131_q(XM, NSEG, XMT, DIM1XMT, DIM2XMT, STOXMT, NELMAX, NELEM, ELTSEG1, ELTSEG2, ELTSEG3, ELTSEG4, ELTSEG5, ELTSEG6, ORISEG1, ORISEG2, ORISEG3, ORISEG4, ORISEG5, ORISEG6)
Definition: as3_3131_q.f:10