* USINIB PROCEDUR MB234859 24/10/30 21:15:07 12059 *********************************************************************** * PROCEDURE USINIB * * Procedure appelee en debut de calcul et qui verifie certaines des * informations transmises. * La table INFOS est creee et renseignee. Elle contient les informations * communes aux zones d'usure. * La table POST contiendra les resultats de calcul a conserver. * * Entrees : * T1 : Table de PASAPAS * * Appelee par USURE * *********************************************************************** 'DEBP' USINIB T1*'TABLE' ; * * Indicateur a mettre a VRAI pour quitter PASAPAS T1.'ARRET' = FAUX ; BOITE_US = T1.'BOITES_USURE' ; *----------------------------------------------------------------------- * - VERIFICATIONS ET REMPLISSAGE DE 'INFOS' *----------------------------------------------------------------------- * Nombre de surface a user NBBOX = 0 ; INDZ = IBUSUR. &BI ; OBJZ = BOITE_US. INDZ ; NBBOX = NBBOX '+' 1; 'FINSI' ; 'FINSI' ; 'FIN' BI ; 'SI' ('EGA' NBBOX 0) ; 'MESS' 'Aucune zone usee n est definie' ; 'FINSI' ; BOITE_US.'INFOS' = 'TABLE' ; BOITE_US.'INFOS'.'N_BOITES' = NBBOX ; * -------------------------------------------------------------------- * Compteur cycle, increment par cycle NbIncCy = 'ENTI' BOITE_US.'DONNEES'.'INCREMENTS_CYCLE' ; Periode = BOITE_US.'DONNEES'.'PERIODE' ; NCyctot = BOITE_US.'DONNEES'.'NB_CYCLES' ; BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' = 1 ; BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE' = NbIncCy ; BOITE_US.'INFOS'.'NB_CYCLES_RESTANTS' = NCyctot ; * -------------------------------------------------------------------- * Dimension, trace BOITE_US.'INFOS'.'UNSURT' = 1. '/' Periode ; BOITE_US.'INFOS'.'TRACE_DEBUG' = FAUX ; * -------------------------------------------------------------------- * Noms de composantes et listes de valeurs (pour USCALC) BOITE_US.'INFOS'.'LFORCE' = LCOMPF ; * -------------------------------------------------------------------- * Informations sur le chargement en deplacement impose * --- Instant de debut du chargement * -> il s'agit du point precedent la premiere valeur non nulle BOITE_US.'INFOS'.'T_DEBUT_DEPI' = TDEDEP ; * --- Valeur du deplacement impose BOITE_US.'INFOS'.'DEPLA_IMPOSE' = ORDMAX '*' FLXVAL ; * --- Composante concernee * -------------------------------------------------------------------- * Le facteur de saut de cycle doit etre strictement positif xACCE = 1. ; 'SI' ('>EG' BOITE_US.'DONNEES'.'ACCELERATION' 0.) ; xACCE = BOITE_US.'DONNEES'.'ACCELERATION' ; 'FINSI' ; 'FINSI' ; BOITE_US.'INFOS'.'ACCELERATION' = xACCE ; * -------------------------------------------------------------------- * Nb de cycles avant estimation du facteur de saut de cycle variable nCycini = 10 ; nCyctmp = 'ENTI' BOITE_US.'DONNEES'.'DN_CYCLES_INIT' ; 'SI' ('>' nCyctmp 1) ; nCycini = nCyctmp ; 'FINSI' ; 'FINSI' ; BOITE_US.'INFOS'.'DN_CYCLES_INIT' = nCycini ; * -------------------------------------------------------------------- * Faut-il construire la liste des pas de temps au cours du calcul Tdebus = BOITE_US.'DONNEES'.'T_DEBUT_USURE' ; Tfinal = (NCyctot '*' Periode '/' xACCE) '+' Tdebus ; BOITE_US.'INFOS'.'CALCUL_PAS' = 'EGA' iTfin 0 ; * * Verifications et infos necessaires au recalcul des pas de temps 'SI' BOITE_US.'INFOS'.'CALCUL_PAS' ; * * Verification qu'il y a un nombre pair d'increments a calculer 'MESS' 'INCREMENTS_CYCLE doit etre un nombre pair' ; 'FINSI' ; * * Coherence entre T_DEBUT_USURE et T_DEBUT_DEPI Tdebdep = BOITE_US.'INFOS'.'T_DEBUT_DEPI' ; Woffset = Tdebus '-' Tdebdep ; 'SI' ('<' Woffset 0.) ; 'FINSI' ; * * T_DEBUT_USURE multiple de PERIODE 'FINSI' ; BOITE_US.'INFOS'.'PRE_USURE' = 'ENTI' (Woffset '/' Periode) ; * * Informations pour construire le CHAR DIMP en cours de calcul * -> evol temporelle du deplacement entre 0 et T BOITE_US.'INFOS'.'CHPT_DEPI' = CHDEPI ; 'FINSI' ; * -------------------------------------------------------------------- * Effectuer des sauvegardes intermediaires BOITE_US.'INFOS'.'SAUV_CYCLE' = FAUX ; BOITE_US.'INFOS'.'SAUV_CYCLE' = BOITE_US.'DONNEES'.'SAUV_AUTO' ; * * Si sauvegarde, utiliser l'option ECONOMIQUE de PASAPAS 'SI' BOITE_US.'INFOS'.'SAUV_CYCLE' ; T1.'WTABLE'.'LECONOMI' = VRAI ; 'FINSI' ; 'FINSI' ; * -------------------------------------------------------------------- * Indices et temps des cycles BOITE_US.'POST' = 'TABLE' ; BOITE_US.'POST'.'INDICES_CYCLE' = 'TABLE' ; BOITE_US.'POST'.'FACTEUR_ACCELERATION' = 'TABLE' 'ESCLAVE' ; * -------------------------------------------------------------------- * Schema de resolution pour le profil d'usure BOITE_US.'INFOS'.'SCH_EXPL' = VRAI ; BOITE_US.'INFOS'.'SCH_CONV' = FAUX ; 'SI' ('EGA' ITYPSCH 2) ; BOITE_US.'INFOS'.'SCH_EXPL' = FAUX ; BOITE_US.'INFOS'.'ITERATION_NEWTON' = 1; BOITE_US.'INFOS'.'CRITERE_CONV' = 0.; BOITE_US.'INFOS'.'RELAX_COMPTEUR' = 1; BOITE_US.'INFOS'.'RELAX_EXPOSANT' = 0; BOITE_US.'POST' .'NITER_CONV_NEWTON' = 'TABLE' 'ESCLAVE' ; 'SINON' ; 'SI' ('EGA' ITYPSCH 0) ; 'FINSI' ; 'FINSI' ; 'FINSI' ; *----------------------------------------------------------------------- * - INFORMATIONS PROPRES A CHAQUE SURFACE D'USURE *----------------------------------------------------------------------- 'REPE' BU BOITE_US.'INFOS'.'N_BOITES' ; * SUR_APPL = BOITE_US. &BU .'SURFACE_APPLICATION' ; BOITE_US. &BU .'CZERO' = CZERO; * -------------------------------------------------------------------- * Indices renseignes dans USCALC BOITE_US. &BU .'CYCLE_DE_FRETTING' = 'TABLE' ; * -------------------------------------------------------------------- * Indices renseignes dans USPOST BOITE_US. &BU .'PRESSION_MOYENNE_CYCLE' = 'TABLE' ; BOITE_US. &BU .'CISAILLEMENT_MOYEN_CYCLE' = 'TABLE' ; BOITE_US. &BU .'GLISSEMENT_CYCLE' = 'TABLE' ; * * Modele utilise pour les calculs avec INTG * -------------------------------------------------------------------- * Informations utilisees dans USDEPL 'SI' BOITE_US.'INFOS'.'ITRID' ; MESHZ = TATMP. 1 ; 'SINON' ; 'FINSI' ; BOITE_US. &BU .'MAIL_PSIP' = MESHZ ; * * Direction suivant laquelle appliquer l'usure LCOMPF = BOITE_US.'INFOS'.'LFORCE' ; NORVINT = NORVINT '**' 0.5 ; CHVNINT = CHVNINT '/' NORVINT ; BOITE_US. &BU .'VNORM_INTE' = CHVNINT ; * * Direction(s) tangentielle(s) pour le cycle d'usure * VTANGENT n'est pas utilise mais on le conserve pour le moment 'SI' BOITE_US.'INFOS'.'ITRID' ; 'SI' (('<EG' NORMAXI 1.E-6) 'OU' ('<EG' NORMINI 1.E-6)) ; 'FINSI' ; NORVTG1 = NORVTG1 '**' 0.5 ; CHVTGT1 = CHVTGT1 '/' NORVTG1 ; NORVTG2 = NORVTG2 '**' 0.5 ; CHVTGT2 = CHVTGT2 '/' NORVTG2 ; BOITE_US. &BU .'VTANGEN1' = CHVTGT1 ; BOITE_US. &BU .'VTANGEN2' = CHVTGT2 ; 'SINON' ; BOITE_US. &BU .'VTANGENT' = CHTANGT ; 'FINSI' ; * * Direction pour calculer la reaction tangentielle LCOMPU = BOITE_US.'INFOS'.'LDEPLA' ; BOITE_US. &BU .'DIRE_REACTION' = CHREACT ; * -------------------------------------------------------------------- * Indices renseignes dans USEXPL ou USIMPL BOITE_US. &BU .'EVO_USURE_TOT' = 'TABLE' ; BOITE_US. &BU .'USURE_TOT' = 'TABLE'; BOITE_US. &BU .'USURE_TOT'. 0 = CZERO ; BOITE_US. &BU .'INC_USURE' = 'TABLE'; BOITE_US. &BU .'INC_USURE'. 0 = CZERO ; 'SI' ('NON' BOITE_US.'INFOS'.'SCH_EXPL') ; BOITE_US. &BU .'VIT_USURE_K' = 'TABLE'; BOITE_US. &BU .'INC_USURE_K' = 'TABLE'; BOITE_US. &BU .'USURE_TOT_K' = 'TABLE'; BOITE_US. &BU .'USURE_TOT_K'. 1 = CZERO ; 'FINSI' ; 'FIN' BU ; *----------------------------------------------------------------------- * Elargissement de la zone usee souhaitee en saut de cycle variable 'SI' ('>EG' BOITE_US.'DONNEES'.'DELTA_L0' 0) ; dltal0 = BOITE_US.'DONNEES'.'DELTA_L0' ; 'FINSI' ; 'FINSI' ; BOITE_US.'INFOS'.'DELTA_L0' = dltal0 ; * -------------------------------------------------------------------- 'FINP' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales