cparig
C CPARIG SOURCE PV 17/12/05 21:15:38 9646 C======================================================================= C COLlaborateur PAQuettage RIGIdite C Ajout de la rigidite pRigi dans le buffer d'envoi bu C======================================================================= integer bufPos integer lonBuf integer ipoPi,iPoint integer sePGCD integer nrigel,nligrd,nligrp,nelrig integer jrigel integer nbInt,nbFloa,nbChar -INC PPARAM -INC CCOPTIO -INC SMRIGID -INC TMCOLAC segment BUFFER character ffer(lonBuf) endsegment pointeur bu.BUFFER pointeur seg2pi.ILISSE pointeur pRigi.MRIGID pointeur pXmatr.XMATRI pointeur pDescr.DESCR C write(ioimp,*) 'Entre dans CPARIG' C write(ioimp,*) 'Position du buffer',bufPos nbInt=0 nbFloa=0 nbChar=0 if (pRigi.ne.0) then segact pRigi lonBuf=bu.ffer(/2) C write(ioimp,*) 'taille du buffer',lonBuf sePGCD=seg2pi.npgcd nrigel=pRigi.coerig(/1) C Ecriture du nombre de rigidite elementaire C write(ioimp,*) 'Nombre de rigidite elem',nrigel call mpipaI(nrigel,1,bu,bufPos) nbInt=nbInt+1 C Ecriture du type C write(ioimp,*) 'Nom',pRigi.mtymat call mpipaC(pRigi.mtymat,8,bu,bufPos) nbChar=nbChar+8 C Ecriture de iforig call mpipaI(pRigi.iforig,1,bu,bufPos) nbInt=nbInt+1 C Ecriture de des coeff multiplicateurs C write(ioimp,*) 'Coefficiient multiplicateurs',nrigel if(nrigel.gt.0) then call mpipaR(pRigi.coerig(1),nrigel,bu,bufPos) nbFloa=nbFloa+nrigel endif do jrigel=1,nrigel C write(ioimp,*) 'Rigidite elementaire',jRigel,nRigel iPoint=pRigi.irigel(1,jrigel) if(iPoint.gt.0) then iPoPi= seg2pi.iliseg((iPoint-1)/sePGCD) else iPoPi=0 endif C write(ioimp,*) 'Maillage 1 :',iPoint,iPopi call mpipaI(iPoPi,1,bu,bufPos) nbInt=nbInt+1 iPoint=pRigi.irigel(2,jrigel) if(iPoint.gt.0) then iPoPi= seg2pi.iliseg((iPoint-1)/sePGCD) else iPoPi=0 endif C write(ioimp,*) 'Maillage 2 :',iPoint,iPopi call mpipaI(iPoPi,1,bu,bufPos) nbInt=nbInt+1 call mpipaI(pRigi.irigel(5,jrigel),4,bu,bufPos) nbInt=nbInt+4 enddo do jrigel=1,nrigel C write(ioimp,*) 'Rigidite elementaire',jRigel,nRigel pDescr=pRigi.irigel(3,jrigel) pXmatr=pRigi.irigel(4,jrigel) segact pDescr segact pXmatr nligrd = pXmatr.re(/1) nligrp = pXmatr.re(/2) nelrig = pXmatr.re(/3) call mpipaI(nligrd,1,bu,bufPos) nbInt=nbInt+1 call mpipaI(nligrp,1,bu,bufPos) nbInt=nbInt+1 call mpipaI(nelrig,1,bu,bufPos) nbInt=nbInt+1 call mpipaC(pDescr.lisinc(1),4*nligrp,bu,bufPos) nbChar=nbChar+4*nligrp call mpipaC(pDescr.lisdua(1),4*nligrd,bu,bufPos) nbChar=nbChar+4*nligrd call mpipaI(pDescr.noelep(1),nligrp,bu,bufPos) nbInt=nbInt+nligrp call mpipaI(pDescr.noeled(1),nligrd,bu,bufPos) nbInt=nbInt+nligrd call mpipaR(pXmatr.re(1,1,1),nligrd*nligrp*nelrig,bu,bufPos) nbFloa=nbFloa+nligrd*nligrp*nelrig segdes pDescr segdes pXmatr enddo segdes pRigi else write(ioimp,*) 'Erreur: pointeur vers un objet RIGIDITE nul' endif C write(ioimp,*) 'nb int / float / char ecrit',NbInteger,nbFloa,nbChar C write(ioimp,*) 'Sortie de CPARIG' C write(ioimp,*) 'Position du buffer',bufPos end
© Cast3M 2003 - Tous droits réservés.
Mentions légales