1 : C GEOLF1 SOURCE GOUNAND 06/08/04 21:15:48 5520 2 : SUBROUTINE GEOLF1(IESREL,IESREF,NDDL,NBPOGO,NBELEV,NBELFV,NBELEF, 3 : $ NLFVDF, 4 : $ DFFPG,JCOOR,SSFACT, 5 : $ JMAJAC, 6 : $ IMPR,IRET) 7 : IMPLICIT REAL*8 (A-H,O-Z) 8 : IMPLICIT INTEGER (I-N) 9 : C*********************************************************************** 10 : C NOM : GEOLF1 11 : C PROJET : Noyau linéaire NLIN 12 : C DESCRIPTION : Calcul de la matrice jacobienne d'une transformation 13 : C géométrique aux points de Gauss d'un élément de 14 : C référence pour chaque élément réel. 15 : C On a : 16 : C Fonction f : R^m -> R^n 17 : C a=(a1...am) |-> f(a)=(f1(a)...fn(a) 18 : C => matjac(i,j)(a)=Dj fi (a) = dfi / dxj (a) 19 : C 20 : C Par exemple, pour une surface en 3D, la matrice jacobienne 21 : C s'exprime comme : 22 : C 23 : C 24 : C [] 25 : C [J] = [ ] . [ { dNg/d(ksi) } { dNg/d(eta) } ] 26 : C [ ] 27 : C 28 : C (3x2) (3 x Nnoeuds) (Nnoeuds x 2) 29 : C 30 : C Ici, le nb de ddl est égal aux nbs de noeuds car l'interpolation 31 : C pour la géométrie est de type nodale. 32 : C 33 : C Ceci ressemble à un produit tensoriel (cf. coga1) 34 : C 35 : C 36 : C LANGAGE : Fortran 77 (sauf E/S) 37 : C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) 38 : C mél : gounand@semt2.smts.cea.fr 39 : C*********************************************************************** 40 : C APPELES : - 41 : C APPELE PAR : GEOLIF 42 : C*********************************************************************** 43 : C ENTREES : * IESREL (type entier) : dimension de l'espace 44 : C réel (i.e. géométrique). 45 : C * IESREF (type entier) : dimension de l'espace de 46 : C référence. 47 : C * NDDL (type entier) : nombre de ddl (par 48 : C élément) de la transformation géométrique. 49 : C * NDPOGO (type entier) : nombre de points 50 : C d'intégration. 51 : C * NBELEV (type entier) : nombre d'éléments du 52 : C maillage élémentaire courant. 53 : C * DFFPG (type entier) : valeurs des dérivées 54 : C premières des fonctions d'interpolation de la 55 : C transformation géométrique aux points de gauss 56 : C sur l'élément de référence. 57 : C * JCOOR (type réel) : valeurs des ddl de la 58 : C transformation géométrique sur le maillage 59 : C élémentaire courant. 60 : C ENTREES/SORTIES : * JMAJAC (type réel) : valeurs de la matrice 61 : C jacobienne aux points de Gauss sur le maillage 62 : C élémentaire courant. 63 : C SORTIES : - 64 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé 65 : C*********************************************************************** 66 : C VERSION : v1, 10/01/03, version initiale 67 : C HISTORIQUE : v1, 10/01/03, création 68 : C HISTORIQUE : 69 : C HISTORIQUE : 70 : C*********************************************************************** 71 : C Prière de PRENDRE LE TEMPS de compléter les commentaires 72 : C en cas de modification de ce sous-programme afin de faciliter 73 : C la maintenance ! 74 : C*********************************************************************** 75 : -INC CCOPTIO 76 : INTEGER IESREL,IESREF,NDDL,NBPOGO,NBELEV,NBELEF,NBELFV 77 : REAL*8 DFFPG (NDDL,IESREF,NBPOGO,NLFVDF) 78 : REAL*8 JCOOR (NDDL,IESREL,NBELEV) 79 : LOGICAL SSFACT(NBELFV,NBELEV) 80 : REAL*8 JMAJAC(IESREL,IESREF,NBPOGO,NBELEF) 81 : * 82 : INTEGER IMPR,IRET 83 : INTEGER IBELEF,IBELFV,IBELEV,IBPOGO,IREEL,IREFER 84 : * 85 : * Executable statements 86 : * 87 : IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans geolf1' 88 : IBELEF=0 89 : DO 1 IBELEV=1,NBELEV 90 : DO IBELFV=1,NBELFV 91 : IF (SSFACT(IBELFV,IBELEV)) THEN 92 : IF (NLFVDF.EQ.1) THEN 93 : ILFVDF=1 94 : ELSE 95 : ILFVDF=IBELFV 96 : ENDIF 97 : IBELEF=IBELEF+1 98 : DO 12 IBPOGO=1,NBPOGO 99 : DO 122 IREFER=1,IESREF 100 : DO 1222 IREEL=1,IESREL 101 : DO 12222 IDDL=1,NDDL 102 : JMAJAC(IREEL,IREFER,IBPOGO,IBELEF)= 103 : $ JMAJAC(IREEL,IREFER,IBPOGO,IBELEF) 104 : $ + (JCOOR(IDDL,IREEL,IBELEV) 105 : $ *DFFPG(IDDL,IREFER,IBPOGO,ILFVDF)) 106 : 12222 CONTINUE 107 : 1222 CONTINUE 108 : 122 CONTINUE 109 : 12 CONTINUE 110 : ENDIF 111 : ENDDO 112 : 1 CONTINUE 113 : 114 : * 115 : * Normal termination 116 : * 117 : IRET=0 118 : RETURN 119 : * 120 : * Format handling 121 : * 122 : * 123 : * Error handling 124 : * 125 : 9999 CONTINUE 126 : IRET=1 127 : WRITE(IOIMP,*) 'An error was detected in subroutine geolf1' 128 : RETURN 129 : * 130 : * End of subroutine GEOLF1 131 : * 132 : END 133 : 134 :
© Cast3M 2003 - All rights reserved.
Disclaimer