Télécharger pas_resu.procedur

Retour à la liste

Numérotation des lignes :

  1. * PAS_RESU PROCEDUR MB234859 24/09/11 21:15:04 12008
  2. 'DEBP' PAS_RESU IAUTO*'ENTIER' PRECED*'TABLE' ;
  3.  
  4. WTAB = PRECED.'WTABLE';
  5. *
  6. * Recuperation de la table 'ESTIMATION' des champs en fin de pas :
  7. estim = PRECED.'ESTIMATION' ;
  8. TEMP0 = estim.'TEMPS' ;
  9. *
  10. * Remplissage de la table de 'CONTINUATION' a partir de 'ESTIMATION'
  11. conti= PRECED.'CONTINUATION';
  12. *
  13. * Transfert des indices de la table "estim" dans "conti"
  14. DIM1 = 'DIME' estim ;
  15. INDEX1 = 'INDE' estim ;
  16.  
  17. 'REPE' SURi DIM1 ;
  18. ii = &SURi;
  19. TYP1 ='TYPE' INDEX1.ii;
  20. 'SI' ('NEG' TYP1 'MOT');
  21. MOT_tmp = INDEX1.ii ;
  22. 'SINO';
  23. MOT_tmp ='MOT' INDEX1.ii;
  24. 'FINS';
  25. conti.MOT_tmp = estim.MOT_tmp ;
  26. 'FIN' SURi;
  27.  
  28. ************************************************************************
  29. *************** Sauvegarde eventuelle des resultats ********************
  30. ************************************************************************
  31. *La sauvegarde n'est faite que si on a eu convergence des calculs :
  32. ISAUV = FAUX;
  33. 'SI' WTAB.'CONV' ;
  34. ISAUV ='DANS' WTAB.'IPRESU' TEMP0 ;
  35.  
  36. 'SI' ('MULT' IAUTO WTAB.'NAURES' ) ;
  37. ISAUV = VRAI ;
  38. 'FINSI' ;
  39. 'FINSI' ;
  40.  
  41. 'SI' ISAUV ;
  42. NSOR = WTAB.'NSOR' + 1 ;
  43. WTAB.'NSOR' = NSOR ;
  44.  
  45. * Cas particuliers de 'DEFIN' et 'DEFTO'
  46. TABSAUV = WTAB.'TABSAUV' ;
  47. 'SI' ('NON' TABSAUV.'DEFTO');
  48. 'SI' ('EXIS' estim 'DEFORMATIONS');
  49. estim ='ENLE' estim 'DEFORMATIONS';
  50. 'FINS';
  51. 'FINSI' ;
  52.  
  53. 'SI' ('NON' TABSAUV.'DEFIN') ;
  54. 'SI' ('EXIS' estim 'DEFORMATIONS_INELASTIQUES');
  55. estim ='ENLE' estim 'DEFORMATIONS_INELASTIQUES';
  56. 'FINS';
  57. 'FINSI' ;
  58.  
  59. 'SI' ('NON' TABSAUV.'DEFAP') ;
  60. 'SI' ('EXIS' estim 'DEFORMATIONS_APPORT');
  61. estim ='ENLE' estim 'DEFORMATIONS_APPORT';
  62. 'FINS';
  63. 'FINSI' ;
  64.  
  65. 'SI' ('EXIS' estim 'VITESSES_FLUIDE_0') ;
  66. estim ='ENLE' estim 'VITESSES_FLUIDE_0';
  67. 'FINSI' ;
  68.  
  69. * Transfert des indices de la table "estim" dans PRECED
  70. DIM1 ='DIME' estim;
  71. INDEX1='INDE' estim;
  72.  
  73. 'REPE' SURi DIM1 ;
  74. ii = &SURi;
  75. TYP1 ='TYPE' INDEX1.ii;
  76. 'SI' ('NEG' TYP1 'MOT');
  77. MOT_tmp = INDEX1.ii ;
  78. OBJi = estim.MOT_tmp ;
  79.  
  80. 'SINO';
  81. MOT_tmp ='MOT' INDEX1.ii;
  82. OBJi = estim.MOT_tmp ;
  83. 'SI' ('EGA' TYP1 'TABL');
  84. 'SI' ('EXIS' estim.MOT_tmp 'SOUSTYPE');
  85. 'SI' ('EGA' estim.MOT_tmp.'SOUSTYPE' 'ESCLAVE');
  86. ERRE 21;
  87. OBJi ='ETG' estim.MOT_tmp ;
  88. 'FINS';
  89. 'FINS';
  90. 'FINS';
  91. 'FINS';
  92. 'SI'('NON' ('EXIS' PRECED MOT_tmp));
  93. PRECED.MOT_tmp ='TABL' ;
  94. 'FINS';
  95. *
  96. * Sauvegarder les contraintes/deformations sur la conf. courante
  97. 'SI' (('EGA' MOT_tmp 'CONTRAINTES') 'OU' ('EGA' MOT_tmp 'DEFORMATIONS')) ;
  98. chmz = estim.MOT_tmp ;
  99. 'SI' WTAB.'GRANDS_DEPLACEMENTS' ;
  100. 'FORM' WTAB.'GE0_DEB' ;
  101. zdep = -1. '*' estim.'DEPLACEMENTS' ;
  102. chmz = 'CAPI' WTAB.'HYPOTHESE_DEFORMATIONS' chmz WTAB.'MO_TOT' zdep ;
  103. 'FORM' WTAB.'FOR0' ;
  104. 'FINSI' ;
  105. PRECED.MOT_tmp. NSOR = chmz ;
  106. 'SINON' ;
  107. PRECED.MOT_tmp.NSOR = estim.MOT_tmp ;
  108. 'FINSI' ;
  109. *
  110. 'FIN' SURi;
  111.  
  112. *-----------------------------------------------------------------------
  113. *--- 1- Sauvegarde incrementale sous certaines conditions
  114. *--- 2- Fantomisation (option 'ECONOMIQUE'=VRAI de PASAPAS) pour liberer la memoire
  115. *-----------------------------------------------------------------------
  116. 'SI' WTAB.'ISAUVEGL';
  117. ltpssauv = WTAB.'ISAUVEGA' ;
  118. 'SI' ('DANS' ltpssauv TEMP0) ;
  119. EPOQ1 ='DATE' 'EPOCH' ;
  120. * Sauvegarde : Dernier pas OU toutes les 300 secondes OU si DATE ne marche pas
  121. * Fantomisation si on sauvegarde effectivement !
  122. 'SI' ( ('EGA' TEMP0 ('EXTR' ltpssauv ('DIME' ltpssauv)))
  123. 'OU' ((EPOQ1 '-' WTAB.'EPOQUE') '>EG' 300.D0)
  124. 'OU' (EPOQ1 'EGA' 0)) ;
  125.  
  126. 'SAUV' 'MUET' PRECED ;
  127. WTAB.'EPOQUE' =EPOQ1 ;
  128.  
  129. 'SI' WTAB.'LECONOMI';
  130. NFFSOR = NSOR '-' WTAB.'NFSOR' '-' 1 ;
  131. 'SI' ( NFFSOR '>' 0) ;
  132.  
  133. * Boucle sur les instants SAUVES depuis la derniere fantomisation
  134. 'REPE' DETRES NFFSOR ;
  135. NSORM2 = WTAB.'NFSOR' - 1 + &DETRES ;
  136. 'SI' (NSORM2 '<' 0) ;
  137. 'ITER' DETRES ;
  138. 'FINSI' ;
  139.  
  140. * Boucle sur les indices a fantomiser
  141. 'REPE' SURi DIM1 ;
  142. ii = &SURi;
  143. TYP1 ='TYPE' INDEX1.ii;
  144. 'SI' ('NEG' TYP1 'MOT');
  145. MOT_tmp = INDEX1.ii ;
  146. 'SINO';
  147. MOT_tmp ='MOT' INDEX1.ii;
  148. 'FINS';
  149. 'FANTOM' PRECED.MOT_tmp NSORM2 ;
  150. 'FIN' SURi;
  151. 'FIN' DETRES ;
  152. WTAB.'NFSOR'= WTAB.'NFSOR' + NFFSOR ;
  153. 'FINSI' ;
  154. 'FINS' ;
  155. 'FINSI';
  156. 'FINSI';
  157. 'FINSI';
  158. 'FINSI' ;
  159. 'FINP' ISAUV ;
  160.  
  161.  
  162.  
  163.  

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