gflex0
C GFLEX0 SOURCE CHAT 05/01/13 00:17:58 5004 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C C ===================================================================== C SOUS-PROGRAMME FORTRAN APPELE PAR GREEN1 POUR CALCULER LES FCTS DE C GREEN EN FLEXION C C LES MODIFICATIONS APPORTEES AU PROGRAMME GFLEX1 SONT LES SUIVANTES: C LE CALCUL DES INTEGRALES DE FRESNEL EST REALISE PAR LA METHODE C DE LANCZOS (SUBROUTINE FRESNE) C C LES VALEURS DE LA FONCTION DE GREEN ET DE SES DERIVEES EN L AU C PREMIER PAS DE TEMPS NE SONT PAS NULLES C C CREATION : 21/09/87 C PROGRAMMEUR : VACELET (10/03/89) C ===================================================================== -INC PPARAM -INC CCOPTIO -INC CCREEL DIMENSION AB(10,*),CC(1),SS(1),U2(1) WRITE(IOIMP,*) ' DEBUT DE GFLEX0 ' PIS4=XPI*0.25D0 RPI=1.D0/SQRT(XPI) C C--------BOUCLE SUR LES PAS DE TEMPS ------------------------- C GP4=0.D0 GP3=0.D0 GP2=0.D0 GP1=0.D0 GP0=0.D0 GPL0=0.D0 G4P=0.D0 G3P=0.D0 G2P=0.D0 G1P=0.D0 G0P=0.D0 DTM=DLL*DLL/(3.D0*CTC*RF*XPI) LANBN1=LANBN+1 DO 40 L=1,LANBN1 T=L*DELTAT C C--------ETUDE DES DEUX EXTREMITES---------------------------- C DO 20 NE=1,2 C C PREMIERE EXTREMITE C C IF(NE.EQ.1) THEN C DL=0.D0 DKSI=DL/RF CSRF=CTC/RF STK=0.5D0/RTETA SDK=RPI*SIN(U2(1)-PIS4) CDK=RPI*COS(U2(1)-PIS4) C G4=-STK*CDK G3=0.5D0 G2=RTETA*SDK G1=0.D0 C AB4=G4-GP4 GP4=G4 AB3=G3-GP3 GP3=G3 AB2=G2-GP2 GP2=G2 AB1=G1-GP1 GP1=G1 AB0=G0-GP0 GP0=G0 C AB(1,L)=AB0 AB(2,L)=AB1 AB(3,L)=AB2 AB(4,L)=AB3 AB(5,L)=AB4 ELSE C C SECONDE EXTREMITE C DL=DLL DKSI=DL/RF CSRF=CTC/RF STK=0.5D0/RTETA SDK=RPI*SIN(U2(1)-PIS4) CDK=RPI*COS(U2(1)-PIS4) C C U=SQRT(U2(1)) U3=U*U2(1) U4=U*U3 SC=SS(1)-CC(1) SC1=1.D0-SS(1)-CC(1) C GG=RTETA*(CDK+U*SC) G4=-STK*CDK G3=0.5D0*SC1 G2=RTETA*(SDK+U*SC1) G1=RTETA*(0.5D0*RTETA*SC+U*G2) G0=(2.D0/3.D0)*RTETA*(RTETA*GG+U*G1) C GG1=RTETA*(GG1+U*GG2) C IF(DELTAT.LE.DTM) THEN AB0=G0-GPL0 GPL0=G0 AB(6,L)=AB0 AB(10,L)=-AB0/DELT2 ELSE AB(10,L)=G4-G4P G4P=G4 AB(9,L)=G3-G3P G3P=G3 AB(8,L)=G2-G2P G2P=G2 AB(7,L)=G1-G1P G1P=G1 AB(6,L)=G0-G0P G0P=G0 ENDIF ENDIF 20 CONTINUE 40 CONTINUE C IF(DELTAT.GT.DTM) RETURN DO 70 I=7,10 GP=AB(I,2)-2.D0*AB(I,1) DO 50 L=2,LANBN GA=AB(I,L+1)-2.D0*AB(I,L)+AB(I,L-1) AB(I,L-1)=GP GP=GA 50 CONTINUE AB(I,LANBN)=GP GP=AB(I,1) DO 60 L=2,LANBN GA=0.5D0*(AB(I,L-1)+AB(I,L)) AB(I,L-1)=GP GP=GA 60 CONTINUE AB(I,LANBN)=GP 70 CONTINUE C C C WRITE(IOIMP,*)' FIN DE GFLEX0 ' RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales