C RLOCAL SOURCE CHAT 06/03/29 21:32:23 5360 SUBROUTINE RLOCAL (XEL,SHPTOT,NBSH,NBNN,TXR) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * * * Attention en cas d'erreur, erreur n'est pas appelé, c'est au * sp appelant à le faire (prob erreur utilise esope) * ************************************************************************ * * R L O C A L * ------------- * * FONCTION: * --------- * * CALCUL DES COS-DIR. DES AXES LOCAUX DE L'ELEMENT MASSIF * * * * MODULES UTILISES: * ----------------- * -INC CCOPTIO -INC CCREEL * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * XEL (E) TABLEAU CONTENANT LES COORDONNEES DES NOEUDS * SHPTOT (E) TABLEAU CONTENANT LES FONCTIONS DE FORME ET * LEURS DERIVEES AU CENTRE DE L'ELEMENT * NBSH (E) NOMBRE DE FONCTIONS D'INTERPOLATION * NBNN (E) NOMBRE DE NOEUDS PAR ELEMENT * TXR (S) COS.DIRECTEUR DES AXES LOCAUX/REPERE GLOBAL * * * REMARQUE : * * * LA TANGANTE A L'AXE KSI AU CENTRE DE L'ELEMENT FORME L'AXE 1 ,L'AXE 3 * EST OBTENU PAR LE PRODUIT VECTORIEL DE L'AXE 1 ET LA TANGANTE A * L'AXE ETA AU CENTRE DE L'ELEMENT,L'AXE 2 EST OBTENU PAR LE PRODUIT * VECTORIEL DES AXES 3 ET 1 * * * AUTEUR, DATE DE CREATION: * ------------------------- * * P. DOWLATYARI OCT. 1990 * * LANGAGE: * -------- * FORTRAN 77 + ESOPE * * ************************************************************************ * * DIMENSION TXR(IDIM,IDIM),XEL(3,NBNN),SHPTOT(6,NBSH,1) * * * DO 10 K=1,IDIM DO 10 L=1,IDIM TXR(K,L)=XZERO 10 CONTINUE * * CAS BIDIMENSIONNEL * IF(IDIM.EQ.2)THEN DO 20 INO=1,NBNN TXR(1,1)=SHPTOT(2,INO,1)*XEL(1,INO)+TXR(1,1) TXR(2,1)=SHPTOT(2,INO,1)*XEL(2,INO)+TXR(2,1) 20 CONTINUE * * NORMALISATION * XNORM=DSQRT(TXR(1,1)*TXR(1,1)+TXR(2,1)*TXR(2,1)) IF(XNORM.LE. XPETIT)THEN * ELEMENT MASSIF DEGENERE ,REPERE LOCAL IMPOSSIBLE A DEFINIR ** CALL ERREUR (525) nbsh=-1 RETURN ENDIF TXR(1,1)=TXR(1,1)/XNORM TXR(2,1)=TXR(2,1)/XNORM TXR(1,2)=-TXR(2,1) TXR(2,2)=TXR(1,1) * ELSEIF(IDIM.EQ.3)THEN * DO 30 IC=1,2 DO 30 IL=1,3 DO 30 INO=1,NBNN TXR(IL,IC)=TXR(IL,IC)+SHPTOT((IC+1),INO,1)*XEL(IL,INO) 30 CONTINUE * * * NORMALISATION DE L'AXE 1 * XNORM=DSQRT(TXR(1,1)*TXR(1,1)+TXR(2,1)*TXR(2,1)+ . TXR(3,1)*TXR(3,1)) IF(XNORM.LE. XPETIT)THEN * ELEMENT MASSIF DEGENERE ,REPERE LOCAL IMPOSSIBLE A DEFINIR ** CALL ERREUR (525) nbsh=-1 RETURN ENDIF TXR(1,1)=TXR(1,1)/XNORM TXR(2,1)=TXR(2,1)/XNORM TXR(3,1)=TXR(3,1)/XNORM * * CALCUL DES AXES 3 ET 2 * CALL CROSS2 (TXR(1,1),TXR(1,2),TXR(1,3),IRR) IF(IRR.EQ.0)THEN * ELEMENT MASSIF DEGENERE ,REPERE LOCAL IMPOSSIBLE A DEFINIR ** CALL ERREUR (525) nbsh=-1 RETURN ENDIF CALL CROSS2 (TXR(1,3),TXR(1,1),TXR(1,2),IRR) ENDIF * RETURN END