C D2VFX0 SOURCE CHAT 05/01/12 22:35:18 5004 C DEVFX0 SOURCE KK2000 97/09/08 21:16:59 2809 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Opérateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * Remplissage des tableaux représentant les chargements, en * * faisant les interpolations nécessaires. * * * * Paramètres: * * * * e ITCHAR Table représentant les chargements * * e ITINIT Table représentant les conditions initiales * * e KTNUM Segment contenant les paramètres numériques * * e KPREF Segment des points de référence * * es KTFEX Segment contenant les chargements libres * * * * Auteur, date de création: * * * * Denis ROBERT-MOUGIN, le 25 mai 1989. * * * *--------------------------------------------------------------------* * -INC CCOPTIO -INC SMCHARG -INC SMCHPOI -INC SMELEME -INC SMLREEL * * FEXA(.,.,1) valeur au pas m * FEXA(.,.,2) valeur au pas m - 1 * SEGMENT,MTNUM REAL*8 XDT(NPC1),XTEMPS(NPC1) ENDSEGMENT SEGMENT,MTFEX REAL*8 FEXA(NPFEXA,NPC1,2) REAL*8 FEXPSM(NPLB,NPC1,2,IDIMB) REAL*8 FTEXB(NPLB,NPC1,2,IDIM) INTEGER IFEXA(NPFEXA),IFEXB(NPFEXB) ENDSEGMENT SEGMENT,MTRAV REAL*8 FTCHG(NPC1) ENDSEGMENT SEGMENT,MPREF INTEGER IPOREF(NPREF) ENDSEGMENT LOGICAL L0,L1,REPRIS,RIGIDE CHARACTER*8 TYPRET,CHARRE * MTNUM = KTNUM MTFEX = KTFEX MPREF = KPREF NPREF = IPOREF(/1) NPC1 = XDT(/1) * * On extrait les chargements de la table * TYPRET = ' ' & TYPRET,I1,X1,CHARRE,L1,ICHAR1) IF (ICHAR1.NE.0 .AND. TYPRET.EQ.'CHARGEME') THEN MCHARG = ICHAR1 SEGACT,MCHARG NCHAR = KCHARG(/1) IXA = 0 * * Boucle sur les chargements élémentaires * DO 10 ICHAR=1,NCHAR ICHARG = KCHARG(ICHAR) SEGACT,ICHARG IF(CHATYP.NE.'CHPOINT '.OR.CHAMOB(ICHAR).NE.'STAT' & .OR.CHALIE(ICHAR).NE.'LIE ') THEN SEGDES ICHARG SEGDES MCHARG RETURN ENDIF MLR1 = ICHPO2 MLR2 = ICHPO3 MTRAV = KTRAV MCHPOI = ICHPO1 SEGACT,MCHPOI NSOUPO=IPCHP(/1) DO 20 I=1,NSOUPO MSOUPO = IPCHP(I) SEGACT,MSOUPO MELEME = IGEOC SEGACT,MELEME NC = NOCOMP(/2) MPOVAL = IPOVAL SEGACT,MPOVAL N = VPOCHA(/1) DO 30 J=1,N DO 35 K=1,NC KNOE = NUM(1,J) IF (IPOS.NE.0) THEN IXA = IXA + 1 XFORCA = VPOCHA(J,K) IFEXA(IPOS) = IXA * * Boucle sur les pas de temps * DO 36 IT=1, (NPC1 - 1) FEXA(IPOS,IT,2) = FEXA(IPOS,IT,2) + & ( XFORCA * FTCHG(IT) ) IT2 = IT + 1 FEXA(IPOS,IT,1) = FEXA(IPOS,IT,1) + & ( XFORCA * FTCHG(IT2) ) 36 CONTINUE * end do ENDIF 35 CONTINUE * end do 30 CONTINUE * end do SEGDES,MPOVAL,MELEME,MSOUPO 20 CONTINUE * end do SEGDES,MCHPOI,ICHARG SEGSUP,MTRAV 10 CONTINUE * end do SEGDES,MCHARG ELSE TYPRET = ' ' & TYPRET,I1,X1,CHARRE,L1,ICHAR2) IF ((ICHAR2.EQ.0).OR.(.NOT.RIGIDE)) THEN RETURN ENDIF ENDIF * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales