hyshp
C HYSHP SOURCE CHAT 05/01/13 00:27:39 5004 C----------------------------------------------------------------------- C Fonctions de base des elements hybrides (elements de H(div)) C----------------------------------------------------------------------- C C--------------------------- C Parametres Entree/Sortie : C--------------------------- C C E/ QSI | Coordonnees reduites (i.e. dans le repere local lie C E/ ETA | a l'element de reference [-1,1]x[-1,1]) du point ou C E/ DZE | on calcule les fonctions de base hybrides C E/ NEF : Numero de l'element fini hybride dans NOMTP C E/ NBDDL : Nombre de noeuds portant des degres de liberte C E/ NDIM : Dimension de SHY=IDIM*(IDIM+1) (IDIM=2 EN 2D,3 EN 3D) C /S SHY : Fonctions de base rangees par colonnes. On stocke la C valeur de la fonction, puis la derivee par rapport a C chacune des directions. C /S IRET : Vaut 1 si l'element n'est pas encore implante C C----------------------------------------------------------------------- C C Langage : FORTRAN77 C C Auteurs : F.DABBENE 08/93 C C.MARTIN 10/94 : Extension au 3D C----------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C PARAMETER (XZER=0.D0, UN=1.D0, DEUX=2.D0, QUATRE=4.D0, HUIT=8.D0) DIMENSION SHY(NDIM,NBDDL) C IRET = 0 C IF (NEF.EQ.99) THEN C C= Triangle a 3 Noeuds : HYT3 C SHY(1,1) = QSI SHY(2,1) = ETA - UN SHY(3,1) = UN SHY(4,1) = XZER SHY(5,1) = XZER SHY(6,1) = UN C SHY(1,2) = QSI SHY(2,2) = ETA SHY(3,2) = UN SHY(4,2) = XZER SHY(5,2) = XZER SHY(6,2) = UN C SHY(1,3) = QSI - UN SHY(2,3) = ETA SHY(3,3) = UN SHY(4,3) = XZER SHY(5,3) = XZER SHY(6,3) = UN C ELSEIF (NEF.EQ.100) THEN C C= Carre a 4 Noeuds : HYQ4 C SHY(1,1) = XZER SHY(2,1) = (ETA - UN) / QUATRE SHY(3,1) = XZER SHY(4,1) = XZER SHY(5,1) = XZER SHY(6,1) = UN / QUATRE C SHY(1,2) = (QSI + UN) / QUATRE SHY(2,2) = XZER SHY(3,2) = UN / QUATRE SHY(4,2) = XZER SHY(5,2) = XZER SHY(6,2) = XZER C SHY(1,3) = XZER SHY(2,3) = (ETA + UN) / QUATRE SHY(3,3) = XZER SHY(4,3) = XZER SHY(5,3) = XZER SHY(6,3) = UN / QUATRE C SHY(1,4) = (QSI - UN) / QUATRE SHY(2,4) = XZER SHY(3,4) = UN / QUATRE SHY(4,4) = XZER SHY(5,4) = XZER SHY(6,4) = XZER C ELSEIF (NEF.EQ.101) THEN C C= Tetraedre a 4 Noeuds : HYT4 C SHY(1,1) = DEUX * QSI SHY(2,1) = DEUX * ETA - DEUX SHY(3,1) = DEUX * DZE SHY(4,1) = DEUX SHY(5,1) = XZER SHY(6,1) = XZER SHY(7,1) = XZER SHY(8,1) = DEUX SHY(9,1) = XZER SHY(10,1) = XZER SHY(11,1) = XZER SHY(12,1) = DEUX C SHY(1,2) = DEUX * QSI SHY(2,2) = DEUX * ETA SHY(3,2) = DEUX * DZE - DEUX SHY(4,2) = DEUX SHY(5,2) = XZER SHY(6,2) = XZER SHY(7,2) = XZER SHY(8,2) = DEUX SHY(9,2) = XZER SHY(10,2) = XZER SHY(11,2) = XZER SHY(12,2) = DEUX C SHY(1,3) = DEUX * QSI SHY(2,3) = DEUX * ETA SHY(3,3) = DEUX * DZE SHY(4,3) = DEUX SHY(5,3) = XZER SHY(6,3) = XZER SHY(7,3) = XZER SHY(8,3) = DEUX SHY(9,3) = XZER SHY(10,3) = XZER SHY(11,3) = XZER SHY(12,3) = DEUX C SHY(1,4) = DEUX * QSI - DEUX SHY(2,4) = DEUX * ETA SHY(3,4) = DEUX * DZE SHY(4,4) = DEUX SHY(5,4) = XZER SHY(6,4) = XZER SHY(7,4) = XZER SHY(8,4) = DEUX SHY(9,4) = XZER SHY(10,4) = XZER SHY(11,4) = XZER SHY(12,4) = DEUX C C ELSEIF (NEF.EQ.102) THEN C C= Prisme a 6 Noeuds : HYP6 C SHY(1,1) = XZER SHY(2,1) = XZER SHY(3,1) = DZE - UN SHY(4,1) = XZER SHY(5,1) = XZER SHY(6,1) = XZER SHY(7,1) = XZER SHY(8,1) = XZER SHY(9,1) = XZER SHY(10,1) = XZER SHY(11,1) = XZER SHY(12,1) = UN C SHY(1,2) = XZER SHY(2,2) = XZER SHY(3,2) = DZE + UN SHY(4,2) = XZER SHY(5,2) = XZER SHY(6,2) = XZER SHY(7,2) = XZER SHY(8,2) = XZER SHY(9,2) = XZER SHY(10,2) = XZER SHY(11,2) = XZER SHY(12,2) = UN C SHY(1,3) = QSI / DEUX SHY(2,3) = (ETA - UN) / DEUX SHY(3,3) = XZER SHY(4,3) = UN / DEUX SHY(5,3) = XZER SHY(6,3) = XZER SHY(7,3) = XZER SHY(8,3) = UN / DEUX SHY(9,3) = XZER SHY(10,3) = XZER SHY(11,3) = XZER SHY(12,3) = XZER C SHY(1,4) = QSI / DEUX SHY(2,4) = ETA / DEUX SHY(3,4) = XZER SHY(4,4) = UN / DEUX SHY(5,4) = XZER SHY(6,4) = XZER SHY(7,4) = XZER SHY(8,4) = UN / DEUX SHY(9,4) = XZER SHY(10,4) = XZER SHY(11,4) = XZER SHY(12,4) = XZER C SHY(1,5) = (QSI - UN) / DEUX SHY(2,5) = ETA / DEUX SHY(3,5) = XZER SHY(4,5) = UN / DEUX SHY(5,5) = XZER SHY(6,5) = XZER SHY(7,5) = XZER SHY(8,5) = UN / DEUX SHY(9,5) = XZER SHY(10,5) = XZER SHY(11,5) = XZER SHY(12,5) = XZER C ELSEIF (NEF.EQ.103) THEN C C= Cube a 8 Noeuds : HYC8 C SHY(1,1) = XZER SHY(2,1) = XZER SHY(3,1) = (DZE - UN) / HUIT SHY(4,1) = XZER SHY(5,1) = XZER SHY(6,1) = XZER SHY(7,1) = XZER SHY(8,1) = XZER SHY(9,1) = XZER SHY(10,1) = XZER SHY(11,1) = XZER SHY(12,1) = UN / HUIT C SHY(1,2) = XZER SHY(2,2) = XZER SHY(3,2) = (DZE + UN) / HUIT SHY(4,2) = XZER SHY(5,2) = XZER SHY(6,2) = XZER SHY(7,2) = XZER SHY(8,2) = XZER SHY(9,2) = XZER SHY(10,2) = XZER SHY(11,2) = XZER SHY(12,2) = UN / HUIT C SHY(1,3) = XZER SHY(2,3) = (ETA - UN) / HUIT SHY(3,3) = XZER SHY(4,3) = XZER SHY(5,3) = XZER SHY(6,3) = XZER SHY(7,3) = XZER SHY(8,3) = UN / HUIT SHY(9,3) = XZER SHY(10,3) = XZER SHY(11,3) = XZER SHY(12,3) = XZER C SHY(1,4) = (QSI + UN) / HUIT SHY(2,4) = XZER SHY(3,4) = XZER SHY(4,4) = UN / HUIT SHY(5,4) = XZER SHY(6,4) = XZER SHY(7,4) = XZER SHY(8,4) = XZER SHY(9,4) = XZER SHY(10,4) = XZER SHY(11,4) = XZER SHY(12,4) = XZER C SHY(1,5) = XZER SHY(2,5) = (ETA + UN) / HUIT SHY(3,5) = XZER SHY(4,5) = XZER SHY(5,5) = XZER SHY(6,5) = XZER SHY(7,5) = XZER SHY(8,5) = UN / HUIT SHY(9,5) = XZER SHY(10,5) = XZER SHY(11,5) = XZER SHY(12,5) = XZER C SHY(1,6) = (QSI - UN) / HUIT SHY(2,6) = XZER SHY(3,6) = XZER SHY(4,6) = UN / HUIT SHY(5,6) = XZER SHY(6,6) = XZER SHY(7,6) = XZER SHY(8,6) = XZER SHY(9,6) = XZER SHY(10,6) = XZER SHY(11,6) = XZER SHY(12,6) = XZER ELSE IRET = 1 ENDIF C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales