C $Header: /u/gcmpack/MITgcm/pkg/aim_v23/aim_aim2land.F,v 1.3 2004/05/21 17:43:04 jmc Exp $ C $Name: $ #include "AIM_OPTIONS.h" #ifdef ALLOW_LAND #include "LAND_OPTIONS.h" #endif CBOP C !ROUTINE: AIM_AIM2LAND C !INTERFACE: SUBROUTINE AIM_AIM2LAND( I land_frc, bi, bj, myTime, myIter, myThid) C !DESCRIPTION: \bv C *==========================================================* C | S/R AIM_AIM2LAND C | o Export land surface fluxes to Land package C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global variables === C-- size for MITgcm & Physics package : #include "AIM_SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" C-- Physics package #include "AIM_PARAMS.h" #include "com_physcon.h" #include "com_physvar.h" #ifdef ALLOW_LAND #include "LAND_SIZE.h" #include "LAND_PARAMS.h" #include "LAND_VARS.h" #endif C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C land_frc :: land fraction [0-1] C bi,bj :: Tile index C myTime :: Current time of simulation ( s ) C myIter :: Current iteration number in simulation C myThid :: Number of this instance of the routine _RS land_frc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) INTEGER bi, bj, myIter, myThid _RL myTime CEOP #ifdef ALLOW_AIM #ifdef ALLOW_LAND C == Local variables == C i,j,k,I2 :: loop counters C conv_precip :: conversion factor for precip: from g/m2/s to kg/m2/s _RL conv_precip INTEGER i,j,k,I2 C-- Initialisation : IF ( .NOT.land_impl_grT ) THEN DO j=1,sNy DO i=1,sNx land_Pr_m_Ev(i,j,bi,bj) = 0. _d 0 land_EnWFlux(i,j,bi,bj) = 0. _d 0 ENDDO ENDDO ENDIF C-- Atmospheric Physics Fluxes c IF ( useLand ) THEN C from g/m2/s to kg/m2/s : conv_Precip = 1. _d -3 IF ( land_calc_grT .AND. .NOT.land_impl_grT ) THEN C-- Surface heat flux to compute ground temperature explicitely: k = 0 IF (aim_splitSIOsFx) k = 1 DO j=1,sNy DO i=1,sNx I2 = i+(j-1)*sNx C- total surface downward heat flux : land_HeatFlx(i,j,bi,bj) = & SSR(I2,k,myThid) & - SLR(I2,k,myThid) & - SHF(I2,1,myThid) & - EVAP(I2,1,myThid)*ALHC ENDDO ENDDO IF ( land_calc_snow ) THEN C- Evap of snow: substract Latent Heat of freezing from heatFlux DO j=1,sNy DO i=1,sNx I2 = i+(j-1)*sNx IF ( land_skinT(i,j,bi,bj).LT. 0. _d 0 .OR. & land_hSnow(i,j,bi,bj).GT. 0. _d 0 ) THEN land_HeatFlx(i,j,bi,bj) = land_HeatFlx(i,j,bi,bj) & - EVAP(I2,1,myThid)*ALHF land_EnWFlux(i,j,bi,bj) = & EVAP(I2,1,myThid)*ALHF ENDIF ENDDO ENDDO ENDIF C-- to compute ground temperature explicitely: end ENDIF C-- Fresh water fluxes DO j=1,sNy DO i=1,sNx I2 = i+(j-1)*sNx C- total Precip minus Evap surface flux : C convert from g.m-2.s-1 to kg/m2/s land_Pr_m_Ev(i,j,bi,bj) = land_Pr_m_Ev(i,j,bi,bj) & + conv_precip*( PRECNV(I2,myThid) & + PRECLS(I2,myThid) & - EVAP(I2,1,myThid) & ) ENDDO ENDDO IF ( aim_energPrecip ) THEN C- Compute energy flux related to Precip. (snow, T_rain) C Evap of snow: add Latent Heat of freezing DO j=1,sNy DO i=1,sNx I2 = i+(j-1)*sNx land_EnWFlux(i,j,bi,bj) = land_EnWFlux(i,j,bi,bj) & + EnPrec(I2,myThid)*( PRECNV(I2,myThid) & +PRECLS(I2,myThid) ) ENDDO ENDDO ENDIF C- end (if useLand) c ENDIF #endif /* ALLOW_LAND */ #endif /* ALLOW_AIM */ RETURN END