Télécharger @defa2dl.procedur

Retour à la liste

Numérotation des lignes :

  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 ;
  151.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales