The TELEMAC-MASCARET system  trunk
puog1.f
Go to the documentation of this file.
1 ! ****************
2  SUBROUTINE puog1
3 ! ****************
4 !
5  &(x, a,b ,ditr,mesh,copy)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief COMPUTES THE VECTOR X = U B (ELEMENT BY ELEMENT).
12 !code
13 !+ MATRIX L IS HERE THE RESULT OF A DECOMPOSITION
14 !+ PERFORMED 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 1 ON THE DIAGONAL
21 !+ DE : DIAGONAL
22 !+ UE : UPPER TRIANGULAR WITH 1 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 !+ 23/12/94
42 !+ V5P1
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 IN LDU FORM
59 !| B |<--| RIGHT-HAND SIDE OF THE LINEAR SYSTEM TO BE SOLVED
60 !| COPY |-->| IF .TRUE. B IS COPIED INTO X TO START WITH
61 !| DITR |-->| CHARACTER, IF 'D' : DIRECT MATRIX A CONSIDERED
62 !| | | 'T' : TRANSPOSED MATRIX A CONSIDERED
63 !| MESH |-->| MESH STRUCTURE
64 !| X |<--| SOLUTION OF THE SYSTEM AX = B
65 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66 !
67  USE bief, ex_puog1 => puog1
68 !
70  IMPLICIT NONE
71 !
72 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
73 !
74  CHARACTER(LEN=1), INTENT(IN) :: DITR
75 !
76  LOGICAL, INTENT(IN) :: COPY
77 !
78 !-----------------------------------------------------------------------
79 !
80 ! VECTORS STRUCTURES
81 !
82  TYPE(bief_obj), INTENT(INOUT) :: X,B
83 !
84 !-----------------------------------------------------------------------
85 !
86 ! MESH STRUCTURE
87 !
88  TYPE(bief_mesh), INTENT(INOUT) :: MESH
89 !
90 !-----------------------------------------------------------------------
91 !
92 ! MATRIX STRUCTURE
93 !
94  TYPE(bief_obj), INTENT(IN) :: A
95 !
96 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
97 !
98  INTEGER IELM,NPOIN,NELEM,NELMAX
99  CHARACTER(LEN=1) :: TYPX
100 !
101 !-----------------------------------------------------------------------
102 !
103  typx = a%TYPEXT
104  npoin = a%D%DIM1
105  ielm = a%ELMLIN
106  nelem = mesh%NELEM
107  nelmax= mesh%NELMAX
108  CALL cpstvc(b,x)
109 !
110 !-----------------------------------------------------------------------
111 !
112 ! 1) DESCENT WITH RECOPY OF B IN X
113 !
114  CALL tnomer(x%R,a%X%R,typx,
115  & b%R,mesh%IKLE%I,nelem,nelmax,npoin,ielm,ditr,copy,mesh%LV)
116 !
117 !-----------------------------------------------------------------------
118 !
119  RETURN
120  END
subroutine tnomer(X, XA, TYPEXA, B, IKLE, NELEM, NELMAX, NPOIN, IELM, DITR, COPY, LV)
Definition: tnomer.f:7
subroutine cpstvc(X, Y)
Definition: cpstvc.f:7
subroutine puog1(X, A, B, DITR, MESH, COPY)
Definition: puog1.f:7
Definition: bief.f:3