/[MITgcm]/MITgcm_contrib/high_res_cube/code-mods/growth.F
ViewVC logotype

Annotation of /MITgcm_contrib/high_res_cube/code-mods/growth.F

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


Revision 1.5 - (hide annotations) (download)
Wed Nov 22 07:21:31 2006 UTC (18 years, 7 months ago) by dimitri
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +1 -1 lines
FILE REMOVED
preparing for cube44

1 dimitri 1.5 C $Header: /u/gcmpack/MITgcm_contrib/high_res_cube/code-mods/growth.F,v 1.4 2006/11/16 05:21:34 dimitri Exp $
2 dimitri 1.1 C $Name: $
3    
4     #include "SEAICE_OPTIONS.h"
5    
6     CStartOfInterface
7     SUBROUTINE growth( myTime, myIter, myThid )
8     C /==========================================================\
9     C | SUBROUTINE growth |
10     C | o Updata ice thickness and snow depth |
11     C |==========================================================|
12     C \==========================================================/
13     IMPLICIT NONE
14    
15     C === Global variables ===
16     #include "SIZE.h"
17     #include "EEPARAMS.h"
18     #include "PARAMS.h"
19     #include "DYNVARS.h"
20     #include "GRID.h"
21     #include "FFIELDS.h"
22     #include "SEAICE_PARAMS.h"
23     #include "SEAICE.h"
24     #include "SEAICE_FFIELDS.h"
25    
26     #ifdef ALLOW_AUTODIFF_TAMC
27     # include "tamc.h"
28     #endif
29     C === Routine arguments ===
30     C myTime - Simulation time
31     C myIter - Simulation timestep number
32     C myThid - Thread no. that called this routine.
33     _RL myTime
34     INTEGER myIter, myThid
35     CEndOfInterface
36    
37     C === Local variables ===
38     C i,j,bi,bj - Loop counters
39    
40     INTEGER i, j, bi, bj
41 dimitri 1.4 _RL TBC, salinity_ice, SDF, ICE_DENS, Q0, QS
42     #ifdef ALLOW_SEAICE_FLOODING
43     _RL hDraft, hFlood
44     #endif /* ALLOW_SEAICE_FLOODING */
45     _RL GAREA ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
46     _RL GHEFF ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
47     _RL RESID_HEAT ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, nSx, nSy )
48 dimitri 1.1
49     C number of surface interface layer
50     INTEGER kSurface
51    
52     if ( buoyancyRelation .eq. 'OCEANICP' ) then
53     kSurface = Nr
54     else
55     kSurface = 1
56     endif
57    
58 dimitri 1.4 salinity_ice=4.0 _d 0 ! ICE SALINITY (g/kg)
59     TBC=SEAICE_freeze ! FREEZING TEMP. OF SEA WATER (deg C)
60     SDF=1000.0 _d 0/330.0 _d 0 ! RATIO OF WATER DESITY TO SNOW DENSITY
61     ICE_DENS=0.920 _d 0 ! RATIO OF SEA ICE DESITY TO WATER DENSITY
62     Q0=1.0D-06/302.0 _d +00 ! INVERSE HEAT OF FUSION OF ICE (m^3/J)
63     QS=1.1 _d +08 ! HEAT OF FUSION OF SNOW (J/m^3)
64 dimitri 1.1
65     DO bj=myByLo(myThid),myByHi(myThid)
66     DO bi=myBxLo(myThid),myBxHi(myThid)
67     c
68     cph(
69     #ifdef ALLOW_AUTODIFF_TAMC
70     act1 = bi - myBxLo(myThid)
71     max1 = myBxHi(myThid) - myBxLo(myThid) + 1
72     act2 = bj - myByLo(myThid)
73     max2 = myByHi(myThid) - myByLo(myThid) + 1
74     act3 = myThid - 1
75     max3 = nTx*nTy
76     act4 = ikey_dynamics - 1
77     iicekey = (act1 + 1) + act2*max1
78     & + act3*max1*max2
79     & + act4*max1*max2*max3
80     #endif /* ALLOW_AUTODIFF_TAMC */
81     c
82     #ifdef ALLOW_AUTODIFF_TAMC
83     CADJ STORE theta(:,:,:,bi,bj)= comlev1_bibj,
84     CADJ & key = iicekey, byte = isbyte
85     CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
86     CADJ & key = iicekey, byte = isbyte
87 dimitri 1.4 CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj,
88 dimitri 1.1 CADJ & key = iicekey, byte = isbyte
89     #endif /* ALLOW_AUTODIFF_TAMC */
90     cph)
91     DO J=1,sNy
92     DO I=1,sNx
93     SEAICE_SALT(I,J,bi,bj)=ZERO
94     ENDDO
95     ENDDO
96     #ifdef ALLOW_AUTODIFF_TAMC
97     CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj,
98     CADJ & key = iicekey, byte = isbyte
99     #endif /* ALLOW_AUTODIFF_TAMC */
100     DO J=1,sNy
101     DO I=1,sNx
102     C-- Create or melt sea-ice so that first-level oceanic temperature
103     C is approximately at the freezing point when there is sea-ice.
104     C Initially the units of YNEG are m of sea-ice.
105     C The factor dRf(1)/72.0764, used to convert temperature
106     C change in deg K to m of sea-ice, is approximately:
107     C dRf(1) * (sea water heat capacity = 3996 J/kg/K)
108     C * (density of sea-water = 1026 kg/m^3)
109     C / (latent heat of fusion of sea-ice = 334000 J/kg)
110     C / (density of sea-ice = 910 kg/m^3)
111     C Negative YNEG leads to ice growth.
112     C Positive YNEG leads to ice melting.
113     if ( .NOT. inAdMode ) then
114     #ifdef SEAICE_VARIABLE_FREEZING_POINT
115     TBC = -0.0575 _d 0*salt(I,J,kSurface,bi,bj) + 0.0901 _d 0
116     #endif /* SEAICE_VARIABLE_FREEZING_POINT */
117     YNEG(I,J,bi,bj)=(theta(I,J,kSurface,bi,bj)-TBC)
118     & *dRf(1)/72.0764 _d 0
119     else
120     YNEG(I,J,bi,bj)= 0.
121     endif
122     GHEFF(I,J)=HEFF(I,J,1,bi,bj)
123 dimitri 1.4 C Melt (YNEG>0) or create (YNEG<0) sea ice
124 dimitri 1.1 HEFF(I,J,1,bi,bj)=MAX(ZERO,HEFF(I,J,1,bi,bj)-YNEG(I,J,bi,bj))
125 dimitri 1.4 RESID_HEAT(I,J,bi,bj)=YNEG(I,J,bi,bj)
126 dimitri 1.1 YNEG(I,J,bi,bj)=GHEFF(I,J)-HEFF(I,J,1,bi,bj)
127     SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)-YNEG(I,J,bi,bj)
128 dimitri 1.4 RESID_HEAT(I,J,bi,bj)=RESID_HEAT(I,J,bi,bj)-YNEG(I,J,bi,bj)
129     C YNEG now contains m of ice melted (>0) or created (<0)
130     C SEAICE_SALT contains m of ice melted (<0) or created (>0)
131     C RESID_HEAT is residual heat above freezing in equivalent m of ice
132 dimitri 1.1 ENDDO
133     ENDDO
134 dimitri 1.4
135 dimitri 1.1 ENDDO
136     ENDDO
137    
138     cph(
139     #ifdef ALLOW_AUTODIFF_TAMC
140     CADJ STORE area = comlev1, key = ikey_dynamics
141     CADJ STORE atemp = comlev1, key = ikey_dynamics
142     CADJ STORE heff = comlev1, key = ikey_dynamics
143     CADJ STORE hsnow = comlev1, key = ikey_dynamics
144     CADJ STORE lwdown = comlev1, key = ikey_dynamics
145     CADJ STORE tice = comlev1, key = ikey_dynamics
146     CADJ STORE uwind = comlev1, key = ikey_dynamics
147     CADJ STORE vwind = comlev1, key = ikey_dynamics
148     # ifdef SEAICE_MULTILEVEL
149     CADJ STORE tices = comlev1, key = ikey_dynamics
150     # endif
151     #endif /* ALLOW_AUTODIFF_TAMC */
152     cph)
153     C GROWTH SUBROUTINE CALCULATES TOTAL GROWTH TENDENCIES,
154     C INCLUDING SNOWFALL
155     CALL GROATB(A22,myThid)
156 dimitri 1.4 cph(
157     #ifdef ALLOW_AUTODIFF_TAMC
158     CADJ STORE heff = comlev1, key = ikey_dynamics
159     CADJ STORE hsnow = comlev1, key = ikey_dynamics
160     #endif
161     cph)
162 dimitri 1.1 DO bj=myByLo(myThid),myByHi(myThid)
163     DO bi=myBxLo(myThid),myBxHi(myThid)
164     cph(
165     #ifdef ALLOW_AUTODIFF_TAMC
166     act1 = bi - myBxLo(myThid)
167     max1 = myBxHi(myThid) - myBxLo(myThid) + 1
168     act2 = bj - myByLo(myThid)
169     max2 = myByHi(myThid) - myByLo(myThid) + 1
170     act3 = myThid - 1
171     max3 = nTx*nTy
172     act4 = ikey_dynamics - 1
173     iicekey = (act1 + 1) + act2*max1
174     & + act3*max1*max2
175     & + act4*max1*max2*max3
176     #endif /* ALLOW_AUTODIFF_TAMC */
177     c
178     #ifdef ALLOW_AUTODIFF_TAMC
179     CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj,
180     CADJ & key = iicekey, byte = isbyte
181     CADJ STORE fo(:,:,bi,bj) = comlev1_bibj,
182     CADJ & key = iicekey, byte = isbyte
183     CADJ STORE fice(:,:,bi,bj) = comlev1_bibj,
184     CADJ & key = iicekey, byte = isbyte
185     #endif /* ALLOW_AUTODIFF_TAMC */
186     cph)
187 dimitri 1.4
188 dimitri 1.1 DO J=1,sNy
189     DO I=1,sNx
190 dimitri 1.4
191     C NOW CALCULATE CORRECTED GROWTH
192 dimitri 1.1 GHEFF(I,J)=-SEAICE_deltaTtherm*FICE(I,J,bi,bj)
193 dimitri 1.4 & *AREA(I,J,2,bi,bj) ! effective growth in J/m^2
194     GAREA(I,J)=HSNOW(I,J,bi,bj)*QS ! effective snow thickness in J/m^2
195 dimitri 1.1 IF(GHEFF(I,J).GT.ZERO.AND.GHEFF(I,J).LE.GAREA(I,J)) THEN
196 dimitri 1.4 C not enough heat to melt all snow; use up all heat flux FICE
197 dimitri 1.1 HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)-GHEFF(I,J)/QS
198 dimitri 1.4 C SNOW CONVERTED INTO WATER AND THEN INTO equivalent m of ICE melt
199     C The factor 1/SDF/ICE_DENS converts m of snow to m of sea-ice
200 dimitri 1.1 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)
201 dimitri 1.4 & -GHEFF(I,J)/QS/SDF/ICE_DENS
202 dimitri 1.1 FICE(I,J,bi,bj)=ZERO
203 dimitri 1.4 ELSE IF(AREA(I,J,2,bi,bj).GT.ZERO.AND.
204     & GHEFF(I,J).GT.GAREA(I,J)) THEN
205     C enought heat to melt snow completely;
206     C compute remaining heat flux that will melt ice
207     FICE(I,J,bi,bj)=-(GHEFF(I,J)-GAREA(I,J))/
208     & SEAICE_deltaTtherm/AREA(I,J,2,bi,bj)
209 dimitri 1.1 C convert all snow to melt water (fresh water flux)
210     SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)
211 dimitri 1.4 & -HSNOW(I,J,bi,bj)/SDF/ICE_DENS
212 dimitri 1.1 HSNOW(I,J,bi,bj)=0.0
213     END IF
214    
215 dimitri 1.4 C NOW GET TOTAL GROWTH RATE in W/m^2, >0 causes ice growth
216     FHEFF(I,J,bi,bj)=FICE(I,J,bi,bj)*AREA(I,J,2,bi,bj)
217     & +(ONE-AREA(I,J,2,bi,bj))*FO(I,J,bi,bj)
218    
219 dimitri 1.1 ENDDO
220     ENDDO
221 dimitri 1.4 cph(
222     #ifdef ALLOW_AUTODIFF_TAMC
223     CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj,
224     CADJ & key = iicekey, byte = isbyte
225     CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj,
226     CADJ & key = iicekey, byte = isbyte
227     CADJ STORE fice(:,:,bi,bj) = comlev1_bibj,
228     CADJ & key = iicekey, byte = isbyte
229     #endif /* ALLOW_AUTODIFF_TAMC */
230     cph)
231 dimitri 1.1 DO J=1,sNy
232     DO I=1,sNx
233    
234     C NOW UPDATE AREA
235     GHEFF(I,J)=-SEAICE_deltaTtherm*FHEFF(I,J,bi,bj)*Q0
236     GAREA(I,J)=SEAICE_deltaTtherm*FO(I,J,bi,bj)*Q0
237     GHEFF(I,J)=-ONE*MIN(HEFF(I,J,1,bi,bj),GHEFF(I,J))
238     GAREA(I,J)=MAX(ZERO,GAREA(I,J))
239     HCORR(I,J,bi,bj)=MIN(ZERO,GHEFF(I,J))
240 dimitri 1.4
241     GAREA(I,J)=(ONE-AREA(I,J,2,bi,bj))*GAREA(I,J)/HO
242     & +HALF*HCORR(I,J,bi,bj)*AREA(I,J,2,bi,bj)
243 dimitri 1.1 & /(HEFF(I,J,1,bi,bj)+.00001 _d 0)
244     AREA(I,J,1,bi,bj)=AREA(I,J,1,bi,bj)+GAREA(I,J)
245    
246     C NOW UPDATE HEFF
247     GHEFF(I,J)=-SEAICE_deltaTtherm*
248 dimitri 1.4 & FICE(I,J,bi,bj)*Q0*AREA(I,J,2,bi,bj)
249 dimitri 1.1 GHEFF(I,J)=-ONE*MIN(HEFF(I,J,1,bi,bj),GHEFF(I,J))
250     HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)+GHEFF(I,J)
251     SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)+GHEFF(I,J)
252 dimitri 1.4
253 dimitri 1.1 C NOW CALCULATE QNETI UNDER ICE IF ANY
254     QNETI(I,J,bi,bj)=(GHEFF(I,J)-SEAICE_deltaTtherm*
255 dimitri 1.4 & FICE(I,J,bi,bj)*Q0*AREA(I,J,2,bi,bj))/Q0/SEAICE_deltaTtherm
256 dimitri 1.1
257 dimitri 1.4 C NOW UPDATE OTHER THINGS
258 dimitri 1.1
259     IF(FICE(I,J,bi,bj).GT.ZERO) THEN
260     C FREEZING, PRECIP ADDED AS SNOW
261     HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)+SEAICE_deltaTtherm*
262 dimitri 1.4 & PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*SDF
263 dimitri 1.1 ELSE
264 dimitri 1.4 C ADD PRECIP AS RAIN, WATER CONVERTED INTO equivalent m of ICE BY 1/ICE_DENS
265 dimitri 1.1 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)
266 dimitri 1.4 & -PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*
267     & SEAICE_deltaTtherm/ICE_DENS
268 dimitri 1.1 ENDIF
269 dimitri 1.4
270     C Now add in precip over open water directly into ocean as negative salt
271 dimitri 1.1 SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)
272 dimitri 1.4 & -PRECIP(I,J,bi,bj)*(ONE-AREA(I,J,2,bi,bj))
273     & *SEAICE_deltaTtherm/ICE_DENS
274    
275     C Now melt snow if there is residual heat left in surface level
276     C Note that units of YNEG and SEAICE_SALT are m of ice
277     IF(RESID_HEAT(I,J,bi,bj).GT.ZERO.AND.
278     & HSNOW(I,J,bi,bj).GT.ZERO) THEN
279     GHEFF(I,J)=MIN(HSNOW(I,J,bi,bj)/SDF/ICE_DENS,
280     & RESID_HEAT(I,J,bi,bj))
281     YNEG(I,J,bi,bj)=YNEG(I,J,bi,bj)+GHEFF(I,J)
282     HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)-GHEFF(I,J)*SDF*ICE_DENS
283     SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)-GHEFF(I,J)
284 dimitri 1.1 ENDIF
285 dimitri 1.4
286 dimitri 1.1 C NOW GET FRESH WATER FLUX
287     EmPmR(I,J,bi,bj)= maskC(I,J,kSurface,bi,bj)*(
288 dimitri 1.4 & EVAP(I,J,bi,bj)*(ONE-AREA(I,J,2,bi,bj))
289 dimitri 1.1 & -RUNOFF(I,J,bi,bj)
290 dimitri 1.4 & +SEAICE_SALT(I,J,bi,bj)*ICE_DENS/SEAICE_deltaTtherm
291 dimitri 1.1 & )
292    
293     C NOW GET TOTAL QNET AND QSW
294 dimitri 1.4 QNET(I,J,bi,bj)=QNETI(I,J,bi,bj)*AREA(I,J,2,bi,bj)
295     & +(ONE-AREA(I,J,2,bi,bj))*QNETO(I,J,bi,bj)
296     QSW(I,J,bi,bj)=QSWI(I,J,bi,bj)*AREA(I,J,2,bi,bj)
297     & +(ONE-AREA(I,J,2,bi,bj))*QSWO(I,J,bi,bj)
298     c #ifndef SHORTWAVE_HEATING
299     c QNET(I,J,bi,bj)=QNET(I,J,bi,bj)+QSW(I,J,bi,bj)
300     c #endif
301    
302     C Now convert YNEG back to deg K.
303     YNEG(I,J,bi,bj)=YNEG(I,J,bi,bj)*recip_dRf(1)*72.0764 _d 0
304    
305 dimitri 1.1 C Add YNEG contribution to QNET
306     QNET(I,J,bi,bj)=QNET(I,J,bi,bj)
307     & +YNEG(I,J,bi,bj)/SEAICE_deltaTtherm
308     & *maskC(I,J,kSurface,bi,bj)
309     & *HeatCapacity_Cp*recip_horiVertRatio*rhoConst
310     & *drF(kSurface)*hFacC(i,j,kSurface,bi,bj)
311 dimitri 1.4
312 dimitri 1.1 ENDDO
313     ENDDO
314    
315     #ifdef SEAICE_DEBUG
316     c CALL PLOT_FIELD_XYRS( UWIND,'Current UWIND ', myIter, myThid )
317     c CALL PLOT_FIELD_XYRS( VWIND,'Current VWIND ', myIter, myThid )
318     CALL PLOT_FIELD_XYRS( GWATX,'Current GWATX ', myIter, myThid )
319     CALL PLOT_FIELD_XYRS( GWATY,'Current GWATY ', myIter, myThid )
320     CALL PLOT_FIELD_XYRL( FO,'Current FO ', myIter, myThid )
321     CALL PLOT_FIELD_XYRL( FHEFF,'Current FHEFF ', myIter, myThid )
322     CALL PLOT_FIELD_XYRL( QSW,'Current QSW ', myIter, myThid )
323     CALL PLOT_FIELD_XYRL( QNET,'Current QNET ', myIter, myThid )
324     CALL PLOT_FIELD_XYRL( EmPmR,'Current EmPmR ', myIter, myThid )
325     DO j=1-OLy,sNy+OLy
326     DO i=1-OLx,sNx+OLx
327     GHEFF(I,J)=SQRT(UICE(I,J,1,bi,bj)**2+VICE(I,J,1,bi,bj)**2)
328     GAREA(I,J)=HEFF(I,J,1,bi,bj)
329     print*,'I J QNET:',I, J, QNET(i,j,bi,bj), QSW(I,J,bi,bj)
330     ENDDO
331     ENDDO
332     CALL PLOT_FIELD_XYRL( GHEFF,'Current UICE ', myIter, myThid )
333     CALL PLOT_FIELD_XYRL( GAREA,'Current HEFF ', myIter, myThid )
334     DO j=1-OLy,sNy+OLy
335     DO i=1-OLx,sNx+OLx
336     if(HEFF(i,j,1,bi,bj).gt.1.) then
337     print '(A,2i4,3f10.2)','#### i j heff theta yneg',i,j,
338 dimitri 1.4 & HEFF(i,j,1,bi,bj),theta(I,J,1,bi,bj),yneg(I,J,bi,bj)
339 dimitri 1.1 print '(A,3f10.2)','QSW, QNET before/after correction',
340 dimitri 1.4 & QSW(I,J,bi,bj),QNETI(I,J,bi,bj)*AREA(I,J,2,bi,bj)+
341     & (ONE-AREA(I,J,2,bi,bj))*QNETO(I,J,bi,bj), QNET(I,J,bi,bj)
342 dimitri 1.1 endif
343     ENDDO
344     ENDDO
345     #endif /* SEAICE_DEBUG */
346    
347     crg Added by Ralf Giering: do we need DO_WE_NEED_THIS ?
348     #define DO_WE_NEED_THIS
349     C NOW ZERO OUTSIDE POINTS
350 dimitri 1.4 #ifdef ALLOW_AUTODIFF_TAMC
351     CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
352     CADJ & key = iicekey, byte = isbyte
353     CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj,
354     CADJ & key = iicekey, byte = isbyte
355     #endif /* ALLOW_AUTODIFF_TAMC */
356 dimitri 1.1 DO J=1,sNy
357     DO I=1,sNx
358     C NOW SET AREA(I,J,1,bi,bj)=0 WHERE NO ICE IS
359     AREA(I,J,1,bi,bj)=MIN(AREA(I,J,1,bi,bj)
360     & ,HEFF(I,J,1,bi,bj)/.0001 _d 0)
361     ENDDO
362     ENDDO
363     #ifdef ALLOW_AUTODIFF_TAMC
364     CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
365     CADJ & key = iicekey, byte = isbyte
366     #endif /* ALLOW_AUTODIFF_TAMC */
367     DO J=1,sNy
368     DO I=1,sNx
369     C NOW TRUNCATE AREA
370     #ifdef DO_WE_NEED_THIS
371     AREA(I,J,1,bi,bj)=MIN(ONE,AREA(I,J,1,bi,bj))
372     ENDDO
373     ENDDO
374     #ifdef ALLOW_AUTODIFF_TAMC
375     CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
376     CADJ & key = iicekey, byte = isbyte
377 dimitri 1.4 CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj,
378     CADJ & key = iicekey, byte = isbyte
379 dimitri 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
380     DO J=1,sNy
381     DO I=1,sNx
382     AREA(I,J,1,bi,bj)=MAX(ZERO,AREA(I,J,1,bi,bj))
383     HSNOW(I,J,bi,bj)=MAX(ZERO,HSNOW(I,J,bi,bj))
384     #endif
385     AREA(I,J,1,bi,bj)=AREA(I,J,1,bi,bj)*HEFFM(I,J,bi,bj)
386     HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)*HEFFM(I,J,bi,bj)
387     #ifdef DO_WE_NEED_THIS
388     c HEFF(I,J,1,bi,bj)=MIN(MAX_HEFF,HEFF(I,J,1,bi,bj))
389     #endif
390     HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)*HEFFM(I,J,bi,bj)
391     ENDDO
392     ENDDO
393    
394     #ifdef ALLOW_SEAICE_FLOODING
395     IF ( SEAICEuseFlooding ) THEN
396     C convert snow to ice if submerged
397     DO J=1,sNy
398     DO I=1,sNx
399     hDraft = (HSNOW(I,J,bi,bj)*330. _d 0
400     & +HEFF(I,J,1,bi,bj)*SEAICE_rhoIce)/1000. _d 0
401     hFlood = hDraft - MIN(hDraft,HEFF(I,J,1,bi,bj))
402     HEFF(I,J,1,bi,bj) = HEFF(I,J,1,bi,bj) + hFlood
403     HSNOW(I,J,bi,bj) = MAX(0. _d 0,HSNOW(I,J,bi,bj)-hFlood/SDF)
404     ENDDO
405     ENDDO
406     ENDIF
407     #endif /* ALLOW_SEAICE_FLOODING */
408    
409     #ifdef ATMOSPHERIC_LOADING
410     IF ( useRealFreshWaterFlux ) THEN
411     DO J=1,sNy
412     DO I=1,sNx
413     sIceLoad(i,j,bi,bj) = HEFF(I,J,1,bi,bj)*SEAICE_rhoIce
414     & + HSNOW(I,J,bi,bj)* 330. _d 0
415     ENDDO
416     ENDDO
417     ENDIF
418     #endif
419    
420     ENDDO
421     ENDDO
422    
423     RETURN
424     END

  ViewVC Help
Powered by ViewVC 1.1.22