* EXPLORER PROCEDUR SP204843 24/04/25 21:15:01 11920 *======================================================================= * * PROCEDURE DONT LE BUT EST D'EXPLORER LES RESULTATS ISSUS DE : * - PASAPAS * - VIBR (ajout bp, 2016-02) * * SYNTAXE : * EXPLORER MATAB | (LMOC1) | (TOPT1) ; * | 'CHAR' | * avec : * -MATAB : table de resultats issues de PASAPAS ou de VIBR * -CHAR : mot-cle si l'on souhaite visualiser le chargement * -LMOC1 : mots-cles definissant les actions a produire * -TOPT1 : table d'options * *======================================================================= *----------------------------------------------------------------------* * RECUP et VERIF DES DONNEES D'ENTREE * *----------------------------------------------------------------------* * quelques logiques : FLTRACX = FLTRACX1 'OU' FLTRACX2; * Le choix est interactif si pas de mot-cles et trace X FLCHOI = FLTRACX ET (NON FLMOC1); * Quel est le type de resultats a traiter? SINON; FINSI; *----------------------------------------------------------------------* * CAS D'UNE TABLE ISSUE DE VIBR * *----------------------------------------------------------------------* SI ( (EGA TYPTAB 'BASE_MODALE') OU (EGA TYPTAB 'LIAISONS_STATIQUES') OU (EGA TYPTAB 'BASE_DE_MODES') ); * on teste l'existence des arguments SI (NON FLMOC1); FINSI; SI FLOPT1; POSTVIBR MATAB LMOC1 TOPT1; SINON; POSTVIBR MATAB LMOC1; FINSI; FINSI; * ON VERIFIE LE TYPE AVANT DE POURSUIVRE FINSI; *----------------------------------------------------------------------* * CAS D'UNE TABLE ISSUE DE PASAPAS * *----------------------------------------------------------------------* * Si MATAB ne contient pas de resultat ==> proposer option CHAR : * SI IDEPL1 ; FINSI ; SI ISIGM1 ; FINSI ; SI ITHER1 ; FINSI ; IRESU1 = (IDEPL1 ET ISIGM1) 'OU' ITHER1 ; * MESG00 = ' ' ; SI (NON IRESU1) ; FINSI ; FINSI ; ICHGMAT1 = FAUX; 'FINSI'; *----------------------------------------------------------------------* * SOUS-CAS DU CHARGEMENT D'UNE TABLE PASAPAS * *----------------------------------------------------------------------* * Le choix est interactif si pas de table d'options et trace X FLCHOI = FLTRACX ET (NON FLOPT1); MOD1 = MATAB . 'MODELE' ; CGT0 = MATAB . 'CHARGEMENT' ; * * Boucle principale : REPE BPRIN1 ; * * Choix du chargement a vualiser : SI FLCHOI; * en interactif TRAC 'NCLK' MAIL1 ; MESG00 = ' ' ; SI (EGA MRET1 'Quitter') QUITTER BPRIN1 ; FINSI ; SINON; * par defaut * par une table d option SI FLOPT1; FINSI; FINSI; FINSI; * Petit travail si chargement est defini par 2 tables FIN BX1 ; SINON ; FINSI ; * * Traitement CHPOINT / MCHAML I2 = 1 ; MM1 = MOD1 ; SINON ; MM1 = MAIL1 ; SINON ; FINSI ; FINSI ; * composante LCOMP2 = LCOMP1 ; SI FLOPT1; FINSI; FINSI; * Boucle sur les instants du chargement REPE BINST1 ; * * Traitement de l'echelle d'isovaleur REPE BLEG1 NLI1 ; SI (XMINI1 '<' XMIN1) ; XMIN1 = XMINI1 ; FINSI ; SI (XMAXI1 '>' XMAX1) ; XMAX1 = XMAXI1 ; FINSI ; FIN BLEG1 ; XINT1 = XMAX1 - XMIN1 ; XPAS1 = XINT1 / 18. ; SI (XPAS1 NEG 0.) ; EE1 = ENTI 'INFE' (('LOG' XPAS1) / ('LOG' 10.)) ; YPAS1 = ENTI 'INFE' (XPAS1 / (10. ** EE1)) ; YPAS1 = YPAS1 * (10. ** EE1) ; NN1 = ENTI 'INFE' (XMIN1 / YPAS1) ; YMIN1 = NN1 * YPAS1 ; NN1 = ENTI 'INFE' (XINT1 / YPAS1) ; YMAX1 = YMIN1 + ((NN1 + 1) * YPAS1) ; SINON ; FINSI ; * Cas non-interactif : SI (NON FLCHOI); * on itere betement MESG1 = CHAI ' Chargement ' MRET1 ' a l instant ' * on itere betement I2 = I2 + 1 ; SI (I2 > NLI1); QUITTER BINST1; FINSI; ITERER BINST1; FINSI; * * Choix des instants a vualiser TRAC 'NCLK' CH2 MM1 LISO1 ; MESG1 = CHAI ' Chargement ' MRET1 ' a l instant ' MRET2 = MENU MESG1 ' Visualiser ' ' Composante ' ' <-- ' ' --> ' ' No instant' ; * * On quitte pour boucle principale SI (EGA MRET2 'Quitter') ; QUITTER BINST1 ; FINSI ; * * On visualise le champ a l'instant demande SI (EGA MRET2 ' Visualiser ') ; FINSI ; * * Traitement choix instant suivant / precedent SI (EGA MRET2 ' <-- ') ; I2 = I2 - 1 ; I2 = I2 - ((I2 - NLI1) / NLI1 * NLI1) ; FINSI ; SI (EGA MRET2 ' --> ') ; I2 = I2 + 1 - (I2 / NLI1 * NLI1) ; FINSI ; * * Traitement choix No instant SI (EGA MRET2 ' No instant') ; MESG2 = CHAI ' Entrez le No du pas de temps a visualiser (1 a ' 'FORMAT' '(I)' NLI1 ') : ' ; REPE BSAIS1 ; SI ((I2 '<' 0) 'OU' (I2 '>' NLI1)) ; 'ITER' BSAIS1 ; FINSI ; QUITTER BSAIS1 ; FIN BSAIS1 ; FINSI ; * * Champ pour nouvel instant choisi * Traitement des options d'affichage * SI (EGA MRET2 ' Options ') ; * TRAC 'NCLK' CH2 MM1 'TITR' MESG1 ; * MRET3 = MENU ' Choisissez une option d affichage ' * ' Composante ' ; * FINSI ; * * Traitement choix composante SI (EGA MRET2 ' Composante ') ; MRET3 = MENU ' Choisissez la composante a afficher ' FINSI ; SI (EGA MRET3 'Tout') ; LCOMP2 = LCOMP1 ; FINSI ; FINSI ; SI (NEG LCOMP1 LCOMP2) ; FINSI ; *List Resu CH2 ; * * Traitement choix vecteur * SI (EGA MRET3 ' Vecteur ') ; * TYP3 = EXTR CH2 'TYPE' ; * SI (EGA (TYPE TYP3) 'LISTMOTS') ; * MESG1 = CHAI * ' On attend un CHPOINT !' ; * FINSI ; * List TYP3 ; * SI ((EGA TYP3 'FORCES') 'OU' (EGA TYP3 'DEPLACEM')) ; * SINON ; * MESG1 = CHAI * ' On attend un CHPOINT de FORCES ou DEPLACEMENTS !' ; * TRAC 'NCLK' CH2 MM1 'TITR' MESG1 ; * FINSI ; * FINSI ; * FIN BINST1 ; SI (NON FLCHOI); QUITTER BPRIN1; FINSI; FIN BPRIN1 ; FINSI ; *----------------------------------------------------------------------* * SOUS-CAS DES RESULTATS D'UNE TABLE PASAPAS * *----------------------------------------------------------------------* * INITIALISATIONS DES NOMS DES COMPOSANTES DES EFFORTS FINSI; FINSI; FINSI; * INITIALISATIONS ------------------------------------------------------ * ON COMMENCE PAR TRACER LE MAILLAGE lorsqu'on est en interactif si ICHGMOD1 ; MOD0 = MATAB . 'MODELES' . 0 ; sino ; MOD0 = MATAB . 'MODELE' ; fins ; * enlever les elements de frottements car les multiplicateurs de lagrange de frottement ne suivent pas la * deformee * suite a la demande de CB FINSI; FINSI; * ON VERIFIE L'EXISTENCE DES CHAMPS -> lopt tdpl = MATAB . 'DEPLACEMENTS'; FINSI; tctr = MATAB . 'CONTRAINTES'; FINSI; tvar = MATAB . 'VARIABLES_INTERNES'; FINSI; trea = MATAB . 'REACTIONS'; FINSI; tctem = MATAB . 'TEMPERATURES'; FINSI; * ON INDEXE LA TABLE DES TEMPS (DES PAS DE CALCUL) ttem = MATAB . 'TEMPS'; tindex = INDEX ttem; ind=0;d1=d1; * VALEUR PAR DEFAUT DES LOGIQUES evolu = FAUX; defor = FAUX; contr = FAUX; react = FAUX; tempe = FAUX; evo_esp = FAUX; evo_tem = FAUX; depla = FAUX; var_int= FAUX; quit = FAUX; * En cas de modele de contact, valeur amplitude deformee = 1 par defaut ampdef = 1. ; fins ; * BOUCLE PRINCIPALE ---------------------------------------------------- REPE bouc2; SI FLCHOI; * Par defaut : si (&bouc2 ega 1) ; defor = VRAI ; contr = VRAI ; fins ; * Choix interactif : defoP contP reacP evolP tempP = defor contr react evolu tempe ; defor contr react evolu tempe quit; si (contP et tempe) ; contr = faux ; fins ; si (contr et tempP) ; contr = vrai ; fins ; si (react et tempe) ; react = faux ; tempe = faux ; iter bouc2 ; fins ; SINON ; defor contr react evolu quit; FINSI ; SINON; SI FLMOC1; * Choix par un listmots en argument SINON; * Choix par defaut defor = VRAI; contr = VRAI; FINSI; SI FLOPT1; ampdef = TOPT1 . 'AMPL'; FINSI; FINSI; FINSI; SINON; SI FLCHOI; tempe evolu quit; SINON; SI FLMOC1; SINON; tempe = VRAI; FINSI; FINSI; SINON ; FINSI; FINSI; * CHOIX = QUIT --> ON SORT * 1 seule iteration si pas de choix interactif * AUCUN CHOIX = QUIT --> ON NE FAIT QUE REPROPOSER UN NOUVEAUX CHOIX SI ((NON defor) ET (NON contr) ET (NON react) ET ( NON evolu) ET (NON tempe)); ITERER bouc2; FINSI; * CHOIX = EVOLU SI evolu; SI FLCHOI; * Choix interactif SI ( EGA ret 'evo_espace') ; evo_esp=VRAI; evo_tem=FAUX; SINON; evo_esp=FAUX; SI ( EGA ret 'evo_temps' ); evo_tem=VRAI; FINSI; FINSI; SINON; * Choix par une table d'option en argument SI (NON FLOPT1); FINSI; FINSI; FINSI; * logiques deja affectes + haut depla = defor; LIST lret; FINSI; FINSI; * EVOLUTION SPATIALE SI evo_esp; * evolution spatiale sur quelle ligne? et de quelle grandeur? SI FLCHOI; * Choix interactif depla=FAUX; contr=FAUX; react=FAUX; tempe=FAUX; var_int=faux; 'MAILLAGE' ; * MESS ' retour de menu ' ret; SI ( EGA ret 'Var_') ; var_int=VRAI;FINSI; SINON; * Choix par une table d'option en argument SINON; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; SI ( EGA ret 'Var_') ; FINSI; SI FLCHOI; * Choix interactif SINON; * Choix par une table d'option en argument SINON; * Choix par defaut FINSI; FINSI; cp= ttem . ind; * titre du trace SI FLCHOI; * Choix interactif 'MOT'; SINON; * Choix par une table d'option en argument SINON; * Choix par defaut FINSI; FINSI; tcp = ttem . ind; TITRE ch; * trace initial SI ( depla 'OU' tempe 'OU' react ); SI depla; mata=MATAB . 'DEPLACEMENTS';FINSI; SI tempe; mata=MATAB . 'TEMPERATURES';FINSI; SI react; mata=MATAB . 'REACTIONS' ;FINSI; tcp= ttem . ind; * Pour l'indice 0 les reactions sont 'VIDES' ==> Test sur l'existence de la composante SINON; FINS; ichpo=vrai; * dess ev; SINON ; SI var_int; mata = MATAB . 'VARIABLES_INTERNES' ; FINSI; SI contr ; mata = MATAB . 'CONTRAINTES' ; FINSI; ichpo=FAUX; FINSI; * boucle second niveau sur les pas de temps ...... REPE bouc77 ; SI FLCHOI; * Choix interactif dess ev; SI (EGA ret 'options') ; QUITTER bouc77 ; FINSI; SI (EGA ret 'precedent') ; ind = ind - 1; FINSI; SI (EGA ret 'suivant') ; ind = ind + 1; FINSI; SI (EGA ret 'retracer') ; ind = ind ; FINSI; SI (EGA ret 'Quitter') ; QUITTER bouc2; FINSI; SI (ind > ltindex); ind = 0 ; FINSI; SI (ind < 0); ind = ltindex; FINSI; FINSI; tcp = ttem . ind; TITRE ch; SI ichpo; * Pour l'indice 0 les reactions sont 'VIDES' ==> Test sur l'existence de la composante SINON; FINS; SINON; FINSI; SI (NON FLCHOI); * non interactif : on trace tous les pas de temps ind = ind + 1; SI (ind > ltindex); QUITTER bouc77; FINSI; FINSI; FIN bouc77; * fin de la boucle second niveau sur les pas de temps ...... FINSI; * EVOLUTION TEMPORELLE SI evo_tem; * evolution temporelle en quel point? et de quelle grandeur? SI FLCHOI; * Choix interactif depla=FAUX;contr=FAUX; react=FAUX; tempe=FAUX;var_int=faux; * ret = MENU 'Choisissez le champ concerne' * 'depla' 'contr' 'react' 'tempe' 'var_int'; FINSI; SI ( EGA ret 'Var_') ; ichpo=FAUX; SI FLCHOI; * Choix interactif SI ichpo; SINON; FINSI; SINON; * Choix par une table d'option en argument SINON; * Choix par defaut FINSI; SI ichpo; FINSI; SINON; SINON; n1 = 1; FINSI; SINON; n2 = 1; FINSI; SINON; n3 = 1; FINSI; FINSI; FINSI; FINSI; dess ev1; FINSI; * CHOIX = AUTRE QUE EVOLU SINON; * boucle second niveau sur les pas de temps ...... REPE bouc1; SI FLCHOI; * Choix interactif SI (EGA ret 'options') ; QUITTER bouc1 ; FINSI; SI (EGA ret 'precedent') ; ind = ind - 1; FINSI; SI (EGA ret 'suivant') ; ind = ind + 1; FINSI; SI (EGA ret 'retracer') ; ind = ind ; FINSI; SI (EGA ret 'Quitter') ; QUITTER bouc2; FINSI; FINSI; * indice du pas SI (ind > ltindex); ind = 0 ; FINSI; SI (ind < 0); ind = ltindex; FINSI; * Si le modele evolue au cours du calcul : SI ICHGMOD1 ; * enlever les contacts SI ICHGMAT1 ; SINON ; mati1 = matmec ; FINSI ; FINSI ; SI tempe ; FINSI ; FINSI ; * objet a tracer SI contr; ctr = tctr.ind; SINON; SI var_int; ctr = tvar.ind; FINSI; FINSI; * tracer SI (defor ET (NON contr) ET (NON react) et (non tempe)); TITRE 'deforme au temps ' MATAB . 'TEMPS' . ind; TRAC lemail dpl; FINSI; SI ((NON defor) ET contr ET (NON react)); TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind; TRAC ctr modmec matmec ; FINSI; SI (defor ET contr ET (NON react)); TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind; TRAC ctr modmec matmec dpl; FINSI; SI ((NON defor) ET (NON contr) ET react); TITRE 'reactions au temps ' MATAB . 'TEMPS' . ind; TRAC lemail vec; FINSI; SI (defor ET (NON contr) ET react); TITRE 'deforme au temps ' MATAB . 'TEMPS' . ind; TRAC dpv lemail; FINSI; SI ((NON defor) ET contr ET react); TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind; TRAC ctr modmec matmec lemail vec; FINSI; SI (defor ET contr ET react); TITRE 'contraintes au temps ' MATAB . 'TEMPS' . ind; TRAC ctr modmec matmec dpv ; FINSI; SI ((NON defor) et tempe) ; tctemp=tctem.ind; TITRE ' Temperatures au temps ' MATAB . 'TEMPS' . ind; TRAC tctemp maithe ; FINSI; SI (defor et tempe) ; tctemp=tctem.ind; TITRE ' Temperatures au temps ' MATAB . 'TEMPS' . ind; TRAC tctemp dpl ; FINSI; SI (NON FLCHOI); ind = ind + 1; SI (ind > ltindex); QUITTER bouc1; FINSI; FINSI; FIN bouc1; * boucle second niveau sur les pas de temps ...... FINSI; * FIN DISTINCTION CHOIX = EVOLU / AUTRE QUE EVOLU FIN bouc2; * FIN BOUCLE PRINCIPALE ------------------------------------------------ FINPROC ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales