C INQRPR SOURCE CHAT 07/10/29 21:20:56 5940 SUBROUTINE INQRPR(MYQRFS,IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : INQRPR C PROJET : Noyau linéaire NLIN C DESCRIPTION : C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : C APPELE PAR : C*********************************************************************** C ENTREES : - C ENTREES/SORTIES : C SORTIES : - C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 15/03/04, version initiale C HISTORIQUE : v1, 15/03/04, 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 CCGEOME CBEGININCLUDE SIQUAF SEGMENT IQUAF INTEGER NUMQUF REAL*8 XCONQR(NDIMQR,NBNOQR) INTEGER NUCENT POINTEUR LFACE.MELEME ENDSEGMENT SEGMENT IQUAFS POINTEUR LISQRF(NBQRF).IQUAF ENDSEGMENT CENDINCLUDE SIQUAF POINTEUR MYQRFS.IQUAFS POINTEUR QRCOUR.IQUAF INTEGER NDIMQR,NBNOQR -INC SMELEME POINTEUR MYMEL.MELEME POINTEUR SOUMEL.MELEME INTEGER NBNN,NBELEM,NBSOUS,NBREF -INC SMLENTI POINTEUR INOD.MLENTI -INC SMLREEL POINTEUR ZVAL.MLREEL POINTEUR YVAL.MLREEL POINTEUR XVAL.MLREEL * INTEGER IMPR,IRET REAL*8 ZERO,UN REAL*8 UNS3 REAL*8 UNS2 PARAMETER (UNS3=1.D0/3.D0) PARAMETER (UNS2=1.D0/2.D0) PARAMETER (ZERO=0.D0,UN=1.D0) * INTEGER NUMER * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans inqrpr' * * Elément QUAF PR21 * NDIMQR=3 NBNOQR=21 SEGINI QRCOUR * Numéro de l'élément géométrique dans NOMS * NOMS(1:NOMBR) sont les noms des types d'éléments géométriques, * cf. include CCGEOME CALL FICH4('PR21',NOMS,NOMBR, $ NUMER, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 QRCOUR.NUMQUF=NUMER * * Coordonnées des noeuds du QUAF de référence * JG=21 SEGINI INOD DO IDDL=1,6 INOD.LECT(IDDL)=IDDL ENDDO INOD.LECT( 7)=19 INOD.LECT( 8)= 7 INOD.LECT( 9)=16 INOD.LECT(10)= 8 INOD.LECT(11)=17 INOD.LECT(12)= 9 INOD.LECT(13)=18 INOD.LECT(14)=21 DO IDDL=15,20 INOD.LECT(IDDL)=IDDL-5 ENDDO INOD.LECT(21)=20 * JG=3 SEGINI ZVAL ZVAL.PROG(1)=-UN ZVAL.PROG(2)=ZERO ZVAL.PROG(3)=UN JG=7 SEGINI XVAL SEGINI YVAL XVAL.PROG(1)=ZERO YVAL.PROG(1)=ZERO XVAL.PROG(2)=UNS2 YVAL.PROG(2)=ZERO XVAL.PROG(3)=UN YVAL.PROG(3)=ZERO XVAL.PROG(4)=UNS2 YVAL.PROG(4)=UNS2 XVAL.PROG(5)=ZERO YVAL.PROG(5)=UN XVAL.PROG(6)=ZERO YVAL.PROG(6)=UNS2 XVAL.PROG(7)=UNS3 YVAL.PROG(7)=UNS3 ICPT=0 DO IZ=1,3 DO IT=1,7 ICPT=ICPT+1 JNOD=INOD.LECT(ICPT) QRCOUR.XCONQR(1,JNOD)=XVAL.PROG(IT) QRCOUR.XCONQR(2,JNOD)=YVAL.PROG(IT) QRCOUR.XCONQR(3,JNOD)=ZVAL.PROG(IZ) ENDDO ENDDO SEGSUP ZVAL SEGSUP YVAL SEGSUP XVAL SEGSUP INOD * * Numero du centre * QRCOUR.NUCENT=21 * * Faces du PR21 : 2 TRI7 + 3 QUA9 * * Chapeau NBNN=0 NBELEM=0 NBSOUS=2 NBREF=0 SEGINI MYMEL * 2 Faces TRI7 NBNN=7 NBELEM=2 NBSOUS=0 NBREF=0 SEGINI SOUMEL CALL FICH4('TRI7',NOMS,NOMBR, $ NUMER, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 SOUMEL.ITYPEL=NUMER * Face 1 SOUMEL.NUM(1,1)=1 SOUMEL.NUM(2,1)=2 SOUMEL.NUM(3,1)=3 SOUMEL.NUM(4,1)=4 SOUMEL.NUM(5,1)=5 SOUMEL.NUM(6,1)=6 SOUMEL.NUM(7,1)=19 * Face 2 SOUMEL.NUM(1,2)=10 SOUMEL.NUM(2,2)=11 SOUMEL.NUM(3,2)=12 SOUMEL.NUM(4,2)=13 SOUMEL.NUM(5,2)=14 SOUMEL.NUM(6,2)=15 SOUMEL.NUM(7,2)=20 SEGDES SOUMEL MYMEL.LISOUS(1)=SOUMEL * 3 Faces QUA9 NBNN=9 NBELEM=3 NBSOUS=0 NBREF=0 SEGINI SOUMEL CALL FICH4('QUA9',NOMS,NOMBR, $ NUMER, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 SOUMEL.ITYPEL=NUMER * Face 1 SOUMEL.NUM(1,1)=1 SOUMEL.NUM(2,1)=2 SOUMEL.NUM(3,1)=3 SOUMEL.NUM(4,1)=8 SOUMEL.NUM(5,1)=12 SOUMEL.NUM(6,1)=11 SOUMEL.NUM(7,1)=10 SOUMEL.NUM(8,1)=7 SOUMEL.NUM(9,1)=16 * Face 2 SOUMEL.NUM(1,2)=3 SOUMEL.NUM(2,2)=4 SOUMEL.NUM(3,2)=5 SOUMEL.NUM(4,2)=9 SOUMEL.NUM(5,2)=14 SOUMEL.NUM(6,2)=13 SOUMEL.NUM(7,2)=12 SOUMEL.NUM(8,2)=8 SOUMEL.NUM(9,2)=17 * Face 3 SOUMEL.NUM(1,3)=5 SOUMEL.NUM(2,3)=6 SOUMEL.NUM(3,3)=1 SOUMEL.NUM(4,3)=7 SOUMEL.NUM(5,3)=10 SOUMEL.NUM(6,3)=15 SOUMEL.NUM(7,3)=14 SOUMEL.NUM(8,3)=9 SOUMEL.NUM(9,3)=18 SEGDES SOUMEL MYMEL.LISOUS(2)=SOUMEL SEGDES MYMEL QRCOUR.LFACE=MYMEL SEGDES QRCOUR MYQRFS.LISQRF(**)=QRCOUR * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine inqrpr' RETURN * * End of subroutine INQRPR * END