elpgeo
C ELPGEO SOURCE CHAT 05/01/12 23:37:32 5004 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-B,D-H,O-Z) IMPLICIT COMPLEX*16(C) ************************************************************************ * * PLAQUES PAR EQUATION INTEGRALE: * * TRADUCTION DES CARACTERISTIQUES DU MAILLAGE EN GRANDEURS * UTILES DANS L'ALGORITHME * * CONTENU DES TABLEAUX: *** ** SBORD * * XBORD(1,I) NX N NORMALE EXTERNE AU SEGMENT DE BORD * XBORD(2,I) NY * * XBORD(3,I) TX T TANGENTE ORIENTEE AU SEGMENT DE BORD * XBORD(4,I) TY * * XBORD(5,I) AX A PREMIER POINT DU SEGMENT DE BORD * XBORD(6,I) AY * * XBORD(7,I) BX B DEUXIEME POINT DU SEGMENT DE BORD * XBORD(8,I) BY * * XBORD(9,I) PX P POINT MILIEU DU SEGMENT DE BORD * XBORD(10,I) PY * * XBORD(11,I) LAB LONGUEUR DU SEGMENT DE BORD * XBORD(12,I) CENTRE DU CERCLE * XBORD(13,I) * XBORD(14,I) TETA ANGLE AOP * XBORD(15,I) R RAYON DE COURBURE * * IBORD(K,I) NUMERO GIBI DU KEME POINT DU SEGMENT I * *** ** SCOIN * * XCOIN(1,I) AX A COIN * XCOIN(2,I) AY * * XCOIN(3,I) N1X N1 NORMALE AVANT LE COIN * XCOIN(4,I) N1Y * * XCOIN(5,I) T1X T1 TANGENTE AVANT LE COIN * XCOIN(6,I) T1Y * * XCOIN(7,I) N2X N2 NORMALE APRES LE COIN * XCOIN(8,I) N2Y * * XCOIN(9 ,I) T2X T2 TANGENTE APRES LE COIN * XCOIN(10,I) T2Y * * XCOIN(11,I) L1 LONGUEUR DES SEGMENTS AUTOUR DU COIN * XCOIN(12,I) L2 ( 2 AVANT ET 2 APRES) * XCOIN(13,I) L3 * XCOIN(14,I) L4 * * * ICOIN(K,I) NUMERO DES SEGMENTS AUTOUR DU COIN * ( 2 AVANT ET 2 APRES) * * ** SPOST * * PP0(1,I) X POSITION DES POINTS DE POSTTRAITEMENT * PP0(2,I) Y POSITION DES POINTS DE POSTTRAITEMENT * * ************************************************************************ -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMCOORD * SEGMENT SBORD real*8 XBORD(15,NS) integer IBORD (2 ,NS) ENDSEGMENT SEGMENT SPOST real*8 PP0(2,NP0) complex*16 CRP (NP0) complex*16 CPOST(NS4) ENDSEGMENT SEGMENT SCOIN real*8 XCOIN(14,NC) integer ICOIN(4 ,NC) ENDSEGMENT * DIMENSION PF0(2) * *--0.A LIEU DE FORCE PONCTUELLE * PF0(1) = XCOOR (( IPF0 - 1) * (IDIM + 1) + 1) PF0(2) = XCOOR (( IPF0 - 1) * (IDIM + 1) + 2) * *--0.B LIEU DE POSTRAITEMENT * NP0 = PP0(/2) IF (NP0 .EQ.1) THEN PP0(1,1) = XCOOR (( IPP0 - 1) * (IDIM + 1) + 1) PP0(2,1) = XCOOR (( IPP0 - 1) * (IDIM + 1) + 2) ELSE DO 70 IP = 1,NP0 IPP1 = IPT3.NUM(1,IP) PP0(1,IP) = XCOOR (( IPP1 - 1) * (IDIM + 1) + 1) PP0(2,IP) = XCOOR (( IPP1 - 1) * (IDIM + 1) + 2) 70 CONTINUE ENDIF * *--1. BOUCLE SUR LES ELEMENTS DE BORD * NS = IBORD (/2) DO 100 I=1,NS IP1=IPT1.NUM(1,I) IP2=IPT1.NUM(2,I) IP3=IPT1.NUM(3,I) IBORD(1,I) = IP1 IBORD(2,I) = IP3 XA = XCOOR (( IP1 - 1) * (IDIM + 1) + 1) YA = XCOOR (( IP1 - 1) * (IDIM + 1) + 2) XP = XCOOR (( IP2 - 1) * (IDIM + 1) + 1) YP = XCOOR (( IP2 - 1) * (IDIM + 1) + 2) XB = XCOOR (( IP3 - 1) * (IDIM + 1) + 1) YB = XCOOR (( IP3 - 1) * (IDIM + 1) + 2) XX =( ( XB - XA ) ** 2 + (YB - YA ) ** 2 ) ** .5 XBORD(1,I) = (YB - YA )/XX XBORD(2,I) = (XA - XB )/XX XBORD(3,I) = (XB - XA )/XX XBORD(4,I) = (YB - YA )/XX XBORD(5,I) = XA XBORD(6,I) = YA XBORD(7,I) = XB XBORD(8,I) = YB XBORD(9 ,I) = XP XBORD(10,I) = YP * ---------- CERCLE DE COURBURE XM1 = (XA + XP ) / 2 YM1 = (YA + YP ) / 2 XM2 = (XB + XP ) / 2 YM2 = (YB + YP ) / 2 XAB = XB - XA YAB = YB - YA XAP = XP - XA YAP = YP - YA XBP = XP - XB YBP = YP - YB S1 = XM1 * XAP + YM1 * YAP S2 = XM2 * XBP + YM2 * YBP XDENO = XAP * YBP - XBP * YAP * ----------- SI L'ELEMENT EST TROP DROIT ON LE REND A PEINE COURBE IF ( ABS ( XDENO /(XX*XX) ) .LT. 1E-6) THEN X0 = XP - 1E3*YAB Y0 = YP + 1E3*XAB R = 1E3* XX ELSE X0 = ( S1 * YBP - S2* YAP ) / XDENO Y0 = ( S1 * XBP - S2* XAP ) / XDENO R = (( XA - X0) ** 2 + ( YA - Y0) ** 2 ) ** .5 ENDIF XBORD(12,I) = X0 XBORD(13,I) = Y0 XBORD(15,I) = R 100 CONTINUE *--2. BOUCLE SUR LES COINS * if ( ipt2 .ne. 0 ) then NC = ICOIN(/2) DO 200 I=1,NC IPC1=IPT2.NUM(1,I) DO 210 J=1,NS IPS1 = IBORD (1,J) IPS2 = IBORD (2,J) IF ( IPS2.EQ.IPC1) THEN IF ( J .EQ. 1 ) THEN ICOIN(1,I) = NS ELSE ICOIN(1,I) = J - 1 ENDIF ICOIN(2,I) = J ENDIF IF ( IPS1.EQ.IPC1) THEN ICOIN(3,I) = J IF ( J .EQ. NS) THEN ICOIN(4,I) = 1 ELSE ICOIN(4,I) = J + 1 ENDIF ENDIF 210 CONTINUE XA = XCOOR (( IPC1 - 1) * (IDIM + 1) + 1) YA = XCOOR (( IPC1 - 1) * (IDIM + 1) + 2) XCOIN(1,I) = XA XCOIN(2,I) = YA * AVANT XCOIN(3,I) = XBORD (1 , ICOIN(2,I)) XCOIN(4,I) = XBORD (2 , ICOIN(2,I)) XCOIN(5,I) = XBORD (3 , ICOIN(2,I)) XCOIN(6,I) = XBORD (4 , ICOIN(2,I)) * APRES XCOIN(7,I) = XBORD (1 , ICOIN(3,I)) XCOIN(8,I) = XBORD (2 , ICOIN(3,I)) XCOIN(9,I) = XBORD (3 , ICOIN(3,I)) XCOIN(10,I)= XBORD (4 , ICOIN(3,I)) * LONGUEURS XCOIN(11,I) = XBORD (11, ICOIN(1,I)) XCOIN(12,I) = XBORD (11, ICOIN(2,I)) XCOIN(13,I) = XBORD (11, ICOIN(3,I)) XCOIN(14,I) = XBORD (11, ICOIN(4,I)) 200 CONTINUE endif * RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales