/[MITgcm]/MITgcm/pkg/land/land_stepfwd.F
ViewVC logotype

Diff of /MITgcm/pkg/land/land_stepfwd.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.5 by jmc, Fri May 21 13:41:02 2004 UTC revision 1.6 by jmc, Thu Jun 3 16:43:14 2004 UTC
# Line 80  C     ageFac       :: snow aging factor Line 80  C     ageFac       :: snow aging factor
80        _RL hNewSnow, dhSnowMx, dhSnow, mIceDt, ageFac        _RL hNewSnow, dhSnowMx, dhSnow, mIceDt, ageFac
81        INTEGER i,j,k,kp1        INTEGER i,j,k,kp1
82    
83    #ifdef LAND_DEBUG
84          LOGICAL dBug
85          INTEGER iprt,jprt,lprt
86          DATA iprt, jprt , lprt / 19 , 20 , 6 /
87     1010 FORMAT(A,I3,1P4E11.3)
88    #endif
89    
90        IF (land_calc_grT .AND. .NOT.land_impl_grT ) THEN        IF (land_calc_grT .AND. .NOT.land_impl_grT ) THEN
91  C--   Step forward ground temperature:  C--   Step forward ground temperature:
92    
# Line 145  C--   need (later on) ground temp. to be Line 152  C--   need (later on) ground temp. to be
152             IF ( land_frc(i,j,bi,bj).GT.0. ) THEN             IF ( land_frc(i,j,bi,bj).GT.0. ) THEN
153              mWater = land_rhoLiqW*land_waterCap              mWater = land_rhoLiqW*land_waterCap
154       &              *land_groundW(i,j,k,bi,bj)       &              *land_groundW(i,j,k,bi,bj)
155                mWater = MAX( mWater, 0. _d 0 )
156              grd_HeatCp = land_heatCs + land_CpWater*mWater              grd_HeatCp = land_heatCs + land_CpWater*mWater
157              temp_bf = (land_enthalp(i,j,k,bi,bj)+land_Lfreez*mWater)              temp_bf = (land_enthalp(i,j,k,bi,bj)+land_Lfreez*mWater)
158       &                                           / grd_HeatCp       &                                           / grd_HeatCp
159              temp_af =  land_enthalp(i,j,k,bi,bj) / grd_HeatCp              temp_af =  land_enthalp(i,j,k,bi,bj) / grd_HeatCp
160              land_groundT(i,j,k,bi,bj) =              land_groundT(i,j,k,bi,bj) =
161       &              MIN( temp_bf, MAX(temp_af, 0. _d 0) )       &              MIN( temp_bf, MAX(temp_af, 0. _d 0) )
162    #ifdef LAND_DEBUG
163                dBug = bi.eq.lprt .AND. i.EQ.iprt .AND. j.EQ.jprt
164                IF (dBug) write(6,1010)
165         &        'LAND_STEPFWD: k,temp,af,bf=',
166         &       k,land_groundT(i,j,k,bi,bj),temp_af,temp_bf
167    #endif
168             ENDIF             ENDIF
169            ENDDO            ENDDO
170           ENDDO           ENDDO
# Line 166  C--   Step forward Snow thickness (also Line 180  C--   Step forward Snow thickness (also
180             mPmE  = land_Pr_m_Ev(i,j,bi,bj)             mPmE  = land_Pr_m_Ev(i,j,bi,bj)
181             enWfx = land_EnWFlux(i,j,bi,bj)             enWfx = land_EnWFlux(i,j,bi,bj)
182             enGr1 = land_enthalp(i,j,1,bi,bj)*land_dzF(1)             enGr1 = land_enthalp(i,j,1,bi,bj)*land_dzF(1)
183    #ifdef LAND_DEBUG
184               dBug = bi.eq.lprt .AND. i.EQ.iprt .AND. j.EQ.jprt
185               IF (dBug) write(6,1010)
186         &       'LAND_STEPFWD:mPmE,enWfx,enGr1/dt,hSnow=',0,
187         &       mPmE,enWfx,enGr1/land_deltaT,land_hSnow(i,j,bi,bj)
188    #endif
189  C-    snow aging:  C-    snow aging:
190             land_snowAge(i,j,bi,bj) =             land_snowAge(i,j,bi,bj) =
191       &         ( land_deltaT + land_snowAge(i,j,bi,bj)*ageFac )       &         ( land_deltaT + land_snowAge(i,j,bi,bj)*ageFac )
# Line 192  C     glacier & ice-sheet missing: exces Line 212  C     glacier & ice-sheet missing: exces
212              mIceDt = land_rhoSnow * (hNewSnow-dhSnow) / land_deltaT              mIceDt = land_rhoSnow * (hNewSnow-dhSnow) / land_deltaT
213              land_runOff(i,j,bi,bj) = mIceDt/land_rhoLiqW              land_runOff(i,j,bi,bj) = mIceDt/land_rhoLiqW
214              land_enRnOf(i,j,bi,bj) = -mIceDt*land_Lfreez              land_enRnOf(i,j,bi,bj) = -mIceDt*land_Lfreez
215    #ifdef LAND_DEBUG
216                IF (dBug) write(6,1010)
217         &        'LAND_STEPFWD: 3,snP,mPmE,hNsnw,hSnw=',
218         &         3,snowPrec,mPmE,hNewSnow,land_hSnow(i,j,bi,bj)
219    #endif
220             ELSE             ELSE
221  C-    rain precip (whatever Evap is) or Evap of snow exceeds snow precip:  C-    rain precip (whatever Evap is) or Evap of snow exceeds snow precip:
222  C     => snow melts or sublimates  C     => snow melts or sublimates
# Line 210  c    &                 land_hSnow(i,j,bi Line 235  c    &                 land_hSnow(i,j,bi
235              ENDIF              ENDIF
236  c           IF (mPmE.GT.0.) land_snowAge(i,j,bi,bj) = timeSnowAge  c           IF (mPmE.GT.0.) land_snowAge(i,j,bi,bj) = timeSnowAge
237              mPmE = mPmE + dMsn/land_deltaT              mPmE = mPmE + dMsn/land_deltaT
238    #ifdef LAND_DEBUG
239                IF (dBug) write(6,1010)
240         &        'LAND_STEPFWD: 4,dMsn,mPmE,hSnw,enWfx=',
241         &         4,dMsn,mPmE,land_hSnow(i,j,bi,bj),flxEngU(i,j)
242    #endif
243             ENDIF             ENDIF
244             flxkup(i,j) = mPmE/land_rhoLiqW             flxkup(i,j) = mPmE/land_rhoLiqW
245  c          land_Pr_m_Ev(i,j,bi,bj) = mPmE  c          land_Pr_m_Ev(i,j,bi,bj) = mPmE
# Line 251  C--   Step forward ground Water: Line 281  C--   Step forward ground Water:
281         DO j=1,sNy         DO j=1,sNy
282          DO i=1,sNx          DO i=1,sNx
283           IF ( land_frc(i,j,bi,bj).GT.0. ) THEN           IF ( land_frc(i,j,bi,bj).GT.0. ) THEN
284    #ifdef LAND_DEBUG
285              dBug = bi.eq.lprt .AND. i.EQ.iprt .AND. j.EQ.jprt
286    #endif
287    
288  #ifdef LAND_OLD_VERSION  #ifdef LAND_OLD_VERSION
289            IF ( .TRUE. ) THEN            IF ( .TRUE. ) THEN
# Line 305  C-     Step forward soil moisture, level Line 338  C-     Step forward soil moisture, level
338             groundWnp1 = land_groundW(i,j,k,bi,bj)             groundWnp1 = land_groundW(i,j,k,bi,bj)
339       &       + land_deltaT * (flxkup(i,j)-flxkdw(i,j)) / fieldCapac       &       + land_deltaT * (flxkup(i,j)-flxkdw(i,j)) / fieldCapac
340    
341    #ifdef LAND_DEBUG
342               IF(dBug)write(6,1010)'LAND_STEPFWD: grdW-1,fx_ku,kd,grdW-1='
343         &      ,5,land_groundW(i,j,k,bi,bj)-1.,
344         &         flxkup(i,j),flxkdw(i,j),groundWnp1-1.
345    #endif
346    
347  C-     Water in excess will leave as run-off or go to level below  C-     Water in excess will leave as run-off or go to level below
348             land_groundW(i,j,k,bi,bj) = MIN(1. _d 0, groundWnp1)             land_groundW(i,j,k,bi,bj) = MIN(1. _d 0, groundWnp1)
349             grdWexcess = ( groundWnp1 - MIN(1. _d 0, groundWnp1) )             grdWexcess = ( groundWnp1 - MIN(1. _d 0, groundWnp1) )
# Line 331  C-     prepare fluxes for next level: Line 370  C-     prepare fluxes for next level:
370              flxEngU(i,j) = flxEngL              flxEngU(i,j) = flxEngL
371       &              + (1. _d 0-fractRunOff)*grdWexcess*enthalpGrdW       &              + (1. _d 0-fractRunOff)*grdWexcess*enthalpGrdW
372             ENDIF             ENDIF
373    #ifdef LAND_DEBUG
374               IF (dBug) write(6,1010) 'LAND_STEPFWD: Temp,FlxE,FlxW=',
375         &      7, land_groundT(i,j,k,bi,bj), flxEngU(i,j), flxkup(i,j)
376    #endif
377            ENDIF            ENDIF
378  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
379    #ifdef LAND_DEBUG
380               IF (dBug) write(6,1010) 'LAND_STEPFWD: RO,enRO=',
381         &      8, land_runOff(i,j,bi,bj),land_enRnOf(i,j,bi,bj)
382    #endif
383    
384           ENDIF           ENDIF
385          ENDDO          ENDDO
# Line 353  C--   Compute ground temperature from en Line 400  C--   Compute ground temperature from en
400  C-     Ground Heat capacity, layer k:  C-     Ground Heat capacity, layer k:
401            mWater = land_rhoLiqW*land_waterCap            mWater = land_rhoLiqW*land_waterCap
402       &            *land_groundW(i,j,k,bi,bj)       &            *land_groundW(i,j,k,bi,bj)
403              mWater = MAX( mWater, 0. _d 0 )
404            grd_HeatCp = land_heatCs + land_CpWater*mWater            grd_HeatCp = land_heatCs + land_CpWater*mWater
405  C         temperature below freezing:  C         temperature below freezing:
406            temp_bf = (land_enthalp(i,j,k,bi,bj)+land_Lfreez*mWater)            temp_bf = (land_enthalp(i,j,k,bi,bj)+land_Lfreez*mWater)

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.22