C CPAMOD SOURCE OF166741 23/06/19 21:15:03 11680 subroutine cpamod(pModel,lisNoe,seg2pi,bu,bufPos) C======================================================================= C COLlaborateur PAQuettage MODele C Ajout du model pModel dans le buffer d'envoi bu C Les numeros de noeuds sont "traduit" par la C corespondance lisNoe passe en argument C======================================================================= integer mn3,nlconmo,nfor,nmat,ntyp,nObMod,nbrobl,nbrfac,n1 integer iMod,iInfo,iNomid,iObMod integer bufPos integer lonBuf integer ipoPi,iPoint integer iNoCo,iNoLo integer iObl,iFac integer sePGCD integer nbInt,nbChar integer lconmo -INC PPARAM -INC CCOPTIO -INC SMMODEL -INC TMCOLAC segment BUFFER character ffer(lonBuf) endsegment C La liste de noeud est necessaire pour le noeud de deformation plane C generealisee segment LISNOD integer liste(nNoeud) endsegment pointeur pNomid.NOMID pointeur pModel.MMODEL pointeur modele.IMODEL pointeur lisNoe.LISNOD pointeur bu.BUFFER pointeur seg2pi.ILISSE C write(ioimp,*) 'Entre dans CPAMOD' C write(ioimp,*) 'Position du buffer',bufPos if (pModel.ne.0) then write(ioimp,*) 'Erreur: pointeur vers un objet MODELE nul' call erreur(5) return endif nbInt=0 nbChar=0 segact pModel lonBuf=bu.ffer(/2) C write(ioimp,*) 'taille du buffer',lonBuf sePGCD=seg2pi.npgcd n1 = pModel.kmodel(/1) call mpipaI(n1,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Nombre de modele elem',n1 do iMod=1,n1 modele=pModel.kmodel(iMod) C Pointeur invalide if (modele.le.0) then C write(ioimp,*) 'Pointeur invalide vers le imodel' call erreur(5) endif segact modele mn3=modele.infmod(/1) nlconmo=modele.conmod(/1) nfor = modele.formod(/2) nmat = modele.matmod(/2) ntyp = modele.lnomid(/1) nObMod=modele.ivamod(/1) C write(ioimp,*) 'Taille du modele',mn3, nlconmo, nfor,nmat,nObMod C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(mn3,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(nlconmo,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(nfor,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(nmat,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(ntyp,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(nObMod,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos iPoint=modele.imamod C write(ioimp,*) 'Pointeur: ',iPoint iPoPi= seg2pi.iliseg((iPoint-1)/sePGCD) C write(ioimp,*) 'Numero dans la pile: ',ipoPi call mpipaI(iPoPi,1,bu,bufPos) nbInt=nbInt+1 call mpipaI(modele.nefmod,1,bu,bufPos) nbInt=nbInt+1 call mpipaI(modele.infmod(1),1,bu,bufPos) nbInt=nbInt+1 do iInfo=2,mn3 C write(ioimp,*) 'Info',iInfo,'sur',mn3 iPoint=modele.infmod(iInfo) if(iPoint.gt.0) then C write(ioimp,*) 'Pointeur info: ',iPoint iPoPi= seg2pi.iliseg((iPoint-1)/sePGCD) else C write(ioimp,*) 'Attention, pointeur nul dans le C& modele',pModel iPoPi=iPoint endif C write(ioimp,*) 'Numero dans la pile: ',ipoPi call mpipaI(iPoPi,1,bu,bufPos) nbInt=nbInt+1 enddo call mpipaC(modele.conmod,nlconmo,bu,bufPos) nbChar=nbChar+nlconmo call mpipaC(modele.cmatee,8,bu,bufPos) nbChar=nbChar+8 call mpipaC(modele.formod,16*nfor,bu,bufPos) nbChar=nbChar+16*nmat call mpipaC(modele.matmod,16*nmat,bu,bufPos) nbChar=nbChar+16 C write(ioimp,*) 'Info sur le modele' C write(ioimp,*) 'Position du buffer',bufPos iNoLo=modele.ipdpge C write(ioimp,*) 'iNoLo',iNoLo if(iNoLo.gt.0) then iNoCo= seg2pi.iliseg((iNolo-1)/sePGCD) else iNoCo=0 endif C write(ioimp,*) 'iNoCo',iNoCo call mpipaI(iNoCo,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(modele.iMatee,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(modele.iNatuu,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(modele.iDeriv,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Numero de modele' C write(ioimp,*) 'Position du buffer',bufPos do iNomid=1,ntyp pNomid=modele.lnomid(iNomid) C write(ioimp,*) 'nomid',iNomid,'sur',ntyp if(pNomid.ne.0) then segact pNomid nbrobl=pNomid.lesobl(/2) nbrfac=pNomid.lesfac(/2) call mpipaI(nbrobl,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(nbrfac,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaC(pNomid.lesobl,8*nbrobl,bu,bufPos) nbChar=nbChar+8*nbrobl C write(ioimp,*) 'Position du buffer',bufPos call mpipaC(pNomid.lesfac,8*nbrfac,bu,bufPos) nbChar=nbChar+8*nbrfac C write(ioimp,*) 'Enregistrement du nomid' C write(ioimp,*) 'Position du buffer',bufPos C do iObl=1,nbrobl C write(ioimp,*) 'Obl',iObl,'/',nbrobl,pNomid.lesobl(iObl) C enddo C do iFac=1,nbrFac C write(ioimp,*) 'Fac',iFac,'/',nbrFac,pNomid.lesFac(iFac) C enddo segdes pNomid else C write(ioimp,*) 'Pointeur vers segment nomid invalide' nbrobl=0 nbrfac=0 call mpipaI(nbrobl,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(nbrfac,1,bu,bufPos) nbInt=nbInt+1 C write(ioimp,*) 'Position du buffer',bufPos endif enddo C write(ioimp,*) 'Nomids envoye' C write(ioimp,*) 'Position du buffer',bufPos call mpipaI(modele.infele,16,bu,bufPos) nbInt=nbInt+16 C write(ioimp,*) 'Infele envoye' C write(ioimp,*) 'Position du buffer',bufPos C write(ioimp,*) 'Nombre d objets',nObMod call mpipaC(modele.tymode,8*nObMod,bu,bufPos) nbChar=nbChar+8*nObMod do iObMod=1,nObMod iPoint=modele.iVaMod(iObMod) C write(ioimp,*) 'Pointeur: ',iPoint iPoPi= seg2pi.iliseg((iPoint-1)/sePGCD) C write(ioimp,*) 'Numero dans la pile: ',ipoPi call mpipaI(iPoPi,1,bu,bufPos) nbInt=nbInt+1 enddo segdes modele enddo segdes pModel C write(ioimp,*) 'Sortie de CPAMOD' C write(ioimp,*) 'Position du buffer',bufPos C write(ioimp,*) 'Nb ecrit : entier char',nbInt,nbChar c return end