C $Header: /u/gcmpack/MITgcm/pkg/atm_compon_interf/atm_store_thsice.F,v 1.5 2016/01/06 00:51:58 jmc Exp $
C $Name:  $

#include "ATM_CPL_OPTIONS.h"

CBOP
C     !ROUTINE: ATM_STORE_THSICE
C     !INTERFACE:
      SUBROUTINE ATM_STORE_THSICE(
     I                     bi, bj,
     I                     myTime, myIter, myThid )

C     !DESCRIPTION: \bv
C     *==========================================================*
C     | SUBROUTINE ATM_STORE_THSICE
C     | o Routine for saving Sea-Ice fields from thSIce pkg
C     |   for export to coupling layer.
C     *==========================================================*
C     | This version interfaces to the THSICE package.
C     *==========================================================*
C     \ev

C     !USES:
      IMPLICIT NONE

C     == Global variables ==
#include "SIZE.h"

#include "EEPARAMS.h"
#include "PARAMS.h"
#include "CPL_PARAMS.h"
#ifdef ALLOW_THSICE
# include "THSICE_PARAMS.h"
# include "THSICE_VARS.h"
#endif
C     == Global variables for coupling interface ==
#include "ATMCPL.h"

C     !INPUT/OUTPUT PARAMETERS:
C     bi, bj  :: Tile indices
C     myTime :: Current model time
C     myIter :: Current timestep number
C     myThid :: my Thread Id number
      INTEGER bi, bj
      _RL     myTime
      INTEGER myIter
      INTEGER myThid
CEOP

#ifdef ALLOW_THSICE
C     !LOCAL VARIABLES:
C     i, j   :: Loop counters
      INTEGER i,j

      IF ( atm_cplExch1W_sIce ) THEN
C     o Accumulate Sea-Ice Mass from thSIce pkg that will be exported
C       to the coupling layer. seaIceMass is per surface unit, in kg/m2.
c      cplTimeFraction = 1. _d 0 / DFLOAT(cplSendFrq_iter)
c      sIceMassTime(bi,bj) = sIceMassTime(bi,bj) + cplTimeFraction
C-     Needs really to store the last time-step value and not the average
        sIceMassTime(bi,bj) = 1. _d 0
        DO j=1,sNy
         DO i=1,sNx
c          seaIceMass(i,j,bi,bj) = seaIceMass(i,j,bi,bj) + cplTimeFraction*
           seaIceMass(i,j,bi,bj) =
     &                   ( snowHeight(i,j,bi,bj)*rhos
     &                    + iceHeight(i,j,bi,bj)*rhoi
     &                   )*iceMask(i,j,bi,bj)
         ENDDO
        ENDDO
      ENDIF

      IF ( ( atm_cplExch1W_sIce.AND.atm_cplExch_DIC )
     &  .OR. atm_cplExch2W_sIce ) THEN
C     o Store Sea-Ice concentration (no-units) from thSIce pkg
C       that will be exported to the coupling layer.
        sIceFracTime(bi,bj) = 1. _d 0
        DO j=1,sNy
         DO i=1,sNx
           sIceFrac_cpl(i,j,bi,bj) = iceMask(i,j,bi,bj)
         ENDDO
        ENDDO
      ENDIF

      IF ( atm_cplExch2W_sIce ) THEN
C     o Store other thSIce state-vars
C       that will be exported to the coupling layer.
        sIceThickTime(bi,bj) = 1. _d 0
        sIceSnowHTime(bi,bj) = 1. _d 0
        sIceQ1Time   (bi,bj) = 1. _d 0
        sIceQ2Time   (bi,bj) = 1. _d 0
        DO j=1,sNy
         DO i=1,sNx
           sIceThick_cpl(i,j,bi,bj) = iceHeight(i,j,bi,bj)
           sIceSnowH_cpl(i,j,bi,bj) = snowHeight(i,j,bi,bj)
           sIceQ1_cpl   (i,j,bi,bj) = Qice1(i,j,bi,bj)
           sIceQ2_cpl   (i,j,bi,bj) = Qice2(i,j,bi,bj)
         ENDDO
        ENDDO
      ENDIF

#endif /* ALLOW_THSICE */

      RETURN
      END