C GEOLI1 SOURCE GOUNAND 05/12/21 21:26:46 5281 SUBROUTINE GEOLI1(IESREL,IESREF,NDNOEU,NDPOGO,NDELEM, $ DFNPG,JCOOR, $ JMAJAC, $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : GEOLI1 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 [ ] C [J] = [ ] . [ { dNg/d(ksi) } { dNg/d(eta) } ] C [ ] 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 : GEOLIN 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 * NDNOEU (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 * NDELEM (type entier) : nombre d'éléments du C maillage élémentaire courant. C * DFNPG (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/08/99, version initiale C HISTORIQUE : v1, 10/08/99, 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,NDNOEU,NDPOGO,NDELEM REAL*8 DFNPG (NDNOEU,IESREF,NDPOGO) REAL*8 JCOOR (NDNOEU,IESREL,NDELEM) REAL*8 JMAJAC(IESREL,IESREF,NDPOGO,NDELEM) * INTEGER IMPR,IRET INTEGER IELEM,IPOGO,INOEUD,IREEL,IREFER * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans geoli1' DO 1 IELEM=1,NDELEM DO 12 IPOGO=1,NDPOGO DO 122 IREFER=1,IESREF DO 1222 IREEL=1,IESREL DO 12222 INOEUD=1,NDNOEU JMAJAC(IREEL,IREFER,IPOGO,IELEM)= $ JMAJAC(IREEL,IREFER,IPOGO,IELEM) $ + (JCOOR(INOEUD,IREEL,IELEM) $ *DFNPG(INOEUD,IREFER,IPOGO)) 12222 CONTINUE 1222 CONTINUE 122 CONTINUE 12 CONTINUE 1 CONTINUE * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine geoli1' RETURN * * End of subroutine GEOLI1 * END