devfb6
C DEVFB6 SOURCE BP208322 20/09/18 21:15:31 10718 & NPLB,IND,IND2,PDTS2,I,iannul,XCHPFB) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Opérateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * Calcul des forces de choc sur base B pour les liaisons de * * type LIGNE_LIGNE * * * * Paramètres: * * * * e ITYP type de la liaison. * * es FTOTB Forces extérieures totalisées sur la base B. * * e XPTB Tableau des déplacements des points * * e IPALB Renseigne sur la liaison. * * e IPLIB Tableau contenant les numéros "DYNE" de la liaison. * * e XPALB Tableau contenant les paramètres de la liaison. * * es XVALB Tableau contenant les variables internes de liaisons. * * es XCHPFB Tableau contenant les valeurs des futurs chpoints * * e NLIAB Nombre de liaisons sur la base B. * * e NPLB Nombre total de points intervenant dans les liaisons. * * e IND Indice du pas. * * e I numéro de la liaison. * * * * * * Auteur, date de création: * * * * Samuel DURAND : le 18 Octobre 1996 : Création * * * *--------------------------------------------------------------------* * INTEGER IPALB(NLIAB,*),IPLIB(NLIAB,*) REAL*8 XPALB(NLIAB,*),XPTB(NPLB,2,*),FTOTB(NPLB,*) REAL*8 XVALB(NLIAB,4,*),XCHPFB(2,NLIAB,4,*) * * Initialisations * * XVALB(I,IND,1) =0.D0 XVALB(I,IND,3) =0.D0 XVALB(I,IND,4) =0.D0 XVALB(I,IND,5) =0.D0 XVALB(I,IND,6) =0.D0 XVALB(I,IND,10) = 0.D0 XVALB(I,IND,11) = 0.D0 XVALB(I,IND,12) = 0.D0 IDIM = IPALB(I,3) IF (ITYP.EQ.35) THEN ID1 = 6 ELSE ID1 = 7 ENDIF NNOEES = IPALB(I,22) NNOEMA=IPALB(I,21) IFO =ID1 + (4 + NNOEMA+NNOEES)*IDIM ICH = 26 + NNOEMA+NNOEES ICG = 26 + 2*(NNOEMA+NNOEES) DO 5 J=1,(NNOEMA+NNOEES) IPALB(I,ICH+J) = 0 IPALB(I,ICG+J) = 0 DO 7 ID=1,IDIM XPALB(I,IFO+ID) = 0.D0 7 CONTINUE IFO = IFO + IDIM 5 CONTINUE IF (IDIM.EQ.3) THEN IDIMB=6 ELSE IDIMB=3 ENDIF DO 8 IP=1,NPLB XCHPFB(1,I,IND,IP)=0.D0 XCHPFB(2,I,IND,IP)=0.D0 8 CONTINUE ******************************************************************* * On s'intéresse au choc des noeuds esclaves sur le maillage maitre ******************************************************************* ILOCAL=IPALB(I,23) * Recherche des plus proches voisins * Boucle sur tous les noeuds esclaves DO 10 IESC=1,NNOEES &,IND2,PDTS2,I,IANNUL,IESC,0,XCHPFB) 10 CONTINUE *************************** * Traitement symétrique *************************** ISYM=IPALB(I,26) IF (ISYM.EQ.0.OR.ISYM.EQ.1) THEN * On renverse les roles du maitre et de l esclave IF (ISYM.EQ.0) THEN * symétrie globale * boucle sur tous les noeuds maitres DO 20 IMAI=1,NNOEMA &,IND2,PDTS2,I,IANNUL,IMAI,1,XCHPFB) 20 CONTINUE ELSE * symétrie locale * * IREF=1 INOE=1 ICH = 26 + NNOEES+NNOEMA ICG = 26 + 2*(NNOEES+NNOEMA) 30 CONTINUE IF (IPALB(I,ICH+INOE).EQ.1) THEN * Ce noeud a précédemment été sollicité &IND,IND2,PDTS2,I,IANNUL,INOE,1,XCHPFB) IMOINS=INOE-1 35 CONTINUE IF (IMOINS.NE.0.AND.IMOINS.NE.IREF) THEN * On regarde avant &NLIAB,NPLB,IND,IND2,PDTS2,I,IANNUL,IMOINS,1,XCHPFB) IAPRES=IPALB(I,ICG+IMOINS)+IPALB(I,ICH+IMOINS) IF (IAPRES.GT.IPALB(I,ICH+IMOINS)) THEN IMOINS=IMOINS-1 GOTO 35 ENDIF ENDIF INOE=INOE+1 36 CONTINUE * On regarde apres &NLIAB,NPLB,IND,IND2,PDTS2,I,IANNUL,INOE,1,XCHPFB) IAPRES=IPALB(I,ICH+INOE)+IPALB(I,ICG+INOE) IF (IAPRES.GT.IPALB(I,ICH+INOE)) THEN IF (INOE.NE.NNOEMA) THEN INOE=INOE+1 GOTO 36 ENDIF ELSE IREF=INOE IF (INOE.NE.NNOEMA) THEN INOE=INOE+1 GOTO 30 ENDIF ENDIF ELSE IF (INOE.NE.NNOEMA) THEN INOE=INOE+1 GOTO 30 ENDIF ENDIF ENDIF * On pondère les forces ICH = 26 + NNOEES+NNOEMA ICG = 26 + 2*(NNOEES+NNOEMA) IFO =ID1 + (4 + NNOEMA+NNOEES)*IDIM DO 21 INOE=1,(NNOEES+NNOEMA) IPALB(I,ICH+INOE)=IPALB(I,ICH+INOE)+IPALB(I,ICG+INOE) IF (IPALB(I,ICH+INOE).EQ.2) THEN DO 22 ID=1,IDIM FTOTB(IPLIB(I,INOE),ID)=FTOTB(IPLIB(I,INOE),ID)+ &XPALB(I,IFO+ID)/2. 22 CONTINUE XCHPFB(1,I,IND,IPLIB(I,INOE))= &XCHPFB(1,I,IND,IPLIB(I,INOE))/2. XCHPFB(2,I,IND,IPLIB(I,INOE))= &XCHPFB(2,I,IND,IPLIB(I,INOE))/2. ELSE DO 23 ID=1,IDIM FTOTB(IPLIB(I,INOE),ID)=FTOTB(IPLIB(I,INOE),ID)+ &XPALB(I,IFO+ID) 23 CONTINUE ENDIF IFO = IFO+IDIM 21 CONTINUE ELSE ****************** * pas de symétrie ****************** IFO =ID1 + (4 + NNOEMA+NNOEES)*IDIM DO 40 INOE=1,(NNOEMA+NNOEES) DO 42 ID=1,IDIM FTOTB(IPLIB(I,INOE),ID)=FTOTB(IPLIB(I,INOE),ID)+ &XPALB(I,IFO+ID) 42 CONTINUE IFO = IFO+IDIM 40 CONTINUE * * ENDIF * * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales