The TELEMAC-MASCARET system  trunk
bief_dim1_ext.f
Go to the documentation of this file.
1 ! ******************************
2  INTEGER FUNCTION bief_dim1_ext
3 ! ******************************
4 !
5  &(ielm1,ielm2,sto,typext,mesh)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief GIVES THE FIRST DIMENSION OF A MATRICE'S EXTRA-DIAGONAL
12 !+ TERMS.
13 !
14 !history J-M HERVOUET (LNH)
15 !+ 05/02/2010
16 !+ V6P0
17 !+
18 !
19 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
20 !+ 13/07/2010
21 !+ V6P0
22 !+ Translation of French comments within the FORTRAN sources into
23 !+ English comments
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 21/08/2010
27 !+ V6P0
28 !+ Creation of DOXYGEN tags for automated documentation and
29 !+ cross-referencing of the FORTRAN sources
30 !
31 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32 !| IELM1 |-->| TYPE OF LINE ELEMENT
33 !| IELM2 |-->| TYPE OF COLUMN ELEMENT
34 !| MESH |-->| MESH STRUCTURE
35 !| STO |-->| TYPE OF STORAGE
36 !| TYPEXT |-->| TYPE OF OFF-DIAGONAL TERMS
37 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38 !
39  USE bief, ex_bief_dim1_ext => bief_dim1_ext
40 !
42  IMPLICIT NONE
43 !
44 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
45 !
46  INTEGER , INTENT(IN) :: IELM1,IELM2,STO
47  CHARACTER(LEN=1), INTENT(IN) :: TYPEXT
48  TYPE(bief_mesh) , INTENT(IN) :: MESH
49 !
50 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
51 !
52  INTEGER IELMX,N
53 !
54 !-----------------------------------------------------------------------
55 !
56  ielmx = 10*(ielm1/10)
57 !
58  IF(typext.EQ.'0') THEN
59 !
60 ! NOT 0 TO ENABLE BOUND CHECKING
61  bief_dim1_ext = 1
62 !
63  ELSEIF(sto.EQ.1) THEN
64 !
65 ! CLASSICAL EBE STORAGE
66 !
67  bief_dim1_ext =bief_nbmpts(ielmx,mesh)
68 !
69  ELSEIF(sto.EQ.3) THEN
70 !
71 ! EDGE-BASED STORAGE
72 !
73  IF(typext.EQ.'S') THEN
74  bief_dim1_ext=bief_nbseg(ielm1,mesh)
75  ELSE
76  bief_dim1_ext=bief_nbseg(ielm1,mesh)+bief_nbseg(ielm2,mesh)
77  n=max(bief_nbpel(ielm1,mesh),bief_nbpel(ielm2,mesh))
78  & -min(bief_nbpel(ielm1,mesh),bief_nbpel(ielm2,mesh))
79  IF(n.GE.2) THEN
80 ! SOME SEGMENTS LINK ONLY E.G. QUADRATIC POINTS AND
81 ! WILL NOT BE CONSIDERED IN A RECTANGULAR MATRIX
82 ! THIS IS THE CASE WITH 3 SEGMENTS IN QUADRATIC TRIANGLE
84  & -n*(n-1)*bief_nbmpts(ielmx,mesh)/2
85  ENDIF
86  ENDIF
87 !
88  ELSE
89 !
90  WRITE(lu,101) sto
91 101 FORMAT(1x,'BIEF_DIM1_EXT : UNKNOWN TYPE OF STORAGE: ',1i6)
92  CALL plante(1)
93  stop
94 !
95  ENDIF
96 !
97 !-----------------------------------------------------------------------
98 !
99  RETURN
100  END
integer function bief_nbpel(IELM, MESH)
Definition: bief_nbpel.f:7
integer function bief_dim1_ext(IELM1, IELM2, STO, TYPEXT, MESH)
Definition: bief_dim1_ext.f:7
integer function bief_nbmpts(IELM, MESH)
Definition: bief_nbmpts.f:7
integer function bief_nbseg(IELM, MESH)
Definition: bief_nbseg.f:7
Definition: bief.f:3