C $Header: /u/gcmpack/MITgcm/pkg/atm_compon_interf/atm_store_surfflux.F,v 1.3 2016/01/06 00:49:20 jmc Exp $ C $Name: $ #include "ATM_CPL_OPTIONS.h" CBOP C !ROUTINE: ATM_STORE_SURFFLUX C !INTERFACE: SUBROUTINE ATM_STORE_SURFFLUX( I bi, bj, I myTime, myIter, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | SUBROUTINE ATM_STORE_SURFFLUX C | o Routine for saving surface flux fields (in FFIELDS.h) C | for export to coupling layer. C *==========================================================* C | This version interfaces to the main model C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global variables == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "CPL_PARAMS.h" C == Global variables (main model) #include "FFIELDS.h" C == Global variables for coupling interface == #include "ATMCPL.h" C !INPUT/OUTPUT PARAMETERS: C bi, bj :: Tile indices C myTime :: Current time in simulation (s) C myIter :: Current iteration number C myThid :: My Thread Id. number INTEGER bi, bj _RL myTime INTEGER myIter INTEGER myThid C !LOCAL VARIABLES: C i, j :: Loop counters INTEGER i,j _RL cplTimeFraction CEOP cplTimeFraction = 1. _d 0 / DFLOAT(cplSendFrq_iter) C o Accumulate net surface heat flux (Qnet, +=upward, W/m2) C that will be exported to the coupling layer. HeatFluxTime(bi,bj) = HeatFluxTime(bi,bj) + cplTimeFraction DO j=1,sNy DO i=1,sNx HeatFlux(i,j,bi,bj) = HeatFlux(i,j,bi,bj) & + Qnet(i,j,bi,bj)*cplTimeFraction ENDDO ENDDO C o Accumulate net surface shortwave heat flux (Qsw, +=upward, W/m2) C that will be exported to the coupling layer. qShortWaveTime(bi,bj) = qShortWaveTime(bi,bj) + cplTimeFraction DO j=1,sNy DO i=1,sNx qShortWave(i,j,bi,bj) = qShortWave(i,j,bi,bj) & + Qsw(i,j,bi,bj)*cplTimeFraction ENDDO ENDDO C o Accumulate fresh water flux ( E-P, +=upward, kg/m^2/s) C that will be exported to the coupling layer. EvMPrTime(bi,bj) = EvMPrTime(bi,bj) + cplTimeFraction DO j=1,sNy DO i=1,sNx EvMPrFlux(i,j,bi,bj) = EvMPrFlux(i,j,bi,bj) & + EmPmR(i,j,bi,bj)*cplTimeFraction ENDDO ENDDO #ifdef ALLOW_THSICE IF ( useThSIce ) THEN C o Accumulate SaltFlux from sea-ice (saltFlux, +=upward, g/m^2/s) C that will be exported to the coupling layer. saltFxTime(bi,bj) = saltFxTime(bi,bj) + cplTimeFraction DO j=1,sNy DO i=1,sNx iceSaltFlx(i,j,bi,bj) = iceSaltFlx(i,j,bi,bj) & + saltFlux(i,j,bi,bj)*cplTimeFraction ENDDO ENDDO ENDIF #endif /* ALLOW_THSICE */ IF ( useAtm_Phys ) THEN C o Accumulate surface wind-stress C that will be exported to the coupling layer. tauXTime(bi,bj) = tauXTime(bi,bj) + cplTimeFraction tauYTime(bi,bj) = tauYTime(bi,bj) + cplTimeFraction DO j=1,sNy DO i=1,sNx tauX(i,j,bi,bj) = tauX(i,j,bi,bj) & + fu(i,j,bi,bj)*cplTimeFraction tauY(i,j,bi,bj) = tauY(i,j,bi,bj) & + fv(i,j,bi,bj)*cplTimeFraction ENDDO ENDDO ENDIF RETURN END