Télécharger cpamod.eso

Retour à la liste

Numérotation des lignes :

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

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