/[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.1 by jmc, Sun Nov 23 01:20:13 2003 UTC revision 1.2 by jmc, Wed Dec 31 17:44:32 2003 UTC
# Line 45  C     myThid :: thread number for this i Line 45  C     myThid :: thread number for this i
45  #ifdef ALLOW_THSICE  #ifdef ALLOW_THSICE
46  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
47  C     === Local variables ===  C     === Local variables ===
48    C     snowAge       :: snow age (s)
49    C     albedo        :: surface albedo [0-1]
50    C     fSWabs        :: net Short-Wave (+ = down) at surface (W m-2)
51  C     Fbot          :: the oceanic heat flux already incorporated (ice_therm)  C     Fbot          :: the oceanic heat flux already incorporated (ice_therm)
52  C     flxAtm        :: net heat flux from the atmosphere ( >0 downward)  C     flxAtm        :: net heat flux from the atmosphere ( >0 downward)
53  C     evpAtm        :: evaporation to the atmosphere  C     evpAtm        :: evaporation to the atmosphere
# Line 53  C     qleft         :: net heat flux fro Line 56  C     qleft         :: net heat flux fro
56  C     ffresh        :: fresh-water flux from the ice to the ocean  C     ffresh        :: fresh-water flux from the ice to the ocean
57  C     fsalt         :: mass salt flux to the ocean  C     fsalt         :: mass salt flux to the ocean
58        INTEGER i,j        INTEGER i,j
59        _RL fswdown, qleft, qNewIce        _RL snowAge
60          _RL albedo
61          _RL fSWabs
62          _RL qleft, qNewIce
63        _RL fsalt        _RL fsalt
64        _RL ffresh        _RL ffresh
65        _RL Tf, cphm, frzmlt        _RL Tf, cphm, frzmlt
# Line 74  c       dBug = ( bi.EQ.3 .AND. i.EQ.13 . Line 80  c       dBug = ( bi.EQ.3 .AND. i.EQ.13 .
80    
81          Tf     = -mu_Tf*salt(i,j,1,bi,bj)          Tf     = -mu_Tf*salt(i,j,1,bi,bj)
82          cphm   = cpwater*rhosw*drF(1)*hFacC(i,j,1,bi,bj)          cphm   = cpwater*rhosw*drF(1)*hFacC(i,j,1,bi,bj)
83          frzmlt = (Tf-theta(i,j,1,bi,bj))*cphm/thSIce_deltaT          oceTs  = theta(i,j,1,bi,bj)
84            frzmlt = (Tf-oceTs)*cphm/thSIce_deltaT
85            compact= iceMask(i,j,bi,bj)
86            hIce   = iceHeight(i,j,bi,bj)
87            hSnow  = snowHeight(i,j,bi,bj)
88          Fbot   = 0. _d 0          Fbot   = 0. _d 0
         compact= 0. _d 0  
89          snow(i,j,bi,bj)     = 0. _d 0          snow(i,j,bi,bj)     = 0. _d 0
90          saltFlux(i,j,bi,bj) = 0. _d 0          saltFlux(i,j,bi,bj) = 0. _d 0
91    
92          IF (dBug.AND.(frzmlt.GT.0. .OR.iceMask(i,j,bi,bj).GT.0.)) THEN          IF (dBug .AND. (frzmlt.GT.0. .OR. compact.GT.0.) ) THEN
93            WRITE(6,1010) 'ThSI_FWD:-0- iceMask,hIc,hSn,Qnet=',            WRITE(6,1010) 'ThSI_FWD:-0- iceMask,hIc,hSn,Qnet=',
94       &       iceMask(i,j,bi,bj),iceHeight(i,j,bi,bj),       &                  compact, hIce, hSnow, Qnet(i,j,bi,bj)
      &       snowHeight(i,j,bi,bj), Qnet(i,j,bi,bj)  
95            WRITE(6,1010) 'ThSI_FWD: ocTs,Tf,frzmlt=',            WRITE(6,1010) 'ThSI_FWD: ocTs,Tf,frzmlt=',
96       &              theta(i,j,1,bi,bj),Tf,frzmlt       &                            oceTs,Tf,frzmlt
97          ENDIF          ENDIF
98    
99  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
# Line 93  C    part.1 : ice-covered fraction ; Line 101  C    part.1 : ice-covered fraction ;
101  C     can only reduce the ice-fraction but not increase it.  C     can only reduce the ice-fraction but not increase it.
102  C-------  C-------
103          IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN          IF (iceMask(i,j,bi,bj).GT.0. _d 0) THEN
           fswdown = solar(i,j,bi,bj)  
104            oceHs   = hfacC(i,j,1,bi,bj)*drF(1)            oceHs   = hfacC(i,j,1,bi,bj)*drF(1)
           oceTs   = theta(i,j,1,bi,bj)  
105            oceSs   = salt (i,j,1,bi,bj)            oceSs   = salt (i,j,1,bi,bj)
106            oceV2s  = ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj)            oceV2s  = ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj)
107       &              + uvel(i+1,j,1,bi,bj)*uvel(i+1,j,1,bi,bj)       &              + uvel(i+1,j,1,bi,bj)*uvel(i+1,j,1,bi,bj)
108       &              + vvel(i,j+1,1,bi,bj)*vvel(i,j+1,1,bi,bj)       &              + vvel(i,j+1,1,bi,bj)*vvel(i,j+1,1,bi,bj)
109       &              + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj) )*0.5 _d 0       &              + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj) )*0.5 _d 0
110            compact = iceMask(i,j,bi,bj)            snowAge = sage(i,j,bi,bj)
111            hIce    = iceHeight(i,j,bi,bj)  c         snowAge = thSIce_deltaT
           hSnow   = snowHeight(i,j,bi,bj)  
112            Tsf     = Tsrf(i,j,bi,bj)            Tsf     = Tsrf(i,j,bi,bj)
113            Tice(1) = Tice1(i,j,bi,bj)            Tice(1) = Tice1(i,j,bi,bj)
114            Tice(2) = Tice2(i,j,bi,bj)            Tice(2) = Tice2(i,j,bi,bj)
115            qicen(1)= Qice1(i,j,bi,bj)            qicen(1)= Qice1(i,j,bi,bj)
116            qicen(2)= Qice2(i,j,bi,bj)            qicen(2)= Qice2(i,j,bi,bj)
117              CALL THSICE_ALBEDO(hIce,hSnow,Tsf,snowAge,albedo)
118              fSWabs = solar(i,j,bi,bj)*(1. _d 0 - albedo)
119            CALL THSICE_THERM(            CALL THSICE_THERM(
120       I          fswdown, oceHs, oceV2s, oceSs, oceTs,       I          fSWabs, oceHs, oceV2s, oceSs, oceTs,
121       U          compact, hIce, hSnow, Tsf, Tice, qicen,       U          compact, hIce, hSnow, Tsf, Tice, qicen,
122       O          qleft, ffresh, fsalt, Fbot,       O          qleft, ffresh, fsalt, Fbot,
123       O          flxAtm, evpAtm,       O          flxAtm, evpAtm,
# Line 137  C---+----1----+----2----+----3----+----4 Line 144  C---+----1----+----2----+----3----+----4
144  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
145    
146  C--    Update Sea-Ice state :  C--    Update Sea-Ice state :
 c         theta(i,j,1,bi,bj) = oceTs  
147  c         iceMask(i,j,bi,bj)=compact  c         iceMask(i,j,bi,bj)=compact
148            iceheight(i,j,bi,bj) = hIce            iceheight(i,j,bi,bj) = hIce
149            snowheight(i,j,bi,bj)= hSnow            snowheight(i,j,bi,bj)= hSnow
# Line 160  C--    Net fluxes : Line 166  C--    Net fluxes :
166            ICE_FWfx_AVE(i,j,bi,bj) = ICE_FWfx_AVE(i,j,bi,bj)            ICE_FWfx_AVE(i,j,bi,bj) = ICE_FWfx_AVE(i,j,bi,bj)
167       &          + ( iceFrac*frwAtm + openFrac*EmPmR(i,j,bi,bj)       &          + ( iceFrac*frwAtm + openFrac*EmPmR(i,j,bi,bj)
168       &            )*thSIce_deltaT       &            )*thSIce_deltaT
169              ICE_albedo_AVE(i,j,bi,bj) = ICE_albedo_AVE(i,j,bi,bj)
170         &          + iceFrac*albedo*thSIce_deltaT
171  #endif /*ALLOW_TIMEAVE*/  #endif /*ALLOW_TIMEAVE*/
172            Qnet(i,j,bi,bj)=-iceFrac*qleft + openFrac*Qnet(i,j,bi,bj)            Qnet(i,j,bi,bj)=-iceFrac*qleft + openFrac*Qnet(i,j,bi,bj)
173            EmPmR(i,j,bi,bj)=iceFrac*ffresh+openFrac*EmPmR(i,j,bi,bj)            EmPmR(i,j,bi,bj)=iceFrac*ffresh+openFrac*EmPmR(i,j,bi,bj)
# Line 195  C------- Line 203  C-------
203              qicen(2)= -cpice *Tf + Lfresh              qicen(2)= -cpice *Tf + Lfresh
204            ENDIF            ENDIF
205            qicAv = rhoi*(qicen(1)+qicen(2))*0.5 _d 0            qicAv = rhoi*(qicen(1)+qicen(2))*0.5 _d 0
           oceTs = theta(i,j,1,bi,bj)  
           hIce  = iceHeight(i,j,bi,bj)  
           hSnow = snowHeight(i,j,bi,bj)  
206            CALL THSICE_START( myThid,            CALL THSICE_START( myThid,
207       I             esurp, qicAv, Tf,       I             esurp, qicAv, Tf,
208       O             qNewIce, ffresh, fsalt,       O             qNewIce, ffresh, fsalt,
# Line 221  C--    Update Sea-Ice state : Line 226  C--    Update Sea-Ice state :
226               Tice2(i,j,bi,bj) = Tf               Tice2(i,j,bi,bj) = Tf
227               Qice1(i,j,bi,bj) = qicen(1)               Qice1(i,j,bi,bj) = qicen(1)
228               Qice2(i,j,bi,bj) = qicen(2)               Qice2(i,j,bi,bj) = qicen(2)
 c            theta(i,j,1,bi,bj)= oceTs  
229            ENDIF            ENDIF
230            iceheight(i,j,bi,bj) = hIce            iceheight(i,j,bi,bj) = hIce
231            snowheight(i,j,bi,bj)= hSnow            snowheight(i,j,bi,bj)= hSnow
# Line 237  C--   - if esurp > 0 : end Line 241  C--   - if esurp > 0 : end
241    
242          IF ( compact .GT. 0. _d 0 ) THEN          IF ( compact .GT. 0. _d 0 ) THEN
243            iceMask(i,j,bi,bj)=compact            iceMask(i,j,bi,bj)=compact
244              IF ( hSnow .EQ. 0. _d 0 ) sage(i,j,bi,bj) = 0. _d 0
245          ELSE          ELSE
246            iceMask(i,j,bi,bj)  = 0. _d 0            iceMask(i,j,bi,bj)  = 0. _d 0
247            iceHeight(i,j,bi,bj)= 0. _d 0            iceHeight(i,j,bi,bj)= 0. _d 0
248            snowHeight(i,j,bi,bj)=0. _d 0            snowHeight(i,j,bi,bj)=0. _d 0
249            Tsrf(i,j,bi,bj)=theta(i,j,1,bi,bj)            sage(i,j,bi,bj)     = 0. _d 0
250              Tsrf(i,j,bi,bj)     = oceTs
251            Tice1(i,j,bi,bj)    = 0. _d 0            Tice1(i,j,bi,bj)    = 0. _d 0
252            Tice2(i,j,bi,bj)    = 0. _d 0            Tice2(i,j,bi,bj)    = 0. _d 0
253            Qice1(i,j,bi,bj)    = 0. _d 0            Qice1(i,j,bi,bj)    = 0. _d 0

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.22