1 |
dimitri |
1.10 |
C $Header: /usr/local/gcmpack/MITgcm/pkg/seaice/growth.F,v 1.9 2003/10/09 04:19:20 edhill Exp $ |
2 |
edhill |
1.9 |
C $Name: $ |
3 |
heimbach |
1.2 |
|
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 |
heimbach |
1.7 |
#ifdef ALLOW_AUTODIFF_TAMC |
27 |
|
|
# include "tamc.h" |
28 |
|
|
#endif |
29 |
heimbach |
1.2 |
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 |
|
|
#ifdef ALLOW_SEAICE |
38 |
|
|
|
39 |
|
|
C === Local variables === |
40 |
dimitri |
1.4 |
C i,j,bi,bj - Loop counters |
41 |
heimbach |
1.2 |
|
42 |
dimitri |
1.4 |
INTEGER i, j, bi, bj |
43 |
dimitri |
1.3 |
_RL TBC, salinity_ice, SDF, Q0, QS |
44 |
heimbach |
1.2 |
_RL theta_old |
45 |
|
|
|
46 |
|
|
_RL GAREA( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
47 |
|
|
_RL GHEFF( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ) |
48 |
|
|
_RL AR ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, nSx, nSy ) |
49 |
|
|
|
50 |
dimitri |
1.3 |
salinity_ice=4.0 _d 0 ! ICE SALINITY |
51 |
|
|
TBC=271.2 _d 0-273.16 _d 0 ! FREEZING TEMP. OF SEA WATER |
52 |
|
|
SDF=1000.0 _d 0/330.0 _d 0 ! RATIO OF WATER DESITY AND SNOW DENSITY |
53 |
|
|
Q0=1.0D-06/302.0 _d +00 ! INVERSE HEAT OF FUSION OF ICE |
54 |
|
|
QS=1.1 _d +08 ! HEAT OF FUSION OF SNOW |
55 |
heimbach |
1.2 |
|
56 |
|
|
DO bj=myByLo(myThid),myByHi(myThid) |
57 |
|
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
58 |
heimbach |
1.7 |
c |
59 |
|
|
cph( |
60 |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
61 |
|
|
act1 = bi - myBxLo(myThid) |
62 |
|
|
max1 = myBxHi(myThid) - myBxLo(myThid) + 1 |
63 |
|
|
act2 = bj - myByLo(myThid) |
64 |
|
|
max2 = myByHi(myThid) - myByLo(myThid) + 1 |
65 |
|
|
act3 = myThid - 1 |
66 |
|
|
max3 = nTx*nTy |
67 |
|
|
act4 = ikey_dynamics - 1 |
68 |
|
|
iicekey = (act1 + 1) + act2*max1 |
69 |
|
|
& + act3*max1*max2 |
70 |
|
|
& + act4*max1*max2*max3 |
71 |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
72 |
|
|
c |
73 |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
74 |
|
|
CADJ STORE theta(:,:,:,bi,bj)= comlev1_bibj, |
75 |
|
|
CADJ & key = iicekey, byte = isbyte |
76 |
|
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
77 |
|
|
CADJ & key = iicekey, byte = isbyte |
78 |
|
|
CADJ STORE atemp(:,:,bi,bj) = comlev1_bibj, |
79 |
|
|
CADJ & key = iicekey, byte = isbyte |
80 |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
81 |
|
|
cph) |
82 |
heimbach |
1.2 |
DO J=1,sNy |
83 |
|
|
DO I=1,sNx |
84 |
dimitri |
1.3 |
SEAICE_SALT(I,J,bi,bj)=ZERO |
85 |
|
|
WATR(I,J,bi,bj)=ZERO |
86 |
heimbach |
1.7 |
ENDDO |
87 |
|
|
ENDDO |
88 |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
89 |
|
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
90 |
|
|
CADJ & key = iicekey, byte = isbyte |
91 |
|
|
CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj, |
92 |
|
|
CADJ & key = iicekey, byte = isbyte |
93 |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
94 |
|
|
DO J=1,sNy |
95 |
|
|
DO I=1,sNx |
96 |
dimitri |
1.3 |
AR(I,J,bi,bj)=MIN(AREA(I,J,2,bi,bj), |
97 |
|
|
& HEFF(I,J,2,bi,bj)*1.0 _d +04) |
98 |
heimbach |
1.7 |
ENDDO |
99 |
|
|
ENDDO |
100 |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
101 |
|
|
CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj, |
102 |
|
|
CADJ & key = iicekey, byte = isbyte |
103 |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
104 |
|
|
DO J=1,sNy |
105 |
|
|
DO I=1,sNx |
106 |
heimbach |
1.2 |
C NOW BALANCE THE HEAT IN OCEAN FIRT LEVEL |
107 |
dimitri |
1.5 |
C Here the units of YNEG are m of sea-ice. |
108 |
|
|
C The factor dRf(1)/72.0764, used to convert temperature |
109 |
|
|
C change in deg K to m of sea-ice, is approximately: |
110 |
|
|
C dRf(1) * (sea water heat capacity = 3996 J/kg/K) |
111 |
|
|
C * (density of sea-water = 1026 kg/m^3) |
112 |
|
|
C / (latent heat of fusion of sea-ice = 334000 J/kg) |
113 |
|
|
C / (density of sea-ice = 910 kg/m^3) |
114 |
dimitri |
1.3 |
YNEG(I,J,bi,bj)=(theta(I,J,1,bi,bj)-TBC)*dRf(1)/72.0764 _d 0 |
115 |
heimbach |
1.2 |
IF(YNEG(I,J,bi,bj).LE.ZERO) THEN |
116 |
|
|
C SUPERCOOLING, CONVERT TO ICE |
117 |
|
|
HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)-YNEG(I,J,bi,bj) |
118 |
|
|
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)-YNEG(I,J,bi,bj) |
119 |
|
|
C HERE YNEG IS THE OCEAN TEMP. DIFFERENCE WITH SUPER-COOLING |
120 |
|
|
YNEG(I,J,bi,bj)=TBC-theta(I,J,1,bi,bj) |
121 |
|
|
theta(I,J,1,bi,bj)=TBC |
122 |
|
|
ELSE |
123 |
|
|
C NOW CORRECT ICE THICKNESS |
124 |
|
|
GHEFF(I,J)=HEFF(I,J,1,bi,bj) |
125 |
|
|
HEFF(I,J,3,bi,bj)=HEFF(I,J,1,bi,bj)-YNEG(I,J,bi,bj) |
126 |
dimitri |
1.3 |
HEFF(I,J,1,bi,bj)=MAX(ZERO,HEFF(I,J,3,bi,bj)) |
127 |
heimbach |
1.2 |
C NOW CORRECT YNEG |
128 |
|
|
YNEG(I,J,bi,bj)=HEFF(I,J,1,bi,bj)-HEFF(I,J,3,bi,bj) |
129 |
|
|
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj) |
130 |
|
|
& +(HEFF(I,J,1,bi,bj)-GHEFF(I,J)) |
131 |
|
|
theta_old=theta(I,J,1,bi,bj) |
132 |
|
|
theta(I,J,1,bi,bj)= |
133 |
dimitri |
1.3 |
& (YNEG(I,J,bi,bj)*72.0764 _d 0/dRf(1)+TBC) |
134 |
heimbach |
1.2 |
C HERE YNEG IS THE OCEAN TEMP. DIFFERENCE WITH NO SUPER-COOLING |
135 |
|
|
YNEG(I,J,bi,bj)=theta(I,J,1,bi,bj)-theta_old |
136 |
|
|
ENDIF |
137 |
|
|
C surfaceTendencyTice is the equivalent amount of surface heating |
138 |
|
|
C implied by above change in surface level temperature (YNEG). |
139 |
|
|
C Units are degrees/s (>0 for ocean warming). |
140 |
|
|
surfaceTendencyTice(I,J,bi,bj)=YNEG(I,J,bi,bj)/deltaTtracer |
141 |
|
|
ENDDO |
142 |
|
|
ENDDO |
143 |
heimbach |
1.7 |
c |
144 |
heimbach |
1.2 |
ENDDO |
145 |
|
|
ENDDO |
146 |
|
|
|
147 |
heimbach |
1.7 |
cph( |
148 |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
149 |
|
|
CADJ STORE area = comlev1, key = ikey_dynamics |
150 |
|
|
CADJ STORE atemp = comlev1, key = ikey_dynamics |
151 |
|
|
CADJ STORE heff = comlev1, key = ikey_dynamics |
152 |
|
|
CADJ STORE hsnow = comlev1, key = ikey_dynamics |
153 |
|
|
CADJ STORE lwdown = comlev1, key = ikey_dynamics |
154 |
|
|
CADJ STORE tice = comlev1, key = ikey_dynamics |
155 |
|
|
CADJ STORE uwind = comlev1, key = ikey_dynamics |
156 |
|
|
CADJ STORE vwind = comlev1, key = ikey_dynamics |
157 |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
158 |
|
|
cph) |
159 |
heimbach |
1.2 |
C GROWTH SUBROUTINE CALCULATES TOTAL GROWTH TENDENCIES, |
160 |
|
|
C INCLUDING SNOWFALL |
161 |
|
|
CALL GROATB(A22,myThid) |
162 |
|
|
|
163 |
|
|
DO bj=myByLo(myThid),myByHi(myThid) |
164 |
|
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
165 |
heimbach |
1.7 |
cph( |
166 |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
167 |
|
|
act1 = bi - myBxLo(myThid) |
168 |
|
|
max1 = myBxHi(myThid) - myBxLo(myThid) + 1 |
169 |
|
|
act2 = bj - myByLo(myThid) |
170 |
|
|
max2 = myByHi(myThid) - myByLo(myThid) + 1 |
171 |
|
|
act3 = myThid - 1 |
172 |
|
|
max3 = nTx*nTy |
173 |
|
|
act4 = ikey_dynamics - 1 |
174 |
|
|
iicekey = (act1 + 1) + act2*max1 |
175 |
|
|
& + act3*max1*max2 |
176 |
|
|
& + act4*max1*max2*max3 |
177 |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
178 |
|
|
c |
179 |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
180 |
|
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
181 |
|
|
CADJ & key = iicekey, byte = isbyte |
182 |
|
|
CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj, |
183 |
|
|
CADJ & key = iicekey, byte = isbyte |
184 |
|
|
CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, |
185 |
|
|
CADJ & key = iicekey, byte = isbyte |
186 |
|
|
CADJ STORE fo(:,:,bi,bj) = comlev1_bibj, |
187 |
|
|
CADJ & key = iicekey, byte = isbyte |
188 |
|
|
CADJ STORE fice(:,:,bi,bj) = comlev1_bibj, |
189 |
|
|
CADJ & key = iicekey, byte = isbyte |
190 |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
191 |
|
|
cph) |
192 |
heimbach |
1.2 |
C NOW CALCULATE CORRECTED GROWTH |
193 |
|
|
DO J=1,sNy |
194 |
|
|
DO I=1,sNx |
195 |
|
|
GHEFF(I,J)=-DELTAT*FICE(I,J,bi,bj) |
196 |
|
|
GAREA(I,J)=HSNOW(I,J,bi,bj)*QS |
197 |
|
|
IF(GHEFF(I,J).GT.ZERO.AND.GHEFF(I,J).LE.GAREA(I,J)) THEN |
198 |
|
|
HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)-GHEFF(I,J)/QS |
199 |
|
|
C SNOW CONVERTED INTO WATER AND THEN INTO ICE |
200 |
dimitri |
1.5 |
C The factor 0.920 is used to convert m of sea-ice to m of freshwater |
201 |
heimbach |
1.2 |
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj) |
202 |
dimitri |
1.3 |
& -(GHEFF(I,J)/QS)/SDF/0.920 _d 0*AR(I,J,bi,bj) |
203 |
heimbach |
1.2 |
WATR(I,J,bi,bj)=WATR(I,J,bi,bj) |
204 |
dimitri |
1.3 |
& -(GHEFF(I,J)/QS)/SDF/0.920 _d 0*AR(I,J,bi,bj) |
205 |
|
|
FICE(I,J,bi,bj)=ZERO |
206 |
heimbach |
1.2 |
ELSE IF(GHEFF(I,J).GT.GAREA(I,J)) THEN |
207 |
|
|
FICE(I,J,bi,bj)=-(GHEFF(I,J)-GAREA(I,J))/DELTAT |
208 |
|
|
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj) |
209 |
dimitri |
1.3 |
& -HSNOW(I,J,bi,bj)/SDF/0.920 _d 0*AR(I,J,bi,bj) |
210 |
heimbach |
1.2 |
WATR(I,J,bi,bj)=WATR(I,J,bi,bj) |
211 |
|
|
& -HSNOW(I,J,bi,bj)/SDF/0.920*AR(I,J,bi,bj) |
212 |
|
|
HSNOW(I,J,bi,bj)=0.0 |
213 |
|
|
END IF |
214 |
|
|
|
215 |
|
|
ENDDO |
216 |
|
|
ENDDO |
217 |
|
|
|
218 |
|
|
C NOW GET TOTAL GROWTH RATE |
219 |
|
|
DO J=1,sNy |
220 |
|
|
DO I=1,sNx |
221 |
|
|
FHEFF(I,J,bi,bj)=FICE(I,J,bi,bj)*AR(I,J,bi,bj) |
222 |
dimitri |
1.3 |
& +(ONE-AR(I,J,bi,bj))*FO(I,J,bi,bj) |
223 |
heimbach |
1.2 |
ENDDO |
224 |
|
|
ENDDO |
225 |
|
|
|
226 |
|
|
|
227 |
|
|
C NOW UPDATE AREA |
228 |
|
|
DO J=1,sNy |
229 |
|
|
DO I=1,sNx |
230 |
|
|
GHEFF(I,J)=-DELTAT*FHEFF(I,J,bi,bj)*Q0 |
231 |
|
|
GAREA(I,J)=DELTAT*FO(I,J,bi,bj)*Q0 |
232 |
dimitri |
1.3 |
GHEFF(I,J)=-ONE*MIN(HEFF(I,J,1,bi,bj),GHEFF(I,J)) |
233 |
heimbach |
1.2 |
GAREA(I,J)=MAX(ZERO,GAREA(I,J)) |
234 |
|
|
HCORR(I,J,bi,bj)=MIN(ZERO,GHEFF(I,J)) |
235 |
|
|
ENDDO |
236 |
|
|
ENDDO |
237 |
|
|
DO J=1,sNy |
238 |
|
|
DO I=1,sNx |
239 |
dimitri |
1.3 |
GAREA(I,J)=TWO*(ONE-AREA(I,J,2,bi,bj))*GAREA(I,J)/HO |
240 |
|
|
& +HALF*HCORR(I,J,bi,bj)*AREA(I,J,2,bi,bj) |
241 |
|
|
& /(HEFF(I,J,1,bi,bj)+.00001 _d 0) |
242 |
heimbach |
1.2 |
AREA(I,J,1,bi,bj)=AREA(I,J,1,bi,bj)+GAREA(I,J) |
243 |
|
|
ENDDO |
244 |
|
|
ENDDO |
245 |
|
|
|
246 |
|
|
C NOW UPDATE HEFF |
247 |
|
|
DO J=1,sNy |
248 |
|
|
DO I=1,sNx |
249 |
|
|
GHEFF(I,J)=-DELTAT*FICE(I,J,bi,bj)*Q0*AR(I,J,bi,bj) |
250 |
dimitri |
1.3 |
GHEFF(I,J)=-ONE*MIN(HEFF(I,J,1,bi,bj),GHEFF(I,J)) |
251 |
heimbach |
1.2 |
HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)+GHEFF(I,J) |
252 |
|
|
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)+GHEFF(I,J) |
253 |
|
|
C NOW CALCULATE QNETI UNDER ICE IF ANY |
254 |
|
|
QNETI(I,J,bi,bj)=(GHEFF(I,J)-DELTAT*FICE(I,J,bi,bj) |
255 |
|
|
& *Q0*AR(I,J,bi,bj))/Q0/DELTAT |
256 |
|
|
ENDDO |
257 |
|
|
ENDDO |
258 |
|
|
|
259 |
|
|
C NOW GET TOTAL QNET AND QSW |
260 |
|
|
DO J=1,sNy |
261 |
|
|
DO I=1,sNx |
262 |
|
|
QNET(I,J,bi,bj)=QNETI(I,J,bi,bj)*AR(I,J,bi,bj) |
263 |
dimitri |
1.3 |
& +(ONE-AR(I,J,bi,bj))*QNETO(I,J,bi,bj) |
264 |
heimbach |
1.2 |
QSW(I,J,bi,bj)=QSWI(I,J,bi,bj)*AR(I,J,bi,bj) |
265 |
dimitri |
1.3 |
& +(ONE-AR(I,J,bi,bj))*QSWO(I,J,bi,bj) |
266 |
dimitri |
1.5 |
#ifndef SHORTWAVE_HEATING |
267 |
|
|
QNET(I,J,bi,bj)=QNET(I,J,bi,bj)+QSW(I,J,bi,bj) |
268 |
|
|
#endif |
269 |
heimbach |
1.2 |
ENDDO |
270 |
|
|
ENDDO |
271 |
|
|
|
272 |
|
|
C NOW UPDATE OTHER THINGS |
273 |
|
|
DO J=1,sNy |
274 |
|
|
DO I=1,sNx |
275 |
|
|
IF(FICE(I,J,bi,bj).GT.ZERO) THEN |
276 |
|
|
C FREEZING, PRECIP ADDED AS SNOW |
277 |
|
|
HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj) |
278 |
dimitri |
1.4 |
& +DELTAT*PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*SDF |
279 |
heimbach |
1.2 |
ELSE |
280 |
dimitri |
1.3 |
C ADD PRECIP AS RAIN, WATER CONVERTED INTO ICE BY /0.920 _d 0 |
281 |
heimbach |
1.2 |
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj) |
282 |
dimitri |
1.4 |
& -PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*DELTAT/0.920 _d 0 |
283 |
heimbach |
1.2 |
WATR(I,J,bi,bj)=WATR(I,J,bi,bj) |
284 |
dimitri |
1.4 |
& -PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*DELTAT/0.920 _d 0 |
285 |
heimbach |
1.2 |
ENDIF |
286 |
|
|
c Now add in precip over open water directly into ocean as negative salt |
287 |
|
|
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj) |
288 |
dimitri |
1.4 |
& -PRECIP(I,J,bi,bj)*(ONE-AREA(I,J,2,bi,bj)) |
289 |
dimitri |
1.3 |
& *DELTAT/0.920 _d 0 |
290 |
heimbach |
1.2 |
WATR(I,J,bi,bj)=WATR(I,J,bi,bj) |
291 |
dimitri |
1.4 |
& -PRECIP(I,J,bi,bj)*(ONE-AREA(I,J,2,bi,bj)) |
292 |
dimitri |
1.3 |
& *DELTAT/0.920 _d 0 |
293 |
heimbach |
1.2 |
C NOW GET FRESH WATER FLUX |
294 |
|
|
EmPmR(I,J,bi,bj)=EVAP(I,J,bi,bj)-RUNOFF(I,J,bi,bj) |
295 |
dimitri |
1.3 |
& +SEAICE_SALT(I,J,bi,bj)*0.92 _d 0/DELTAT |
296 |
heimbach |
1.2 |
ENDDO |
297 |
|
|
ENDDO |
298 |
|
|
|
299 |
|
|
#ifdef SEAICE_DEBUG |
300 |
dimitri |
1.4 |
c CALL PLOT_FIELD_XYRS( UWIND,'Current UWIND ', myIter, myThid ) |
301 |
|
|
c CALL PLOT_FIELD_XYRS( VWIND,'Current VWIND ', myIter, myThid ) |
302 |
heimbach |
1.2 |
CALL PLOT_FIELD_XYRS( GWATX,'Current GWATX ', myIter, myThid ) |
303 |
|
|
CALL PLOT_FIELD_XYRS( GWATY,'Current GWATY ', myIter, myThid ) |
304 |
|
|
CALL PLOT_FIELD_XYRL( FO,'Current FO ', myIter, myThid ) |
305 |
|
|
CALL PLOT_FIELD_XYRL( FHEFF,'Current FHEFF ', myIter, myThid ) |
306 |
|
|
CALL PLOT_FIELD_XYRL( QSW,'Current QSW ', myIter, myThid ) |
307 |
|
|
CALL PLOT_FIELD_XYRL( QNET,'Current QNET ', myIter, myThid ) |
308 |
|
|
CALL PLOT_FIELD_XYRL( EmPmR,'Current EmPmR ', myIter, myThid ) |
309 |
|
|
DO j=1-OLy,sNy+OLy |
310 |
|
|
DO i=1-OLx,sNx+OLx |
311 |
|
|
GHEFF(I,J)=SQRT(UICE(I,J,1,bi,bj)**2+VICE(I,J,1,bi,bj)**2) |
312 |
|
|
GAREA(I,J)=HEFF(I,J,1,bi,bj) |
313 |
|
|
print*,'I J QNET:',I, J, QNET(i,j,bi,bj), QSW(I,J,bi,bj) |
314 |
|
|
ENDDO |
315 |
|
|
ENDDO |
316 |
|
|
CALL PLOT_FIELD_XYRL( GHEFF,'Current UICE ', myIter, myThid ) |
317 |
|
|
CALL PLOT_FIELD_XYRL( GAREA,'Current HEFF ', myIter, myThid ) |
318 |
|
|
DO j=1-OLy,sNy+OLy |
319 |
|
|
DO i=1-OLx,sNx+OLx |
320 |
|
|
if(HEFF(i,j,1,bi,bj).gt.1.) then |
321 |
|
|
print '(A,2i4,3f10.2)','#### i j heff theta yneg',i,j, |
322 |
|
|
& HEFF(i,j,1,bi,bj),theta(I,J,1,bi,bj),yneg(I,J,bi,bj) |
323 |
|
|
print '(A,3f10.2)','QSW, QNET before/after correction', |
324 |
|
|
& QSW(I,J,bi,bj),QNETI(I,J,bi,bj)*AR(I,J,bi,bj) |
325 |
dimitri |
1.3 |
& +(ONE-AR(I,J,bi,bj))*QNETO(I,J,bi,bj), QNET(I,J,bi,bj) |
326 |
heimbach |
1.2 |
endif |
327 |
|
|
ENDDO |
328 |
|
|
ENDDO |
329 |
dimitri |
1.5 |
#endif /* SEAICE_DEBUG */ |
330 |
heimbach |
1.2 |
|
331 |
dimitri |
1.3 |
crg Added by Ralf Giering: do we need DO_WE_NEED_THIS ? |
332 |
|
|
#define DO_WE_NEED_THIS |
333 |
heimbach |
1.2 |
C NOW ZERO OUTSIDE POINTS |
334 |
|
|
DO J=1,sNy |
335 |
|
|
DO I=1,sNx |
336 |
|
|
C NOW SET AREA(I,J,1,bi,bj)=0 WHERE NO ICE IS |
337 |
|
|
AREA(I,J,1,bi,bj)=MIN(AREA(I,J,1,bi,bj) |
338 |
dimitri |
1.3 |
& ,HEFF(I,J,1,bi,bj)/.0001 _d 0) |
339 |
heimbach |
1.7 |
ENDDO |
340 |
|
|
ENDDO |
341 |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
342 |
|
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
343 |
|
|
CADJ & key = iicekey, byte = isbyte |
344 |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
345 |
|
|
DO J=1,sNy |
346 |
|
|
DO I=1,sNx |
347 |
heimbach |
1.2 |
C NOW TRUNCATE AREA |
348 |
dimitri |
1.3 |
#ifdef DO_WE_NEED_THIS |
349 |
heimbach |
1.2 |
AREA(I,J,1,bi,bj)=MIN(ONE,AREA(I,J,1,bi,bj)) |
350 |
heimbach |
1.7 |
ENDDO |
351 |
|
|
ENDDO |
352 |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
353 |
|
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
354 |
|
|
CADJ & key = iicekey, byte = isbyte |
355 |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
356 |
|
|
DO J=1,sNy |
357 |
|
|
DO I=1,sNx |
358 |
heimbach |
1.2 |
AREA(I,J,1,bi,bj)=MAX(ZERO,AREA(I,J,1,bi,bj)) |
359 |
|
|
HSNOW(I,J,bi,bj)=MAX(ZERO,HSNOW(I,J,bi,bj)) |
360 |
dimitri |
1.5 |
#endif |
361 |
heimbach |
1.2 |
AREA(I,J,1,bi,bj)=AREA(I,J,1,bi,bj)*HEFFM(I,J,bi,bj) |
362 |
|
|
HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)*HEFFM(I,J,bi,bj) |
363 |
dimitri |
1.3 |
#ifdef DO_WE_NEED_THIS |
364 |
dimitri |
1.6 |
c HEFF(I,J,1,bi,bj)=MIN(MAX_HEFF,HEFF(I,J,1,bi,bj)) |
365 |
dimitri |
1.5 |
#endif |
366 |
heimbach |
1.2 |
HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)*HEFFM(I,J,bi,bj) |
367 |
|
|
ENDDO |
368 |
|
|
ENDDO |
369 |
|
|
|
370 |
|
|
ENDDO |
371 |
|
|
ENDDO |
372 |
|
|
|
373 |
dimitri |
1.5 |
#endif /* ALLOW_SEAICE */ |
374 |
heimbach |
1.2 |
|
375 |
|
|
RETURN |
376 |
|
|
END |