C BJO2 SOURCE CHAT 05/01/12 21:40:22 5004 SUBROUTINE BJO2(IGAU,MFR,IFOU,NIFOU,XEL,BPSS,SHPTOT,SHP, . BGENE,DJAC,IRRT) C======================================================================= C C CALCUL DE LA MATRICE B = TETA * ( N , -N ) C ET DU JACOBIEN EN IGAU POUR UN JOINT 2D C ROUTINE FORTRAN PUR C CODE S. FELIX MAI 92 C======================================================================= C INPUT C IGAU = NUMERO DU POINT DE GAUSS C MFR = NUMERO DE LA FORMULATION C XEL = COORDONNEES DES NOEUDS DE L'ELEMENT C BPSS = MATRICE DE PASSAGE C BPSS(,) = AXE S1 C BPSS(,) = AXE SN C SHPTOT= FONCTIONS DE FORME ET DERIVEES DANS L'ESPACE DE REFERENCE C SHPTOT(1, ) = FONCTION DE FORME C SHPTOT(2, ) = DERIVEES PAR RAPPORT A QSI C SHPTOT(3, ) = DERIVEES PAR RAPPORT A ETA C OUTPUT C SHP = FONCTIONS DE FORME ET DERIVEES DANS L'ESPACE GEOMETRIQUE C SHP(1, ) = FONCTION DE FORME C SHP(2, ) = DERIVEES PAR RAPPORT A X LOCAL C SHP(3, ) = DERIVEES PAR RAPPORT A Y LOCAL C DJAC = JACOBIEN AU POINT D'INTEGRATION IGAU C BGENE = MATRICE B AU POINT D'INTEGRATION IGAU C IRRT = DIFFERENT DE ZERO SI ERREUR C CONSTANTES C NBNO = NOMBRE DE NOEUDS C LRE = NOMBRE DE COLONNES DE LA MATRICE B C NST = NOMBRE DE COMPOSANTES DE CONTRAINTES C C REMARQUE : CE SOUS-PROGRAMME EST VALABLE EN CONTRAINTES PLANES, C DEFORMATIONS PLANES ET AXISYMETRIQUES. LA MATRICE C BGENE = TETA ( Ntop , - Nbot ) C EST UNE MATRICE (2x8). EN EFFET, TETA EST UNE MATRICE C (2x2), ET ( Ntop , - Nbot ) EST UNE MATRICE (2x8). C LA MATRICE TETA EST ICI APPELEE BPSS. C C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) PARAMETER (LRE=8,NST=2,NBNO=4) DIMENSION XEL(3,*),BGENE(NST,*),SHP(6,*),SHPTOT(6,NBNO,*) DIMENSION BPSS(3,3) C IRRT = 0 C C MATRICE JACOBIENNE C DO 1 I=1,NBNO SHP(1,I) = SHPTOT(1,I,IGAU) SHP(2,I) = SHPTOT(2,I,IGAU) 1 CONTINUE C C !!!!!! ATTENTION : IL FAUT CALCULER LE JACOBIEN AVEC NBNO=2 !!!!!! C IL NE FAUT SURTOUT PAS METTRE NBNO=4 CAR CA FAUSSE ALORS C LES RESULTATS ... NBNO DOIT ETRE EGAL A 4 CAR IL YA 4 NOEUDS C NBNONN=NBNO/2 CALL DEVOLU(XEL,SHP,MFR,NBNONN,IFOU,NIFOU,1,1.D0,RR,DJAC) IF (DJAC.LT.0.0D0) THEN IRRT = 1 ELSE IF (DJAC.EQ.0.0D0) THEN IRRT = 2 ENDIF C C MATRICE B C C PP ATTENTION: IL FAUT PEUT-ETRE RESPECTER LA NUMEROTATION LOCALE DES C NOEUDS C CALL ZERO(BGENE,NST,LRE) DO 2 I=1,2 DO 3 J=1,2 DO 4 K=1,2 L=2*(J-1)+K C PP M=L+4 M=L+2*(2*(2-J)+1) BGENE(I,L)=BPSS(I,K)*SHP(1,J) BGENE(I,M)=-BGENE(I,L) 4 CONTINUE 3 CONTINUE 2 CONTINUE C RETURN END