dimpmt
C DIMPMT SOURCE CHAT 05/01/12 22:51:09 5004 $ IA,JA,IB,JB, $ IWORK, $ NNZC) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : DIMPMT C DESCRIPTION : Profil Morse (non ordonné) de A + profil Morse (non C ordonné) de B => dimension (NNZ) du profil Morse de (A + C B) C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELE PAR : FUSPRM C*********************************************************************** C ENTREES : NTTDDL, NNZA, NNZB, IA, JA, IB, JB C ENTREES/SORTIES : IWORK C SORTIES : NNZC C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 21/12/99, version initiale C HISTORIQUE : v1, 21/12/99, 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*********************************************************************** * INTEGER NTTDDL,NNZA,NNZB INTEGER IA(NTTDDL+1) INTEGER JA(NNZA) INTEGER IB(NTTDDL+1) INTEGER JB(NNZB) INTEGER IWORK(NTTDDL) * INTEGER NNZC * INTEGER LDG,ILDG,IPREC,LAST INTEGER ITTDDL INTEGER JNZA,JNZB,JACOL,JBCOL * * Executable statements * NNZC=0 * * Calculons le nombre de termes non nuls sur chaque ligne de C * DO 1 ITTDDL=1,NTTDDL LDG=0 * Fin de la liste chaînée LAST=-1 * Parcourons la ligne de A DO 12 JNZA=IA(ITTDDL),IA(ITTDDL+1)-1 JACOL=JA(JNZA) * optimisation : on suppose unicité des colonnes dans le profil Morse * de A * IF (IWORK(JACOL).EQ.0) THEN LDG=LDG+1 IWORK(JACOL)=LAST LAST=JACOL * ENDIF 12 CONTINUE * Parcourons la ligne de B DO 14 JNZB=IB(ITTDDL),IB(ITTDDL+1)-1 JBCOL=JB(JNZB) IF (IWORK(JBCOL).EQ.0) THEN LDG=LDG+1 IWORK(JBCOL)=LAST LAST=JBCOL ENDIF 14 CONTINUE * NNZC=NNZC+LDG * Remise à zéro du segment de travail DO 16 ILDG=1,LDG IPREC=IWORK(LAST) IWORK(LAST)=0 LAST=IPREC 16 CONTINUE 1 CONTINUE * * Normal termination * RETURN * * Format handling * * * End of subroutine DIMPMT * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales