/[MITgcm]/MITgcm/pkg/thsice/thsice_step_fwd.F
ViewVC logotype

Diff of /MITgcm/pkg/thsice/thsice_step_fwd.F

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

revision 1.3 by jmc, Wed Apr 7 23:40:34 2004 UTC revision 1.10 by jmc, Sun Jul 10 01:24:25 2005 UTC
# Line 88  C     TFrzOce   :: sea-water freezing te Line 88  C     TFrzOce   :: sea-water freezing te
88        _RL oceV2s, oceTs        _RL oceV2s, oceTs
89        _RL compact, hIce, hSnow, Tsf, Tice(nlyr), qicen(nlyr)        _RL compact, hIce, hSnow, Tsf, Tice(nlyr), qicen(nlyr)
90        _RL tmpflx(0:2), tmpdTs        _RL tmpflx(0:2), tmpdTs
91    #ifdef ALLOW_DIAGNOSTICS
92          _RL tmpFac
93    #endif
94    
95        LOGICAL dBug        LOGICAL dBug
96    
       dBug = .FALSE.  
97   1010 FORMAT(A,1P4E11.3)   1010 FORMAT(A,1P4E11.3)
98          dBug = .FALSE.
99    C-    Initialise flxAtm
100           DO j = 1-Oly, sNy+Oly
101            DO i = 1-Olx, sNx+Olx
102              flxAtm(i,j) = 0.
103            ENDDO
104           ENDDO
105    
106        IF ( buoyancyRelation(1:7) .EQ. 'OCEANIC' ) THEN        IF ( fluidIsWater ) THEN
107         DO j = jMin, jMax         DO j = jMin, jMax
108          DO i = iMin, iMax          DO i = iMin, iMax
109  c        dBug = ( bi.EQ.3 .AND. i.EQ.15 .AND. j.EQ.15 )  c        dBug = ( bi.EQ.3 .AND. i.EQ.15 .AND. j.EQ.11 )
110    
111  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
112  C    part.1 : ice-covered fraction ;  C    part.1 : ice-covered fraction ;
# Line 111  C------- Line 120  C-------
120            Tsf     = Tsrf(i,j,bi,bj)            Tsf     = Tsrf(i,j,bi,bj)
121            qicen(1)= Qice1(i,j,bi,bj)            qicen(1)= Qice1(i,j,bi,bj)
122            qicen(2)= Qice2(i,j,bi,bj)            qicen(2)= Qice2(i,j,bi,bj)
123              IF ( dBug ) THEN
124               WRITE(6,'(A,2I4,2I2)') 'ThSI_FWD: i,j=',i,j,bi,bj
125               WRITE(6,1010) 'ThSI_FWD:-0- iceMask, hIc, hSn, Tsf  =',
126         &                                 icFrac, hIce,hSnow,Tsf
127              ENDIF
128    
129            CALL THSICE_ALBEDO(            CALL THSICE_ALBEDO(
130       I               hIce, hSnow, Tsf, snowAge(i,j,bi,bj),       I               hIce, hSnow, Tsf, snowAge(i,j,bi,bj),
# Line 136  C--    Update Sea-Ice state : Line 150  C--    Update Sea-Ice state :
150            Tice2(i,j,bi,bj)=Tice(2)            Tice2(i,j,bi,bj)=Tice(2)
151            Qice1(i,j,bi,bj)=qicen(1)            Qice1(i,j,bi,bj)=qicen(1)
152            Qice2(i,j,bi,bj)=qicen(2)            Qice2(i,j,bi,bj)=qicen(2)
153  #ifdef ALLOW_TIMEAVE            siceAlb(i,j,bi,bj) = icFrac*albedo
154            ice_albedo_Ave(i,j,bi,bj) = ice_albedo_Ave(i,j,bi,bj)            IF ( dBug ) THEN
155       &                              + icFrac*albedo*thSIce_deltaT             WRITE(6,1010) 'ThSI_FWD: Tsf, Tice(1,2), frzmltMxL =',
156  #endif /*ALLOW_TIMEAVE*/       &                              Tsf, Tice, frzmltMxL
157               WRITE(6,1010) 'ThSI_FWD: sHeat,fxCndBt, fxAtm,evAtm=',
158         &                  sHeating(i,j,bi,bj), flxCndBt(i,j,bi,bj),
159         &                  flxAtm(i,j), evpAtm(i,j)
160              ENDIF
161           ENDIF           ENDIF
162          ENDDO          ENDDO
163         ENDDO         ENDDO
164        ENDIF        ENDIF
165        dBug = .FALSE.        dBug = .FALSE.
166    
167    #ifdef ALLOW_DIAGNOSTICS
168          IF ( useDiagnostics ) THEN
169            tmpFac = 1. _d 0
170            CALL DIAGNOSTICS_FRACT_FILL(
171         I                   snowPrc,   iceMask,tmpFac,'SIsnwPrc',
172         I                   0,1,1,bi,bj,myThid)
173          ENDIF
174    #endif /* ALLOW_DIAGNOSTICS */
175    
176  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
177  C    part.2 : ice-covered fraction ;  C    part.2 : ice-covered fraction ;
178  C     change in ice/snow thickness and ice-fraction  C     change in ice/snow thickness and ice-fraction
# Line 155  C------- Line 182  C-------
182        ageFac = 1. _d 0 - thSIce_deltaT/agingTime        ageFac = 1. _d 0 - thSIce_deltaT/agingTime
183        DO j = jMin, jMax        DO j = jMin, jMax
184         DO i = iMin, iMax         DO i = iMin, iMax
185  c       dBug = ( bi.EQ.3 .AND. i.EQ.15 .AND. j.EQ.15 )  c       dBug = ( bi.EQ.3 .AND. i.EQ.15 .AND. j.EQ.11 )
186    
187          TFrzOce = -mu_Tf*sOceMxL(i,j,bi,bj)          TFrzOce = -mu_Tf*sOceMxL(i,j,bi,bj)
188          oceTs   = tOceMxL(i,j,bi,bj)          oceTs   = tOceMxL(i,j,bi,bj)
# Line 167  c       dBug = ( bi.EQ.3 .AND. i.EQ.15 . Line 194  c       dBug = ( bi.EQ.3 .AND. i.EQ.15 .
194          compact= iceMask(i,j,bi,bj)          compact= iceMask(i,j,bi,bj)
195  C-------  C-------
196          IF (dBug .AND. (frzmltMxL.GT.0. .OR. compact.GT.0.) ) THEN          IF (dBug .AND. (frzmltMxL.GT.0. .OR. compact.GT.0.) ) THEN
197            WRITE(6,1010) 'ThSI_FWD:-1- iceMask,hIc,hSn,Qnet=',            WRITE(6,'(A,2I4,2I2)') 'ThSI_FWD: i,j=',i,j,bi,bj
198       &                  compact, hIce, hSnow, Qnet(i,j,bi,bj)            WRITE(6,1010) 'ThSI_FWD:-1- iceMask, hIc, hSn, Tsf  =',
199            WRITE(6,1010) 'ThSI_FWD: ocTs,TFrzOce,frzmltMxL=',       &                  compact, iceHeight(i,j,bi,bj),
200       &                            oceTs,TFrzOce,frzmltMxL       &                  snowHeight(i,j,bi,bj), Tsrf(i,j,bi,bj)
201              WRITE(6,1010) 'ThSI_FWD: ocTs,TFrzOce,frzmltMxL,Qnet=',
202         &                     oceTs, TFrzOce, frzmltMxL,Qnet(i,j,bi,bj)
203          ENDIF          ENDIF
204  C-------  C-------
205          IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN          IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN
# Line 225  C---+----1----+----2----+----3----+----4 Line 254  C---+----1----+----2----+----3----+----4
254    
255  C--    Update Sea-Ice state :  C--    Update Sea-Ice state :
256  c         iceMask(i,j,bi,bj)=compact  c         iceMask(i,j,bi,bj)=compact
257            iceheight(i,j,bi,bj) = hIce            iceHeight(i,j,bi,bj) = hIce
258            snowheight(i,j,bi,bj)= hSnow            snowHeight(i,j,bi,bj)= hSnow
259            Tsrf(i,j,bi,bj) =Tsf            Tsrf(i,j,bi,bj) =Tsf
260            Qice1(i,j,bi,bj)=qicen(1)            Qice1(i,j,bi,bj)=qicen(1)
261            Qice2(i,j,bi,bj)=qicen(2)            Qice2(i,j,bi,bj)=qicen(2)
# Line 242  C-     weighted average net fluxes: Line 271  C-     weighted average net fluxes:
271            EmPmR(i,j,bi,bj)=-icFrac*frw2oc/rhofw+opFrac*EmPmR(i,j,bi,bj)            EmPmR(i,j,bi,bj)=-icFrac*frw2oc/rhofw+opFrac*EmPmR(i,j,bi,bj)
272            saltFlux(i,j,bi,bj)=-icFrac*fsalt            saltFlux(i,j,bi,bj)=-icFrac*fsalt
273    
274            IF (dBug) WRITE(6,1010)'ThSI_FWD:-3- compact,hIc,hSn,Qnet=',            IF (dBug) WRITE(6,1010)
275       &                      compact,hIce,hSnow,Qnet(i,j,bi,bj)       &          'ThSI_FWD:-3- compact, hIc, hSn, Qnet =',
276         &                        compact,hIce,hSnow,Qnet(i,j,bi,bj)
277    
278          ELSEIF (hOceMxL(i,j,bi,bj).gt.0. _d 0) THEN          ELSEIF (hOceMxL(i,j,bi,bj).gt.0. _d 0) THEN
279            flxAtm(i,j) =  -Qnet(i,j,bi,bj)            flxAtm(i,j) =  -Qnet(i,j,bi,bj)
# Line 291  C--    Update Sea-Ice state : Line 321  C--    Update Sea-Ice state :
321               Qice1(i,j,bi,bj) = qicen(1)               Qice1(i,j,bi,bj) = qicen(1)
322               Qice2(i,j,bi,bj) = qicen(2)               Qice2(i,j,bi,bj) = qicen(2)
323            ENDIF            ENDIF
324            iceheight(i,j,bi,bj) = hIce            iceHeight(i,j,bi,bj) = hIce
325            snowheight(i,j,bi,bj)= hSnow            snowHeight(i,j,bi,bj)= hSnow
326  C--    Net fluxes :  C--    Net fluxes :
327            Qnet(i,j,bi,bj) = Qnet(i,j,bi,bj) - flx2oc            Qnet(i,j,bi,bj) = Qnet(i,j,bi,bj) - flx2oc
328            EmPmR(i,j,bi,bj)= EmPmR(i,j,bi,bj)- frw2oc/rhofw            EmPmR(i,j,bi,bj)= EmPmR(i,j,bi,bj)- frw2oc/rhofw
329            saltFlux(i,j,bi,bj)=saltFlux(i,j,bi,bj) - fsalt            saltFlux(i,j,bi,bj)=saltFlux(i,j,bi,bj) - fsalt
330    
331            IF (dBug) WRITE(6,1010)'ThSI_FWD:-4- compact,hIc,hSn,Qnet=',            IF (dBug) WRITE(6,1010)
332         &          'ThSI_FWD:-4- compact, hIc, hSn, Qnet =',
333       &                        compact,hIce,hSnow,Qnet(i,j,bi,bj)       &                        compact,hIce,hSnow,Qnet(i,j,bi,bj)
334  C--   - if esurp > 0 : end  C--   - if esurp > 0 : end
335          ENDIF          ENDIF
# Line 321  C--   - if esurp > 0 : end Line 352  C--   - if esurp > 0 : end
352  C--     Return atmospheric fluxes in evpAtm & flxSW (same sign and units):  C--     Return atmospheric fluxes in evpAtm & flxSW (same sign and units):
353          evpAtm(i,j) = frwAtm          evpAtm(i,j) = frwAtm
354          flxSW (i,j) = flxAtm(i,j)          flxSW (i,j) = flxAtm(i,j)
355    
356    #ifdef ATMOSPHERIC_LOADING
357    C--     Compute Sea-Ice Loading (= mass of sea-ice + snow / area unit)
358            sIceLoad(i,j,bi,bj) = ( snowHeight(i,j,bi,bj)*rhos
359         &                         + iceHeight(i,j,bi,bj)*rhoi
360         &                        )*iceMask(i,j,bi,bj)
361    #endif
362    
363         ENDDO         ENDDO
364        ENDDO        ENDDO
365    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22