geolf1
C GEOLF1 SOURCE GOUNAND 06/08/04 21:15:48 5520 $ NLFVDF, $ DFFPG,JCOOR,SSFACT, $ JMAJAC, $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : GEOLF1 C PROJET : Noyau linéaire NLIN C DESCRIPTION : Calcul de la matrice jacobienne d'une transformation C géométrique aux points de Gauss d'un élément de C référence pour chaque élément réel. C On a : C Fonction f : R^m -> R^n C a=(a1...am) |-> f(a)=(f1(a)...fn(a) C => matjac(i,j)(a)=Dj fi (a) = dfi / dxj (a) C C Par exemple, pour une surface en 3D, la matrice jacobienne C s'exprime comme : C C C [ <xn> ] C [J] = [ <yn> ] . [ { dNg/d(ksi) } { dNg/d(eta) } ] C [ <zn> ] C C (3x2) (3 x Nnoeuds) (Nnoeuds x 2) C C Ici, le nb de ddl est égal aux nbs de noeuds car l'interpolation C pour la géométrie est de type nodale. C C Ceci ressemble à un produit tensoriel (cf. coga1) C C C LANGAGE : Fortran 77 (sauf E/S) C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : - C APPELE PAR : GEOLIF C*********************************************************************** C ENTREES : * IESREL (type entier) : dimension de l'espace C réel (i.e. géométrique). C * IESREF (type entier) : dimension de l'espace de C référence. C * NDDL (type entier) : nombre de ddl (par C élément) de la transformation géométrique. C * NDPOGO (type entier) : nombre de points C d'intégration. C * NBELEV (type entier) : nombre d'éléments du C maillage élémentaire courant. C * DFFPG (type entier) : valeurs des dérivées C premières des fonctions d'interpolation de la C transformation géométrique aux points de gauss C sur l'élément de référence. C * JCOOR (type réel) : valeurs des ddl de la C transformation géométrique sur le maillage C élémentaire courant. C ENTREES/SORTIES : * JMAJAC (type réel) : valeurs de la matrice C jacobienne aux points de Gauss sur le maillage C élémentaire courant. C SORTIES : - C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 10/01/03, version initiale C HISTORIQUE : v1, 10/01/03, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO INTEGER IESREL,IESREF,NDDL,NBPOGO,NBELEV,NBELEF,NBELFV REAL*8 DFFPG (NDDL,IESREF,NBPOGO,NLFVDF) REAL*8 JCOOR (NDDL,IESREL,NBELEV) LOGICAL SSFACT(NBELFV,NBELEV) REAL*8 JMAJAC(IESREL,IESREF,NBPOGO,NBELEF) * INTEGER IMPR,IRET INTEGER IBELEF,IBELFV,IBELEV,IBPOGO,IREEL,IREFER * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans geolf1' IBELEF=0 DO 1 IBELEV=1,NBELEV DO IBELFV=1,NBELFV IF (SSFACT(IBELFV,IBELEV)) THEN IF (NLFVDF.EQ.1) THEN ILFVDF=1 ELSE ILFVDF=IBELFV ENDIF IBELEF=IBELEF+1 DO 12 IBPOGO=1,NBPOGO DO 122 IREFER=1,IESREF DO 1222 IREEL=1,IESREL DO 12222 IDDL=1,NDDL JMAJAC(IREEL,IREFER,IBPOGO,IBELEF)= $ JMAJAC(IREEL,IREFER,IBPOGO,IBELEF) $ + (JCOOR(IDDL,IREEL,IBELEV) $ *DFFPG(IDDL,IREFER,IBPOGO,ILFVDF)) 12222 CONTINUE 1222 CONTINUE 122 CONTINUE 12 CONTINUE ENDIF ENDDO 1 CONTINUE * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine geolf1' RETURN * * End of subroutine GEOLF1 * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales