1 : C ELPDM1 SOURCE CHAT 05/01/12 23:37:02 5004 2 : SUBROUTINE ELPDM1(XBORD,IBORD,NS 3 : & ,XCOIN,ICOIN,NC,NC1 4 : & ,CMA1,CSM,CSOM2 ,NS4 5 : & ,XD,XNU,NTRAP,NTRAP2,PF0,XF0,CB,ISTAT 6 : & ,isingu,iregu ) 7 : IMPLICIT INTEGER(I-N) 8 : IMPLICIT REAL*8(A-B,D-H,O-Z) 9 : IMPLICIT COMPLEX*16(C) 10 : C Include contenant quelques constantes dont XPI : 11 : -INC CCREEL 12 : ************************************************************************ 13 : * 14 : * PLAQUES PAR EQUATION INTEGRALE: 15 : * 16 : * REMPLISSAGE DES TERMES INTEGRAUX DE LA MATRICE XMA1(NS4,NS4) 17 : * ET MISE A 0 DU SECOND MEMBRE 18 : * 19 : * | A1 B1 C1 D1 A2.............. 20 : * | E1 F1 G1 H1 A2............. 21 : * | -------C.L.------------ 22 : * | -------C.L.------------ 23 : * | ... A1 B1 C1 D1 ... 24 : * | .... E1 F1 G1 H1.... 25 : * | -------C.L.-- 26 : * | -------C.L.-- 27 : * 28 : * 29 : * A1 TEL QUE A1 + A2 + .... AN = 0.D0 30 : * 31 : * 32 : * 33 : * 34 : * 35 : ************************************************************************ 36 : DIMENSION XBORD(15,*) 37 : DIMENSION IBORD (2 ,*) 38 : DIMENSION XCOIN(14,*) 39 : DIMENSION ICOIN(4 ,*) 40 : DIMENSION CMA1(NS4,*) 41 : DIMENSION CSM (*) 42 : DIMENSION CSOM2 (*) 43 : * 44 : DIMENSION P0(2) 45 : DIMENSION A (2) 46 : DIMENSION B (2) 47 : DIMENSION OAB(2) 48 : DIMENSION Q (2) 49 : * 50 : DIMENSION XN (2) 51 : DIMENSION XN0(2) 52 : DIMENSION XN1(2) 53 : DIMENSION XN2(2) 54 : * 55 : DIMENSION XT (2) 56 : DIMENSION XT0(2) 57 : DIMENSION XT1(2) 58 : DIMENSION XT2(2) 59 : * 60 : * 61 : DIMENSION COP0(8) 62 : DIMENSION CS1 (8) 63 : DIMENSION CS2 (12) 64 : DIMENSION XLCOIN (4) 65 : * 66 : *--0. MISE A 0 DES LIGNES 1 2 , 5 6 ..DE LA MATRICE 67 : * 68 : DO 100 I=1,NS 69 : DO 110 J=1,NS4 70 : CMA1(4* (I - 1 ) + 1,J) = 0D0 71 : CMA1(4* (I - 1 ) + 2,J) = 0D0 72 : 110 CONTINUE 73 : 100 CONTINUE 74 : * 75 : *--1. BOUCLE SUR LES BORDS 76 : * 77 : DO 200 IP=1,NS 78 : * 79 : *- PREPARATION 80 : * 81 : IL1 = 4*(IP - 1) + 1 82 : IL2 = 4*(IP - 1) + 2 83 : XN0(1) = XBORD(1,IP) 84 : XN0(2) = XBORD(2,IP) 85 : XT0(1) = XBORD(3,IP) 86 : XT0(2) = XBORD(4,IP) 87 : P0(1) = XBORD(9,IP) 88 : P0(2) = XBORD(10,IP) 89 : XLP0 = XBORD(11,IP) 90 : * 91 : *- 1.1 TERMES BORDS-BORDS BOUCLE SUR LES AUTRES BORDS 92 : * 93 : DO 210 JQ=1,NS 94 : IF ( JQ.NE.IP) THEN 95 : XN (1) = XBORD(1,JQ) 96 : XN (2) = XBORD(2,JQ) 97 : XT (1) = XBORD(3,JQ) 98 : XT (2) = XBORD(4,JQ) 99 : A (1) = XBORD(5,JQ) 100 : A (2) = XBORD(6,JQ) 101 : B (1) = XBORD(7,JQ) 102 : B (2) = XBORD(8,JQ) 103 : Q (1) = XBORD(9,JQ) 104 : Q (2) = XBORD(10,JQ) 105 : XLQ = XBORD(11,JQ) 106 : OAB(1) = XBORD(12,JQ) 107 : OAB(2) = XBORD(13,JQ) 108 : TETA = XBORD(14,JQ) 109 : R = XBORD(15,JQ) 109 : CALL ELPDI1(P0,XN0,XT0 110 : & ,Q,XN,XT,A,B,OAB,TETA,R,XLQ 111 : & ,XD,XNU 112 : & ,NTRAP,CS1,CB,ISTAT) 113 : JCOL= 4* (JQ - 1) 114 : 115 : CMA1(IL1,JCOL+1) = CS1(4) / XD 116 : CMA1(IL1,JCOL+2) =-CS1(3) / XD 117 : CMA1(IL1,JCOL+3) = CS1(2) / XD 118 : CMA1(IL1,JCOL+4) =-CS1(1) / XD 119 : 120 : CMA1(IL2,JCOL+1) = CS1(8) / XD 121 : CMA1(IL2,JCOL+2) =-CS1(7) / XD 122 : CMA1(IL2,JCOL+3) = CS1(6) / XD 123 : CMA1(IL2,JCOL+4) =-CS1(5) / XD 124 : ENDIF 125 : 210 CONTINUE 126 : * 127 : *- 1.2 TERMES BORDS-COINS 128 : * 129 : IF ( NC1.NE.0) THEN 130 : DO 220 JC=1,NC 131 : A (1) = XCOIN(1,JC) 132 : A (2) = XCOIN(2,JC) 133 : XN1(1) = XCOIN(3,JC) 134 : XN1(2) = XCOIN(4,JC) 135 : XT1(1) = XCOIN(5,JC) 136 : XT1(2) = XCOIN(6,JC) 137 : XN2(1) = XCOIN(7,JC) 138 : XN2(2) = XCOIN(8,JC) 139 : XT2(1) = XCOIN(9,JC) 140 : XT2(2) = XCOIN(10,JC) 141 : XLCOIN(1) = XCOIN(11,JC) 142 : XLCOIN(2) = XCOIN(12,JC) 143 : XLCOIN(3) = XCOIN(13,JC) 144 : XLCOIN(4) = XCOIN(14,JC) 144 : CALL ELPDI3(P0,XN0 145 : & ,A,XN1,XN2,XT1,XT2,XLCOIN 146 : & ,XD,XNU 147 : & ,CS2,CB,ISTAT) 148 : 149 : 150 : 151 : 152 : I1 = ICOIN(1,JC) 153 : I2 = ICOIN(2,JC) 154 : I3 = ICOIN(3,JC) 155 : I4 = ICOIN(4,JC) 156 : J1 = 4*(I1 - 1) 157 : J2 = 4*(I2 - 1) 158 : J3 = 4*(I3 - 1) 159 : J4 = 4*(I4 - 1) 160 : 161 : * 162 : * TERMES MULTIPLIANT DES W,N SUR LES 2 LIGNES 163 : * 164 : CMA1(IL1,J1+2) = CMA1(IL1,J1+2) - CS2(4)/XD 165 : CMA1(IL1,J2+2) = CMA1(IL1,J2+2) - CS2(3)/XD 166 : CMA1(IL1,J3+2) = CMA1(IL1,J3+2) - CS2(2)/XD 167 : CMA1(IL1,J4+2) = CMA1(IL1,J4+2) - CS2(1)/XD 168 : 169 : CMA1(IL2,J1+2) = CMA1(IL2,J1+2) - CS2(10)/XD 170 : CMA1(IL2,J2+2) = CMA1(IL2,J2+2) - CS2(9)/XD 171 : CMA1(IL2,J3+2) = CMA1(IL2,J3+2) - CS2(8)/XD 172 : CMA1(IL2,J4+2) = CMA1(IL2,J4+2) - CS2(7)/XD 173 : * 174 : * TERMES MULTIPLIANT DES W SUR LES 2 LIGNES 175 : * 176 : CMA1(IL1,J2+1) = CMA1(IL1,J2+1) - CS2(6)/XD 177 : CMA1(IL1,J3+1) = CMA1(IL1,J3+1) - CS2(5)/XD 178 : 179 : CMA1(IL2,J2+1) = CMA1(IL2,J2+1) - CS2(12)/XD 180 : CMA1(IL2,J3+1) = CMA1(IL2,J3+1) - CS2(11)/XD 181 : 220 CONTINUE 182 : * 183 : * 184 : * 185 : ENDIF 186 : 187 : * 188 : *- 1.3 TERMES DU BORDS SUR LUI-MEME 189 : * 190 : * 191 : IF ( iregu .eq.1) THEN 192 : * methode de kn(wd) - kn(ws) 192 : CALL ELPDJ2(XLP0 193 : & ,XD,XNU,CB,ISTAT,NTRAP2 194 : & ,CS1) 195 : ELSE 196 : * methode de kn(wd - ws) 196 : CALL ELPDK2(XLP0 197 : & ,XD,XNU,CB,ISTAT,NTRAP2 198 : & ,CS1) 199 : ENDIF 200 : JCOL= 4* (IP - 1) 201 : 202 : CMA1(IL1,JCOL+1) = CMA1(IL1,JCOL+1) + CS1(4) / XD 203 : CMA1(IL1,JCOL+2) = CMA1(IL1,JCOL+2) - CS1(3) / XD 204 : CMA1(IL1,JCOL+3) = CMA1(IL1,JCOL+3) + CS1(2) / XD 205 : CMA1(IL1,JCOL+4) = CMA1(IL1,JCOL+4) - CS1(1) / XD 206 : 207 : CMA1(IL2,JCOL+1) = CMA1(IL2,JCOL+1) + CS1(8) / XD 208 : CMA1(IL2,JCOL+2) = CMA1(IL2,JCOL+2) - CS1(7) / XD 209 : CMA1(IL2,JCOL+3) = CMA1(IL2,JCOL+3) + CS1(6) / XD 210 : CMA1(IL2,JCOL+4) = CMA1(IL2,JCOL+4) - CS1(5) / XD 211 : 212 : * parti singuliere du terme le plus singulier 213 : IF ( ISingu.EQ. 1) THEN 214 : * CALCUL DU knn0/xd PAR LA PROPRIETE DE SOLIDE RIGIDE 215 : * AU PASSAGE STATIQUE, PUIS ON SE LE GARDE 216 : * ATTENTION LE PREMIER PAS DOIT ETRE STATIQUE 217 : * ------------------------------------------ 218 : IF ( ISTAT .EQ. 1) THEN 219 : CSOM1=0D0 220 : CSOM2(IP)=0D0 221 : DO 300 IPP=1,NS 222 : CSOM1 = CSOM1 + CMA1(IL1,4*(IPP - 1) +1) 223 : CSOM2(IP) = CSOM2(IP) + CMA1(IL2,4*(IPP - 1) +1) 224 : 300 CONTINUE 225 : ENDIF 226 : CMA1(IL2,JCOL+1) = CMA1(IL2,JCOL+1) - CSOM2(IP) 227 : 228 : ELSE 229 : * 230 : * CALCUL DU KNN0/XD exact 231 : * 232 : csing = -1 * XD * (1 + xnu ) / (XPI * xlp0) 233 : CMA1(IL2,JCOL+1) = CMA1(IL2,JCOL+1) + CSING / XD 234 : ENDIF 235 : 236 : * 237 : *-- RAJOUT DU 1/2 SUR LES DIAGONALES 238 : * 239 : CMA1(IL1,JCOL+1) = CMA1(IL1,JCOL+1) + .5D0 240 : CMA1(IL2,JCOL+2) = CMA1(IL2,JCOL+2) + .5D0 241 : 242 : *-1.4 SECOND MEMBRE 243 : * 243 : CALL ELPDOP ( P0,XN0,PF0,XN0,XT0,XD,XNU,COP0,CB,ISTAT) 244 : CSM (IL1) = COP0(1) *XF0 / XD 245 : CSM (IL2) = COP0(5) *XF0 / XD 246 : 200 CONTINUE 247 : * 248 : RETURN 249 : END 250 : 251 : 252 : 253 : 254 :
© Cast3M 2003 - All rights reserved.
Disclaimer