hbmfn2
C HBMFN2 SOURCE OF166741 26/05/11 21:15:10 12538 *======================================================================= * Calcul de FNL(X) et dFNLdX par AFT (Alternating Frequency Time) *======================================================================= & KTLIAB,KTPAS,KTFEX,KOCLFA,KOCLB1,MFNL) *----- Declarations ---------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMLREEL POINTEUR MFNL.MLREEL -INC TMDYNC POINTEUR JACV.MATWRK SEGMENT mwork REAL*8 XT(NDDL,NFFT),FT(NDDL,NFFT),VT(NDDL,NFFT) REAL*8 XAUX(NDDL,4),VAUX(NDDL,4),VCX(NFFT),VCV(NFFT) REAL*8 MATJX(NDDL,NDDL,NFFT), MATJV(NDDL,NDDL,NFFT) REAL*8 auxDL(2*NHBM+1,NFFT), JFR(2*NHBM+1,2*NHBM+1) REAL*8 auxVDL(2*NHBM+1,NFFT), JVFR(2*NHBM+1,2*NHBM+1) REAL*8 FNL2(NT),V1(NT) ENDSEGMENT c segment to call fftpack5.1 SEGMENT wfft51 real*8 wwsave(lensav) real*8 XX51(NCOU) real*8 XV51(NCOU) ENDSEGMENT INTEGER NP,NDDL,NT,NFFT REAL*8 PDT LOGICAL RIGIDE * Variables generalisees: coefficients de Fourier et frequence MTQ=KTQ * Matrices XK,KASM,XM,GAM,IGAM,DL MTKAM=KTKAM * Deformees modales MTPHI = KTPHI NSB = XPHILB(/1) NPLSB = XPHILB(/2) NA2 = XPHILB(/3) IDIMB = XPHILB(/4) * Liaisons sur base A MTLIAA = KTLIAA NLIAA = IPALA(/1) * Liaisons sur base B MTLIAB = KTLIAB NLIAB = IPALB(/1) NIP = XABSCI(/2) NPLB = JPLIB(/1) * Forces externes MTFEX=KTFEX * Truc local base A LOCLFA = KOCLFA * Truc local base B LOCLB1 = KOCLB1 * Inconnues sur un pas de temps (AFT) MTPAS=KTPAS RIGIDE =.FALSE. SEGINI,MWORK nmc = NT SEGINI,JACV c Initialisation FFT IERRD=0 NCOU=NFFT lenwrk = 2*NFFT lensav = NFFT + INT(LOG(REAL(NFFT))/LOG(TWO)) + 4 SEGINI,wfft51 *------ Time-domain displacements and velocities: XT, VT --------------- *------ Time-domain nonlinear forces, tangent matrix: FT, KTOTBA ------- c >>> Loop over time steps >>> PDT = ONE/NFFT DO I = 1,NFFT c initialisation des vecteurs du pas de temps DO L=1,NDDL XAUX(L,1) = XT(L,I) VAUX(L,1) = VT(L,I) ENDDO DO JJ=1,NDDL DO IJ=1,NDDL ENDDO ENDDO c Fnl(x,v) en base A (ddls modaux) IF (NLIAA.NE.0) THEN & KTOTXA,KTOTVA,.TRUE.) ENDIF c Fnl(x,-) en base B (ddls physique) IF (NLIAB.NE.0) THEN & XPHILB,JPLIB,NPLB,IDIMB,FTOTB,FTOTBA,XPTB,PDT,ZERO,I,IBASB,IPLSB, & INMSB,IORSB,NSB,NPLSB,NA2,1,FEXPSM,NPC1,IERRD,LOCLB1.FTESTB, & XABSCI,XORDON,NIP,FEXB,RIGIDE,IAROTA,XCHPFB, & KTOTXA,KTOTVA,KTOTXB,KTOTVB,.TRUE.) ENDIF c stockage de la force + JAC au pas de temps I DO J=1,NDDL FT(J,I) = FTOTA(J,1) DO K = 1,NDDL MATJX(J,K,I) = KTOTXA(J,K) MATJV(J,K,I) = KTOTVA(J,K) ENDDO ENDDO ENDDO c <<< end of Loop over time steps <<< c------ Fourier coefficients ------------------ c Initialize the WWSAVE array. IF (IERR.ne.0) RETURN c------ Fourier coefficients of nonlinear forces: FNL ------------------ * CALL DFT(FT,NDDL,NHBM,NFFT,IGAM,MFNL.PROG) DO IM = 1,NDDL DO KI = 1,NFFT XX51(KI) = FT(IM,KI) ENDDO IA = 0 DO KI = IM,NT-(NDDL-IM),NDDL IA = IA+1 ENDDO ENDDO c------ Fourier coefficients of nonlinear tangent matrix: dFNLdX ------- c >>> Loop over modes I,J >>> DO I = 1,NDDL DO J = 1,NDDL c Extract row vectors for the (i,j)-th derivative term DO IK = 1,NFFT VCX(IK) = MATJX(I,J,IK) VCV(IK) = MATJV(I,J,IK) ENDDO c First series of FFTs on the columns of diagonal dfdx matrix DO II = 1,NFFT DO KI = 1,NFFT ENDDO XX51(II) = VCX(II) XV51(II) = VCV(II) DO JK = 1,2*NHBM+1 auxDL(JK,II) = NFFT*XX51(JK) auxVDL(JK,II) = NFFT*XV51(JK) ENDDO ENDDO c Second series of FFTs on the rows of auxDL DO II = 1,2*NHBM+1 DO KI = 1,NFFT XX51(KI) = auxDL(II,KI) XV51(KI) = auxVDL(II,KI) ENDDO JFR(II,1) = XX51(1) JVFR(II,1) = XV51(1) DO JK = 2,2*NHBM+1 JFR(II,JK) = XX51(JK)*0.5D0 JVFR(II,JK) = XV51(JK)*0.5D0 ENDDO ENDDO c Assemble the total matrices JAC, JACV IL = 0 IL = IL + 1 IC = 0 DO NJ = J,NDDL*(2*NHBM)+J,NDDL IC = IC + 1 ENDDO ENDDO ENDDO ENDDO c <<< fin de la boucle sur les modes I,J <<< * Derivative of the velocity term * Total nonlinear tangent stiffness: dFNLdX = JAC + w*JACV*Nabla DO I = 1,NT DO J = 1,NT JAC(I,J) = JAC(I,J) + JACV.MATRC(I,J) ENDDO ENDDO c------ Menage ------------------ SEGSUP,MWORK,JACV RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales