﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
2	Updated radial velocities operator.	arango		"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."	enhancement	closed	major		component1		fixed		
