$$$$ @LACRIT * @LACRIT PROCEDUR KK2000 99/11/30 21:15:05 3720 * ************************************************************************ * PROCEDURA @LACRIT ************************************************************************ * * Descrizione : calcola strato per strato ed elemento per elemento * il rateo di rottura relativo ad uno dei criteri * seguenti: * MAXSTRESS Maximum Stress * MAXSTRAIN Maximum Strain * TSAI-WU Tsai-Wu * TSAI-HILL Tsai-Hill * HOFFMANN Hoffmann * * Sintassi : TAB_CRIT = @LACRIT TLAM NZON TAB_SIEP FM MOT_CRIT ; * * * Autore/Data : Miliozzi A. 10/04/1997 * * * Revisioni : Miliozzi A. 31/05/1999 - Calcolo tens/def massima * ************************************************************************ * *--- INPUT *========= * * TLAM Tavola caratteristica * * NZON Numero zona * * TAB_SIEP Tavola delle tensioni e delle deformazioni * * FM Fattore Moltiplicativo delle tensioni o delle * deformazioni * * MOT_CRIT Parola chiave per selezionare il criterio di rottura * *--- OUTPUT *========== * * TAB_CRIT Tavola dei ratei di rottura. * ************************************************************************ * DEBPROC @LACRIT TT1*TABLE NZON*ENTIER TSIEP*TABLE FM*FLOTTANT MCRIT*MOT ; * * - VERIFICA SULLA SELEZIONE DEL CRITERIO NCRIT = 0 ; SI (EGA MCRIT 'MAXSTRESS') ; NCRIT = 1 ; FINSI ; SI (EGA MCRIT 'MAXSTRAIN') ; NCRIT = 2 ; FINSI ; SI (EGA MCRIT 'TSAI-WU' ) ; NCRIT = 3 ; FINSI ; SI (EGA MCRIT 'TSAI-HILL') ; NCRIT = 4 ; FINSI ; SI (EGA MCRIT 'HOFFMANN' ) ; NCRIT = 5 ; FINSI ; SI (NCRIT EGA 0); MESS ' *****************************************************' ; MESS ' *** ERRORE : IL CRITERIO SELEZIONATO NON ESISTE ! ***' ; MESS ' *****************************************************' ; QUITTER @LACRIT ; FINSI ; * * - RECUPERO DIMENSIONI N. PLIES, N. ELEMENTI E N. PT. INTEGRAZIONE * TT2 = TT1 . NZON ; OBJ = TT2 . MOD1 ; TCTIP = TT1.TIPO ; TT1.TIPO = 'MLAY' ; TCAR1 = @LAMAT TT1 NZON ; TT1.TIPO = TCTIP ; * NPLY = (DIME TT2) - 6 ; NEL1 = NBEL TT2.MAIL ; * TLISP = TABLE ; N1 = 1 ; * * ------------------------------------------------ PER OGNI PLY REPETER LOOP1 NPLY ; * * - RECUPERO SPESSORE ED ANGOLO DI ORTOTROPIA DEL SINGOLO PLY TT3= TT2 . N1 ; EP = TT3 . EPA; ID = TT3 . IDM ; * SI (NCRIT EGA 2) ; * * - ESTRAZIONE DELLE DEFORMAZIONI * SI ((EXIST OBJ ELEM COQ6) OU (EXIST OBJ ELEM COQ8)); * EP11 = FM * ( EXCO (TSIEP.EPS1.N1) EPSS SCAL ) ; EP22 = FM * ( EXCO (TSIEP.EPS1.N1) EPTT SCAL ) ; EP12 = FM * ( EXCO (TSIEP.EPS1.N1) GAST SCAL ) ; * SINON ; * ep00 = FM * (tsiep . eps1 . n1) ; MAT00 = tcar1.mat.n1 ; ep00s = calp ep00 mat00 obj 'SUPE' ; ep00m = calp ep00 mat00 obj 'MOYE' ; ep00i = calp ep00 mat00 obj 'INFE' ; * ep11S = exco ep00s epxx scal ; ep11M = exco ep00m epxx scal ; ep11I = exco ep00i epxx scal ; ep22S = exco ep00s epyy scal ; ep22M = exco ep00m epyy scal ; ep22I = exco ep00i epyy scal ; ep12S = exco ep00s rtxy scal ; ep12M = exco ep00m rtxy scal ; ep12I = exco ep00i rtxy scal ; De11 = ABS (ep11S - ep11I) ; De22 = ABS (ep22S - ep22I) ; De12 = ABS (ep12S - ep12I) ; masks = ep11m masq 'EGSUPE' 0. ; maski = ep11m masq 'INFERIEUR' 0. ; signx = masks - maski ; ep11 = ep11M + (signx * De11 / 2.) ; masks = ep22m masq 'EGSUPE' 0. ; maski = ep22m masq 'INFERIEUR' 0. ; signx = masks - maski ; ep22 = ep22M + (signx * De22 / 2.) ; masks = ep12m masq 'EGSUPE' 0. ; maski = ep12m masq 'INFERIEUR' 0. ; signx = masks - maski ; ep12 = ep12M + (signx * De12 / 2.) ; * FINSI ; * SINON ; * ---------------------------------------------------------- * Estrazione delle tensioni per COQ6 e COQ8 * ---------------------------------------------------------- * SI ((EXIST OBJ ELEM COQ6) OU (EXIST OBJ ELEM COQ8)); * * - ESTRAZIONE DELLE TENSIONI DI CAUCHY * RIPORTATE AI NODI SI11 = FM * ( EXCO (TSIEP.SIG1.N1) SMSS SCAL ) ; SI22 = FM * ( EXCO (TSIEP.SIG1.N1) SMTT SCAL ) ; SI12 = FM * ( EXCO (TSIEP.SIG1.N1) SMST SCAL ) ; * *------------------------------------------------------------ SINON ; * * - ESTRAZIONE DELLE TENSIONI GENERALIZZATE E * CONVERSIONE IN TENSIONI DI CAUCHY * si00 = FM * (tsiep . sig1 . n1) ; MAT00 = tcar1.mat.n1 ; si00s = calp si00 mat00 obj 'SUPE' ; si00m = calp si00 mat00 obj 'MOYE' ; si00i = calp si00 mat00 obj 'INFE' ; * SI11S = exco si00s smxx scal ; SI11M = exco si00m smxx scal ; SI11I = exco si00i smxx scal ; SI22S = exco si00s smyy scal ; SI22M = exco si00m smyy scal ; SI22I = exco si00i smyy scal ; SI12S = exco si00s smxy scal ; SI12M = exco si00m smxy scal ; SI12I = exco si00i smxy scal ; DS11 = ABS (SI11S - SI11I) ; DS22 = ABS (SI22S - SI22I) ; DS12 = ABS (SI12S - SI12I) ; masks = si11m masq 'EGSUPE' 0. ; maski = si11m masq 'INFERIEUR' 0. ; signx = masks - maski ; SI11 = SI11M + (signx * DS11 / 2.) ; masks = si22m masq 'EGSUPE' 0. ; maski = si22m masq 'INFERIEUR' 0. ; signx = masks - maski ; SI22 = SI22M + (signx * DS22 / 2.) ; masks = si12m masq 'EGSUPE' 0. ; maski = si12m masq 'INFERIEUR' 0. ; signx = masks - maski ; SI12 = SI12M + (signx * DS12 / 2.) ; * FINSI; * FINSI ; * *------------------------------------------------------------- * -APPLICAZIONE DEL CRITERIO DI RESISTENZA SELEZIONATO *------------------------------------------------------------- * TT4= TT1 . MCOL . ID ; XT = TT4 . XTR ; XC = TT4 . XCO ; YT = TT4 . YTR ; YC = TT4 . YCO ; SS = TT4 . SSS ; * ****************** * MAXIMUM STRESS * ****************** SI (NCRIT EGA 1) ; * MASK_TR = MASQUE SI11 'EGSUPE' 0. ; MASK_CO = MASQUE SI11 'INFERIEUR' 0. ; XX = ( MASK_TR * (1. / XT) ) - ( MASK_CO * (1. / XC) ) ; DETR MASK_TR ; DETR MASK_CO ; MASK_TR = MASQUE SI22 'EGSUPE' 0. ; MASK_CO = MASQUE SI22 'INFERIEUR' 0. ; YY = ( MASK_TR * (1. / YT) ) - ( MASK_CO * (1. / YC) ) ; DETR MASK_TR ; DETR MASK_CO ; * RX = SI11 * XX ; RY = SI22 * YY ; RS = (ABS SI12) / SS ; * MASK1 = MASQUE RX 'EGSUPE' RY ; MASK2 = MASQUE RX 'INFERIEUR' RY ; RG1 = ( MASK1 * RX ) + ( MASK2 * RY ) ; DETR MASK1 ; DETR MASK2 ; MASK1 = MASQUE RG1 'EGSUPE' RS ; MASK2 = MASQUE RG1 'INFERIEUR' RS ; RG = ( MASK1 * RG1 ) + ( MASK2 * RS ) ; DETR MASK1 ; DETR MASK2 ; DETR RG1 ; * FINSI ; * ****************** * MAXIMUM STRAIN * ****************** SI (NCRIT EGA 2) ; * MASK_TR = MASQUE EP11 'EGSUPE' 0. ; MASK_CO = MASQUE EP11 'INFERIEUR' 0. ; XX1= ( MASK_TR * (1. / XT) ) - ( MASK_CO * (1. / XC) ) ; XX = XX1 * (TT4 . YG1) ; DETR MASK_TR ; DETR MASK_CO ; DETR XX1 ; MASK_TR = MASQUE EP22 'EGSUPE' 0. ; MASK_CO = MASQUE EP22 'INFERIEUR' 0. ; YY1= ( MASK_TR * (1. / YT) ) - ( MASK_CO * (1. / YC) ) ; YY = YY1 * (TT4 . YG2) ; DETR MASK_TR ; DETR MASK_CO ; DETR YY1 ; SS = (TT4 . G12) / (TT4 . SSS) ; * RX = EP11 * XX ; RY = EP22 * YY ; RS = (ABS EP12) * SS ; * MASK1 = MASQUE RX 'EGSUPE' RY ; MASK2 = MASQUE RX 'INFERIEUR' RY ; RG1 = ( MASK1 * RX ) + ( MASK2 * RY ) ; DETR MASK1 ; DETR MASK2 ; MASK1 = MASQUE RG1 'EGSUPE' RS ; MASK2 = MASQUE RG1 'INFERIEUR' RS ; RG = ( MASK1 * RG1 ) + ( MASK2 * RS ) ; DETR MASK1 ; DETR MASK2 ; DETR RG1 ; * FINSI ; * ****************** * TSAI-WU STRESS * ****************** SI (NCRIT EGA 3) ; * A = (SI11 / XT) - (SI11 / XC) ; B = (SI22 / YT) - (SI22 / YC) ; AA= (SI11 ** 2) / (XT*XC) ; BB= (SI22 ** 2) / (YT*YC) ; E = (SI12 ** 2) / (SS**2) ; G = (SI11 * SI22) / ( (XT*XC*YT*YC) ** .5 ) ; RG = A + B + AA + BB + E - G ; RG = RG ** 0.5 ; DETR A ; DETR B ; DETR AA ; DETR BB ; DETR E ; DETR G ; * FINSI ; * ************* * TSAI-HILL * ************* SI (NCRIT EGA 4) ; * MASK_TR = MASQUE SI11 'EGSUPE' 0. ; MASK_CO = MASQUE SI11 'INFERIEUR' 0. ; XX = ( MASK_TR * (1. / XT) ) + ( MASK_CO * (1. / XC) ) ; DETR MASK_TR ; DETR MASK_CO ; MASK_TR = MASQUE SI22 'EGSUPE' 0. ; MASK_CO = MASQUE SI22 'INFERIEUR' 0. ; YY = ( MASK_TR * (1. / YT) ) + ( MASK_CO * (1. / YC) ) ; DETR MASK_TR ; DETR MASK_CO ; * A = (SI11 * XX) ** 2 ; B = (SI22 * YY) ** 2 ; G = (SI12 / SS) ** 2 ; H = SI11 * SI22 * (XX ** 2) ; RG = A + B + G - H ; RG = RG ** 0.5 ; DETR A ; DETR B ; DETR G ; DETR H ; * FINSI ; * ************ * HOFFMANN * ************ SI (NCRIT EGA 5) ; * A = (SI11 / XT) - (SI11 / XC) ; B = (SI22 / YT) - (SI22 / YC) ; AA= (SI11 ** 2) / (XT*XC) ; BB= (SI22 ** 2) / (YT*YC) ; E = (SI12 ** 2) / (SS**2) ; G = (SI11 * SI22) / (XT*XC) ; RG= A + B + AA + BB + E - G ; RG = RG ** 0.5 ; DETR A ; DETR B ; DETR AA ; DETR BB ; DETR E ; DETR G ; * FINSI ; * TLISP.N1 = RG ; N1 = N1 + 1 ; * FIN LOOP1 ; ************************************************************************ * FINE PROCEDURA @LACRIT ************************************************************************ FINPROC TLISP ;