I am running an I4DVAR experiment, and NLM nudged to climatology u,v,temp,and salt field. my cycle_length is 365.25,and the climatology time sequence is (15, 345) with 30 intervels。my assimilation window is from 2015-12-1 to 2015-12-7. When the adjoint model set up the 3d field using set_3dfldr.F, the Tintrp(1,u,ng) and Tintrp(2,u,ng) are both smaller than time variable which makes interpolation failed. This happens because the get_cycle.F may be wrong in the job<0 case. As the following code shows, it gives the Tend minmum value 15, and Tstr=345, which may be not right. In case that the adjoint model read time backward, so the Tend should be 315 while Tstr=345,so i change the Tend value in the code. In addtion, I also comment out Tdelta=Tdelta+clength in get_3dfldr.F. Am i right?
Code: Select all
 IF (Lmulti) THEN
        IF (job.gt.0) THEN
          Tstr=Finfo(2,ifield,ng)      ! Tmax from previous file
        ELSE
          Tend=Finfo(1,ifield,ng)      ! Tmin from previous file
        END IF
      ELSE
        IF (Lcycle.and.(Tindex.eq.ntime)) THEN
!          Tend=Tmin               !comment out this line and give Tend and Tindex new value.
           Tend=Tval(i-1)
           Tindex=i-1
        ELSE
          IF (job.gt.0) THEN
            i=MIN(ntime,Tindex+1)
            Tend=Tval(i)
          ELSE
            i=MAX(1,Tindex-1)
            Tend=Tval(i)
          END IF
        END IF
      END IF