C $Header: /u/gcmpack/MITgcm/pkg/atm_ocn_coupler/atm_to_ocn_maprunoff.F,v 1.5 2016/01/06 00:28:58 jmc Exp $
C $Name:  $

#include "CPP_OPTIONS.h"

CBOP 0
C !ROUTINE: ATM_TO_OCN_MAPRUNOFF

C !INTERFACE:
      SUBROUTINE ATM_TO_OCN_MAPRUNOFF(
     I           fld_atm,
     O           fld_ocn,
     U           add2ocn )

C !DESCRIPTION:
C     *==========================================================*
C     | SUBROUTINE ATM_TO_OCN_MAPRUNOFF
C     | o maps RunOff from atmos. grid (land) to ocean grid
C     |    and Incorporate (substract) to ocean FreshWater flux
C     *==========================================================*

C !USES:
      IMPLICIT NONE
C     == Global variables ==
#include "ATMSIZE.h"
#include "OCNSIZE.h"
#include "CPL_MAP2GRIDS.h"

C !INPUT/OUTPUT PARAMETERS:
C     fld_atm :: Atmos. grid Run-Off field
C     fld_ocn :: Ocean grid Run-Off field (atmos field will be mapped to this)
C     add2ocn :: Ocean grid FreshWater field to update by substracting Run-Off
      _RL  fld_atm(Nx_atm*Ny_atm)
      _RL  fld_ocn(Nx_ocn*Ny_ocn)
      _RL  add2ocn(Nx_ocn*Ny_ocn)
CEOP

C !LOCAL VARIABLES:
      INTEGER n, ijo, ija

C       Set to zero everywhere
        DO ijo=1,Nx_ocn*Ny_ocn
          fld_ocn(ijo) = 0.
        ENDDO

C       Maps Runoff from land grid point to ocean grid point
C       and update oceanic FreshWater flux (substract RunOff)
        DO n=1,nROmap
          ijo=ijROocn(n)
          ija=ijROatm(n)
          fld_ocn(ijo) = fld_ocn(ijo)
     &                 + fld_atm(ija)*arROmap(n)
          add2ocn(ijo) = add2ocn(ijo)
     &                 - fld_atm(ija)*arROmap(n)
        ENDDO

      RETURN
      END