Télécharger graco11.eso

Retour à la liste

Numérotation des lignes :

graco11
  1. C GRACO11 SOURCE PV 21/10/12 21:15:04 11118
  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. enddo
  47. * taille totale de la matrice
  48. lmat=0
  49. do i=2,nbinc+1
  50. ilideb(i)=ilideb(i)+ilideb(i-1)
  51. enddo
  52. lmat=ilideb(nbinc+1)
  53. * ilideb pointe vers la fin de chaque ligne
  54. do i=nbinc+1,2,-1
  55. ilideb(i)=ilideb(i-1)
  56. enddo
  57. ilideb(1)=0
  58. * ilideb pointe maintenant vers la fin de la ligne precedente
  59. * write (6,*) ' nb inconnues ',nbinc,'taille matrice ',lmat
  60. segini ligcre
  61. ligcrp=ligcre
  62. do i=1,ino
  63. llign=ilign(i)
  64. do jpa=1,immmm(/1)
  65. ipp=ippo(jpa)
  66. incb=immmm(jpa)
  67. do mpa=ipp+1,ippo(jpa+1)
  68. ilideb(incb)=ilideb(incb)+1
  69. valm(ilideb(incb))=xxva(mpa)
  70. posm(ilideb(incb))=linc(mpa)
  71. enddo
  72. * remplissage partie transposee
  73. do mpa=ipp+1,ippo(jpa+1)
  74. inc=linc(mpa)
  75. if (inc.ne.incb) then
  76. ilideb(inc)=ilideb(inc)+1
  77. valm(ilideb(inc))=xxva(mpa)
  78. posm(ilideb(inc))=immmm(jpa)
  79. endif
  80. enddo
  81. enddo
  82. segdes llign
  83. enddo
  84. * repasser ilideb vers les debuts de ligne
  85. do i=nbinc+1,2,-1
  86. ilideb(i)=ilideb(i-1)+1
  87. enddo
  88. ilideb(1)=1
  89. ** write (6,*) ' structure de la matrice ',
  90. ** > (valm(i),posm(i),i=1,lmat)
  91. * matrice remplie ilideb pointe vers les fins de ligne
  92. *
  93. if(iappel.eq.1) segdes ilicre,ligcre
  94. jlicre=ilicre
  95.  
  96. end
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  

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