C TPR15A SOURCE CHAT 05/01/13 03:43:25 5004 SUBROUTINE TPR15A(POINTS,QSIGAU,ETAGAU,DZEGAU,POIGAU,SHPTOT) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) ************************************************************************ * * T P R 1 5 A * ----------- * * FONCTION: ON ACQUIERT: * --------- - LES COORDONNEES INTRINSEQUES * - LES FONCTIONS DE FORME ET LEURS DERIVEES * POUR L'ELEMENT DE THERMIQUE PR15. * * 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(21),ETAGAU(21),DZEGAU(21),POIGAU(21) REAL*8 SHPTOT(6,15,21) REAL*8 VT(6),DVXT(6),DVYT(6) CHARACTER*(*) POINTS * * CONSTANTES: * ----------- * * PARAMETER ( O0=0.D0 ) PARAMETER ( O1=1.D0 ) PARAMETER ( O5=0.5D0 ) PARAMETER ( O2=2.D0 ) PARAMETER ( S=0.774596669241483D0 ) PARAMETER ( A=0.470142064105115D0 ) PARAMETER ( B=0.101286507323456D0 ) PARAMETER ( C=0.333333333333333D0 ) PARAMETER ( W234=0.0661970763942530D0 ) PARAMETER ( W567=0.0629695902724135D0 ) PARAMETER ( W234HB=W234*5.D0/9.D0 ) PARAMETER ( W234C=W234*8.D0/9.D0 ) PARAMETER ( W567HB=W567*5.D0/9.D0 ) PARAMETER ( W567C=W567*8.D0/9.D0 ) PARAMETER ( W116=1.D0/16.D0 ) PARAMETER ( W01=0.1D0 ) PARAMETER ( O3=3.D0 ) PARAMETER ( O4=4.D0 ) * * * AUTEUR, DATE DE CREATION: * ------------------------- * * J-P.SAUSSAIS OCT.77,REPRIS PAR DENIS ROBERT,LE 26 OCTOBRE 1987. * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * IF (POINTS(1:5).EQ.'NOEUD') GOTO 66 IF (POINTS(1:5).NE.'GAUSS') GOTO 200 * * COORDONNEES DES 21 POINTS DE GAUSS * NBPGAU=21 NBNO=15 QSIGAU(1) = C ETAGAU(1) = C DZEGAU(1) =-S QSIGAU(2) = A ETAGAU(2) = A DZEGAU(2) =-S QSIGAU(3) = O1-O2*A ETAGAU(3) = A DZEGAU(3) =-S QSIGAU(4) = A ETAGAU(4) = O1-O2*A DZEGAU(4) =-S QSIGAU(5) = B ETAGAU(5) = B DZEGAU(5) =-S QSIGAU(6) = O1-O2*B ETAGAU(6) = B DZEGAU(6) =-S QSIGAU(7) = B ETAGAU(7) = O1-O2*B DZEGAU(7) =-S QSIGAU(8) = C ETAGAU(8) = C DZEGAU(8) = O0 QSIGAU(9) = A ETAGAU(9) = A DZEGAU(9) = O0 QSIGAU(10)= O1-O2*A ETAGAU(10)= A DZEGAU(10)= O0 QSIGAU(11)= A ETAGAU(11)= O1-O2*A DZEGAU(11)= O0 QSIGAU(12)= B ETAGAU(12)= B DZEGAU(12)= O0 QSIGAU(13)= O1-O2*B ETAGAU(13)= B DZEGAU(13)= O0 QSIGAU(14)= B ETAGAU(14)= O1-O2*B DZEGAU(14)= O0 QSIGAU(15)= C ETAGAU(15)= C DZEGAU(15)= S QSIGAU(16)= A ETAGAU(16)= A DZEGAU(16)= S QSIGAU(17)= O1-O2*A ETAGAU(17)= A DZEGAU(17)= S QSIGAU(18)= A ETAGAU(18)= O1-O2*A DZEGAU(18)= S QSIGAU(19)= B ETAGAU(19)= B DZEGAU(19)= S QSIGAU(20)= O1-O2*B ETAGAU(20)= B DZEGAU(20)= S QSIGAU(21)= B ETAGAU(21)= O1-O2*B DZEGAU(21)= S * * POIDS * POIGAU(1) =W116 POIGAU(2) =W234HB POIGAU(3) =W234HB POIGAU(4) =W234HB POIGAU(5) =W567HB POIGAU(6) =W567HB POIGAU(7) =W567HB POIGAU(8) =W01 POIGAU(9) =W234C POIGAU(10)=W234C POIGAU(11)=W234C POIGAU(12)=W567C POIGAU(13)=W567C POIGAU(14)=W567C POIGAU(15)=W116 POIGAU(16)=W234HB POIGAU(17)=W234HB POIGAU(18)=W234HB POIGAU(19)=W567HB POIGAU(20)=W567HB POIGAU(21)=W567HB GOTO 2 * * COORDONNEES INTRINSEQUES DES NOEUDS * 66 CONTINUE NBNO=15 NBPGAU=NBNO QSIGAU(1)=O0 ETAGAU(1)=O0 DZEGAU(1)=-O1 QSIGAU(2)=O5 ETAGAU(2)=O0 DZEGAU(2)=-O1 QSIGAU(3)=O1 ETAGAU(3)=O0 DZEGAU(3)=-O1 QSIGAU(4)=O5 ETAGAU(4)=O5 DZEGAU(4)=-O1 QSIGAU(5)=O0 ETAGAU(5)=O1 DZEGAU(5)=-O1 QSIGAU(6)=O0 ETAGAU(6)=O5 DZEGAU(6)=-O1 QSIGAU(7)=O0 ETAGAU(7)=O0 DZEGAU(7)=O0 QSIGAU(8)=O1 ETAGAU(8)=O0 DZEGAU(8)=O0 QSIGAU(9)=O0 ETAGAU(9)=O1 DZEGAU(9)=O0 QSIGAU(10)=O0 ETAGAU(10)=O0 DZEGAU(10)=O1 QSIGAU(11)=O5 ETAGAU(11)=O0 DZEGAU(11)=O1 QSIGAU(12)=O1 ETAGAU(12)=O0 DZEGAU(12)=O1 QSIGAU(13)=O5 ETAGAU(13)=O5 DZEGAU(13)=O1 QSIGAU(14)=O0 ETAGAU(14)=O1 DZEGAU(14)=O1 QSIGAU(15)=O0 ETAGAU(15)=O5 DZEGAU(15)=O1 C C--- FONCTIONS DE FORME C 2 DO 20 I=1,NBPGAU X=QSIGAU(I) Y=ETAGAU(I) Z=DZEGAU(I) C C--- FONCTIONS DE FORME DU T6 DE BASE C XY1=O1-X-Y VT(1)=O2*XY1*(O5-X-Y) VT(2)=O4*X*XY1 VT(3)=O2*X*(X-O5) VT(4)=O4*X*Y VT(5)=O2*Y*(Y-O5) VT(6)=O4*XY1*Y C C--- DERIVEES DES FONCTIONS DE FORME DU T6 DE BASE C DVXT(1)=O4*(X+Y)-O3 DVXT(2)=O4*(O1-X-X-Y) DVXT(3)=O4*X-O1 DVXT(4)=O4*Y DVXT(5)=O0 DVXT(6)=-O4*Y C DVYT(1)=O4*(X+Y)-O3 DVYT(2)=-O4*X DVYT(3)=O0 DVYT(4)=O4*X DVYT(5)=O4*Y-O1 DVYT(6)=O4*(O1-X-Y-Y) C C--- FONCTIONS DE FORME DU PRISME C ZM1=(O1-Z)*O5 ZP1=(O1+Z)*O5 ZM2=O1-Z*Z C SHPTOT(1,7,I)=ZM2*XY1 SHPTOT(1,8,I)=ZM2*X SHPTOT(1,9,I)=ZM2*Y C SHPTOT(1,1,I)=ZM1*VT(1)-SHPTOT(1,7,I)*O5 SHPTOT(1,2,I)=ZM1*VT(2) SHPTOT(1,3,I)=ZM1*VT(3)-SHPTOT(1,8,I)*O5 SHPTOT(1,4,I)=ZM1*VT(4) SHPTOT(1,5,I)=ZM1*VT(5)-SHPTOT(1,9,I)*O5 SHPTOT(1,6,I)=ZM1*VT(6) C SHPTOT(1,10,I)=ZP1*VT(1)-SHPTOT(1,7,I)*O5 SHPTOT(1,11,I)=ZP1*VT(2) SHPTOT(1,12,I)=ZP1*VT(3)-SHPTOT(1,8,I)*O5 SHPTOT(1,13,I)=ZP1*VT(4) SHPTOT(1,14,I)=ZP1*VT(5)-SHPTOT(1,9,I)*O5 SHPTOT(1,15,I)=ZP1*VT(6) C C--- DERIVEES EN X DES FONCTIONS DE FORME C SHPTOT(2,7,I) =-ZM2 SHPTOT(2,8,I)=ZM2 SHPTOT(2,9,I) =O0 C SHPTOT(2,1,I)=ZM1*DVXT(1)-SHPTOT(2,7,I)*O5 SHPTOT(2,2,I)=ZM1*DVXT(2) SHPTOT(2,3,I)=ZM1*DVXT(3)-SHPTOT(2,8,I)*O5 SHPTOT(2,4,I)=ZM1*DVXT(4) SHPTOT(2,5,I)=ZM1*DVXT(5)-SHPTOT(2,9,I)*O5 SHPTOT(2,6,I)=ZM1*DVXT(6) C SHPTOT(2,10,I)=ZP1*DVXT(1)-SHPTOT(2,7,I)*O5 SHPTOT(2,11,I)=ZP1*DVXT(2) SHPTOT(2,12,I)=ZP1*DVXT(3)-SHPTOT(2,8,I)*O5 SHPTOT(2,13,I)=ZP1*DVXT(4) SHPTOT(2,14,I)=ZP1*DVXT(5)-SHPTOT(2,9,I)*O5 SHPTOT(2,15,I)=ZP1*DVXT(6) C C--- DERIVEES EN Y DES FONCTIONS DE FORME DU PRISME C SHPTOT(3,7,I) =-ZM2 SHPTOT(3,8,I)=O0 SHPTOT(3,9,I) =ZM2 C SHPTOT(3,1,I)=ZM1*DVYT(1)-SHPTOT(3,7,I)*O5 SHPTOT(3,2,I)=ZM1*DVYT(2) SHPTOT(3,3,I)=ZM1*DVYT(3)-SHPTOT(3,8,I)*O5 SHPTOT(3,4,I)=ZM1*DVYT(4) SHPTOT(3,5,I)=ZM1*DVYT(5)-SHPTOT(3,9,I)*O5 SHPTOT(3,6,I)=ZM1*DVYT(6) C SHPTOT(3,10,I)=ZP1*DVYT(1)-SHPTOT(3,7,I)*O5 SHPTOT(3,11,I)=ZP1*DVYT(2) SHPTOT(3,12,I)=ZP1*DVYT(3)-SHPTOT(3,8,I)*O5 SHPTOT(3,13,I)=ZP1*DVYT(4) SHPTOT(3,14,I)=ZP1*DVYT(5)-SHPTOT(3,9,I)*O5 SHPTOT(3,15,I)=ZP1*DVYT(6) C C--- DERIVEES EN Z DES FONCTIONS DE FORME C SHPTOT(4,7,I) =-O2*Z*XY1 SHPTOT(4,8,I)=-O2*Z*X SHPTOT(4,9,I) =-O2*Z*Y C SHPTOT(4,1,I)=-(VT(1)+SHPTOT(4,7,I))*O5 SHPTOT(4,2,I) =-VT(2)*O5 SHPTOT(4,3,I)=-(VT(3)+SHPTOT(4,8,I))*O5 SHPTOT(4,4,I) =-VT(4)*O5 SHPTOT(4,5,I)=-(VT(5)+SHPTOT(4,9,I))*O5 SHPTOT(4,6,I) =-VT(6)*O5 C SHPTOT(4,10,I)=(VT(1)-SHPTOT(4,7,I))*O5 SHPTOT(4,11,I) =VT(2)*O5 SHPTOT(4,12,I)=(VT(3)-SHPTOT(4,8,I))*O5 SHPTOT(4,13,I) =VT(4)*O5 SHPTOT(4,14,I)=(VT(5)-SHPTOT(4,9,I))*O5 SHPTOT(4,15,I) =VT(6)*O5 20 CONTINUE RETURN 200 CONTINUE CALL ERREUR(19) * END