118 |
C |
C |
119 |
C initialise a few fields |
C initialise a few fields |
120 |
C |
C |
121 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
122 |
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
123 |
|
CADJ & key = iicekey, byte = isbyte |
124 |
|
CADJ STORE qnet(:,:,bi,bj) = comlev1_bibj, |
125 |
|
CADJ & key = iicekey, byte = isbyte |
126 |
|
CADJ STORE qsw(:,:,bi,bj) = comlev1_bibj, |
127 |
|
CADJ & key = iicekey, byte = isbyte |
128 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
129 |
DO J=1,sNy |
DO J=1,sNy |
130 |
DO I=1,sNx |
DO I=1,sNx |
131 |
AREA(I,J,3,bi,bj) = MAX(A22,AREA(I,J,2,bi,bj)) |
AREA(I,J,3,bi,bj) = MAX(A22,AREA(I,J,2,bi,bj)) |
|
HICE(I,J) = HEFF(I,J,2,bi,bj)/AREA(I,J,3,bi,bj) |
|
|
hSnwLoc(I,J) = HSNOW(I,J,bi,bj)/AREA(I,J,3,bi,bj) |
|
132 |
FHEFF(I,J) = 0.0 _d 0 |
FHEFF(I,J) = 0.0 _d 0 |
133 |
FICE (I,J) = 0.0 _d 0 |
FICE (I,J) = 0.0 _d 0 |
134 |
#ifdef SEAICE_MULTILEVEL |
#ifdef SEAICE_MULTILEVEL |
148 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
149 |
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
150 |
CADJ & key = iicekey, byte = isbyte |
CADJ & key = iicekey, byte = isbyte |
151 |
|
CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj, |
152 |
|
CADJ & key = iicekey, byte = isbyte |
153 |
|
CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, |
154 |
|
CADJ & key = iicekey, byte = isbyte |
155 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
156 |
|
DO J=1,sNy |
157 |
|
DO I=1,sNx |
158 |
|
cph need to adjoint-store AREA again before using it in further init. |
159 |
|
cph (all these initialisations involving AREA are nasty "non-linear") |
160 |
|
HICE(I,J) = HEFF(I,J,2,bi,bj)/AREA(I,J,3,bi,bj) |
161 |
|
hSnwLoc(I,J) = HSNOW(I,J,bi,bj)/AREA(I,J,3,bi,bj) |
162 |
|
ENDDO |
163 |
|
ENDDO |
164 |
|
|
165 |
C NOW DETERMINE MIXED LAYER TEMPERATURE |
C NOW DETERMINE MIXED LAYER TEMPERATURE |
166 |
DO J=1,sNy |
DO J=1,sNy |
231 |
ENDDO |
ENDDO |
232 |
ENDDO |
ENDDO |
233 |
|
|
|
cph( |
|
234 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
235 |
CADJ STORE heff = comlev1, key = ikey_dynamics |
cphCADJ STORE heff = comlev1, key = ikey_dynamics |
236 |
CADJ STORE hsnow = comlev1, key = ikey_dynamics |
cphCADJ STORE hsnow = comlev1, key = ikey_dynamics |
237 |
|
cphCADJ STORE uwind = comlev1, key = ikey_dynamics |
238 |
|
cphCADJ STORE vwind = comlev1, key = ikey_dynamics |
239 |
|
c |
240 |
CADJ STORE tice = comlev1, key = ikey_dynamics |
CADJ STORE tice = comlev1, key = ikey_dynamics |
|
CADJ STORE uwind = comlev1, key = ikey_dynamics |
|
|
CADJ STORE vwind = comlev1, key = ikey_dynamics |
|
241 |
# ifdef SEAICE_MULTILEVEL |
# ifdef SEAICE_MULTILEVEL |
242 |
CADJ STORE tices = comlev1, key = ikey_dynamics |
CADJ STORE tices = comlev1, key = ikey_dynamics |
243 |
# endif |
# endif |
244 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
|
cph) |
|
245 |
|
|
246 |
C GROWTH SUBROUTINE CALCULATES TOTAL GROWTH TENDENCIES, |
C GROWTH SUBROUTINE CALCULATES TOTAL GROWTH TENDENCIES, |
247 |
C INCLUDING SNOWFALL |
C INCLUDING SNOWFALL |
310 |
CADJ & key = iicekey, byte = isbyte |
CADJ & key = iicekey, byte = isbyte |
311 |
CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, |
CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, |
312 |
CADJ & key = iicekey, byte = isbyte |
CADJ & key = iicekey, byte = isbyte |
313 |
CADJ STORE fice(:,:,bi,bj) = comlev1_bibj, |
CADJ STORE fice(:,:) = comlev1_bibj, |
314 |
CADJ & key = iicekey, byte = isbyte |
CADJ & key = iicekey, byte = isbyte |
315 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
316 |
cph) |
cph) |
322 |
& *AREA(I,J,2,bi,bj) ! effective growth in J/m^2 (>0=melt) |
& *AREA(I,J,2,bi,bj) ! effective growth in J/m^2 (>0=melt) |
323 |
ENDDO |
ENDDO |
324 |
ENDDO |
ENDDO |
325 |
|
|
326 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
327 |
CADJ STORE fice(:,:) = comlev1_bibj, |
CADJ STORE fice(:,:) = comlev1_bibj, |
328 |
CADJ & key = iicekey, byte = isbyte |
CADJ & key = iicekey, byte = isbyte |
329 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
330 |
|
|
331 |
DO J=1,sNy |
DO J=1,sNy |
332 |
DO I=1,sNx |
DO I=1,sNx |
|
|
|
333 |
IF(FICE(I,J).LT.ZERO.AND.AREA(I,J,2,bi,bj).GT.ZERO) THEN |
IF(FICE(I,J).LT.ZERO.AND.AREA(I,J,2,bi,bj).GT.ZERO) THEN |
334 |
C use FICE to melt snow and CALCULATE CORRECTED GROWTH |
C use FICE to melt snow and CALCULATE CORRECTED GROWTH |
335 |
GAREA(I,J)=HSNOW(I,J,bi,bj)*QS ! effective snow thickness in J/m^2 |
GAREA(I,J)=HSNOW(I,J,bi,bj)*QS ! effective snow thickness in J/m^2 |
352 |
HSNOW(I,J,bi,bj)=0.0 |
HSNOW(I,J,bi,bj)=0.0 |
353 |
END IF |
END IF |
354 |
END IF |
END IF |
355 |
|
ENDDO |
356 |
|
ENDDO |
357 |
|
|
358 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
359 |
|
CADJ STORE fice(:,:) = comlev1_bibj, |
360 |
|
CADJ & key = iicekey, byte = isbyte |
361 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
362 |
|
|
363 |
|
DO J=1,sNy |
364 |
|
DO I=1,sNx |
365 |
C NOW GET TOTAL GROWTH RATE in W/m^2, >0 causes ice growth |
C NOW GET TOTAL GROWTH RATE in W/m^2, >0 causes ice growth |
366 |
FHEFF(I,J)= FICE(I,J) * AREA(I,J,2,bi,bj) |
FHEFF(I,J)= FICE(I,J) * AREA(I,J,2,bi,bj) |
367 |
& + QNETO(I,J) * (ONE-AREA(I,J,2,bi,bj)) |
& + QNETO(I,J) * (ONE-AREA(I,J,2,bi,bj)) |
|
|
|
368 |
ENDDO |
ENDDO |
369 |
ENDDO |
ENDDO |
370 |
cph( |
cph( |
371 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
372 |
CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj, |
CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj, |
373 |
CADJ & key = iicekey, byte = isbyte |
CADJ & key = iicekey, byte = isbyte |
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
|
|
CADJ & key = iicekey, byte = isbyte |
|
374 |
CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, |
CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, |
375 |
CADJ & key = iicekey, byte = isbyte |
CADJ & key = iicekey, byte = isbyte |
376 |
CADJ STORE fice(:,:) = comlev1_bibj, |
CADJ STORE fice(:,:) = comlev1_bibj, |
410 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
411 |
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
412 |
CADJ & key = iicekey, byte = isbyte |
CADJ & key = iicekey, byte = isbyte |
|
CADJ STORE garea(:,:) = comlev1_bibj, |
|
|
CADJ & key = iicekey, byte = isbyte |
|
413 |
#endif |
#endif |
414 |
DO J=1,sNy |
DO J=1,sNy |
415 |
DO I=1,sNx |
DO I=1,sNx |