mknbnc
C MKNBNC SOURCE GOUNAND 06/04/26 21:15:49 5414 $ LINBNC, $ IMPR,IRET) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : MKNBNC C DESCRIPTION : Construction d'une liste indexée de correspondance : C matrice B -> liste des matrices C ayant la même inconnue C primale. 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 : - C APPELE PAR : PROMAT C*********************************************************************** C ENTREES : JCPRIB, LIPNMC C SORTIES : LINBNC 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 JCPRIB.MLENTI POINTEUR KRIPRI.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 LIPNMC.LSTIND POINTEUR LINBNC.LSTIND * INTEGER IMPR,IRET * INTEGER NNBMEB INTEGER INBMEB INTEGER IVNBNC,JVPNMC,JVSTRT,JVSTOP INTEGER NOPBNC,NUPRIB * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans mknbnc.eso' * Dimensionnement de LINBNC * Pour l'instant LINBNC.IDX(INBMEB+1)=nombre de NBMEC reliés à * JCPRIB(INBMEB) SEGACT KRIPRI SEGACT JCPRIB NNBMEB=JCPRIB.LECT(/1) NBM=NNBMEB NBTVAL=0 SEGINI LINBNC SEGACT LIPNMC DO 1 INBMEB=1,NNBMEB NUPRIB=JCPRIB.LECT(INBMEB) JVPRIB=KRIPRI.LECT(NUPRIB) NOPBNC=LIPNMC.IDX(JVPRIB+1)-LIPNMC.IDX(JVPRIB) *bug! NOPBNC=LIPNMC.IDX(NUPRIB+1)-LIPNMC.IDX(NUPRIB) LINBNC.IDX(INBMEB+1)=NOPBNC 1 CONTINUE * LINBNC.IDX est transformé en la liste d'indexation sur * LINBNC.IVAL LINBNC.IDX(1)=1 DO 3 INBMEB=1,NNBMEB LINBNC.IDX(INBMEB+1)=LINBNC.IDX(INBMEB+1)+LINBNC.IDX(INBMEB) 3 CONTINUE NBM=NNBMEB NBTVAL=LINBNC.IDX(NNBMEB+1)-1 SEGADJ,LINBNC * Remplissage de LINBNC IVNBNC=0 DO 5 INBMEB=1,NNBMEB NUPRIB=JCPRIB.LECT(INBMEB) JVPRIB=KRIPRI.LECT(NUPRIB) JVSTRT=LIPNMC.IDX(JVPRIB) JVSTOP=LIPNMC.IDX(JVPRIB+1)-1 *bug! JVSTRT=LIPNMC.IDX(NUPRIB) *bug! JVSTOP=LIPNMC.IDX(NUPRIB+1)-1 DO 52 JVPNMC=JVSTRT,JVSTOP IVNBNC=IVNBNC+1 LINBNC.IVAL(IVNBNC)=LIPNMC.IVAL(JVPNMC) 52 CONTINUE 5 CONTINUE SEGDES LIPNMC SEGDES JCPRIB SEGDES LINBNC SEGDES KRIPRI * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine mknbnc' RETURN * * End of subroutine MKNBNC * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales