vervol
C VERVOL SOURCE JC220346 16/11/29 21:15:40 9221 C verification que le pt ip n'est pas dans un volume C ayant une arete ipi ipj C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC TDEMAIT dimension ipp(8),ivtemp(50) np=0 if (ip1.gt.0) then np=np+1 ipp(np)=ip1 endif if (ip2.gt.0) then np=np+1 ipp(np)=ip2 endif if (ip3.gt.0) then np=np+1 ipp(np)=ip3 endif if (ip4.gt.0) then np=np+1 ipp(np)=ip4 endif if (ip5.gt.0) then np=np+1 ipp(np)=ip5 endif if (ip6.gt.0) then np=np+1 ipp(np)=ip6 endif if (ip7.gt.0) then np=np+1 ipp(np)=ip7 endif if (ip8.gt.0) then np=np+1 ipp(np)=ip8 endif * return * * boucle sur les elements * nvt=0 do 9 iq=1,np ip=ipp(iq) do 9 ipf=1,40 if=npf(ipf,iq) if (if.eq.0) goto 5 do 6 ifv=1,2 iv=nfv(ifv,if) if (iv.eq.0) goto 9 do 8 ivt=1,nvt if (ivtemp(ivt).eq.iv) goto 7 8 continue nvt=nvt+1 ivtemp(nvt)=iv 7 continue 6 continue 5 continue 9 continue do 10 ivt=1,nvt iv=ivtemp(ivt) it=0 do 20 ip=1,8 if (ivol(ip,iv).eq.ip1) it=it+1 if (ivol(ip,iv).eq.ip2) it=it+1 if (ivol(ip,iv).eq.ip3) it=it+1 if (ivol(ip,iv).eq.ip4) it=it+1 if (ivol(ip,iv).eq.ip5) it=it+1 if (ivol(ip,iv).eq.ip6) it=it+1 if (ivol(ip,iv).eq.ip7) it=it+1 if (ivol(ip,iv).eq.ip8) it=it+1 20 continue if (it.lt.2) goto 10 * l'element a 2 pt commun avec le notre ==> test supplementaire * cas du tetraedre if (ivol(9,iv).eq.25) then vv=v1+v2+v3+v4 * write (6,*) ' vervol vv v1 v2 v3 v4 ',vv,v1,v2,v3,v4 if (vv*v1.gt.0..and.vv*v2.gt.0..and.vv*v3.gt.0..and. endif * write (6,*) ' vervol element incorrect tetraedre' * write (6,*) ' vervol point teste ',ipt * write (6,*) xyz(1,ipt),xyz(2,ipt),xyz(3,ipt) ipv=ivol(1,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(2,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(3,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(4,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) return endif * cas de la pyramide if (ivol(9,iv).eq.35) then vv=v1+v2+v3+v4+v5+v6+v7+v8 if (vv*v1.gt.0..and.vv*v2.gt.0..and.vv*v3.gt.0..and. * vv*v4.gt.0..and.vv*v5.gt.0..and.vv*v6.gt.0..and. endif * write (6,*) ' vervol element incorrect pyramide' * write (6,*) xyz(1,ipt),xyz(2,ipt),xyz(3,ipt) ipv=ivol(1,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(2,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(3,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(4,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(5,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) return endif * cas du prisme if (ivol(9,iv).eq.30) then vv=v1+v2+v3+v4+v5+v6+v7+v8+v9+v10+v11+v12+v13+v14 if (vv*v1.gt.0..and.vv*v2.gt.0..and.vv*v3.gt.0..and. * vv*v4.gt.0..and.vv*v5.gt.0..and.vv*v6.gt.0..and. * vv*v7.gt.0..and.vv*v8.gt.0..and.vv*v9.gt.0..and. * vv*v10.gt.0..and.vv*v11.gt.0..and.vv*v12.gt.0..and. endif * write (6,*) ' vervol element incorrect prisme ' * write (6,*) ' vervol point teste ',ipt IF (IVERB.EQ.1) write (6,*) xyz(1,ipt),xyz(2,ipt),xyz(3,ipt) ipv=ivol(1,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(2,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(3,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(4,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(5,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(6,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) return endif * cas du cube if (ivol(9,iv).eq.20) then vv=v1+v2+v3+v4+v5+v6+v7+v8+v9+v10+v11+v12+ * v13+v14+v15+v16+v17+v18+v19+v20+v21+v22+v23+v24 if (vv*v1.gt.0..and.vv*v2.gt.0..and.vv*v3.gt.0..and. * vv*v4.gt.0..and.vv*v5.gt.0..and.vv*v6.gt.0..and. * vv*v7.gt.0..and.vv*v8.gt.0..and.vv*v9.gt.0..and. * vv*v10.gt.0..and.vv*v11.gt.0..and.vv*v12.gt.0..and. * vv*v13.gt.0..and.vv*v14.gt.0..and.vv*v15.gt.0..and. * vv*v16.gt.0..and.vv*v17.gt.0..and.vv*v18.gt.0..and. * vv*v19.gt.0..and.vv*v20.gt.0..and.vv*v21.gt.0..and. * vv*v22.gt.0..and.vv*v23.gt.0..and.vv*v24.gt.0.) endif * write (6,*) ' vervol element incorrect cube' * write (6,*) ' vervol point teste ',ipt * write (6,*) xyz(1,ipt),xyz(2,ipt),xyz(3,ipt) ipv=ivol(1,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(2,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(3,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(4,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(5,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(6,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(7,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) ipv=ivol(8,iv) * write (6,*) ' pt du volume ',ipv * write (6,*) xyz(1,ipv),xyz(2,ipv),xyz(3,ipv) return endif 10 continue end
© Cast3M 2003 - Tous droits réservés.
Mentions légales