C DYNEPL SOURCE CHAT 05/01/12 23:18:36 5004 SUBROUTINE DYNEPL(IPRIG,ICHT1,ICHT2,ICHT3,ICHT4, & IPCGT,IDDL,NDDL,DT,NPAS,NINS,IPCHM,IPPT,ITAB2) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) ************************************************************************ * * D Y N E P L * ----------- * * FONCTION: * --------- * UTILITAIRE DE L'OPERATEUR "DYNE" * INITIALISATION ET GESTION TEMPORELLE DE L'ALGORITHME * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * IPRIG (E) TABLEAU DE POINTEURS SUR DES RIGIDITES, AVEC : * IPRIG(1) POINTEUR SUR L'OBJET M * IPRIG(2) POINTEUR SUR L'OBJET K * IPRIG(3) POINTEUR SUR L'OBJET A * IPRIG(4) POINTEUR SUR L'OBJET Z * ICHT (E) POINTEUR SUR LE SEGMENT MCHT ( ACTIF ) * IPCGT (E) TABLEAU DE POINTEURS SUR DES CHARGEMENTS, AVEC : * IPCGT(1) POINTEUR SUR CGB * IPCGT(2) POINTEUR SUR CGF * IDDL (E) NOMBRE DE DDL LIES * NDDL (E) NOMBRE DE DDL * DT (E) PAS DE TEMPS * NPAS (E) NOMBRE DE PAS DE CALCUL * NINS (E) ON VEUT UN RESULTAT TOUS LES NINS PAS DE CALCUL * IPCHM (E) TABLEAU DE POINTEURS SUR LES CHAMPS INITIAUX, AVEC : * IPCHM(1) POINTEUR SUR U0 * IPCHM(2) POINTEUR SUR V0 * IPPT (E) TABLEAU DE POINTEURS, AVEC : -1 * IPPT(1) POINTEUR SUR LE VECTDOUB CONTENANT M * ( ACTIF ) * IPPT(2) POINTEUR SUR UN SEGMENT MBLO ( ACTIF ) * IPPT(3) POINTEUR SUR UN SEGMENT MBLO ( ACTIF ) * IPPT(4) POINTEUR SUR LE SEGMENT MUCTRA ( ACTIF ) * IPPT(5) POINTEUR SUR LE SEGMENT MMATRI ( ACTIF ) * IPPT(6) POINTEUR SUR LE SEGMENT MZZZ ( ACTIF ) * ITAB2 (S) POINTEUR SUR LA TABLE RESULTAT * * AUTEUR, DATE DE CREATION: * ------------------------- * DENIS ROBERT, LE 20 OCTOBRE 1988. * REVU ET CORRIGE DECEMBRE 89 MP * * LANGAGE: * -------- * ESOPE + FORTRAN77 * ************************************************************************ * * MODULES UTILISES: * -INC CCOPTIO -INC SMTABLE * PARAMETER ( O0= 0.D0,O1=-1.D0,O2=2.D0,O3=-0.5D0 ) * INTEGER IPCHN(6),IPRIG(4),IPCHM(2),IPPT(6),IPCGT(2) * *--- SEGMENT CONTENANT LES VECTEURS DE TRAVAIL POUR "DYNEPA" * * SEGMENT,MVPA * REAL*8 VCHT1(NDDL),VCHT2(NDDL),VCHT3(NDDL) * REAL*8 VEC1(NDDL),VEC2(NDDL),VEC3(NDDL) * REAL*8 VEC4(IDDL),VEC5(IDDL),VEC6(IDDL) * REAL*8 VCH1(NDDL),VCH2(NDDL),VCH3(NDDL) * REAL*8 VCH4(NDDL),VCH5(NDDL),VCH6(NDDL) * ENDSEGMENT * VCHT1 ---> MCHT41 * VCHT2 ---> MCHT42 * VCHT3 ---> MCHT43 * VEC1 ---> MCHT51 * VEC2 ---> MCHT52 * VEC3 ---> MCHT53 * VCH1 ---> MCHT61 * VCH2 ---> MCHT62 * VCH3 ---> MCHT63 * VCH4 ---> MCHT64 * VCH5 ---> MCHT65 * VCH6 ---> MCHT66 * VEC4 ---> MCHT12 * VEC5 ---> MCHT13 * VEC6 ---> MCHT14 * *--- SEGMENT CONTENANT LES VECTEURS DE TRAVAIL POUR "DYNEPL" * * SEGMENT,MVPL * REAL*8 VV1(NDDL),VV2(NDDL),VV3(NDDL),VV4(NDDL),VV5(NDDL) * ENDSEGMENT * * VV1 ---> MCHT22 * VV2 ---> MCHT23 * VV3 ---> MCHT24 * VV4 ---> MCHT25 * VV5 ---> MCHT26 *--- SEGMENT RELATIF AUX OBJETS CHARGEMENT * SEGMENT,MCHT1 REAL*8 VCC1(IDDL) ENDSEGMENT POINTEUR MCHT12.MCHT1,MCHT13.MCHT1,MCHT14.MCHT1 * SEGMENT,MCHT2 REAL*8 VCC2(NDDL) ENDSEGMENT POINTEUR MCHT22.MCHT2,MCHT23.MCHT2,MCHT24.MCHT2 POINTEUR MCHT25.MCHT2,MCHT26.MCHT2 POINTEUR MCHT41.MCHT2,MCHT42.MCHT2,MCHT43.MCHT2 POINTEUR MCHT51.MCHT2,MCHT52.MCHT2,MCHT53.MCHT2 POINTEUR MCHT61.MCHT2,MCHT62.MCHT2,MCHT63.MCHT2 POINTEUR MCHT64.MCHT2,MCHT65.MCHT2,MCHT66.MCHT2 * SEGMENT,MCHT3 REAL*8 COE1(LCOE) ENDSEGMENT POINTEUR MCHT32.MCHT3 * DT2=DT**2 DT3=DT2/O2 DT4=DT/O2 X1=O1/DT * CALL CRTABL(MTABLE) ITAB2=MTABLE IPCHM3=0 * SEGINI,MVPA SEGINI MCHT12,MCHT13,MCHT14 ICHT12=MCHT12 ICHT13=MCHT13 ICHT14=MCHT14 SEGINI MCHT41,MCHT42,MCHT43 ICHT41=MCHT41 ICHT42=MCHT42 ICHT43=MCHT43 SEGINI MCHT51,MCHT52,MCHT53 ICHT51=MCHT51 ICHT52=MCHT52 ICHT53=MCHT53 SEGINI MCHT61,MCHT62,MCHT63,MCHT64,MCHT65,MCHT66 ICHT61=MCHT61 ICHT62=MCHT62 ICHT63=MCHT63 ICHT64=MCHT64 ICHT65=MCHT65 ICHT66=MCHT66 * SEGINI,MVPL SEGINI MCHT22,MCHT23,MCHT24,MCHT25,MCHT26 ICHT22=MCHT22 ICHT23=MCHT23 ICHT24=MCHT24 ICHT25=MCHT25 ICHT26=MCHT26 * MCHT1=ICHT1 MCHT2=ICHT2 MCHT3=ICHT3 MCHT32=ICHT4 * NUMPAS=0 * *-------------------------------------------------------* *--- EQUATION D'EQUILIBRE : G0 = M-1 ( F0 - K U0 ) ---* *-------------------------------------------------------* * CALL DYNE04(IPPT(5),IPCHM(1),ICHT22,NDDL,'INCO') IF (IERR.NE.0) RETURN * CALL DYNE05(IPRIG(2),ICHT22,ICHT23,NDDL,IPPT(4)) IF (IERR.NE.0) RETURN * IF (IPCGT(2).NE.0) THEN CALL DYNEC1(VCC2,MCHT32.COE1,NUMPAS,NDDL,MCHT24.VCC2) ENDIF * CALL COLIVE(MCHT23.VCC2,MCHT24.VCC2,NDDL,1.D0,-1.D0, & MCHT24.VCC2) * CALL DYNE10(ICHT25,IPPT(1),ICHT66,NDDL) * *--- CALCUL DE : U1 = U0 + ( DT * V0 ) + ( DT2/2 * G0 ) * CALL ZERO(MCHT23.VCC2,NDDL,1) * CALL DYNE04(IPPT(5),IPCHM(2),ICHT65,NDDL,'INCO') * CALL COLIVE(MCHT65.VCC2,MCHT66.VCC2,NDDL,DT,DT3, & MCHT23.VCC2) CALL COLIVE(MCHT22.VCC2,MCHT23.VCC2,NDDL,1.D0,1.D0, & MCHT64.VCC2) * *-------------------------------------* *--- BOUCLE SUR LES PAS DE TEMPS ---* *-------------------------------------* * NSOR=0 NPPP=0 DO 100 NUMPAS=1,NPAS NPPP=NPPP+1 * *--- DEPLACEMENTS ET FORCES IMPOSES AU COURS DU TEMPS * IF (IPCGT(1).NE.0) THEN CALL DYNEC1(VCC1,COE1,NUMPAS+1,NDDL,MCHT41.VCC2) ENDIF * IF (IPCGT(2).NE.0) THEN CALL DYNEC1(VCC2,MCHT32.COE1,NUMPAS,NDDL, & MCHT43.VCC2) ENDIF * VCH4 ---> VCH1 *--- TRANSFERTS : VCH5 ---> VCH2 * VCH6 ---> VCH3 CALL VTRANS(MCHT61.VCC2,MCHT64.VCC2,NDDL) CALL VTRANS(MCHT62.VCC2,MCHT65.VCC2,NDDL) CALL VTRANS(MCHT63.VCC2,MCHT66.VCC2,NDDL) * *-----------------------------------------------------* *--- CALCUL D'UN PAS : U1 V0 G0 ---> U2 V1 G1 ---* *-----------------------------------------------------* * CALL DYNEPA(IPRIG,IPPT,IDDL,NDDL,DT, & ICHT41,ICHT43, & ICHT51,ICHT52,ICHT53,ICHT12,ICHT13,ICHT14, & ICHT61,ICHT62,ICHT63,ICHT64,ICHT65,ICHT66) IF (IERR.NE.0) RETURN * IF (NPPP.EQ.NINS) THEN NPPP=0 NSOR=NSOR+1 * *--- ON RETRANSFORME LES VECTEURS EN CHPOINTS * CALL DYNE07(ICHT61,IPPT(5),IPCHM(1),IPCHP1) CALL DYNE07(ICHT65,IPPT(5),IPCHM(1),IPCHP2) CALL DYNE07(ICHT66,IPPT(5),IPCHM(1),IPCHP3) * *--- ARCHIVAGE DES RESULTATS * CALL DYNERA(IPCHP1,IPCHP2,IPCHP3,NSOR,ITAB2) IF (IERR.NE.0) RETURN ENDIF * *--- FIN DE LA BOUCLE SUR LES PAS DE TEMPS * 100 CONTINUE * END DO * * SEGSUP MVPA SEGSUP MCHT12,MCHT13,MCHT14 SEGSUP MCHT41,MCHT42,MCHT43 SEGSUP MCHT51,MCHT52,MCHT53 SEGSUP MCHT61,MCHT62,MCHT63,MCHT64,MCHT65,MCHT66 * SEGSUP MVPL SEGSUP MCHT22,MCHT23,MCHT24,MCHT25,MCHT26 * SEGSUP,MCHT SEGSUP MCHT1,MCHT2,MCHT3,MCHT32 SEGDES MTABLE * END