d2vpas
C D2VPAS SOURCE BP208322 20/09/18 21:15:19 10718 c & FTOTA,FEXA,NPFEXA,NLIAA,NLSA,IPALA,IPLIA,XPALA,XVALA, & NLIAB,NLSB,NPLB,IDIMB,IPALB,IPLIB,JPLIB,XPALB,XVALB,FTOTB, & FTOTBA,XPTB,FEXPSM, & FINERT,IERRD,FTEST,FTEST2,WEXT,WINT, & XABSCI,XORDON,NIP,FTEXB,FEXB,RIGIDE,KTPHI,XCHPFB, & XOPM1,NB1,NB1K,NB1C,NB1M) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Opérateur DYNE : algorithme des DIFFERENCES CENTREES * * ________________________________________________ * * * * Calcul d'un pas de temps, appel aux s-p spécifiques. * * * * Paramètres: * * * * es Q1(,) Vecteur des déplacements généralisés * * es Q2(,) Vecteur des vitesses généralisées * * es Q3(,) Vecteur des accélérations généralisées * * es NA1 Nombre total d'inconnues en base A * * es NPC1 Nombre de pas de calcul - 1 * * es XK Vecteur des raideurs généralisées * * es XASM Vecteur des amortissements généralisés * * es XM Vecteur des masses généralisées * * e PDT pas de temps courant * * e T temps courant * * e NPAS Numéro du pas de temps * * es FTOTA Forces extérieures totalisées, sur la base A * * es FEXA Evolution des forces extérieures en base A * * e FTEXB Evolution des forces extérieures en base B * * e FEXB Forces extérieures sur la base B, servant au calcul * * des moments pour les corps rigides. * * e RIGIDE Vrai si corps rigide, faux sinon * * es IFEXA Numéro du mode correspondant au point de chargement * * (supprime le 2018-12-14 par bp) * * es NPFEXA Nombre de points de chargement * * e NLIAA Nombre de liaisons sur la base A * * e NLSA Nombre de liaisons A en sortie * * e IPALA Tableau renseignant sur le type de liaison (base A) * * e IPLIA Tableau contenant les numéros "DYNE" des points * * e XPALA Tableau contenant les paramètres des liaisons * * es XVALA Tableau contenant les variables internes de liaison A * * XPHILB Vecteur des deformees modales * * e NLIAB Nombre de liaisons sur la base B * * e NLSB Nombre de liaisons base B en sortie * * e NPLB Nombre total de points de liaisons (base B) * * e IDIMB Nombre de directions * * e IPALB Tableau renseignant sur le type de liaison * * e IPLIB Tableau contenant les numeros "DYNE" des points * * e JPLIB Tableau contenant les numeros "GIBI" des points * * e XPALB Tableau contenant les parametres des liaisons (base B) * * es XVALB Tableau contenant les variables internes de liaison B * * FTOTB Forces exterieures totalisees sur la base B * * e XABSCI Tableau contenant les abscisses de la loi plastique * * e XORDON Tableau contenant les ordonnees de la loi plastique * * e NIP Nbr de points dans l'evolution de la loi plastique * * FTOTBA Forces totales base B projetees base A * * XPTB Deplacements des points de liaison * * IBASB Appartenance des points de liaison a une sous-base * * IPLSB Position du point de liaison dans la sous-base * * INMSB Nombre de modes dans la sous-base * * IORSB Position du 1er mode de la sous-base dans ens. modes * * IAROTA Indique la position des modes de rotation * * NSB Nombre de sous-bases * * NPLSB Nombre de points de liaison par sous-base * * NA2 Nombre d'inconnues dans la sous-base * * FEXPSM Pseudo-Modes base B * * FINERT Forces d'inertie base B * * IERRD Indicateur d'erreur * * - FTEST Tableau local FTEST de la subroutine D2VLFA * * - FTEST2 Tableau local FTEST de la subroutine DEVLB1 * * e,s WEXT travail des forces exterieures * * e,s WINT travail des forces interieures (rigidite et * * amortissement et forces de liaison ) * * * *--------------------------------------------------------------------* * SEGMENT,MTPHI INTEGER IBASB(NPLB),IPLSB(NPLB),INMSB(NSB),IORSB(NSB) INTEGER IAROTA(NSB) REAL*8 XPHILB(NSB,NPLSB,NA2,IDIMB) ENDSEGMENT * * INTEGER IFEXA(*),IPALA(NLIAA,*),IPLIA(NLIAA,*) INTEGER IPALA(NLIAA,*),IPLIA(NLIAA,*) INTEGER IPALB(NLIAB,*),IPLIB(NLIAA,*),JPLIB(*) REAL*8 Q1(NA1,*),Q2(NA1,*),Q3(NA1,*) REAL*8 XVALA(NLIAA,4,*),XPALA(NLIAA,*),XM(NA1,*),XK(NA1,*) REAL*8 XPALB(NLIAB,*),XVALB(NLIAB,4,*),FEXPSM(NPLB,NPC1,2,*) REAL*8 XASM(NA1,*),FTOTA(NA1,*),FEXA(NPFEXA,NPC1,*) REAL*8 FTOTB(NPLB,*),FTOTBA(*),XPTB(NPLB,2,*),FINERT(NA1,*) REAL*8 WEXT(NA1,2),WINT(NA1,2) REAL*8 XABSCI(NLIAB,*),XORDON(NLIAB,*),FEXB(NPLB,2,*) REAL*8 FTEST(NA1,4), FTEST2(NPLB,6) REAL*8 FTEXB(NPLB,NPC1,2,*),XCHPFB(2,NLIAB,4,NPLB) cbp,2020-09 REAL*8 XOPM1(NB1,NB1,*),Q2DEMI(NA1),FAMOR(NA1) REAL*8 XOPM1(NB1,NB1,*),FAMOR(NA1) * TODO : KTOTXA et KTOTVA a allouer dans le segment LOCLFA ? REAL*8 KTOTXA(NA1,NA1), KTOTVA(NA1,NA1) * TODO : KTOTXB et KTOTVB a allouer dans le segment LOCLFB ? REAL*8 KTOTXB(NPLB,IDIMB,IDIMB),KTOTVB(NPLB,IDIMB,IDIMB) * c LOGICAL LWRITE LOGICAL RIGIDE * MTPHI = KTPHI NSB = XPHILB(/1) NPLSB = XPHILB(/2) NA2 = XPHILB(/3) C Parametres d'affichage (pour debuggage) c LWRITE=.false. c LWRITE=(NPAS.LE.20).OR.(MOD(NPAS,1000).EQ.0) c if(LWRITE) write(*,*) '-------- NPAS =',NPAS ************************************************************************ * Parametres temporels locaux ************************************************************************ tdeb = T tfin = T + PDT dt = PDT dt2=dt/2.D0 dt22=dt*dt2 ************************************************************************ * Déplacements généralisés ************************************************************************ DO 1 I = 1,NA1 Q1(I,1) = Q1(I,2) + Q2(I,2)*DT + Q3(I,2)*DT22 1 CONTINUE ************************************************************************ * Calcul des forces ************************************************************************ * Totalisation des forces extérieures pour la base A a la fin du pas & NPLB,IDIMB,RIGIDE) * estimation de la vitesse (ici plutot que dans DEVLF*, bp,2020-09): * \dot{q}_n ~ \dot{q}_{n+1/2} = ({q}_n - {q}_{n-1}) / dt * on utilise Q2(I,1) temporairement (il sera "bien" rempli à la fin du pas) DO I=1,NA1 Q2(I,1)=(Q1(I,1)-Q1(I,2))/dt ENDDO * Ajout des forces de liaison IF (NLIAA.NE.0) THEN & NLIAA,dt,tfin,NPAS,1,FINERT,0,FTEST, & KTOTXA,KTOTVA,.FALSE.) ENDIF IF (NLIAB.NE.0) THEN & XPHILB,JPLIB,NPLB,IDIMB,FTOTB,FTOTBA,XPTB,dt,tfin, & NPAS,IBASB,IPLSB,INMSB,IORSB,NSB,NPLSB,NA2,1, & FEXPSM,NPC1,IERRD,FTEST2,XABSCI,XORDON,NIP, & FEXB,RIGIDE,IAROTA,XCHPFB, & KTOTXA,KTOTVA,KTOTXB,KTOTVB,.FALSE.) IF (IERRD.NE.0) RETURN ENDIF * Ajout des forces de raideur * F = F - K Q_1 * forces d'amortissement IF (NB1C.GT.1) THEN cbp,2020-09 DO 3 I=1,NA1 cbp,2020-09 Q2DEMI(i)=(q1(i,1) - q1(i,2))/dt cbp,2020-09 3 CONTINUE DO 4 I=1,NA1 FAMOR(I) = 0.D0 DO 42 J=1,NB1 cbp,2020-09 FAMOR(I) = FAMOR(I) + XASM(I,J) * Q2DEMI(J) FAMOR(I) = FAMOR(I) + XASM(I,J) * Q2(J,1) 42 CONTINUE 4 CONTINUE ELSE DO 41 I=1,NA1 cbp,2020-09 FAMOR(I) = XASM(I,1) * (q1(I,1) - q1(I,2))/dt FAMOR(I) = XASM(I,1) * Q2(I,1) 41 CONTINUE ENDIF ************************************************************************ * Accelerations et Vitesses généralisées ************************************************************************ c -Cas C ou M pleine IF (NB1.NE.1) THEN DO 5 I=1,NA1 Q3(I,1) = 0.D0 DO 6 J=1,NB1 Q3(I,1) = Q3(I,1) + XOPM1(I,J,1)*(FTOTA(J,1)-FAMOR(J)) 6 CONTINUE * Vitesses généralisées Q2(I,1) = Q2(I,2) + (Q3(I,2) + Q3(I,1))*DT2 5 CONTINUE c -Cas C et M diagonales ELSE DO 51 I=1,NA1 c UNSM = 1.D0 / ( XM(I,1) - FINERT(I,1) ) cbp : pour les "vraies" differences centrees, il faut inclure l'amortissement UNSM = 1.D0 / ( XM(I,1) + dt2*XASM(I,1) - FINERT(I,1) ) Q3(I,1) = (FTOTA(I,1)-FAMOR(I)) * UNSM c Q3(I,1) = (FTOTA(I,1)-FAMOR(I)) / (XM(I,1) - FINERT(I,1)) * Vitesses généralisées Q2(I,1) = Q2(I,2) + (Q3(I,2) + Q3(I,1))*DT2 51 CONTINUE ENDIF ************************************************************************ * calcul des travaux + decalage pour pas suivant ************************************************************************ & XASM,NPC1,NB1C) END
© Cast3M 2003 - Tous droits réservés.
Mentions légales