Long180Exclusion - ACCESS-NRI/accessdev-Trac-archive GitHub Wiki

In OPS/src/code/MetDB_Bufr_Retrieval/lib/source/wantobs.f90

The area is checked for observations using

IF (AREA(3) <= AREA(5)) THEN

!        Ob too far W         Ob too far E
    IF (OBLON < AREA(3) .OR. OBLON > AREA(5)) THEN
        WANTOB(IOB) = .FALSE.
    END IF
ELSE
!     User's box crosses 180W

!        Ob too far W          Ob too far E
    IF (OBLON < AREA(3) .AND. OBLON > AREA(5)) THEN
      WANTOB(IOB) = .FALSE.
    END IF
END IF

In the case where AREA(5) = 180.0, in the first part of the IF clause, some observations are rejected. In the ops, the area limit AREA(5) has a floating-point value of 180.0000000000000000000 Which in binary is represented as 0100000001100110100000000000000000000000000000000000000000000000

We are looking at JMAWINDS bufr files, which have many observations around ±180°. BUFR stores observations with 32-bit precision. The OPS works with REAL values of 64-bit precision. The JMAWINDS 2015061506 bufr file contains 32 values with Longitude=180°. They are stored as following:

Accept/Reject 32-bit precision Binary representation in OPS
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110011111111111111111111111111111111111111111111110
Acc 180.00000 0100000001100110011111111111111111111111111111111111111111111110
Acc 180.00000 0100000001100110011111111111111111111111111111111111111111111110
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Rej 180.00000 0100000001100110100000000000000000000000000000000000000000000010
Acc 180.00000 0100000001100110100000000000000000000000000000000000000000000000
AREA(5) for ref. 0100000001100110100000000000000000000000000000000000000000000000

The 64-bit precision floating point representation of the rejected values is 180.0000000000000568434.