Download elfma0.eso

Back to the list

   1 : C ELFMA0    SOURCE    CHAT      05/01/12    23:32:23     5004           
   2 :       SUBROUTINE ELFMA0(A,B,AB,NB,ISING,EPS)                                    
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8(A-H,O-Z)                                                  
   5 : C                                                                               
   6 : C  ====================================================================         
   7 : C    SOUS-PROGRAMME FORTRAN CONSTRUISANT LES MATRICES I-A0 ET -1/B0             
   8 : C    APPELE PAR ELFLIA                                                          
   9 : C                                                                               
  10 : C          A   : MATRICE I-A0                                                   
  11 : C          B   : MATRICE -1/B0                                                  
  12 : C          AB  : VECTEUR CONTENANT LES TERMES DES MATRICES AN ET BN             
  13 : C          NB  : NUMERO D'ORDRE DES EXTREMITES DES ELEMENTS                     
  14 : C                SI 3 ELEMENT COMPLET                                           
  15 : C    CREATION    : 28/01/87                                                     
  16 : C    PROGRAMMEUR : GUILBAUD                                                     
  17 : C  ====================================================================         
  18 : C                                                                               
  19 : -INC CCOPTIO                                                                    
  20 :       DIMENSION A(*),B(*),AB(*),C(4,4),D(4,4),IS(4)                             
  21 : C                                                                               
  22 :       IF(NB.NE.3) THEN                                                          
  23 :         A(1)=1.D0-AB( 2)                                                        
  24 :         A(2)=1.D0-AB( 8)                                                        
  25 :         A(4)=1.D0-AB(13)                                                        
  26 :         A(6)=1.D0-AB( 4)                                                        
  27 :         A(8)=1.D0-AB(13)                                                        
  28 :         A(10)=1.D0-AB( 8)                                                       
  29 :         IF(NB.EQ.1) THEN                                                        
  30 :           A(3)=-AB( 7)                                                          
  31 :           A(5)=+AB(12)                                                          
  32 :           A(7)=+AB(14)                                                          
  33 :           A(9)=-AB( 9)                                                          
  34 :         ELSE                                                                    
  35 :           A(3)=+AB( 7)                                                          
  36 :           A(5)=-AB(12)                                                          
  37 :           A(7)=-AB(14)                                                          
  38 :           A(9)=+AB( 9)                                                          
  39 :         ENDIF                                                                   
  40 : C                                                                               
  41 :         B(1)=-1.D0/AB( 1)                                                       
  42 :         B(2)=-1.D0/AB( 5)                                                       
  43 :         B(3)=-1.D0/AB(10)                                                       
  44 :         B(4)=-1.D0/AB( 3)                                                       
  45 :         B(5)= 1.D0/AB(12)                                                       
  46 :         B(6)= 1.D0/AB( 7)                                                       
  47 :       ELSE                                                                      
  48 :         A( 1)=1.D0-AB( 2)                                                       
  49 :         A( 2)=1.D0-AB( 8)                                                       
  50 :         A( 3)=-AB( 7)                                                           
  51 :         A( 4)=1.D0-AB(13)                                                       
  52 :         A( 5)= AB(12)                                                           
  53 :         A( 6)=1.D0-AB( 4)                                                       
  54 :         A( 7)= AB(14)                                                           
  55 :         A( 8)=1.D0-AB(13)                                                       
  56 :         A( 9)=-AB( 9)                                                           
  57 :         A(10)=1.D0-AB( 8)                                                       
  58 :         A(11)=-AB(16)                                                           
  59 :         A(12)=-AB(22)                                                           
  60 :         A(13)= AB(21)                                                           
  61 :         A(14)=-AB(27)                                                           
  62 :         A(15)=-AB(26)                                                           
  63 :         A(16)=-AB(18)                                                           
  64 :         A(17)=-AB(28)                                                           
  65 :         A(18)=-AB(27)                                                           
  66 :         A(19)= AB(23)                                                           
  67 :         A(20)=-AB(22)                                                           
  68 :         A(21)=-AB(16)                                                           
  69 :         A(22)=-AB(22)                                                           
  70 :         A(23)=-AB(21)                                                           
  71 :         A(24)=-AB(27)                                                           
  72 :         A(25)= AB(26)                                                           
  73 :         A(26)=-AB(18)                                                           
  74 :         A(27)= AB(28)                                                           
  75 :         A(28)=-AB(27)                                                           
  76 :         A(29)=-AB(23)                                                           
  77 :         A(30)=-AB(22)                                                           
  78 :         A(31)=1.D0-AB( 2)                                                       
  79 :         A(32)=1.D0-AB( 8)                                                       
  80 :         A(33)= AB( 7)                                                           
  81 :         A(34)=1.D0-AB(13)                                                       
  82 :         A(35)=-AB(12)                                                           
  83 :         A(36)=1.D0-AB( 4)                                                       
  84 :         A(37)=-AB(14)                                                           
  85 :         A(38)=1.D0-AB(13)                                                       
  86 :         A(39)= AB( 9)                                                           
  87 :         A(40)=1.D0-AB( 8)                                                       
  88 : C                                                                               
  89 :         ISING=0                                                                 
  90 :         DET=AB( 1)*AB( 1)-AB(15)*AB(15)                                         
  91 :         IF(DET.EQ.0.D0) ISING=1                                                 
  92 :         IF(ISING.EQ.1) RETURN                                                   
  93 :         B( 1)=-AB( 1)/DET                                                       
  94 :         B(11)= AB(15)/DET                                                       
  95 :         B(21)= AB(15)/DET                                                       
  96 :         B(31)=-AB( 1)/DET                                                       
  97 : C                                                                               
  98 :         DET=AB( 3)*AB( 3)-AB(17)*AB(17)                                         
  99 :         IF(DET.EQ.0.D0) ISING=1                                                 
 100 :         IF(ISING.EQ.1) RETURN                                                   
 101 :         B( 6)=-AB( 3)/DET                                                       
 102 :         B(16)= AB(17)/DET                                                       
 103 :         B(26)= AB(17)/DET                                                       
 104 :         B(36)=-AB( 3)/DET                                                       
 105 : C                                                                               
 106 :         C(1,1)= AB( 5)                                                          
 107 :         C(1,2)=0.D0                                                             
 108 :         C(1,3)= AB(19)                                                          
 109 :         C(1,4)= AB(20)                                                          
 110 :         C(2,1)=0.D0                                                             
 111 :         C(2,2)=-AB( 7)                                                          
 112 :         C(2,3)=-AB(20)                                                          
 113 :         C(2,4)=-AB(21)                                                          
 114 :         C(3,1)= AB(19)                                                          
 115 :         C(3,2)=-AB(20)                                                          
 116 :         C(3,3)= AB( 5)                                                          
 117 :         C(3,4)=0.D0                                                             
 118 :         C(4,1)= AB(20)                                                          
 119 :         C(4,2)=-AB(21)                                                          
 120 :         C(4,3)=0.D0                                                             
 121 :         C(4,4)=-AB( 7)                                                          
 122 :         N4=4                                                                    
 123 :         WRITE(IOIMP,*) ' FLEXION  Y '                                           
 124 :         WRITE(IOIMP,1000)((C(I,J),J=1,4),I=1,4)                                 
 125 :  1000   FORMAT(4(1X,1PE12.5))                                                   
 125 :         CALL INVER(C,N4,ISING,D,IS,EPS)                                         
 126 :         IF(ISING.EQ.1) RETURN                                                   
 127 :         WRITE(IOIMP,*) '            '                                           
 128 :         WRITE(IOIMP,1000)((C(I,J),J=1,4),I=1,4)                                 
 129 :         B( 2)=-C(1,1)                                                           
 130 :         B( 3)=-C(1,2)                                                           
 131 :         B(12)=-C(1,3)                                                           
 132 :         B(13)=-C(1,4)                                                           
 133 :         B( 9)=-C(2,1)                                                           
 134 :         B(10)=-C(2,2)                                                           
 135 :         B(19)=-C(2,3)                                                           
 136 :         B(20)=-C(2,4)                                                           
 137 :         B(22)=-C(3,1)                                                           
 138 :         B(23)=-C(3,2)                                                           
 139 :         B(32)=-C(3,3)                                                           
 140 :         B(33)=-C(3,4)                                                           
 141 :         B(29)=-C(4,1)                                                           
 142 :         B(30)=-C(4,2)                                                           
 143 :         B(39)=-C(4,3)                                                           
 144 :         B(40)=-C(4,4)                                                           
 145 : C                                                                               
 146 :         C(1,1)= AB(10)                                                          
 147 :         C(1,2)=0.D0                                                             
 148 :         C(1,3)= AB(24)                                                          
 149 :         C(1,4)=-AB(25)                                                          
 150 :         C(2,1)=0.D0                                                             
 151 :         C(2,2)=-AB(12)                                                          
 152 :         C(2,3)= AB(25)                                                          
 153 :         C(2,4)=-AB(26)                                                          
 154 :         C(3,1)= AB(24)                                                          
 155 :         C(3,2)= AB(25)                                                          
 156 :         C(3,3)= AB(10)                                                          
 157 :         C(3,4)=0.D0                                                             
 158 :         C(4,1)=-AB(25)                                                          
 159 :         C(4,2)=-AB(26)                                                          
 160 :         C(4,3)=0.D0                                                             
 161 :         C(4,4)=-AB(12)                                                          
 162 :         WRITE(IOIMP,*) ' FLEXION  Y '                                           
 163 :         WRITE(IOIMP,1000)((C(I,J),J=1,4),I=1,4)                                 
 163 :         CALL INVER(C,N4,ISING,D,IS,EPS)                                         
 164 :         WRITE(IOIMP,*) '            '                                           
 165 :         WRITE(IOIMP,1000)((C(I,J),J=1,4),I=1,4)                                 
 166 :         IF(ISING.EQ.1) RETURN                                                   
 167 :         B( 4)=-C(1,1)                                                           
 168 :         B( 5)=-C(1,2)                                                           
 169 :         B(14)=-C(1,3)                                                           
 170 :         B(15)=-C(1,4)                                                           
 171 :         B( 7)=-C(2,1)                                                           
 172 :         B( 8)=-C(2,2)                                                           
 173 :         B(17)=-C(2,3)                                                           
 174 :         B(18)=-C(2,4)                                                           
 175 :         B(24)=-C(3,1)                                                           
 176 :         B(25)=-C(3,2)                                                           
 177 :         B(34)=-C(3,3)                                                           
 178 :         B(35)=-C(3,4)                                                           
 179 :         B(27)=-C(4,1)                                                           
 180 :         B(28)=-C(4,2)                                                           
 181 :         B(37)=-C(4,3)                                                           
 182 :         B(38)=-C(4,4)                                                           
 183 :       ENDIF                                                                     
 184 :       RETURN                                                                    
 185 :       END                                                                       
 186 :  

© Cast3M 2003 - All rights reserved.
Disclaimer