* WAAM PROCEDUR PASCAL 22/04/21 21:15:08 11352 *-------------------------- Initialisations ---------------------------* * Lecture des options : * icas1 = 1 / 2 pour MAIL / VISU * Si 0 in fine : erreur. icas1 = 0 ; *----------------------------------------------------------------------* * Option MAIL *----------------------------------------------------------------------* si (ega mot1 'MAIL') ; icas1 = 1 ; *----------------- Lecture des arguments de l'option ------------------* imot1 = faux ; imot2 = faux ; imot3 = faux ; imot4 = faux ; repe b1 4 ; * Arguments option MAIL : si (ega moti1 'PAS') ; imot1 = vrai ; si (npas1 ega 0) ; fins ; sino ; npas1 = 1 ; fins ; fins ; si (ega moti1 'LARG') ; imot2 = vrai ; fins ; imot3 = vrai ; fins ; * Arguments option TEMP : imot4 = vrai ; dtca1 = -1. ; fins ; * argu dtca2/'FLOTTANT' ; * si (non (exis dtca2)) ; * dtca2 = -1. ; * fins ; fins ; fin b1 ; si (non imot1) ; fins ; si (non imot2) ; larg1 = tab1.largeur_de_passe ; sino ; fins ; fins ; si (non imot3) ; sino ; N1 = 1 ; fins ; dens1 = pas1 / (flot N1) ; fins ; *------------------- MAILLAGE des passes de soudage -------------------* fins ; * Definition d'une tolerance geometrique : tol1 = 1.e-4 * dens1 ; * Maillage d'une section de cordon : * Initialisattion sorties (MAIL) : tab2 = table ; ttps1 = table ; tmai1 = table ; indi1 = 0 ; * On parcourt la trajectoire : mtraj1 = tab1.trajectoire ; idebui1 = vrai ; ibouci1 = faux ; * Boucle sur elements de la trajectoire : repe b1 nb1 ; * Lecture ieme element de la trajectoire : imaili1 = ega mcouli1 'ROUG' ; idepli1 = ega mcouli1 'VERT' ; * * Segment VERT : deplacement si idepli1 ; idebui1 = vrai ; ibouci1 = faux ; iter b1 ; fins ; * * Segment ROUGE : maillage si imaili1 ; * Si debut nouvelle passe : si idebui1 ; * Identification de la passe : npassi1 = 0 ; mailpss1 = (tab1.passes.&bp1).maillage ; si ((Pi1 ega pps1) et (Pi2 ega pps2)) ; tpassi1 = tab1.passes.&bp1 ; npassi1 = &bp1 ; quit bp1 ; fins ; fin bp1 ; si (npassi1 ega 0) ; fins ; * Hauteur de cordon : debi1 = tpassi1 . debit ; vite1 = tpassi1 . vitesse ; haut1 = debi1 / vite1 / larg1 ; * Maillage : * si1 : maillage section courante : * vnsi1 : normale a la section vnsi1 = 1 0 0 ; * Positionnement extremite initiale (Pi1 au centre de l'arete superieure) : Pmsup1 = 0 (0.5*larg1) haut1 ; * Initialisation section extremite finale : vnsi2 = vnsi1 ; angl2 = 0. ; * * Orientation sections de maillage : * Par defaut, selon vni1 : vnsmai1 = vni1 ; vnsmai2 = vnsmai1 ; * Detection suite segments rouges et boucle : si (&b1 neg nb1) ; isuiti1 = ega mcoulip1 'ROUG' ; si isuiti1 ; idebui1 = faux ; elfini1 = elip1 ; nb2 = nb1 - (&b1 + 1) ; i2 = &b1 + 2 ; * Rq : si nb2 = 0, le bloc n'est pas execute repe b2 nb2 ; si (neg mcoul2 'ROUG') ; quit b2 ; fins ; elfini1 = eli2 ; i2 = i2 + 1 ; fin b2 ; si ibouci1 ; * On definit la normale a la section de maillage (SMA) : fins ; fins ; fins ; * Orientation de si1 selon vnsmai1 : *list vnsmai1 ; list vnsi1 ; *trac (0 -0 3) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et pi1 et pi2) ; * Si sinus non nul a tol1 pres, on oriente la section : si (lvnnz1 neg 0. (tol1 / dens1)) ; angl1 = asin lvnnz1 ; angl1 = -1. * angl1 ; fins ; vnsi1 = vnsmai1 ; vnsi2 = vnsi1 ; angl2 = 0. ; fins ; *trac (0 -0 3) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et pi1 et pi2) ; * Si boucle, on garde la section de maillage du debut : si ibouci1 ; sfini1 = si1 ; vnfini1 = vnsmai1 ; fins ; sino ; * On a deja si1 correctement orientee. * On doit orienter si2. * Par defaut, orientation de si1 : vnsmai2 = vni1 ; * Si fin d'une boucle, orientation si2 connue : si (ibouci1 et (pi2 ega pfini1)) ; vnsmai2 = vnfini1 ; sino ; si (&b1 neg nb1) ; isuiti1 = ega mcoulip1 'ROUG' ; si isuiti1 ; fins ; fins ; fins ; * Fin "Si idebui1 / sinon" : fins ; * * Orientation de si2 selon vnsmai2 : *list vnsmai2 ; list vnsi2 ; *trac (0 0 100) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et pi1 et pi2) titr 'orientation si2' ; * Si sinus non nul a tol1 pres, on oriente la section : si (lvnnz1 neg 0. (tol1 / dens1)) ; angl2 = asin lvnnz1 ; angl2 = -1. * angl2 ; fins ; fins ; *trac (0 0 100) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et pi1 et pi2) ; *si (ibouci1 et (pi2 ega pfini1)) ; *trac (5 -2 3) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et (si22 coul oran) et pi1 et pi2) ; *fins ; *---- Maillage du segment : si (leli1 <EG llpas1) ; fins ; * Boucle sur les pas de discretisation : * pasi1 : pas de discretisation courant * nei1 : nb maillages pour ce pas de discretisation du segment * pami1 : pas de maillage courant * nei2 : nbel crees par pas de maillage repe bp1 npas1 ; si (&bp1 neg npas1) ; nei1 = 1 ; pami1 = pasi1 ; sino ; llmi1 = leli1 - llpas1 ; nei1 = llmi1 / pasi1 + 0.5 ; *mess 'nei1=' nei1 ; pami1 = llmi1 / (flot nei1) ; fins ; vtrani1 = pami1 * vni1 ; nei2 = enti (ltrani1 / dens1 + 0.5) ; *mess 'nei2=' nei2 ; itouri1 = (abs angl2) > 0. ; *list itouri1 ; *list angl2 ; angli2 = angl2 / (flot nei1) ; vnsi22 = vnsi1 ; si22 = si1 ; dti2 = ltrani1 / vite1 ; repe b2 nei1 ; si itouri1 ; sino ; fins ; si1 = si22 ; pi1 = pi22 ; mail2 = mail2 et maili2 ; tmai1 . indi1 = mail2 ; ttps1 . indi1 = tpsi2 ; tpsi2 = tpsi2 + dti2 ; indi1 = indi1 + 1 ; fin b2 ; fin bp1 ; *trac (5 -2 3) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et (si22 coul oran) et pi1 et pi2) ; vnsi1 = vnsi2 ; vnsmai1 = vnsmai2 ; * Fin si imail1 (segment rouge) ; sino ; fins ; * Fin boucle segments trajectoire fin b1 ; * elim mail2 tol1 ; * Enregistrement des sorties : tab2.maillage = mail2 ; tab2.evolution_maillage = table ; tab2.evolution_maillage.temps = ttps1 ; tab2.evolution_maillage.maillage = tmai1 ; *-------------------------- Sous-option TEMP --------------------------* si imot4 ; * Valeurs par defaut dtca1 : si (dtca1 < 0.) ; dtca1 = pas1 / (tab1.vitesse_de_soudage) / pi / 3. ; fins ; * si (dtca2 < 0.) ; * dtca2 = dtca1 ; * fins ; * Redecoupage de la liste des temps de l'evolution de la puissance thermique : evqt1 = tab1.evolution_puissance ; repe b1 (nb1 - 1) ; ip1 = &b1 + 1 ; dt1 = t1 - t0 ; si (&b1 ega 1) ; dt0 = dt1 ; fins ; si (dt1 <EG dtca1) ; t0 = t1 ; q0 = q1 ; dt0 = dt1 ; iter b1 ; fins ; si ((q0 > tol2) ou (q1 > tol2)) ; sino ; * mess 'dt0 = ' dt0 ; * mess 'dtca1 = ' dtca1 ; * mess 'dtf1 = ' dtf1 ; fins ; t0 = t1 ; q0 = q1 ; fin b1 ; * Verification si liste temps calcules bien ordonnee : fins ; tab2.temps_calcules = ltca1 ; * Fin sous-option TEMP : fins ; resp tab2 ; * Fin option MAILLAGE : fins ; *----------------------------------------------------------------------* * Option VISU * *----------------------------------------------------------------------* si (ega mot1 'VISU') ; icas1 = 2 ; * * Lecture MOT CACH / FACE : sino ; fins ; * Lecture maillage complementaire a afficher : fins ; mail1 = tab1.maillage ; tmai1 = tab1.evolution_maillage.maillage ; i1 = 0 ; maili1 = tmai1.i1 ; maili1 = maili1 et mail2 ; def0 = def0 et defi1 ; i1 = i1 + 1 ; fin b2 ; trac cle1 anim def0 ; * Fin option VISU : fins ; *----------------------------------------------------------------------* * FIN * *----------------------------------------------------------------------* * * MOT1 n'est pas un des mots-cles des options de la procedure : si (icas1 ega 0) ; fins ; FINP ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales