C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/atm_compon_interf/atm_store_thsice.F,v 1.4 2015/11/20 22:50:53 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 "ATMIDS.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 _RL cplTimeFraction 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 seaIceTime(bi,bj) = seaIceTime(bi,bj) + cplTimeFraction C- Needs really to store the last time-step value and not the average cplTimeFraction = 1. _d 0 seaIceTime(bi,bj) = cplTimeFraction DO j=1,sNy DO i=1,sNx c seaIceMass(i,j,bi,bj) = seaIceMass(i,j,bi,bj) + seaIceMass(i,j,bi,bj) = & ( snowHeight(i,j,bi,bj)*rhos & + iceHeight(i,j,bi,bj)*rhoi & )*iceMask(i,j,bi,bj)*cplTimeFraction ENDDO ENDDO IF ( atm_cplExch_DIC ) THEN C o Accumulate Sea-Ice concentration (no-units) from thSIce pkg C that will be exported to the coupling layer. c cplTimeFraction = 1. _d 0 / DFLOAT(cplSendFrq_iter) c fracIceTime(bi,bj) = fracIceTime(bi,bj) + cplTimeFraction C- Better to store the last time-step value and not the average cplTimeFraction = 1. _d 0 fracIceTime(bi,bj) = cplTimeFraction DO j=1,sNy DO i=1,sNx c fracIce(i,j,bi,bj) = fracIce(i,j,bi,bj) fracIce(i,j,bi,bj) = 0. _d 0 & + iceMask(i,j,bi,bj)*cplTimeFraction ENDDO ENDDO ENDIF #endif /* ALLOW_THSICE */ RETURN END