$$$$ PHASAGE * PHASAGE PROCEDUR PASCAL 22/04/13 21:15:04 11339 ************************************************************************ * Procedure de calcul du phasage de mise en tension des cables ************************************************************************ DEBPROC PHASAGE TABPHAS ; MESS 'ENTREE dans phasage' ; *------------------------------------------------------------------ * LDEPOU=FAUX; 'SI' ( 'EXISTE' TABPHAS 'DEPOU') ; LDEPOU=TABPHAS . 'DEPOU' ; 'FINSI' ; 'SI' LDEPOU;TABPHAS . 'COURBES' = TABLE ; 'FINSI' ; LPRECO=VRAI ; SI (NON ( EXISTE TABPHAS 'PRECONTRAINTE' )) ; MESS 'TABLE DES ETAPES DE MISE EN PRECONTRAINTE ABSENTE' ; LPRECO=FAUX ; SINON ; SI (NEG (TYPE (TABPHAS . 'PRECONTRAINTE')) 'TABLE ') ; MESS 'INDICE ETAPE DOIT ETRE UNE TABLE' ; QUITTER PHASAGE ; FINSI ; FINSI ; SI (NON ( EXISTE TABPHAS 'LEVEES' )) ; MESS 'TABLE DES LEVEES ABSENTE' ; QUITTER PHASAGE ; FINSI ; SI (NEG (TYPE (TABPHAS . 'LEVEES')) 'TABLE ') ; MESS 'INDICE LEVEES DOIT ETRE UNE TABLE' ; QUITTER PHASAGE ; FINSI ; SI (NON ( EXISTE TABPHAS 'BLOCAGES' ) ) ; MESS 'BLOCAGES MECANIQUES ABSENTS' ; QUITTER PHASAGE ; SINON ; CLTOT=TABPHAS . 'BLOCAGES' ; FINSI ; NSOUSL=1 ; SI (EXISTE TABPHAS 'SOUS_LEVEES') ; NSOUSL= TABPHAS.'SOUS_LEVEES' ; FINSI ; NSOUSL = MAXI ( LECT 1 NSOUSL) ; NSOUSP=1 ; SI (EXISTE TABPHAS 'SOUS_PRECONTRAINTES') ; NSOUSP= TABPHAS.'SOUS_PRECONTRAINTES' ; FINSI ; NSOUSP = MAXI ( LECT 1 NSOUSP) ; LFLUAGE=FAUX ; SI ( EXISTE TABPHAS 'FLUAGE') ;LFLUAGE=VRAI ; FINSI ; LRETRAIT=FAUX ; SI ( EXISTE TABPHAS 'RETRAIT'); LRETRAIT=VRAI ; FINSI ; LRESTE=FAUX ; SI ( EXISTE TABPHAS 'MOD_RESTE'); LRESTE=VRAI ; SI (NON ( EXISTE TABPHAS 'MAT_RESTE' )) ; MESS 'MATERIAU DU RESTE NON INDIQUE' ; QUITTER PHASAGE ; FINSI ; FINSI ; TLEVEE = TABPHAS . 'LEVEES' ; NPRECO=0 ; SI LPRECO;TETAP=TABPHAS.'PRECONTRAINTE';NPRECO=DIME TETAP;FINSI ; NBLEVE= DIME TLEVEE ; 'SI'('EXIS' TABPHAS 'TEMPS_FINAL') ; TEMPSFI = TABPHAS.'TEMPS_FINAL' ; TEMPSGRA= TEMPSFI*100. ; 'SINON' ; 'MESS' 'IL MANQUE LE TEMPS FINAL'; QUITTER PHASAGE ; 'FINSI' ; 'SI'('EXIS' TABPHAS 'TEMPS_MAX');TEMPSGRA=TABPHAS.'TEMPS_MAX' ; 'FINSI' ; * preparation du stockage de résultats de fluage et retrait SI LFLUAGE ; EPFLUAGE=TABLE ; TABPHAS . 'DFLUAGE' = EPFLUAGE ; NOMREGF= TABPHAS . 'FLUAGE' ; TFLUTE=TABLE; TFLUEP=TABLE ; COMTFLU=0 ; TABPHAS . 'TFLUTE' = TFLUTE; TABPHAS . 'TFLUEP' = TFLUEP; FINSI ; SI LRETRAIT ; EPRETRAI=TABLE ; TABPHAS . 'DRETRAIT' = EPRETRAI ; NOMREGR = TABPHAS . 'RETRAIT' ; TRETTE=TABLE; TRETEP=TABLE ; TABPHAS . 'TRETTE' = TRETTE; TABPHAS . 'TRETEP' = TRETEP; FINSI ; * * calcul des differents chargement correspondant à chacune * des levées. on les stocke dans la table poilevee * MOTOUT sera le modele total sans les cables id MATOUT * GEOBET sera le maillage du beton POILEVEE=TABLE ; 'REPETER' FOR NBLEVE ; MO= TLEVEE . &FOR . 'MODELE' ; MA= TLEVEE . &FOR . 'MATERIAU' ; GEO= 'EXTR' MO 'MAILLAGE' ; 'SI' (( 'EGA' &FOR NBLEVE) 'ET' LRESTE) ; MO = MO 'ET' TABPHAS. 'MOD_RESTE' ; MA = MA 'ET' TABPHAS. 'MAT_RESTE' ; 'FINSI' ; MAS= 'MASSE' MO MA ; 'SI' ('EGA' &FOR 1) ; GEOBET=GEO ; MOTOUT = MO ; MATOUT = MA ; 'SINON' ; GEOBET = GEOBET 'ET' GEO ; MOTOUT = MOTOUT 'ET' MO ; MATOUT = MATOUT 'ET' MA ; 'FINSI' ; GG = 'MANU' 'CHPO' GEO 1 'UZ' -9.81 ; FPO= MAS * GG ; POILEVEE . &FOR = FPO ; FIN FOR ; * * calcul de la premiere levée * On introduit le poids propre de la levee 1 et c'est tout. * seule la premiere levée a une resistance, les autres sont divisées * par 1000 * pendant les levees on ne prend pas en compte le poids du reste MATCAL= TLEVEE . 1 . 'MATERIAU' ; CLCAL = CLTOT ; 'SI' ( NBLEVE > 1) ; * on fabrique un materiau bidon 'REPETER' ADDIMO ( NBLEVE - 1 ) ; MA = TLEVEE . ( &ADDIMO + 1 ) . 'MATERIAU' ; YOU = (EXCO MA 'YOUN') * -0.9999 ; MOMA= MA + YOU ; MATCAL= MATCAL et MOMA ; 'FIN' ADDIMO ; 'FINSI' ; 'SI' LRESTE;MATCAL= MATCAL 'ET' TABPHAS . 'MAT_RESTE'; 'FINSI' ; * on accroche aussi les cables en leur donnant un module nul SI ( NPRECO > 0) ;IDETAP=0 ; REPETER BOETAP NPRECO ; IDETAP = IDETAP + 1 ; NDZONE = (DIME (TETAP . IDETAP) - 1) ; IDZON = 0 ; REPETER BOZONE NDZONE ; IDZON = IDZON + 1 ; MOBID = TETAP . IDETAP . IDZON . 'MODELE' ; mabid = TETAP . IDETAP . IDZON . 'MATERIAU' ; listcomp= 'EXTR' mabid 'COMP' ; COEFBID = 1.e-3 ; sectbid='EXCO' 'SECT' TETAP . IDETAP . IDZON . 'MATERIAU' ; sectbid= sectbid*COEFBID ; YOUNBID='EXCO' 'YOUN' TETAP . IDETAP . IDZON . 'MATERIAU' ; YOUNBID = COEFBID * YOUNBID ; 'SI' ( 'EXIS' listcomp 'TRACTION ') ; TRACBIO = COEFBID * (EXTR (TETAP . IDETAP . IDZON . 'TRACTION') 'ORDO') ; TRACBID = EVOL MANU 'EPS' (EXTR (TETAP . IDETAP . IDZON . 'TRACTION') 'ABSC') 'SIG (PA)' TRACBIO ; MATBID = MATE MOBID 'YOUN' YOUNBID 'NU' 0.3 'SECT' sectbid RHO 0.0000001 'TRAC' TRACBID ; 'SINON' ; MATBID = MATE MOBID 'YOUN' YOUNBID 'NU' 0.3 'SECT' sectbid RHO 0.0000001 ; 'FINSI' ; 'SI' (( IDZON + IDETAP) EGA 2) ; MODCABL=MOBID ; MATCABL=MATBID ; CLCABL= RELA 'ACCRO' (EXTR MOBID 'MAILLAGE') GEOBET ; 'SINON' ; MODCABL = MODCABL ET MOBID ; MATCABL = MATCABL ET MATBID ; CLTOT1 = RELA 'ACCRO' (EXTR MOBID 'MAILLAGE') GEOBET ; CLCABL = CLCABL ET CLTOT1 ; 'FINSI' ; FIN BOZONE ; FIN BOETAP ; MODCAL = MOTOUT ET MODCABL ; MATCAL = MATCAL ET MATCABL ; CLCAL= CLCABL ET CLTOT ; SINON ; MODCAL= MOTOUT ; CLCAL=CLTOT ; FINSI ; * determination d'un temps de calcul DTEMPS=0. ; SI ( nbleve > 1) ; dtemps = tlevee . 2 . 'INSTANT' * 0.001 ; SINON; SI (NPRECO > 0);DTEMPS= (TETAP . 1 . 'TPS') * 0.001; FINSI; FINSI ; 'SI' ('EGA' DTEMPS 0.) ; 'MESS' ' PROBLEME DE PAS DE TEMPS' ; 'QUITTER' PHASAGE ; 'FINSI' ; LTE = prog 0. DTEMPS TEMPSGRA ; LCOE= PROG 0. 1. 1. ; EVCH= EVOL MANU 'TEMPS' LTE 'COEF' LCOE ; FPO= poilevee.1 ; CHAPOI = CHARGE 'MECA' FPO EVCH ; * appel a pasapas pour calculer la premiere levee ; TABRES= TABLE ; TABPHAS.'TABRES' = TABRES ; TABRES . 'MODELE' = MODCAL ; TABRES . 'CARACTERISTIQUES' = MATCAL ; LISTTEMP = prog 0. dtemps ; TABRES . 'TEMPS_CALCULES'=LISTTEMP ; TABRES . 'BLOCAGES_MECANIQUES' = CLCAL ; TABRES . 'CHARGEMENT' = CHAPOI ; 'SI' ('EXIS' TABPHAS 'RIGIDITE_ADDITIONELLE' ) ; 'MESS' 'PRISE EN COMPTE DE RIGIDITE_ADDITIONELLE' ; TABRES . 'RIGIDITE_CONSTANTE' = TABPHAS . 'RIGIDITE_ADDITIONELLE' ; 'FINSI' ; PASAPAS TABRES ; TDER= DTEMPS ; NUMLEV = 1 ; *messs ' fin premier appel a pasaspas'; * * calcul du retrait pour tous les temps des levees * 'SI' LRETRAIT ; DEFONUL= 'ZERO' MODCAL 'DEFORMAT' ; TRETTE . 0 = 0.; TRETEP . 0 = DEFONUL ; COMRETR=0 ; 'SI' (NBLEVE > 1) ; REPETER BOURET ( NBLEVE - 1) ; NUMLEV=&BOURET + 1 ; TEMPCOUR= TLEVEE . NUMLEV . 'INSTANT' ; REPETER SOUSLEV ( NUMLEV - 1) ; MODBET=TLEVEE . &SOUSLEV . 'MODELE' ; RAYSECH=TLEVEE . &SOUSLEV . 'SECHAGE' ; TCOFFR= TLEVEE . &SOUSLEV . 'INSTANT' ; COEF1 = TLEVEE . &SOUSLEV . 'COEF1' ; COEF2 = TLEVEE . &SOUSLEV . 'COEF2' ; RET=RETRAIT NOMREGR MODBET RAYSECH TCOFFR TEMPCOUR COEF1 COEF2 ; 'SI' ( 'EGA' 1 &SOUSLEV) ; EPRETRAI. (&BOURET + 1)= RET +DEFONUL ; 'SINON' ; EPRETRAI. (&BOURET + 1)= EPRETRAI. (&BOURET + 1)+RET ; 'FINSI' ; 'FIN' SOUSLEV ; 'FIN' BOURET ; 'FINSI' ; 'FINSI' ; *messs ' fin travail sur le retrait ' ; * * calcul mecanique des autres levees * on calcule le temps précedent la levée à dtemps prés puis le * temps de la levée * Pour le premier des deux temps seul le fluage retrait est à * introduire si besoin est . Le materiau de la levee est remis * normalement pour le second temps et il faut aussi ajouter le poids * de la levée. TCONT= TABRES. 'CONTRAINTES' ; TTEMP= TABRES . 'TEMPS' ; FLUAG1=ZERO MODCAL 'DEFORMAT' ; 'SI' LFLUAGE; TFLUTE . 0 = 0. ; TFLUEP . 0 = FLUAG1 ; COMTFLU = 0 ; 'FINSI'; 'SI' ( NBLEVE > 1) ; 'REPETER' COULEE ( NBLEVE - 1) ; NUMLEV=&COULEE + 1 ; * temps des calcul TCAL= TLEVEE . NUMLEV . 'INSTANT' - dtemps ; * mess ' travail sur la coulée numero ' numlev 'tcal ' tcal; CHACAL= CHAPOI ; * definition du chargement * recuperation du retrait 'SI' LRETRAIT ; COMRETR=COMRETR + 1 ; TRETTE . COMRETR = TCAL * 1. ; TRETEP . COMRETR = EPRETRAI . NUMLEV ; COMRETR=COMRETR + 1 ; TRETTE . COMRETR = TLEVEE . NUMLEV . 'INSTANT' * 1. ; TRETEP . COMRETR = EPRETRAI . NUMLEV ; CHARRET = CHAR 'DEFI' TRETTE TRETEP ; CHACAL = CHACAL ET CHARRET ; 'FINSI' ; * calcul du fluage 'SI' LFLUAGE ; FLUAG1=ZERO MODCAL 'DEFORMAT' ; COMTFLU = COMTFLU + 1 ; TFLUTE . COMTFLU = TCAL * 1. ; 'REPETER' BOUFLU (NUMLEV - 1) ; MOLE= TLEVEE . &BOUFLU . 'MODELE' ; TCOUL=TLEVEE . &BOUFLU . 'INSTANT' ; MALE= TLEVEE . &BOUFLU . 'MATERIAU' ; RAYSECH= TLEVEE . &BOUFLU . 'SECHAGE' ; COEF1 = TLEVEE . &BOUFLU . 'COEF1' ; COEF2 = TLEVEE . &BOUFLU . 'COEF2' ; NF= NUMLEV - &BOUFLU; NDE=(&BOUFLU - 1)*(1+NSOUSL) + 1 ; * mess ' on travaille sur levee ' &BOUFLU ' nf ' nf ' nde ' nde; 'REPETER' BOPAS NF ; NSI = ( &BOPAS - 1 ) * (1+NSOUSL) + NDE ; SIG1 =TCONT . NSI ; SIG0 =TCONT . (NSI - 1) ; DSIG= REDU ( SIG1 - SIG0) MOLE ; TCOUR = TTEMP . NSI ; *aa=maxi (abs dsig); mess ' maxi des cont ' aa ' nsi ' nsi ; FLUAG1 = FLUAG1 + ( PFLUAGE NOMREGF MOLE MALE DSIG RAYSECH TCOUR TCAL COEF2 TCOUL COEF1 ) ; 'FIN' BOPAS ; 'FIN' BOUFLU ; TFLUEP . COMTFLU = FLUAG1 ; COMTFLU = COMTFLU + 1 ; TFLUTE . COMTFLU = TLEVEE . NUMLEV . 'INSTANT' * 1.0 ; TFLUEP . COMTFLU = FLUAG1 ; CHARFLU = CHAR 'DEFINI' TFLUTE TFLUEP ; EPFLUAGE.NUMLEV=FLUAG1 ; CHACAL = CHACAL ET CHARFLU ; 'FINSI' ; 'SI' ( 'EGA' NSOUSL 1) ; LC= 'PROG' TCAL ; 'SINON' ; TPAS= (TCAL - TDER) / NSOUSL ; 'SI' ( 'EGA' NSOUSL 2) ; LC= 'PROG' (TDER+TPAS) TCAL ; 'SINON' ; LC= 'PROG' (TDER+TPAS) 'PAS' TPAS TCAL ; 'FINSI' ; 'FINSI' ; LISTTEMP=LISTTEMP 'ET' LC ; TABRES.'TEMPS_CALCULES'= LC ; TABRES.'CHARGEMENT' = CHACAL ; OUBL TABRES 'WTABLE' ; PASAPAS TABRES ; * redefinition des materiaux et du poids pour le temps exact * correspondant à la levée 'REPETER' ADDIMO NBLEVE ; MA = TLEVEE . &ADDIMO . 'MATERIAU' ; 'SI' ( &ADDIMO