C GEOMF1 SOURCE GOUNAND 06/08/04 21:15:59 5520 SUBROUTINE GEOMF1(NDDL,IESREL,NBPOGO,NBELEV,NBELFV,NBELEF, $ NPJAC, $ JCOOR,FFPG,SSFACT, $ JDTJAC,LAXI, $ JDTJA2, $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : GEOMF1 C PROJET : C DESCRIPTION : On multiplie le determinant de la matrice jacobienne aux C points de Gauss par 2PIR 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 : GEOMFT C*********************************************************************** C ENTREES : C ENTREES/SORTIES : C SORTIES : - C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 02/10/03, version initiale C HISTORIQUE : v1, 02/10/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 CCOPTIO -INC CCREEL INTEGER NDDL,IESREL,NBPOGO,NBELEV,NBELFV,NBELEF REAL*8 JCOOR(NDDL,IESREL,NBELEV) REAL*8 FFPG(NDDL,NBPOGO,NBELFV) REAL*8 JDTJAC(NPJAC,NBELEF) LOGICAL SSFACT(NBELFV,NBELEV) REAL*8 JDTJA2(NBPOGO,NBELEF) * INTEGER IMPR,IRET INTEGER IPOGO,JESREL,IDDL REAL*8 DEPIER,IDEPIR * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans geomf1' IF (LAXI.EQ.1) THEN IBELEF=0 DO IBELEV=1,NBELEV DO IBELFV=1,NBELFV IF (SSFACT(IBELFV,IBELEV)) THEN IBELEF=IBELEF+1 DO IPOGO=1,NBPOGO IF (NPJAC.EQ.1) THEN IPJAC=1 ELSE IPJAC=IPOGO ENDIF JESREL=1 DEPIER=XZERO DO IDDL=1,NDDL DEPIER=DEPIER $ + (JCOOR(IDDL,JESREL,IBELEV) $ * FFPG(IDDL,IPOGO,IBELFV)) ENDDO DEPIER=2.D0*XPI*DEPIER JDTJA2(IPOGO,IBELEF)= $ JDTJAC(IPJAC,IBELEF) $ * DEPIER ENDDO ENDIF ENDDO ENDDO ELSEIF (LAXI.EQ.3) THEN IBELEF=0 DO IBELEV=1,NBELEV DO IBELFV=1,NBELFV IF (SSFACT(IBELFV,IBELEV)) THEN IBELEF=IBELEF+1 DO IPOGO=1,NBPOGO IF (NPJAC.EQ.1) THEN IPJAC=1 ELSE IPJAC=IPOGO ENDIF JESREL=1 IDEPIR=XZERO DO IDDL=1,NDDL IDEPIR=IDEPIR $ + (JCOOR(IDDL,JESREL,IBELEV) $ * FFPG(IDDL,IPOGO,IBELFV)) ENDDO IDEPIR=2.D0*XPI*(1.D0/IDEPIR) JDTJA2(IPOGO,IBELEF)= $ JDTJAC(IPJAC,IBELEF) $ * IDEPIR ENDDO ENDIF ENDDO ENDDO ELSE WRITE(IOIMP,*) 'LAXI=',LAXI,' incorrect' ENDIF * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine geomf1' RETURN * * End of subroutine GEOMF1 * END