Download trpmo2.eso

Back to the list

   1 : C TRPMO2    SOURCE    MAGN      09/07/30    21:21:04     6458           
   2 :       SUBROUTINE TRPMO2(LDDLDU,PMCOU,NTTDDL,
   3 :      $     LDDLDT,PMCOT,
   4 :      $     IMPR,IRET)
   5 :       IMPLICIT INTEGER(I-N)
   6 :       IMPLICIT REAL*8 (A-H,O-Z)
   7 : C***********************************************************************
   8 : C NOM         : TRPMO2
   9 : C PROJET      : Noyau linéaire NLIN
  10 : C DESCRIPTION : Construction du profil Morse (non ordonné) de (C + Ct) à
  11 : C               partir du profil Morse (non ordonné) de C.  
  12 : C
  13 : C LANGAGE     : ESOPE
  14 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  15 : C               mél : gounand@semt2.smts.cea.fr
  16 : C***********************************************************************
  17 : C APPELES          : TRPMOR, FUSPRM
  18 : C APPELE PAR       : PRASEM
  19 : C***********************************************************************
  20 : C ENTREES            : PMC
  21 : C SORTIES            : PMCCT
  22 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  23 : C***********************************************************************
  24 : C VERSION    : v1, 17/03/06, version 1
  25 : C HISTORIQUE : v1, 17/03/06, création
  26 : C HISTORIQUE :
  27 : C***********************************************************************
  28 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  29 : C en cas de modification de ce sous-programme afin de faciliter
  30 : C la maintenance !
  31 : C***********************************************************************
  32 : -INC CCOPTIO
  33 : -INC SMMATRIK
  34 :       POINTEUR PMCOU.PMORS
  35 :       POINTEUR PMCOT.PMORS
  36 : -INC SMLENTI
  37 :       POINTEUR LDDLDU.MLENTI
  38 :       POINTEUR LDDLDT.MLENTI
  39 :       POINTEUR KDDLDT.MLENTI
  40 :       POINTEUR ITRAV.MLENTI
  41 : *
  42 :       INTEGER IMPR,IRET
  43 : *
  44 : * Executable statements
  45 : *
  46 :       IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans trpmo2'
  47 : *      SEGPRT,LDDLDU
  48 : *      SEGPRT,PMCOU
  49 :       SEGACT LDDLDU
  50 :       NDDLDU=LDDLDU.LECT(/1)
  51 :       SEGACT,PMCOU
  52 :       NJA=PMCOU.JA(/1)
  53 : *
  54 : * Trouvons la liste des ddl duaux de la transposée
  55 : *
  56 :       JG=NTTDDL
  57 :       SEGINI ITRAV
  58 :       DO IJA=1,NJA
  59 :          ICOL=PMCOU.JA(IJA)
  60 :          ITRAV.LECT(ICOL)=ITRAV.LECT(ICOL)+1
  61 :       ENDDO
  62 : * Dimension
  63 :       NDDLDT=0
  64 :       DO ITTDDL=1,NTTDDL
  65 :          IF (ITRAV.LECT(ITTDDL).GT.0) THEN
  66 :             NDDLDT=NDDLDT+1
  67 :          ENDIF
  68 :       ENDDO
  69 : * Remplissage
  70 :       JG=NDDLDT
  71 :       SEGINI LDDLDT
  72 :       IDDLDT=0
  73 :       DO ITTDDL=1,NTTDDL
  74 :          IF (ITRAV.LECT(ITTDDL).GT.0) THEN
  75 :             IDDLDT=IDDLDT+1
  76 :             LDDLDT.LECT(IDDLDT)=ITTDDL
  77 :          ENDIF
  78 :       ENDDO
  79 : *
  80 : * Remplissage du segment IA de la transposée
  81 : *
  82 :       NTT=NDDLDT
  83 :       SEGINI,PMCOT
  84 :       PMCOT.IA(1)=1
  85 :       DO IDDLDT=1,NDDLDT
  86 :          ICOL=LDDLDT.LECT(IDDLDT)
  87 :          PMCOT.IA(IDDLDT+1)=PMCOT.IA(IDDLDT)+ITRAV.LECT(ICOL)
  88 :       ENDDO
  89 : *      SEGSUP ITRAV
  90 : * Repérage dans LDDLDT en réutilisant ITRAV
  91 : *      JG=NTTDDL
  92 : *      SEGINI KDDLDT
  93 :       KDDLDT=ITRAV
  93 :       CALL RSETXI(KDDLDT.LECT,LDDLDT.LECT,NDDLDT)
  94 :       SEGDES LDDLDT
  95 : *
  96 : * Remplissage de JA en se servant de IA comme liste de pointeurs
  97 : * courant dans JA
  98 : *
  99 :       DO IDDLDU=1,NDDLDU
 100 :          JSTRT=PMCOU.IA(IDDLDU)
 101 :          JSTOP=PMCOU.IA(IDDLDU+1)-1
 102 :          DO J=JSTRT,JSTOP
 103 : *            WRITE(IOIMP,*) 'J=',J
 104 :             JCOL=PMCOU.JA(J)
 105 : *            WRITE(IOIMP,*) 'JCOL=',JCOL
 106 :             ICOL=KDDLDT.LECT(JCOL)
 107 : *            WRITE(IOIMP,*) 'ICOL=',ICOL
 108 :             I=PMCOT.IA(ICOL)
 109 : *            WRITE(IOIMP,*) 'I=',I
 110 :             PMCOT.JA(I)=LDDLDU.LECT(IDDLDU)
 111 :             PMCOT.IA(ICOL)=I+1
 112 :          ENDDO
 113 :       ENDDO
 114 :       SEGSUP KDDLDT
 115 :       SEGDES PMCOU
 116 :       SEGDES LDDLDU
 117 : *
 118 : * Restauration de IA
 119 : *
 120 :       DO IDDLDT=NDDLDT,2,-1
 121 :          PMCOT.IA(IDDLDT)=PMCOT.IA(IDDLDT-1)
 122 :       ENDDO
 123 :       PMCOT.IA(1)=1
 124 :       SEGDES PMCOT
 125 : *      SEGPRT,LDDLDT
 126 : *      SEGPRT,PMCOT
 127 : *
 128 : * Normal termination
 129 : *
 130 :       IRET=0
 131 :       RETURN
 132 : *
 133 : * Format handling
 134 : *
 135 : *
 136 : * Error handling
 137 : *
 138 :  9999 CONTINUE
 139 :       IRET=1
 140 :       WRITE(IOIMP,*) 'An error was detected in subroutine trpmo2'
 141 :       RETURN
 142 : *
 143 : * End of subroutine TRPMO2
 144 : *
 145 :       END
 146 : 
 147 :  
 148 :  
 149 :  
 150 :  
 151 :  

© Cast3M 2003 - All rights reserved.
Disclaimer