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