Télécharger kam1m2.eso

Retour à la liste

Numérotation des lignes :

kam1m2
  1. C KAM1M2 SOURCE CB215821 19/03/20 21:15:08 10165
  2. SUBROUTINE KAM1M2(R1,Z1,R2,Z2,RA,ZA,RB,ZB,R,Z,KM,KA)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C----------------------------------------------------------------------
  6. C SP appele par KAINTE
  7. C calcul du point d intersection du segment obstructeur AB
  8. C (RA,ZA) (RB,ZB)
  9. C et du segment M1M2 (R1,Z1) (R2,Z2)
  10. C resultat:
  11. C R Z coordonnees du point
  12. C KM=1 si le point appartient au segment M1M2
  13. C si oui KA=1 si le point appartient au segment AB
  14. C----------------------------------------------------------------------
  15. C 11/2010: on augmente la précision du calcul insuffisante si dr/r tres faible
  16. C
  17.  
  18. C Pour avoir XZPREC et XPETIT
  19. -INC CCREEL
  20. EMIN1=-XZPREC
  21. KM = 0
  22. KA = 0
  23.  
  24. C CB215821 initialisation sinon plantage !!!
  25. R=1.D0
  26. Z=1.D0
  27.  
  28. U1=Z1-Z2
  29. U2=R2-R1
  30. V1=ZA-ZB
  31. V2=RB-RA
  32.  
  33. U1V2=U1*V2
  34. U2V1=U2*V1
  35. PS=U1V2-U2V1
  36. XTEST=MAX(XZPREC*(MAX(ABS(U1V2),ABS(U2V1))),XPETIT)
  37. IF(ABS(PS).GT.XTEST) THEN
  38. R =(U1V2*R1-U2V1*RA+ U2*V2*(Z1-ZA) )/PS
  39. Z =(U1V2*ZA-U2V1*Z1- U1*V1*(R1-RA) )/PS
  40.  
  41. PS=(R-R1)*(R-R2)+(Z-Z1)*(Z-Z2)
  42. IF(PS.LT.EMIN1) THEN
  43. KM=1
  44. PA=(R-RA)*(R-RB)+(Z-ZA)*(Z-ZB)
  45. IF(PA.LT.EMIN1) KA=1
  46. ENDIF
  47. ENDIF
  48. END
  49.  
  50.  

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