PROGRAM LIGHT_CURVE IMPLICIT NONE INTEGER*4 MP PARAMETER ( MP = 128 ) CHARACTER FILIN*128, BUF(MP)*256, COMP*1, BAND*1, DATE_STR*19 INTEGER*4 J1, J2, J3, KP, NP, MJD, MJD_0, IUER REAL*8 TIM(MP), VAL(MP), ERR(MP), SEC, FLUX_A, FLUX_B, & & FLUX_A_ERR, FLUX_B_ERR, FLUX_ERR_SYS, FA(MP), FB(MP), PC REAL*8, EXTERNAL :: PEARSON_CORR ! COMP = 'B' BAND = 'X' FLUX_ERR_SYS = 0.05 ! ! L: 770 700 270 K ! FILIN = '/astrogeo/4C+35.28/4C+35.28_properties.txt' IUER = -1 CALL RD_TEXT ( FILIN, MP, BUF, NP, IUER ) IF ( IUER .NE. 0 ) CALL EXIT ( 1 ) ! DATE_STR = '1990.01.01_00:00:00' CALL DATE_TO_TIME ( DATE_STR, MJD_0, SEC, IUER ) KP = 0 DO 410 J1=1,NP IF ( BUF(J1)(46:46) == BAND ) THEN DATE_STR = BUF(J1)(11:14)//'.'//BUF(J1)(15:16)//'.'//BUF(J1)(17:18)//'_00:00:00' CALL DATE_TO_TIME ( DATE_STR, MJD, SEC, IUER ) KP = KP + 1 TIM(KP) = 1990 + (MJD - MJD_0)/365.25D0 READ ( UNIT=BUF(J1)(81:86), FMT='(F6.4)' ) FLUX_A READ ( UNIT=BUF(J1)(116:121), FMT='(F6.4)' ) FLUX_B READ ( UNIT=BUF(J1)(126:130), FMT='(F6.4)' ) FLUX_B_ERR IF ( COMP == 'A' ) THEN VAL(KP) = FLUX_A ERR(KP) = FLUX_A * 0.05 ELSE IF ( COMP == 'B' ) THEN VAL(KP) = FLUX_B ERR(KP) = FLUX_B_ERR ELSE IF ( COMP == 'R' ) THEN VAL(KP) = FLUX_B/FLUX_A ERR(KP) = FLUX_B_ERR/FLUX_A END IF FA(KP) = FLUX_A FB(KP) = FLUX_B END IF 410 CONTINUE IUER = -1 IF ( KP > 0 ) THEN CALL DIAGI_SETDEF ( IUER, 'DIAGI_ILST', 2 ) CALL DIAGI_SETDEF ( IUER, 'DIAGI_IBST', 2 ) CALL DIAGI_SETDEF ( IUER, 'DIAGI_IPST', 5 ) CALL DIAGI_1E ( KP, TIM, VAL, ERR, IUER ) PC = PEARSON_CORR ( KP, FA, FB ) WRITE ( 6, 110 ) PC 110 FORMAT ( 'Correlation coefficient: ' , F6.3 ) CALL DIAGI_2 ( KP, TIM, FA, KP, TIM, 20.0D0*FB, IUER ) END IF END PROGRAM LIGHT_CURVE !#! ! ! ------------------------------------------------------------------------ ! FUNCTION PEARSON_CORR ( N, FA, FB ) IMPLICIT NONE INTEGER*4 N REAL*8 FA(N), FB(N) REAL*8 PEARSON_CORR REAL*8 FA_MEAN, FB_MEAN, FAFA, FAFB, FBFB INTEGER*4 J1, J2 ! FA_MEAN = 0.0D0 FB_MEAN = 0.0D0 DO 410 J1=1,N FA_MEAN = FA_MEAN + FA(J1) FB_MEAN = FB_MEAN + FB(J1) 410 CONTINUE FA_MEAN = FA_MEAN/N FB_MEAN = FB_MEAN/N ! FAFA = 0.0D0 FBFB = 0.0D0 FAFB = 0.0D0 DO 420 J2=1,N FAFA = FAFA + (FA(J2) - FA_MEAN)**2 FBFB = FBFB + (FB(J2) - FB_MEAN)**2 FAFB = FAFB + (FA(J2) - FA_MEAN)*(FB(J2) - FB_MEAN) 420 CONTINUE ! PEARSON_CORR = FAFB/DSQRT ( FAFA*FBFB ) ! RETURN END FUNCTION PEARSON_CORR !#!