Download effi3.eso

Back to the list

   1 : C EFFI3     SOURCE    CHAT      05/01/12    23:28:29     5004           
   2 :       SUBROUTINE EFFI3(VALCAR,TYVAL,NCA1,NCAR1,XFORC,LRE,IB,IGAU,XATEF1,
   3 :      &NSTEP,DREND,CELEM)
   4 : ***************************************************************
   5 : * calcule la matrice d efficacite directionnelle
   6 : * puis transforme le vecteur force elementaire
   7 : ***************************************************************
   8 :       IMPLICIT INTEGER(I-N)
   9 :       IMPLICIT REAL*8(A-H,O-Z)
  10 :       DIMENSION VALCAR(*),XFORC(*)
  11 :       CHARACTER*16 TYVAL(*)
  12 :       CHARACTER*8 CELEM
  13 :       dimension xatef1(3,3),xfor1(3),tq(3,3)
  14 :       dimension xmat2(3,3), q(3,3),xmat3(3,3)
  15 :       logical drend
  16 : 
  17 :       if (drend) goto 1000
  18 : * matrice de rotation
  19 :       w1x = valcar(ncar1+1)
  20 :       w1y = valcar(ncar1+2)
  21 :       w1z = valcar(ncar1+3)
  22 :       w2x = valcar(ncar1+4)
  23 :       w2y = valcar(ncar1+5)
  24 :       w2z = valcar(ncar1+6)
  25 :       tq(1,1) = w1x
  26 :       tq(2,1) = w1y
  27 :       tq(1,2) = w2x
  28 :       tq(2,2) = w2y
  29 :       if (nstep.gt.2) then
  30 :         w3x = w1y*w2z - w1z*w2y
  31 :         w3y = w2x*w1z - w2z*w1x
  32 :         w3z = w1x*w2y - w1y*w2x
  33 :         tq(3,1) = w1z
  34 :         tq(3,2) = w2z
  35 :         tq(1,3) = w3x
  36 :         tq(2,3) = w3y
  37 :         tq(3,3) = w3z
  38 :       endif
  39 :       do i = 1,nstep
  40 :         do j = 1, nstep
  41 :            q(i,j) = tq(j,i)
  42 :         enddo
  43 :       enddo
  44 : * efficacite
  45 : * produit
  46 :       do i = 1,nstep
  47 :         do j = 1, nstep
  48 :          cc= 0.d0
  49 :             do k1 = 1,nstep
  50 :                 cc = cc + tq(i,k1)*xatef1(k1,j)
  51 :             enddo
  52 :          xmat2(i,j) = cc
  53 :         enddo
  54 :       enddo
  55 :       do i = 1,nstep
  56 :         do j = 1, nstep
  57 :          cc= 0.d0
  58 :             do k1 = 1,nstep
  59 :                 cc = cc + xmat2(i,k1)*q(k1,j)
  60 :             enddo
  61 :          xatef1(i,j) = cc
  62 :         enddo
  63 :       enddo
  64 : 
  65 : 
  66 :  1000 CONTINUE       
  67 : * affecte la force elementaire
  68 : c ----------------------------------------
  69 : c  elements massifs
  70 : c ----------------------------------------
  71 :       if (CELEM.NE.'MASSIF  ') goto 2000
  72 :       kind = int(LRE/NSTEP)
  73 :       DO jind1 = 1,kind          
  74 : 
  75 : * decoupe un bloc
  76 :          do in1 = 1,nstep
  77 :                 xfor1(in1) = XFORC((jind1 - 1)*nstep + in1)
  78 :          enddo
  79 : * multiplie et range
  80 :          do in1 = 1,nstep
  81 :              cc = 0.D0
  82 :               do k1 = 1,nstep
  83 :                  cc = cc + (xatef1(in1,k1) * xfor1(k1)) 
  84 :               enddo
  85 : 
  86 :              XFORC((jind1 - 1)*nstep + in1) = cc   
  87 :          enddo
  88 : 
  89 :       ENDDO
  90 :       RETURN
  91 : 
  92 :  2000 CONTINUE
  93 : c ----------------------------------------
  94 : c  elements 
  95 : c ----------------------------------------
  96 :       RETURN
  97 :       END 
  98 :  

© Cast3M 2003 - All rights reserved.
Disclaimer