[updated 5.Jul.2005]

Librairie ef3d > Fichier he202b.f

Qui appelle he202b ?

line
      SUBROUTINE HE202B (KELFCT,X1,X2,X3,P,DP,DDP)
line
  Auteur : D.Martin (Fevrier 1988)
  Derniere modification : D.Martin (04 juillet 2005)
  Version 2
   
  Fonctions de base et derivees - hexaedre de Lagrange Serendip a 20 noeuds 
   
 -- Arguments d'entree --
 -- Arguments d'entree --
  KELFCT variable CHARACTER indiquant
         si KELFCT(1:1).NE.'N' Calcul des fonctions de base
         si KELFCT(2:2).NE.'N' Calcul des derivees 1eres des fonctions de base
         si KELFCT(3:3).NE.'N' Calcul des derivees 2ndes des fonctions de base
  X1,X2,X3 coordonnees du point ou on demande le calcul
 -- Arguments de sortie --
  P     tableau contenant les valeurs des fonctions au point X1,X2
  DP        -       -            -     -  derivees premieres
  DDP       -       -            -     -  derivees secondes
line
      CHARACTER*(*) KELFCT
      REAL          X1,X2,X3,P(*),DP(3,*),DDP(6,*)
 
      INTEGER I
      REAL X4,X5,X6,DX1,DX2,DX3,DX4,DX5,DX6,QX1,QX2,QX3,QX5,QX6
     &     ,X1X2,X1X3,X1X5,X1X6,X2X3,X2X4,X2X6,X3X4,X3X5,X4X5,X4X6,X5X6
     &     ,QX1M1,QX2M1,QX3M1,QX1M3,QX2M3,QX3M3
line
      X4=1.-X1 
      X5=1.-X2 
      X6=1.-X3 
      X1X2=X1*X2
      X1X3=X1*X3
      X1X5=X1-X1X2 
      X1X6=X1-X1X3 
      X2X3=X2*X3
      X2X4=X2-X1X2 
      X2X6=X2-X2X3 
      X3X4=X3-X1X3 
      X3X5=X3-X2X3 
      X4X5=X4-X2X4 
      X4X6=X4-X3X4 
      X5X6=X6-X2X6 
      DX1=X1+X1
      DX2=X2+X2
      DX3=X3+X3
      DX4=X4+X4
      DX5=X5+X5
      DX6=X6+X6
      QX1=DX1+DX1  
      QX2=DX2+DX2  
      QX3=DX3+DX3  
      QX5=DX5+DX5  
      QX6=DX6+DX6  
   
    Fonctions de base  
  
      IF (KELFCT(1:1).NE.'N') THEN
         P(1) =X1X5*X6  
         P(5) =X1X5-P(1)
         P(6) =X1X3-P(5)
         P(7) =X2X3-P(6)
         P(8) =X3-X1X3-P(7) 
         P(2) =X1X2-P(6)
         P(3) =X2-X2X3-P(2) 
         P(4) =X4+X1X3-X3-P(3)  
         P(20)=DX2*P(1) 
         P(16)=DX4*P(2)
         P(14)=DX5*P(3)
         P(13)=DX1*P(4)
         P(11)=DX5*P(6)
         P(10)=DX4*P(6)
         P(17)=DX5*P(7)
         P(19)=DX1*P(8)
         P(15)=DX6*P(5)
         P(9) =DX6*P(6)
         P(18)=DX6*P(7)
         P(12)=DX6*P(8)
         P(1) =P(1)-(P(20)+P(15)+P(13))  
         P(2) =P(2)-(P(16)+P(9)+P(20))  
         P(3) =P(3)-(P(16)+P(18)+P(14)) 
         P(4) =P(4)-(P(13)+P(14)+P(12)) 
         P(5) =P(5)-(P(11)+P(19)+P(15)) 
         P(6) =P(6)-(P(10)+P(11)+P(9)) 
         P(7) =P(7)-(P(10)+P(17)+P(18)) 
         P(8) =P(8)-(P(19)+P(17)+P(12)) 
         DO 47   I=9,20
47          P(I)=P(I)+P(I) 
      ENDIF
   
    Derivees premieres 
 
      IF (KELFCT(2:2).NE.'N') THEN
         QX1M1=X1+X1+X1-X4 
         QX1M3=QX1M1-2.
         QX2M1=X2+X2+X2-X5 
         QX2M3=QX2M1-2.
         QX3M1=X3+X3+X3-X6 
         QX3M3=QX3M1-2.
         DP(1,4) =DX2+DX3
         DP(1,3) =DX3+DX5
         DP(1,8) =DX2+DX6
         DP(1,7) =DX5+DX6
         DP(1,1) =X5X6*(QX1M1-DP(1,4))  
         DP(1,2) =X2X6*(QX1M1-DP(1,3))  
         DP(1,3) =X2X6*(DP(1,3)+QX1M3)  
         DP(1,4) =X5X6*(DP(1,4)+QX1M3)  
         DP(1,5) =X3X5*(QX1M1-DP(1,8))  
         DP(1,6) =X2X3*(QX1M1-DP(1,7))  
         DP(1,7) =X2X3*(DP(1,7)+QX1M3)  
         DP(1,8) =X3X5*(DP(1,8)+QX1M3)  
         DP(1,16)=-(DP(1,2)+DP(1,3))
         DP(1,13)=-(DP(1,1)+DP(1,4))
         DP(1,10)=-(DP(1,6)+DP(1,7))
         DP(1,19)=-(DP(1,5)+DP(1,8))
         DP(1,20)=QX2*X5X6  
         DP(1,11)=-DP(1,20) 
         DP(1,11)=QX2*X3X5 
         DP(1,17)=-DP(1,11)
         DP(1,15)=QX6*X3X5 
         DP(1,12)=-DP(1,15)
         DP(1,9) =QX3*X2X6 
         DP(1,18)=-DP(1,9)
   
         DP(2,1)=DX3+DX4
         DP(2,4)=DX1+DX3
         DP(2,5)=DX4+DX6
         DP(2,8)=DX1+DX6
         DP(2,2)=X1X6*(QX2M1-DP(2,1))  
         DP(2,1)=X1X6*(DP(2,1)+QX2M3)  
         DP(2,3)=X4X6*(QX2M1-DP(2,4))  
         DP(2,4)=X4X6*(DP(2,4)+QX2M3)  
         DP(2,6)=X1X3*(QX2M1-DP(2,5))  
         DP(2,5)=X1X3*(DP(2,5)+QX2M3)  
         DP(2,7)=X3X4*(QX2M1-DP(2,8))  
         DP(2,8)=X3X4*(DP(2,8)+QX2M3)  
         DP(2,20)=-(DP(2,1)+DP(2,2))
         DP(2,11)=-(DP(2,3)+DP(2,4))
         DP(2,11)=-(DP(2,5)+DP(2,6))
         DP(2,17)=-(DP(2,7)+DP(2,8))
         DP(2,16)=QX1*X4X6 
         DP(2,13)=-DP(2,16)
         DP(2,10)=QX1*X3X4 
         DP(2,19)=-DP(2,10)
         DP(2,9) =QX6*X1X3 
         DP(2,15)=-DP(2,9)
         DP(2,18)=QX3*X4X6 
         DP(2,12)=-DP(2,18)
   
         DP(3,1) =DX2+DX4
         DP(3,2) =DX4+DX5
         DP(3,3) =DX5+DX1
         DP(3,4) =DX1+DX2
         DP(3,11)=QX5*X1X2 
         DP(3,10)=QX1*X2X4 
         DP(3,17)=QX5*X2X4 
         DP(3,19)=QX1*X4X5 
         DO 34  I=1,4  
            DP(3,I+4)=QX3M1-DP(3,I)
            DP(3,I)=QX3M3+DP(3,I)  
34       CONTINUE
         DP(3,20)=-DP(3,11)
         DP(3,16)=-DP(3,10)
         DP(3,14)=-DP(3,17)
         DP(3,13)=-DP(3,19)
         DP(3,1) =X1X5*DP(3,1)  
         DP(3,5) =X1X5*DP(3,5)  
         DP(3,2) =X1X2*DP(3,2)  
         DP(3,6) =X1X2*DP(3,6)  
         DP(3,3) =X2X4*DP(3,3)  
         DP(3,7) =X2X4*DP(3,7)  
         DP(3,4) =X4X5*DP(3,4)  
         DP(3,8) =X4X5*DP(3,8)
         DP(3,9) =-(DP(3,2)+DP(3,6))
         DP(3,12)=-(DP(3,4)+DP(3,8))
         DP(3,15)=-(DP(3,1)+DP(3,5))
         DP(3,19)=-(DP(3,3)+DP(3,7))
      ENDIF
   
    Derivees secondes  
  
       DX6M1=X6-X3 
       IF (KELFCT(3:3).NE.'N') THEN
          DX6M5=DX6M1-4.
          DX6P3=DX6M1+4.
          DX5M1=X5-X2  
          DX5M5=DX5M1-4.
          DX5P3=DX5M1+4.
          DX4M1=X4-X1  
          DX4M5=DX4M1-4.
          DX4P3=DX4M1+4.  
          DO 37 I=9,18,3
             DDP(1,I)  =0.
             DDP(1,I+2)=0.
 37       CONTINUE  
          DDP(1,1) =4.*X5X6
          DDP(1,2) =4.*X2X6
          DDP(1,3) =DDP(1,2)
          DDP(1,4) =DDP(1,1)
          DDP(1,5) =4.*X3X5
          DDP(1,6) =4.*X2X3
          DDP(1,7) =DDP(1,6)
          DDP(1,8) =DDP(1,5)
          DDP(1,16)=-(DDP(1,2)+DDP(1,2))
          DDP(1,13)=-(DDP(1,1)+DDP(1,1))
          DDP(1,10)=-(DDP(1,6)+DDP(1,6))
          DDP(1,19)=-(DDP(1,5)+DDP(1,5))
   
          DO 38 I=9,18,3  
             DDP(2,I)   =0.
             DDP(2,I+1) =0.
 38       CONTINUE 
          DDP(2,1) =4.*X1X6
          DDP(2,2) =DDP(2,1)
          DDP(2,3) =4.*X4X6
          DDP(2,4) =DDP(2,3)
          DDP(2,5) =4.*X1X3
          DDP(2,6) =DDP(2,5)
          DDP(2,7) =4.*X3X4
          DDP(2,8) =DDP(2,7)
          DDP(2,20)=-(DDP(2,1)+DDP(2,1))
          DDP(2,11)=-(DDP(2,3)+DDP(2,3))
          DDP(2,11)=-(DDP(2,5)+DDP(2,5))
          DDP(2,17)=-(DDP(2,7)+DDP(2,7))
   
          DO 46   I=10,19,3
            DDP(3,I)=0. 
            DDP(3,I+1)=0.
 46       CONTINUE 
          DDP(3,1) =4.*X1X5
          DDP(3,2) =4.*X1X2
          DDP(3,3) =4.*X2X4
          DDP(3,4) =4.*X4X5
          DDP(3,5) =DDP(3,1)
          DDP(3,6) =DDP(3,2)
          DDP(3,7) =DDP(3,3)
          DDP(3,8) =DDP(3,4)
          DDP(3,15)=-(DDP(3,1)+DDP(3,1))
          DDP(3,9) =-(DDP(3,2)+DDP(3,2))
          DDP(3,18)=-(DDP(3,3)+DDP(3,3))
          DDP(3,12)=-(DDP(3,4)+DDP(3,4))
   
          DDP(4,5) =QX2-QX3 
          DDP(4,6) =QX2+QX3 
          DDP(4,7) =DDP(4,6)+DX4M5  
          DDP(4,8) =DDP(4,5)-DX4M1  
          DDP(4,6) =DDP(4,6)-DX4P3  
          DDP(4,5) =DDP(4,5)+DX4M1  
          DDP(4,1) =-X1*DDP(4,7)
          DDP(4,2) =-X1*DDP(4,8)
          DDP(4,3) =-X4*DDP(4,5)
          DDP(4,4) =-X4*DDP(4,6)
          DDP(4,5) =DDP(4,5)+DDP(4,3)
          DDP(4,6) =DDP(4,6)+DDP(4,4)
          DDP(4,7) =DDP(4,7)+DDP(4,1)
          DDP(4,8) =DDP(4,8)+DDP(4,2)
          DDP(4,11)=QX1*DX5M1  
          DDP(4,17)=DX5M1+DX5M1
          DDP(4,17)=DDP(4,17)+DDP(4,17)-DDP(4,11)  
          DDP(4,9) =QX1*DX6M1  
          DDP(4,8) =DX6M1+DX6M1
          DDP(4,8) =DDP(4,8)+DDP(4,8)-DDP(4,9)  
          DDP(4,20)=-DDP(4,11)  
          DDP(4,14)=-DDP(4,17) 
          DDP(4,15)=-DDP(4,9) 
          DDP(4,12)=-DDP(4,8) 
          DDP(4,13)=QX1*X4 
          DDP(4,10)=DDP(4,13)  
          DDP(4,16)=-DDP(4,13) 
          DDP(4,19)=DDP(4,16)  
   
          DDP(5,5)=QX1+QX3 
          DDP(5,7)=QX1-QX3 
          DDP(5,6)=DDP(5,5)-DX5P3  
          DDP(5,8)=DDP(5,7)-DX5M1  
          DDP(5,5)=DDP(5,5)+DX5M5  
          DDP(5,7)=DDP(5,7)+DX5M1  
          DDP(5,1)=-X5*DDP(5,7)
          DDP(5,2)=-X2*DDP(5,8)
          DDP(5,3)=-X2*DDP(5,5)
          DDP(5,4)=-X5*DDP(5,6)
          DDP(5,5)=DDP(5,5)+DDP(5,3)
          DDP(5,6)=DDP(5,6)+DDP(5,4)
          DDP(5,7)=DDP(5,7)+DDP(5,1)
          DDP(5,8)=DDP(5,8)+DDP(5,2)
          DDP(5,11)=QX2*X5 
          DDP(5,11)=DDP(5,14)  
          DDP(2,20)=-DDP(5,14)  
          DDP(5,17)=DDP(2,20)
          DDP(5,10)=QX2*DX4M1  
          DDP(5,19)=DX4M1+DX4M1
          DDP(5,19)=DDP(5,19)+DDP(5,19)-DDP(5,10)  
          DDP(5,15)=QX5*DX6M1  
          DDP(5,9)=DX6M1+DX6M1
          DDP(5,9)=DDP(5,9)+DDP(5,9)-DDP(5,15)  
          DDP(5,16)=-DDP(5,10) 
          DDP(5,13)=-DDP(5,19) 
          DDP(5,18)=-DDP(5,9) 
          DDP(5,12)=-DDP(5,15) 
   
          DDP(6,1)=QX2-QX1 
          DDP(6,2)=QX2+QX1 
          DDP(6,3)=-(DDP(6,1)+DX6M1)
          DDP(6,4)=-DDP(6,2)+DX6P3 
          DDP(6,1)=DDP(6,1)-DX6M1  
          DDP(6,2)=DDP(6,2)+DX6M5  
          DDP(6,5)=-X3*DDP(6,3)
          DDP(6,6)=-X3*DDP(6,4)
          DDP(6,7)=-X3*DDP(6,1)
          DDP(6,8)=-X3*DDP(6,2)
          DDP(6,1)=DDP(6,1)+DDP(6,7)
          DDP(6,2)=DDP(6,2)+DDP(6,8)
          DDP(6,3)=DDP(6,3)+DDP(6,5)
          DDP(6,4)=DDP(6,4)+DDP(6,6)
          DDP(6,20)=QX6*DX5M1
          DDP(6,16)=QX6*DX4M1  
          DDP(6,14)=-DDP(6,20)  
          DDP(6,13)=-DDP(6,16) 
          DDP(6,11)=DX5M1+DX5M1
          DDP(6,11)=DDP(6,11)+DDP(6,11)-DDP(6,20)
          DDP(6,10)=DX4M1+DX4M1
          DDP(6,10)=DDP(6,10)+DDP(6,10)-DDP(6,16)  
          DDP(6,17)=-DDP(6,11) 
          DDP(6,19)=-DDP(6,10) 
          DDP(6,9)=QX6*X3 
          DDP(6,15)=-DDP(6,9) 
          DDP(6,18)=DDP(6,15)  
          DDP(6,12)=DDP(6,9)  
       ENDIF
                                                                    END !He22fb
line
top

he202b est appelé dans

top