Ocean Modeling Discussion

ROMS/TOMS

Search for:
It is currently Sat Jul 20, 2019 8:20 pm




Post new topic Reply to topic  [ 3 posts ] 

All times are UTC

Author Message
PostPosted: Thu Jun 20, 2019 8:30 am 
Offline

Joined: Thu Jul 16, 2009 5:17 pm
Posts: 10
Location: Madeira University
Hi all,
I am assimilating near surface current data with I4DVAR capability of ROMS. I noticed that the rejection of my data is strongly dependent from the depth i put them:
i.e
-pure surface (obs_depth=0) i get 100% data rejected
-obs_depth=-7 i get almost 100% of data accepted
-obs_depth=-1 i get around 30% of data rejected

My data are not particularly littoral with minimum depth of few 100 meters and 35 vertical levels.

I understood more or less the 0 case, but why such a difference between 7m and 1m ?

Thanks
Xavier


Top
 Profile  
Reply with quote  
PostPosted: Thu Jun 20, 2019 9:58 am 
Offline

Joined: Thu Jul 16, 2009 5:17 pm
Posts: 10
Location: Madeira University
I guess it is zeta related and that obs_depth is absolute and not relative to zeta.


Top
 Profile  
Reply with quote  
PostPosted: Fri Jun 21, 2019 4:51 am 
Offline
User avatar

Joined: Mon May 05, 2003 2:41 pm
Posts: 122
Location: The University of Western Australia, Perth, Australia
ROMS is not black box model, and it is very well documented. In that sense you should dig into the source and, for example, have a look at the Utility/extract_obs.F

There you will find relevant part of the code:
Code:
          p2=REAL(i2-i1,r8)*(Xobs(iobs)-REAL(i1,r8))
          q2=REAL(j2-j1,r8)*(Yobs(iobs)-REAL(j1,r8))
          p1=1.0_r8-p2
          q1=1.0_r8-q2
          w11=p1*q1
          w21=p2*q1
          w22=p2*q2
          w12=p1*q2
          IF (Zobs(iobs).gt.0.0_r8) THEN
            k1=MAX(1,INT(Zobs(iobs)))          ! Positions in fractional
            k2=MIN(INT(Zobs(iobs))+1,N(ng))    ! levels
            r2=REAL(k2-k1,r8)*(Zobs(iobs)-REAL(k1,r8))
            r1=1.0_r8-r2
          ELSE
            Ztop=Adepth(i1,j1,N(ng))
            Zbot=Adepth(i1,j1,1    )
            IF (Zobs(iobs).ge.Ztop) THEN
              r1=0.0_r8                        ! If shallower, ignore.
              r2=0.0_r8
              ObsScale(iobs)=0.0_r8
            ELSE IF (Zbot.ge.Zobs(iobs)) THEN
              r1=0.0_r8                        ! If deeper, ignore.
              r2=0.0_r8
              ObsScale(iobs)=0.0_r8
            ELSE
              DO k=N(ng),2,-1                  ! Otherwise, interpolate
                Ztop=Adepth(i1,j1,k  )         ! to fractional level
                Zbot=Adepth(i1,j1,k-1)
                IF ((Ztop.gt.Zobs(iobs)).and.(Zobs(iobs).ge.Zbot)) THEN
                  k1=k-1
                  k2=k
                END IF
              END DO
              dz=Adepth(i1,j1,k2)-Adepth(i1,j1,k1)
              r2=(Zobs(iobs)-Adepth(i1,j1,k1))/dz
              r1=1.0_r8-r2
              Zobs(iobs)=REAL(k1,r8)+r2        ! overwrite
            END IF
          END IF


And for example, if you have really huge range of tides and don't want ROMS to reject obs then simply change the part of code or compute zlev (model level fraction) of your obs and feed that into assimilation...

Good luck
Ivica


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 3 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group