eleb3d.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\eleb3d.f
00002 !
00069                      SUBROUTINE ELEB3D
00070 !                    *****************
00071 !
00072      &(IKLE3,NBOR,NELBOR,IKLBOR,NELEB,NELEBX,NULONE,
00073      & NELEM2,NPOIN2,NPLAN,NETAGE,NPTFR)
00074 !
00075 !***********************************************************************
00076 ! BIEF   V7P0                                   19/03/2014
00077 !***********************************************************************
00078 !
00079 !
00080 !
00081 !
00082 !
00083 !
00084 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00085 !| IKLBOR         |-->| CONNECTIVITY TABLE OF BOUNDARY ELEMENTS
00086 !| IKLE3          |<--| CONNECTIVITY TABLE IN 3D
00087 !| NBOR           |-->| GLOBAL NUMBER OF BOUNDARY POINTS IN 2D
00088 !| NELBOR         |-->| FOR THE KTH BOUNDARY EDGE, GIVES THE CORRESPONDING
00089 !|                |   | ELEMENT.
00090 !| NELEB          |-->| NUMBER OF BOUNDARY ELEMENTS
00091 !|                |   | AT THE BEGINNING : IN 2D, AT THE EXIT, IN 3D
00092 !|                |   | NUMBER OF BOUNDARY ELEMENTS
00093 !| NELEBX         |-->| MAXIMUM NUMBER OF BOUNDARY ELEMENTS
00094 !|                |   | USED AS FIRST DIMENSION OF IKLBOR
00095 !| NELEM2         |-->| NUMBER OF ELEMENTS IN 2D
00096 !| NETAGE         |-->| NUMBER OF PLANES - 1
00097 !| NPLAN          |-->| NUMBER OF PLANES
00098 !| NPOIN2         |-->| NUMBER OF POINTS IN 2D
00099 !| NPTFR          |-->| NUMBER OF BOUNDARY POINTS
00100 !| NULONE         |-->| GOES WITH ARRAY NELBOR. NELBOR GIVES THE
00101 !|                |   | ADJACENT ELEMENT, NULONE GIVES THE LOCAL
00102 !|                |   | NUMBER OF THE FIRST NODE OF THE BOUNDARY EDGE
00103 !|                |   | I.E. 1, 2 OR 3 FOR TRIANGLES.
00104 !|                |   | !!!!!  HERE IN 3D !!!!!!
00105 !|                |   | WITH PRISMS, A CONDITION IS THAT THE FIRST
00106 !|                |   | NPTFR VALUES OF MESH3D%NULONE ARE EQUAL
00107 !|                |   | TO MESH2D%NULONE (SEE CALL TO STOSEG41 IN INBIEF)
00108 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00109 !
00110       USE BIEF, EX_ELEB3D => ELEB3D
00111 !
00112       IMPLICIT NONE
00113       INTEGER LNG,LU
00114       COMMON/INFO/LNG,LU
00115 !
00116 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00117 !
00118       INTEGER, INTENT(IN)    :: NELEM2,NPOIN2,NPLAN,NETAGE,NPTFR
00119       INTEGER, INTENT(IN)    :: NELEBX
00120       INTEGER, INTENT(INOUT) :: NELEB
00121       INTEGER, INTENT(INOUT) :: IKLE3(NELEM2,NETAGE,6)
00122       INTEGER, INTENT(INOUT) :: IKLBOR(NELEBX,4),NULONE(NELEBX,4)
00123       INTEGER, INTENT(INOUT) :: NELBOR(NELEBX),NBOR(NPTFR*NPLAN)
00124 !
00125 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00126 !
00127       INTEGER IELEM,IPOIN,IELEB2,IELEB3,K1,K2,IETAGE,IPTFR,I1,I2,I3
00128       INTEGER IPLAN
00129 !
00130 !-----------------------------------------------------------------------
00131 !
00132 !     CONNECTIVITY TABLES FOR BOUNDARY FACES --> IKLBOR , NBOR ,
00133 !     CORRESPONDENCE BETWEEN LOCAL BOUNDARY NUMBERS
00134 !     AND 3D LOCAL NUMBERS --> NULONE
00135 !
00136 !     LATERAL BOUNDARIES: BUILDING NBOR
00137 !
00138       DO IPLAN=2,NPLAN
00139         DO IPTFR=1,NPTFR
00140           NBOR(IPTFR+(IPLAN-1)*NPTFR)=NBOR(IPTFR)+(IPLAN-1)*NPOIN2
00141         ENDDO
00142       ENDDO
00143 !
00144 !     LATERAL BOUNDARIES
00145 !
00146       DO IETAGE = 1,NETAGE
00147         DO IELEB2=1,NELEB
00148           IELEB3=IELEB2+(IETAGE-1)*NELEB
00149           K1=IKLBOR(IELEB2,1)
00150           K2=IKLBOR(IELEB2,2)
00151           IKLBOR(IELEB3,1) = K1 + (IETAGE-1)*NPTFR
00152           IKLBOR(IELEB3,2) = K2 + (IETAGE-1)*NPTFR
00153           IKLBOR(IELEB3,3) = IKLBOR(IELEB3,2) + NPTFR
00154           IKLBOR(IELEB3,4) = IKLBOR(IELEB3,1) + NPTFR
00155           IELEM = NELBOR(IELEB2)
00156           IPOIN = NBOR(K1)
00157           NELBOR(IELEB3)=IELEM+(IETAGE-1)*NELEM2
00158           I1=IKLE3(IELEM,1,1)
00159           I2=IKLE3(IELEM,1,2)
00160           I3=IKLE3(IELEM,1,3)
00161           IF(IPOIN.EQ.I1) THEN
00162             NULONE(IELEB3,1) = 1
00163             NULONE(IELEB3,2) = 2
00164             NULONE(IELEB3,3) = 5
00165             NULONE(IELEB3,4) = 4
00166           ELSEIF(IPOIN.EQ.I2) THEN
00167             NULONE(IELEB3,1) = 2
00168             NULONE(IELEB3,2) = 3
00169             NULONE(IELEB3,3) = 6
00170             NULONE(IELEB3,4) = 5
00171           ELSEIF(IPOIN.EQ.I3) THEN
00172             NULONE(IELEB3,1) = 3
00173             NULONE(IELEB3,2) = 1
00174             NULONE(IELEB3,3) = 4
00175             NULONE(IELEB3,4) = 6
00176           ELSE
00177             IF(LNG.EQ.1) WRITE(LU,101) IPOIN,I1,I2,I3,K1,IELEM
00178             IF(LNG.EQ.2) WRITE(LU,102) IPOIN,I1,I2,I3,K1,IELEM
00179             CALL PLANTE(1)
00180             STOP
00181           ENDIF
00182         ENDDO
00183       ENDDO
00184 !
00185 !-----------------------------------------------------------------------
00186 !
00187 !     NOW NELEB BECOMES THE 3D VALUE
00188 !
00189       NELEB=NELEB*NETAGE
00190 !
00191 !-----------------------------------------------------------------------
00192 !
00193 101   FORMAT(' ELEB3D : PROBLEME A LA CONSTRUCTION DE NULONE, IPOIN =',
00194      &  I6,'   I1,2,3=',I6,1X,I6,1X,I6,' K1=',I6,' IELEM=',I6)
00195 102   FORMAT(' ELEB3D: PROBLEM WHEN BUILDING NULONE, IPOIN =',
00196      &  I6,'   I1,2,3=',I6,1X,I6,1X,I6,' K1=',I6,' IELEM=',I6)
00197 !
00198 !-----------------------------------------------------------------------
00199 !
00200       RETURN
00201       END

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