* EXPLORER PROCEDUR SP204843 25/04/04 21:15:01 12225 *======================================================================= * * PROCEDURE DONT LE BUT EST D'EXPLORER LES RESULTATS ISSUS DE : * - PASAPAS * - VIBR (ajout bp, 2016-02) * * SYNTAXE : ==> voir notice !!! * 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 * *----------------------------------------------------------------------* * Option 'ANIM' : IANIM1 = faux ; 'SI' FLMOT1 ; IANIM1 = 'EGA' MOT1 'ANIM' ; 'FINSI' ; *______________________________________________________________________* *----------------------------------------------------------------------* * Options par defaut et CHAR * *______________________________________________________________________* *----------------------------------------------------------------------* * L'option ANIM est traitee en 2 partie : 'SI' ('NON' IANIM1) ; * 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 ------------------------------------------------ *______________________________________________________________________* *----------------------------------------------------------------------* * Option ANIM * *______________________________________________________________________* *----------------------------------------------------------------------* 'SINON' ; * Lecture arguments option ANIM : * NB : on a deju lu la table d'option (si fournie) : * Indicateurs arguements optionnels : * Notation locale : tsim1 = MATAB ; *---------------------- Verification des entrees ----------------------* * Verification table PASAPAS : fins ; sino ; fins ; * Verification MOT2 : fins ; * Table des resultats a afficher : tres1 = tsim1 . mot2 ; * Verification mot3 : si FLCOMP1 ; fins ; fins ; *------------------------- Table des options --------------------------* * Table d'options : si FLOPT1 ; ***** Temps affiches : ltps1 = topt1 . temps_affiCHES ; sino ; fins ; ***** Echelle isovaleurs : liso1 = topt1 . echelle_isovaleurs ; sino ; fins ; ***** Oeil cgoeil1 = faux ; si ioeil1 ; * oeil0 = vale oeil ; oeil1 = topt1 . 'OEIL' ; opti oeil oeil1 ; sino ; si (non cgoeil1) ; fins ; fins ; fins ; ***** No Click si (topt1 . 'NCLK') ; sino ; fins ; sino ; fins ; ***** Boite : cgbox1 = faux ; si ibox1 ; mbox1 = boit1 ; sino ; si (non cgbox1) ; fins ; fins ; * mess '***** Option BOITE' ; fins ; ***** Avance rapide : iacc1 = topt1 . 'AVANCE_RAPIDE' ; sino ; iacc1 = faux ; fins ; si iacc1 ; * Critere avance rapide : evcrit1 = topt1 . 'CRITERE_AR' ; fins ; sino ; fins ; ctol1 = 1.e-10 * cmax1 ; * Saut avance : nsaut1 = topt1 . 'AMPLITUDE_AR' ; fins ; sino ; nsaut1 = 10 ; fins ; * mess (chai '***** Option AVANCE_RAPIDE : SAUT =' nsaut1) ; fins ; ***** Deformee : si idefo1 ; idefo1 = idefo1 et (topt1 . 'DEFORMEE') ; fins ; si idefo1 ; fins ; kdefo1 = topt1 . 'AMPLITUDE_DEFORMEE' ; sino ; kdefo1 = 1. ; fins ; fins ; ***** MPA : si iMPa1 ; iMPa1 = iMPa1 et (topt1 . 'MPA') et (ega mot2 'CONTRAINTES') ; fins ; ***** Celcius : si idegC1 ; idegC1 = idegC1 et (topt1 . 'CELSIUS') et (ega mot2 'TEMPERATURES') ; fins ; sino ; ltps1 = ltca1 ; ioeil1 = faux ; cgoeil1 = faux ; ibox1 = faux ; cgbox1 = faux ; iacc1 = faux ; idefo1 = faux ; iMPa1 = faux ; idegc1 = faux ; fins ; *-------------------------- Initialisations ---------------------------* * Indicateur si TEMPERATURES : itemper1 = ega mot2 'TEMPERATURES' ; * Indicateur resultat CHPOINT : * Modele evolutif ? si (non imodes1) ; modi1 = tsim1.modele ; si igeo1 ; si itemper1 ; sino ; fins ; modi1 = geoi1 ; fins ; fins ; *----------------------------- Affichages ------------------------------* * Boucle d'affichages ; ic1 = 1 ; repe b1 nb1 ; nacc1 = 1 ; si (tpsi1 < tpsmin1) ; iter b1 ; fins ; si (tpsi1 > tpsmax1) ; quit b1 ; fins ; * Gestion avance rapide : si iacc1 ; si ((abs criti1) <EG ctol1) ; repe bs1 (nsaut1 - 1) ; ic1 = ic1 + 1 ; nacc1 = nacc1 + 1 ; si (ic1 > nb1) ; quit b1 ; fins ; si ((abs criti1) > ctol1) ; quit bs1 ; fins ; fin bs1 ; fins ; fins ; * On peche le resultat : si FLCOMP1 ; fins ; si iMPa1 ; resi1 = 1.e-6 * resi1 ; fins ; si idegC1 ; resi1 = resi1 - 273.15 ; fins ; si imodes1 ; si igeo1 ; si itemper1 ; sino ; fins ; modi1 = geoi1 ; fins ; fins ; si cgoeil1 ; opti oeil oeili1 ; fins ; si idefo1 ; sino ; fins ; fins ; * Affichage (titre + appel a TRAC) : si idefo1 ; sino ; fins ; si (iacc1 et (nacc1 > 1)) ; sino ; fins ; titr moti1 ; si ibox1 ; si cgbox1 ; fins ; trac mclk1 liso1 resi1 modi1 boit mbox1 ; sino ; trac mclk1 liso1 resi1 modi1 ; fins ; si idefo1 ; form conf0 ; fins ; ic1 = ic1 + 1 ; si (ic1 > nb1) ; quit b1 ; fins ; fin b1 ; * Si option OEIL, on remet l'oeil initial : si ioeil1 ; * opti oeil oeil0 ; fins ; *-------------------------- Fin option ANIM ---------------------------* 'FINSI' ; *----------------------------------------------------------------------* * FIN EXPLORER * *----------------------------------------------------------------------* FINPROC ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales