Télécharger usimpl.procedur

Retour à la liste

Numérotation des lignes :

  1. * USIMPL PROCEDUR MB234859 24/02/06 21:15:04 11833
  2. ***********************************************************************
  3. * PROCEDURE USIMPL
  4. *
  5. * Procedure pour appliquer l'usure en utilisant un schema implicite :
  6. * - le facteur de saut de cycle est determine (USACCE)
  7. * - un increment d'usure relaxe est calcule
  8. * - Si le critere de convergence est satisfaisant :
  9. * - des post-traitements intermediaires sont realises (USPOST)
  10. * - les maillages sont actualises (USDEPL) et passage au cycle
  11. * suivant
  12. * - Sinon
  13. * - les maillages sont actualises (USDEPL) et le cycle est
  14. * recalcule
  15. *
  16. * Il s'agit du schema developpe par Q.Caradec lors de sa these.
  17. *
  18. * Entrees :
  19. * T1 : Table de PASAPAS
  20. *
  21. * Appelee par USURE
  22. *
  23. ************************************************************************
  24. 'DEBP' USIMPL T1*'TABLE' ;
  25. *
  26. 'MESS' ; 'MESS' '[Schema implicite] Cycle' ' 'CycActu;
  27. *
  28. LMSCAL = 'MOTS' 'SCAL' ;
  29. BOITE_US = T1.'BOITES_USURE' ;
  30. nNewton = BOITE_US.'INFOS'.'ITERATION_NEWTON';
  31. CycActu = BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL';
  32. NbCycRe = BOITE_US.'INFOS'.'NB_CYCLES_RESTANTS' ;
  33. *-----------------------------------------------------------------------
  34. * - FACTEUR D'ACCELERATION
  35. *-----------------------------------------------------------------------
  36. deltaN = USACCE T1 ;
  37. *-----------------------------------------------------------------------
  38. * - FACTEUR DE RELAXATION (APPLIQUE A L INCREMENT D'USURE)
  39. *-----------------------------------------------------------------------
  40. xcompt = BOITE_US.'INFOS'.'RELAX_COMPTEUR' ;
  41. xpower = BOITE_US.'INFOS'.'RELAX_EXPOSANT' ;
  42. 'SI' (xcompt '>' (2 '**' xpower));
  43. xpower = xpower '+' 1 ;
  44. BOITE_US.'INFOS'.'RELAX_COMPTEUR' = 1;
  45. BOITE_US.'INFOS'.'RELAX_EXPOSANT' = xpower ;
  46. 'SINON';
  47. BOITE_US.'INFOS'.'RELAX_COMPTEUR' = xcompt '+' 1;
  48. 'FINSI';
  49. xrelfa = 0.5 '**' xpower ;
  50. *-----------------------------------------------------------------------
  51. * - PROFIL D'USURE POUR LE CYCLE CALCULE ET CRITERE DE CONVERGENCE
  52. *-----------------------------------------------------------------------
  53. critConv = 0. ; crit0 = 0. ;
  54. 'REPE' BU BOITE_US.'INFOS'.'N_BOITES';
  55. *
  56. UsureIni = BOITE_US. &BU .'USURE_TOT'. (CycActu '-' 1) ;
  57. UsurePre = BOITE_US. &BU .'USURE_TOT_K'. nNewton ;
  58. VitUsure = BOITE_US. &BU .'VITESSE_USURE' ;
  59. *
  60. IncUsure = UsureIni '+' (deltaN '*' VitUsure) '-' UsurePre ;
  61. IncUsRel = xrelfa '*' IncUsure ;
  62. zcrit = 'PSCA' IncUsure IncUsure LMSCAL LMSCAL ;
  63. critConv = critConv '+' (('SOMT' zcrit) '**' 0.5) ;
  64. 'SI' (('EGA' CycActu 1) 'ET' ('EGA' nNewton 1)) ;
  65. critt = 'PSCA' VitUsure VitUsure LMSCAL LMSCAL ;
  66. crit0 = crit0 '+' (('SOMT' critt) ** 0.5);
  67. 'FINSI';
  68. *
  69. BOITE_US. &BU .'VIT_USURE_K'. nNewton = VitUsure ;
  70. BOITE_US. &BU .'INC_USURE_K'. nNewton = IncUsRel ;
  71. BOITE_US. &BU .'USURE_TOT_K'.(nNewton+1) = UsurePre '+' IncUsRel;
  72. 'FIN' BU;
  73. 'SI' (('EGA' CycActu 1) 'ET' ('EGA' nNewton 1)) ;
  74. BOITE_US.'INFOS'.'CRITERE_CONV' = crit0 ;
  75. 'FINSI';
  76. MSGZ = 'CHAI' ' Iteration' ' 'nNewton' Critere ='critConv;
  77. *-----------------------------------------------------------------------
  78. * - PROFIL D'USURE A APPLIQUER ET TEST DE CONVERGENCE
  79. *-----------------------------------------------------------------------
  80. 'SI' ((critConv '<' (0.001 '*' deltaN '*' BOITE_US.'INFOS'.'CRITERE_CONV'))
  81. 'OU' (nNewton '>' 40));
  82. *
  83. MSGZ = 'CHAI' MSGZ ' ==> Convergence';
  84. *
  85. BOITE_US.'INFOS'.'SCH_CONV' = VRAI ;
  86. BOITE_US.'INFOS'.'NB_CYCLES_RESTANTS' = NbCycRe '-' deltaN ;
  87. *
  88. critConvRef = 0. ;
  89. 'REPE' BU BOITE_US.'INFOS'.'N_BOITES';
  90. *
  91. UsureFin = BOITE_US. &BU .'USURE_TOT_K'. nNewton ;
  92. VitUsFin = BOITE_US. &BU .'VIT_USURE_K'. nNewton ;
  93. IncUsFin = deltaN '*' VitUsFin ;
  94. *
  95. zcritRef = 'PSCA' VitUsFin VitUsFin LMSCAL LMSCAL ;
  96. critConvRef = critConvRef '+' (('SOMT' zcritRef) '**' 0.5) ;
  97. *
  98. BOITE_US. &BU .'USURE_TOT'. CycActu = UsureFin ;
  99. BOITE_US. &BU .'INC_USURE'. CycActu = IncUsFin ;
  100. BOITE_US. &BU .'VIT_USURE_K' = 'TABLE';
  101. BOITE_US. &BU .'INC_USURE_K' = 'TABLE';
  102. BOITE_US. &BU .'USURE_TOT_K' = 'TABLE';
  103. BOITE_US. &BU .'USURE_TOT_K'. 1 = UsureFin '+' IncUsFin ;
  104. *
  105. * Post-traitement supplementaire
  106. USPOST T1 &BU;
  107. * Application du profil d'usure au maillage
  108. BOITE_US. &BU .'USURE_CYCLE' = IncUsFin ;
  109. USDEPL T1 &BU;
  110. *
  111. 'FIN' BU;
  112. BOITE_US.'INFOS'.'ITERATION_NEWTON' = 1;
  113. BOITE_US.'INFOS'.'CRITERE_CONV' = critConvRef;
  114. BOITE_US.'INFOS'.'RELAX_COMPTEUR' = 1;
  115. BOITE_US.'INFOS'.'RELAX_EXPOSANT' = 1;
  116. BOITE_US.'POST'.'NITER_CONV_NEWTON'. CycActu = nNewton;
  117. *
  118. 'SINON';
  119. *
  120. 'REPE' BU BOITE_US.'INFOS'.'N_BOITES';
  121. BOITE_US. &BU .'USURE_CYCLE' = BOITE_US. &BU .'INC_USURE_K'. nNewton;
  122. USDEPL T1 &BU;
  123. 'FIN' BU;
  124. BOITE_US.'INFOS'.'ITERATION_NEWTON' = nNewton '+' 1 ;
  125. 'FINSI';
  126. *-----------------------------------------------------------------------
  127. 'MESS' MSGZ ;
  128. *-----------------------------------------------------------------------
  129. 'FINP' ;
  130.  
  131.  

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