subroutine newbilin 1,8
*
#if defined (DOC)
*
***s/r NEWBILIN  - Horizontal bilinear interpolation of the model variables
*               in grid-point space to observation points.
*
*     Author  : P. GAUTHIER *ARMA/MSC July 2002
*     .         -------------------------------
*Revision:
*     Y. Yang  May 2004
*              - Added do loops for multiple species.
*     Y. Yang  Feb. 2005 
*              - Removed 'OZ' part since ozone is now part of 'TR'.
*
*     Purpose:  Build GOMU, GOMV, GOMT, GOMGZ, GOMQ and GOMPS  with the model variables at the
*               observation points from the model variables in grid-points
*               space using bilinear interpolation.
*
*
#endif
      IMPLICIT NONE
*implicits
#include "comdim.cdk"
#include "comlun.cdk"
#include "comchem.cdk"
#include "comstate.cdk"
*
*     Local variables
*
      integer ilev, jj
*
*     Conversion of wind images to physical winds
*
      write(nulout,*)'NEWBILIN- Horizontal interpolation GD --> MVO'
      call UV2uv
*
*     3D fields
*
      if(NGEXIST(nguu).eq.1)  call gd2mvo('UU',nflev)
      if(NGEXIST(ngvv).eq.1)  call gd2mvo('VV',nflev)
      if(NGEXIST(ngq).eq.1)   call gd2mvo('Q0',nflev)
      if(NGEXIST(ngtt).eq.1)  call gd2mvo('TT',nflev)
      DO JJ = 1,NGCMT
           if(NGEXIST(ngtr(JJ)).eq.1)  call gd2mvo(CGCMT(JJ),nflev)
      ENDDO
      if(NGEXIST(nggz).eq.1)  call gd2mvo('GZ',nflev)
*
*     2D fields
*
      ilev = 1
      if(NGEXIST(ngps).eq.1)  call gd2mvo('PS',ilev)
      if(NGEXIST(ngtg).eq.1)  call gd2mvo('TG',ilev)
*
      return
      end subroutine newbilin