* USCALC PROCEDUR MB234859 24/10/30 21:15:06 12059 ************************************************************************ * PROCEDURE USCALC * * Procedure qui determine, pour chaque surface a user, le cisaillement, * la pression de contact et la densite d'energie dissipee sur le pas de * temps, sur le cycle courant et totale. * Au dernier increment de chaque cycle, elle determine si les pas de * temps doivent etre recalcules a partir du cycle d'usure obtenu. * * Entrees : * T1 : Table de PASAPAS * * Appelee par USURE * ************************************************************************ 'DEBP' USCALC T1*'TABLE' ; * BOITE_US = T1.'BOITES_USURE' ; IncActu = BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' ; DTps = T1.'WTABLE'.'DT' ; *----------------------------------------------------------------------- * - LIEN ENTRE MULT. DE LAGRANGE DE CONTACT ET DE FROTTEMENT *----------------------------------------------------------------------- * * Maillage de contact-frottement * * 'REPE' BCL NBELT ; 'SI' (BOITE_US.'INFOS'.'ITRID') ; 'FINSI' ; MLIEN = MLIEN 'ET' MAIZ ; MCONT = MCONT 'ET' PCONT ; 'FIN' BCL ; * * BOITE_US.'INFOS'.'MULT_CONT' = MCONT ; BOITE_US.'INFOS'.'CONT_FROT' = MLIEN ; ******************************************************* BOITE_US.'INFOS'.'DELTA_T' = 0 ; ******************************************************* 'FINSI'; * MCONT = BOITE_US.'INFOS'.'MULT_CONT' ; MLIEN = BOITE_US.'INFOS'.'CONT_FROT' ; *----------------------------------------------------------------------- * - STATUT DES CONDITIONS UNILATERALES (CONTACT ET FROTTEMENT) *----------------------------------------------------------------------- * Resultats issus de UNPAS WCOF = T1.'WTABLE'.'POST_COFR'; * Mult. de Lagrange associes aux CL unil actives (contact et frottement) * Mult. de Lagrange associes aux CL de contact actives * * Mult. de Lagrange de frottement associes a ceux de contact actifs MLFR = MLFR 'ET' PFROT ; 'FIN' BCL2 ; 'FIN' BCL ; * * Mult. de Lagrange associes aux CL de frottement actives **MLFRA = MLFR 'INTE' CLUA ; * Mult. de Lagrange de frottement inactifs avec mult. de contact actif * MUGL = 'DIFF' MLFR MLFRA ; *----------------------------------------------------------------------- LXZ = WCOF.'MULT_SOLUT' ; LCOMPF = BOITE_US.'INFOS'.'LFORCE' ; LZERO = BOITE_US.'INFOS'.'LVALE0' ; LUN = BOITE_US.'INFOS'.'LVALE1' ; LSCAL = BOITE_US.'INFOS'.'LSCAL' ; * 'REPE' BU BOITE_US.'INFOS'.'N_BOITES' ; * * -------------------------------------------------------------------- * Initialisation au debut de chaque nouveau cycle 'SI' ('EGA' IncActu 1) ; BOITE_US. &BU .'GLISSEMENT' = 'TABLE' 'ESCLAVE' ; BOITE_US. &BU .'CISAILLEMENT' = 'TABLE' 'ESCLAVE' ; BOITE_US. &BU .'DENS_ENER_DISS' = 'TABLE' 'ESCLAVE' ; BOITE_US. &BU .'PRESSION_CONTACT' = 'TABLE' 'ESCLAVE' ; BOITE_US. &BU .'DENS_ENER_DISS_CYCLE' = CHPINI ; 'FINSI' ; * * -------------------------------------------------------------------- * Reactions normale et tangentielle et glissement SUR_APPL = BOITE_US. &BU .'SURFACE_APPLICATION' ; WCL = WCOF.'RIGI_UNILA' ; *- Reaction tangentielle ForceT = ForceT 'ET' Rtang ; *- Reaction normale ForceN = ForceN 'ET' Rnorm ; *- Glissement eventuel NorRtang = PscRtang ** 0.5 ; Dirgliss = Rtang '/' NorRtang LCOMPF LSCAL LCOMPF; * * Certains noeuds apparaissent dans plusieurs conditions de contact/ * frottement, il faut alors moyenner les valeurs de glissement Chpres = Chpres 'ET' CHMZ ; Glismt = Glismt 'ET' Valgliss ; 'FIN' BCL ; * **MTM2 = 'UNIQ' MTMP ; **CNBF = 'MANU' 'CHPO' MTM2 1 'SCAL' 1. 'NATURE' 'DISCRET' ; **'SI'('EGA' (BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL') 1) ; ** BOITE_US. &BU .'PRESSION_NBF' = CNBF ; **'SINON' ; ** BOITE_US. &BU .'PRESSION_NBF' = BOITE_US. &BU .'PRESSION_NBF' + CNBF ; **'FINSI' ; **EVT = evol vert chpo (BOITE_US. &BU .'PRESSION_NBF') sur_appl; **EVY = evol turq chpo CNBF sur_appl; * * Moyenner les valeurs de Glismt Glismt = Glismt '/' Chmoye LCOMPF LCOMPF LCOMPF ; * * Usure bilaterale : equireparition de l'energie dissipee * -> a prendre en compte sur le coefficient d'usure * pas de coefficient ajoute sur les valeurs de glissement * * -------------------------------------------------------------------- * Pression de contact et cisaillement XX = 1. '/' 2 ; 'SI' BOITE_US.'INFOS'.'ITRID' ; XX = 1. '/' 4. ; 'FINSI' ; 'FORM' DEPZ ; SurfElt = SurfElt 'ET' CHPZ ; 'FIN' BCL ; 'FORM' CONF0 ; * * Pression de contact FNsurf = ForceN '/' SurfElt LCOMPF LSCAL LCOMPF ; Cpress = PscFNsur ** 0.5 ; * * Cisaillement FTsurf = ForceT '/' SurfElt LCOMPF LSCAL LCOMPF ; Cshear = PscFTsur ** 0.5 ; * * Glissement NorGlis = PscGlis ** 0.5 ; * * Densite d energie dissipee sur le pas de temps * * -------------------------------------------------------------------- * Trace d evolutions le long de la zone de contact 'SI' BOITE_US.'INFOS'.'TRACE_DEBUG' ; 'SI' ('NON' BOITE_US.'INFOS'.'ITRID') ; * * * * * 'ET' (100. * EvDltEnD)) 'LEGE' 'NCLK' ; * 'FINSI' ; 'FINSI' ; * * -------------------------------------------------------------------- * Cycle d'usure (force_tangentielle en fonction du deplacement) LstDelta = BOITE_US. &BU .'DELTAS' ; Delta_ii = 'EXTR' DEPZ BOITE_US.'INFOS'.'COMP_DEPI' BOITE_US.'INFOS'.'PTSZ_DEPI' ; LstDelta = LstDelta 'ET' Delta_ii ; * LstFTang = BOITE_US. &BU .'FORCES_TANGENTIELLES' ; LCOMPF LCOMPF ; LstFTang = LstFTang 'ET' FTangRes ; * * -------------------------------------------------------------------- * Stockage des resultats BOITE_US. &BU .'GLISSEMENT'. IncActu = 'ABS' NorGlis ; BOITE_US. &BU .'PRESSION_CONTACT'. IncActu = DTps '*' CPress ; BOITE_US. &BU .'CISAILLEMENT'. IncActu = DTps '*' ('ABS' CShear); BOITE_US. &BU .'DENS_ENER_DISS'. IncActu = EnDisInc ; * BOITE_US. &BU .'DELTAS' = LstDelta ; BOITE_US. &BU .'FORCES_TANGENTIELLES' = LstFTang ; BOITE_US. &BU .'PRESSION_MAX_INC' = BOITE_US. &BU .'CISAILLEMENT_MAX_INC' = * * -------------------------------------------------------------------- * Dernier instant du cycle actuel 'SI' ('EGA' IncActu BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE') ; * * Cumul des densites d'energie dissipee par frottement BOITE_US. &BU .'DENS_ENER_DISS_CYCLE' = EnDisCyc ; BOITE_US. &BU .'DENS_ENER_DISS_TOTALE' = BOITE_US. &BU .'DENS_ENER_DISS_TOTALE' + EnDisCyc ; * * Vitesse d'usure sur le cycle (utilise dans USEXPL/USIMPL) ALPHA = BOITE_US. &BU .'COEFFICIENT_USURE' ; BOITE_US. &BU .'VITESSE_USURE' = VitUsure ; CycActu = BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' ; 'Force_Tangentielle' LstFTang ; BOITE_US. &BU .'CYCLE_DE_FRETTING'. CycActu = CyclFret ; * 'SI' BOITE_US.'INFOS'.'TRACE_DEBUG' ; TabDess. 1 = 'TIRC MARQ CROI' ; 'DESS' CyclFret TabDess 'GRIL' 'LEGE' ; 'FINSI' ; * * Faut-il redeterminer les pas de temps DltG_Est = ECycFret / 2. / Ampl_F_N ; DltT_Est = (Ampl_Dlt / 2.) - DltG_Est ; BOITE_US.'INFOS'.'DELTAP' = BOITE_US.'INFOS'.'DELTA_T' ; BOITE_US.'INFOS'.'DELTA_T' = DltT_Est ; * 'SI' (('EGA' &BU 1) 'ET' BOITE_US.'INFOS'.'CALCUL_PAS'); ECycGtot = Ampl_F_N * Ampl_Dlt ; BOITE_US.'INFOS'.'AJUSTE_PAS' = FAUX ; * Uniquement si regime de glissement total 'SI' ((ECycFret / ECycGtot) '>' 0.2) ; BOITE_US.'INFOS'.'AJUSTE_PAS' = VRAI ; 'SI' ('NEG' CycActu 1) ; ******** LDltTPre = BOITE_US. &BU .'DELTA_T' ; ******** DltTPre = 'EXTR' LDltTPre ('DIME' LDltTPre) ; DltTPre = BOITE_US.'INFOS'.'DELTAP' ; VarDltT = 'ABS' ((DltT_Est - DltTPre) / DltTPre) ; BOITE_US.'INFOS'.'AJUSTE_PAS' = (VarDltT '>' 0.1) ; 'FINSI' ; 'MESS' CHAZ ; 'FINSI' ; 'FINSI' ; * * Reinitialisation (le dernier point est aussi premier cycle suivant) 'FINSI' ; * 'FIN' BU ; *----------------------------------------------------------------------- 'FINP' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales