Télécharger graco11.eso

Retour à la liste

Numérotation des lignes :

graco11
  1. C GRACO11 SOURCE PV090527 25/09/09 21:15:02 12359
  2. SUBROUTINE GRACO11( ICHOLX,ilicre, iappel)
  3. *
  4. * Conversion de la matrice assemblee en stockage creux ligne
  5. *
  6. IMPLICIT INTEGER(I-N)
  7. IMPLICIT REAL*8(A-H,O-Z)
  8.  
  9. -INC PPARAM
  10. -INC CCOPTIO
  11. -INC SMMATRI
  12. -INC SMRIGID
  13. -INC SILICRE
  14. MMATRI=ICHOLX
  15. * activation de la matrice une fois pour toute.
  16. SEGACT,MMATRI*mod
  17. MILIGN=IASLIG
  18. if(iappel.eq.1) milign=iilign
  19. SEGACT,MILIGN
  20. INO=ILIGN(/1)
  21. MDNOR=IDNORM
  22. SEGACT MDNOR
  23. * nombre inconnues
  24. DO I=1,INO
  25. LLIGN=ILIGN(I)
  26. SEGACT LLIGN
  27. nbinc=nbinc+immmm(/1)
  28. enddo
  29. segini ilicre
  30. * longueur chaque ligne
  31. ** iliinc(1)=0
  32. do i=1,ino
  33. llign=ilign(i)
  34. ** iliinc(i+1)=immmm(immmm(/1))
  35. do jpa=1,immmm(/1)
  36. * ipp fin ligne precedente kpa longueur ligne
  37. ipp=ippo(jpa)
  38. kpa=ippo(jpa+1)-ipp
  39. ilideb(immmm(jpa))=kpa
  40. * mise a jour des longueurs partie transposee
  41. do mpa=ipp+1,ippo(jpa+1)
  42. if (linc(mpa).ne.immmm(jpa))
  43. > ilideb(linc(mpa))=ilideb(linc(mpa))+1
  44. enddo
  45. enddo
  46. SEGDES LLIGN
  47. enddo
  48. * taille totale de la matrice
  49. lmat=0
  50. do i=2,nbinc+1
  51. ilideb(i)=ilideb(i)+ilideb(i-1)
  52. enddo
  53. lmat=ilideb(nbinc+1)
  54. * ilideb pointe vers la fin de chaque ligne
  55. do i=nbinc+1,2,-1
  56. ilideb(i)=ilideb(i-1)
  57. enddo
  58. ilideb(1)=0
  59. * ilideb pointe maintenant vers la fin de la ligne precedente
  60. * write (6,*) ' nb inconnues ',nbinc,'taille matrice ',lmat
  61. segini ligcre
  62. ligcrp=ligcre
  63. do i=1,ino
  64. llign=ilign(i)
  65. segact llign
  66. do jpa=1,immmm(/1)
  67. ipp=ippo(jpa)
  68. incb=immmm(jpa)
  69. do mpa=ipp+1,ippo(jpa+1)
  70. ilideb(incb)=ilideb(incb)+1
  71. valm(ilideb(incb))=xxva(mpa)
  72. posm(ilideb(incb))=linc(mpa)
  73. enddo
  74. * remplissage partie transposee
  75. do mpa=ipp+1,ippo(jpa+1)
  76. inc=linc(mpa)
  77. if (inc.ne.incb) then
  78. ilideb(inc)=ilideb(inc)+1
  79. valm(ilideb(inc))=xxva(mpa)
  80. posm(ilideb(inc))=immmm(jpa)
  81. endif
  82. enddo
  83. enddo
  84. segdes llign
  85. enddo
  86. * repasser ilideb vers les debuts de ligne
  87. do i=nbinc+1,2,-1
  88. ilideb(i)=ilideb(i-1)+1
  89. enddo
  90. ilideb(1)=1
  91. ** write (6,*) ' structure de la matrice ',
  92. ** > (valm(i),posm(i),i=1,lmat)
  93. * matrice remplie ilideb pointe vers les fins de ligne
  94. *
  95. if(iappel.eq.1) segdes ilicre,ligcre
  96. jlicre=ilicre
  97.  
  98. end
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  

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