Download tdiag.eso

Back to the list

   1 : C TDIAG     SOURCE    CHAT      09/10/09    21:25:19     6519           
   2 :       SUBROUTINE TDIAG (IPTAB1)
   3 : C
   4 : C***********************************************************************
   5 : C
   6 : C
   7 : C FONCTION:
   8 : C ---------
   9 : C
  10 : C     Discrétisation de l'opération IDENTITE en "0D" sur des 
  11 : C     éléments de type POINT.
  12 : C
  13 : C
  14 : C ENTREE :
  15 : C ----------
  16 : C
  17 : C     IPTAB1          : TABLE de soustype 'OPER_0D' contenant les indices
  18 : C                       suivants :
  19 : C
  20 : C     TAB1 . 'MAILLAGE': maillage des connectivités entre le spg de 
  21 : C                        l'inc. primale et le spg de l'inc. duale
  22 : C                        (type MAILLAGE).
  23 : C     TAB1 . 'INCO'   : TABLE de soustype 'INCO' contenant l'ensemble
  24 : C                       des champs à l'itération précédant l'itération
  25 : C                       courante (type ENTIER).
  26 : C     TAB1 . 'COEF'   : Valeurs de la diagonale ou des coefficients de 
  27 : C                       couplage (type CHPOINT ou MOT).
  28 : C     TAB1 . 'PRIMAL' : Nom de l'inconnue primale (doit être un indice
  29 : C                       de la table de soustype 'INCO' (type MOT).
  30 : C     TAB1 . 'DUAL'   : Nom de l'inconnue duale (doit être un indice de
  31 : C                       la table de soustype 'INCO') (type MOT).
  32 : C     TAB1 . 'TYPEL'  : Mot indiquant quel type de spg on a entre l'inc.
  33 : C                       primale et l'inc. duale (type MOT).
  34 : C                       3 possibilités pour l'instant :
  35 : C                          - TAB1 . 'TYPEL' = 'P=D' (ou 'D=P')
  36 : C                            ==> spg primale = spg duale
  37 : C                          - TAB1 . 'TYPEL' = 'PD'
  38 : C                          - TAB1 . 'TYPEL' = 'DP'
  39 : C                       Selon que TAB1 . 'MAILLAGE' soit un maillage 
  40 : C                       entre Primale et Duale ou l'inverse
  41 : C
  42 : C  RESULTATS :
  43 : C  ----------
  44 : C
  45 : C     TAB1 . 'LHS' : Matrice élémentaire associée à l'opération
  46 : C                    (type RIGIDITE).
  47 : C
  48 : C REMARQUES:
  49 : C ----------
  50 : C
  51 : C      Si aucun nom de composante primale n'est donné le résultat est 
  52 : C      une matrice diagonale.
  53 : C      Si un nom de composante primale, différent du nom de la composante
  54 : C      duale, est donné, le résultat est une matrice de couplage.
  55 : C      Si les supports des composantes primales et duales sont différents
  56 : C      le résultat sera également une matrice de couplage.
  57 : C
  58 : C
  59 : C AUTEUR, DATE DE CREATION:
  60 : C -------------------------
  61 : C
  62 : C     Laurent DADA      décembre 1996
  63 : C
  64 : C AUTEUR, DATE DE MODIFICATION:
  65 : C -----------------------------
  66 : C
  67 : C     Alexandre BLEYER          Novembre 2002
  68 : C     Modifications : - creation des matrices elementaires simplifiee
  69 : C                     - utilisation d'un maillage de connectivite 
  70 : C                       entre l'inc. duale et l'inc. primale
  71 : C
  72 : C
  73 : C LANGAGE:
  74 : C --------
  75 : C
  76 : C     ESOPE + FORTRAN77
  77 : C
  78 : C***********************************************************************
  79 : C
  80 :       IMPLICIT INTEGER(I-N)
  81 :       IMPLICIT REAL*8 (A-H,O-Z)
  82 : C
  83 : -INC CCOPTIO
  84 : -INC CCGEOME
  85 : -INC SMCOORD
  86 : -INC SMTABLE
  87 :       POINTEUR IPTAB1.MTABLE,IPTABI.MTABLE
  88 : -INC SMCHPOI
  89 : -INC SMELEME
  90 :       POINTEUR IPTMAIL.MELEME
  91 : -INC SMRIGID
  92 : C
  93 :       CHARACTER*8 TYPE,MOTI,MOT1,NOMPR1,NOMDU1,NOSUP1,NOSUD1,NOMMU1
  94 :       CHARACTER*8 TYPEL,MOTYP,TYPOBJ
  95 :       CHARACTER*4 NAMD1,NAMP1
  96 : 
  97 : C Recuperation du maillage des connectivite
  98 :       TYPOBJ='MAILLAGE'
  98 :       CALL ACMO (IPTAB1,'MAILLAGE',TYPOBJ,IPTMAIL)
  99 :       IF (IERR.NE.0) RETURN
 100 : C
 101 : C Lecture de la table INCO dans la table OPER_0D
 102 : C
 103 :       TYPE = 'TABLE   '
 103 :       CALL ACMO (IPTAB1,'INCO',TYPE,IPTABI)
 104 :       IF (IERR.NE.0) RETURN
 105 : C
 106 :       MOTI = 'SOUSTYPE'
 106 :       CALL ACMM (IPTABI,MOTI,MOT1)
 107 :       IF (IERR.NE.0) RETURN
 108 :       IF (MOT1(1:4).NE.'INCO') THEN
 109 :           MOTERR(1:8)  = 'INCO    '
 110 :           MOTERR(9:16) = 'INCO    '
 110 :           CALL ERREUR (790)
 111 :           RETURN
 112 :       ENDIF
 113 : C
 114 : C Récupération du CHPOINT multiplicateur
 115 : C
 116 :       TYPE = '        '
 116 :       CALL ACMO (IPTAB1,'COEF',TYPE,IPR1)
 117 :       IF (IERR.NE.0) RETURN
 118 :       IF (TYPE.EQ.'MOT     ') THEN
 118 :           CALL ACMM (IPTAB1,'COEF',NOMMU1)
 119 :           IF (IERR.NE.0) RETURN
 120 : C récupération du CHPOINT multiplicateur dans la table INCO
 121 :           TYPE = 'CHPOINT '
 121 :           CALL ACMO (IPTABI,NOMMU1,TYPE,IPCH1)
 122 :           IF (IERR.NE.0) RETURN
 123 :       ELSEIF (TYPE.EQ.'CHPOINT ') THEN
 124 :           IPCH1 = IPR1
 125 :       ELSE
 126 :           MOTERR(1:8)  = 'COEF    '
 127 :           MOTERR(9:16) = TYPE
 127 :           CALL ERREUR (787)
 128 :           RETURN
 129 :       ENDIF
 130 : C
 131 : C Lecture de l'inconnue PRIMALE
 132 : C
 133 :       TYPE = '        '
 133 :       CALL ACMO (IPTAB1,'PRIMAL',TYPE,IPR1)
 134 :       IF (TYPE.EQ.'MOT     ') THEN
 134 :           CALL ACMM (IPTAB1,'PRIMAL',NOMPR1)
 135 :           IF (IERR.NE.0) RETURN
 136 :       ENDIF
 137 : C
 138 : C Lecture de l'inconnue DUALE
 139 : C
 140 :       TYPE = '        '
 140 :       CALL ACMO (IPTAB1,'DUAL',TYPE,IDU1)
 141 :       IF (TYPE.EQ.'MOT     ') THEN
 141 :           CALL ACMM (IPTAB1,'DUAL',NOMDU1)
 142 :           IF (IERR.NE.0) RETURN
 143 :       ENDIF
 144 : C
 145 : C Lecture de l'ordre PRIMAL/DUAL par rapport au
 146 : C maillage des connectivites
 147 : C
 148 :       TYPE = '        '
 148 :       CALL ACMO (IPTAB1,'TYPEL',TYPE,ITYPL1)
 149 :       IF (TYPE.EQ.'MOT     ') THEN
 149 :           CALL ACMM (IPTAB1,'TYPEL',TYPEL)
 150 :           IF (IERR.NE.0) RETURN
 151 :       ENDIF
 152 : C
 153 : C Suivant TYPEL, on construit les differentes matrices
 154 : C
 155 :       IF ((TYPEL.EQ.'P=D').OR.(TYPEL.EQ.'D=P')) THEN
 155 :           CALL TDIAG1(NOMDU1,NOMPR1,IPTMAIL,IPCH1,MRIGID)
 156 :           IF (IERR.NE.0) RETURN
 157 :       ELSEIF(TYPEL.EQ.'PD') THEN
 158 :           ITY1=1
 158 :           CALL TDIAG2(ITY1,NOMDU1,NOMPR1,IPTMAIL,IPCH1,MRIGID)
 159 :           IF (IERR.NE.0) RETURN
 160 :       ELSEIF(TYPEL.EQ.'DP') THEN
 161 :           ITY1=2
 161 :           CALL TDIAG2(ITY1,NOMDU1,NOMPR1,IPTMAIL,IPCH1,MRIGID)
 162 :           IF (IERR.NE.0) RETURN
 163 :       ELSE
 163 :           CALL ERREUR (19)
 164 :           RETURN
 165 :       ENDIF
 166 : C
 167 : C Ecriture du résultat - Remplissage de l'indice 'LHS'
 168 : C
 169 :       TYPE = 'RIGIDITE'
 169 :       CALL ECMO (IPTAB1,'LHS',TYPE,MRIGID)
 170 :       IF (IERR.NE.0) RETURN
 171 : C
 172 :       END
 173 :       
 174 :  
 175 :  
 176 :  
 177 :  
 178 :  
 179 :  
 180 :  
 181 :  
 182 :  
 183 :  
 184 :  

© Cast3M 2003 - All rights reserved.
Disclaimer