Télécharger pacalc.eso

Retour à la liste

Numérotation des lignes :

pacalc
  1. C PACALC SOURCE OF166741 26/05/11 21:15:20 12546
  2. c Sous-Programme du module MISTRAL1
  3. C --------------------------------------------------------------------------
  4. SUBROUTINE PACALC (DXMI,DXMA,XMAX, II, DYMA,DYPRMA,
  5. & YP, DXA,YPA,NP, DX)
  6. C --------------------------------------------------------------------------
  7. C Determination du pas de calcul DX en fonction :
  8. C - du minimum et du maximum imposes : DXMI et DXMA,
  9. C - de l'intervalle maximal de X considere XMAX,
  10. C - des increments maximaux autorises DYMA(I) des Y(I),
  11. C - des increments relatifs maximaux autorises DYPRMA(I)
  12. C de leurs derivees YP(I),
  13. C - des valeurs de ces derivees YP(I) en X,
  14. C et eventuellement, si NP est superieur ou egal a 1 :
  15. C - des derivees YPA(I) au X precedent,
  16. C - du pas de calcul precedent DXA,
  17. C II etant le nombre de variables Y considerees pour determiner DX.
  18. C --------------------------------------------------------------------------
  19. IMPLICIT INTEGER(I-N)
  20. IMPLICIT REAL*8 (A-H, O-Z)
  21. -INC CCREEL
  22. DIMENSION DYMA(1:*),DYPRMA(1:*),YP(1:*),YPA(1:*)
  23. DX = DXMA
  24. IF (DXMI.GE.DXMA) RETURN
  25. IF (NP.EQ.0) THEN
  26. DO I = 1,II
  27. AYPI = ABS(YP(I))
  28. IF (AYPI*DX.GT.DYMA(I)) THEN
  29. DX = DYMA(I)/(AYPI+XPETIT)
  30. END IF
  31. END DO
  32. ELSE
  33. DO I = 1,II
  34. AYPI = ABS(YP(I))
  35. IF (AYPI*DX.GT.DYMA(I)) THEN
  36. AYSI = ABS((YP(I)-YPA(I))/DXA)
  37. DYPIMA = MAX(DYMA(I)/XMAX,AYPI*DYPRMA(I))
  38. IF (AYSI*DX.GT.DYPIMA) THEN
  39. DXYI = DYMA(I)/(AYPI+XPETIT)
  40. DXYPI = DYPIMA/(AYSI+XPETIT)
  41. DX = MAX(DXYI,DXYPI)
  42. END IF
  43. END IF
  44. END DO
  45. END IF
  46. DX = MAX(DX,DXMI)
  47.  
  48. RETURN
  49. END
  50.  
  51.  
  52.  

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