Opened 4 years ago
Closed 4 years ago
#894 closed upgrade (Done)
IMPORTANT: Updated 4D-Var observation operator
Reported by: | arango | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | Release ROMS/TOMS 4.0 |
Component: | Nonlinear | Version: | 3.9 |
Keywords: | Cc: |
Description
- This update enhances the observation operator to allow the input NetCDF variable obs_depth to have the data vertical location specified as a negative value (depths in meters), a positive value (fractional vertical coordinate ranging from 1:N), or a combination of both conventions.
Recall that during initialization, the ROMS 4D-Var algorithm always processes obs_depth from the input observations NetCDF file. Then, it will update the obs_Zgrid variable with all depths in fractional vertical coordinates. The obs_Zgrid variable is used after initialization in the inner loops to facilitate the vertical interpolation of the TLM and ADM state at the observation locations.
Many thanks to Brian Powell for bringing this issue to my attention. Before, it only worked if the user selected a single convention for all the observations in the file (negative depths or positive vertical fractional coordinate).
- Updated extract_obs.F and ad_extract_obs.F to avoid rejecting observation depths above the center of the top vertical grid cell, k=N(g). Recall that ROMS vertical grid is staggered with 3D variables (u, v, T, S, ...) located at the center of the grid cell. Notice that W-type variable are located at the bottom and top of the grid cell.
Thus, now we have:
... Ztop=Adepth(i1,j1,N(ng)) Zbot=Adepth(i1,j1,1 ) IF (Zobs(iobs).ge.Ztop) THEN k1=N(ng) ! If shallower, assign to k2=N(ng) ! top grid cell. The r1=1.0_r8 ! observation is located r2=0.0_r8 ! on the upper cell half Zobs(iobs)=REAL(N(ng),r8) ! above its middle depth. ELSE IF (Zbot.ge.Zobs(iobs)) THEN r1=0.0_r8 ! If deeper, ignore. r2=0.0_r8 ObsVetting(iobs)=0.0_r8 ELSE ...Many thanks to Brian Powell for bringing this issue to my attention. It is only relevant when processing vertical observations as negative depths in meters.
- Updated read_asspar.F and read_phypar.F to avoid a hanging-up in MPI application when find_file triggers an exit during ROMS configuration due to the wrong specification of input NetCDF files by the User.