* USCALC PROCEDUR MB234859 25/05/05 21:15:10 12260 ************************************************************************ * 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 * * Remarque : pour l'usure bilaterale aucun coefficient n'est ajoute * dans le calcul. L'hypothese d'equireparition de l'energie * dissipee est a prendre en compte sur le coefficient d'usure * * Appelee par USURE * ************************************************************************ 'DEBP' USCALC T1*'TABLE' ; * BOITE_US = T1.'BOITES_USURE' ; IncActu = BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' ; DTps = T1.'WTABLE'.'DT' ; *----------------------------------------------------------------------- * - 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 'SI' BOITE_US.'INFOS'.'ITRID' ; MLFR = MLFR 'ET' MLF2 ; 'FINSI' ; * * 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 ; *----------------------------------------------------------------------- DEPZ = T1.'ESTIMATION'.'DEPLACEMENTS' ; LXZ = WCOF.'MULT_SOLUT' ; WCL = WCOF.'RIGI_UNILA' ; LCF = BOITE_US.'INFOS'.'LFORCE' ; LSCA = 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 .'PRESSION_CONTACT' = 'TABLE' 'ESCLAVE' ; BOITE_US. &BU .'CISAILLEMENT' = 'TABLE' 'ESCLAVE' ; BOITE_US. &BU .'DENS_ENER_DISS' = 'TABLE' 'ESCLAVE' ; BOITE_US. &BU .'DENS_ENER_DISS_CYCLE' = BOITE_US. &BU .'CZERO' ; 'FINSI' ; * * -------------------------------------------------------------------- * Surface associee a chaque element SUR_APPL = BOITE_US. &BU .'SURFACE_APPLICATION' ; XX = 1. '/' 2 ; 'SI' BOITE_US.'INFOS'.'ITRID' ; XX = 1. '/' 4. ; 'FINSI' ; 'FORM' DEPZ ; SurfElt = SurfElt 'ET' CHPZ ; 'FIN' BCL ; 'FORM' CONF0 ; * * -------------------------------------------------------------------- * Reactions normale et tangentielle et glissement EnDisInc = BOITE_US. &BU .'CZERO' ; * * Multiplicateur associee a la condition de frottement * * Reaction tangentielle Cshear = (Rtnor ** 0.5) '/' SurfElt ; * * Glissement eventuel * * Densite d'energie dissipee par frottement EnerDiss = 'ABS' (CShear '*' Vglis) ; EnDisInc = EnDisInc '+' EnerDiss ; * 'FIN' BCL ; * * -------------------------------------------------------------------- * Pression de contact SigmaN = ForceN '/' SurfElt LCF LSCA LCF ; Cpress = PscaSN ** 0.5 ; * * Cisaillement SigmaT = ForceT '/' SurfElt LCF LSCA LCF ; Cshear = PscaST ** 0.5 ; * * -------------------------------------------------------------------- * Trace le long de la zone de contact 'SI' BOITE_US.'INFOS'.'TRACE_DEBUG' ; 'SI' ('NON' BOITE_US.'INFOS'.'ITRID') ; * * * * * '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' ; LstFTang = LstFTang 'ET' FTangRes ; * * -------------------------------------------------------------------- * Stockage des resultats 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 ; * * * -------------------------------------------------------------------- * 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' ; VitUsure = ALPHA '*' EnDisCyc ; 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