C $Header: /u/gcmpack/MITgcm/pkg/aim_v23/phy_suflux_ocean.F,v 1.2 2004/06/24 23:43:11 jmc Exp $ C $Name: $ #include "AIM_OPTIONS.h" CBOP C !ROUTINE: SUFLUX_OCEAN C !INTERFACE: SUBROUTINE SUFLUX_OCEAN( I PSA, FMASK, I Tsurf, SSR, SLRD, I T1, T0, Q0, DENVV, O SHF, EVAP, SLRU, I bi,bj,myThid) C !DESCRIPTION: \bv C *==========================================================* C | S/R SUFLUX_OCEAN C | o compute surface flux over ocean C *==========================================================* C | o contains part of original S/R SUFLUX (Speedy code) C *==========================================================* C \ev C !USES: IMPLICIT NONE C Resolution parameters C-- size for MITgcm & Physics package : #include "AIM_SIZE.h" #include "EEPARAMS.h" C Physical constants + functions of sigma and latitude #include "com_physcon.h" C Surface flux constants #include "com_sflcon.h" C == Routine Arguments == C-- Input: C FMASK :: fractional land-sea mask (2-dim) C Tsurf :: surface temperature (2-dim) C SSR :: sfc sw radiation (net flux) (2-dim) C SLRD :: sfc lw radiation (downward flux)(2-dim) C T1 :: near-surface air temperature (from Pot.temp) C T0 :: near-surface air temperature (2-dim) C Q0 :: near-surface sp. humidity [g/kg](2-dim) C DENVV :: surface flux (sens,lat.) coeff. (=Rho*|V|) [kg/m2/s] C-- Output: C SHF :: sensible heat flux (2-dim) C EVAP :: evaporation [g/(m^2 s)] (2-dim) C SLRU :: sfc lw radiation (upward flux) (2-dim) C-- Input: C bi,bj :: tile index C myThid :: Thread number for this instance of the routine C-- _RL PSA(NGP) _RL FMASK(NGP), Tsurf(NGP) _RL SSR(NGP), SLRD(NGP) _RL T1(NGP), T0(NGP), Q0(NGP), DENVV(NGP) _RL SHF(NGP), EVAP(NGP), SLRU(NGP) INTEGER bi,bj,myThid CEOP #ifdef ALLOW_AIM C-- Local variables: C CDENVV :: surf. heat flux (sens.,lat.) coeff including stability effect _RL CDENVV(NGP), RDTH, FSSEA _RL QSAT0(NGP) _RL QDUMMY(1), RDUMMY(1), TS4 INTEGER J C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| C-- 2. Computation of fluxes over land and sea C 2.1 Wind stress C 2.2 Sensible heat flux (from clim. TS over land) C Stability correction RDTH = FSTAB/DTHETA DO J=1,NGP FSSEA =1.+MIN(DTHETA,MAX(-DTHETA, Tsurf(J)-T1(J)))*RDTH CDENVV(J)=CHS*DENVV(J)*FSSEA ENDDO DO J=1,NGP SHF(J) = CDENVV(J)*CP*(Tsurf(J)-T0(J)) ENDDO C 2.3 Evaporation CALL SHTORH (0, NGP, Tsurf, PSA, 1. _d 0, QDUMMY, RDUMMY, & QSAT0, myThid) DO J=1,NGP EVAP(J) = CDENVV(J)*(QSAT0(J)-Q0(J)) ENDDO C 2.4 Emission of lw radiation from the surface DO J=1,NGP TS4 = Tsurf(J)**4 SLRU(J) = SBC*TS4 ENDDO C-- 3. Adjustment of skin temperature and fluxes over land C-- based on energy balance (to be implemented) C <= done separately for each surface type (land,sea,se-ice) C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| #endif /* ALLOW_AIM */ RETURN END