C INLRFS SOURCE GOUNAND 05/12/21 21:33:09 5281 SUBROUTINE INLRFS(MYLRFS,IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : INLRFS C PROJET : Noyau linéaire NLIN C DESCRIPTION : Initialise le segment contenant les informations sur C l'ensemble des éléments de référence. C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : INELSE, INELTR, INELQU, INELTE, INELPR, INELCU C APPELES (E/S) : PRLRF C APPELE PAR : KALPBG C*********************************************************************** C ENTREES : - C SORTIES : MYLRFS C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 20/07/99, version initiale C HISTORIQUE : v1, 20/07/99, création C HISTORIQUE : v2, 19/10/99, remaniement (chgt du segment ELREFS) 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 CBEGININCLUDE SELREF SEGMENT ELREF CHARACTER*(LNNOM) NOMLRF CHARACTER*(LNFORM) FORME CHARACTER*(LNTYPL) TYPEL CHARACTER*(LNESP) ESPACE INTEGER DEGRE REAL*8 XCONOD(NDIMEL,NBNOD) INTEGER NPQUAF(NBDDL) INTEGER NUMCMP(NBDDL) INTEGER QUENOD(NBDDL) INTEGER ORDDER(NDIMEL,NBDDL) POINTEUR MBPOLY.POLYNS ENDSEGMENT SEGMENT ELREFS POINTEUR LISEL(0).ELREF ENDSEGMENT CENDINCLUDE SELREF POINTEUR MYLRFS.ELREFS POINTEUR ELCOUR.ELREF * INTEGER IMPR,IRET * INTEGER INBDEL,NBDEL * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans inlrfs' * * Initialisation du segment contenant tous les éléments de référence * L'ordre dans lequel ils ont initialisés à une importance car certains * éléments sont générés à partir d'autres (ex: prisme = triangle * * segment) * SEGINI MYLRFS * * On initialise les éléments de référence de dimension 1 (segments) * CALL INELSE(MYLRFS,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * * On initialise les éléments de référence de dimension 2 * de forme géométrique triangulaire. * CALL INELTR(MYLRFS,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * * On initialise les éléments de référence de dimension 2 * de forme géométrique carrée. * CALL INELQU(MYLRFS,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * * On initialise les éléments de référence de dimension 3 * de forme géométrique tétraèdrique. * CALL INELTE(MYLRFS,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * * On initialise les éléments de référence de dimension 3 * de forme géométrique pyramidale. * CALL INELPY(MYLRFS,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * * On initialise les éléments de référence de dimension 3 * de forme géométrique prismatique à base triangle. * CALL INELPR(MYLRFS,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * * On initialise les éléments de référence de dimension 3 * de forme géométrique cubique. * CALL INELCU(MYLRFS,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * * Impression finale * NBDEL=MYLRFS.LISEL(/1) IF (IMPR.GT.1) THEN *! WRITE(IOIMP,*) 'Nom, Forme, Continuité, degré, nb.ddl' SEGPRT,MYLRFS DO 3 INBDEL=1,NBDEL WRITE(IOIMP,*) 'Elément de référence ',INBDEL ELCOUR=MYLRFS.LISEL(INBDEL) CALL PRLRF(ELCOUR,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 3 CONTINUE ENDIF SEGDES MYLRFS * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine inlrfs' RETURN * * End of subroutine INLRFS * END