Télécharger devint.eso

Retour à la liste

Numérotation des lignes :

devint
  1. C DEVINT SOURCE BP208322 20/06/16 21:15:04 10627
  2. SUBROUTINE DEVINT(ICHATE,ICHAFO,KTNUM,KTRAV,REPRIS)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. *--------------------------------------------------------------------*
  6. * *
  7. * Operateur DYNE : algorithme de Fu - de Vogelaere *
  8. * ________________________________________________ *
  9. * *
  10. * Interpolation du chargement fourni en LISTREEL. *
  11. * Remplissage du segment de travail KTRAV. *
  12. * *
  13. * Parametres: *
  14. * *
  15. * e ICHATE pointeur sur un LISTREEL, abscisse *
  16. * e ICHAFO pointeur sur un LISTREEL, ordonnee *
  17. * e KTNUM segment contenant les parametres numeriques *
  18. * s KTRAV segment de travail *
  19. * e REPRIS logique indiquant si le calcul est en reprise *
  20. * *
  21. * Auteur, date de creation: *
  22. * *
  23. * Lionel VIVAN, le 17 avril 1990 *
  24. * *
  25. *--------------------------------------------------------------------*
  26. *
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC SMLREEL
  30. *
  31. SEGMENT,MTNUM
  32. REAL*8 XDT(NPC1),XTEMPS(NPC1)
  33. ENDSEGMENT
  34. SEGMENT,MTRAV
  35. REAL*8 FTCHG(NPC2)
  36. ENDSEGMENT
  37. LOGICAL REPRIS
  38.  
  39. * RECUP DES ARGUMENTS
  40. *
  41. MTNUM = KTNUM
  42. NPC1 = XDT(/1)
  43. PASTEM = XDT(1)
  44. PASTS2 = PASTEM * 0.5D0
  45. MLREE1 = ICHATE
  46. SEGACT MLREE1
  47. NF = MLREE1.PROG(/1)
  48. MLREE2 = ICHAFO
  49. SEGACT MLREE2
  50.  
  51. * CREATION DE MTRAV
  52. *
  53. NPC2 = 2 * NPC1
  54. SEGINI MTRAV
  55. KTRAV = MTRAV
  56. *
  57. * INTERPOLATION DU CHARGEMENT
  58. *
  59. * initialisation des indices debut et fin de recherche
  60. N1 = 1
  61. N2 = 2
  62.  
  63. c c SI REPRISE, ON CHERCHE LES FORCES A TREPRISE-DT/2
  64. c IF ( REPRIS ) THEN
  65. c TEMP = XTEMPS(1)
  66. c TES2 = TEMP - PASTS2
  67. c write(*,*) 'devint: reprise => cherche F(t=',TES2,') --> FTCHG(1)'
  68. c CALL INTLIN(TES2,ICHATE,ICHAFO,NF,N1,N2, FTEM,IRET)
  69. c IF (IRET.EQ.0) THEN
  70. c * temps en dehors de la liste
  71. c CALL ERREUR(208)
  72. c RETURN
  73. c ENDIF
  74. c c SI 1er APPEL A DYNE, ON SUPPOSE LES FORCES a t<0 NULLES
  75. c ELSE
  76. c FTEM = 0.D0
  77. c ENDIF
  78. c IT2 = 1
  79. c FTCHG(IT2) = FTEM
  80. c c FTCHG(IT2) = 1./(FTEM-FTEM)
  81. c c write(*,*) 'devint: bidouille pour montrer l inutilite',FTCHG(IT2)
  82. c bp,2020 : ci-dessus me semble inutile car FTCHG(1) -> FEXA(*,1,2)
  83. c qui n'est pas utilise meme en reprise.
  84. c En effet, en cas de reprise, devini appelle dyne23 qui remplit
  85. c FTOTA a partir de la table de reprise.
  86. c En cas d'intialisation, devini utilise FTCHG(1)=0 !
  87. IT2 = 1
  88. FTCHG(IT2) = 0.D0
  89.  
  90. c BOUCLE SUR PAS DE TEMPS ET PAS DE TEMPS+DT/2
  91. NPC3 = NPC1 - 1
  92. DO 10 IT = 1,NPC3
  93. c interpolation a t_IT
  94. TEMP = XTEMPS(IT)
  95. CALL INTLIN(TEMP,ICHATE,ICHAFO,NF,N1,N2, FTEM,IRET)
  96. IF (IRET.EQ.0) THEN
  97. * temps en dehors de la liste
  98. CALL ERREUR(208)
  99. RETURN
  100. ENDIF
  101. IT2 = IT2 + 1
  102. FTCHG(IT2) = FTEM
  103. c interpolation a t_IT + dt/2
  104. TES2 = TEMP + PASTS2
  105. CALL INTLIN(TES2,ICHATE,ICHAFO,NF,N1,N2, FTEM,IRET)
  106. IF (IRET.EQ.0) THEN
  107. * temps en dehors de la liste
  108. CALL ERREUR(208)
  109. RETURN
  110. ENDIF
  111. IT2 = IT2 + 1
  112. FTCHG(IT2) = FTEM
  113. 10 CONTINUE
  114.  
  115. c DERNIER PAS DE TEMPS
  116. TEMP = XTEMPS(NPC1)
  117. IRET=-1
  118. CALL INTLIN(TEMP,ICHATE,ICHAFO,NF,N1,N2, FTEM,IRET)
  119. IF (IRET.EQ.0) THEN
  120. * temps en dehors de la liste
  121. CALL ERREUR(208)
  122. RETURN
  123. ENDIF
  124. IT2 = IT2 + 1
  125. FTCHG(IT2) = FTEM
  126. *
  127. SEGDES,MLREE1,MLREE2
  128. *
  129. END
  130.  
  131.  
  132.  

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