* @DEFA2DL PROCEDUR AM 95/05/02 21:15:22 1649 * [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] * J.Y. COGNARD & D. DUREISSEIX L.M.T. STRUCTURES & CMAO le 03-03-93 * * Procedure pour construire une ligne d'appuis en 2D (utilise @DEFA2DP) * DEFinition d'APpuis en 2D pour une Ligne * * on envoie * LIG0 MAILLAGE ligne support des appuis * PIN1 POINT pour definir l'interieur du domaine * TAI1 FLOTTANT pour definir la taille * TYP1 MOT pour definir le type d'appui sur la ligne * 'roul' : ligne d'appuis simples * 'enca' : ligne d'encastrements * 'mixt' : encastement du premier point plus * ligne d'appuis simples * DES1 /MOT pour une verification * 'trac' : pour le trace des appuis un par un * LOG1 /LOGIQUE pour l'espacement des appuis * VRAI l'espacement mini est 2.*TAI1 * FAUX un appui tous les points de LIG0 * on recupere * MAI1 MAILLAGE definissant la ligne d'appui * ====================================================================== * * verification du type d'element * """""""""""""""""""""""""""""" 'ERREUR' 'un seul type d element' ; 'FINSI' ; 'SINON' ; LIG1 = LIG0 ; 'FINSI' ; ** 'SI' ( 'NEG' 'POI1' ( 'EXTR' LMO1 1 ) ) ; ** 'ERREUR' 'mauvais type d elements, il faut des POI1' ; ** 'FINSI' ; * * verification des options * """""""""""""""""""""""" LOK1 = FAUX ; 'SI' ( 'OU' ( 'EGA' TYP1 'enca' ) ( 'EGA' TYP1 'roul' ) ) ; LOK1 = VRAI ; MOT0 = TYP1 ; MOT2 = TYP1 ; 'FINSI' ; 'SI' ( 'EGA' TYP1 'mixt' ) ; LOK1 = VRAI ; MOT0 = 'enca' ; MOT2 = 'roul' ; 'FINSI' ; 'SI' ( 'NON' LOK1 ) ; 'ERREUR' 'mauvaise option' ; 'FINSI' ; * 'SINON' ; LOG0 = FAUX ; 'FINSI' ; * * pour les dessins intermediaires LDS1 = FAUX ; 'FINSI' ; * * initialisations (pour le trace a pas minimal) * """"""""""""""" LTR1 = 'NON' LOG0 ; DEB1 = VRAI ; DPA1 = 2. * TAI1 ; DIS1 = 2. * DPA1 ; BAR1 = 'pour le point : ' ; * * boucle sur les points * """"""""""""""""""""" * 'SI' ( NPO1 'EGA' 1 ) ; * un seul point * 'SINON' ; * pour une ligne de points * """""""""""""""""""""""" * premier segment 'REPE' BLO1 NPO1 ; * les trois points POI0 = POI1 ; POI1 = POI2 ; 'SI' ( IPO1 'NEG' NPO1 ) ; 'FINSI' ; * 'SI' LOG0 ; * calcul de la distance pour le trace eventuel 'SI' ( DIS1 > DPA1 ) ; LTR1 = VRAI ; DIS1 = 0. ; 'SINON' ; LTR1 = FAUX ; 'FINSI' ; 'FINSI' ; * * calcul de la normale si le trace est necessaire * """"""""""""""""""""""""""""""""""""""""""""""" 'SI' ( 'OU' LTR1 ( IPO1 'EGA' NPO1 ) ) ; * calcul de la normale TGT1 = POI2 'MOINS' POI0 ; VEC0 = PIN1 'MOINS' POI1 ; 'SI' ( TGT1 'EGA' (0. 0.) ) ; 'ERREUR' ' point double' ; 'FINSI' ; 'SI' ( COE1 'EGA' 0.); 'ERRE' 'interieur de la matiere mal defini'; 'FINSI' ; 'SI' ( COE1 > 0. ) ; VEC1 = -1. * VEC1 ; 'FINSI' ; 'FINSI' ; * 'SI' LTR1 ; 'SI' ( 'NON' DEB1 ) ; * definition de l'appui precedent 'SI' ( IPS1 'EGA' 1 ) ; 'SINON' ; MAT1 = MAT1 'ET' MAI0 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * sauvegarde pour le suivant IPS1 = IPO1 - 1 ; POS1 = POI1 ; VES1 = VEC1 ; DEB1 = FAUX ; * 'FINSI' ; 'FIN' BLO1 ; * verification pour le dernier point (avant dernier, premier) * """""""""""""""""""""""""""""""""" 'SI' ( IPS1 'EGA' 1 ) ; 'SINON' ; 'SI' LOG0 ; 'SI' ( DIS1 > ( 1.7 * TAI1 ) ) ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * trace du dernier point * 'FINSI' ; * 'FINPROC' MAT1 ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales