disj
C DISJ SOURCE CB215821 20/07/31 21:15:01 10678 subroutine disj (ipt1,icpr,ijfam,nomg) implicit real*8(a-h,o-z) implicit integer (i-n) * on a des familles et un objet ipt1 qui sera un groupe, * on modifie si besoin les pour avoir le nouveaux groupe -INC PPARAM -INC CCOPTIO -INC CCMED -INC SMCOORD -INC SMELEME character*(MED_NAME_SIZE) nomg segment icpr(ino) segment ijfam * ifam pointeur sur un meleme, inogro pointeur sur un nomgro integer ifam(jg),inogro(jg),nfam endsegment segment nomgro * nogrou contient les noms des groupes qui inclus la famille character*(MED_NAME_SIZE) nogrou(kg) integer noco endsegment pointeur nomgr1.nomgro,nomgr2.nomgro segact ipt1 ipt5=0 ipt4=0 ipt3=0 * write(6,*) ' traitement de ' , nomg, ' nfam ' , nfam if( nfam.eq.0) then * c'est la premiere fois, on declare famille tous les lisous de l'objet ipt1 do i=1,max(1,ipt1.lisous(/1)) if(ipt1.lisous(/1) .ne. 0) then ipt8=ipt1.lisous(i) else ipt8=ipt1 endif segini,ipt9=ipt8 if( nfam.ge.ifam(/1)) then jg=ifam(/1)+200 segadj ijfam endif nfam=nfam+1 * write(6,*) ' creation premiere famille ', ipt9,nomg ifam(nfam)=ipt9 kg=10 segini nomgro inogro(nfam)=nomgro noco=1 nogrou(1)=nomg enddo return endif * il faut tester si intersection avec d autres familles do 1 i=1,max(1,ipt1.lisous(/1)) if( ipt1.lisous(/1).ne.0) then ipt6=ipt1.lisous(i) segact ipt6 else ipt6=ipt1 endif do 2 j=1,nfam ipt7=ifam(j) segact ipt7 * write(6,*) ' disj envoi ipt6,ipt7 ', ipt6,ipt7 if( ipt6.itypel.ne.ipt7.itypel) go to 2 call disjo(ipt6,ipt7,meleme,ipt8,ipt9,icpr) * write(6,*) ' meleme ipt8 ipt9 ' , meleme, ipt8, ipt9 if( meleme.eq.0) go to 2 * il existe une intersection if(ipt9.eq.0.and.IPT8.EQ.0) then * les deux objets sont superposes on ajoute le nom dans la famille on a fini * pour ipt6 nomgro=inogro(j) noco=noco+1 if(noco.gt.nogrou(/2)) then kg=nogrou(/2)+10 segadj nomgro endif nogrou(noco)=nomg go to 1 elseif(ipt8.eq.0) then ifam(j)=ipt9 nomgro=inogro(j) noco=noco+1 if(noco.gt.nogrou(/2)) then kg=nogrou(/2)+10 segadj nomgro endif nogrou(noco)=nomg nfam=nfam+1 * write(6,*) 'Acreation nouvelle famille ' ,nfam ,meleme if( nfam.gt.ifam(/1)) then jg=ifam(/1)+200 segadj ijfam endif ifam(nfam)=meleme nomgr1=inogro(j) segini,nomgro=nomgr1 inogro(nfam)=nomgro noco=noco+1 if(noco.gt.nogrou(/2)) then kg=nogrou(/2)+10 segadj nomgro endif nogrou(noco)=nomg elseif(ipt9.eq.0)then nomgro=inogro(j) noco=noco+1 if(noco.gt.nogrou(/2)) then kg=nogrou(/2)+10 segadj nomgro endif nogrou(noco)=nomg ipt6=ipt8 else * aucun n'est nul meleme ipt8,ipt9 ipt6=ipt8 ifam(j)=ipt9 nfam=nfam+1 * write(6,*) 'Bcreation nouvelle famille ' ,nfam ,meleme if( nfam.gt.ifam(/1)) then jg=ifam(/1)+200 segadj ijfam endif ifam(nfam)=meleme nomgr1=inogro(j) segini,nomgro=nomgr1 inogro(nfam)=nomgro noco=noco+1 if(noco.gt.nogrou(/2)) then kg=nogrou(/2)+10 segadj nomgro endif nogrou(noco)=nomg endif 2 Continue nfam=nfam+1 if( nfam.gt.ifam(/1)) then jg=ifam(/1)+200 segadj ijfam endif * write(6,*) 'Ccreation nouvelle famille ' ,nfam ,ipt6 ifam(nfam)=ipt6 kg=10 segini nomgro inogro(nfam)=nomgro noco=1 nogrou(1)=nomg 1 Continue return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales