The TELEMAC-MASCARET system  trunk
geoelt.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE geoelt
3 ! *****************
4 !
5  &(surdet,surfac,xel,yel,nelem,nelmax,ielm)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief COMPUTES DETERMINANTS AND SOME OTHER VALUES FOR
12 !+ ISOPARAMETRIC COORDINATES.
13 !
14 !history J-M HERVOUET (LNH)
15 !+ 10/01/95
16 !+ V5P1
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 !| IELM |-->| TYPE OF ELEMENT
33 !| NELEM |-->| NUMBER OF ELEMENTS
34 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
35 !| SURDET |<--| 1.D0/DETERMINANT(TRANSFORMATION)
36 !| SURFAC |<--| AREA OF ELEMENTS
37 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
38 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !
41  USE bief, ex_geoelt => geoelt
42 !
44  IMPLICIT NONE
45 !
46 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
47 !
48  INTEGER, INTENT(IN) :: IELM,NELEM,NELMAX
49  DOUBLE PRECISION, INTENT(OUT) :: SURDET(nelem),SURFAC(nelem)
50  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,*),YEL(nelmax,*)
51 !
52 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
53 !
54  INTEGER IELEM
55 !
56  DOUBLE PRECISION XSOM(4,2)
57 !
58  DOUBLE PRECISION T12,T13,T22,T23,DET
59 !
60 !-----------------------------------------------------------------------
61 !
62  CALL survol(surfac, xel,yel,nelem,nelmax,ielm)
63 !
64  IF(ielm.EQ.11) THEN
65 !
66  DO ielem = 1 , nelem
67 !
68  xsom(1,1) = xel(ielem,1)
69  xsom(2,1) = xel(ielem,2)
70  xsom(3,1) = xel(ielem,3)
71  xsom(1,2) = yel(ielem,1)
72  xsom(2,2) = yel(ielem,2)
73  xsom(3,2) = yel(ielem,3)
74 !
75  t12 = - xsom(1,1) + xsom(2,1)
76  t13 = - xsom(1,1) + xsom(3,1)
77  t22 = - xsom(1,2) + xsom(2,2)
78  t23 = - xsom(1,2) + xsom(3,2)
79 !
80  det = t12*t23 - t22*t13
81 !
82  IF(det.LT.1.d-20) THEN
83  WRITE(lu,99) ielem
84 99 FORMAT(1x,'GEOELT: ELEMENT ',1i6,' : NEGATIVE DETERMINANT')
85  CALL plante(1)
86  stop
87  ENDIF
88 !
89  surdet(ielem) = 1.d0/det
90 !
91  ENDDO
92 !
93  ELSE
94 !
95  WRITE(lu,11) ielm
96 11 FORMAT(1x,'GEOELT: UNKNOWN TYPE OF ELEMENT :',1i6)
97  CALL plante(1)
98  stop
99 !
100  ENDIF
101 !
102 !-----------------------------------------------------------------------
103 !
104  RETURN
105  END
subroutine geoelt(SURDET, SURFAC, XEL, YEL, NELEM, NELMAX, IELM)
Definition: geoelt.f:7
subroutine survol(SURFAC, XEL, YEL, NELEM, NELMAX, IELM)
Definition: survol.f:7
Definition: bief.f:3