program compute
week
implicit none
! compute: norms curr_week_diffs and MIR
! compute 30-yr (1981-2010) daily weather normal data from each Illinois CD
! for analysis year and previous year compute based on CDC EPI week
! in 2016 and 2017, begin day use = saturday to friday
! in 2018, change to sunday to Saturday
! CDC defines ending saturday: The first epi week of the year ends,
! by definition, on the first Saturday of January,
! as long as it falls at least four days into the month.
! Each epi week begins on a Sunday and ends on a Saturday.
! get daily data for analysis year.
! compute weekly normals and weekly current year observations.
! compute weekly difference between analysis year and normals.
! weekly temp avg ( C);
! weekly precip tot (cm);
! weekly degree day avg based on 22 C. (accumate over time from Jan 1 to dec 31)
! first saturday set up through 2020.
! 2017, change to first sunday
! VET-MED first epi week ends on first saturday of january, unless falls after
! January 3, then ends in corresponding december day.
! as per Karki:
! begin jan 1 all years and go thru 365 days.
! weeks: 49-52,1-9 = WInter
! 10-22 = SPring (CDC spring ends week 22)
! 23-35 = SUmmer
! 36-48 = FAll
! bflg=0
! bflg=1
character*1 c
character*2 ST, CD, cstate
character*4 ayear
integer icd, iyear, year, mon, day, i, j, k, m, bflg
integer mm(366), dd(366)
integer icdi
real t(366, 30), p(366, 30), d(366, 30), dum_d, dsum_d
real wt(53, 30), wp(53, 30), wd(53, 30)
real tmax, tmin, tmean, prcp
real wknorm_t(53), wknorm_p(53), wknorm_d(53), wknorm_np(53)
real wksum_t(53), wksum_p(53), wksum_d, wksum_np(53)
real tmn(366), ppt(366), ddd(366)
real wctmn(53), wcppt(53), wcddd(53), wcsum_d
real df_wkt(53), df_wkp(53), df_wkd(53), df_wknp(53)
! integer begday(40),begmon(40)
integer begyr(40), ndays(40)
integer nbegday(40), nbegyr(40), nbegmon(40)
integer bday, bmon, nday, byear, n, end, endk
real WInorm_t, SPnorm_t, SUnorm_t, FAnorm_t
real WIsum_t, SPsum_t, SUsum_t, FAsum_t
real WInorm_d, SPnorm_d, SUnorm_d, FAnorm_d
real WIsum_d, SPsum_d, SUsum_d, FAsum_d
real WInorm_p, SPnorm_p, SUnorm_p, FAnorm_p
real WIsum_p, SPsum_p, SUsum_p, FAsum_p
real WInorm_np, SPnorm_np, SUnorm_np, FAnorm_np
real WIsum_np, SPsum_np, SUsum_np, FAsum_np
real SP_prev_yr_t, SP_prev_yr_d, SP_prev_yr_p, SP_prev_yr_np
real SU_prev_yr_t, SU_prev_yr_d, SU_prev_yr_p, SU_prev_yr_np
real FA_prev_yr_t, FA_prev_yr_d, FA_prev_yr_p, FA_prev_yr_np
real SP_prev_sum_t, SP_prev_sum_d, SP_prev_sum_p, SP_prev_sum_np
real SU_prev_sum_t, SU_prev_sum_d, SU_prev_sum_p, SU_prev_sum_np
real FA_prev_sum_t, FA_prev_sum_d, FA_prev_sum_p, FA_prev_sum_np
real WI_curr_yr_t, WI_curr_yr_d, WI_curr_yr_p, WI_curr_yr_np
real SP_curr_yr_t, SP_curr_yr_d, SP_curr_yr_p, SP_curr_yr_np
real WI_curr_sum_t, WI_curr_sum_d, WI_curr_sum_p, WI_curr_sum_np
real SP_curr_sum_t, SP_curr_sum_d, SP_curr_sum_p, SP_curr_sum_np
real df_WIc_t, df_WIc_p, df_WIc_d, df_WIc_np
real df_SPc_t, df_SPc_p, df_SPc_d, df_SPc_np
real df_SPp_t, df_SPp_p, df_SPp_d, df_SPp_np
real df_SUp_t, df_SUp_p, df_SUp_d, df_SUp_np
real df_FAp_t, df_FAp_p, df_FAp_d, df_FAp_np
character *86 line1
integer wk(53), cumwk(53)
real cd_dylt(53, 9), cd_avg_mir(53, 13), cd_2012mir(53, 13)
real dum1, dum2, dum3, dum4, dum5, dum6, dum7
real mir(53), daylit(53), mir_cur(53)
real mir2012(53, 13)
real ACT_mir(52, 9), ACTm_mir(52, 9), ACTp_mir(52, 9)
real cd_act_mir(53, 13)
real intercept(13)
real cDW_Lg1(13), cDW_Lg2(13), cDW_Lg3(13), cDW_Lg4(13)
real cPr_Lg1(13), cPr_Lg2(13), cPr_Lg3(13), cPr_Lg4(13)
real cDWLg1xPLg1(13), cDWLg1xPLg2(13)
real cDWLg1xPLg3(13), cDWLg1xPLg4(13)
real cDWLg2xPLg1(13), cDWLg2xPLg2(13)
real cDWLg2xPLg3(13), cDWLg2xPLg4(13)
real cDWLg3xPLg1(13), cDWLg3xPLg2(13)
real cDWLg3xPLg3(13), cDWLg3xPLg4(13)
real cDWLg4xPLg1(13), cDWLg4xPLg2(13)
real cDWLg4xPLg3(13), cDWLg4xPLg4(13)
real cSPc_temp(13), CSPc_prcp(13)
real cWIc_temp(13), cSPp_temp(13), cSUp_temp(13), cFAp_temp(13)
real cWIc_prcp(13), cSPp_prcp(13), cSUp_prcp(13), cFAp_prcp(13)
real cDayLite(13), cDWLg1xDayLite_Lg1(13)
real cDayLite_Lg1(13), cDayLite_Lg2(13)
real cDayLite_Lg3(13), cDayLite_Lg4(13)
integer ilcd, rundate
character*10 valdate
character*6 cprcp6
character*5 lab1
character*20 lab(40)
real prcpd(10, 9), mxtemp(10, 9), mntemp(11, 9), prcp6(13, 9)
integer n_mxT, n_mnT, n_ppt
integer ncurr
integer firstmon, firstday
character*2 cfirstmon, cfirstday
integer pday(53), pmon(53), pdd(366), pmm(366)
character*2 cpdd, cpmm
integer nwk(53)
integer pm, pd
integer wmonth(52), wday(52), wweek(52), wyear
character*10 wdate
character*3 wdow
integer emon, eday
! used to comply with epi week beginning in December
! for previous year (iyear-1) and analysis year (iyear)
! for 2016 and 2017
data nbegday/3, 2, 1, 31, 29, 28, 3, 2, 31, 30, &
1, 31, 29, 28, 3, 2, 31, 30, 29, 28/
data nbegmon/1, 1, 1, 12, 12, 12, 1, 1, 12, 12, &
1, 12, 12, 12, 1, 1, 12, 12, 12, 12/
data nbegyr/1981, 1982, 1983, 1983, 1984, 1985, 1987, 1988, 1988, 1989, &
2011, 2011, 2012, 2013, 2015, 2016, 2016, 2017, 2018, 2019/
! for 2018
! defining years, months, days, epi weeks for previous year and analysis years
! data nbegday/4,3,2,1,30,29,4,3,1,31,
! ! 30,29,3,2,1,31,30,4,3,2,
! ! 31,30,29,4,2,1,31,30,4,3,
! ! 2,1,30,29,4,3,1,31,30,29/
! data nbegmon/1,1,1,1,12,12,1,1,1,12,
! ! 12,12,1,1,1,12,12,1,1,1,
! ! 12,12,12,1,1,1,12,12,1,1,
! ! 1,1,12,12,1,1,1,12,12,12/
! data nbegyr/1981,1982,1983,1984,1984,1985,1987,1988,1989,1989,
! ! 1990,1991,1993,1994,1995,1995,1996,1998,1999,2000,
! ! 2000,2001,2002,2004,2005,2006,2006,2007,2009,2010,
! ! 2011,2012,2012,2013,2015,2016,2017,2017,2018,2019/
! USE REGARDLESS
data begyr/1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, &
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020/
data ndays/365, 365, 365, 366, 365, 365, 365, 366, 365, 365, &
365, 366, 365, 365, 365, 366, 365, 365, 365, 366/
call getarg (1, ST)
call getarg (1, ST)
call getarg (2, CD)
call getarg (3, ayear)
! read from character to integer
read(ayear, 25) iyear
25 format(i4)
read(CD, 26) icd
26 format(i2)
! print *, 'CD = ',icd,' ST = ',ST,'iyear= ',iyear
c = ','
do j = 1, 30
do i = 1, 366
t(i, j) = 999.9
d(i, j) = 0.0
p(i, j) = 999.9
enddo
enddo |