Download tdiag2.eso

Back to the list

   1 : C TDIAG2    SOURCE    CHAT      09/10/09    21:25:17     6519           
   2 :       SUBROUTINE TDIAG2(ITY1,NOMDU1,NOMPR1,IPTMAIL,IPCH1,IPRIGI)
   3 : C
   4 : C**********************************************************************
   5 : C
   6 : C     Subroutine appelée par TDIAG.
   7 : C     Création d'une matrice de couplage dans le cas où les 
   8 : C     supports des inconnues primales et duales sont identiques.
   9 : C
  10 : C  ENTREES :
  11 : C  --------
  12 : C
  13 : C  ITY1    :  Cas MAILLAGE SEG2 couple (Primal,Dual)
  14 : C       = 1 si support inc P&D correspond au maillage de connectivite
  15 : C       = 2 si support inc P&D dans l'ordre different du maillage de 
  16 : C           connectivite
  17 : C  NOMDU1  :  Nom de l'inconnue duale.
  18 : C  NOMPR1  :  Nom de l'inconnue primale.
  19 : C  IPTMAIL :  Pointeur du maillage de connectivite
  20 : C  IPCH1   :  Pointeur sur le champ multiplicateur.
  21 : C
  22 : C  SORTIE :
  23 : C  -------
  24 : C
  25 : C  IPRIGI  :  Pointeur sur la matrice de couplage élémentaire.
  26 : C
  27 : C
  28 : C AUTEUR, DATE DE CREATION:
  29 : C -------------------------
  30 : C
  31 : C     Laurent DADA      décembre 1996
  32 : C
  33 : C AUTEUR, DATE DE MODIFICATION:
  34 : C -----------------------------
  35 : C
  36 : C     Alexandre BLEYER          Novembre 2002
  37 : C     Modifications : - creation des matrices elementaires simplifiee
  38 : C                     - utilisation d'un maillage de connectivite 
  39 : C                       entre l'inc. duale et l'inc. primale
  40 : C
  41 : C LANGAGE:
  42 : C --------
  43 : C
  44 : C     ESOPE + FORTRAN77
  45 : C
  46 : C**********************************************************************
  47 : C
  48 :       IMPLICIT INTEGER(I-N)
  49 :       IMPLICIT REAL*8 (A-H,O-Z)
  50 : C
  51 : -INC CCOPTIO
  52 : -INC CCGEOME
  53 : -INC SMCOORD
  54 : -INC SMCHPOI
  55 : -INC SMELEME
  56 :       POINTEUR IPTMAIL.MELEME,IPTC1.MELEME
  57 : -INC SMRIGID
  58 : C
  59 :       SEGMENT REDI
  60 :         INTEGER IPOS1(NNGOT)
  61 :       ENDSEGMENT
  62 : C
  63 :       CHARACTER*8 TYPE,NOMDU1,NOMPR1
  64 :       LOGICAL LPRIMA,LDUA
  65 : C
  66 : C Récupération du pointeur des valeurs
  67 : C du champ multiplicateur.
  68 : C Remplissage du tableau de redirection
  69 : C
  70 :       NNGOT = XCOOR(/1)/(IDIM+1)
  71 :       SEGINI REDI
  72 : C
  73 :       MCHPOI = IPCH1
  74 :       SEGACT MCHPOI
  75 :       MSOUPO = IPCHP(1)
  76 :       SEGDES MCHPOI
  77 :       SEGACT MSOUPO
  78 :       IPTC1  = IGEOC
  79 :       MPOVAL = IPOVAL
  80 :       SEGACT MPOVAL
  81 :       SEGDES MSOUPO
  82 :       SEGACT IPTC1
  82 :       IF (IPTC1.ITYPEL.NE.1)   CALL CHANGE (IPTC1,1)
  83 :       NBELC1 = IPTC1.NUM(/2)
  84 :       DO 100 I100=1,NBELC1
  85 :         IPOS1(IPTC1.NUM(1,I100)) = I100
  86 : 100    CONTINUE
  87 : C
  88 : C activation du SPG de l'inconnue duale
  89 : C
  90 :       SEGACT IPTMAIL
  91 :       IF (IPTMAIL.ITYPEL.NE.2) THEN
  91 :         CALL ERREUR(16)
  92 :         RETURN
  93 :       ENDIF
  94 :       NBEL1 = IPTMAIL.NUM(/2)
  95 : C
  96 : C Voir si le support du champ multiplicateur est le support
  97 : C de l'inconne duale ou le support de l'inconnue primale
  98 : C
  99 :       I11 = 0
 100 :       I12 = 0
 101 :       DO 10 I10=1,NBELC1
 102 :         IF (IPTC1.NUM(1,I10).EQ.IPTMAIL.NUM(1,1)) I11 = 1
 103 :         IF (IPTC1.NUM(1,I10).EQ.IPTMAIL.NUM(2,1)) I12 = 1
 104 :  10   CONTINUE
 105 :       
 106 :       LPRIMA =.FALSE.
 107 :       LDUA   =.FALSE.
 108 :       IF ((I11.EQ.1).AND.(I12.EQ.0)) THEN
 109 :          LPRIMA=.TRUE.
 110 :       ELSEIF ((I11.EQ.0).AND.(I12.EQ.1)) THEN
 111 :          LDUA=.TRUE.
 112 :       ELSE
 113 :         MOTERR(1:8)  = 'CHPO    '
 113 :         CALL ERREUR (708)
 114 :         RETURN
 115 :       ENDIF
 116 : C
 117 :       SEGDES IPTC1
 118 : C
 119 : C Création de la RIGIDITE
 120 : C
 121 :       NRIGE  = 8
 122 :       NRIGEL = 1
 123 :       SEGINI MRIGID
 124 :       IPRIGI = MRIGID
 125 : C
 126 :       MTYMAT = 'RIGIDITE'
 127 :       IFORIG = IFOMOD
 128 :       ICHOLE = 0
 129 :       IMGEO1 = 0
 130 :       IMGEO2 = 0
 131 :       ISUPEQ = 0
 132 :       COERIG(1)   = 1.D0
 133 :       IRIGEL(1,1) = IPTMAIL
 134 :       IRIGEL(2,1) = 0
 135 :       IRIGEL(5,1) = NIFOUR
 136 :       IRIGEL(6,1) = 0
 137 :       IRIGEL(7,1) = 2
 138 :       IRIGEL(8,1) = 0
 139 : C
 140 : C Remplissage du descripteur de l'objet RIGIDITE
 141 : C
 142 :       NLIGRP = 1
 143 :       NLIGRD = 1
 144 :       SEGINI DESCR
 145 :       IRIGEL(3,1) = DESCR
 146 : C
 147 :         IF (ITY1.EQ.1) THEN
 148 :           NOELEP(1) = 1
 149 :           NOELED(1) = 2
 150 :         ELSEIF (ITY1.EQ.2) THEN
 151 :           NOELEP(1) = 2
 152 :           NOELED(1) = 1
 153 :         ENDIF
 154 :         LISINC(1) = NOMPR1
 155 :         LISDUA(1) = NOMDU1
 156 : C
 157 :       SEGDES DESCR
 158 : C
 159 : C Remplissage des matrices elementaires
 160 : C
 161 :       NELRIG = NBEL1
 162 :       SEGINI xMATRI
 163 :       DO 30 I30=1,NBEL1
 164 : *        SEGINI XMATRI
 165 : *        IMATTT(I30) = XMATRI
 166 :         IF (LPRIMA) NUMPT1 = IPTMAIL.NUM(1,I30)
 167 :         IF (LDUA)   NUMPT1 = IPTMAIL.NUM(2,I30)
 168 :         IF (IPOS1(NUMPT1).NE.0) THEN
 169 :           XVALM1 = VPOCHA(IPOS1(NUMPT1),1)
 170 :         ELSE
 171 :           MOTERR(1:8)  = 'CHPO    '
 171 :           CALL ERREUR(708)
 172 :           RETURN
 173 :         ENDIF
 174 :         RE(1,1,i30) = XVALM1
 175 : *        SEGDES XMATRI
 176 : 30    CONTINUE
 177 : 
 178 :       IRIGEL(4,1) = xMATRI
 179 :       SEGDES xMATRI
 180 : C
 181 :       SEGDES IPTMAIL
 182 :       SEGDES MPOVAL
 183 :       SEGDES MRIGID
 184 :       SEGSUP REDI
 185 : C
 186 :       END
 187 :           
 188 :  
 189 :  

© Cast3M 2003 - All rights reserved.
Disclaimer