C TCOQ8A SOURCE CHAT 05/01/13 03:35:09 5004 SUBROUTINE TCOQ8A(POINTS,QSIGAU,ETAGAU,DZEGAU,POIGAU,SHPTOT) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) ************************************************************************ * * T C O Q 8 A * ----------- * * FONCTION: ON ACQUIERT: * --------- - LES COORDONNEES INTRINSEQUES * - LES FONCTIONS DE FORME ET LEURS DERIVEES * POUR L'ELEMENT DE THERMIQUE COQ8. * * MODULES UTILISES: * ----------------- * -INC CCOPTIO * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * POINTS (E) CHAINE DE CARACTERES: * 'NOEUDS' SI ON VEUT LES VALEURS AUX NOEUDS * 'GAUSS' POUR LES VALEURS AUX POINTS DE GAUSS. * QSIGAU (S) | * ETAGAU (S) | COORDONNEES INTRINSEQUES. * DZEGAU (S) | * POIGAU (S) POIDS D'INTEGRATION,SI ON A 'GAUSS'. * SHPTOT (S) FONCTIONS DE FORME ET LEURS DERIVEES. * REAL*8 QSIGAU(18),ETAGAU(18),POIGAU(18) REAL*8 SHPTOT(6,8,18),DZEGAU(18) CHARACTER*(*) POINTS * * CONSTANTES: * ----------- * * PARAMETER ( O0=0.D0 ) PARAMETER ( O1=1.D0 ) PARAMETER ( O5=0.5D0 ) PARAMETER ( O25=0.25D0 ) PARAMETER ( XE=0.577350269189626D0 ) PARAMETER ( XI=0.774596669241483D0 ) PARAMETER ( XI2=0.555555555555555D0 ) PARAMETER ( ETE=0.888888888888888D0 ) PARAMETER ( XI3=XI2*XI2 ) PARAMETER ( ET2=ETE*ETE ) PARAMETER ( XIET=XI2*ETE ) * * * AUTEUR, DATE DE CREATION: * ------------------------- * * J-P.SAUSSAIS OCT.77,REPRIS PAR DENIS ROBERT,LE 23 OCTOBRE 1987. * ADAPTE POUR LE COQUES P DOWLATYARI MAI 92 * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * IF (POINTS(1:5).EQ.'NOEUD') GOTO 66 IF (POINTS(1:5).NE.'GAUSS') GOTO 100 * * COORDONNEES DES 18 POINTS DE GAUSS * NBPGAU=18 NBNO=8 QSIGAU(9)=XI QSIGAU(3)=XI QSIGAU(6)=XI QSIGAU(7)=-XI QSIGAU(1)=-XI QSIGAU(4)=-XI QSIGAU(8)=O0 QSIGAU(2)=O0 QSIGAU(5)=O0 ETAGAU(9)=XI ETAGAU(7)=XI ETAGAU(8)=XI ETAGAU(3)=-XI ETAGAU(1)=-XI ETAGAU(2)=-XI ETAGAU(6)=O0 ETAGAU(4)=O0 ETAGAU(5)=O0 * DO 500 I=1,9 QSIGAU(I+9)=QSIGAU(I) ETAGAU(I+9)=ETAGAU(I) DZEGAU(I) =-XE DZEGAU(I+9)= XE 500 CONTINUE * POIGAU(9)=XI3 POIGAU(3)=XI3 POIGAU(7)=XI3 POIGAU(1)=XI3 POIGAU(6)=XIET POIGAU(4)=XIET POIGAU(8)=XIET POIGAU(2)=XIET POIGAU(5)=ET2 DO 600 I=1,9 POIGAU(I+9)=POIGAU(I) 600 CONTINUE GOTO 2 * * COORDONNEES DES NOEUDS * 66 CONTINUE NBNO=8 NBPGAU=NBNO QSIGAU(1)=O1 ETAGAU(1)=O1 QSIGAU(2)=O0 ETAGAU(2)=O1 QSIGAU(3)=-O1 ETAGAU(3)=O1 QSIGAU(4)=-O1 ETAGAU(4)=O0 QSIGAU(5)=-O1 ETAGAU(5)=-O1 QSIGAU(6)=O0 ETAGAU(6)=-O1 QSIGAU(7)=O1 ETAGAU(7)=-O1 QSIGAU(8)=O1 ETAGAU(8)=O0 * * FONCTIONS DE FORME ET LEURS DERIVEES * 2 DO 1 I=1,NBPGAU X=QSIGAU(I) Y=ETAGAU(I) SHPTOT(1,5,I)=-O25*(O1-X-Y)*(O1+X)*(O1+Y) SHPTOT(1,6,I)=O5*(O1-X*X)*(O1+Y) SHPTOT(1,7,I)=-O25*(O1+X-Y)*(O1-X)*(O1+Y) SHPTOT(1,8,I)=O5*(O1-X)*(O1-Y*Y) SHPTOT(1,1,I)=-O25*(O1+X+Y)*(O1-X)*(O1-Y) SHPTOT(1,2,I)=O5*(O1-X*X)*(O1-Y) SHPTOT(1,3,I)=-O25*(O1-X+Y)*(O1+X)*(O1-Y) SHPTOT(1,4,I)=O5*(O1+X)*(O1-Y*Y) C SHPTOT(2,5,I)=O25*(O1+Y)*(X+X+Y) SHPTOT(2,6,I)=-X*(O1+Y) SHPTOT(2,7,I)=O25*(O1+Y)*(X+X-Y) SHPTOT(2,8,I)=-O5*(O1-Y*Y) SHPTOT(2,1,I)=O25*(O1-Y)*(X+X+Y) SHPTOT(2,2,I)=-X*(O1-Y) SHPTOT(2,3,I)=O25*(O1-Y)*(X+X-Y) SHPTOT(2,4,I)=O5*(O1-Y*Y) C SHPTOT(3,5,I)=O25*(O1+X)*(X+Y+Y) SHPTOT(3,6,I)=O5*(O1-X*X) SHPTOT(3,7,I)=O25*(O1-X)*(Y+Y-X) SHPTOT(3,8,I)=-Y*(O1-X) SHPTOT(3,1,I)=O25*(O1-X)*(X+Y+Y) SHPTOT(3,2,I)=-O5*(O1-X*X) SHPTOT(3,3,I)=O25*(O1+X)*(-X+Y+Y) SHPTOT(3,4,I)=-Y*(O1+X) 1 CONTINUE RETURN 100 CONTINUE CALL ERREUR(19) * END