mcopy
C MCOPY SOURCE PV 20/09/26 21:18:45 10724 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C ******************************* C * Routine de copie de MATRIK * C * M1 : entree * C * M2 : Sortie * C * M2 = M1 * C ******************************* -INC SMMATRIK POINTEUR M1.MATRIK,M2.MATRIK,IMAT.IMATRI SEGACT M1 NMATRI=M1.IRIGEL(/2) NRIGE=7 NKID=9 NKMT=7 SEGINI M2 DO IMATE = 1, NMATRI, 1 C On copie tout IRIGEL IMATRI=M1.IRIGEL(4,IMATE) SEGACT IMATRI IF (M1.IRIGEL(5,IMATE).NE.0) THEN C Si la matrice est en morse, on recopie les PMORS et IZA C dans PMS1 et IZA1 pour M2 PMORS=M1.IRIGEL(5,IMATE) IZA=M1.IRIGEL(6,IMATE) SEGACT PMORS SEGACT IZA NTT=IA(/1)-1 NJA=JA(/1) NBVA=A(/1) SEGINI PMS1,IZA1 DO I=1,NTT+1 PMS1.IA(I)=IA(I) END DO DO I=1,NBVA IZA1.A(I)=A(I) PMS1.JA(I)=JA(I) END DO M2.IRIGEL(5,IMATE)=PMS1 M2.IRIGEL(6,IMATE)=IZA1 SEGDES PMORS,PMS1 SEGDES IZA,IZA1 END IF NBSOUS=LIZAFM(/1) NBME=LIZAFM(/2) C On initialise le segment IMAT pour M2 SEGINI IMAT DO I=1,NBME IMAT.LISDUA(I) = LISDUA(I) DO J=1,NBSOUS IZAFM=LIZAFM(J,I) C Si la matrice est pas uniquement morse, on recopie C les IZAFM de M1 dans M2 IF (IZAFM.NE.0) THEN SEGACT IZAFM NP=AM(/2) MP=AM(/3) SEGINI IPM1 DO L=1,NP DO M=1,MP IPM1.AM(K,L,M)=AM(K,L,M) END DO END DO END DO IMAT.LIZAFM(J,I)=IPM1 SEGDES IPM1 SEGDES IZAFM END IF END DO END DO C On ajuste ce qui reste du segment MATRIK IMAT.KSPGP= KSPGP IMAT.KSPGD= KSPGD C On fait pointer M2 sur le bon IMATRI. M2.IRIGEL(4,IMATE) = IMAT M2.KNTTT=M1.KNTTT M2.KNTTP=M1.KNTTP M2.KNTTD=M1.KNTTD M2.KMINCP=M1.KMINCP M2.KMINCD=M1.KMINCD ENDDO SEGDES IMATRI,IMAT SEGDES M1,M2 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales