The TELEMAC-MASCARET system  trunk
gettri.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE gettri
3 ! *****************
4 !
5  &(m,mdiff,teta,mesh3d,nplan,npoin2,nseg2d,ielm3,nelem2)
6 !
7 !***********************************************************************
8 ! BIEF V6P2 21/08/2010
9 !***********************************************************************
10 !
11 !brief GETS THE TRIDIAGONAL PART OF A DIFFUSION MATRIX ON
12 !+ PRISMS AND REMOVES IT FROM THE INITIAL MATRIX.
13 !code
14 !+ IF MTRI IS THIS TRIDIAGONAL PART, M THE RESULT AND MDIF
15 !+ THE DIFFUSION MATRIX, THIS SUBROUTINE DOES:
16 !+
17 !+ M = TETA * MTRI
18 !+ MDIF CHANGED INTO (1-TETA) * MDIF
19 !
20 !warning THE JACOBIAN MUST BE POSITIVE
21 !
22 !history J-M HERVOUET (LNH)
23 !+ 16/06/05
24 !+ V5P6
25 !+
26 !
27 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
28 !+ 13/07/2010
29 !+ V6P0
30 !+ Translation of French comments within the FORTRAN sources into
31 !+ English comments
32 !
33 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
34 !+ 21/08/2010
35 !+ V6P0
36 !+ Creation of DOXYGEN tags for automated documentation and
37 !+ cross-referencing of the FORTRAN sources
38 !
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !| IELM3 |<--| TYPE OF ELEMENT
41 !| M |<--| TRIDIAGONAL MATRIX
42 !| MDIFF |-->| ORIGINAL DIFFUSION MATRIX
43 !| MESH3D |-->| 3D MESH STRUCTURE
44 !| NELEM2 |-->| NUMBER OF TRIANGLES OF ORIGINAL 2D MESH
45 !| NPLAN |-->| NUMBER OF PLANES
46 !| NPOIN2 |-->| NUMBER OF POINTS OF 2D MESH
47 !| NSEG2D |-->| NUMBER OF SEGMENTS IN 2D
48 !| TETA |-->| COEFFICIENT USED IN THE RESULT
49 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50 !
51  USE bief, ex_gettri => gettri
52 !
54  IMPLICIT NONE
55 !
56 !-----------------------------------------------------------------------
57 !
58  INTEGER, INTENT(IN) :: NPLAN,NPOIN2,NSEG2D,IELM3,NELEM2
59 !
60  DOUBLE PRECISION, INTENT(IN) :: TETA
61  DOUBLE PRECISION, INTENT(INOUT) :: M(npoin2*nplan,*)
62 !
63  TYPE(bief_obj), INTENT(INOUT) :: MDIFF
64  TYPE(bief_mesh), INTENT(INOUT) :: MESH3D
65 !
66 !-----------------------------------------------------------------------
67 !
68  IF(mdiff%STO.EQ.1) THEN
69 !
70  CALL gettriebe(m,mdiff%D%R,mdiff%X%R,teta,
71  & mesh3d%IKLE%I,mesh3d%NPOIN,mesh3d%NELEM,
72  & mesh3d%NELMAX,mesh3d,ielm3,nelem2,nplan,
73  & mesh3d%KNOLG%I)
74 !
75  ELSEIF(mdiff%STO.EQ.3) THEN
76 !
77  CALL gettriseg(m,mdiff%D%R,mdiff%X%R,teta,
78  & mesh3d%NPOIN,mesh3d,
79  & mesh3d%NSEG,nseg2d,nplan,npoin2,ielm3)
80 !
81  ELSE
82 !
83  WRITE(lu,*) 'UNKNOWN STORAGE FOR MDIFF IN GETTRI'
84  CALL plante(1)
85  stop
86 !
87  ENDIF
88 !
89 !-----------------------------------------------------------------------
90 !
91  RETURN
92  END
subroutine gettriseg(XAUX, AD, AX, TETA, NPOIN, MESH, NSEG3D, NSEG2D, NPLAN, NPOIN2, IELM3)
Definition: gettriseg.f:7
subroutine gettriebe(XAUX, AD, AX, TETA, IKLE, NPOIN, NELEM, NELMAX, MESH, IELM3, NELEM2, NPLAN, KNOLG)
Definition: gettriebe.f:8
subroutine gettri(M, MDIFF, TETA, MESH3D, NPLAN, NPOIN2, NSEG2D, IELM3, NELEM2)
Definition: gettri.f:7
Definition: bief.f:3