The TELEMAC-MASCARET system  trunk
as3_8181_s.f
Go to the documentation of this file.
1 ! *********************
2  SUBROUTINE as3_8181_s
3 ! *********************
4 !
5  &(xm,nseg,xmt,dim1xmt,dim2xmt,stoxmt,nelmax,nelem,
6  & eltseg1,eltseg2,eltseg3)
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 !+ SEE EBE STORAGE IN XMT FROM AAS IN MATRIY.f
17 !
18 !history F. DECUNG (LNHE)
19 !+ 20/07/2012
20 !+ V6P2
21 !+
22 !
23 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24 !| DIM1XMT |-->| FIRST DIMENSION OF XMT
25 !| DIM2XMT |-->| SECOND DIMENSION OF XMT
26 !| ELTSEG1 |-->| FIRST SEGMENT OF A TRIANGLE
27 !| ELTSEG2 |-->| SECOND SEGMENT OF A TRIANGLE
28 !| ELTSEG3 |-->| THIRD SEGMENT OF A TRIANGLE
29 !| NELEM |-->| NUMBER OF ELEMENTS IN THE MESH
30 !| NELMAX |-->| FIRST DIMENSION OF IKLE AND W.
31 !| NSEG |-->| NUMBER OF SEGMENTS
32 !| STOXMT |-->| STORAGE MODE OF XMT
33 !| XM |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
34 !| XMT |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
35 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36 !
38  IMPLICIT NONE
39 !
40 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
41 !
42  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG
43  INTEGER , INTENT(IN) :: DIM1XMT,DIM2XMT,STOXMT
44  INTEGER , INTENT(IN) :: ELTSEG1(nelmax),ELTSEG2(nelmax)
45  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
46  DOUBLE PRECISION, INTENT(INOUT) :: XMT(dim1xmt,dim2xmt)
47  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg)
48 !
49 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
50 !
51  INTEGER ISEG,IELEM
52 !
53 !-----------------------------------------------------------------------
54 !
55 ! INITIALISES
56 !
57  DO iseg = 1 , nseg
58  xm(iseg) = 0.d0
59  ENDDO
60 !
61 !-----------------------------------------------------------------------
62 !
63  IF(stoxmt.EQ.1) THEN
64 !
65 ! ASSEMBLES
66 !
67  DO ielem = 1,nelem
68 ! TERM 12
69  xm(eltseg1(ielem)) = xm(eltseg1(ielem)) + xmt(ielem,1)
70 ! TERM 23
71  xm(eltseg2(ielem)) = xm(eltseg2(ielem)) + xmt(ielem,2)
72 ! TERM 31
73  xm(eltseg3(ielem)) = xm(eltseg3(ielem)) + xmt(ielem,3)
74  ENDDO
75 ! pause
76 !
77 !-----------------------------------------------------------------------
78 !
79  ELSEIF(stoxmt.EQ.2) THEN
80 !
81 ! ASSEMBLES
82 !
83  DO ielem = 1,nelem
84 ! TERM 12
85  xm(eltseg1(ielem)) = xm(eltseg1(ielem)) + xmt(1,ielem)
86 ! TERM 23
87  xm(eltseg2(ielem)) = xm(eltseg2(ielem)) + xmt(2,ielem)
88 ! TERM 31
89  xm(eltseg3(ielem)) = xm(eltseg3(ielem)) + xmt(3,ielem)
90  ENDDO
91 !
92 !-----------------------------------------------------------------------
93 !
94  ELSE
95  WRITE(lu,*) 'AS3_8181_S: UNKNOWN STORAGE OF XMT : ',stoxmt
96  CALL plante(1)
97  stop
98  ENDIF
99 !
100 !-----------------------------------------------------------------------
101 !
102  RETURN
103  END
subroutine as3_8181_s(XM, NSEG, XMT, DIM1XMT, DIM2XMT, STOXMT, NELMAX, NELEM, ELTSEG1, ELTSEG2, ELTSEG3)
Definition: as3_8181_s.f:8