$$$$ DYNAMODE * DYNAMODE PROCEDUR NOBODY 92/01/01 00:00:00 001 'DEBPROC' DYNAMODE _OPERAT_*'MOT ' TEMPCALC*'LISTREEL' _BASMOD_*'BASEMODA' MOT1/'MOT ' MOT2/'MOT ' MOT3/'MOT ' MOT4/'MOT ' MOT5/'MOT ' MOT6/'MOT ' MOT7/'MOT ' MOT8/'MOT ' MOT9/'MOT ' MO10/'MOT ' MO11/'MOT ' AMORT/'LISTREEL' ENT1/'ENTIER ' CHP1/'CHPOINT ' CHP2/'CHPOINT ' SOLPRE/'SOLUTION' TAB1/'TABLE ' TAB2/'TABLE ' TAB3/'TABLE ' TAB4/'TABLE ' TAB5/'TABLE ' ; ************************************************************************ * * D Y N A M O D E * --------------- * * FONCTION: * --------- * * CALCUL DE LA REPONSE DYNAMIQUE D'UNE STRUCTURE SELON LE SCHEMA * SUIVANT: * 1) PROJECTION SUR LA BASE MODALE, * 2) INTEGRATION EXPLICITE EN TEMPS, * 3) RECOMBINAISON MODALE DE LA REPONSE. * * PHRASE D'APPEL (EN GIBIANE): * ---------------------------- * * RESU = DYNAMODE 'OPERAT' TEMPCALC BAS1 (AMORT) * ('BLOC' NBLOC) ('DEPL' CHDEP) ('VITE' CHVIT) * ('SAUV') ('SUIT' SOLPRE) ('GDPL') * * ('CHAR' TABLCHAR ) * * ('SEIS' TABLSEIS ) * * ('RECO' TABLRECO ) * * ('MAXI' TABLMAXI ) * * ('EVOL' TABLEVOL ) ; * * OPERANDES: * ---------- * * OPERAT 'MOT' NOM DE L'OPERATEUR DE RESOLUTION DE * L'EQUATION DU MOUVEMENT ("DEVO" OU * "PLEX"). * TEMPCALC 'LISTREEL' INSTANTS DE CALCUL. * BAS1 'BASEMODA' CONTIENT LES MODES DES SOUS-STRUCTURES, LES * SOLUTIONS STATIQUES, LES PSEUDO-MODES * ASSOCIES AUX EFFETS DE TRONCATURE ET * EVENTUELLEMENT LES LIAISONS. * AMORT 'LISTREEL' AMORTISSEMENT. * BLOC 'MOT' DECOUPAGE DU CALCUL EN PLUSIEURS BLOCS DE * PAS DE TEMPS. * NBLOC 'ENTIER' NOMBRE DE BLOCS. * DEPL 'MOT' DONNEE DE DEPLACEMENTS INITIAUX. * CHDEP 'CHPOINT' VALEURS DES DEPLACEMENTS INITIAUX. * VITE 'MOT' DONNEE DE VITESSES INITIALES. * CHVIT 'CHPOINT' VALEURS DES VITESSES INITIALES. * SAUV 'MOT' DEMANDE DE SAUVEGARDE DES RESULTATS DU * DERNIER "BLOC" EN VUE D'UNE REPRISE * ULTERIEURE EVENTUELLE DU CALCUL. * SUIT 'MOT' INDICATION DE REPRISE D'UN CALCUL. * SOLPRE 'SOLUTIO' CONDITIONS INITIALES POUR UNE REPRISE * (= CONDITIONS FINALES DU CALCUL PRECEDENT). * GDPL 'MOT' INDICATION DE CALCUL AVEC GRANDS * DEPLACEMENTS (POUR L'OPERATEUR "PLEXUS" * SEULEMENT). * * CHAR 'MOT' MOT CLE, CREATION D'UN OBJET CHARGEMENT. * TABLCHAR 'TABLE' TABLE CONTENANT AUTANT DE TABLE (N) QUE * CHARGEMENT * I POUVANT VARIER DE 1 A N * TABLCHAR I 'CHARGEMENT' : OBJET CHARGEMENT. * TABLCHAR I 'STRUCTURE' : OBJET STRUCTURE, * (FACULTATIF) SOUS-STRUCTURE OU EST * APPLIQUEE LE CHARGEMENT. * TABLCHAR I 'NUMERO' : OBJET ENTIER, (FACULTATIF) * NUMERO DE LA SOUS-STRUCTURE. * * SEIS 'MOT' MOT CLE, CREATION D'UN OBJET CHARGEMENT. * TABLSEIS 'TABLE' TABLE CONTENANT AU PLUS 3 TABLES * I POUVANT VARIER DE 1 A 3 * TABLSEIS I 'EVOLUTION' : OBJET EVOLUTION CONTENANT * LA DISCRETISATION DU SEISME. * TABLSEIS I 'COEFFICIENT' : OBJET FLOTTANT, COEFF * MULTIPLICATIF APPLIQUE AU SEISME. * TABLSEIS I 'DIRECTION' : OBJET MOT, INDIQUANT LA * DIRECTION DU SEISME (UX, UY, UZ). * * RECO 'MOT' DEMANDE DE RECOMBINAISON MODALE POUR TOUTE * LA STRUCTURE, A DES INSTANTS DONNES. * TABLRECO 'TABLE' TABLE CONTENANT AUTANT DE TABLES (N) QUE DE * RECOMBINAISONS DEMANDEES. * I VARIANT DE 1 A N * TABLRECO I 'TYPE' : UN MOT, TYPE DEMANDE * (DEPL,ACCE, VITE,LIAI,CONT). * TABLRECO I 'TEMPS' : OBJET FLOTTANT, TEMPS OU DOIT * S'EFFECTUER LA RECOMBINAISON POUR TOUTE LA * STRUCTURE. * TABLRECO I 'STRUCTURE' : OBJET STRUCTURE, * (FACULTATIF) SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * TABLRECO I 'NUMERO' : OBJET ENTIER, (FACULTATIF) * NUMERO DE LA SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * * MAXI 'MOT' DEMANDE DU MAXIMUM, EN VALEUR ABSOLUE D'UNE * COMPOSANTE AU COURS DU TEMPS APRES UNE * RECOMBINAISON MODALE. * TABLMAXI 'TABLE' TABLE CONTENANT AUTANT DE TABLES (N) QUE DE * MAXIMA DEMANDES. * I VARIANT DE 1 A N * TABLMAXI I 'TYPE' : UN MOT, TYPE DU MAXIMUM * DEMANDE (DEPL,ACCE, VITE,LIAI,CONT). * TABLMAXI I 'STRUCTURE' : OBJET STRUCTURE, * (FACULTATIF) SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * TABLMAXI I 'NUMERO' : OBJET ENTIER, (FACULTATIF) * NUMERO DE LA SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * PUIS, * TABLMAXI I 'POINT' : OBJET POINT,MAILLAGE,ATTACHE. * POINTS OU DOIT S'EFFECTUER LA RECHERCHE DU * MAXIMUM. * TABLMAXI I 'COMPOSANTE' : UN MOT, NOM DE LA * COMPOSANTE DU POINT. * OU, * TABLMAXI I 'CHPOINT' : OBJET CHPOINT, CHAMP * CONTENANT LES POINTS ET LES COMPOSANTES OU * DOIT S'EFFECTUER LA RECHERCHE DES MAXIMA. * * EVOL 'MOT' DEMANDE DE RECOMBINAISON MODALE EN QUELQUES * POINTS, EN FONCTION DU TEMPS. * TABLEVOL 'TABLE' TABLE CONTENANT AUTANT DE TABLES (N) QUE DE * DEMANDES DE RECOMBINAISON. * I VARIANT DE 1 A N * TABLEVOL I 'NPAS' : UN ENTIER, SORTIE TOUS LES * "NPAS" DE CALCUL. * (FACULTATIF) EGAL A 1 PAR DEFAUT. * TABLEVOL I 'TYPE' : UN MOT, TYPE DE LA COMPOSANTE * TRAITEE (DEPL,ACCE, VITE,LIAI,CONT). * TABLEVOL I 'STRUCTURE' : OBJET STRUCTURE, * (FACULTATIF) SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * TABLEVOL I 'NUMERO' : OBJET ENTIER, (FACULTATIF) * NUMERO DE LA SOUS-STRUCTURE OU DOIT * S'EFFECTUER LA RECOMBINAISON. * PUIS, * TABLEVOL I 'POINT' : OBJET POINT,MAILLAGE,ATTACHE. * POINTS OU DOIT S'EFFECTUER LA RECOMBINAISON * TABLEVOL I 'COMPOSANTE' : UN MOT, NOM DE LA * COMPOSANTE DU POINT. * OU, * TABLEVOL I 'CHPOINT' : OBJET CHPOINT, CHAMP * CONTENANT LES POINTS ET LES COMPOSANTES OU * DOIT S'EFFECTUER LA RECOMBINAISON. * * * RESULTATS: * ---------- * * RESU 'TABLE' RESULTATS, REPARTIS COMME SUIT: * * INDICE 'SAUV' OBJET SOLUTION. * RESU 'SAUV' : LA SOLUTION A L'INSTANT FINAL DE * L'EQUATION DANS LA BASE MODALE. * INDICE 'RECO' OBJET TABLE, INDICEE 1 A N. * RESU 'RECO' I : LA RECOMBINAISON MODALE (CHPOINT OU * CHAMELEM) POUR LA STRUCTURE A L'INSTANT T . * INDICE 'MAXI' OBJET TABLE, INDICEE 1 A N. * RESU 'MAXI' I : LE MAXIMUM DEMANDE DE LA COMPOSANTE * EN VALEUR ABSOLUE (FLOTANT). * INDICE 'EVOL' OBJET TABLE, INDICEE 1 A N. * RESU 'EVOL' I : LA RECOMBINAISON MODALE (EVOLUTION) * EN QUELQUES POINTS SUR L'INTERVALLE DE * TEMPS DE CALCUL. * * VARIABLES : * ----------- * * LISTEM : LISTREEL DE TEMPS POUR LE CALCUL D'UN BLOC * * * AUTEUR, DATE DE CREATION: * ------------------------- * * P.M. L.V. 17 MARS 1988 * ************************************************************************ * SI = 'MOT' 'SI' ; SINON = 'MOT' 'SINON' ; FINSI = 'MOT' 'FINSI' ; REPETER ='MOT' 'REPETER' ;QUITTER ='MOT' 'QUITTER' ;FIN ='MOT' 'FIN' ; EXISTE = 'MOT' 'EXISTE' ; EGA = 'MOT' 'EGA' ; DEPL = 'MOT' 'DEPL' ; VITE = 'MOT' 'VITE' ; GDPL = 'MOT' 'GDPL' ; SUIT = 'MOT' 'SUIT' ; * NBLOCS = 1 ; DEPL_OUI = FAUX ; VITE_OUI = FAUX ; SAUV_OUI = FAUX ; SUIT_OUI = FAUX ; GDPL_OUI = FAUX ; CHAR_OUI = FAUX ; SEIS_OUI = FAUX ; RECO_OUI = FAUX ; MAXI_OUI = FAUX ; EVOL_OUI = FAUX ; _NBINS_ = 1 ; * DEB_ERR = '***** ERREUR *****' ; * * OBJET "BOUCLE" CREE POUR PERMETTRE UNE SORTIE PREMATUREE DE * LA PROCEDURE EN CAS D'ERREUR. REPETER PROC 1 ; * * * -------------------------------------------------------------------- * RECUPERATION DES OPERANDES * -------------------------------------------------------------------- * SI (EXISTE MOT1); TAB_MOT = 'TABLE' ; TAB_MOT.1 = 'MOT' MOT1 ; SI (EXISTE MOT2); TAB_MOT.2 = 'MOT' MOT2 ; SI (EXISTE MOT3); TAB_MOT.3 = 'MOT' MOT3 ; SI (EXISTE MOT4); TAB_MOT.4 = 'MOT' MOT4 ; SI (EXISTE MOT5); TAB_MOT.5 = 'MOT' MOT5 ; SI (EXISTE MOT6); TAB_MOT.6 = 'MOT' MOT6 ; SI (EXISTE MOT7); TAB_MOT.7 = 'MOT' MOT7 ; SI (EXISTE MOT8); TAB_MOT.8 = 'MOT' MOT8 ; SI (EXISTE MOT9); TAB_MOT.9 = 'MOT' MOT9 ; SI (EXISTE MO10); TAB_MOT.10 = 'MOT' MO10 ; SI (EXISTE MO11); TAB_MOT.11 = 'MOT' MO11 ; NB_MOT = 11 ; SINON; NB_MOT = 10 ; FINSI ; SINON; NB_MOT = 9 ; FINSI ; SINON; NB_MOT = 8 ; FINSI ; SINON; NB_MOT = 7 ; FINSI ; SINON; NB_MOT = 6 ; FINSI ; SINON; NB_MOT = 5 ; FINSI ; SINON; NB_MOT = 4 ; FINSI ; SINON; NB_MOT = 3 ; FINSI ; SINON; NB_MOT = 2 ; FINSI ; SINON; NB_MOT = 1 ; FINSI ; SINON; NB_MOT = 0 ; FINSI ; * SI (EXISTE TAB1); TAB_TAB = 'TABLE' ; TAB_TAB.1 = TAB1 ; SI (EXISTE TAB2); TAB_TAB.2 = TAB2 ; SI (EXISTE TAB3); TAB_TAB.3 = TAB3 ; SI (EXISTE TAB4); TAB_TAB.4 = TAB4 ; SI (EXISTE TAB5); TAB_TAB.5 = TAB5 ; NB_TAB = 5 ; SINON; NB_TAB = 4 ; FINSI ; SINON; NB_TAB = 3 ; FINSI ; SINON; NB_TAB = 2 ; FINSI ; SINON; NB_TAB = 1 ; FINSI ; SINON; NB_TAB = 0 ; FINSI ; * SI (EXISTE CHP1); TAB_CHP = 'TABLE' ; TAB_CHP.1 = CHP1 ; SI (EXISTE CHP2); TAB_CHP.2 = CHP2 ; NB_CHP = 2 ; SINON; NB_CHP = 1 ; FINSI ; SINON; NB_CHP = 0 ; FINSI ; * * ------------------------------------------------------------------- * VERIFICATION DES OPERANDES * ------------------------------------------------------------------- * I_MOT = 0 ; I_TAB = 0 ; I_CHP = 0 ; * REPETER LECTURE ; * I_MOT = I_MOT '+' 1 ; SI (I_MOT '>' NB_MOT) ; QUITTER LECTURE ; FINSI; * MOT_CLE = 'MOT' TAB_MOT.I_MOT ; SI (EGA MOT_CLE 'BLOC') ; SI ('NON' (EXISTE ENT1) ) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "ENTIER"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; SI (ENT1 '<' 0) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'VOUS AVEZ DONNE UN NOMBRE DE BLOCS NEGATIF.' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; SI (EGA ENT1 0) ; ENT1 = 1 ; FINSI ; NBLOCS = ENT1 ; SINON; SI (EGA MOT_CLE 'DEPL') ; I_CHP = I_CHP '+' 1 ; SI (I_CHP '>' NB_CHP) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "CHPOINT"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; CHP_DEP = TAB_CHP.I_CHP ; DEPL_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'VITE') ; I_CHP = I_CHP '+' 1 ; SI (I_CHP '>' NB_CHP) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "CHPOINT"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; CHP_VIT = TAB_CHP.I_CHP ; VITE_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'SAUV') ; SAUV_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'SUIT') ; SI ('NON' (EXISTE SOLPRE) ) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "SOLUTION"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; SUIT_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'GDPL') ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'OPTION GDPL INDISPONIBLE' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; GDPL_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'CHAR') ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_CHA = TAB_TAB.I_TAB ; CHAR_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'SEIS') ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_SEI = TAB_TAB.I_TAB ; SEIS_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'RECO') ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_REC = TAB_TAB.I_TAB ; RECO_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'MAXI') ; * ZEXISTE = 'TYPE' DYNAMOD3 ; * SI ('NEG' ZEXISTE 'PROCEDUR') ; * 'MESSAGE' DEB_ERR ; * 'MESSAGE' 'LE MOT "DYNAMOD3" SE TROUVE DANS VOTRE FICHIER,' ; * 'MESSAGE' 'CE MOT "DYNAMOD3" EST RESERVE POUR L"APPEL ' ; * 'MESSAGE' 'D"UNE PROCEDURE INTERNE.' ; * 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE' ; * QUITTER PROC ; * FINSI ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_MAX = TAB_TAB.I_TAB ; MAXI_OUI = VRAI ; SINON; SI (EGA MOT_CLE 'EVOL') ; * ZEXISTE = 'TYPE' DYNAMOD2 ; * SI ('NEG' ZEXISTE 'PROCEDUR') ; * 'MESSAGE' DEB_ERR ; * 'MESSAGE' 'LE MOT "DYNAMOD2" SE TROUVE DANS VOTRE FICHIER,' ; * 'MESSAGE' 'CE MOT "DYNAMOD2" EST RESERVE POUR L"APPEL ' ; * 'MESSAGE' 'D"UNE PROCEDURE INTERNE.' ; * 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE' ; * QUITTER PROC ; * FINSI ; I_TAB = I_TAB '+' 1 ; SI (I_TAB '>' NB_TAB) ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI; TABL_EVO = TAB_TAB.I_TAB ; EVOL_OUI = VRAI ; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; * FIN LECTURE ; * * -------------------------------------------------------------------- * DEBUT DES CALCULS * -------------------------------------------------------------------- * * _BRIGID_ = 'RIGI' _BASMOD_ ; _BMASSE_ = 'MASS' _BASMOD_ ; * *---- ECRITURE DE LA SYNTAXE POUR L'APPEL DE PLEX OU DEVO ---- * * TXT_OPER = 'TEXTE' '_BRIGID_' '_BMASSE_' '_BASMOD_' '_NBINS_' ; TX2_OPER = 'TEXTE' ' ' ; SI (EXISTE AMORT) ; _BAMORT_ = 'AMOR' _BASMOD_ AMORT ; TXT_OPER = 'TEXTE' TXT_OPER '_BAMORT_' ; FINSI; SI CHAR_OUI ; NB_CHAR = 'DIMENSION' TABL_CHA ; I = 0 ; REPETER BOUC_CHA NB_CHAR ; I = I '+' 1 ; TAB_CHAR = TABL_CHA.I ; _CHARG_ = TAB_CHAR.'CHARGEMENT' ; TXT_CHAR = 'TEXTE' '_BASMOD_' ; SI (EXISTE TAB_CHAR 'STRUCTURE') ; _STRUC_ = TAB_CHAR.'STRUCTURE' ; TXT_CHAR = 'TEXTE' TXT_CHAR '_STRUC_' ; SI (EXISTE TAB_CHAR 'NUMERO') ; _NUME_ = TAB_CHAR.'NUMERO' ; TXT_CHAR = 'TEXTE' TXT_CHAR '_NUME_' ; FINSI ; FINSI ; TXT_CHAR = 'TEXTE' TXT_CHAR '_CHARG_' ; _BCHAR_ = 'PJBA' TXT_CHAR ; SI (EGA I 1) ; _BCHARG_ = _BCHAR_ ; SINON ; _BCHARG_ = _BCHARG_ 'ET' _BCHAR_ ; FINSI ; FIN BOUC_CHA ; FINSI; SI SEIS_OUI ; NB_SEIS = 'DIMENSION' TABL_SEI ; I = 0 ; REPETER BOUC_SEI NB_SEIS ; I = I '+' 1 ; TAB_SEIS = TABL_SEI.I ; EVOL_I = TAB_SEIS.'EVOLUTION' ; COEF_I = TAB_SEIS.'COEFFICIENT' ; DIR_I = 'MOT' TAB_SEIS.'DIRECTION' ; _SCHAR_ = 'SEISME' EVOL_I _BASMOD_ COEF_I DIR_I ; SI (EGA I 1) ; _SCHARG_ = _SCHAR_ ; SINON ; _SCHARG_ = _SCHARG_ 'ET' _SCHAR_ ; FINSI ; FIN BOUC_SEI ; FINSI; SI SEIS_OUI ; SI CHAR_OUI ; _BCHARG_ = _SCHARG_ 'ET' _BCHARG_ ; SINON ; _BCHARG_ = _SCHARG_ ; FINSI ; TXT_OPER = 'TEXTE' TXT_OPER '_BCHARG_' ; SINON ; SI CHAR_OUI ; TXT_OPER = 'TEXTE' TXT_OPER '_BCHARG_' ; FINSI ; FINSI ; SI DEPL_OUI ; RMASSE = 'EXTR' _BASMOD_ 'MASS' ; MACHDE = RMASSE '*' CHP_DEP ; PROJDE = 'PJBA' _BASMOD_ MACHDE ; _CHPDEP_ = 'RESO' _BMASSE_ PROJDE ; _DEPL_ = 'MOT' 'DEPL' ; TX2_OPER = 'TEXTE' TX2_OPER '_DEPL_' '_CHPDEP_' ; FINSI; SI VITE_OUI ; RMASSE = 'EXTR' _BASMOD_ 'MASS' ; MACHVI = RMASSE '*' CHP_VIT ; PROJVI = 'PJBA' _BASMOD_ MACHVI ; _CHPVIT_ = 'RESO' _BMASSE_ PROJVI ; _VITE_ = 'MOT' 'VITE' ; TX2_OPER = 'TEXTE' TX2_OPER '_VITE_' '_CHPVIT_' ; FINSI; SI GDPL_OUI ; _GDPL_ = 'MOT' 'GDPL' ; TXT_OPER = 'TEXTE' TXT_OPER '_GDPL_' ; FINSI; SI ( (EGA _OPERAT_ 'DEVO') 'OU' (EGA _OPERAT_ 'PLEX') ) ; TXT_OPER = 'TEXTE' '_OPERAT_' TXT_OPER ; SINON ; 'MESSAGE' DEB_ERR ; 'MESSAGE' 'NOM INCORRECT POUR L"OPERATEUR DE RESOLUTION DYNAMIQUE'; 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; QUITTER PROC ; FINSI ; * RESU = 'TABLE' ; * * ---------- INITIALISATION POUR L'OPERATEUR RECO ---------- * SI RECO_OUI ; DIM_SORT = 'DIMENSION' TABL_REC ; RECOMBIN = 'TABLE' ; RESU.'RECO' = RECOMBIN ; FINSI ; * * ------------------ CALCUL PAR BLOC --------------------- * DIM_CALC = 'DIMENSION' TEMPCALC ; DIM_CAL2 = DIM_CALC '-' 1 ; N1_TEMPS = (DIM_CAL2 '/' NBLOCS) ; N1_TEMP1 = N1_TEMPS '+' 1 ; N2_TEMPS = N1_TEMPS '*' NBLOCS ; N3_TEMPS = DIM_CAL2 '-' N2_TEMPS ; IBLOC = 0 ; I_REC2 = 0 ; ITEMP = 1 ; * REPETER CALCUL NBLOCS ; * IBLOC = IBLOC '+' 1 ; SI ( EGA NBLOCS 1 ) ; LISTEM = TEMPCALC ; DIM_LIST = DIM_CALC ; SINON ; ITEMP = ITEMP '-' 1 ; SI ( IBLOC 'EG' N4_TEMPS) 'ET' (TEM_RCO '' MAXI1 ) ; TAB_MAX1.I_MAX = MAXI2 ; FINSI ; FIN VAL_MAXI ; FINSI ; FINSI ; * * ----- OPERATEUR EVOL ----- * SI EVOL_OUI ; SI ( EGA IBLOC 1 ) ; RESUEVO1 = DYNAMOD2 SOLUDY _BASMOD_ LISTEM TEMPCALC TABL_EVO ; TAB_EVO1 = RESUEVO1.'EVOLUTION' ; TABL_PAS = RESUEVO1.'PAS-EVOL' ; SINON ; RESUEVO2 = DYNAMOD2 SOLUDY _BASMOD_ LISTEM TEMPCALC TABL_EVO TABL_PAS ; TAB_EVO2 = RESUEVO2.'EVOLUTION' ; TABL_PAS = RESUEVO2.'PAS-EVOL' ; NB_EVOL = 'DIMENSION' TAB_EVO2 ; I_EVO = 0 ; REPETER OPE_CONC NB_EVOL ; I_EVO = I_EVO '+' 1 ; EVOL1 = TAB_EVO1.I_EVO ; EVOL2 = TAB_EVO2.I_EVO ; EVOL3 = 'CONCAT' EVOL1 EVOL2 ; 'DETR' EVOL1 'TOUT' ; 'DETR' EVOL2 'TOUT' ; TAB_EVO1.I_EVO = EVOL3 ; FIN OPE_CONC ; FINSI ; FINSI ; * SI ( 'NEG' DIM_LIST DIM_CALC ) ; 'DETR' LISTEM ; FINSI ; * SOLPRE = SOLUDY ; * FIN CALCUL ; * * * -------------------------------------------------------------------- * RECUPERATION DES RESULTATS * -------------------------------------------------------------------- * SI MAXI_OUI ; RESU.'MAXI' = TAB_MAX1 ; FINSI ; SI EVOL_OUI ; RESU.'EVOL' = TAB_EVO1 ; FINSI ; SI SAUV_OUI ; RESU.'SAUV' = SOLUDY ; SINON ; 'DETR' SOLUDY ; FINSI ; * FIN PROC ; * 'FINPROC' RESU ;