cosi
C COSI SOURCE CHAT 05/01/12 22:22:50 5004 *$$$$ COSI C COSI SOURCE ISPRA 90/06/12 SUBROUTINE COSI IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C======================================================================= C OPERATEUR COSI C C A2*EVOLUTION = COSI A1*EVOLUTION (METH*MOT) C C======================================================================= C PROGRAMMEUR : P.P. C======================================================================= C CHARACTER *72 TI CHARACTER*12 MOTX,MOTY C PARAMETER (NMOCLE=2) CHARACTER*4 MOTCLE(NMOCLE) C -INC PPARAM -INC CCOPTIO -INC SMEVOLL -INC SMLREEL C POINTEUR IACCE1.MLREEL,ITEMP1.MLREEL,IACCE2.MLREEL,ITEMP2.MLREEL POINTEUR JACCE1.MEVOLL,JACCE2.MEVOLL POINTEUR KACCE1.KEVOLL,KACCE2.KEVOLL SEGMENT, MTRAV IMPLIED AI(NPT),BI(NPT),GI(NPT) ENDSEGMENT C DIMENSION A(3,3),B(3) C C 1) LECTURE DES DONNEES GIBIANE C C 1.1) LISTE DES MOTS CLEF C DATA MOTCLE/'SIMP','LINE'/ C C C 1.2) DEFAUTS C IMETH=1 C C 1.3) LECTURE DE L'OBJET EVOLUTIO CONTENANT L'ACCELERATION C IF(IRET.EQ.0) GOTO 666 C C 1.4) LECTURE DU MOT-CLEF C (OPTIONEL) C C IF(IVAL.NE.0)THEN IMETH=IVAL ENDIF C C C 2) VERIFICATION DES DONNEES C C 2.1) MEME ABSCISSE C SEGACT, JACCE1 N=JACCE1.IEVOLL(/1) DO 10 IE1=1,N KACCE1=JACCE1.IEVOLL(IE1) SEGACT, KACCE1 ITEMP=KACCE1.IPROGX SEGDES, KACCE1 IF(IE1.EQ.1)THEN ITEMP1=ITEMP ELSE IF(ITEMP.NE.ITEMP1)THEN SEGDES, JACCE1 GOTO 666 ENDIF ENDIF 10 CONTINUE C C 2.2) REPARTITION HOMOGENE DES DT C SEGACT, ITEMP1 SEGDES, ITEMP1 IF(ABS(DT1-DT)/DT.GT.1.D-5)THEN SEGDES, JACCE1 GOTO 666 ENDIF C C 3) DUPLICATION DES TEMPS ET INITIALISATIONS DIVERSES C SEGINI, ITEMP2=ITEMP1 SEGDES, ITEMP2 C TI=JACCE1.IEVTEX SEGINI, JACCE2 JACCE2.IEVTEX='Correction de:'//TI(1:58) C SEGINI, MTRAV C C C 4) LOOP DE CALCUL C DO 100 IE1=1,N C C 4.1) INITIALISATION ET DUPLICATION DES DONNEES C C KACCE1=JACCE1.IEVOLL(IE1) SEGINI, KACCE2=KACCE1 C KACCE2.IPROGX=ITEMP2 C IACCE1=KACCE2.IPROGY SEGINI, IACCE2=IACCE1 KACCE2.IPROGY=IACCE2 C SEGDES, KACCE2 JACCE2.IEVOLL(IE1)=KACCE2 C C C 4.2) CALCUL DE ALPHA(I), BETA(I) ET GAMMA(I) C C 4.2.1) METHODE SIMPLIFIEE C IF(IMETH.EQ.1)THEN AI(1)=DT/2 BI(1)=(2*(NPT-2)+1)*DT*DT/4 DO 20 IE2=2,NPT-1 AI(IE2)=DT BI(IE2)=(NPT-IE2)*DT*DT 20 CONTINUE AI(NPT)=DT/2 BI(NPT)=DT*DT/4 C GI(1)=0.D0 DO 21 IE2=2,NPT GI(1)=GI(1)+BI(IE2)*DT/2 21 CONTINUE DO 22 IE2=2,NPT-1 GI(IE2)=BI(IE2)*DT/2 DO 22 IE3=IE2+1,NPT GI(IE2)=GI(IE2)+BI(IE3)*DT 22 CONTINUE GI(NPT)=BI(NPT)*DT/2 ENDIF C C 4.2.2) METHODE LINEAIRE C IF(IMETH.EQ.2)THEN AI(1)=DT/2 BI(1)=(3*(NPT-2)+2)*DT*DT/6 DO 25 IE2=2,NPT-1 AI(IE2)=DT BI(IE2)=(NPT-IE2)*DT*DT 25 CONTINUE AI(NPT)=DT/2 BI(NPT)=DT*DT/6 C GI(1)=(2*(NPT-2)+1)*DT*DT*DT/24 DO 26 IE2=2,NPT GI(1)=GI(1)+BI(IE2)*DT/2 26 CONTINUE DO 27 IE2=2,NPT-1 GI(IE2)=BI(IE2)*DT/2-DT*DT*DT/12 DO 27 IE3=IE2+1,NPT GI(IE2)=GI(IE2)+BI(IE3)*DT 27 CONTINUE GI(NPT)=BI(NPT)*DT/4 ENDIF C C 4.3) CALCUL DE A ET B C DO 30 IE2=1,3 B(IE2)=0.D0 DO 30 IE3=1,3 A(IE3,IE2)=0.D0 30 CONTINUE DO 31 IE2=1,NPT A(1,1)=A(1,1)+AI(IE2)**2 A(1,2)=A(1,2)+AI(IE2)*BI(IE2) A(1,3)=A(1,3)+AI(IE2)*GI(IE2) A(2,2)=A(2,2)+BI(IE2)**2 A(2,3)=A(2,3)+BI(IE2)*GI(IE2) A(3,3)=A(3,3)+GI(IE2)**2 31 CONTINUE A(2,1)=A(1,2) A(3,1)=A(1,3) A(3,2)=A(2,3) C C 4.4) RESOLUTION DE A*X=B C > -A(2,1)*(A(1,2)*A(3,3)-A(3,2)*A(1,3)) > +A(3,1)*(A(1,2)*A(2,3)-A(2,2)*A(1,3)) XAM1= B(1)*(A(2,2)*A(3,3)-A(3,2)*A(2,3)) > -B(2)*(A(1,2)*A(3,3)-A(3,2)*A(1,3)) > +B(3)*(A(1,2)*A(2,3)-A(2,2)*A(1,3)) XAM2=-B(1)*(A(2,1)*A(3,3)-A(3,1)*A(2,3)) > +B(2)*(A(1,1)*A(3,3)-A(3,1)*A(1,3)) > -B(3)*(A(1,1)*A(2,3)-A(2,1)*A(1,3)) XAM3= B(1)*(A(2,1)*A(3,2)-A(3,1)*A(2,2)) > -B(2)*(A(1,1)*A(3,2)-A(3,1)*A(1,2)) > +B(3)*(A(1,1)*A(2,2)-A(2,1)*A(1,2)) C C 4.5) CORRECTION DE L'ACCELERATION C DO 40 IE2=1,NPT > -XAM1*AI(IE2)-XAM2*BI(IE2)-XAM3*GI(IE2) 40 CONTINUE C C 4.6) FIN ACTIVATION C SEGDES, IACCE2 C 100 CONTINUE C C C SEGSUP, MTRAV SEGDES, JACCE1 SEGDES, JACCE2 C C 5) RETOUR A GIBIANE C C C 666 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales