Download bgrmas.eso

Back to the list

   1 : C BGRMAS    SOURCE    CHAT      05/01/12    21:39:48     5004           
   2 : 
   3 : C=======================================================================
   4 : C=                            B G R M A S                              =
   5 : C=                            -----------                              =
   6 : C=                                                                     =
   7 : C=  Fonction :                                                         =
   8 : C=  ----------                                                         =
   9 : C=   Calcul de la matrice de gradients BGR au point de Gauss iGau de   =
  10 : C=   l'element fini de type iTEl.                                      =
  11 : C=   Le jacobien est egalement evalue au point de Gauss pour verifier  =
  12 : C=   ulterieurement si l'element fini n'est pas trop distordu.         =
  13 : C=                                                                     =
  14 : C=  Parametres :  (E)=Entree  (S)=Sortie                               =
  15 : C=  ------------                                                       =
  16 : C=   iGau     (E)   Numero du point de Gauss considere                 =
  17 : C=   iTEl     (E)   Type de l'element fini (cf. NOMTP dans bdata.eso)  =
  18 : C=   NBNO     (E)   Nombre de noeuds de l'element fini                 =
  19 : C=   LRE      (E)   Nombre de DDL de l'element fini                    =
  20 : C=   IFOU     (E)   Mode de calcul utilise (cf. IFOUR dans CCOPTIO)    =
  21 : C=   NGRA     (E)   Nombre de composantes du gradient                  =
  22 : C=   NN       (E)   Numero du mode de Fourier (si IFOU=1)              =
  23 : C=   XEL      (E)   Coordonnees des noeuds de l'element fini etudie    =
  24 : C=   Excen    (E)   Excentrement dans le cas d'un element coque        =
  25 : C=   SHPTOT   (E)   Fonctions de forme et leurs derivees               =
  26 : C=   SHP      (S)   Fonctions de forme et leurs derivees actuelles     =
  27 : C=   BB       (S)   Matrice de travail                                 =
  28 : C=   BGR      (S)   Matrice de gradients (B) calcule au point de Gauss =
  29 : C=   DJac     (S)   Jacobien au point de Gauss etudie                  =
  30 : C=   IIPDPG   (E)   Numero du noeud support en modes GENERALISEs       =
  31 : C=                                                                     =
  32 : C=  Remarque :                                                         =
  33 : C=  ----------                                                         =
  34 : C=   SHPTOT(2 a 4,*) contient les DERIVEES des fonctions de forme par  =
  35 : C=   rapport aux coordonnees de REFERENCE Qsi,Eta,Dzeta.               =
  36 : C=   En sortie du sousprogramme, SHPTOT(2 a 4,*) contient les DERIVEES =
  37 : C=   des fonctions de FORME par rapport aux coordonnees REELLES x,y,z. =
  38 : C=======================================================================
  39 : 
  40 :       SUBROUTINE BGRMAS (iGau,iTEl,NBNO,LRE,IFOU,NGRA,NN,
  41 :      .                   XEL,Excen,SHPTOT,SHP,BB,BGR,DJAC,IIPDPG)
  42 : 
  43 :       IMPLICIT INTEGER(I-N)
  44 :       IMPLICIT REAL*8 (A-H,O-Z)
  45 : 
  46 : -INC CCOPTIO
  47 : -INC CCREEL
  48 : -INC SMCOORD
  49 : 
  50 :       DIMENSION XEL(3,*),BGR(NGRA,*),SHP(6,*),SHPTOT(6,NBNO,*),BB(2,*)
  51 :       DIMENSION GEOM(20),XX(3),YY(3),BBF(4,9)
  52 : 
  53 :       DATA XX / .5, .0, .5 /
  54 :       DATA YY / .0, .5, .5 /
  55 : 
  56 : C= Quelques constantes (2.Pi et 4.Pi)
  57 :       PARAMETER (X2Pi=6.283185307179586476925286766559D0)
  58 :       PARAMETER (X4Pi=12.566370614359172953850573533118D0)
  59 : 
  59 :       CALL ZERO(BGR,NGRA,LRE)
  60 :       IF (iTEl.EQ.28.OR.iTEl.EQ.45) GOTO 28
  61 :       IF (iTEl.GE.57.AND.iTEl.LE.68) GOTO 57
  62 : 
  63 : C  1 - Elements MASSIFS en MECANIQUE
  64 : C ===================================
  65 :       IFOR=IFOU+4
  66 :       GOTO (100,110,110,120,130,140,150,150,150,150,
  67 :      .      150,150,150,150,150,160,160,160,170     ),IFOR
  68 :       RETURN
  69 : C =====
  70 : C  1.1 - Elements MASSIFS 2D PLAN GENE
  71 : C =====
  72 :  100  XXX=XZero
  73 :       YYY=XZero
  74 :       DO i=1,NBNO
  75 :         SHP(1,i)=SHPTOT(1,i,iGau)
  76 :         SHP(2,i)=SHPTOT(2,i,iGau)
  77 :         SHP(3,i)=SHPTOT(3,i,iGau)
  78 :         XXX=XXX+SHP(1,i)*XEL(1,i)
  79 :         YYY=YYY+SHP(1,i)*XEL(2,i)
  80 :       ENDDO
  80 :       CALL JACOBI(XEL,SHP,2,NBNO,DJAC)
  81 :       K=1
  82 :       DO i=1,NBNO
  83 :         BGR(1,K)=SHP(2,i)
  84 :         BGR(2,K)=SHP(3,i)
  85 :         BGR(4,K+1)=SHP(2,i)
  86 :         BGR(5,K+1)=SHP(3,i)
  87 :         K=K+2
  88 :       ENDDO
  89 :       IREF=(IIPDPG-1)*(IDIM+1)
  90 :       BGR(9,K)=1.
  91 :       BGR(9,K+1)=XCOOR(IREF+1)-XXX
  92 :       BGR(9,K+2)=YYY-XCOOR(IREF+2)
  93 :       RETURN
  94 : C =====
  95 : C  1.2 - Elements MASSIFS 2D PLAN DEFO ou PLAN CONT
  96 : C =====
  97 :  110  DO i=1,NBNO
  98 :         SHP(1,i)=SHPTOT(1,i,iGau)
  99 :         SHP(2,i)=SHPTOT(2,i,iGau)
 100 :         SHP(3,i)=SHPTOT(3,i,iGau)
 101 :       ENDDO
 101 :       CALL JACOBI(XEL,SHP,2,NBNO,DJAC)
 102 :       K=1
 103 :       DO i=1,NBNO
 104 :         BGR(1,K)=SHP(2,i)
 105 :         BGR(2,K)=SHP(3,i)
 106 :         BGR(4,K+1)=SHP(2,i)
 107 :         BGR(5,K+1)=SHP(3,i)
 108 :         K=K+2
 109 :       ENDDO
 110 :       RETURN
 111 : C =====
 112 : C  1.3 - Elements MASSIFS 2D AXISymetrique
 113 : C =====
 114 :  120  DO i=1,NBNO
 115 :         SHP(1,i)=SHPTOT(1,i,iGau)
 116 :         SHP(2,i)=SHPTOT(2,i,iGau)
 117 :         SHP(3,i)=SHPTOT(3,i,iGau)
 118 :       ENDDO
 118 :       CALL JACOBI(XEL,SHP,2,NBNO,DJAC)
 118 :       CALL DISTRR(XEL,SHP,NBNO,RR)
 119 : C*OF  DJAC=X2Pi*DJAC*RR
 120 :       DJAC=DJAC*RR
 121 :       K=1
 122 :       DO i=1,NBNO
 123 :         BGR(1,K)=SHP(2,i)
 124 :         BGR(2,K)=SHP(3,i)
 125 :         BGR(4,K+1)=SHP(2,i)
 126 :         BGR(5,K+1)=SHP(3,i)
 127 :         BGR(9,K)=SHP(1,i)/RR
 128 :         K=K+2
 129 :       ENDDO
 130 :       RETURN
 131 : C =====
 132 : C  1.4 - Elements MASSIFS 2D FOURIER
 133 : C =====
 134 :  130  DO i=1,NBNO
 135 :         SHP(1,i)=SHPTOT(1,i,iGau)
 136 :         SHP(2,i)=SHPTOT(2,i,iGau)
 137 :         SHP(3,i)=SHPTOT(3,i,iGau)
 138 :       ENDDO
 138 :       CALL JACOBI(XEL,SHP,2,NBNO,DJAC)
 138 :       CALL DISTRR(XEL,SHP,NBNO,RR)
 139 : C*OF  DJAC=X2Pi*DJAC*RR
 140 : C*OF  IF (NN.EQ.0) DJAC=0.5*DJAC
 141 :       DJAC=DJAC*RR
 142 :       XNSUR=DBLE(NN)/RR
 143 :       K=1
 144 :       DO i=1,NBNO
 145 :         BGR(1,K)=SHP(2,i)
 146 :         BGR(2,K)=SHP(3,i)
 147 :         BGR(3,K)=-SHP(1,i)*XNSUR
 148 :         BGR(3,K+2)=-SHP(1,i)/RR
 149 :         BGR(4,K+1)=SHP(2,i)
 150 :         BGR(5,K+1)=SHP(3,i)
 151 :         BGR(6,K+1)=-SHP(1,i)*XNSUR
 152 :         BGR(7,K+2)=SHP(2,i)
 153 :         BGR(8,K+2)=SHP(3,i)
 154 :         BGR(9,K)=SHP(1,i)/RR
 155 :         BGR(9,K+2)=SHP(1,i)*XNSUR
 156 :         K=K+3
 157 :       ENDDO
 158 :       RETURN
 159 : C =====
 160 : C  1.6 - Elements MASSIFS 3D
 161 : C =====
 162 :  140  DO i=1,NBNO
 163 :         SHP(1,i)=SHPTOT(1,i,iGau)
 164 :         SHP(2,i)=SHPTOT(2,i,iGau)
 165 :         SHP(3,i)=SHPTOT(3,i,iGau)
 166 :         SHP(4,i)=SHPTOT(4,i,iGau)
 167 :       ENDDO
 167 :       CALL JACOBI(XEL,SHP,3,NBNO,DJAC)
 168 :       K=1
 169 :       DO i=1,NBNO
 170 :         BGR(1,K)=SHP(2,i)
 171 :         BGR(2,K)=SHP(3,i)
 172 :         BGR(3,K)=SHP(4,i)
 173 :         BGR(4,K+1)=SHP(2,i)
 174 :         BGR(5,K+1)=SHP(3,i)
 175 :         BGR(6,K+1)=SHP(4,i)
 176 :         BGR(7,K+2)=SHP(2,i)
 177 :         BGR(8,K+2)=SHP(3,i)
 178 :         BGR(9,K+2)=SHP(4,i)
 179 :         K=K+3
 180 :       ENDDO
 181 :       RETURN
 182 : C =====
 183 : C  1.7 - Elements MASSIFS 1D
 184 : C =====
 185 : C= 1.7.1 - Modes 1D PLAN
 186 :  150  DO i=1,NBNO
 187 :         SHP(1,i)=SHPTOT(1,i,iGau)
 188 :         SHP(2,i)=SHPTOT(2,i,iGau)
 189 :       ENDDO
 189 :       CALL JACOBI(XEL,SHP,1,NBNO,DJAC)
 190 :       DO i=1,NBNO
 191 :         BGR(1,i)=SHP(2,i)
 192 :       ENDDO
 193 :       IF (IFOU.GE.7) THEN
 194 :         BGR(9,i)=1.
 195 :         IF (IFOU.EQ.11) BGR(5,i+1)=1.
 196 :       ENDIF
 197 :       RETURN
 198 : C= 1.7.2 - Modes 1D AXIS
 199 :  160  DO i=1,NBNO
 200 :         SHP(1,i)=SHPTOT(1,i,iGau)
 201 :         SHP(2,i)=SHPTOT(2,i,iGau)
 202 :       ENDDO
 202 :       CALL JACOBI(XEL,SHP,1,NBNO,DJAC)
 202 :       CALL DISTRR(XEL,SHP,NBNO,RR)
 203 : C*OF  DJAC=X2Pi*DJAC*RR
 204 :       DJAC=DJAC*RR
 205 :       DO i=1,NBNO
 206 :         BGR(1,i)=SHP(2,i)
 207 :         BGR(9,i)=SHP(1,i)/RR
 208 :       ENDDO
 209 :       IF (IFOU.EQ.14) BGR(5,i)=1.
 210 :       RETURN
 211 : C= 1.7.3 - Mode 1D SPHE
 212 :  170  DO i=1,NBNO
 213 :         SHP(1,i)=SHPTOT(1,i,iGau)
 214 :         SHP(2,i)=SHPTOT(2,i,iGau)
 215 :       ENDDO
 215 :       CALL JACOBI(XEL,SHP,1,NBNO,DJAC)
 215 :       CALL DISTRR(XEL,SHP,NBNO,RR)
 216 : C*OF  DJAC=X4Pi*DJAC*RR*RR
 217 :       DJAC=DJAC*RR*RR
 218 :       DO i=1,NBNO
 219 :         BGR(1,i)=SHP(2,i)
 220 :         ZZ=SHP(1,i)/RR
 221 :         BGR(5,i)=ZZ
 222 :         BGR(9,i)=ZZ
 223 :       ENDDO
 224 :       RETURN
 225 : 
 226 : C  2 - Elements MASSIFS en THERMIQUE
 227 : C ===================================
 228 :  57   IFOR=IFOU+4
 229 :       GOTO (200,200,200,210,210,220,230,230,230,230,
 230 :      .      230,230,230,230,230,230,230,230,230     ),IFOR
 231 :       RETURN
 232 : C =====
 233 : C  2.1 - Elements MASSIFS 2D
 234 : C =====
 235 :  200  DO i=1,NBNO
 236 :         SHP(1,i)=SHPTOT(1,i,iGau)
 237 :         SHP(2,i)=SHPTOT(2,i,iGau)
 238 :         SHP(3,i)=SHPTOT(3,i,iGau)
 239 :       ENDDO
 239 :       CALL JACOBI(XEL,SHP,2,NBNO,DJAC)
 240 :       DO i=1,NBNO
 241 :         BGR(1,i)=SHP(2,i)
 242 :         BGR(2,i)=SHP(3,i)
 243 :       ENDDO
 244 :       RETURN
 245 : C =====
 246 : C  2.2 - Elements MASSIFS 2D AXISymetrique
 247 : C  2.3 - Elements MASSIFS 2D FOURIER
 248 : C =====
 249 :  210  DO i=1,NBNO
 250 :         SHP(1,i)=SHPTOT(1,i,iGau)
 251 :         SHP(2,i)=SHPTOT(2,i,iGau)
 252 :         SHP(3,i)=SHPTOT(3,i,iGau)
 253 :       ENDDO
 253 :       CALL JACOBI(XEL,SHP,2,NBNO,DJAC)
 253 :       CALL DISTRR(XEL,SHP,NBNO,RR)
 254 : C*OF  DJAC=X2Pi*DJAC*RR
 255 :       DJAC=DJAC*RR
 256 :       DO i=1,NBNO
 257 :         BGR(1,i)=SHP(2,i)
 258 :         BGR(2,i)=SHP(3,i)
 259 :       ENDDO
 260 :       RETURN
 261 : C =====
 262 : C  2.4 - Elements MASSIFS 3D
 263 : C =====
 264 :  220  DO i=1,NBNO
 265 :         SHP(1,i)=SHPTOT(1,i,iGau)
 266 :         SHP(2,i)=SHPTOT(2,i,iGau)
 267 :         SHP(3,i)=SHPTOT(3,i,iGau)
 268 :         SHP(4,i)=SHPTOT(4,i,iGau)
 269 :       ENDDO
 269 :       CALL JACOBI(XEL,SHP,3,NBNO,DJAC)
 270 :       DO i=1,NBNO
 271 :         BGR(1,i)=SHP(2,i)
 272 :         BGR(2,i)=SHP(3,i)
 273 :         BGR(3,i)=SHP(4,i)
 274 :       ENDDO
 275 :       RETURN
 276 : C =====
 277 : C  2.5 - Elements MASSIFS 1D
 278 : C =====
 279 :  230  DO i=1,NBNO
 280 :         SHP(1,i)=SHPTOT(1,i,iGau)
 281 :         SHP(2,i)=SHPTOT(2,i,iGau)
 282 :       ENDDO
 282 :       CALL JACOBI(XEL,SHP,1,NBNO,DJAC)
 283 :       IF (IFOUR.GE.12.AND.IFOUR.LE.14) THEN
 283 :         CALL DISTRR(XEL,SHP,NBNO,RR)
 284 : C*OF    DJAC=X2Pi*DJAC*RR
 285 :         DJAC=DJAC*RR
 286 :       ELSE IF (IFOUR.EQ.15) THEN
 286 :         CALL DISTRR(XEL,SHP,NBNO,RR)
 287 : C*OF    DJAC=X4Pi*DJAC*RR*RR
 288 :         DJAC=DJAC*RR*RR
 289 :       ENDIF
 290 :       DO i=1,NBNO
 291 :         BGR(1,i)=SHP(2,i)
 292 :       ENDDO
 293 :       RETURN
 294 : 
 295 : C  3 - Element COQUE DKT en MECANIQUE
 296 : C ====================================
 297 :  28   DO i=1,NBNO
 298 :         SHP(1,i)=SHPTOT(1,i,iGau)
 299 :         SHP(2,i)=SHPTOT(2,i,iGau)
 300 :         SHP(3,i)=SHPTOT(3,i,iGau)
 301 :       ENDDO
 301 :       CALL JACOBI(XEL,SHP,2,NBNO,DJAC)
 302 :       K=1
 303 :       DO i=1,NBNO
 304 :         BGR(1,K)=SHP(2,i)
 305 :         BGR(2,K)=SHP(3,i)
 306 :         BGR(4,K+1)=SHP(2,i)
 307 :         BGR(5,K+1)=SHP(3,i)
 308 :         K=K+6
 309 :       ENDDO
 310 : C= Prise en compte de l'excentrement des elements
 310 :       CALL GEOCST(XEL,GEOM)
 310 :       CALL BBGFDK(XX(iGau),YY(iGau),GEOM,BBF)
 311 :       K=2
 312 :       KK=0
 313 :       DO i=1,NBNO
 314 :         DO j=1,3
 315 :           BGR(1,K+j)=Excen*BBF(1,j+KK)
 316 :           BGR(2,K+j)=Excen*BBF(2,j+KK)
 317 :           BGR(4,K+j)=Excen*BBF(3,j+KK)
 318 :           BGR(5,K+j)=Excen*BBF(4,j+KK)
 319 :         ENDDO
 320 :         K=K+6
 321 :         KK=KK+3
 322 :       ENDDO
 323 : C= Fin du traitement de l'excentrement
 323 :       CALL GERADK(XEL,GEOM)
 323 :       CALL BBGRDK(XX(iGau),YY(iGau),GEOM,BB)
 324 :       K=2
 325 :       KK=0
 326 :       DO i=1,3
 327 :         DO j=1,3
 328 :           BGR(3,K+j)= BB(1,j+KK)
 329 :           BGR(6,K+j)= BB(2,j+KK)
 330 :           BGR(7,K+j)=-BB(1,j+KK)
 331 :           BGR(8,K+j)=-BB(2,j+KK)
 332 :         ENDDO
 333 :         K=K+6
 334 :         KK=KK+3
 335 :       ENDDO
 336 :       RETURN
 337 : 
 338 :       END
 339 : 
 340 :  
 341 :  

© Cast3M 2003 - All rights reserved.
Disclaimer