geoelt.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\geoelt.f
00002 !
00060                      SUBROUTINE GEOELT
00061 !                    *****************
00062 !
00063      &(SURDET,SURFAC,XEL,YEL,NELEM,NELMAX,IELM)
00064 !
00065 !***********************************************************************
00066 ! BIEF   V6P1                                   21/08/2010
00067 !***********************************************************************
00068 !
00069 !
00070 !
00071 !
00072 !
00073 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00074 !| IELM           |-->| TYPE OF ELEMENT
00075 !| NELEM          |-->| NUMBER OF ELEMENTS
00076 !| NELMAX         |-->| MAXIMUM NUMBER OF ELEMENTS
00077 !| SURDET         |<--| 1.D0/DETERMINANT(TRANSFORMATION)
00078 !| SURFAC         |<--| AREA OF ELEMENTS
00079 !| XEL            |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
00080 !| YEL            |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
00081 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00082 !
00083       USE BIEF, EX_GEOELT => GEOELT
00084 !
00085       IMPLICIT NONE
00086       INTEGER LNG,LU
00087       COMMON/INFO/LNG,LU
00088 !
00089 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00090 !
00091       INTEGER, INTENT(IN)           :: IELM,NELEM,NELMAX
00092       DOUBLE PRECISION, INTENT(OUT) :: SURDET(NELEM),SURFAC(NELEM)
00093       DOUBLE PRECISION, INTENT(IN)  :: XEL(NELMAX,*),YEL(NELMAX,*)
00094 !
00095 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00096 !
00097       INTEGER IELEM
00098 !
00099       DOUBLE PRECISION XSOM(4,2)
00100 !
00101       DOUBLE PRECISION T12,T13,T22,T23,DET,Z(1)
00102 !
00103 !-----------------------------------------------------------------------
00104 !
00105       CALL SURVOL(SURFAC, XEL,YEL,Z,NELEM,NELMAX,IELM)
00106 !
00107       IF(IELM.EQ.11) THEN
00108 !
00109         DO IELEM = 1 , NELEM
00110 !
00111         XSOM(1,1) = XEL(IELEM,1)
00112         XSOM(2,1) = XEL(IELEM,2)
00113         XSOM(3,1) = XEL(IELEM,3)
00114         XSOM(1,2) = YEL(IELEM,1)
00115         XSOM(2,2) = YEL(IELEM,2)
00116         XSOM(3,2) = YEL(IELEM,3)
00117 !
00118         T12 = - XSOM(1,1) + XSOM(2,1)
00119         T13 = - XSOM(1,1) + XSOM(3,1)
00120         T22 = - XSOM(1,2) + XSOM(2,2)
00121         T23 = - XSOM(1,2) + XSOM(3,2)
00122 !
00123         DET = T12*T23 - T22*T13
00124 !
00125         IF(DET.LT.1.D-20) THEN
00126           IF(LNG.EQ.1) WRITE(LU,98) IELEM
00127           IF(LNG.EQ.2) WRITE(LU,99) IELEM
00128 98        FORMAT(1X,'GEOELT: ELEMENT ',1I6,' : DETERMINANT NEGATIF')
00129 99        FORMAT(1X,'GEOELT: ELEMENT ',1I6,' : NEGATIVE DETERMINANT')
00130           CALL PLANTE(1)
00131           STOP
00132         ENDIF
00133 !
00134         SURDET(IELEM) = 1.D0/DET
00135 !
00136         ENDDO
00137 !
00138       ELSE
00139 !
00140         IF(LNG.EQ.1) WRITE(LU,10) IELM
00141         IF(LNG.EQ.2) WRITE(LU,11) IELM
00142 10      FORMAT(1X,'GEOELT: TYPE D''ELEMENT INCONNU :',1I6)
00143 11      FORMAT(1X,'GEOELT: UNKNOWN TYPE OF ELEMENT :',1I6)
00144         CALL PLANTE(1)
00145         STOP
00146 !
00147       ENDIF
00148 !
00149 !-----------------------------------------------------------------------
00150 !
00151       RETURN
00152       END

Generated on Fri Aug 31 2013 18:12:58 by S.E.Bourban (HRW) using doxygen 1.7.0