midcdb
C MIDCDB SOURCE CHAT 05/01/13 01:45:12 5004 $ ICDCDB, $ IMPR,IRET) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : MIDCDB C DESCRIPTION : On construit la liste indexée à la précédente des C inconnues duales de CD-1Bt. 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 : RSETEE, RPENLE C APPELE PAR : PROMAT C*********************************************************************** C ENTREES : ICPCDB, JCDUAB, LINBNC, JCDUAC, NIUNIQ C SORTIES : ICDCDB C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 07/02/2000, version initiale C HISTORIQUE : v1, 07/02/2000, 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 SMLENTI POINTEUR ICPCDB.MLENTI POINTEUR JCDUAB.MLENTI POINTEUR JCDUAC.MLENTI INTEGER JG POINTEUR KRPCDB.MLENTI POINTEUR KRDCDB.MLENTI * Includes persos * Segment LSTIND (liste séquentielle indexée) INTEGER NBM,NBTVAL SEGMENT LSTIND INTEGER IDX(NBM+1) INTEGER IVAL(NBTVAL) ENDSEGMENT *-INC SLSTIND POINTEUR LINBNC.LSTIND POINTEUR LIPDNB.LSTIND POINTEUR ICDCDB.LSTIND * INTEGER IMPR,IRET * INTEGER LDG,NCPCDB,NIUNIQ INTEGER IDG,JCPCDB INTEGER IVDCDB INTEGER JVPDNB,JVSTRT,JVSTOP,KVNBNC,KVSTRT,KVSTOP INTEGER INBMEB,INBMEC,NUDUAC INTEGER LAST,PREC * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans midcdb.eso' * On construit la liste de correspondance : * une inconnue de ICPCDB -> n°s(IBMEs) matrice B tels que * JCDUAB(IBME)=ICPCDB SEGACT ICPCDB NCPCDB=ICPCDB.LECT(/1) JG=NIUNIQ SEGINI KRPCDB $ KRPCDB.LECT,NIUNIQ, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * SEGPRT,KRPCDB SEGDES ICPCDB $ LIPDNB, $ IMPR,IRET) * SEGPRT,LIPDNB SEGSUP KRPCDB * Dimensionnement de ICDCDB * Pour l'instant ICDCDB.IDX(JCPCDB+1)=nombre d'inconnues * distinctes reliées à l'inconnue ICPCDB.LECT(JCPCDB) NBM=NCPCDB NBTVAL=0 SEGINI ICDCDB JG=NIUNIQ SEGINI KRDCDB SEGACT LIPDNB SEGACT LINBNC SEGACT JCDUAC DO 1 JCPCDB=1,NCPCDB * Degré et fin de la liste chaînée LDG=0 LAST=-1 JVSTRT=LIPDNB.IDX(JCPCDB) JVSTOP=LIPDNB.IDX(JCPCDB+1)-1 DO 12 JVPDNB=JVSTRT,JVSTOP INBMEB=LIPDNB.IVAL(JVPDNB) KVSTRT=LINBNC.IDX(INBMEB) KVSTOP=LINBNC.IDX(INBMEB+1)-1 DO 122 KVNBNC=KVSTRT,KVSTOP INBMEC=LINBNC.IVAL(KVNBNC) NUDUAC=JCDUAC.LECT(INBMEC) IF (KRDCDB.LECT(NUDUAC).EQ.0) THEN LDG=LDG+1 KRDCDB.LECT(NUDUAC)=LAST LAST=NUDUAC ENDIF 122 CONTINUE 12 CONTINUE ICDCDB.IDX(JCPCDB+1)=LDG * Remise à zéro de la liste chaînée DO 14 IDG=1,LDG PREC=KRDCDB.LECT(LAST) KRDCDB.LECT(LAST)=0 LAST=PREC 14 CONTINUE 1 CONTINUE * ICDCDB.IDX est transformé en la liste d'indexation sur * ICDCDB.IVAL ICDCDB.IDX(1)=1 DO 3 JCPCDB=1,NCPCDB ICDCDB.IDX(JCPCDB+1)=ICDCDB.IDX(JCPCDB+1)+ICDCDB.IDX(JCPCDB) 3 CONTINUE NBM=NCPCDB NBTVAL=ICDCDB.IDX(NCPCDB+1)-1 SEGADJ,ICDCDB * Remplissage de ICDCDB IVDCDB=0 DO 5 JCPCDB=1,NCPCDB * Degré et fin de la liste chaînée LDG=0 LAST=-1 JVSTRT=LIPDNB.IDX(JCPCDB) JVSTOP=LIPDNB.IDX(JCPCDB+1)-1 DO 52 JVPDNB=JVSTRT,JVSTOP INBMEB=LIPDNB.IVAL(JVPDNB) KVSTRT=LINBNC.IDX(INBMEB) KVSTOP=LINBNC.IDX(INBMEB+1)-1 DO 522 KVNBNC=KVSTRT,KVSTOP INBMEC=LINBNC.IVAL(KVNBNC) NUDUAC=JCDUAC.LECT(INBMEC) IF (KRDCDB.LECT(NUDUAC).EQ.0) THEN LDG=LDG+1 KRDCDB.LECT(NUDUAC)=LAST LAST=NUDUAC ENDIF 522 CONTINUE 52 CONTINUE * Remise à zéro de la liste chaînée et vidage dans ICDCDB DO 54 IDG=1,LDG PREC=KRDCDB.LECT(LAST) IVDCDB=IVDCDB+1 ICDCDB.IVAL(IVDCDB)=LAST KRDCDB.LECT(LAST)=0 LAST=PREC 54 CONTINUE 5 CONTINUE SEGDES JCDUAC SEGDES LINBNC SEGSUP LIPDNB SEGSUP KRDCDB SEGDES ICDCDB * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine midcdb' RETURN * * End of subroutine MIDCDB * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales