1 : C FSCO2D SOURCE FANDEUR 12/07/18 21:15:37 7434 2 : * 3 : SUBROUTINE FSCO2D(IPT,IPMAIL,IPVECT,V,IVAFOR,IVACAR) 4 : * 5 : *_______________________________________________________________________ 6 : * 7 : * CALCULE LES FORCES SURFACIQUES SUR LES FACES D ELEMENTS 8 : * COQUES BIDIMENSIONNELS 9 : * 10 : * ENTREES : 11 : * --------- 12 : * 13 : * IPT TABLEAU DE POINTEUR SUR UN MPTVAL CONTENANT LES FORCES 14 : * APPLIQUEES 15 : * 0 SI ON A DONNE UNE FORCE CONSTANTE 16 : * IPMAIL POINTEUR SUR UN OBJET GEOMETRIQUE 17 : * IPVECT POINTEUR SUR LE VECTEUR REPRESENTANT LA FORCE 18 : * V VECTEUR REPRESENTANT LA FORCE 19 : * IVAFOR POINTEUR SUR UN MPTVAL ET UN MELVAL DEVANT CONTENIR LES 20 : * FORCES NODALES RESULTANTES 21 : * 22 : *_______________________________________________________________________ 23 : * 24 : IMPLICIT INTEGER(I-N) 25 : IMPLICIT REAL*8(A-H,O-Z) 26 : * 27 : -INC CCOPTIO 28 : -INC CCREEL 29 : * 30 : -INC SMCHAML 31 : -INC SMELEME 32 : -INC SMCOORD 33 : * 34 : SEGMENT MPTVAL 35 : INTEGER IPOS(NS) ,NSOF(NS) 36 : INTEGER IVAL(NCOSOU) 37 : CHARACTER*16 TYVAL(NCOSOU) 38 : ENDSEGMENT 39 : * 40 : DIMENSION IPT(*),V(*) 41 : DIMENSION XE(3,2) 42 : * 43 : PARAMETER ( X2Pi = 6.283185307179586476925286766559D0 ) 44 : * 45 : MELVA1 = IPT(1) 46 : MELVA2 = IPT(2) 47 : IF (IPVECT.EQ.0) THEN 48 : F11I = XZero 49 : F12I = XZero 50 : F21I = XZero 51 : F22I = XZero 52 : IF (MELVA1.NE.0) THEN 53 : SEGACT,MELVA1 54 : IGM1 = MIN(2,MELVA1.VELCHE(/1)) 55 : IBM1 = MELVA1.VELCHE(/2) 56 : ENDIF 57 : IF (MELVA2.NE.0) THEN 58 : SEGACT,MELVA2 59 : IGM2 = MIN(2,MELVA2.VELCHE(/1)) 60 : IBM2 = MELVA2.VELCHE(/2) 61 : ENDIF 62 : ELSE 63 : F11I = V(1) 64 : F12I = V(2) 65 : F21I = V(1) 66 : F22I = V(2) 67 : ENDIF 68 : * 69 : MELEME=IPMAIL 70 : C* SEGACT,MELEME <- ACTIF EN E/S (NON MODIFIE) 71 : C* NBNN=NUM(/1) 72 : NBELEM=NUM(/2) 73 : C 74 : C RECUPERATION DE L'EPAISSEUR (CONTRAINTES PLANES) : 75 : C 76 : DIM3 = 1.D0 77 : MELVA3 = 0 78 : IF (IVACAR.NE.0 .AND. IFOUR.EQ.-2) THEN 79 : MPTVAL = IVACAR 80 : MELVA3 = IVAL(1) 81 : IF (MELVA3.NE.0) THEN 82 : IGM3 = MELVA3.VELCHE(/1) 83 : IBM3 = MELVA3.VELCHE(/2) 84 : ENDIF 85 : ENDIF 86 : 87 : IF (IFOUR.LE.0) THEN 88 : IFO = 0 89 : ELSE IF (IFOUR.EQ.1)THEN 90 : IFO = 1 91 : ENDIF 92 : * 93 : MPTVAL = IVAFOR 94 : * 95 : * BOUCLE SUR LES ELEMENTS 96 : * 97 : DO 1 IB = 1, NBELEM 98 : C 99 : C RECUPERATION DE L'EPAISSEUR SI DEFINIE 100 : C 101 : IF (MELVA3.NE.0) THEN 102 : IBMN = MIN(IB,IBM3) 103 : *OF Valeur constante par element ? 104 : DIM3 = MELVA3.VELCHE(IGM3,IBMN) 105 : ENDIF 106 : * 106 : CALL DOXE(XCOOR,IDIM,2,NUM,IB,XE) 107 : 108 : R1 = XE(1,1) 109 : R2 = XE(1,2) 110 : 111 : A = R2 - R1 112 : B = XE(2,2) - XE(2,1) 113 : D2 = A*A + B*B 114 : D = SQRT(D2) 115 : UNSD = 1.D0/D 116 : A = A * UNSD 117 : B = B * UNSD 118 : 119 : IF (IFOUR.LT.0) THEN 120 : IF (IFOUR.EQ.-2) THEN 121 : R1 = DIM3 122 : R2 = DIM3 123 : ELSE 124 : R1 = 1.D0 125 : R2 = 1.D0 126 : ENDIF 127 : ELSE IF (IFOUR.EQ.0) THEN 128 : R1 = X2Pi * R1 129 : R2 = X2Pi * R2 130 : C* ELSE IF (IFOUR.EQ.1) THEN 131 : ELSE 132 : IF (NIFOUR.EQ.0) THEN 133 : R1 = X2Pi * R1 134 : R2 = X2Pi * R2 135 : ELSE 136 : R1 = XPI * R1 137 : R2 = XPI * R2 138 : ENDIF 139 : ENDIF 140 : * 141 : IF (IPVECT.EQ.0) THEN 142 : IF (MELVA1.NE.0) THEN 143 : IBMN = MIN(IB,IBM1) 144 : F11I = MELVA1.VELCHE(1,IBMN) 145 : F21I = MELVA1.VELCHE(IGM1,IBMN) 146 : ENDIF 147 : IF (MELVA2.NE.0) THEN 148 : IBMN = MIN(IB,IBM2) 149 : F12I = MELVA2.VELCHE(1,IBMN) 150 : F22I = MELVA2.VELCHE(IGM2,IBMN) 151 : ENDIF 152 : ENDIF 153 : * 154 : * chgt repère du vecteur F: global -> local 155 : * 156 : F11 = A*F11I + B*F12I 157 : F12 = -B*F11I + A*F12I 158 : F21 = A*F21I + B*F22I 159 : F22 = -B*F21I + A*F22I 160 : * 161 : FA = F12*R1 162 : FB = F12*R2 + F22*R1 - 2.D0*F12*R1 163 : FC = (F22-F12)*(R2-R1) 164 : * 165 : XO1 = D2 * (FA/12.D0+FB/30.D0+FC/60.D0) 166 : XO2 =-D2 * (FA/12.D0+FB/20.D0+FC/30.D0) 167 : * 168 : FP12 = D * (FA*0.5D0+FB*0.15D0+FC/15.D0) 169 : FP22 = D * (FA*0.5D0+FB*0.35D0+FC*4.D0/15.D0) 170 : * 171 : IF (IFOUR.EQ.0) THEN 172 : FD=F11*R1 173 : FE=F21*R2 174 : FF=F21*R1 + F11*R2 + FE 175 : FG=F21*R1 + F11*R2 + FD 176 : FP11=D*(FD/4.D0 + FF/12.D0) 177 : FP21=D*(FE/4.D0 + FG/12.D0) 178 : ELSE 179 : FP11=D*(F11/3.D0 + F21/6.D0) 180 : FP21=D*(F21/3.D0 + F11/6.D0) 181 : ENDIF 182 : * 183 : MELVAL = IVAL(1) 184 : VELCHE(1,IB) = -B*FP12 + A*FP11 185 : VELCHE(2,IB) = -B*FP22 + A*FP21 186 : * 187 : MELVAL = IVAL(2) 188 : VELCHE(1,IB) = A*FP12 + B*FP11 189 : VELCHE(2,IB) = A*FP22 + B*FP21 190 : * 191 : MELVAL = IVAL(3+IFO) 192 : VELCHE(1,IB) = XO1 193 : VELCHE(2,IB) = XO2 194 : * 195 : 1 CONTINUE 196 : 197 : IF (IPVECT.EQ.0) THEN 198 : IF (MELVA1.NE.0) SEGDES,MELVA1 199 : IF (MELVA2.NE.0) SEGDES,MELVA2 200 : ENDIF 201 : C* SEGDES,MELEME <- ACTIF EN E/S (NON MODIFIE) 202 : 203 : RETURN 204 : END 205 : 206 :
© Cast3M 2003 - All rights reserved.
Disclaimer