C $Header: /u/gcmpack/MITgcm/pkg/aim_v23/phy_snow_precip.F,v 1.1 2004/03/11 14:33:19 jmc Exp $ C $Name: $ #include "AIM_OPTIONS.h" CBOP C !ROUTINE: SNOW_PRECIP C !INTERFACE: SUBROUTINE SNOW_PRECIP ( I PSA, dpFac, ThA, I IDEPTH,PRECNV,DQCNV,PRECLS,DQLSC, U DTCNV,DTLSC, O EnPrec, I kGrd,bi,bj,myThid) C !DESCRIPTION: \bv C *==========================================================* C | S/R SNOW_PRECIP C | o Diagnose snow precipitation according to near surface C | air temperature. C *==========================================================* C | Correct condensation heating for energy (rain Temp, snow) C | of precipication (L.S. cond & convect. precip) C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global variables === 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 == Routine Arguments == C !INPUT PARAMETERS: C kGrd :: Ground level index (2-dim) C bi,bj :: tile index C myThid :: Thread number for this instance of the routine C PSA :: norm. surface pressure [p/p0] (2-dim) C dpFac :: cell delta_P fraction (3-dim) C ThA :: Pot.temperature [K] (3-dim) C IDEPTH :: convection depth in layers (2-dim) C PRECNV :: convective precipitation [g/(m^2 s)] (2-dim) C DQCNV :: hum. tendency [g/(kg s)] from convection (3-dim) C PRECLS :: large-scale precipitation [g/(m^2 s)] (2-dim) C DQLSC :: hum. tendency [g/(kg s)] from l.s. cond (3-dim) C !MODIFIED PARAMETERS: C DTCNV :: temperature tendency from convection (3-dim) C DTLSC :: temperature tendency from l.s. cond (3-dim) C !OUTPUT PARAMETERS: C EnPrec :: energy of precipitation (snow, rain temp) [J/g] C-- _RL PSA(NGP), dpFac(NGP,NLEV), ThA(NGP,NLEV) _RL PRECLS(NGP), DTLSC(NGP,NLEV), DQLSC(NGP,NLEV) _RL PRECNV(NGP), DTCNV(NGP,NLEV), DQCNV(NGP,NLEV) _RL EnPrec(NGP) INTEGER IDEPTH(NGP) INTEGER kGrd(NGP) INTEGER bi,bj,myThid CEOP #ifdef ALLOW_AIM C-- Local variables: INTEGER J, K, Ktop _RL kappa _RL T1(NGP) C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| C-- 1. Initialization kappa = RD/CP C-- 2. Compute energy of precip, based on near-surface Air temperature: C note: EnPrec units are J/g since precip is in g/m2 and spec.hum. in g/Kg DO J=1,NGP IF ( kGrd(J).NE.0 ) THEN T1(J) = ThA(J,kGrd(J))*(PSA(J)**kappa) IF ( T1(J) .GE. tFreeze ) THEN EnPrec(J) = rainCP*(T1(J)-tFreeze) ELSE EnPrec(J) = -ALHF ENDIF ELSE EnPrec(J) = 0. ENDIF ENDDO C-- 3. Large-scale precipitation: correct condensation Heating DO J=1,NGP DO K=2,kGrd(J) DTLSC(J,K) = DTLSC(J,K) + EnPrec(J)*DQLSC(J,K)/CP ENDDO ENDDO C-- 4. Convective precipitation: correct condensation Heating DO J=1,NGP IF (kGrd(J).NE.0 .AND. IDEPTH(J).NE.0 ) THEN Ktop = kGrd(J) - IDEPTH(J) DTCNV(J,Ktop) = DTCNV(J,Ktop) & - EnPrec(J)*PRECNV(J)*GRDSCP(Ktop) ENDIF ENDDO #endif /* ALLOW_AIM */ RETURN END