mocon1
C MOCON1 SOURCE MB234859 26/05/13 21:15:05 12548 C---------------------------------------------------------------------- C Creation du maillage support des conditions de contact C C Ce maillage permet d'associer un noeud de la surface de contact aux C conditions de contact-frottement qui le concernent : C 1 condition de contact par noeuds C 1 a 2 condition(s) de frottement par noeuds, selon la dimension. C Le maillage cree est constitue d'elements formes de NBNN noeuds. C En 2D : C noeud 1 : noeud support du LX de la cond. de contact C noeud 2 a NBNN-1 : noeud(s) associe(s) aux conditions C noeud NBNN : noeud support du LX de la cond. de frottement C En 3D : C noeud 1 : noeud support du LX de la cond. de contact C noeud 2 a NBNN-1 : noeud(s) associe(s) aux conditions C noeud NBNN-1 a NBNN : noeuds support du LX des cond. de frottement C Le nombre de noeuds NN associe a une condition depend de la formulation C Pour les cas MESC et SYME, NN=1 et pour le cas FAIB NN=IDIM C C Remarque : les conditions s'appuie sur des elements SEG2 en 2D et C TRI3 en 3D. Si les maillages des surfaces de contact ne sont pas C constitues de ces elements, ces derniers sont changes lorsque cela C est possible ou un message d'erreur est affiche. C C Entrees : C -------- C IPT2 : Pointeur sur le maillage d'une des surfaces en contact C IPT3 : Pointeur sur le maillage d'une des surfaces en contact C IMFRO : Entier valant 3 en presence de frottement C ITYPC : Formulation des conditions (voir modeli.eso) C 0 -> FROCABLE C 1 -> MESC C 2 -> FAIB C 3 -> SYME C C Sorties : C -------- C IPT1 : Pointeur sur le maillage support du modele de contact. C IPT6 : Pointeur sur le second maillage support du modele de contact C (uniquement pour la formulation SYME) C IPT4 : Pointeur sur le maillage constitue d'elements adaptes C pour l'ecriture de conditions de contact C (IPT3 ou cree par MOCON4) C IPT5 : Pointeur sur le maillage constitue d'elements adaptes C pour l'ecriture de conditions de contact C (IPT3 ou cree par MOCON4) C IPRIG : Si necessaire, pointeur sur un objet MRIGID imposant des C conditions sur les noeuds milieu. Sinon vaut 0 C C Remarque : C ---------- C IPT2 et IPT3 peuvent etre des constitues de plusieurs type d'elements C (objet geometrie complexe), d'ou l'utilisation de ACTOBJ pour activer C tous les sous-maillages. C IPT1, IPT4 et IPT5 sont des maillages constitue d'un seul type d'elmt C (objet geometrie simple), d'ou l'utilisation directe de SEGDES. C C Appelee par : MODELI C---------------------------------------------------------------------- C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMELEME -INC CCGEOME C SEGMENT ICPR(NBPTS) DIMENSION XX(4) C IPRIG=0 IFOIS=1 IPT4=0 IPT5=0 C C C Nombre de LX NBL=1 IF (IMFRO.EQ.3) NBL=IDIM C IF (ITYPC.EQ.0) THEN MELEME=IPT2 IF (IERR.NE.0) RETURN ELSE CALL MOCON4(IPT2,IPT4,IPRI2) CALL MOCON4(IPT3,IPT5,IPRI3) MELEME=IPT5 C IF (IPRI2*IPRI3.NE.0) THEN ELSEIF (IPRI2.NE.0) THEN IPRIG=IPRI2 ELSEIF (IPRI3.NE.0) THEN IPRIG=IPRI3 ENDIF C IF (ITYPC.EQ.2) GOTO 1000 C ENDIF C C FORMULATIONS AUTRES QUE FAIBLE C ------ C 500 CONTINUE C NBELT=NUM(/2) NBNOE=NUM(/1) C C Remplissage icpr pour avoir le nombre de noeuds segini icpr icp=0 do j=1,NBELT do i=1,NBNOE ip=num(i,j) if(icpr(ip).eq.0) then icp=icp+1 icpr(ip)=icp endif enddo enddo C nbnn=nbl+1 nbelem=icp IF (ITYPC.EQ.0) nbelem=nbelem*idim nbsous=0 nbref=0 segini,ipt1 ipt1.itypel=22 C do i=1,nbpts if(icpr(i).ne.0) then ip=icpr(i) ipt1.num(2,ip)=i nbpts=nbpts+1 ipt1.num(1,ip)=nbpts if(nbl.ge.2) then nbpts=nbpts+1 ipt1.num(3,ip)=nbpts endif if(nbl.ge.3) then nbpts=nbpts+1 ipt1.num(4,ip)=nbpts endif endif enddo C C Modele FROCABLE if (ITYPC.eq.0) then do j=nbelem/idim,1,-1 ipt1.num(1,(j-1)*idim+1)=ipt1.num(1,j) ipt1.num(2,(j-1)*idim+1)=ipt1.num(2,j) if(nbl.ge.2) ipt1.num(3,(j-1)*idim+1)=ipt1.num(3,j) if(nbl.ge.3) ipt1.num(4,(j-1)*idim+1)=ipt1.num(4,j) nbpts=nbpts+1 ipt1.num(1,(j-1)*idim+2)=nbpts ipt1.num(2,(j-1)*idim+2)=ipt1.num(2,j) if(nbl.ge.2) then nbpts=nbpts+1 ipt1.num(3,(j-1)*idim+2)=nbpts endif if(nbl.ge.3) then nbpts=nbpts+1 ipt1.num(4,(j-1)*idim+2)=nbpts endif if(idim.eq.3) then nbpts=nbpts+1 ipt1.num(1,(j-1)*idim+3)=nbpts ipt1.num(2,(j-1)*idim+3)=ipt1.num(2,j) if(nbl.ge.2) then nbpts=nbpts+1 ipt1.num(3,(j-1)*idim+3)=nbpts endif if(nbl.ge.3) then nbpts=nbpts+1 ipt1.num(4,(j-1)*idim+3)=nbpts endif endif enddo endif C C Ajouter les noeuds support des LX SEGADJ,MCOORD il1=0 il2=0 do j=1,ipt1.num(/2) ip=ipt1.num(2,j) il=ipt1.num(1,j) if(nbl.ge.2) il1=ipt1.num(3,j) if(nbl.ge.3) il2=ipt1.num(4,j) do id=1,idim+1 xc=xcoor((ip-1)*(idim+1)+id) xcoor((il-1)*(idim+1)+id)=xc if(il1.ne.0) xcoor((il1-1)*(idim+1)+id)=xc if(il2.ne.0) xcoor((il2-1)*(idim+1)+id)=xc enddo enddo C SEGSUP,ICPR C IF (ITYPC.EQ.3) THEN IF (IFOIS.EQ.1) THEN IFOIS=2 MELEME=IPT4 ITEMP=IPT1 GOTO 500 ELSE IPT6=IPT1 IPT1=ITEMP SEGDES,IPT6 ENDIF ENDIF GOTO 2000 C============= 1000 CONTINUE C============= C C Formulation faible NBEL4=IPT4.NUM(/2) NBEL5=IPT5.NUM(/2) NBNOE=IPT4.NUM(/1) NBELEM=NBEL4+NBEL5 NBNN=NBNOE+NBL NBSOUS=0 NBREF=0 SEGINI,IPT1 IPT1.ITYPEL=22 C NBPTSO=NBPTS NBPTS =NBPTS+NBELEM*NBL SEGADJ,MCOORD C MELEME=IPT5 NBELEM=NBEL5 L=0 C 1500 CONTINUE C DO J=1,NBELEM C L=L+1 DO K=1,IDIM+1 XX(K)=0.D0 ENDDO DO I=1,NBNOE IP=NUM(I,J) IPT1.NUM(I+1,L)=IP DO K=1,IDIM+1 XC=XCOOR((IDIM+1)*(IP-1)+K) XX(K)=XX(K)+XC ENDDO ENDDO DO K=1,IDIM+1 XX(K)=XX(K)/NBNOE ENDDO C IPT1.NUM(1,L)=NBPTSO+1 IF(NBL.GE.2) IPT1.NUM(NBNOE+2,L)=NBPTSO+2 IF(NBL.GE.3) IPT1.NUM(NBNOE+3,L)=NBPTSO+3 C DO K=1,IDIM+1 XC=XX(K) XCOOR((IDIM+1)*((NBPTSO+1)-1)+K)=XC IF(NBL.GE.2) XCOOR((IDIM+1)*((NBPTSO+2)-1)+K)=XC IF(NBL.GE.3) XCOOR((IDIM+1)*((NBPTSO+3)-1)+K)=XC ENDDO NBPTSO=NBPTSO+NBL C ENDDO C IF (IFOIS.EQ.1) THEN IFOIS=2 MELEME=IPT4 NBELEM=NBEL4 GOTO 1500 ENDIF C============= 2000 CONTINUE C============= C IF (IPT4.NE.0) SEGDES,IPT4 IF (IPT5.NE.0) SEGDES,IPT5 SEGDES,IPT1 C END
© Cast3M 2003 - Tous droits réservés.
Mentions légales