23 |
#include "SEAICE_FFIELDS.h" |
#include "SEAICE_FFIELDS.h" |
24 |
#include "SEAICE_EXTERNAL.h" |
#include "SEAICE_EXTERNAL.h" |
25 |
|
|
26 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
27 |
|
# include "tamc.h" |
28 |
|
#endif |
29 |
C === Routine arguments === |
C === Routine arguments === |
30 |
C myTime - Simulation time |
C myTime - Simulation time |
31 |
C myIter - Simulation timestep number |
C myIter - Simulation timestep number |
55 |
|
|
56 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
57 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
58 |
|
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 |
DO J=1,sNy |
DO J=1,sNy |
83 |
DO I=1,sNx |
DO I=1,sNx |
84 |
C Adjust surface air temperature according to ice conditions |
C Adjust surface air temperature according to ice conditions |
88 |
ENDIF |
ENDIF |
89 |
SEAICE_SALT(I,J,bi,bj)=ZERO |
SEAICE_SALT(I,J,bi,bj)=ZERO |
90 |
WATR(I,J,bi,bj)=ZERO |
WATR(I,J,bi,bj)=ZERO |
91 |
|
ENDDO |
92 |
|
ENDDO |
93 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
94 |
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
95 |
|
CADJ & key = iicekey, byte = isbyte |
96 |
|
CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj, |
97 |
|
CADJ & key = iicekey, byte = isbyte |
98 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
99 |
|
DO J=1,sNy |
100 |
|
DO I=1,sNx |
101 |
AR(I,J,bi,bj)=MIN(AREA(I,J,2,bi,bj), |
AR(I,J,bi,bj)=MIN(AREA(I,J,2,bi,bj), |
102 |
& HEFF(I,J,2,bi,bj)*1.0 _d +04) |
& HEFF(I,J,2,bi,bj)*1.0 _d +04) |
103 |
|
ENDDO |
104 |
|
ENDDO |
105 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
106 |
|
CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj, |
107 |
|
CADJ & key = iicekey, byte = isbyte |
108 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
109 |
|
DO J=1,sNy |
110 |
|
DO I=1,sNx |
111 |
C NOW BALANCE THE HEAT IN OCEAN FIRT LEVEL |
C NOW BALANCE THE HEAT IN OCEAN FIRT LEVEL |
112 |
C Here the units of YNEG are m of sea-ice. |
C Here the units of YNEG are m of sea-ice. |
113 |
C The factor dRf(1)/72.0764, used to convert temperature |
C The factor dRf(1)/72.0764, used to convert temperature |
145 |
surfaceTendencyTice(I,J,bi,bj)=YNEG(I,J,bi,bj)/deltaTtracer |
surfaceTendencyTice(I,J,bi,bj)=YNEG(I,J,bi,bj)/deltaTtracer |
146 |
ENDDO |
ENDDO |
147 |
ENDDO |
ENDDO |
148 |
|
c |
149 |
ENDDO |
ENDDO |
150 |
ENDDO |
ENDDO |
151 |
|
|
152 |
|
cph( |
153 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
154 |
|
CADJ STORE area = comlev1, key = ikey_dynamics |
155 |
|
CADJ STORE atemp = comlev1, key = ikey_dynamics |
156 |
|
CADJ STORE heff = comlev1, key = ikey_dynamics |
157 |
|
CADJ STORE hsnow = comlev1, key = ikey_dynamics |
158 |
|
CADJ STORE lwdown = comlev1, key = ikey_dynamics |
159 |
|
CADJ STORE tice = comlev1, key = ikey_dynamics |
160 |
|
CADJ STORE uwind = comlev1, key = ikey_dynamics |
161 |
|
CADJ STORE vwind = comlev1, key = ikey_dynamics |
162 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
163 |
|
cph) |
164 |
C GROWTH SUBROUTINE CALCULATES TOTAL GROWTH TENDENCIES, |
C GROWTH SUBROUTINE CALCULATES TOTAL GROWTH TENDENCIES, |
165 |
C INCLUDING SNOWFALL |
C INCLUDING SNOWFALL |
166 |
CALL GROATB(A22,myThid) |
CALL GROATB(A22,myThid) |
167 |
|
|
168 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
169 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
170 |
|
cph( |
171 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
172 |
|
act1 = bi - myBxLo(myThid) |
173 |
|
max1 = myBxHi(myThid) - myBxLo(myThid) + 1 |
174 |
|
act2 = bj - myByLo(myThid) |
175 |
|
max2 = myByHi(myThid) - myByLo(myThid) + 1 |
176 |
|
act3 = myThid - 1 |
177 |
|
max3 = nTx*nTy |
178 |
|
act4 = ikey_dynamics - 1 |
179 |
|
iicekey = (act1 + 1) + act2*max1 |
180 |
|
& + act3*max1*max2 |
181 |
|
& + act4*max1*max2*max3 |
182 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
183 |
|
c |
184 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
185 |
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
186 |
|
CADJ & key = iicekey, byte = isbyte |
187 |
|
CADJ STORE heff(:,:,:,bi,bj) = comlev1_bibj, |
188 |
|
CADJ & key = iicekey, byte = isbyte |
189 |
|
CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj, |
190 |
|
CADJ & key = iicekey, byte = isbyte |
191 |
|
CADJ STORE fo(:,:,bi,bj) = comlev1_bibj, |
192 |
|
CADJ & key = iicekey, byte = isbyte |
193 |
|
CADJ STORE fice(:,:,bi,bj) = comlev1_bibj, |
194 |
|
CADJ & key = iicekey, byte = isbyte |
195 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
196 |
|
cph) |
197 |
C NOW CALCULATE CORRECTED GROWTH |
C NOW CALCULATE CORRECTED GROWTH |
198 |
DO J=1,sNy |
DO J=1,sNy |
199 |
DO I=1,sNx |
DO I=1,sNx |
341 |
C NOW SET AREA(I,J,1,bi,bj)=0 WHERE NO ICE IS |
C NOW SET AREA(I,J,1,bi,bj)=0 WHERE NO ICE IS |
342 |
AREA(I,J,1,bi,bj)=MIN(AREA(I,J,1,bi,bj) |
AREA(I,J,1,bi,bj)=MIN(AREA(I,J,1,bi,bj) |
343 |
& ,HEFF(I,J,1,bi,bj)/.0001 _d 0) |
& ,HEFF(I,J,1,bi,bj)/.0001 _d 0) |
344 |
|
ENDDO |
345 |
|
ENDDO |
346 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
347 |
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
348 |
|
CADJ & key = iicekey, byte = isbyte |
349 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
350 |
|
DO J=1,sNy |
351 |
|
DO I=1,sNx |
352 |
C NOW TRUNCATE AREA |
C NOW TRUNCATE AREA |
353 |
#ifdef DO_WE_NEED_THIS |
#ifdef DO_WE_NEED_THIS |
354 |
AREA(I,J,1,bi,bj)=MIN(ONE,AREA(I,J,1,bi,bj)) |
AREA(I,J,1,bi,bj)=MIN(ONE,AREA(I,J,1,bi,bj)) |
355 |
|
ENDDO |
356 |
|
ENDDO |
357 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
358 |
|
CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj, |
359 |
|
CADJ & key = iicekey, byte = isbyte |
360 |
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
361 |
|
DO J=1,sNy |
362 |
|
DO I=1,sNx |
363 |
AREA(I,J,1,bi,bj)=MAX(ZERO,AREA(I,J,1,bi,bj)) |
AREA(I,J,1,bi,bj)=MAX(ZERO,AREA(I,J,1,bi,bj)) |
364 |
HSNOW(I,J,bi,bj)=MAX(ZERO,HSNOW(I,J,bi,bj)) |
HSNOW(I,J,bi,bj)=MAX(ZERO,HSNOW(I,J,bi,bj)) |
365 |
#endif |
#endif |