Download mknbnc.eso

Back to the list

   1 : C MKNBNC    SOURCE    GOUNAND   06/04/26    21:15:49     5414           
   2 :       SUBROUTINE MKNBNC(JCPRIB,LIPNMC,KRIPRI,
   3 :      $     LINBNC,
   4 :      $     IMPR,IRET)
   5 :       IMPLICIT INTEGER(I-N)
   6 :       IMPLICIT REAL*8 (A-H,O-Z)
   7 : C***********************************************************************
   8 : C NOM         : MKNBNC
   9 : C DESCRIPTION : Construction d'une liste indexée de correspondance :
  10 : C               matrice B -> liste des matrices C ayant la même inconnue
  11 : C               primale. 
  12 : C
  13 : C
  14 : C LANGAGE     : ESOPE
  15 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  16 : C               mél : gounand@semt2.smts.cea.fr
  17 : C***********************************************************************
  18 : C APPELES          : -
  19 : C APPELE PAR       : PROMAT
  20 : C***********************************************************************
  21 : C ENTREES            : JCPRIB, LIPNMC
  22 : C SORTIES            : LINBNC
  23 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  24 : C***********************************************************************
  25 : C VERSION    : v1, 07/02/2000, version initiale
  26 : C HISTORIQUE : v1, 07/02/2000, création
  27 : C HISTORIQUE :
  28 : C HISTORIQUE :
  29 : C***********************************************************************
  30 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  31 : C en cas de modification de ce sous-programme afin de faciliter
  32 : C la maintenance !
  33 : C***********************************************************************
  34 : -INC CCOPTIO
  35 : -INC SMLENTI
  36 :       POINTEUR JCPRIB.MLENTI
  37 :       POINTEUR KRIPRI.MLENTI
  38 : * Includes persos
  39 : *     Segment LSTIND (liste séquentielle indexée)
  40 :       INTEGER NBM,NBTVAL
  41 :       SEGMENT LSTIND
  42 :       INTEGER IDX(NBM+1)
  43 :       INTEGER IVAL(NBTVAL)
  44 :       ENDSEGMENT
  45 : *-INC SLSTIND
  46 :       POINTEUR LIPNMC.LSTIND
  47 :       POINTEUR LINBNC.LSTIND
  48 : *
  49 :       INTEGER IMPR,IRET
  50 : *
  51 :       INTEGER NNBMEB
  52 :       INTEGER INBMEB
  53 :       INTEGER IVNBNC,JVPNMC,JVSTRT,JVSTOP
  54 :       INTEGER NOPBNC,NUPRIB
  55 : *     
  56 : * Executable statements
  57 : *
  58 :       IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans mknbnc.eso' 
  59 : * Dimensionnement de LINBNC
  60 : * Pour l'instant LINBNC.IDX(INBMEB+1)=nombre de NBMEC reliés à
  61 : * JCPRIB(INBMEB)
  62 :       SEGACT KRIPRI
  63 :       SEGACT JCPRIB
  64 :       NNBMEB=JCPRIB.LECT(/1)
  65 :       NBM=NNBMEB
  66 :       NBTVAL=0
  67 :       SEGINI LINBNC
  68 :       SEGACT LIPNMC
  69 :       DO 1 INBMEB=1,NNBMEB
  70 :          NUPRIB=JCPRIB.LECT(INBMEB)
  71 :          JVPRIB=KRIPRI.LECT(NUPRIB)
  72 :          NOPBNC=LIPNMC.IDX(JVPRIB+1)-LIPNMC.IDX(JVPRIB)
  73 : *bug!         NOPBNC=LIPNMC.IDX(NUPRIB+1)-LIPNMC.IDX(NUPRIB)
  74 :          LINBNC.IDX(INBMEB+1)=NOPBNC
  75 :  1    CONTINUE
  76 : * LINBNC.IDX est transformé en la liste d'indexation sur
  77 : * LINBNC.IVAL
  78 :       LINBNC.IDX(1)=1
  79 :       DO 3 INBMEB=1,NNBMEB
  80 :          LINBNC.IDX(INBMEB+1)=LINBNC.IDX(INBMEB+1)+LINBNC.IDX(INBMEB)
  81 :  3    CONTINUE
  82 :       NBM=NNBMEB
  83 :       NBTVAL=LINBNC.IDX(NNBMEB+1)-1
  84 :       SEGADJ,LINBNC
  85 : * Remplissage de LINBNC
  86 :       IVNBNC=0
  87 :       DO 5 INBMEB=1,NNBMEB
  88 :          NUPRIB=JCPRIB.LECT(INBMEB)
  89 :          JVPRIB=KRIPRI.LECT(NUPRIB)
  90 :          JVSTRT=LIPNMC.IDX(JVPRIB)
  91 :          JVSTOP=LIPNMC.IDX(JVPRIB+1)-1
  92 : *bug!         JVSTRT=LIPNMC.IDX(NUPRIB)
  93 : *bug!         JVSTOP=LIPNMC.IDX(NUPRIB+1)-1
  94 :          DO 52 JVPNMC=JVSTRT,JVSTOP
  95 :             IVNBNC=IVNBNC+1
  96 :             LINBNC.IVAL(IVNBNC)=LIPNMC.IVAL(JVPNMC)
  97 :  52      CONTINUE
  98 :  5    CONTINUE
  99 :       SEGDES LIPNMC
 100 :       SEGDES JCPRIB
 101 :       SEGDES LINBNC
 102 :       SEGDES KRIPRI
 103 : *
 104 : * Normal termination
 105 : *
 106 :       IRET=0
 107 :       RETURN
 108 : *
 109 : * Format handling
 110 : *
 111 : *
 112 : * Error handling
 113 : *
 114 :  9999 CONTINUE
 115 :       IRET=1
 116 :       WRITE(IOIMP,*) 'An error was detected in subroutine mknbnc'
 117 :       RETURN
 118 : *
 119 : * End of subroutine MKNBNC
 120 : *
 121 :       END
 122 : 
 123 :  
 124 :  
 125 :  

© Cast3M 2003 - All rights reserved.
Disclaimer