Télécharger topoagre.procedur

Retour à la liste

Numérotation des lignes :

  1. * TOPOAGRE PROCEDUR FD218221 25/12/18 21:15:02 12429
  2.  
  3. ************************************************************************
  4. ** Procedure called by TOPOCONT to evaluate the aggregated constraint
  5. ** and its derivative.
  6. **
  7. ** Author:
  8. ** Guenhael Le Quilliec (LaMe - Polytech Tours)
  9. **
  10. ** Version:
  11. ** 1.0 2025/11/21 Initial version
  12. ************************************************************************
  13.  
  14. DEBP TOPOAGRE tab*'TABLE' fld*'MCHAML' mod*'MMODEL' ;
  15.  
  16. * General input data
  17. * ******************
  18.  
  19. Wtab = tab.'WTABLE' ;
  20.  
  21. * Values and parameters
  22. * *********************
  23.  
  24. * List of values to be aggregated
  25. lstval = EXTR fld 'VALE' 'SCAL' ;
  26.  
  27. * Name/type of the aggregation function
  28. aggtyp = Wtab.'AGREGATION' ;
  29. aggp = Wtab.'AGREGATION_P' ;
  30.  
  31. * Aggregation and its derivative
  32. * ******************************
  33.  
  34. * TODO utiliser l'operateur AGRE
  35. * il faudrait qu'il retourne lui meme la liste des derivees !
  36. *agg dagg = AGRE aggtyp lstval aggp ;
  37.  
  38. * Lower bound KS-function (KSl)
  39. SI (EGA aggtyp 'KSL') ;
  40. tmp1 = (EXP (lstval * aggp)) ;
  41. tmp2 = SOMM tmp1 ;
  42. * Aggregation TODO à remplacer par la nouvelle fonction de Cast3M 2026
  43. agg = (1.0 / aggp) * (LOG ((1.0 / (DIME lstval)) * tmp2)) ;
  44. * Its derivative
  45. dagg = tmp1 / tmp2 ;
  46. FINS ;
  47.  
  48. * Upper bound KS-function (KSu)
  49. SI (EGA aggtyp 'KSU') ;
  50. tmp1 = (EXP (lstval * aggp)) ;
  51. tmp2 = SOMM tmp1 ;
  52. * Aggregation TODO à remplacer par la nouvelle fonction de Cast3M 2026
  53. agg = (1.0 / aggp) * (LOG tmp2) ;
  54. * Its derivative
  55. dagg = tmp1 / tmp2 ;
  56. FINS ;
  57.  
  58. * P-norm
  59. SI (EGA aggtyp 'PNOR') ;
  60. tmp = SOMM (lstval**aggp) ;
  61. * Aggregation TODO à remplacer par la nouvelle fonction de Cast3M 2026
  62. agg = tmp**(1.0 / aggp) ;
  63. * Its derivative
  64. dagg = (tmp**((1.0 / aggp) - 1.0)) * (lstval**(aggp - 1.0)) ;
  65. FINS ;
  66.  
  67. * P-mean
  68. SI (EGA aggtyp 'PMOY') ;
  69. tmp1 = 1.0 / (DIME lstval) ;
  70. tmp2 = SOMM (lstval**aggp) ;
  71. tmp3 = 1.0 / aggp ;
  72. * Aggregation TODO à remplacer par la nouvelle fonction de Cast3M 2026
  73. agg = (tmp1 * tmp2)**tmp3 ;
  74. * Its derivative
  75. dagg = (tmp1**tmp3) * (tmp2**(tmp3 - 1.0)) * (lstval**(aggp - 1.0)) ;
  76. FINS ;
  77.  
  78. * Derivative output field
  79. * ***********************
  80.  
  81. dagg = MANU 'CHML' mod 'REPA' 'SCAL' dagg 'TYPE' 'SCALAIRE' 'GRAVITE' ;
  82.  
  83. FINP agg dagg ;
  84.  
  85.  
  86.  

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