Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / var / da / da_tools / da_change_date.inc
blob4d612fc8d475b19fb9c441b8aa52d15f4881e614
1 subroutine da_change_date(ccyy, mm, dd, delta)
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
7    implicit none
9    integer, intent(inout) :: ccyy, mm, dd
10    integer, intent(in)    :: delta
12    integer, dimension(12) :: mmday
14    mmday = (/31,28,31,30,31,30,31,31,30,31,30,31/)
16    mmday(2) = 28
18    if (mod(ccyy,4) == 0) then
19       mmday(2) = 29
21       if (mod(ccyy,100) == 0) then
22          mmday(2) = 28
23       end if
25       if (mod(ccyy,400) == 0) then
26          mmday(2) = 29
27       end if
28    end if
30    dd = dd + delta
32    if (dd == 0) then
33       mm = mm - 1
35       if (mm == 0) then
36          mm = 12
37          ccyy = ccyy - 1
38       end if
40       dd = mmday(mm)
41    elseif (dd .gt. mmday(mm)) then
42       dd = 1
43       mm = mm + 1
44       if (mm > 12) then
45          mm = 1
46          ccyy = ccyy + 1
47       end if
48    end if
49 end subroutine da_change_date