C BELEC SOURCE FANDEUR 10/12/17 21:15:32 6427 C======================================================================= C= B E L E C = C= --------- = C= Fonction : = C= ---------- = C= Calcul de la matrice Bel reliant le champ electrique en un point = C= d'un element fini aux ddls de potentiel aux noeuds de cet element = C= Le jacobien est egalement evalue en ce point pour verifier par la = C= suite si l'element fini n'est pas trop distordu. = C= = C= Parametres : (E)=Entree (S)=Sortie = C= ------------ = C= XEL (E) Coordonnees des noeuds de l'element fini considere = C= SHPREF (E) Fonctions de forme et leurs derivees au point etudie = C= NBNO (E) Nombre de noeuds de l'element fini = C= NDIM (E) Nombre de lignes de la matrice GRDEL = C= ISGNG (E) Valeur negative (<0) si on veut le champ electrique, = C= i.e. l'oppose du gradient = C= = C= SHP (S) Fonctions de forme et leurs derivees "actuelles" = C= GRDEL (S) Matrice de gradients Bel calculee au point etudie = C= DJAC (S) Jacobien au point de l'element etudie = C= = C= Remarque : = C= ---------- = C= Lors de l'entree dans le sous-programme, SHPREF(2 a 4,*) contient = C= les DERIVEES des fonctions de forme par rapport aux coordonnees = C= de REFERENCE Qsi,Eta,Dzeta. = C= En sortie du sous-programme, SHP(2 a 4,*) contient les DERIVEES = C= des fonctions de FORME par rapport aux coordonnees REELLES x,y,z. = C======================================================================= SUBROUTINE BELEC (XEL,SHPREF,NBNO,NDIM,ISGNG, SHP,GRDEL,DJAC) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCREEL -INC PPARAM -INC CCOPTIO C= Quelques constantes (2.Pi et 4.Pi) PARAMETER (X2Pi= 6.283185307179586476925286766559D0) PARAMETER (X4Pi=12.566370614359172953850573533118D0) DIMENSION XEL(3,*),SHPREF(6,*), SHP(6,*),GRDEL(NDIM,*) C ==================== C 1 - Initialisation C ==================== C*OF CALL ZERO(GRDEL,IDIM,NBNO) C =================================== C 2.1 - Cas des elements massifs 3D C =================================== IF (IFOMOD.EQ.2) THEN DO j = 1, NBNO SHP(1,j) = SHPREF(1,j) SHP(2,j) = SHPREF(2,j) SHP(3,j) = SHPREF(3,j) SHP(4,j) = SHPREF(4,j) ENDDO CALL JACOBI(XEL,SHP,IDIM,NBNO,DJAC) IF (ISGNG .GE. 0) THEN DO j = 1, NBNO GRDEL(1,j) = SHP(2,j) GRDEL(2,j) = SHP(3,j) GRDEL(3,j) = SHP(4,j) ENDDO ELSE DO j = 1, NBNO GRDEL(1,j) = -SHP(2,j) GRDEL(2,j) = -SHP(3,j) GRDEL(3,j) = -SHP(4,j) ENDDO ENDIF C ========================================================= C 2.2 - Cas des elements massifs 2D PLAN ou AXISymetrique C ========================================================= ELSE IF (IFOMOD.EQ.-1 .OR. IFOMOD.EQ.0) THEN DO j = 1,NBNO SHP(1,j) = SHPREF(1,j) SHP(2,j) = SHPREF(2,j) SHP(3,j) = SHPREF(3,j) ENDDO CALL JACOBI(XEL,SHP,IDIM,NBNO,DJAC) IF (ISGNG .GE. 0) THEN DO j = 1, NBNO GRDEL(1,j) = SHP(2,j) GRDEL(2,j) = SHP(3,j) ENDDO ELSE DO j = 1, NBNO GRDEL(1,j) = -SHP(2,j) GRDEL(2,j) = -SHP(3,j) ENDDO ENDIF IF (IFOMOD.EQ.0) THEN CALL DISTRR(XEL,SHP,NBNO,RR) DJAC = X2Pi*DJAC*RR ENDIF C =================================================== C 2.3 - Cas des elements massifs 2D en mode FOURIER C =================================================== ELSE IF (IFOMOD.EQ.1) THEN DO j = 1,NBNO SHP(1,j) = SHPREF(1,j) SHP(2,j) = SHPREF(2,j) SHP(3,j) = SHPREF(3,j) ENDDO CALL JACOBI(XEL,SHP,IDIM,NBNO,DJAC) CALL DISTRR(XEL,SHP,NBNO,RR) IF (ISGNG .GE. 0) THEN DNN = NIFOUR/RR DO j = 1, NBNO GRDEL(1,j) = SHP(2,j) GRDEL(2,j) = DNN*SHP(1,j) GRDEL(3,j) = SHP(3,j) ENDDO ELSE DNN = -NIFOUR/RR DO j = 1, NBNO GRDEL(1,j) = -SHP(2,j) GRDEL(2,j) = DNN*SHP(1,j) GRDEL(3,j) = -SHP(3,j) ENDDO ENDIF IF (NIFOUR.EQ.0) THEN DJAC = X2Pi*DJAC*RR ELSE DJAC = XPi*DJAC*RR ENDIF C =================================== C 2.4 - Cas des elements MASSIFS 1D C =================================== ELSE IF (IFOMOD.EQ.3 .OR. IFOMOD.EQ.4 .OR. IFOMOD.EQ.5) THEN DO j = 1,NBNO SHP(1,j) = SHPREF(1,j) SHP(2,j) = SHPREF(2,j) ENDDO CALL JACOBI(XEL,SHP,IDIM,NBNO,DJAC) C= Traitement des modes axisymetriques et spherique 1D IF (ISGNG .GE. 0) THEN DO j = 1,NBNO GRDEL(1,j) = SHP(2,j) ENDDO ELSE DO j = 1, NBNO GRDEL(1,j) = -SHP(2,j) ENDDO ENDIF IF (IFOMOD.EQ.4) THEN CALL DISTRR(XEL,SHP,NBNO,RR) DJAC = X2Pi*DJAC*RR ELSE IF (IFOMOD.EQ.5) THEN CALL DISTRR(XEL,SHP,NBNO,RR) DJAC = X4Pi*DJAC*RR*RR ENDIF ENDIF RETURN END