C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/thsice/thsice_map_exf.F,v 1.2 2007/04/16 23:37:48 jmc Exp $ C $Name: $ #include "THSICE_OPTIONS.h" #ifdef ALLOW_EXF #include "EXF_OPTIONS.h" #endif CBOP C !ROUTINE: THSICE_MAP_EXF C !INTERFACE: SUBROUTINE THSICE_MAP_EXF( I iceMsk, O totPrc, snowPrc, flxSW, I iMin,iMax,jMin,jMax, bi,bj, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | S/R THSICE_MAP_EXF C | Interface S/R : map Precip, Snow and shortwave fluxes C | from pkg EXF to thsice variables C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global data == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "FFIELDS.h" #ifdef ALLOW_EXF # include "EXF_CONSTANTS.h" # include "EXF_PARAM.h" # include "EXF_FIELDS.h" #endif C !INPUT/OUTPUT PARAMETERS: C === Routine arguments === C iceMsk :: sea-ice fraction: no ice=0, grid all ice 1 [] C totPrc :: Total Precipitation (including run-off) [kg/m2/s] C snowPrc :: Snow Precipitation [kg/m2/s] C flxSW :: Net short-wave surface flux (+=down) [W/m2] C iMin,iMax :: range of indices of computation domain C jMin,jMax :: range of indices of computation domain C bi,bj :: current tile indices C myThid :: Thread no. that called this routine. _RL iceMsk (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL totPrc (1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL snowPrc(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL flxSW (1-OLx:sNx+OLx,1-OLy:sNy+OLy) INTEGER iMin,iMax INTEGER jMin,jMax INTEGER bi,bj INTEGER myThid CEOP #ifdef ALLOW_THSICE #ifdef ALLOW_EXF C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| C === Local variables === C i,j :: current grid point indices INTEGER i,j DO j = jMin, jMax DO i = iMin, iMax totPrc(i,j) = precip(i,j,bi,bj)*rhoConstFresh #if defined (ALLOW_RUNOFF) || defined (ALLOW_SEAICE) totPrc(i,j) = totPrc(i,j) + runoff(i,j,bi,bj)*rhoConstFresh #endif CML flxSW (i,j) = -Qsw(i,j,bi,bj) flxSW (i,j) = swdown(i,j,bi,bj) ENDDO ENDDO IF ( snowPrecipFile .NE. ' ' ) THEN DO j = jMin, jMax DO i = iMin, iMax snowPrc(i,j) = snowPrecip(i,j,bi,bj)*rhoConstFresh ENDDO ENDDO ELSE C If specific snow precipitiation is now available, use C precipitation when ever the air temperature is below 0 degC DO j = jMin, jMax DO i = iMin, iMax IF ( iceMsk(i,j,bi,bj).GT.0. _d 0 & .AND. atemp(i,j,bi,bj).LE.cen2kel ) THEN CML & .AND. atemp(i,j,bi,bj).LE.Tf0kel ) THEN snowPrc(i,j) = precip(i,j,bi,bj)*rhoConstFresh ENDIF ENDDO ENDDO ENDIF C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| #endif /* ALLOW_EXF */ #endif /* ALLOW_THSICE */ RETURN END