SUBROUTINE GET_WACCMFILE_INTERP(DS_TIME,WACCM_DIR,WACCM_FILE, &IDATE1,IDATE2,WGHT) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C This routine Assigns the file name for reading WACCM data and C returns the IDATE parameters to use in reading the WACCM data C The WACCM date corresponding to a particular year and month average C is yearmm01, where mm is month+1, so the January 2002 monthly average C data is found using the date 20020201. We wish to read two months of C data and interpolate to the desired date using the weight given by C WGHT. So data=data1*wght+data2*(1.0-wght). C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IMPLICIT NONE INTEGER DAY,NCHAR,IC,ICC1,ICC2,YEAR,MONTH,IDATE1,IDATE2 REAL*4 WGHT CHARACTER*(*) DS_Time,WACCM_DIR,WACCM_FILE CHARACTER*1 BLANK CHARACTER*60 DIR DATA BLANK/' '/ NCHAR = LEN(WACCM_DIR) DIR = WACCM_DIR DO IC = 1, NCHAR ICC1 = IC IF(DIR(IC:IC).NE.BLANK) GO TO 1 ENDDO 1 DO IC = ICC1, NCHAR IF(DIR(IC:IC).EQ.BLANK.OR.DIR(IC:IC).EQ.char(0)) GO TO 2 ICC2 = IC ENDDO 2 READ(DS_Time,'(I4,I3)') YEAR,DAY WACCM_FILE= $ DIR(ICC1:ICC2)//'WACCM_SABER_2000-2020.nc'//char(0) WRITE(*,'(A)') WACCM_FILE IF ( (DAY .GT. 0) .AND. (DAY .LE. 31) )THEN MONTH=1 WGHT=REAL(DAY-16.0)/31.0 ELSE IF( (DAY .GT. 31) .AND. (DAY .LE. 59) )THEN MONTH=2 WGHT=REAL(DAY-45.0)/28.0 ELSE IF( (DAY .GT. 59) .AND. (DAY .LE. 90) )THEN MONTH=3 WGHT=REAL(DAY-75.0)/31.0 ELSE IF( (DAY .GT. 90) .AND. (DAY .LE. 120) )THEN MONTH=4 WGHT=REAL(DAY-105.0)/30.0 ELSE IF( (DAY .GT. 120) .AND. (DAY .LE. 151) )THEN MONTH=5 WGHT=REAL(DAY-136.0)/31.0 ELSE IF( (DAY .GT. 151) .AND. (DAY .LE. 181) )THEN MONTH=6 WGHT=REAL(DAY-166.0)/30.0 ELSE IF( (DAY .GT. 181) .AND. (DAY .LE. 212) )THEN MONTH=7 WGHT=REAL(DAY-197.0)/31.0 ELSE IF( (DAY .GT. 212) .AND. (DAY .LE. 243) )THEN MONTH=8 WGHT=REAL(DAY-228.0)/31.0 ELSE IF( (DAY .GT. 243) .AND. (DAY .LE. 273) )THEN MONTH=9 WGHT=REAL(DAY-258.0)/30.0 ELSE IF( (DAY .GT. 273) .AND. (DAY .LE. 304) )THEN MONTH=10 WGHT=REAL(DAY-289.0)/31.0 ELSE IF( (DAY .GT. 304) .AND. (DAY .LE. 334) )THEN MONTH=11 WGHT=REAL(DAY-319.0)/30.0 ELSE IF( (DAY .GT. 334) .AND. (DAY .LE. 366) )THEN MONTH=12 WGHT=REAL(DAY-350.0)/31.0 ENDIF IF(WGHT.LE.0.0) THEN IF(MONTH.LT.12) THEN IDATE1=YEAR*10000+MONTH*100+1 IDATE2=YEAR*10000+(MONTH+1)*100+1 ELSE IDATE1=YEAR*10000+1201 IDATE2=(YEAR+1)*10000+101 ENDIF WGHT=-WGHT ELSE IF(MONTH.LT.11) THEN IDATE1=YEAR*10000+(MONTH+1)*100+1 IDATE2=YEAR*10000+(MONTH+2)*100+1 ELSEIF(MONTH.EQ.11) THEN IDATE1=YEAR*10000+1201 IDATE2=(YEAR+1)*10000+101 ELSE IDATE1=(YEAR+1)*10000+101 IDATE2=(YEAR+1)*10000+201 ENDIF WGHT=1.0-WGHT ENDIF RETURN END