dbbcd
C DBBCD SOURCE PV 21/01/29 21:15:15 10866 * dedualise les valeurs d'un champ en fonction d'un meleme de dedoublement de noeuds * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMCHPOI -INC SMCOORD segment valc(ipt8.num(/2)) segment ivalc(ipt8.num(/2)) segment trav integer lag1(nbpts) endsegment * ne fonctionne que pour des FLX, on suppose qu'il n'y a qu'une inconnue * par noeud dédoublé if (ipt8.eq.0) return segact mchpoi,ipt8 ** call echpo(mchpoi,1) ** call ecmail(ipt8,1) ** segact mchpoi,ipt8 segini valc,ivalc segini trav do 300 i=1,ipt8.num(/2) lag1(ipt8.num(1,i))=i lag1(ipt8.num(2,i))=i 300 continue do 10 isoupo=1,ipchp(/1) msoupo=ipchp(isoupo) segact msoupo*mod if (nocomp(/2).ne.1) goto 11 if (nocomp(1).ne.'FLX') goto 11 meleme=igeoc mpoval=ipoval segini,ipt1=meleme,mpova1=mpoval nbnn=ipt1.num(/1) nbelem=ipt1.num(/2) nbele=nbelem nbsous=0 nbref=0 ic=0 do 100 j=1,nbele val=mpova1.vpocha(j,1) if (lag1(ipt1.num(1,j)).ne.0) then jj=lag1(ipt1.num(1,j)) valc(jj)= +val if (ivalc(jj).ne.0) then ipt1.num(1,ivalc(jj))=ipt8.num(1,jj) mpova1.vpocha(ivalc(jj),1)=valc(jj) goto 100 endif ivalc(jj)=ic+1 endif 110 continue ic=ic+1 ipt1.num(1,ic)=ipt1.num(1,j) mpova1.vpocha(ic,1)=val 100 continue nbelem=ic segadj ipt1 ** segdes ipt1 n=ic nc=1 segadj mpova1 ** segdes mpova1 igeoc=ipt1 ipoval=mpova1 segsup mpoval ** segdes meleme 11 continue ** segdes msoupo 10 continue segsup valc,ivalc,trav return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales