Télécharger cpamod.eso

Retour à la liste

Numérotation des lignes :

  1. C CPAMOD SOURCE PV 16/11/26 21:15:24 9205
  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.  
  111. iNoLo=modele.ipdpge
  112. C write(ioimp,*) 'iNoLo',iNoLo
  113. if(iNoLo.gt.0) then
  114. iNoCo=lisNoe.liste(iNoLo)
  115. else
  116. iNoCo=0
  117. endif
  118. C write(ioimp,*) 'iNoCo',iNoCo
  119. call mpipaI(iNoCo,1,bu,bufPos)
  120. nbInt=nbInt+1
  121. C write(ioimp,*) 'Position du buffer',bufPos
  122. call mpipaI(modele.iMatee,1,bu,bufPos)
  123. nbInt=nbInt+1
  124. C write(ioimp,*) 'Position du buffer',bufPos
  125. call mpipaI(modele.iNatuu,1,bu,bufPos)
  126. nbInt=nbInt+1
  127. C write(ioimp,*) 'Position du buffer',bufPos
  128. call mpipaI(modele.iDeriv,1,bu,bufPos)
  129. nbInt=nbInt+1
  130. C write(ioimp,*) 'Numero de modele'
  131. C write(ioimp,*) 'Position du buffer',bufPos
  132. do iNomid=1,14
  133. pNomid=modele.lnomid(iNomid)
  134. C write(ioimp,*) 'nomid',iNomid,'sur 14'
  135. if(pNomid.ne.0) then
  136. segact pNomid
  137. nbrobl=pNomid.lesobl(/2)
  138. nbrfac=pNomid.lesfac(/2)
  139. call mpipaI(nbrobl,1,bu,bufPos)
  140. nbInt=nbInt+1
  141. C write(ioimp,*) 'Position du buffer',bufPos
  142. call mpipaI(nbrfac,1,bu,bufPos)
  143. nbInt=nbInt+1
  144. C write(ioimp,*) 'Position du buffer',bufPos
  145. call mpipaC(pNomid.lesobl,8*nbrobl,bu,bufPos)
  146. nbChar=nbChar+8*nbrobl
  147. C write(ioimp,*) 'Position du buffer',bufPos
  148. call mpipaC(pNomid.lesfac,8*nbrfac,bu,bufPos)
  149. nbChar=nbChar+8*nbrfac
  150. C write(ioimp,*) 'Enregistrement du nomid'
  151. C write(ioimp,*) 'Position du buffer',bufPos
  152. do iObl=1,nbrobl
  153. C write(ioimp,*) 'Obl',iObl,'/',nbrobl,pNomid.lesobl(iObl)
  154. enddo
  155. do iFac=1,nbrFac
  156. C write(ioimp,*) 'Fac',iFac,'/',nbrFac,pNomid.lesFac(iFac)
  157. enddo
  158. segdes pNomid
  159. else
  160. C write(ioimp,*) 'Pointeur vers segment nomid invalide'
  161. nbrobl=0
  162. nbrfac=0
  163. call mpipaI(nbrobl,1,bu,bufPos)
  164. nbInt=nbInt+1
  165. C write(ioimp,*) 'Position du buffer',bufPos
  166. call mpipaI(nbrfac,1,bu,bufPos)
  167. nbInt=nbInt+1
  168. C write(ioimp,*) 'Position du buffer',bufPos
  169. C call erreur(5)
  170. endif
  171. enddo
  172. C write(ioimp,*) 'Nomids envoye'
  173. C write(ioimp,*) 'Position du buffer',bufPos
  174. call mpipaI(modele.infele,16,bu,bufPos)
  175. nbInt=nbInt+16
  176. C write(ioimp,*) 'Infele envoye'
  177. C write(ioimp,*) 'Position du buffer',bufPos
  178. C write(ioimp,*) 'Nombre d objets',nObMod
  179. call mpipaC(modele.tymode,8*nObMod,bu,bufPos)
  180. nbChar=nbChar+8*nObMod
  181. do iObMod=1,nObMod
  182. iPoint=modele.iVaMod(iObMod)
  183. C write(ioimp,*) 'Pointeur: ',iPoint
  184. iPoPi= seg2pi.iliseg((iPoint-1)/sePGCD)
  185. C write(ioimp,*) 'Numeroa dans la pive: ',ipoPi
  186. call mpipaI(iPoPi,1,bu,bufPos)
  187. nbInt=nbInt+1
  188. enddo
  189. segdes modele
  190. else
  191. C Pointeur invalide
  192. C write(ioimp,*) 'Pointeur invalide vers le imodel'
  193. call erreur(5)
  194. endif
  195. enddo
  196. segdes pModel
  197. else
  198. write(ioimp,*) 'Erreur: pointeur vers un objet MODELE nul'
  199. call erreur(5)
  200. endif
  201. C write(ioimp,*) 'Sortie de CPAMOD'
  202. C write(ioimp,*) 'Position du buffer',bufPos
  203. C write(ioimp,*) 'Nb ecrit : entier char',nbInt,nbChar
  204. end
  205.  
  206.  
  207.  
  208.  

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