uniqma
C UNIQMA SOURCE SP204843 23/07/13 21:15:05 11709 C C C construit un maillage constitue des elements unique d'un autre maillage c si iordre est nul, l'ordre des noeuds dans l'element n'est pas discriminant c si iordre vaut un, l'ordre des noeuds dans l'element estdiscriminant C C uniqma gere les chapeaux du meleme, uniqm1 gere les lisous C implicit real*8 (a-h,o-z) -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMCOORD segment netn(nbpts) segment ietn(letn) C C* call lirobj('MAILLAGE',ipt1,1,iretou) C* if (ierr.ne.0) return segact ipt1 nbdif=0 nbdi1=0 if (ipt1.lisous(/1).eq.0) then C Cas MELEME SIMPLE C if (ipt1.num(/2).ne.0) then C else C segini,ipt2=ipt1 C endif goto 1000 endif C Cas MELEME COMPLEXE segini,ipt2=ipt1 do 100 is=1,ipt2.lisous(/1) ipt3=ipt2.lisous(is) if (ipt3.eq.0) goto 100 segact ipt3 C verif pas d'autre paquet semblables do 110 is2=is+1,ipt2.lisous(/1) ipt4=ipt2.lisous(is2) if (ipt4.eq.0) goto 110 segact ipt4 if (ipt4.itypel.ne.ipt3.itypel) goto 110 if (ipt4.num(/1).ne.ipt3.num(/1)) goto 110 C concatenation de ipt3 et ipt4 nbnn =ipt3.num(/1) nbelem=ipt3.num(/2)+ipt4.num(/2) nbsous=0 nbref =0 segini ipt5 ipt5.itypel=ipt3.itypel do j=1,ipt3.num(/2) do i=1,ipt3.num(/1) ipt5.num(i,j)=ipt3.num(i,j) enddo ipt5.icolor(j)=ipt3.icolor(j) enddo do j=1,ipt4.num(/2) j1=j+ipt3.num(/2) do i=1,ipt4.num(/1) ipt5.num(i,j1)=ipt4.num(i,j) enddo ipt5.icolor(j1)=ipt4.icolor(j) enddo segdes ipt3,ipt4 ipt3=ipt5 ipt2.lisous(is2)=0 110 continue nbdif = nbdif + nbdi1 ipt2.lisous(is)=ipt4 100 continue C Si pas de difference => Identite if (nbdif.eq.0) then segsup, ipt2 return endif C compression du segment nbsous=0 do 200 is=1,ipt2.lisous(/1) if (ipt2.lisous(is).ne.0) then nbsous=nbsous+1 ipt2.lisous(nbsous)=ipt2.lisous(is) endif 200 continue nbref =0 nbnn =0 nbelem=0 segadj ipt2 if (nbsous.eq.1) then ipt2=ipt2.lisous(1) endif C 1000 continue ipt1=ipt2 return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales