trpmo2
C TRPMO2 SOURCE PV 20/09/26 21:20:05 10724 $ LDDLDT,PMCOT, $ IMPR,IRET) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : TRPMO2 C PROJET : Noyau linéaire NLIN C DESCRIPTION : Construction du profil Morse (non ordonné) de (C + Ct) à C partir du profil Morse (non ordonné) de C. 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 : TRPMOR, FUSPRM C APPELE PAR : PRASEM C*********************************************************************** C ENTREES : PMC C SORTIES : PMCCT C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 17/03/06, version 1 C HISTORIQUE : v1, 17/03/06, création 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 SMMATRIK POINTEUR PMCOU.PMORS POINTEUR PMCOT.PMORS -INC SMLENTI POINTEUR LDDLDU.MLENTI POINTEUR LDDLDT.MLENTI POINTEUR KDDLDT.MLENTI POINTEUR ITRAV.MLENTI * INTEGER IMPR,IRET * * Executable statements * IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans trpmo2' * SEGPRT,LDDLDU * SEGPRT,PMCOU SEGACT LDDLDU NDDLDU=LDDLDU.LECT(/1) SEGACT,PMCOU NJA=PMCOU.JA(/1) * * Trouvons la liste des ddl duaux de la transposée * JG=NTTDDL SEGINI ITRAV DO IJA=1,NJA ICOL=PMCOU.JA(IJA) ITRAV.LECT(ICOL)=ITRAV.LECT(ICOL)+1 ENDDO * Dimension NDDLDT=0 DO ITTDDL=1,NTTDDL IF (ITRAV.LECT(ITTDDL).GT.0) THEN NDDLDT=NDDLDT+1 ENDIF ENDDO * Remplissage JG=NDDLDT SEGINI LDDLDT IDDLDT=0 DO ITTDDL=1,NTTDDL IF (ITRAV.LECT(ITTDDL).GT.0) THEN IDDLDT=IDDLDT+1 LDDLDT.LECT(IDDLDT)=ITTDDL ENDIF ENDDO * * Remplissage du segment IA de la transposée * NTT=NDDLDT SEGINI,PMCOT PMCOT.IA(1)=1 DO IDDLDT=1,NDDLDT ICOL=LDDLDT.LECT(IDDLDT) PMCOT.IA(IDDLDT+1)=PMCOT.IA(IDDLDT)+ITRAV.LECT(ICOL) ENDDO * SEGSUP ITRAV * Repérage dans LDDLDT en réutilisant ITRAV * JG=NTTDDL * SEGINI KDDLDT KDDLDT=ITRAV SEGDES LDDLDT * * Remplissage de JA en se servant de IA comme liste de pointeurs * courant dans JA * DO IDDLDU=1,NDDLDU JSTRT=PMCOU.IA(IDDLDU) JSTOP=PMCOU.IA(IDDLDU+1)-1 DO J=JSTRT,JSTOP * WRITE(IOIMP,*) 'J=',J JCOL=PMCOU.JA(J) * WRITE(IOIMP,*) 'JCOL=',JCOL ICOL=KDDLDT.LECT(JCOL) * WRITE(IOIMP,*) 'ICOL=',ICOL I=PMCOT.IA(ICOL) * WRITE(IOIMP,*) 'I=',I PMCOT.JA(I)=LDDLDU.LECT(IDDLDU) PMCOT.IA(ICOL)=I+1 ENDDO ENDDO SEGSUP KDDLDT SEGDES PMCOU SEGDES LDDLDU * * Restauration de IA * DO IDDLDT=NDDLDT,2,-1 PMCOT.IA(IDDLDT)=PMCOT.IA(IDDLDT-1) ENDDO PMCOT.IA(1)=1 SEGDES PMCOT * SEGPRT,LDDLDT * SEGPRT,PMCOT * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine trpmo2' RETURN * * End of subroutine TRPMO2 * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales