relr11
C RELR11 SOURCE PV 20/03/30 21:23:55 10567 $ KJSPGP,KJSPGD, $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : RELR11 C DESCRIPTION : Assemblage d'un rigidité C Construction de : C - l'ensemble des points sur lesquels il y a au moins une inconnue C primale : KJSPGP C - l'ensemble des points sur lesquels il y a au moins une inconnue C duale : KJSPGD 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 : RELR10 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, 26/06/2003, version initiale C HISTORIQUE : v1, 26/06/2003, 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 -INC SMCOORD -INC SMRIGID POINTEUR MLIN.MRIGID POINTEUR DES.DESCR -INC SMELEME POINTEUR MEL.MELEME -INC SMLENTI POINTEUR KJSPGP.MLENTI POINTEUR KLSPGP.MLENTI POINTEUR KJSPGD.MLENTI POINTEUR KLSPGD.MLENTI * INTEGER IMPR,IRET * * Executable statements * IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans relr11.eso' * SEGACT MLIN NRIG=MLIN.IRIGEL(/2) * * Primale * JG=nbpts SEGINI KLSPGP * degré et fin de la liste chaînée LDG=0 LAST=-1 DO IRIG=1,NRIG MEL=MLIN.IRIGEL(1,IRIG) SEGACT MEL NEL=MEL.NUM(/2) DES=MLIN.IRIGEL(3,IRIG) SEGACT DES NDDL=DES.NOELEP(/1) DO IEL=1,NEL DO IDDL=1,NDDL NUMNO=MEL.NUM(DES.NOELEP(IDDL),IEL) IF (KLSPGP.LECT(NUMNO).EQ.0) THEN LDG=LDG+1 KLSPGP.LECT(NUMNO)=LAST LAST=NUMNO ENDIF ENDDO ENDDO SEGDES DES SEGDES MEL ENDDO * transfert de la liste chainee dans KJSPGP JG=LDG SEGINI KJSPGP DO IDG=1,LDG IPREC=KLSPGP.LECT(LAST) KJSPGP.LECT(IDG)=LAST LAST=IPREC ENDDO SEGSUP KLSPGP SEGDES KJSPGP * * Duale (copie conforme du dessus) * JG=nbpts SEGINI KLSPGD * degré et fin de la liste chaînée LDG=0 LAST=-1 DO IRIG=1,NRIG MEL=MLIN.IRIGEL(1,IRIG) SEGACT MEL NEL=MEL.NUM(/2) DES=MLIN.IRIGEL(3,IRIG) SEGACT DES NDDL=DES.NOELED(/1) DO IEL=1,NEL DO IDDL=1,NDDL NUMNO=MEL.NUM(DES.NOELED(IDDL),IEL) IF (KLSPGD.LECT(NUMNO).EQ.0) THEN LDG=LDG+1 KLSPGD.LECT(NUMNO)=LAST LAST=NUMNO ENDIF ENDDO ENDDO SEGDES DES SEGDES MEL ENDDO * transfert de la liste chainee dans KJSPGD JG=LDG SEGINI KJSPGD DO IDG=1,LDG IPREC=KLSPGD.LECT(LAST) KJSPGD.LECT(IDG)=LAST LAST=IPREC ENDDO SEGSUP KLSPGD SEGDES KJSPGD SEGDES MLIN * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine relr11' RETURN * * End of subroutine RELR11 * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales