The TELEMAC-MASCARET system  trunk
goup1.f
Go to the documentation of this file.
1 ! ****************
2  SUBROUTINE goup1
3 ! ****************
4 !
5  &(x, a,b ,ditr,mesh,copy)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief SOLVES THE SYSTEM U X = B (ELEMENT BY ELEMENT).
12 !code
13 !+ THE MATRIX L IS HERE THE RESULT OF A DECOMPOSITION
14 !+ DONE IN SUBROUTINE DECLDU
15 !+
16 !+ EACH ELEMENTARY MATRIX WAS FACTORISED IN THE FORM:
17 !+
18 !+ LE X DE X UE
19 !+
20 !+ LE : LOWER TRIANGULAR WITH 1S ON THE DIAGONAL
21 !+ DE : DIAGONAL
22 !+ UE : UPPER TRIANGULAR WITH 1S ON THE DIAGONAL
23 !+
24 !+ T
25 !+ IF THE MATRIX IS SYMMETRICAL : LE = UE
26 !
27 !code
28 !+-----------------------------------------------------------------------
29 !+ MEANING OF IELM :
30 !+
31 !+ TYPE OF ELEMENT NUMBER OF POINTS CODED IN THIS SUBROUTINE
32 !+
33 !+ 11 : P1 TRIANGLE 3 YES
34 !+ 12 : QUASI-BUBBLE TRIANGLE 4 YES
35 !+ 21 : Q1 QUADRILATERAL 4 YES
36 !+ 41 : TELEMAC-3D PRISMS 6 YES
37 !+
38 !+-----------------------------------------------------------------------
39 !
40 !history J-M HERVOUET (LNH)
41 !+ 26/02/04
42 !+ V5P5
43 !+
44 !
45 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
46 !+ 13/07/2010
47 !+ V6P0
48 !+ Translation of French comments within the FORTRAN sources into
49 !+ English comments
50 !
51 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
52 !+ 21/08/2010
53 !+ V6P0
54 !+ Creation of DOXYGEN tags for automated documentation and
55 !+ cross-referencing of the FORTRAN sources
56 !
57 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58 !| A |-->| MATRIX A IN LDU FORM
59 !| B |<--| RIGHT-HAND SIDE OF THE SYSTEM
60 !| COPY |-->| IF YES. B IS FIRST COPIED ON X.
61 !| DITR |-->| OPTION 'D' : MATRIX A IS TAKEN
62 !| | | 'T' : MATRIX TRANSPOSED(A)
63 !| MESH |-->| MESH STRUCTURE
64 !| X |<--| SOLUTION OF SYSTEM AX = B
65 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66 !
67  USE bief, ex_goup1 => goup1
68 !
70  IMPLICIT NONE
71 !
72 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
73 !
74  TYPE(bief_obj), INTENT(INOUT) :: X
75  TYPE(bief_obj), INTENT(IN) :: B
76  TYPE(bief_obj), INTENT(IN) :: A
77  TYPE(bief_mesh), INTENT(IN) :: MESH
78  CHARACTER(LEN=1), INTENT(IN) :: DITR
79  LOGICAL, INTENT(IN) :: COPY
80 !
81 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
82 !
83  INTEGER IELM,NPOIN,NELEM,NELMAX
84 !
85  CHARACTER(LEN=1) TYPX
86 !
87 !-----------------------------------------------------------------------
88 !
89  typx = a%TYPEXT
90  npoin = a%D%DIM1
91  ielm = a%ELMLIN
92  nelem = mesh%NELEM
93  nelmax= mesh%NELMAX
94  CALL cpstvc(b,x)
95 !
96 !-----------------------------------------------------------------------
97 !
98 ! 1) DESCENT WITH COPY OF B IN X
99 !
100  IF(a%STO.EQ.1) THEN
101  CALL remont(x%R, a%X%R,typx,
102  & b%R,mesh%IKLE%I,nelem,nelmax,npoin,ielm,ditr,copy,mesh%LV)
103  ELSEIF(a%STO.EQ.3) THEN
104  CALL remseg(x%R, a%X%R,typx,
105  & b%R,mesh%GLOSEG%I,mesh%NSEG,npoin,ditr,copy)
106  ELSE
107  WRITE(lu,*) 'GOUP1, CASE NOT IMPLEMENTED'
108  CALL plante(1)
109  stop
110  ENDIF
111 !
112 !-----------------------------------------------------------------------
113 !
114  RETURN
115  END
subroutine remont(X, XA, TYPEXA, B, IKLE, NELEM, NELMAX, NPOIN, IELM, DITR, COPY, LV)
Definition: remont.f:7
subroutine remseg(X, XA, TYPEXA, B, GLOSEG, NSEG, NPOIN, DITR, COPY)
Definition: remseg.f:7
subroutine goup1(X, A, B, DITR, MESH, COPY)
Definition: goup1.f:7
subroutine cpstvc(X, Y)
Definition: cpstvc.f:7
Definition: bief.f:3