$$$$ @DEFA2DL * @DEFA2DL PROCEDUR AM 95/05/02 21:15:22 1649 DEBPROC @DEFA2DL LIG0*'MAILLAGE' PIN1*'POINT' TAI1*'FLOTTANT' TYP1*'MOT' DES1/'MOT' LOG1/'LOGIQUE' ; * [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] * 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 * """""""""""""""""""""""""""""" LMO1 = LIG0 'ELEM' 'TYPE' ; NBT1 = 'DIME' LMO1 ; 'SI' ( 'NEG' ( 'DIME' LMO1 ) 1 ) ; 'ERREUR' 'un seul type d element' ; 'FINSI' ; 'SI' ( 'EGA' 'SEG3' ( 'EXTR' LMO1 1 ) ) ; LIG1 = 'CHAN' 'SEG2' LIG0 ; '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' ; * 'SI' ( 'EXIS' LOG1 ) ; LOG0 = LOG1 ; 'SINON' ; LOG0 = FAUX ; 'FINSI' ; * * pour les dessins intermediaires LDS1 = FAUX ; 'SI' ( 'EXIS' DES1 ) ; 'SI' ( 'EGA' DES1 'trac' ) ; LDS1 = VRAI ; 'FINSI' ; '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 * """"""""""""""""""""" NPO1 = 'NBNO' LIG1 ; * 'SI' ( NPO1 'EGA' 1 ) ; * un seul point POI1 = LIG1 'POIN' 1 ; VEC1 = PIN1 'MOINS' POI1 ; MAI1 = '@DEFA2DP' TAI1 POI1 VEC1 MOT1 ; * 'SINON' ; * pour une ligne de points * """""""""""""""""""""""" * premier segment IPO1 = 1 ; POI1 = LIG1 'POIN' 1 ; POI2 = POI1 ; 'REPE' BLO1 NPO1 ; * les trois points POI0 = POI1 ; POI1 = POI2 ; 'SI' ( IPO1 'NEG' NPO1 ) ; IPO1 = IPO1 + 1 ; POI2 = LIG1 'POIN' IPO1 ; 'FINSI' ; * 'SI' LOG0 ; * calcul de la distance pour le trace eventuel DIS1 = DIS1 + ( 'NORM' ( POI1 'MOINS' POI0 ) ) ; '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' ; VEC1 = ( -1 * ( 'COOR' 2 TGT1 ) ) ( 'COOR' 1 TGT1 ) ; COE1 = ( ( 'COOR' 2 TGT1 ) * ( 'COOR' 1 VEC0 ) ) - ( ( 'COOR' 1 TGT1 ) * ( 'COOR' 2 VEC0 ) ) ; '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 ) ; MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT0 ; MAT1 = MAI0 ; 'SINON' ; MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT2 ; MAT1 = MAT1 'ET' MAI0 ; 'FINSI' ; 'SI' LDS1 ; 'MESS' BAR1 IPS1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; '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 ) ; MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT0 ; MAT1 = MAI0 ; 'SI' LDS1 ; 'MESS' BAR1 IPS1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; 'FINSI' ; 'SINON' ; 'SI' LOG0 ; 'SI' ( DIS1 > ( 1.7 * TAI1 ) ) ; MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT2 ; MAT1 = MAT1 'ET' MAI0 ; 'SI' LDS1 ; 'MESS' BAR1 IPS1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * trace du dernier point MAI0 = @DEFA2DP TAI1 POI1 VEC1 MOT2 ; MAT1 = MAT1 'ET' MAI0 ; 'SI' LDS1 ; 'MESS' BAR1 IPO1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; 'FINSI' ; * 'FINSI' ; * 'FINPROC' MAT1 ;