C SH2FNF SOURCE CHAT 07/10/29 21:28:29 5940 SUBROUTINE SH2FNF(MYLRF,JXCOPG, $ FNPG,DFNPG, $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : SH2FNF C DESCRIPTION : Conversion shape.eso -> kfnref.eso C C C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : C APPELES (E/S) : C APPELES (BLAS) : C APPELES (CALCUL) : C APPELE PAR : C*********************************************************************** C SYNTAXE GIBIANE : C ENTREES : C ENTREES/SORTIES : C SORTIES : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 25/10/2005, version initiale C HISTORIQUE : v1, 25/10/2005, 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 CCGEOME -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 MYLRF.ELREF CBEGININCLUDE SMCHAEL SEGMENT MCHAEL POINTEUR IMACHE(N1).MELEME POINTEUR ICHEVA(N1).MCHEVA ENDSEGMENT SEGMENT MCHEVA REAL*8 VELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM) ENDSEGMENT SEGMENT LCHEVA POINTEUR LISCHE(NBCHE).MCHEVA ENDSEGMENT CENDINCLUDE SMCHAEL POINTEUR JXCOPG.MCHEVA POINTEUR FNPG.MCHEVA POINTEUR DFNPG.MCHEVA * SEGMENT/SHXX/(SHPXXX(6,NBB)*D) * INTEGER IMPR,IRET EXTERNAL SHAPE * * Executable statements * IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans sh2fnf.eso' * SEGACT MYLRF * * Conversion élément nlin -> élément castem * IF (MYLRF.NOMLRF.EQ.'H1D1PY5') THEN IELE=25 ELSEIF (MYLRF.NOMLRF.EQ.'H1D2PY13') THEN IELE=26 ELSEIF (MYLRF.NOMLRF.EQ.'H1D2PR15') THEN IELE=17 ELSEIF (MYLRF.NOMLRF.EQ.'H1D2CU20') THEN IELE=15 ELSE WRITE(IOIMP,*) 'Element ',MYLRF.NOMLRF,' inconnu' GOTO 9999 ENDIF * NDIML=MYLRF.ORDDER(/1) NDDL=MYLRF.ORDDER(/2) NBB=NDDL SEGINI,SHXX SEGACT JXCOPG IDIMPG=JXCOPG.VELCHE(/4) IF (IDIMPG.NE.NDIML) THEN WRITE(IOIMP,*) 'Erreur grave ?' GOTO 9999 ENDIF NPG=JXCOPG.VELCHE(/5) NBELFV=JXCOPG.VELCHE(/6) NBLIG=1 NBCOL=NDDL N2LIG=1 N2COL=1 NBPOI=NPG NBELM=NBELFV SEGINI,FNPG N2COL=NDIML SEGINI,DFNPG QSI=0.D0 ETA=0.D0 DZE=0.D0 DO IBELFV=1,NBELFV DO IPG=1,NPG IF (NDIML.GE.1) THEN QSI=JXCOPG.VELCHE(1,1,1,1,IPG,IBELFV) IF (NDIML.GE.2) THEN ETA=JXCOPG.VELCHE(1,1,1,2,IPG,IBELFV) IF (NDIML.GE.3) THEN DZE=JXCOPG.VELCHE(1,1,1,3,IPG,IBELFV) ENDIF ENDIF ENDIF * CALL SHAPE(QSI,ETA,DZE,IELE,SHPXXX,IRET) IF (IRET.EQ.0) THEN C ERREUR LES FONCTIONS DE FORME PAS ENCORE IMPLEMENTEES MOTERR(1:4)=NOMS(IELE) CALL ERREUR(68) GOTO 9999 ENDIF DO IDDL=1,NDDL FNPG.VELCHE(1,IDDL,1,1,IPG,IBELFV)=SHPXXX(1,IDDL) DO IDIML=1,NDIML DFNPG.VELCHE(1,IDDL,1,IDIML,IPG,IBELFV)= $ SHPXXX(IDIML+1,IDDL) ENDDO ENDDO ENDDO ENDDO SEGSUP SHXX SEGDES DFNPG SEGDES FNPG SEGDES JXCOPG SEGDES MYLRF * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine sh2fnf' RETURN * * End of subroutine SH2FNF * END