Opened 7 years ago
Closed 7 years ago
#2 closed enhancement (fixed)
Updated radial velocities operator.
| Reported by: | arango | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | component1 | Version: | |
| Keywords: | Cc: |
Description
The radial velocity operator was modified to include radar observations processed with the heading angle for math and navigations conventions. A new C-preprocessing option RADIAL_ANGLE_CCW_EAST is introduced for radial observations as an azimuth counterclockwise from EAST. The default is to have radial observations as an azimuth clockwise from NORTH.
In obs_write.F, we now have:
! Radial Velocity. The observations are in terms of radial speed and
! angle (stored in obs_meta). The observation angle converts the
! velocity components to geographical EAST and North components.
# ifdef RADIAL_ANGLE_CCW_EAST
! The radial velocity observations are processed as magnitude and
! heading angle (obs_meta; radians) in the math convention: an
! azimuth that is counterclockwise from TRUE East.
!
! In curvilinear coordinates, the radial forward problem is:
!
! radial = u * COS(obs_meta - angler) + v * SIN(obs_meta - angler)
# else
! By default, the radial velocity observations are processed as
! magnitude and heading angle (obs_meta; radians) in the navigation
! convention: an azimuth that is clockwise from TRUE North.
!
! In curvilinear coordinates, the radial forward problem is:
!
! radial = u * SIN(obs_meta + angler) + v * COS(obs_meta + angler)
# endif
!
...
DO iobs=Mstr,Mend
IF (ObsType(iobs).eq.ObsState2Type(isRadial)) THEN
# ifdef RADIAL_ANGLE_CCW_EAST
# ifdef CURVGRID
angle=ObsMeta(iobs)-ObsAngler(iobs)
NLmodVal(iobs)=uradial(iobs)*COS(angle)+ &
& vradial(iobs)*SIN(angle)
# else
NLmodVal(iobs)=uradial(iobs)*COS(ObsMeta(iobs))+ &
& vradial(iobs)*SIN(ObsMeta(iobs))
# endif
# else
# ifdef CURVGRID
angle=ObsMeta(iobs)+ObsAngler(iobs)
NLmodVal(iobs)=uradial(iobs)*SIN(angle)+ &
& vradial(iobs)*COS(angle)
# else
NLmodVal(iobs)=uradial(iobs)*SIN(ObsMeta(iobs))+ &
& vradial(iobs)*COS(ObsMeta(iobs))
# endif
# endif
# ifdef BGQC
BgErr(iobs)=MAX(uBgErr(iobs), vBgErr(iobs))
# endif
END IF
END DO
END IF
# endif
Many thanks to John Wilkin and Ann Kristin Sperrevik for testing the new default convention.
Note:
See TracTickets
for help on using tickets.
