$$$$ USTMPS * USTMPS PROCEDUR MB234859 25/05/05 21:15:11 12260 ************************************************************************ * PROCEDURE USTMPS * * Procedure qui determine la liste des instants a calculer pour le * prochain cycle. * Si AJUSTE_PAS = VRAI, les pas de temps sont recalcules/redistribues * Si AJUSTE_PAS = FAUX, les pas de temps sont ceux du cycle precedent * qui ont ete conserves dans BOITE_US.'INFOS'.'INSTANTS_CYCLE'. * * Remarque : pour le schema implicite, le temps courant Tactu ne * change pas tant qu'il n'y a pas eu convergence. * * Entree : * T1 : TABLE transmise a PASAPAS * * Appelee par USURE * ************************************************************************ 'DEBP' USTMPS T1*'TABLE' ; * BOITE_US = T1.'BOITES_USURE' ; NbIncDC = BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE' '/' 2 ; NCycle = BOITE_US.'DONNEES'.'NB_CYCLES' ; * Periode = BOITE_US.'DONNEES'.'PERIODE' ; DemiPer = Periode '/' 2. ; QuartPer = Periode '/' 4. ; * PasCalc = T1.'WTABLE'.'TEMPS_CALCULES' ; *----------------------------------------------------------------------- * - DEFINITION "STANDARD" D'UN CYCLE *----------------------------------------------------------------------- 'SI' ('NEG' T1.'PERSO1_APPEL' 1) ; * 'SI' (BOITE_US.'INFOS'.'SCH_EXPL' 'OU' BOITE_US.'INFOS'.'SCH_CONV'); * Passage au cycle suivant Tactu = T1.'ESTIMATION'.'TEMPS' ; * 'SI' T1.'ARRET' ; * Sauvegarde du dernier instant avant de quitter T1.'WTABLE'.'IPRESU' = 'PROG' Tactu ; T1.'TEMPS_SAUVES' = T1.'TEMPS_SAUVES' 'ET' Tactu ; 'SI' T1.'WTABLE'.'ISAUVEGL' ; T1.'WTABLE'.'ISAUVEGA' = T1.'WTABLE'.'ISAUVEGA' 'ET' Tactu ; 'FINSI' ; 'QUIT' USTMPS ; 'SINON' ; * Construire le chargement de deplacement impose Ltime = BOITE_US.'INFOS'.'TEMPS_DEPI' '+' Tactu ; Evdep = 'EVOL' 'MANU' Ltime BOITE_US.'INFOS'.'COEFF_DEPI' ; Chdep = BOITE_US.'INFOS'.'CHPT_DEPI' ; CHAR1 = 'CHAR' 'DIMP' Evdep Chdep ; T1.'WTABLE'.'CHARGEMENT' = CHAR1 'ET' BOITE_US.'INFOS'.'CHGMTS'; T1.'WTABLE'.'CHARGEMENT_I' = T1.'WTABLE'.'CHARGEMENT' ; 'FINSI' ; * 'SINON' ; * Recalcul du dernier cycle Npas = 'DIME' PasCalc ; Ndec = Npas '-' BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE' ; Tactu = 'EXTR' PasCalc Ndec ; Loub = 'ORDO' ('LECT' Npas 'PAS' -1 (Ndec '+' 1)) 'CROI' ; PasCalc = 'ENLE' PasCalc Loub ; T1.'WTABLE'.'ICHG' = Ndec ; T1.'ESTIMATION'.'TEMPS' = Tactu ; 'FINSI' ; * 'SI' BOITE_US.'INFOS'.'AJUSTE_PAS' ; DltaTMin = 'VALE' 'GRAN' ; LElmtMin = 'VALE' 'GRAN' ; DltaTMin = 'MINI' ('PROG' BOITE_US.'INFOS'.'DELTA_T' DltaTMin) ; 'REPE' BU BOITE_US.'INFOS'.'N_BOITES' ; LElmt = BOITE_US. &BU .'LELT' ; 'SI' ('<' LElmt LElmtMin) ; LElmtMin = LElmt ; 'FINSI' ; 'FIN' BU ; TauxGlPa = DltaTMin '/' BOITE_US.'INFOS'.'DEPLA_IMPOSE' ; TauxElCo = LElmtMin '/' BOITE_US.'INFOS'.'DEPLA_IMPOSE' ; * * NbIncPe points sur la pente soit ]Tactu;T_Pente[ NbIncPe = 'ENTI' 'SUPE' (TauxGlPa '*' NbIncDC) ; T_Pente = DemiPer '*' TauxGlPa ; DT_Pent = T_Pente '/' NbIncPe ; * * NbIncPl points sur le plateau soit [T_pente;DemiPer] * -> -1 pour avoir le bon nombre de pas de temps car on ajoute * QuartPer a la liste. NbIncPl = NbIncDC '-' NbIncPe - 1 ; T_Plate = DemiPer '-' T_Pente ; DT_Plat = T_Plate '/' NbIncPl ; * 'SI' ('