Download @defa2dl.procedur

Back to the list

   1 : * @DEFA2DL  PROCEDUR  AM        95/05/02    21:15:22     1649           
   2 : DEBPROC @DEFA2DL LIG0*'MAILLAGE' PIN1*'POINT' TAI1*'FLOTTANT'
   3 :                  TYP1*'MOT'      DES1/'MOT'   LOG1/'LOGIQUE' ; 
   4 : * [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   5 : * J.Y. COGNARD & D. DUREISSEIX   L.M.T. STRUCTURES & CMAO    le 03-03-93
   6 : *
   7 : * Procedure pour construire une ligne d'appuis en 2D (utilise @DEFA2DP)
   8 : *     DEFinition d'APpuis en 2D pour une Ligne 
   9 : *
  10 : * on envoie
  11 : *         LIG0  MAILLAGE ligne support des appuis
  12 : *         PIN1  POINT    pour definir l'interieur du domaine
  13 : *         TAI1  FLOTTANT pour definir la taille 
  14 : *         TYP1  MOT      pour definir le type d'appui sur la ligne
  15 : *           'roul' : ligne d'appuis simples
  16 : *           'enca' : ligne d'encastrements
  17 : *           'mixt' : encastement du premier point plus
  18 : *                    ligne d'appuis simples 
  19 : *         DES1  /MOT     pour une verification
  20 : *           'trac' : pour le trace des appuis un par un
  21 : *         LOG1 /LOGIQUE  pour l'espacement des appuis
  22 : *           VRAI l'espacement mini est 2.*TAI1
  23 : *           FAUX un appui tous les points de LIG0
  24 : * on recupere
  25 : *         MAI1   MAILLAGE definissant la ligne d'appui
  26 : * ======================================================================
  27 : *
  28 : * verification du type d'element
  29 : * """"""""""""""""""""""""""""""
  30 : LMO1 = LIG0 'ELEM' 'TYPE' ;  NBT1 = 'DIME' LMO1 ;
  31 : 'SI' ( 'NEG' ( 'DIME' LMO1 ) 1 ) ;
  32 :   'ERREUR' 'un seul type d element' ;
  33 : 'FINSI' ;
  34 : 'SI' ( 'EGA' 'SEG3' ( 'EXTR' LMO1 1 ) ) ;
  35 :    LIG1 = 'CHAN' 'SEG2' LIG0 ;
  36 : 'SINON' ;
  37 :    LIG1 = LIG0 ;
  38 : 'FINSI' ;
  39 : ** 'SI' ( 'NEG' 'POI1' ( 'EXTR' LMO1 1 ) ) ;
  40 : **   'ERREUR' 'mauvais type d elements, il faut des POI1' ;
  41 : ** 'FINSI' ;
  42 : *
  43 : * verification des options
  44 : * """"""""""""""""""""""""
  45 : LOK1 = FAUX ;
  46 : 'SI' ( 'OU' ( 'EGA' TYP1 'enca' ) ( 'EGA' TYP1 'roul' ) ) ;
  47 :    LOK1 = VRAI ;  MOT0 = TYP1 ;  MOT2 = TYP1 ; 
  48 : 'FINSI' ;
  49 : 'SI' ( 'EGA' TYP1 'mixt' ) ;
  50 :    LOK1 = VRAI ;  MOT0 = 'enca' ;  MOT2 = 'roul' ; 
  51 : 'FINSI' ;
  52 : 'SI' ( 'NON' LOK1 ) ;  'ERREUR' 'mauvaise option' ; 'FINSI' ;
  53 : *
  54 : 'SI' ( 'EXIS' LOG1 ) ;  LOG0 = LOG1 ;
  55 : 'SINON' ;               LOG0 = FAUX ;  'FINSI' ;
  56 : *
  57 : * pour les dessins intermediaires
  58 : LDS1 = FAUX ;
  59 : 'SI' ( 'EXIS' DES1 ) ; 
  60 :   'SI' ( 'EGA' DES1 'trac' ) ;  LDS1 = VRAI ;  'FINSI' ;
  61 : 'FINSI' ;
  62 : *
  63 : * initialisations (pour le trace a pas minimal)
  64 : * """""""""""""""
  65 : LTR1 = 'NON' LOG0 ;  DEB1 = VRAI ;
  66 : DPA1 = 2. * TAI1 ;  DIS1 = 2. * DPA1 ;  BAR1 = 'pour le point : ' ;  
  67 : *
  68 : * boucle sur les points
  69 : * """""""""""""""""""""
  70 : NPO1 = 'NBNO' LIG1 ;
  71 : *
  72 : 'SI' ( NPO1 'EGA' 1 ) ; 
  73 : *    un seul point 
  74 :    POI1 = LIG1 'POIN' 1 ;  VEC1 = PIN1 'MOINS' POI1 ;
  75 :    MAI1 = '@DEFA2DP' TAI1 POI1 VEC1 MOT1 ;
  76 : *
  77 : 'SINON' ;
  78 : *   pour une ligne de points
  79 : *   """"""""""""""""""""""""
  80 : *   premier segment
  81 :   IPO1 = 1 ;   POI1 = LIG1 'POIN' 1 ;  POI2 = POI1 ;  
  82 :  'REPE' BLO1 NPO1 ;
  83 : *     les trois points
  84 :      POI0 = POI1 ;  POI1 = POI2 ;
  85 :     'SI' ( IPO1 'NEG' NPO1 ) ; 
  86 :        IPO1 = IPO1 + 1 ;  POI2 = LIG1 'POIN' IPO1 ; 
  87 :     'FINSI' ;
  88 : *
  89 :     'SI' LOG0 ;
  90 : *       calcul de la distance pour le trace eventuel
  91 :       DIS1 = DIS1 + ( 'NORM' ( POI1 'MOINS' POI0 ) ) ;
  92 :       'SI' ( DIS1 > DPA1 ) ;  LTR1 = VRAI ;  DIS1 = 0. ;
  93 :       'SINON' ;               LTR1 = FAUX ;  'FINSI' ;
  94 :     'FINSI' ;
  95 : *
  96 : *     calcul de la normale si le trace est necessaire
  97 : *     """""""""""""""""""""""""""""""""""""""""""""""
  98 :     'SI' ( 'OU' LTR1 ( IPO1 'EGA' NPO1 ) ) ;
  99 : *       calcul de la normale
 100 :       TGT1 = POI2 'MOINS' POI0 ;  VEC0 = PIN1 'MOINS' POI1 ;
 101 :       'SI' ( TGT1 'EGA' (0. 0.) ) ;
 102 :         'ERREUR' ' point double' ;
 103 :       'FINSI' ;
 104 :       VEC1 = ( -1 * ( 'COOR' 2 TGT1 ) ) ( 'COOR' 1 TGT1 ) ;
 105 :       COE1 = ( ( 'COOR' 2 TGT1 ) * ( 'COOR' 1 VEC0 ) )
 106 :            - ( ( 'COOR' 1 TGT1 ) * ( 'COOR' 2 VEC0 ) ) ; 
 107 :       'SI' ( COE1 'EGA' 0.);
 108 :          'ERRE' 'interieur de la matiere mal defini';
 109 :       'FINSI' ;
 110 :       'SI' ( COE1 > 0. ) ;  VEC1 = -1. * VEC1 ;  'FINSI' ;
 111 :     'FINSI' ;
 112 : *
 113 :     'SI' LTR1 ;
 114 :       'SI' ( 'NON' DEB1 ) ;
 115 : *         definition de l'appui precedent
 116 :         'SI' ( IPS1 'EGA' 1 ) ;  
 117 :           MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT0 ;  MAT1 = MAI0 ;
 118 :         'SINON' ; 
 119 :            MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT2 ;
 120 :            MAT1 = MAT1 'ET' MAI0 ;
 121 :         'FINSI' ;
 122 :         'SI' LDS1 ; 'MESS' BAR1 IPS1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ;
 123 :         'FINSI' ;
 124 :       'FINSI' ;
 125 : *       sauvegarde pour le suivant
 126 :       IPS1 = IPO1 - 1 ;  POS1 = POI1 ;  VES1 = VEC1 ;  DEB1 = FAUX ;
 127 : *
 128 :     'FINSI' ;
 129 :   'FIN' BLO1 ; 
 130 : *   verification pour le dernier point (avant dernier, premier)
 131 : *   """"""""""""""""""""""""""""""""""
 132 :   'SI' ( IPS1 'EGA' 1 ) ;
 133 :     MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT0 ;  MAT1 = MAI0 ;
 134 :     'SI' LDS1 ; 'MESS' BAR1 IPS1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; 'FINSI' ;
 135 :   'SINON' ;
 136 :     'SI' LOG0  ; 
 137 :       'SI' ( DIS1 > ( 1.7 * TAI1 ) ) ; 
 138 :          MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT2 ;  MAT1 = MAT1 'ET' MAI0 ;
 139 :         'SI' LDS1 ; 'MESS' BAR1 IPS1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ;
 140 :         'FINSI' ;
 141 :       'FINSI' ;
 142 :     'FINSI' ; 
 143 :   'FINSI' ;
 144 : *    trace du dernier point
 145 :    MAI0 = @DEFA2DP TAI1 POI1 VEC1 MOT2 ;  MAT1 = MAT1 'ET' MAI0 ;
 146 :   'SI' LDS1 ; 'MESS' BAR1 IPO1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; 'FINSI' ;
 147 : *
 148 : 'FINSI' ;
 149 : *
 150 : 'FINPROC' MAT1 ;

© Cast3M 2003 - All rights reserved.
Disclaimer