$$$$ HAUBAN * HAUBAN PROCEDUR AM 93/05/19 21:16:18 856 'DEBPROC' HAUBAN ; *------------------------------------------------------------------ * PROCEDURE HAUBAN *------------------------------------------------------------------ * * EN ENTREE : 2 POINTS * RIGIDITE ES * POIDS LINEIQUE PL * LONGUEUR INITIALE L0 * NOMBRE DE NOEUDS NN * * * EN SORTIE : MAILLAGE EN BARRES * MODELE * CHAMELEM DE TENSIONS * 'ARGUMENT' P1*POINT P2*POINT ; 'ARGUMENT' ES*FLOTTANT PL*FLOTTANT; 'ARGUMENT' L0*FLOTTANT ; 'ARGUMENT' NN*ENTIER IMP/LOGIQUE ; * 'SI' ( 'NON' ( 'EXIS' IMP ) ) ; IMP = FAUX ; 'FINSI'; * * ON RECUPERE LA DIMENSION DE L'ESPACE * IDIM = 'VALE' DIME ; * * * PARAMETRES GEOMETRIQUES ET AUTRES * PREC=1.E-8 ; DX = ( 'COOR' 1 P2 ) - ( 'COOR' 1 P1 ) ; DZ = ( 'COOR' IDIM P2 ) - ( 'COOR' IDIM P1 ) ; 'SI' ( IDIM 'EGA' 3 ) ; DY = ( 'COOR' 2 P2 ) - ( 'COOR' 2 P1 ) ; 'FINSI'; A = L0; P = PL ; * * CALCUL DE QUELQUES QUANTITES * DX2 = DX * DX ; DZ2 = DZ * DZ ; L2 = DX2 + DZ2 ; 'SI' ( IDIM 'EGA' 3 ) ; DY2 = DY * DY ; L2 = L2 + DY2 ; 'FINSI'; LL = L2 ** 0.5 ; 'SI' ( IDIM 'EGA' 3 ) ; LPROJ = ( DX2 + DY2 ) ** 0.5 ; COSTET = DX / LPROJ ; SINTET = DY / LPROJ ; DX = ( COSTET * DX ) + ( SINTET * DY ) ; DX2 = DX * DX ; 'FINSI'; * P2ES = P / ( 2. * ES ) ; * * CALCUL D'UNE PREMIERE ESTIMATION DE ALP * CO0 = -1. * ( ( P * LL ) / ES ) ; CO1 = LL - A ; CO2 = CO0 / 12. ; CO3 = DX2 / ( 24. * LL ) ; * XR1 XI1 XR2 XI2 XR3 XI3 = 'DEG3' CO0 CO1 CO2 CO3 ; 'SI' IMP ; MESS ' XR1 XI1 ' XR1 XI1 ; MESS ' XR2 XI2 ' XR2 XI2 ; MESS ' XR3 XI3 ' XR3 XI3 ; 'FINSI' ; ALP = 'MAXI' ( 'PROG' XR1 XR2 XR3 ) ; * * SCHEMA ITERATIF * IBOU = 0; 'REPE' LABOU 50; IBOU = IBOU + 1 ; 'SI' IMP ; 'MESS' ' ITERATION N° ' IBOU ; 'FINSI'; * * CALCUL DE LA FONCTION ET DE SA DERIVEE * ALP2 = ALP / 2. ; SHAL = 'SINH' ALP ; CHAL = 'COSH' ALP ; SHAL2 = 'SINH' ALP2 ; CHAL2 = 'COSH' ALP2 ; THAL2 = 'TANH' ALP2 ; FF1 = ( ((( DX * SHAL2 ) /ALP2 ) ** 2 ) + DZ2 ) ** 0.5 ; FF2 = P2ES * ((( DX2 / ALP) * ( 1. + ( SHAL / ALP))) + (DZ2 /THAL2)); FON = FF1 - ( FF2 + A ) ; * DF1 =(( DX2 / ( ALP2 ** 3))*(SHAL2 * ( (ALP2 * CHAL2) - SHAL2))) / ( 2. * FF1 ) ; DF2 = (DX2 /(ALP*ALP))*((CHAL - 1.) - ( SHAL / ALP2 )) - ( ( DZ2 / 2.)/(SHAL2 * SHAL2)) ; DFON = DF1 - ( P2ES * DF2) ; * * INCREMENT * DALP = ( -1. * FON ) / DFON ; 'SI' IMP ; 'MESS' ' ALP DALP ' ALP DALP ; 'FINSI' ; ACA = 'ABS' (DALP / ALP ); ALP = ALP + DALP ; * * TESTS DE CONVERGENCE * 'SI' ( ACA < PREC) ; 'QUITTER' LABOU ; 'FINSI'; 'SI' ( IBOU 'EGA' 50) ; 'ERRE' ' NOMBRE MAXIMUM D ITERATIONS ATTEINT' ; 'QUITTER' HAUBAN ; 'FINSI'; 'FIN' LABOU ; 'SI' IMP ; 'MESS' 'ALP ' ALP ; 'FINSI' ; HH =( P * DX ) / ALP ; HH = ABS ( ( P * DX ) / ALP ) ; ALP2 = ALP / 2. ; BET = ( ALP2 * DZ ) / ( ( 'SINH' ALP2 ) * DX ) ; * * CREATION DU MAILLAGE * 'OPTI' 'ELEM' 'SEG2' ; GEO1 = P1 D NN P2 ; * * CALCUL DE LA POSITION REELLE * 'SI' ( IDIM 'EGA' 2 ) ; XX ZZ = 'COOR' GEO1 ; X1 Z1 = 'COOR' P1 ; X2 Z2 = 'COOR' P2 ; SINON; XXX YY ZZ = 'COOR' GEO1 ; XX = ( COSTET * XXX) + ( SINTET * YY ); XX1 Y1 Z1 = 'COOR' P1 ; X1 = ( COSTET * XX1 ) + ( SINTET * Y1 ); XX2 Y2 Z2 = 'COOR' P2 ; X2 = ( COSTET * XX2 ) + ( SINTET * Y2 ); FINSI; CX1 = 'MANU' 'CHPO' GEO1 1 'SCAL' X1; CX2 = 'MANU' 'CHPO' GEO1 1 'SCAL' X2; CZ1 = 'MANU' 'CHPO' GEO1 1 'SCAL' Z1; CDX1= XX - CX1 ; CDZ1= ZZ - CZ1 ; CDX2= XX - CX2 ; FAC = P / ( 2. * HH ) ; CHACOS2= 'COSH' (FAC * CDX2 ) ; CHASIN2= 'SINH' (FAC * CDX2 ) ; CHI2 = (BET * CHACOS2) + ((((BET ** 2) + 1.) ** 0.5) * CHASIN2 ) ; CHACOS1= 'COSH' (FAC * CDX1 ) ; CHASIN1= 'SINH' (FAC * CDX1 ) ; * * LA LIGNE SUIVANTE PLANTE * *CHI1 = ( 1. / FAC ) * ( 'SINH' ( FAC * CDX1 )) ; CHI1 = ( 1. / FAC ) * CHASIN1 ; LIM = 'MOTS' 'SCAL' ; CZ= ( 'PSCAL' CHI1 CHI2 LIM LIM ) - CDZ1 ; 'SI' ( IDIM 'EGA' 2 ) ; 'DEPLA' GEO1 'PLUS' ( 'NOMC' CZ UY ) ; 'SINON'; 'DEPLA' GEO1 'PLUS' ( 'NOMC' CZ UZ ) ; 'FINSI'; 'SI' IMP ; 'SI' ( IDIM 'EGA' 2 ); 'TRAC' GEO1; 'SINON'; 'TRAC' ( 1000 2000 3000 ) GEO1; 'FINSI'; 'MESS' ' NOUVELLE LONGUEUR ' ( 'MESU' GEO1); 'FINSI'; * * CALCUL DE LA TENSION * SHI2 = (BET * CHASIN2) + ((((BET ** 2) + 1.) ** 0.5) * CHACOS2 ) ; ZPRIM = ( 'PSCAL' CHACOS1 CHI2 LIM LIM ) + ( 'PSCAL' CHASIN1 SHI2 LIM LIM ) ; UNI = 'MANU' 'CHPO' GEO1 1 'SCAL' 1. ; TEN = HH * ( ( UNI + ( ZPRIM ** 2 ) ) ** 0.5 ) ; 'SI' IMP ; EV = 'EVOL' TURQ 'CHPO' TEN SCAL GEO1 ; 'DESS' EV ; 'FINSI'; * * CREATION DU MODELE ET CHAMELEM DE TENSION * MOD1 = 'MODEL' GEO1 'MECANIQUE' 'ELASTIQUE' BARR ; CHATEN = 'CHANGER' 'CHAM' ('NOMC' TEN 'EFFX') MOD1 'STRESSES' 'CONTRAINTES' ; 'RESPRO' GEO1 MOD1 CHATEN ; 'FINPROC' ;