Télécharger dvinve.eso

Retour à la liste

Numérotation des lignes :

dvinve
  1. C DVINVE SOURCE CB215821 26/08/24 21:16:19 12622
  2. subroutine dvinve(md,tens,v,x,inv)
  3. c
  4. c *********
  5. c inversion
  6. c *********
  7. c
  8. implicit real*8(a-h,o-z)
  9. implicit integer (i-n)
  10. real*8 v(5),x(5),tens(5,5)
  11. 1000 continue
  12. do 1600 iy=1,md-1
  13. 1005 continue
  14. if(tens(iy,iy).eq.0.) go to 1030
  15. do 1020 iz=iy+1,md
  16. do 1010 iw=iy+1,md
  17. tens(iz,iw)=tens(iz,iw)-tens(iz,iy)*tens(iy,iw)/tens(iy,iy)
  18. 1010 CONTINUE
  19. v(iz)=v(iz) - tens(iz,iy)*v(iy)/tens(iy,iy)
  20. 1020 CONTINUE
  21. go to 1600
  22. 1030 continue
  23. indic3=0
  24. if(iy.eq.md) go to 1600
  25. do 1500 iz=iy+1,md
  26. if(tens(iz,iy).eq.0.) go to 1500
  27. if(indic3.eq.1) go to 1500
  28. do 1040 iw=iy,md
  29. vx=tens(iy,iw)
  30. tens(iy,iw)=tens(iz,iw)
  31. tens(iz,iw)=vx
  32. 1040 continue
  33. vx=v(iy)
  34. v(iy)=v(iz)
  35. v(iz)=vx
  36. indic3=1
  37. 1500 continue
  38. if(indic3.eq.1) go to 1005
  39. 1600 continue
  40. inv=1
  41. do 1610 iy=1,md
  42. if(tens(iy,iy).eq.0.) inv=0
  43. 1610 CONTINUE
  44. if(inv.eq.0) go to 2000
  45. do 2001 iy=md,2,-1
  46. do 1620 iw=iy-1,1,-1
  47. v(iw)=v(iw)-tens(iw,iy)*v(iy)/tens(iy,iy)
  48. 1620 CONTINUE
  49. 2001 CONTINUE
  50. do 1650 iy=1,md
  51. ih=iy
  52. x(ih)=v(ih)/tens(ih,ih)
  53. 1650 continue
  54. return
  55. 2000 end
  56.  
  57.  
  58.  
  59.  

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