The TELEMAC-MASCARET system  trunk
godwn1.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE godwn1
3 ! *****************
4 !
5  &(x, a,b ,ditr,mesh,copy)
6 !
7 !***********************************************************************
8 ! BIEF V6P0 21/08/2010
9 !***********************************************************************
10 !
11 !brief SOLVES THE SYSTEM L 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/44
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_godwn1 => godwn1
68 !
70  IMPLICIT NONE
71 !
72 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
73 !
74  TYPE(bief_obj), INTENT(INOUT) :: X
75  TYPE(bief_obj), INTENT(IN) :: B,A
76  TYPE(bief_mesh), INTENT(IN) :: MESH
77  CHARACTER(LEN=1), INTENT(IN) :: DITR
78  LOGICAL, INTENT(IN) :: COPY
79 !
80 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
81 !
82  INTEGER IELM,NPOIN,NELEM,NELMAX
83 !
84  CHARACTER(LEN=1) TYPX
85 !
86 !-----------------------------------------------------------------------
87 !
88  typx = a%TYPEXT
89  npoin = a%D%DIM1
90  ielm =a%ELMLIN
91  nelem = mesh%NELEM
92  nelmax= mesh%NELMAX
93  CALL cpstvc(b,x)
94 !
95 !-----------------------------------------------------------------------
96 !
97 ! 1) DESCENT WITH COPY OF B IN X
98 !
99  IF(a%STO.EQ.1) THEN
100  CALL descen(x%R, a%X%R,typx,
101  & b%R,mesh%IKLE%I,nelem,nelmax,npoin,ielm,ditr,copy,mesh%LV)
102  ELSEIF(a%STO.EQ.3) THEN
103  CALL desseg(x%R, a%X%R,typx,
104  & b%R,mesh%GLOSEG%I,mesh%NSEG,npoin,ditr,copy)
105  ELSE
106  WRITE(lu,*) 'GODWN1, CASE NOT IMPLEMENTED'
107  CALL plante(1)
108  stop
109  ENDIF
110 !
111 !-----------------------------------------------------------------------
112 !
113  RETURN
114  END
subroutine desseg(X, XA, TYPEXA, B, GLOSEG, NSEG, NPOIN, DITR, COPY)
Definition: desseg.f:7
subroutine godwn1(X, A, B, DITR, MESH, COPY)
Definition: godwn1.f:7
subroutine descen(X, XA, TYPEXA, B, IKLE, NELEM, NELMAX, NPOIN, IELM, DITR, COPY, LV)
Definition: descen.f:7
subroutine cpstvc(X, Y)
Definition: cpstvc.f:7
Definition: bief.f:3