intfre
C INTFRE SOURCE CB215821 17/11/30 21:16:30 9639
IMPLICIT INTEGER(I-N)
IMPLICIT REAL*8(A-H,O-Z)
C
C =====================================================================
C SOUS-PROGRAMME FORTRAN POUR CALCULER LES INTEGRALES DE FRESNEL :
C
C / XF
C CC=1/SQRT(2PI)/ COS(T)/SQRT(T) DT
C / 0
C
C / XF
C SS=1/SQRT(2PI)/ SIN(T)/SQRT(T) DT
C / 0
C
C PROGRAMMEUR : GUILBAUD
C CREATION : 13/01/87
C =====================================================================
C
-INC CCREEL
DEUPI=2.D0*XPI
PIS2=XPI/2.D0
DX2=XPI/2000.D0
XG=20.D0
XM=10.D0
XP=1.D0
IF(XF.LE.XM) THEN
XFI=XF
IF(XF.GT.XP) XFI=XP
C
C DEVELOPPEMENT LIMITE POUR XF < XP
C
S2=SQRT(XFI/PIS2)
S0=+XFI/3.D0
SS=S0
C0=+1.D0
CC=C0
XF2=XFI*XFI
RS=(XF2*DBLE(4*I-1))/DBLE((4*I+3)*2*I*(2*I+1))
RC=(XF2*DBLE(4*I-3))/DBLE((4*I+1)*2*I*(2*I-1))
S0=-S0*RS
C0=-C0*RC
SS=SS+S0
CC=CC+C0
10 CONTINUE
SS=SS*S2
CC=CC*S2
IF(XF.GT.XP) THEN
C
C INTEGRATION PAR LA METHODE DES TRAPEZES POUR XP < XF < XM
C
KMAX=INT((XF-XP)/DX2)
IF(KMAX.EQ.0) KMAX=1
DX=(XF-XP)/DBLE(KMAX+1)
SSX=SIN(XP)*0.5D0/SQRT(XP)
SCX=COS(XP)*0.5D0/SQRT(XP)
XX=XP
DO 20 K=1,KMAX
XX=XX+DX
SSX=SSX+SIN(XX)/SQRT(XX)
SCX=SCX+COS(XX)/SQRT(XX)
20 CONTINUE
SS=(SSX+0.5D0*SIN(XF)/SQRT(XF))*DX/SQRT(DEUPI)+SS
CC=(SCX+0.5D0*COS(XF)/SQRT(XF))*DX/SQRT(DEUPI)+CC
ENDIF
ELSE
C
C DEVELOPPEMENT ASYMPTOTIQUE POUR XF > XG
C
XFI=XF
IF(XF.LT.XG) XFI=XG
PXX=2.D0*XFI
PXX1=1.D0/PXX
PXX2=3.D0*PXX1/PXX
PXX3=5.D0*PXX2/PXX
PXX4=7.D0*PXX3/PXX
PXX5=9.D0*PXX4/PXX
PXX6=11.D0*PXX5/PXX
PXX7=13.D0*PXX6/PXX
PXX8=15.D0*PXX7/PXX
PXX9=17.D0*PXX8/PXX
PXX10=19.D0*PXX9/PXX
PXX11=21.D0*PXX10/PXX
COEF1=-1.D0+PXX2-PXX4+PXX6-PXX8+PXX10
COEF2=-PXX1+PXX3-PXX5+PXX7-PXX9+PXX11
RPX=SQRT(DEUPI*XFI)
DC=COS(XFI)/RPX
DS=SIN(XFI)/RPX
SS=0.5D0+DC*COEF1+DS*COEF2
CC=0.5D0+DC*COEF2-DS*COEF1
IF(XF.LT.XG) THEN
C
C INTEGRATION PAR LA METHODE DES TRAPEZES POUR XM < XF < XG
C
KMAX=INT((XG-XF)/DX2)
IF(KMAX.EQ.0) KMAX=1
DX=(XG-XF)/DBLE(KMAX+1)
SSX=SIN(XF)*0.5D0/SQRT(XF)
SCX=COS(XF)*0.5D0/SQRT(XF)
XX=XF
DO 30 K=1,KMAX
XX=XX+DX
SSX=SSX+SIN(XX)/SQRT(XX)
SCX=SCX+COS(XX)/SQRT(XX)
30 CONTINUE
SS=SS-(SSX+0.5D0*SIN(XG)/SQRT(XG))*DX/SQRT(DEUPI)
CC=CC-(SCX+0.5D0*COS(XG)/SQRT(XG))*DX/SQRT(DEUPI)
ENDIF
ENDIF
RETURN
END
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales