vechpo
C VECHPO SOURCE PV 21/11/15 21:15:00 11188 c==================================================================== c Pour appel par resour c verif que ipchp3 est petit devant ipchp1 et ipchp2 et ipchp4 C erreur: C il reste un residu non converti en multiplicateur C c==================================================================== IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC SMCHPOI -INC SMELEME -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCREEL -INC SMCOORD SEGMENT TEST END SEGMENT SEGMENT LSCOMP ENDSEGMENT CHARACTER*(LOCOMP) nom2 ** write(6,*) ' vechpo ipchp1 ' ** call ecchpo(ipchp1,0) ** write(6,*) ' vechpo ipchp2 ' ** call ecchpo(ipchp2,0) ** write(6,*) ' vechpo ipchp3 ' ** call ecchpo(ipchp3,0) ** * preparation ibin qui indique les ddl de ipchp1 * on ne teste ipchp3 que sur ces ddl nbcompo=nbcomp segini lscomp mchpoi=ipchp1 segact mchpoi do icp=1,ipchp(/1) msoupo=ipchp(icp) segact msoupo segadj lscomp do icomp=1,nocomp(/2) do ils=1,ncompo if (lacomp(ils).eq.nocomp(icomp)) goto 10 enddo nbcompo=nbcompo+1 lacomp(nbcompo)=nocomp(icomp) 10 continue enddo enddo segadj lscomp ** write(6,*) ' composantes ',(lacomp(i),i=1,lacomp(/2)) nbno=nbpts segini test do icp=1,ipchp(/1) msoupo=ipchp(icp) segact msoupo meleme=igeoc segact meleme do icomp=1,nocomp(/2) if (lacomp(ils).eq.nocomp(icomp)) goto 20 enddo 20 continue do iel=1,num(/2) ibin(num(1,iel),ils)=1 enddo enddo enddo nbsous=0 nbref=0 nbnn=1 * on multiplie par 1d4 parce qu'on divisera plus trard xcrit=xpetit*1d4 xcritLX=xpetit*1d4 mchpoi=ipchp1 segact mchpoi do icp=1,ipchp(/1) msoupo=ipchp(icp) segact msoupo mpoval=ipoval segact mpoval ** write(6,*) ' vechpo 1 nocomp ',nocomp(/2),nocomp(1) if (nocomp(/2).eq.1.and.nocomp(1).eq.'FLX') then do i=1,vpocha(/1) xcritlx=max(abs(vpocha(i,1)),xcritlx) enddo else do ic=1,vpocha(/2) do i=1,vpocha(/1) xcrit=max(abs(vpocha(i,ic)),xcrit) enddo enddo endif enddo mchpoi=ipchp2 segact mchpoi do icp=1,ipchp(/1) msoupo=ipchp(icp) segact msoupo mpoval=ipoval segact mpoval ** write(6,*) ' vechpo 2 nocomp ',nocomp(/2),nocomp(1) if (nocomp(/2).eq.1.and.nocomp(1).eq.'FLX') then do i=1,vpocha(/1) xcritlx=max(abs(vpocha(i,1)),xcritlx) enddo else do ic=1,vpocha(/2) do i=1,vpocha(/1) xcrit=max(abs(vpocha(i,ic)),xcrit) enddo enddo endif enddo mchpoi=ipchp4 segact mchpoi do icp=1,ipchp(/1) msoupo=ipchp(icp) segact msoupo mpoval=ipoval segact mpoval ** write(6,*) ' vechpo 2 nocomp ',nocomp(/2),nocomp(1) if (nocomp(/2).eq.1.and.nocomp(1).eq.'FLX') then do i=1,vpocha(/1) xcritlx=max(abs(vpocha(i,1)),xcritlx) enddo else do ic=1,vpocha(/2) do i=1,vpocha(/1) xcrit=max(abs(vpocha(i,ic)),xcrit) enddo enddo endif enddo xcritlx=xcritlx*1d-4 +xpetit/xzprec xcrit=xcrit*1d-4 +xpetit/xzprec ** write(6,*) ' vechpo xcritlx xcrit ',xcritlx,xcrit xcrit=max(xcrit,xcritlx) * * test avec ipchp3 mchpoi=ipchp3 segact mchpoi iwr=0 do icp=1,ipchp(/1) msoupo=ipchp(icp) segact msoupo mpoval=ipoval segact mpoval meleme = igeoc segact meleme do icomp=1,vpocha(/2) nom2=nocomp(icomp) do j=1,vpocha(/1) * pas de test sur le moment car probleme d'ordre de grandeur avec les forces if(nom2(1:1).ne.'M') then if(nom2.ne.'FLX '.and.abs(vpocha(j,icomp)).gt.xcrit) then interr(1)=num(1,j) moterr(1:4)=nom2 do ils=1,ncompo if (nom2.eq.lacomp(ils)) goto 30 enddo 30 continue if (ipt8.eq.0) then if (isouci.eq.0) then iwr=iwr+1 if (iwr.lt.2) write(6,*) ' vpocha ',vpocha(j,icomp),nom2,xcrit else call soucis(149) endif else if (ibin(num(1,j),ils).eq.1) then nbelem=ipt8.num(/2)+1 segadj ipt8 ipt8.num(1,nbelem)=num(1,j) endif endif endif endif enddo enddo enddo segsup test,lscomp return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales