Télécharger adpas.eso

Retour à la liste

Numérotation des lignes :

  1. C ADPAS SOURCE BP208322 20/09/18 21:15:01 10718
  2.  
  3. SUBROUTINE ADPAS(DS,DSMIN,DSMAX,ITS,ITERMY,ANGMIN,ANGMAX,N,t0,tp)
  4. *
  5. *=======================================================================
  6. * Adaptation automatique de la longueur du pas tangent
  7. *=======================================================================
  8. *
  9. IMPLICIT INTEGER(I-N)
  10. IMPLICIT REAL*8(A-H,O-Z)
  11. REAL*8 DS,DSMIN,DSMAX,ITERMY,ANGMIN,ANGMAX,t0(N),tp(N)
  12. REAL*8 COEFF,ANGLE,nt0,ntp,psc0p,nrmPS
  13. INTEGER ITS,N
  14. REAL*8 XPI
  15. PARAMETER(XPI=3.141592653589793D0)
  16. *
  17. * WRITE(*,*) 'DSINI =',DS
  18.  
  19. *===== TEST SUR LE NOMBRE D'ITERATION ==================================
  20. COEFF = 2.0D0**((ITERMY-ITS)/2)
  21. * augmentation de +20% maxi entre 2 pas
  22. COEFF=MIN(COEFF,1.2D0)
  23. c COEFF1=COEFF
  24.  
  25. *===== TEST SUR L'ANGLE ================================================
  26. nt0 = dnrm2(N,t0,1)
  27. ntp = dnrm2(N,tp,1)
  28. psc0p = DDOT(N,tp,1,t0,1)
  29. nrmPS = psc0p/(nt0*ntp)
  30. * IF (nrmPS.GT.1.) THEN
  31. * nrmPS = 1.
  32. * ENDIF
  33. ANGLE = ABS(ACOS(nrmPS))*180.D0/XPI
  34. IF (ANGLE.GT.ANGMAX) THEN
  35. c DS = DS/4.
  36. COEFF=0.25D0
  37. ENDIF
  38. IF (ANGLE.LT.ANGMIN) THEN
  39. c DS = DS*1.5
  40. COEFF=1.5D0
  41. cbp : pourquoi pas 1.2 ?
  42. ENDIF
  43.  
  44. *===== MISE A JOUR BORNEE ==============================================
  45. * mise a jour
  46. DS = DS*COEFF
  47. c IF (DS.GT.DSMAX) THEN
  48. c DS = DSMAX
  49. c ENDIF
  50. DS=MIN(DS,DSMAX)
  51. c IF (DS.LT.DSMIN) THEN
  52. c DS = DSMIN
  53. c ENDIF
  54. DS=MAX(DS,DSMIN)
  55. c WRITE(*,*) '>>> DS=',DS,COEFF,COEFF1,ANGLE,ANGMIN,ANGMAX
  56.  
  57.  
  58. END
  59.  
  60.  
  61.  
  62.  

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