dbbcf
C DBBCF SOURCE CB215821 20/11/25 13:24:02 10792
* 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 LX, on suppose qu'il n'y a qu'une inconnue
* par noeud dédoublé
if (ipt8.eq.0) return
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.'LX') 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)=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
n=ic
nc=1
segadj mpova1
igeoc=ipt1
ipoval=mpova1
segsup mpoval
11 continue
10 continue
segsup valc,ivalc,trav
end
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales