Télécharger topocrit.procedur

Retour à la liste

Numérotation des lignes :

  1. * TOPOCRIT PROCEDUR CB215821 18/01/29 21:15:10 9715
  2. ************************************************************************
  3. ** Procedure called by TOPOPTIM for updating the topology using the
  4. ** Optimality Criterion method
  5. **
  6. ** Author:
  7. ** Guenhael Le Quilliec (LaMe - Polytech Tours)
  8. **
  9. ** Version:
  10. ** 2.0 2017/11/11
  11. ************************************************************************
  12.  
  13. DEBP TOPOCRIT tab0*'TABLE' ;
  14. * Input data
  15. un1 = tab0.'WTABLE'.'UN'.(1) ;
  16. d0 = tab0.'WTABLE'.'FACTEUR_D' ;
  17. move0 = un1 * tab0.'TOPOLOGIE_MAX_INC' ;
  18. void0 = tab0.'TOPOLOGIE_MIN' ;
  19. xOld0 = tab0.'WTABLE'.'TOPOLOGIE' ;
  20. xOldP0 = xOld0 + move0 ;
  21. xOldM0 = xOld0 - move0 ;
  22. dc0 = tab0.'WTABLE'.'SENSIBILITE' ;
  23. q0 = tab0.'WTABLE'.'FACTEUR_Q' ;
  24. mcn0 = EXIS tab0 'MECANISME' ;
  25. mecha0 = EXIS tab0.'WTABLE' 'MECANIQUE' ;
  26. SI mecha0 ;
  27. mod1 = tab0.'WTABLE'.'MECANIQUE'.'MODELE'.(1) ;
  28. mat1 = tab0.'WTABLE'.'MECANIQUE'.'CARACTERISTIQUES'.(1) ;
  29. SINO ;
  30. mod1 = tab0.'WTABLE'.'THERMIQUE'.'MODELE'.(1) ;
  31. mat1 = tab0.'WTABLE'.'THERMIQUE'.'CARACTERISTIQUES'.(1) ;
  32. FINS ;
  33. v1 = tab0.'WTABLE'.'VOLUME'.(1) * tab0.'FRACTION_VOLUME' ;
  34. l1 = tab0.'OC_L1' ;
  35. l2 = tab0.'OC_L2' ;
  36. l2min = tab0.'OC_L2_MIN' ;
  37. crit0 = tab0.'OC_CRITERE' ;
  38. maxit0 = tab0.'OC_MAX_IT' ;
  39. SI mcn0 ;
  40. bmin0 = tab0.'OC_B_MIN' ;
  41. FINS ;
  42. * x0 = tab0.'WTABLE'.'UN'.(1) * 0.0 ;
  43. * Update the topology
  44. REPE loop1 maxit0 ;
  45. SI ((((l2 - l1) / (l1 + l2)) > crit0) ET (l2 > l2min)) ;
  46. lmid0 = 0.5 * (l2 + l1) ;
  47. tmp1 = dc0 * (-1.0 / lmid0) ;
  48. SI mcn0 ;
  49. tmp1 = BORN tmp1 'SCAL' 'MINI' bmin0 ;
  50. FINS ;
  51. tmp1 = xOld0 * (tmp1**d0) ;
  52. SI (q0 > 1) ;
  53. tmp1 = tmp1**q0 ;
  54. FINS ;
  55. ma1 = tmp1 MASQ 'INFE' xOldP0 ;
  56. tmp1 = (tmp1 * ma1) - (xOldP0 * (ma1 - un1)) ;
  57. tmp1 = BORN tmp1 'SCAL' 'MAXI' 1.0 ;
  58. ma1 = tmp1 MASQ 'SUPE' xOldM0 ;
  59. tmp1 = (tmp1 * ma1) - (xOldM0 * (ma1 - un1)) ;
  60. x0 = BORN tmp1 'SCAL' 'MINI' void0 ;
  61. tmp1 = INTG x0 mod1 mat1 ;
  62. SI (tmp1 > v1) ;
  63. l1 = lmid0 ;
  64. SINO ;
  65. l2 = lmid0 ;
  66. FINS ;
  67. SINO ;
  68. QUIT loop1 ;
  69. FINS ;
  70. FIN loop1 ;
  71. * Save the new topology
  72. tab0.'WTABLE'.'TOPOLOGIE' = x0 ;
  73. FINP ;
  74.  
  75.  
  76.  

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