comail
C COMAIL SOURCE PV 20/03/30 21:16:18 10567 * pour 2 meleme de meme type construit un melval en allant piocher * dans le melval initial si les elements sont les memes * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMCHAML -INC SMLENTI -INC SMCOORD segment ipos(nbpts+1) segment ind(mm) segment icorre integer mel2(nmel1),icor(nmel1),idej endsegment logical iperm * * meleme=iq1 ipt1=iq2 ielout=0 nbsous1 = ipt1.lisous(/1) nbnn = num(/1) nbnn1 = ipt1.num(/1) if (nbsous1.ne.0.OR.nbnn1.ne.nbnn) then * pas normal moterr(1:8) ='COMAIL' interr(1) = 1 return endif do iou=1,idej if(ipt1.eq.mel2(iou)) then if(icor(iou).eq.0) then return else mlenti=icor(iou) C segact mlenti go to 100 endif endif enddo * on dimensionne au nombre d elements du meleme jg= num(/2) segini mlenti * travail preparatoire segini ipos np=ipos(/1)-1 do 10 i=1,num(/2) do 11 j=1,num(/1) ia=num(j,i) ipos(ia)=ipos(ia)+1 11 continue 10 continue * on initialise ipos do 13 i=2,np ipos(i)=ipos(i-1)+ipos(i) 13 continue ipos(np+1)=ipos(np) * remplissage de ind mm=ipos(np) segini ind do 20 i=1,num(/2) do 21 j=1,num(/1) ia=num(j,i) ide=ipos(ia) ind(ide)=i ipos(ia)=ipos(ia)-1 21 continue 20 continue * fin du travail preparatoire C on fabrique le mlenti de correspondance ibon=0 do 15 iel1=1,ipt1.num(/2) ia= ipt1.num(1,iel1) ideb=ipos(ia)+1 ifin=ipos(ia+1) if(ifin.lt.ideb) go to 15 do 16 ie=ideb,ifin iel=ind(ie) do inn=1,nbnn if(num(inn,iel).ne.ipt1.num(inn,iel1))go to 16 enddo ibon=1 lect(iel)=iel1 go to 15 16 continue 15 continue segsup ind,ipos idej=idej+1 if(idej.gt.mel2(/1)) then nmel1=mel2(/1)+50 segadj icorre endif mel2(idej)=ipt1 if(ibon.eq.0) then return endif icor(idej)=mlenti 100 continue melva1 = ielin C segact melva1 n1ptel = melva1.velche(/1) n1el = num(/2) n2ptel = melva1.ielche(/1) n2el = num(/2) segini melval do ielem=1,num(/2) iel1=lect(ielem) if (n2ptel.eq.0.and.n2el.eq.0) then do iptel = 1, n1ptel velche(iptel,ielem) = melva1.velche(iptel,iel1) enddo elseif (n1ptel.eq.0.and.n1el.eq.0) then do iptel = 1,n2ptel ielche(iptel,ielem) = melva1.ielche(iptel,iel1) enddo endif enddo C segdes,melva1 segact,melval ielout=melval RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales