Download prdmcp.eso

Back to the list

   1 : C PRDMCP    SOURCE    GOUNAND   12/12/10    21:15:09     7597           
   2 :       SUBROUTINE PRDMCP(MATELE,MCHPRI,MCHDUA)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : C***********************************************************************
   6 : C NOM         : PRDMCP
   7 : C DESCRIPTION : Produit matrices élémentaires * chpo. primal
   8 : C                       -> chpo. dual.
   9 : C
  10 : C LANGAGE     : ESOPE
  11 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  12 : C               mél : gounand@semt2.smts.cea.fr
  13 : C***********************************************************************
  14 : C APPELES          : PRMCP2
  15 : C APPELES (UTIL.)  : FIXMEL, ADCHPO, DTCHPO, ERREUR
  16 : C APPELE PAR       : KOPS
  17 : C***********************************************************************
  18 : C ENTREES            : MATELE, MCHPRI
  19 : C ENTREES/SORTIES    : -
  20 : C SORTIES            : MCHDUA
  21 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  22 : C***********************************************************************
  23 : C VERSION    : v1, 18/04/2000, version initiale
  24 : C HISTORIQUE : v1, 18/04/2000, création
  25 : C HISTORIQUE :
  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 MATELE.MATRIK
  35 :       POINTEUR MMATEL.IMATEL
  36 : -INC SMCHPOI
  37 :       INTEGER NAT,NSOUPO
  38 :       POINTEUR MCHPRI.MCHPOI
  39 :       POINTEUR MSOPRI.MSOUPO
  40 :       POINTEUR MCHDUA.MCHPOI
  41 :       POINTEUR MCHTOT.MCHPOI
  42 :       POINTEUR MCHTMP.MCHPOI
  43 :       POINTEUR MSOTMP.MSOUPO
  44 : -INC SMELEME
  45 :       POINTEUR MELPRI.MELEME
  46 :       POINTEUR MELPR2.MELEME
  47 :       POINTEUR MMLPRI.MELEME
  48 :       POINTEUR MELDUA.MELEME
  49 :       POINTEUR MELDU2.MELEME
  50 :       POINTEUR MMLDUA.MELEME
  51 : *
  52 :       INTEGER IMPR,IRET
  53 :       INTEGER NMATE,NSOPRI
  54 :       INTEGER IMATE,ISOPRI
  55 : *     
  56 : * Executable statements
  57 : *
  58 :       IMPR=IIMPI
  59 :       IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans prdmcp.eso' 
  60 : * Correction des maillages (à supprimer dès que possible)
  61 :       SEGACT MATELE*MOD
  62 :       NMATE=MATELE.IRIGEL(/2)
  63 :       DO 1 IMATE=1,NMATE
  64 :          MELPRI=MATELE.IRIGEL(1,IMATE)
  65 :          MELDUA=MATELE.IRIGEL(2,IMATE)
  65 :          CALL FIXMEL(MELPRI,MELDUA,
  66 :      $        MELPR2,MELDU2,
  67 :      $        IMPR,IRET)
  68 :          IF (IRET.NE.0) GOTO 9999
  69 :          MATELE.IRIGEL(1,IMATE)=MELPR2
  70 :          MATELE.IRIGEL(2,IMATE)=MELDU2
  71 :  1    CONTINUE
  72 :       SEGDES MATELE
  73 : * Initialisation du résultat avec un chpoint vide
  74 :       NAT=2
  75 :       NSOUPO=0
  76 :       SEGINI MCHDUA
  77 :       MCHDUA.IFOPOI=IFOUR
  78 :       MCHDUA.JATTRI(1)=2
  79 :       SEGDES MCHDUA
  80 : *
  81 : * Boucle sur les matrices et les msoupo du chpoint primal
  82 : *
  83 :       SEGACT MATELE
  84 :       NMATE=MATELE.IRIGEL(/2)
  85 :       SEGACT MCHPRI
  86 :       NSOPRI=MCHPRI.IPCHP(/1)
  87 :       DO 3 IMATE=1,NMATE
  88 :          MMLPRI=MATELE.IRIGEL(1,IMATE)
  89 :          MMLDUA=MATELE.IRIGEL(2,IMATE)
  90 :          MMATEL=MATELE.IRIGEL(4,IMATE)
  91 :          DO 4 ISOPRI=1,NSOPRI
  92 :             MSOPRI=MCHPRI.IPCHP(ISOPRI)
  92 :             CALL PRMCP2(MMLPRI,MMLDUA,MMATEL,MSOPRI,
  93 :      $           MSOTMP,
  94 :      $           IMPR,IRET)
  95 :             IF (IRET.NE.0) GOTO 9999
  96 :             IF (MSOTMP.NE.0) THEN
  97 :                NAT=2
  98 :                NSOUPO=1
  99 :                SEGINI MCHTMP
 100 :                MCHTMP.IFOPOI=IFOUR
 101 :                MCHTMP.JATTRI(1)=2
 102 :                MCHTMP.IPCHP(1)=MSOTMP
 103 :                SEGDES MCHTMP
 103 :                CALL ADCHPO(MCHDUA,MCHTMP,MCHTOT,1.D0,1.D0)
 104 :                IF (MCHTOT.EQ.0) THEN
 105 :                   WRITE(IOIMP,*) 'Pas pu faire le ET des chpoints...'
 106 :                   GOTO 9999
 107 :                ENDIF
 107 :                CALL DTCHPO(MCHDUA)
 107 :                CALL DTCHPO(MCHTMP)
 108 :                MCHDUA=MCHTOT
 109 :             ENDIF
 110 :  4       CONTINUE
 111 :  3    CONTINUE
 112 :       segact mchdua*mod
 113 :       mchdua.mochde='créé par prdmcp'
 114 :       mchdua.mtypoi=' '
 115 :       SEGDES MCHPRI
 116 :       SEGDES MATELE
 117 : *
 118 : * Normal termination
 119 : *
 120 :       IRET=0
 121 :       RETURN
 122 : *
 123 : * Format handling
 124 : *
 125 : *
 126 : * Error handling
 127 : *
 128 :  9999 CONTINUE
 129 :       IRET=1
 130 :       WRITE(IOIMP,*) 'An error was detected in subroutine prdmcp'
 131 : *  153 2
 132 : * Opération illicite dans ce contexte
 132 :       CALL ERREUR(153)
 133 :       RETURN
 134 : *
 135 : * End of subroutine PRDMCP
 136 : *
 137 :       END
 138 :  
 139 :  
 140 :  
 141 :  
 142 :  
 143 :  
 144 :  
 145 :  

© Cast3M 2003 - All rights reserved.
Disclaimer