Télécharger resour.eso

Retour à la liste

Numérotation des lignes :

resour
  1. C RESOUR SOURCE FANDEUR 22/01/19 21:15:14 11256
  2. SUBROUTINE RESOUR(idemem,ideme0,ideme1,mrigid,if,noen,ipt8,
  3. > isouci,iverif)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6. C
  7. C **** Reconstitution de la solution complete apres un resou sur une
  8. C **** matrice ou les relations ont ete eliminees.
  9. C
  10. C erreur ou souci si on n'arrive pas a reconstruire
  11. C
  12. C si iverif=1 verification de la solution. Pour le moment pas de verification si
  13. C option noid car on n'a pas ku=f
  14. C
  15. -INC SMRIGID
  16.  
  17. -INC PPARAM
  18. -INC CCOPTIO
  19. -INC SMCHPOI
  20. -INC SMELEME
  21. SEGMENT IDEMEM(0)
  22. segment ideme0(idemem(/1),30)
  23. segment ideme1(idemem(/1),30)
  24. C
  25. C
  26. C-------------------------------------------------------
  27. C LA SOLUTION EST CALCULEE --> ON LA MET EN FORME
  28.  
  29. SEGACT IDEMEM*mod
  30. N=IDEMEM(/1)
  31. c-----boucle sur les solutions
  32. segact mrigid
  33. ri6 = jrdepp
  34. ri2 = jrgard
  35. ri1 = jrelim
  36. DO 3 I=1,N
  37. IRET=IDEMEM(I)
  38. MCHPOI= IRET
  39. C-----------------------
  40. * reintroduction des inconnues supprimees
  41. call mucpri(mchpoi,ri6,ichp3)
  42. call adchpo(mchpoi,ichp3,ichp2,1.D0,1.D0)
  43. mchpo1=ideme1(I,if)
  44. call adchpo(ichp2,mchpo1,iret,1.D0,1D0)
  45. call dtchpo(mchpoi)
  46. call dtchpo(ichp3)
  47. call dtchpo(ichp2)
  48. mchpo1=iret
  49. segact mchpo1*mod
  50. mchpo1.jattri(1)=1
  51. C ------------- deplacements complets puis KU
  52. call mucpri(mchpo1,ri2 ,ichp5)
  53. * separer les conditions aux limites pour etablir la reference sans condition aux limites
  54. segact ri2
  55. nrigel=ri2.irigel(/2)
  56. ** write(6,*) ' nrigel dans resour ',nrigel
  57. segini ri3
  58. ri3.mtymat = ri2.mtymat
  59. ri3.iforig = ri2.iforig
  60. irn=0
  61. do ir=1,nrigel
  62. meleme=ri2.irigel(1,ir)
  63. segact meleme
  64. if(itypel.eq.49) then
  65. irn=irn+1
  66. ri3.coerig(irn)=ri2.coerig(ir)
  67. do ii=1,ri2.irigel(/1)
  68. ri3.irigel(ii,irn)=ri2.irigel(ii,ir)
  69. enddo
  70. endif
  71. enddo
  72. *** call prrigi(ri2,0)
  73. nrigel=irn
  74. *** write(6,*) ' irn dans resour ',irn
  75. segadj ri3
  76. call mucpri(mchpo1,ri3,ichp8)
  77. segsup ri3
  78. if (ierr.ne.0) return
  79. mchpo4=ichp5
  80. segact mchpo4*mod
  81. mchpo4.jattri(1)=1
  82. ichp6= ideme0(I,if)
  83. C ------- write(6,*) ' --------- KU - F '
  84. call adchpo(ichp5,ichp6,IRET,1D0,-1D0)
  85. call remplx(ri1,iret,ichp7)
  86. * verif on a bien l'equilibre
  87. if (if.eq.1.and.iverif.eq.1) then
  88. call mucpri(ichp7,ri1,ichp3)
  89. if (ierr.ne.0) return
  90. call adchpo(iret,ichp3,ichp4,1D0,1D0)
  91. call dtchpo(iret)
  92. iptt=0
  93. if(noen.eq.1) iptt=ipt8
  94. ** write(6,*) 'ichp5 ichp6 ichp8 ichp4 ',ichp5,ichp6,ichp8,ichp4
  95. call vechpo(ichp5,ichp6,ichp8,ichp4,ipt8,isouci)
  96. call dtchpo(ichp3)
  97. call dtchpo(ichp4)
  98. call dtchpo(ichp8)
  99. endif
  100. call dtchpo(ichp5)
  101. * call dtchpo(ichp6)
  102. if (ierr.ne.0) return
  103.  
  104. call fuchpo(ichp7,mchpo1,iret)
  105. if(ierr.ne.0) return
  106. mchpoi=iret
  107. * supression des multiplicateurs dédoublés
  108. lagdua=imlag
  109. if (lagdua.gt.0) then
  110. ** write(6,*) ' appel a dbbcf lagdua ',lagdua
  111. call dbbcf(mchpoi,lagdua)
  112. ipt1=lagdua
  113. endif
  114. * write (6,*) ' mchpoi en fi de resour'
  115. * call ecchpo(mchpoi,0)
  116. * les champs de points qui sortent sont de nature diffuse
  117. SEGACT MCHPOI
  118. NAT = MAX(1,JATTRI(/1))
  119. NSOUPO=IPCHP(/1)
  120. SEGADJ MCHPOI
  121. JATTRI(1)=1
  122. IRET = MCHPOI
  123. idemem(i)=iret
  124. 3 continue
  125. end
  126.  
  127.  
  128.  

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