C TCU20A SOURCE CHAT 05/01/13 03:35:24 5004 SUBROUTINE TCU20A(POINTS,QSIGAU,ETAGAU,DZEGAU,POIGAU,SHPTOT) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) ************************************************************************ * * T C U 2 0 A * ----------- * * FONCTION: ON ACQUIERT: * --------- - LES COORDONNEES INTRINSEQUES * - LES FONCTIONS DE FORME ET LEURS DERIVEES * POUR L'ELEMENT DE THERMIQUE CU20. * * 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(27),ETAGAU(27),DZEGAU(27),POIGAU(27) REAL*8 SHPTOT(6,20,27) CHARACTER*(*) POINTS * * CONSTANTES: * ----------- * * PARAMETER ( X=0.774596669241483D0 ) PARAMETER ( O0=0.D0 ) PARAMETER ( O1=1.D0 ) PARAMETER ( O2=2.D0 ) PARAMETER ( O5=0.5D0 ) PARAMETER ( O125=0.125D0 ) PARAMETER ( O25=0.25D0 ) PARAMETER ( D9=1.D0/729.D0 ) * * * AUTEUR, DATE DE CREATION: * ------------------------- * * J-P.SAUSSAIS OCT.77,REPRIS PAR DENIS ROBERT,LE 23 OCTOBRE 1987. * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * IF (POINTS(1:5).EQ.'NOEUD') GOTO 66 IF (POINTS(1:5).NE.'GAUSS') GOTO 200 NBPGAU=27 NBNO=20 * * COORDONNEES DES 27 POINTS DE GAUSS * QSIGAU(1)=-X ETAGAU(1)=-X DZEGAU(1)=-X QSIGAU(2)=O0 ETAGAU(2)=-X DZEGAU(2)=-X QSIGAU(3)=X ETAGAU(3)=-X DZEGAU(3)=-X QSIGAU(4)=X ETAGAU(4)=O0 DZEGAU(4)=-X QSIGAU(5)=X ETAGAU(5)=X DZEGAU(5)=-X QSIGAU(6)=O0 ETAGAU(6)=X DZEGAU(6)=-X QSIGAU(7)=-X ETAGAU(7)=X DZEGAU(7)=-X QSIGAU(8)=-X ETAGAU(8)=O0 DZEGAU(8)=-X QSIGAU(9)=O0 ETAGAU(9)=O0 DZEGAU(9)=-X QSIGAU(10)=-X ETAGAU(10)=-X DZEGAU(10)=O0 QSIGAU(11)=O0 ETAGAU(11)=-X DZEGAU(11)=O0 QSIGAU(12)=X ETAGAU(12)=-X DZEGAU(12)=O0 QSIGAU(13)=X ETAGAU(13)=O0 DZEGAU(13)=O0 QSIGAU(14)=X ETAGAU(14)=X DZEGAU(14)=O0 QSIGAU(15)=O0 ETAGAU(15)=X DZEGAU(15)=O0 QSIGAU(16)=-X ETAGAU(16)=X DZEGAU(16)=O0 QSIGAU(17)=-X ETAGAU(17)=O0 DZEGAU(17)=O0 QSIGAU(18)=O0 ETAGAU(18)=O0 DZEGAU(18)=O0 QSIGAU(19)=-X ETAGAU(19)=-X DZEGAU(19)=X QSIGAU(20)=O0 ETAGAU(20)=-X DZEGAU(20)=X QSIGAU(21)=X ETAGAU(21)=-X DZEGAU(21)=X QSIGAU(22)=X ETAGAU(22)=O0 DZEGAU(22)=X QSIGAU(23)=X ETAGAU(23)=X DZEGAU(23)=X QSIGAU(24)=O0 ETAGAU(24)=X DZEGAU(24)=X QSIGAU(25)=-X ETAGAU(25)=X DZEGAU(25)=X QSIGAU(26)=-X ETAGAU(26)=O0 DZEGAU(26)=X QSIGAU(27)=O0 ETAGAU(27)=O0 DZEGAU(27)=X * * POIDS * 5/9 POUR UNE COORDONNEE EGALE A + OU - X * 8/9 POUR UNE COORDONNEE NULLE * W5 =125.D0*D9 W8 =200.D0*D9 W88 =320.D0*D9 W888=512.D0*D9 POIGAU(1)=W5 POIGAU(2)=W8 POIGAU(3)=W5 POIGAU(4)=W8 POIGAU(5)=W5 POIGAU(6)=W8 POIGAU(7)=W5 POIGAU(8)=W8 POIGAU(9)=W88 POIGAU(10)=W8 POIGAU(11)=W88 POIGAU(12)=W8 POIGAU(13)=W88 POIGAU(14)=W8 POIGAU(15)=W88 POIGAU(16)=W8 POIGAU(17)=W88 POIGAU(18)=W888 POIGAU(19)=W5 POIGAU(20)=W8 POIGAU(21)=W5 POIGAU(22)=W8 POIGAU(23)=W5 POIGAU(24)=W8 POIGAU(25)=W5 POIGAU(26)=W8 POIGAU(27)=W88 GOTO 2 * * COORDONNEES INTRINSEQUES DES NOEUDS * 66 CONTINUE NBNO=20 NBPGAU=NBNO QSIGAU(1)=-O1 ETAGAU(1)=-O1 DZEGAU(1)=-O1 QSIGAU(2)=O0 ETAGAU(2)=-O1 DZEGAU(2)=-O1 QSIGAU(3)=O1 ETAGAU(3)=-O1 DZEGAU(3)=-O1 QSIGAU(4)=O1 ETAGAU(4)=O0 DZEGAU(4)=-O1 QSIGAU(5)=O1 ETAGAU(5)=O1 DZEGAU(5)=-O1 QSIGAU(6)=O0 ETAGAU(6)=O1 DZEGAU(6)=-O1 QSIGAU(7)=-O1 ETAGAU(7)=O1 DZEGAU(7)=-O1 QSIGAU(8)=-O1 ETAGAU(8)=O0 DZEGAU(8)=-O1 QSIGAU(9)=-O1 ETAGAU(9)=-O1 DZEGAU(9)=O0 QSIGAU(10)=O1 ETAGAU(10)=-O1 DZEGAU(10)=O0 QSIGAU(11)=O1 ETAGAU(11)=O1 DZEGAU(11)=O0 QSIGAU(12)=-O1 ETAGAU(12)=O1 DZEGAU(12)=O0 QSIGAU(13)=-O1 ETAGAU(13)=-O1 DZEGAU(13)=O1 QSIGAU(14)=O0 ETAGAU(14)=-O1 DZEGAU(14)=O1 QSIGAU(15)=O1 ETAGAU(15)=-O1 DZEGAU(15)=O1 QSIGAU(16)=O1 ETAGAU(16)=O0 DZEGAU(16)=O1 QSIGAU(17)=O1 ETAGAU(17)=O1 DZEGAU(17)=O1 QSIGAU(18)=O0 ETAGAU(18)=O1 DZEGAU(18)=O1 QSIGAU(19)=-O1 ETAGAU(19)=O1 DZEGAU(19)=O1 QSIGAU(20)=-O1 ETAGAU(20)=O0 DZEGAU(20)=O1 C C--- FONCTIONS DE FORME C 2 DO 20 I=1,NBPGAU XI=QSIGAU(I) YI=ETAGAU(I) ZI=DZEGAU(I) C SHPTOT(1,1,I) =-O125*(O1-XI)*(O1-YI)*(O1-ZI)*( XI+YI+ZI+O2) SHPTOT(1,3,I) =-O125*(O1+XI)*(O1-YI)*(O1-ZI)*(-XI+YI+ZI+O2) SHPTOT(1,5,I) =-O125*(O1+XI)*(O1+YI)*(O1-ZI)*(-XI-YI+ZI+O2) SHPTOT(1,7,I) =-O125*(O1-XI)*(O1+YI)*(O1-ZI)*( XI-YI+ZI+O2) SHPTOT(1,13,I)=-O125*(O1-XI)*(O1-YI)*(O1+ZI)*( XI+YI-ZI+O2) SHPTOT(1,15,I)=-O125*(O1+XI)*(O1-YI)*(O1+ZI)*(-XI+YI-ZI+O2) SHPTOT(1,17,I)=-O125*(O1+XI)*(O1+YI)*(O1+ZI)*(-XI-YI-ZI+O2) SHPTOT(1,19,I)=-O125*(O1-XI)*(O1+YI)*(O1+ZI)*( XI-YI-ZI+O2) C SHPTOT(1,2,I)= O25*(O1-XI*XI)*(O1-YI )*(O1-ZI) SHPTOT(1,4,I)= O25*(O1+XI )*(O1-YI*YI)*(O1-ZI) SHPTOT(1,6,I)= O25*(O1-XI*XI)*(O1+YI )*(O1-ZI) SHPTOT(1,8,I)= O25*(O1-XI )*(O1-YI*YI)*(O1-ZI) SHPTOT(1,14,I)=O25*(O1-XI*XI)*(O1-YI )*(O1+ZI) SHPTOT(1,16,I)=O25*(O1+XI )*(O1-YI*YI)*(O1+ZI) SHPTOT(1,18,I)=O25*(O1-XI*XI)*(O1+YI )*(O1+ZI) SHPTOT(1,20,I)=O25*(O1-XI )*(O1-YI*YI)*(O1+ZI) C SHPTOT(1,9,I)= O25*(O1-XI)*(O1-YI)*(O1-ZI*ZI) SHPTOT(1,10,I)=O25*(O1+XI)*(O1-YI)*(O1-ZI*ZI) SHPTOT(1,11,I)=O25*(O1+XI)*(O1+YI)*(O1-ZI*ZI) SHPTOT(1,12,I)=O25*(O1-XI)*(O1+YI)*(O1-ZI*ZI) C C--- DERIVEES EN X DES FONCTIONS DE FORME C SHPTOT(2,1,I)= O125*(O1-YI)*(O1-ZI)*( O2*XI+YI+ZI+O1) SHPTOT(2,3,I)= -O125*(O1-YI)*(O1-ZI)*(-O2*XI+YI+ZI+O1) SHPTOT(2,5,I)= -O125*(O1+YI)*(O1-ZI)*(-O2*XI-YI+ZI+O1) SHPTOT(2,7,I)= O125*(O1+YI)*(O1-ZI)*( O2*XI-YI+ZI+O1) SHPTOT(2,13,I)= O125*(O1-YI)*(O1+ZI)*( O2*XI+YI-ZI+O1) SHPTOT(2,15,I)=-O125*(O1-YI)*(O1+ZI)*(-O2*XI+YI-ZI+O1) SHPTOT(2,17,I)=-O125*(O1+YI)*(O1+ZI)*(-O2*XI-YI-ZI+O1) SHPTOT(2,19,I)= O125*(O1+YI)*(O1+ZI)*( O2*XI-YI-ZI+O1) C SHPTOT(2,2,I)= -O5 *XI*(O1-YI )*(O1-ZI) SHPTOT(2,4,I)= O25 * (O1-YI*YI)*(O1-ZI) SHPTOT(2,6,I)= -O5 *XI*(O1+YI )*(O1-ZI) SHPTOT(2,8,I)= -O25 * (O1-YI*YI)*(O1-ZI) SHPTOT(2,14,I)=-O5 *XI*(O1-YI )*(O1+ZI) SHPTOT(2,16,I)= O25 * (O1-YI*YI)*(O1+ZI) SHPTOT(2,18,I)=-O5 *XI*(O1+YI )*(O1+ZI) SHPTOT(2,20,I)=-O25 * (O1-YI*YI)*(O1+ZI) C SHPTOT(2,9,I)= -O25 *(O1-YI)*(O1-ZI*ZI) SHPTOT(2,10,I)= O25 *(O1-YI)*(O1-ZI*ZI) SHPTOT(2,11,I)= O25 *(O1+YI)*(O1-ZI*ZI) SHPTOT(2,12,I)=-O25 *(O1+YI)*(O1-ZI*ZI) C C--- DERIVEES EN Y DES FONCTIONS DE FORME C SHPTOT(3,1,I)= O125*(O1-XI)*(O1-ZI)*( XI+O2*YI+ZI+O1) SHPTOT(3,3,I)= O125*(O1+XI)*(O1-ZI)*(-XI+O2*YI+ZI+O1) SHPTOT(3,5,I)= -O125*(O1+XI)*(O1-ZI)*(-XI-O2*YI+ZI+O1) SHPTOT(3,7,I)= -O125*(O1-XI)*(O1-ZI)*( XI-O2*YI+ZI+O1) SHPTOT(3,13,I)= O125*(O1-XI)*(O1+ZI)*( XI+O2*YI-ZI+O1) SHPTOT(3,15,I)= O125*(O1+XI)*(O1+ZI)*(-XI+O2*YI-ZI+O1) SHPTOT(3,17,I)=-O125*(O1+XI)*(O1+ZI)*(-XI-O2*YI-ZI+O1) SHPTOT(3,19,I)=-O125*(O1-XI)*(O1+ZI)*( XI-O2*YI-ZI+O1) C SHPTOT(3,2,I)= -O25 *(O1-XI*XI) *(O1-ZI) SHPTOT(3,4,I)= -O5 *(O1+ XI)*YI*(O1-ZI) SHPTOT(3,6,I)= O25 *(O1-XI*XI) *(O1-ZI) SHPTOT(3,8,I)= -O5 *(O1- XI)*YI*(O1-ZI) SHPTOT(3,14,I)=-O25 *(O1-XI*XI) *(O1+ZI) SHPTOT(3,16,I)=-O5 *(O1+ XI)*YI*(O1+ZI) SHPTOT(3,18,I)= O25 *(O1-XI*XI) *(O1+ZI) SHPTOT(3,20,I)=-O5 *(O1- XI)*YI*(O1+ZI) C SHPTOT(3,9,I)= -O25 *(O1-XI)*(O1-ZI*ZI) SHPTOT(3,10,I)=-O25 *(O1+XI)*(O1-ZI*ZI) SHPTOT(3,11,I)= O25 *(O1+XI)*(O1-ZI*ZI) SHPTOT(3,12,I)= O25 *(O1-XI)*(O1-ZI*ZI) C C--- DERIVEES EN Z DES FONCTIONS DE FORME C SHPTOT(4,1,I)= O125*(O1-XI)*(O1-YI)*( XI+YI+O2*ZI+O1) SHPTOT(4,3,I)= O125*(O1+XI)*(O1-YI)*(-XI+YI+O2*ZI+O1) SHPTOT(4,5,I)= O125*(O1+XI)*(O1+YI)*(-XI-YI+O2*ZI+O1) SHPTOT(4,7,I)= O125*(O1-XI)*(O1+YI)*( XI-YI+O2*ZI+O1) SHPTOT(4,13,I)=-O125*(O1-XI)*(O1-YI)*( XI+YI-O2*ZI+O1) SHPTOT(4,15,I)=-O125*(O1+XI)*(O1-YI)*(-XI+YI-O2*ZI+O1) SHPTOT(4,17,I)=-O125*(O1+XI)*(O1+YI)*(-XI-YI-O2*ZI+O1) SHPTOT(4,19,I)=-O125*(O1-XI)*(O1+YI)*( XI-YI-O2*ZI+O1) C SHPTOT(4,2,I)= -O25 *(O1-XI*XI)*(O1- YI) SHPTOT(4,4,I)= -O25 *(O1+ XI)*(O1-YI*YI) SHPTOT(4,6,I)= -O25 *(O1-XI*XI)*(O1+ YI) SHPTOT(4,8,I)= -O25 *(O1- XI)*(O1-YI*YI) SHPTOT(4,14,I)= O25 *(O1-XI*XI)*(O1- YI) SHPTOT(4,16,I)= O25 *(O1+ XI)*(O1-YI*YI) SHPTOT(4,18,I)= O25 *(O1-XI*XI)*(O1+ YI) SHPTOT(4,20,I)= O25 *(O1- XI)*(O1-YI*YI) C SHPTOT(4,9,I)= -O5 *(O1-XI)*(O1-YI)*ZI SHPTOT(4,10,I)=-O5 *(O1+XI)*(O1-YI)*ZI SHPTOT(4,11,I)=-O5 *(O1+XI)*(O1+YI)*ZI SHPTOT(4,12,I)=-O5 *(O1-XI)*(O1+YI)*ZI 20 CONTINUE RETURN 200 CONTINUE CALL ERREUR(19) * END