fpshb8
C FPSHB8 SOURCE CB215821 24/04/12 21:16:03 11897 implicit real*8(a-h,o-z) implicit integer (i-n) -INC PPARAM -INC CCOPTIO -INC SMCHPOI -INC SMELEME -INC SMMODEL -INC SMCOORD character*4 moopt(2) segment tratra endsegment segment icpr(nbpts) segment icprp(nbpts) data moopt/'INTE','EXTE'/ * * verif que les surfaces interne ou externe existent * icpr=0 icprp=0 mchpoi=0 segact mmodel do ia=1,kmodel(/1) imodel=kmodel(ia) segact imodel if(nefmod.ne.260) then return endif meleme=imamod segact meleme if(lisref(/1).ne.2) then return endif ipt1=lisref(1) segact ipt1 if(ipt1.itypel.ne.8) then return endif segdes ipt1 ipt1=lisref(2) segact ipt1 if(ipt1.itypel.ne.8) then return endif segdes ipt1 enddo * * reperage du champpointy de pression si necessaire * if( mchpo1.ne.0) then segini icpr segact mchpo1 if(mchpo1.ipchp(/1).ne.1) then mchpoi=0 return endif msoupo=mchpo1.ipchp(1) segact msoupo ipt1=igeoc segact ipt1 do i=1,ipt1.num(/2) ia=ipt1.num(1,i) icpr(ia)=i enddo mpova2=ipoval segact mpova2 segdes msoupo,ipt1 endif * * lecture du mot interne ou externe et debut de la * fabrication du chpoint résultat * if(isur.eq.0) then * on a pas lu ni interne ni externe on essaye de savoir * sur qui le chpoint de pression est appliqué if(mchpo1.eq.0) then return endif isur1=0 do ia=1,kmodel(/1) imodel=kmodel(ia) meleme=imamod do 321 io=1,2 ipt3=lisref(io) segact ipt3 do iel=1,ipt3.num(/2) iell=ipt3.num(1,iel) if( icpr(iell).eq.0) go to 321 enddo if(isur1.eq.0) then isur1=io go to 322 else if(isur1.ne.io)then return endif endif 321 continue 322 continue enddo isur=isur1 endif * * reperage de la surface * segini icprp nbelem=0 do ia=1,kmodel(/1) imodel=kmodel(ia) meleme=imamod ipt3=lisref(isur) segact ipt3 do ib=1,ipt3.num(/2) do ic=1,ipt3.num(/1) ie=ipt3.num(ic,ib) if(icprp(ie).eq.0) then nbelem=nbelem+1 icprp(ie)=nbelem endif enddo enddo enddo * * debut de la fabrication du chpoint résultat * nbnn=1 nbref=0 nbsous=0 segini ipt4 nsoupo=1 nat=1 segini mchpoi ifopoi=ifour mtypoi='FORCES' mochde='crée par fpshb8 ' nc=3 segini msoupo ipchp(1)=msoupo segdes mchpoi n=nbelem segini mpoval ipoval=mpoval igeoc=ipt4 nocomp(1)='F ' nocomp(2)='FY ' nocomp(3)='FZ ' noharm(1)=nifour noharm(2)=nifour noharm(3)=nifour segdes msoupo do ib=1,icprp(/1) ia=icprp(ib) if(ia.ne.0) ipt4.num(1,ia)=ib enddo segdes ipt4 * * boucle sur les élements * segini tratra idim1=idim+1 do ir=1,kmodel(/1) imodel=kmodel(ir) meleme=imamod segact meleme ipt3=lisref(isur) segact ipt3 propel(2)=isur propel(1)=p do iel=1,num(/2) if( mchpo1.ne.0) then p=0.d0 do j=1,ipt3.num(/1) ih=ipt3.num(j,iel) if(icpr(ih).ne.0) then p=p+mpova2.vpocha(icpr(ih),1)/4 endif enddo propel(1)=p endif do io=1,8 ia=num(io,iel) xe(1,io)=xcoor((ia-1)*idim1+1) xe(2,io)=xcoor((ia-1)*idim1+2) xe(3,io)=xcoor((ia-1)*idim1+3) enddo * assemblage do io=1,8 ia=num(io,iel) ib=icprp(ia) if(ib.ne.0) then vpocha(ib,1)=out(1,io)+vpocha(ib,1) vpocha(ib,2)=out(2,io)+vpocha(ib,2) vpocha(ib,3)=out(3,io)+vpocha(ib,3) endif enddo enddo segdes imodel,meleme,ipt3 enddo segdes mpoval segdes mmodel segsup icprp,tratra if(icpr.ne.0) then segsup icpr segdes mpova2 endif return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales