--- MITgcm/pkg/aim_v23/aim_aim2dyn.F 2004/03/11 14:33:19 1.4 +++ MITgcm/pkg/aim_v23/aim_aim2dyn.F 2004/07/08 15:51:19 1.5 @@ -1,4 +1,4 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/aim_v23/aim_aim2dyn.F,v 1.4 2004/03/11 14:33:19 jmc Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/aim_v23/aim_aim2dyn.F,v 1.5 2004/07/08 15:51:19 jmc Exp $ C $Name: $ #include "AIM_OPTIONS.h" @@ -32,6 +32,7 @@ #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" +#include "SURFACE.h" #include "DYNVARS.h" #include "AIM2DYN.h" @@ -57,32 +58,91 @@ C-- Physics tendency term +C- Planetary boundary layer drag coeff. + DO j=1,sNy + DO i=1,sNx + I2 = i+(j-1)*sNx + aim_drag(i,j,bi,bj) = DRAG(I2,0,myThid) + ENDDO + ENDDO + DO k=1,Nr + Katm = _KD2KA( k ) conv_T2theta = (atm_po/rC(k))**atm_kappa + +C- temp. & water vap. tendencies (ignoring partial cell factor) DO j=1,sNy DO i=1,sNx I2 = i+(j-1)*sNx - Katm = _KD2KA( k ) -C Planetary boundary layer drag coeff. - aim_drag(i,j,bi,bj) = DRAG(I2,0,myThid) - -C Net temperature tendency - aim_dTdt(i,j,k,bi,bj) = TT_LSC(I2,Katm,myThid) - & + ( TT_CNV(I2,Katm,myThid) +C temperature tendency (except LSC, added later) + aim_dTdt(i,j,k,bi,bj) = TT_CNV(I2,Katm,myThid) & +TT_PBL(I2,Katm,myThid) & +TT_RSW(I2,Katm,myThid) & +TT_RLW(I2,Katm,myThid) - & )*recip_hFacC(i,j,k,bi,bj) - aim_dTdt(i,j,k,bi,bj) = aim_dTdt(i,j,k,bi,bj)*conv_T2theta - -C Net water vapor tendency - aim_dSdt(i,j,k,bi,bj) = QT_LSC(I2,Katm,myThid) - & + ( QT_CNV(I2,Katm,myThid) +C water vapor tendency (except LSC, added later) + aim_dSdt(i,j,k,bi,bj) = QT_CNV(I2,Katm,myThid) & +QT_PBL(I2,Katm,myThid) - & )*recip_hFacC(i,j,k,bi,bj) + ENDDO + ENDDO +C- Account for partial cell filling: +#ifdef NONLIN_FRSURF + IF ( staggerTimeStep .AND. nonlinFreeSurf.GT.0 ) THEN + IF ( select_rStar.GT.0 ) THEN + DO j=1,sNy + DO i=1,sNx + aim_dTdt(i,j,k,bi,bj) = aim_dTdt(i,j,k,bi,bj) + & *recip_hFacC(i,j,k,bi,bj) + & /rStarExpC(i,j,bi,bj) + aim_dSdt(i,j,k,bi,bj) = aim_dSdt(i,j,k,bi,bj) + & *recip_hFacC(i,j,k,bi,bj) + & /rStarExpC(i,j,bi,bj) + ENDDO + ENDDO + ELSE + DO j=1,sNy + DO i=1,sNx + IF ( k.EQ.ksurfC(i,j,bi,bj) ) THEN + aim_dTdt(i,j,k,bi,bj) = aim_dTdt(i,j,k,bi,bj) + & /hFac_surfC(i,j,bi,bj) + aim_dSdt(i,j,k,bi,bj) = aim_dSdt(i,j,k,bi,bj) + & /hFac_surfC(i,j,bi,bj) + ELSE + aim_dTdt(i,j,k,bi,bj) = aim_dTdt(i,j,k,bi,bj) + & *recip_hFacC(i,j,k,bi,bj) + aim_dSdt(i,j,k,bi,bj) = aim_dSdt(i,j,k,bi,bj) + & *recip_hFacC(i,j,k,bi,bj) + ENDIF + ENDDO + ENDDO + ENDIF + ELSE +#else /* ndef NONLIN_FRSURF */ + IF (.TRUE.) THEN +#endif /* NONLIN_FRSURF */ + DO j=1,sNy + DO i=1,sNx + aim_dTdt(i,j,k,bi,bj) = aim_dTdt(i,j,k,bi,bj) + & *recip_hFacC(i,j,k,bi,bj) + aim_dSdt(i,j,k,bi,bj) = aim_dSdt(i,j,k,bi,bj) + & *recip_hFacC(i,j,k,bi,bj) + ENDDO + ENDDO + ENDIF + +C- Net tendencies : Add LSC term & comvert to Pot.Temp.: + DO j=1,sNy + DO i=1,sNx + I2 = i+(j-1)*sNx + aim_dTdt(i,j,k,bi,bj) = ( aim_dTdt(i,j,k,bi,bj) + & +TT_LSC(I2,Katm,myThid) + & )*conv_T2theta + aim_dSdt(i,j,k,bi,bj) = aim_dSdt(i,j,k,bi,bj) + & +QT_LSC(I2,Katm,myThid) ENDDO ENDDO + +C--- end of k loop. ENDDO #endif /* ALLOW_AIM */