Télécharger adpas.eso

Retour à la liste

Numérotation des lignes :

adpas
  1. C ADPAS SOURCE FANDEUR 22/05/02 21:15:01 11359
  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. REAL*8 DNRM2, DDOT
  18. EXTERNAL DNRM2, DDOT
  19. *
  20. * WRITE(*,*) 'DSINI =',DS
  21.  
  22. *===== TEST SUR LE NOMBRE D'ITERATION ==================================
  23. COEFF = 2.0D0**((ITERMY-ITS)/2)
  24. * augmentation de +20% maxi entre 2 pas
  25. COEFF=MIN(COEFF,1.2D0)
  26. c COEFF1=COEFF
  27.  
  28. *===== TEST SUR L'ANGLE ================================================
  29. nt0 = DNRM2(N,t0,1)
  30. ntp = DNRM2(N,tp,1)
  31. psc0p = DDOT(N,tp,1,t0,1)
  32. nrmPS = psc0p/(nt0*ntp)
  33. * nrmPS = MIN(nrmPS,1.D0)
  34. ANGLE = ABS(ACOS(nrmPS))*180.D0/XPI
  35. IF (ANGLE.GT.ANGMAX) THEN
  36. c DS = DS/4.
  37. COEFF=0.25D0
  38. ENDIF
  39. IF (ANGLE.LT.ANGMIN) THEN
  40. c DS = DS*1.5
  41. COEFF=1.5D0
  42. cbp : pourquoi pas 1.2 ?
  43. ENDIF
  44.  
  45. *===== MISE A JOUR BORNEE ==============================================
  46. * mise a jour
  47. DS = DS*COEFF
  48. DS=MIN(DS,DSMAX)
  49. DS=MAX(DS,DSMIN)
  50. c WRITE(*,*) '>>> DS=',DS,COEFF,COEFF1,ANGLE,ANGMIN,ANGMAX
  51.  
  52. c RETURN
  53. END
  54.  
  55.  
  56.  

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