Télécharger cpamod.eso

Retour à la liste

Numérotation des lignes :

  1. C CPAMOD SOURCE PV 17/12/05 21:15:35 9646
  2. subroutine cpamod(pModel,lisNoe,seg2pi,bu,bufPos)
  3. C=======================================================================
  4. C COLlaborateur PAQuettage MODele
  5. C Ajout du model pModel dans le buffer d'envoi bu
  6. C Les numeros de noeuds sont "traduit" par la
  7. C corespondance lisNoe passé en argument
  8. C=======================================================================
  9. integer mn3,nlconmo,nfor,nmat,nObMod,nbrobl,nbrfac,n1
  10. integer iMod,iInfo,iNomid,iObMod
  11. integer bufPos
  12. integer lonBuf
  13. integer ipoPi,iPoint
  14. integer iNoCo,iNoLo
  15. integer iObl,iFac
  16. integer sePGCD
  17. integer nbInt,nbChar
  18. integer lconmo
  19.  
  20. -INC PPARAM
  21. -INC CCOPTIO
  22. -INC SMMODEL
  23. -INC TMCOLAC
  24. segment BUFFER
  25. character ffer(lonBuf)
  26. endsegment
  27. C La liste de noeud est necessaire pour le noeud de deformation plane
  28. C generealisee
  29. segment LISNOD
  30. integer liste(nNoeud)
  31. endsegment
  32. pointeur pNomid.NOMID
  33. pointeur pModel.MMODEL
  34. pointeur modele.IMODEL
  35. pointeur lisNoe.LISNOD
  36. pointeur bu.BUFFER
  37. pointeur seg2pi.ILISSE
  38. nbInt=0
  39. nbChar=0
  40. C write(ioimp,*) 'Entre dans CPAMOD'
  41. C write(ioimp,*) 'Position du buffer',bufPos
  42. if (pModel.ne.0) then
  43. segact pModel
  44. lonBuf=bu.ffer(/2)
  45. C write(ioimp,*) 'taille du buffer',lonBuf
  46. sePGCD=seg2pi.npgcd
  47. n1 = pModel.kmodel(/1)
  48. call mpipaI(n1,1,bu,bufPos)
  49. nbInt=nbInt+1
  50. C write(ioimp,*) 'Nombre de modele elem',n1
  51. do iMod=1,n1
  52. modele=pModel.kmodel(iMod)
  53. if(modele.gt.0) then
  54. segact modele
  55. mn3=modele.infmod(/1)
  56. nlconmo=modele.conmod(/1)
  57. nfor = modele.formod(/2)
  58. nmat = modele.matmod(/2)
  59. nObMod=modele.ivamod(/1)
  60. C write(ioimp,*) 'Taille du modele',mn3, nlconmo, nfor,nmat,nObMod
  61. C write(ioimp,*) 'Position du buffer',bufPos
  62. call mpipaI(mn3,1,bu,bufPos)
  63. nbInt=nbInt+1
  64. C write(ioimp,*) 'Position du buffer',bufPos
  65. call mpipaI(nlconmo,1,bu,bufPos)
  66. nbInt=nbInt+1
  67. C write(ioimp,*) 'Position du buffer',bufPos
  68. call mpipaI(nfor,1,bu,bufPos)
  69. nbInt=nbInt+1
  70. C write(ioimp,*) 'Position du buffer',bufPos
  71. call mpipaI(nmat,1,bu,bufPos)
  72. nbInt=nbInt+1
  73. C write(ioimp,*) 'Position du buffer',bufPos
  74. call mpipaI(nObMod,1,bu,bufPos)
  75. nbInt=nbInt+1
  76. C write(ioimp,*) 'Position du buffer',bufPos
  77. iPoint=modele.imamod
  78. C write(ioimp,*) 'Pointeur: ',iPoint
  79. iPoPi= seg2pi.iliseg((iPoint-1)/sePGCD)
  80. C write(ioimp,*) 'Numeroa dans la pive: ',ipoPi
  81. call mpipaI(iPoPi,1,bu,bufPos)
  82. nbInt=nbInt+1
  83. call mpipaI(modele.nefmod,1,bu,bufPos)
  84. nbInt=nbInt+1
  85. call mpipaI(modele.infmod(1),1,bu,bufPos)
  86. nbInt=nbInt+1
  87. do iInfo=2,mn3
  88. C write(ioimp,*) 'Info',iInfo,'sur',mn3
  89. iPoint=modele.infmod(iInfo)
  90. if(iPoint.gt.0) then
  91. C write(ioimp,*) 'Pointeur info: ',iPoint
  92. iPoPi= seg2pi.iliseg((iPoint-1)/sePGCD)
  93. else
  94. C write(ioimp,*) 'Attention, pointeur nul dans le
  95. C & modele',pModel
  96. iPoPi=iPoint
  97. endif
  98. C write(ioimp,*) 'Numeroa dans la pile: ',ipoPi
  99. call mpipaI(iPoPi,1,bu,bufPos)
  100. nbInt=nbInt+1
  101. enddo
  102. call mpipaC(modele.conmod,nlconmo,bu,bufPos)
  103. nbChar=nbChar+nlconmo
  104. call mpipaC(modele.cmatee,8,bu,bufPos)
  105. nbChar=nbChar+8
  106. call mpipaC(modele.formod,16*nfor,bu,bufPos)
  107. nbChar=nbChar+16*nmat
  108. call mpipaC(modele.matmod,16*nmat,bu,bufPos)
  109. nbChar=nbChar+16
  110. C write(ioimp,*) 'Info sur le modele'
  111. C write(ioimp,*) 'Position du buffer',bufPos
  112. iNoLo=modele.ipdpge
  113. C write(ioimp,*) 'iNoLo',iNoLo
  114. if(iNoLo.gt.0) then
  115. iNoCo= seg2pi.iliseg((iNolo-1)/sePGCD)
  116. else
  117. iNoCo=0
  118. endif
  119. C write(ioimp,*) 'iNoCo',iNoCo
  120. call mpipaI(iNoCo,1,bu,bufPos)
  121. nbInt=nbInt+1
  122. C write(ioimp,*) 'Position du buffer',bufPos
  123. call mpipaI(modele.iMatee,1,bu,bufPos)
  124. nbInt=nbInt+1
  125. C write(ioimp,*) 'Position du buffer',bufPos
  126. call mpipaI(modele.iNatuu,1,bu,bufPos)
  127. nbInt=nbInt+1
  128. C write(ioimp,*) 'Position du buffer',bufPos
  129. call mpipaI(modele.iDeriv,1,bu,bufPos)
  130. nbInt=nbInt+1
  131. C write(ioimp,*) 'Numero de modele'
  132. C write(ioimp,*) 'Position du buffer',bufPos
  133. do iNomid=1,14
  134. pNomid=modele.lnomid(iNomid)
  135. C write(ioimp,*) 'nomid',iNomid,'sur 14'
  136. if(pNomid.ne.0) then
  137. segact pNomid
  138. nbrobl=pNomid.lesobl(/2)
  139. nbrfac=pNomid.lesfac(/2)
  140. call mpipaI(nbrobl,1,bu,bufPos)
  141. nbInt=nbInt+1
  142. C write(ioimp,*) 'Position du buffer',bufPos
  143. call mpipaI(nbrfac,1,bu,bufPos)
  144. nbInt=nbInt+1
  145. C write(ioimp,*) 'Position du buffer',bufPos
  146. call mpipaC(pNomid.lesobl,8*nbrobl,bu,bufPos)
  147. nbChar=nbChar+8*nbrobl
  148. C write(ioimp,*) 'Position du buffer',bufPos
  149. call mpipaC(pNomid.lesfac,8*nbrfac,bu,bufPos)
  150. nbChar=nbChar+8*nbrfac
  151. C write(ioimp,*) 'Enregistrement du nomid'
  152. C write(ioimp,*) 'Position du buffer',bufPos
  153. do iObl=1,nbrobl
  154. C write(ioimp,*) 'Obl',iObl,'/',nbrobl,pNomid.lesobl(iObl)
  155. enddo
  156. do iFac=1,nbrFac
  157. C write(ioimp,*) 'Fac',iFac,'/',nbrFac,pNomid.lesFac(iFac)
  158. enddo
  159. segdes pNomid
  160. else
  161. C write(ioimp,*) 'Pointeur vers segment nomid invalide'
  162. nbrobl=0
  163. nbrfac=0
  164. call mpipaI(nbrobl,1,bu,bufPos)
  165. nbInt=nbInt+1
  166. C write(ioimp,*) 'Position du buffer',bufPos
  167. call mpipaI(nbrfac,1,bu,bufPos)
  168. nbInt=nbInt+1
  169. C write(ioimp,*) 'Position du buffer',bufPos
  170. C call erreur(5)
  171. endif
  172. enddo
  173. C write(ioimp,*) 'Nomids envoye'
  174. C write(ioimp,*) 'Position du buffer',bufPos
  175. call mpipaI(modele.infele,16,bu,bufPos)
  176. nbInt=nbInt+16
  177. C write(ioimp,*) 'Infele envoye'
  178. C write(ioimp,*) 'Position du buffer',bufPos
  179. C write(ioimp,*) 'Nombre d objets',nObMod
  180. call mpipaC(modele.tymode,8*nObMod,bu,bufPos)
  181. nbChar=nbChar+8*nObMod
  182. do iObMod=1,nObMod
  183. iPoint=modele.iVaMod(iObMod)
  184. C write(ioimp,*) 'Pointeur: ',iPoint
  185. iPoPi= seg2pi.iliseg((iPoint-1)/sePGCD)
  186. C write(ioimp,*) 'Numeroa dans la pive: ',ipoPi
  187. call mpipaI(iPoPi,1,bu,bufPos)
  188. nbInt=nbInt+1
  189. enddo
  190. segdes modele
  191. else
  192. C Pointeur invalide
  193. C write(ioimp,*) 'Pointeur invalide vers le imodel'
  194. call erreur(5)
  195. endif
  196. enddo
  197. segdes pModel
  198. else
  199. write(ioimp,*) 'Erreur: pointeur vers un objet MODELE nul'
  200. call erreur(5)
  201. endif
  202. C write(ioimp,*) 'Sortie de CPAMOD'
  203. C write(ioimp,*) 'Position du buffer',bufPos
  204. C write(ioimp,*) 'Nb ecrit : entier char',nbInt,nbChar
  205. end
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  

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