Not using updated forcing

Discussion about tangent linear and adjoint models, variational data assimilation, and other related issues.

Moderators: arango, robertson

Post Reply
Message
Author
hjsong

Not using updated forcing

#1 Unread post by hjsong »

Hi,

I was trying to correct both initial condition and surface forcing, and I found something suspicious.
After all inner loops, it seems that the nonlinear model runs with corrected initial condition, but NOT with the corrected forcing.

Since the corrected forcing is stored in the FWDNAME file, I think the surface forcing should be taken
from FWDFILE.

That's maybe I used version 429?

Thank you.
Hajoon
Last edited by hjsong on Fri Jan 15, 2010 9:26 pm, edited 2 times in total.

User avatar
arango
Site Admin
Posts: 1367
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Not using updated forcing

#2 Unread post by arango »

Nothing suspicious here, the code is correct :!: The surface forcing adjustments are done in frc_adjust.F by adding the appropriate 4D-Var increment. For example, for wind stress we have:

Code: Select all

# ifdef ADJUST_WSTRESS
!
!  Adjust surface momentum stress. Interpolate between surface forcing
!  increments, if appropriate.
!
      DO j=JstrR,JendR
        DO i=Istr,IendR
          sustr(i,j)=sustr(i,j)+                                        &
     &               fac1*tl_ustr(i,j,it1,Linp)+                        &
     &               fac2*tl_ustr(i,j,it2,Linp)
        END DO
      END DO
      DO j=Jstr,JendR
        DO i=IstrR,IendR
          svstr(i,j)=svstr(i,j)+                                        &
     &               fac1*tl_vstr(i,j,it1,Linp)+                        &
     &               fac2*tl_vstr(i,j,it2,Linp)
        END DO
      END DO
# endif
So there is no need to modify the wind stress forcing. I hope that this makes sense :idea: Notice that we do the same in the tangent (tl_frc_adjust.F), representer (rp_frc_adjust.F), and adjoint (ad_frc_adjust.F) models.

hjsong

Re: Not using updated forcing

#3 Unread post by hjsong »

Thank you for the reply, Hernan.

The code you posted looks right.

I thought that the updated forcing variables are written in the FWDNAME if I do this

Code: Select all

          T  Hout(idUsms)    Write out surface U-momentum stress.
          T  Hout(idVsms)    Write out surface V-momentum stress.
          T  Hout(idTsur)    Write out surface net heat flux.
          T  Hout(idSrad)    Write out shortwave radiation flux.
, and the forcing files are not touched.
This is why I thought the FWDNAME should be read for the corrected surface forcing.

But if I look into the standard output file, surface forcing variables for the last nonlinear run are from the original forcing files, for example,

Code: Select all

    GET_2DFLD   - surface u-momentum stress,                 t = 12395 00:00:00 
                  (Rec=0477, Index=1, File: daccs_wstr_roms.nc)
                   (Tmin=      12276.0000 Tmax=      12641.0000)
                   (Min =  4.26806373E-06 Max =  1.20590562E-04)
    GET_2DFLD   - surface v-momentum stress,                 t = 12395 00:00:00       
            (Rec=0477, Index=1, File: daccs_wstr_roms.nc)
                   (Tmin=      12276.0000 Tmax=      12641.0000)
                   (Min = -1.22506807E-04 Max =  1.70253751E-06)
    GET_2DFLD   - solar shortwave radiation flux,            t = 12395 00:00:00   
                (Rec=0477, Index=1, File: daccs_swrad_roms.nc)
                   (Tmin=      12276.0000 Tmax=      12641.0000)
                   (Min =  5.97417832E-05 Max =  1.27914491E-04)
    GET_2DFLD   - surface net heat flux,                     t = 12395 00:00:00   
                (Rec=0477, Index=1, File: daccs_flx_roms.nc)
                   (Tmin=      12276.0000 Tmax=      12641.0000)
                   (Min =  2.57468991E-05 Max =  9.05268686E-05)
    GET_2DFLD   - surface net freswater flux, (E-P),         t = 12395 00:00:00    
               (Rec=0477, Index=1, File: daccs_flx_roms.nc)
                   (Tmin=      12276.0000 Tmax=      12641.0000)
                   (Min = -1.09750804E-07 Max =  4.66777159E-08)
, as daccs_wstr_roms.nc, daccs_swrad_roms.nc and daccs_flx_roms.nc are original forcing files, and these are not changed after the IS4DVAR run.

Do I misunderstand this??

Or if I want to run nonlinear model with data assimilated initial condition and the surface forcing so that it matches exactly same as the last nonlinear run in the assimilation, what should I do?

Thank you.

hjsong

Re: Not using updated forcing

#4 Unread post by hjsong »

Dear experts,

It is not a major thing, but I found something suspicious in writing initial file when the surface forcing adjustment option is on.

If either 'ADJUST_WSTRESS' or 'ADJUST_STFLUX' is on, then the adjusted surface forcing fields are written in the initial file.

The code 'wrt_ini.F' does this, and it looks like this (from the line 558 to 564).

Code: Select all

      status=nf_fwrite3d(ng, iNLM, ncINIid(ng), iniVid(idUsms,ng),      &
     &                   OutRec, gtype,                                 &
     &                   LBi, UBi, LBj, UBj, 1, Nfrec(ng), scale,       &
#   ifdef MASKING
     &                   GRID(ng) % umask,                              &
#   endif
     &                   FORCES(ng) % ustr(:,:,:,Tindex))


It writes 'ustr' instead of 'sustr' in the initial file.

The v-momentum stress (line 584) and the surface tracer fluxs (line 616) take 'vstr' and 'tflux' instead of 'svstr' and 'stflx', respectively.

Are there any specific reasons for this, or are they just typos?

Thank you.
Hajoon

Post Reply