The TELEMAC-MASCARET system  trunk
as3_3131_s.f
Go to the documentation of this file.
1 ! *********************
2  SUBROUTINE as3_3131_s
3 ! *********************
4 !
5  &(xm,nseg,xmt,dim1xmt,dim2xmt,stoxmt,nelmax,nelem,
6  & eltseg1,eltseg2,eltseg3,eltseg4,eltseg5,eltseg6)
7 !
8 !***********************************************************************
9 ! BIEF V6P2 21/08/2010
10 !***********************************************************************
11 !
12 !brief ASSEMBLES MATRICES EXTRA-DIAGONAL TERMS
13 !+ IN THE CASE OF EDGE-BASED STORAGE.
14 !+
15 !+ CASE OF TETRAHEDRON ELEMENT AND SYMMETRICAL MATRIX.
16 !
17 !history J-M HERVOUET (LNHE)
18 !+ 25/08/2011
19 !+ V6P2
20 !+
21 !
22 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23 !| DIM1XMT |-->| FIRST DIMENSION OF XMT
24 !| DIM2XMT |-->| SECOND DIMENSION OF XMT
25 !| ELTSEG1 |-->| FIRST SEGMENT OF A TRIANGLE
26 !| ELTSEG2 |-->| SECOND SEGMENT OF A TRIANGLE
27 !| ELTSEG3 |-->| THIRD SEGMENT OF A TRIANGLE
28 !| ELTSEG4 |-->| FOURTH SEGMENT OF A QUADRATIC TRIANGLE
29 !| ELTSEG5 |-->| FIFTH SEGMENT OF A QUADRATIC TRIANGLE
30 !| ELTSEG6 |-->| SIXTH SEGMENT OF A QUADRATIC TRIANGLE
31 !| NELEM |-->| NUMBER OF ELEMENTS IN THE MESH
32 !| NELMAX |-->| FIRST DIMENSION OF IKLE AND W.
33 !| NSEG |-->| NUMBER OF SEGMENTS
34 !| STOXMT |-->| STORAGE MODE OF XMT
35 !| XM |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
36 !| XMT |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
37 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38 !
40  IMPLICIT NONE
41 !
42 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
43 !
44  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG
45  INTEGER , INTENT(IN) :: DIM1XMT,DIM2XMT,STOXMT
46  INTEGER , INTENT(IN) :: ELTSEG1(nelmax),ELTSEG2(nelmax)
47  INTEGER , INTENT(IN) :: ELTSEG3(nelmax),ELTSEG4(nelmax)
48  INTEGER , INTENT(IN) :: ELTSEG5(nelmax),ELTSEG6(nelmax)
49  DOUBLE PRECISION, INTENT(INOUT) :: XMT(dim1xmt,dim2xmt)
50  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg)
51 !
52 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
53 !
54  INTEGER ISEG,IELEM
55 !
56 !-----------------------------------------------------------------------
57 !
58 ! INITIALISES
59 !
60  DO iseg = 1 , nseg
61  xm(iseg) = 0.d0
62  ENDDO
63 !
64 !-----------------------------------------------------------------------
65 !
66  IF(stoxmt.EQ.1) THEN
67 !
68 ! ASSEMBLES
69 !
70  DO ielem = 1,nelem
71 ! TERM 12
72  xm(eltseg1(ielem)) = xm(eltseg1(ielem)) + xmt(ielem,1)
73 ! TERM 23
74  xm(eltseg2(ielem)) = xm(eltseg2(ielem)) + xmt(ielem,4)
75 ! TERM 31
76  xm(eltseg3(ielem)) = xm(eltseg3(ielem)) + xmt(ielem,2)
77 ! TERM 14
78  xm(eltseg4(ielem)) = xm(eltseg4(ielem)) + xmt(ielem,3)
79 ! TERM 24
80  xm(eltseg5(ielem)) = xm(eltseg5(ielem)) + xmt(ielem,5)
81 ! TERM 34
82  xm(eltseg6(ielem)) = xm(eltseg6(ielem)) + xmt(ielem,6)
83  ENDDO
84 !
85 !-----------------------------------------------------------------------
86 !
87  ELSEIF(stoxmt.EQ.2) THEN
88 !
89 ! ASSEMBLES
90 !
91  DO ielem = 1,nelem
92 ! TERM 12
93  xm(eltseg1(ielem)) = xm(eltseg1(ielem)) + xmt(1,ielem)
94 ! TERM 23
95  xm(eltseg2(ielem)) = xm(eltseg2(ielem)) + xmt(4,ielem)
96 ! TERM 31
97  xm(eltseg3(ielem)) = xm(eltseg3(ielem)) + xmt(2,ielem)
98 ! TERM 14
99  xm(eltseg4(ielem)) = xm(eltseg4(ielem)) + xmt(3,ielem)
100 ! TERM 24
101  xm(eltseg5(ielem)) = xm(eltseg5(ielem)) + xmt(5,ielem)
102 ! TERM 34
103  xm(eltseg6(ielem)) = xm(eltseg6(ielem)) + xmt(6,ielem)
104  ENDDO
105 !
106 !-----------------------------------------------------------------------
107 !
108  ELSE
109  WRITE(lu,*) 'AS3_3131_S: UNKNOWN STORAGE OF XMT : ',stoxmt
110  CALL plante(1)
111  stop
112  ENDIF
113 !
114 !-----------------------------------------------------------------------
115 !
116  RETURN
117  END
subroutine as3_3131_s(XM, NSEG, XMT, DIM1XMT, DIM2XMT, STOXMT, NELMAX, NELEM, ELTSEG1, ELTSEG2, ELTSEG3, ELTSEG4, ELTSEG5, ELTSEG6)
Definition: as3_3131_s.f:8