79 |
_RL UG (1-OLx:sNx+OLx, 1-OLy:sNy+OLy) |
_RL UG (1-OLx:sNx+OLx, 1-OLy:sNy+OLy) |
80 |
_RL SPEED_SQ |
_RL SPEED_SQ |
81 |
C local copy of AREA |
C local copy of AREA |
82 |
_RL areaLoc(1-OLx:sNx+OLx, 1-OLy:sNy+OLy) |
_RL areaLoc |
83 |
|
|
84 |
#ifdef SEAICE_MULTILEVEL |
#ifdef SEAICE_MULTICATEGORY |
85 |
INTEGER it |
INTEGER it |
86 |
INTEGER ilockey |
INTEGER ilockey |
87 |
_RL RK |
_RL RK |
88 |
_RL HICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy) |
_RL HICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy) |
89 |
_RL FICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy) |
_RL FICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy) |
90 |
|
_RL QSWIP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy) |
91 |
#endif |
#endif |
92 |
|
|
93 |
if ( buoyancyRelation .eq. 'OCEANICP' ) then |
if ( buoyancyRelation .eq. 'OCEANICP' ) then |
137 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
138 |
DO J=1,sNy |
DO J=1,sNy |
139 |
DO I=1,sNx |
DO I=1,sNx |
|
areaLoc(I,J) = MAX(A22,AREA(I,J,2,bi,bj)) |
|
140 |
FHEFF(I,J) = 0.0 _d 0 |
FHEFF(I,J) = 0.0 _d 0 |
141 |
FICE (I,J) = 0.0 _d 0 |
FICE (I,J) = 0.0 _d 0 |
142 |
#ifdef SEAICE_MULTILEVEL |
#ifdef SEAICE_MULTICATEGORY |
143 |
FICEP(I,J) = 0.0 _d 0 |
FICEP(I,J) = 0.0 _d 0 |
144 |
|
QSWIP(I,J) = 0.0 _d 0 |
145 |
#endif |
#endif |
146 |
FHEFF(I,J) = 0.0 _d 0 |
FHEFF(I,J) = 0.0 _d 0 |
147 |
FICE (I,J) = 0.0 _d 0 |
FICE (I,J) = 0.0 _d 0 |
162 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
163 |
DO J=1,sNy |
DO J=1,sNy |
164 |
DO I=1,sNx |
DO I=1,sNx |
|
cph need to adjoint-store AREA again before using it in further init. |
|
|
cph (all these initialisations involving AREA are nasty "non-linear") |
|
165 |
C COMPUTE ACTUAL ICE THICKNESS AND PUT MINIMUM/MAXIMUM |
C COMPUTE ACTUAL ICE THICKNESS AND PUT MINIMUM/MAXIMUM |
166 |
C ON ICE THICKNESS FOR BUDGET COMPUTATION |
C ON ICE THICKNESS FOR BUDGET COMPUTATION |
167 |
HICE(I,J) = HEFF(I,J,2,bi,bj)/areaLoc(I,J) |
areaLoc = MAX(A22,AREA(I,J,2,bi,bj)) |
168 |
|
HICE(I,J) = HEFF(I,J,2,bi,bj)/areaLoc |
169 |
HICE(I,J) = MAX(HICE(I,J),0.05 _d +00) |
HICE(I,J) = MAX(HICE(I,J),0.05 _d +00) |
170 |
HICE(I,J) = MIN(HICE(I,J),9.0 _d +00) |
HICE(I,J) = MIN(HICE(I,J),9.0 _d +00) |
171 |
hSnwLoc(I,J) = HSNOW(I,J,bi,bj)/areaLoc(I,J) |
hSnwLoc(I,J) = HSNOW(I,J,bi,bj)/areaLoc |
172 |
ENDDO |
ENDDO |
173 |
ENDDO |
ENDDO |
174 |
|
|
208 |
cphCADJ STORE vwind = comlev1, key = ikey_dynamics |
cphCADJ STORE vwind = comlev1, key = ikey_dynamics |
209 |
c |
c |
210 |
CADJ STORE tice = comlev1, key = ikey_dynamics |
CADJ STORE tice = comlev1, key = ikey_dynamics |
211 |
# ifdef SEAICE_MULTILEVEL |
# ifdef SEAICE_MULTICATEGORY |
212 |
CADJ STORE tices = comlev1, key = ikey_dynamics |
CADJ STORE tices = comlev1, key = ikey_dynamics |
213 |
# endif |
# endif |
214 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
222 |
I bi, bj) |
I bi, bj) |
223 |
|
|
224 |
C NOW DO ICE |
C NOW DO ICE |
225 |
#ifdef SEAICE_MULTILEVEL |
#ifdef SEAICE_MULTICATEGORY |
226 |
C-- Start loop over muli-levels |
C-- Start loop over muli-categories |
227 |
DO IT=1,MULTDIM |
DO IT=1,MULTDIM |
228 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
229 |
ilockey = (iicekey-1)*MULTDIM + IT |
ilockey = (iicekey-1)*MULTDIM + IT |
230 |
CADJ STORE tices(:,:,it,bi,bj) = comlev1_multdim, |
CADJ STORE tices(:,:,it,bi,bj) = comlev1_multdim, |
231 |
CADJ & key = ilockey, byte = isbyte |
CADJ & key = ilockey, byte = isbyte |
232 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
233 |
|
RK=REAL(IT) |
234 |
DO J=1,sNy |
DO J=1,sNy |
235 |
DO I=1,sNx |
DO I=1,sNx |
236 |
RK=IT*1.0 |
HICEP(I,J)=(HICE(I,J)/MULTDIM)*((2.0 _d 0*RK)-1.0 _d 0) |
|
HICEP(I,J)=(HICE(I,J)/7.0 _d 0)*((2.0 _d 0*RK)-1.0 _d 0) |
|
237 |
TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj) |
TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj) |
238 |
ENDDO |
ENDDO |
239 |
ENDDO |
ENDDO |
240 |
CALL SEAICE_BUDGET_ICE( |
CALL SEAICE_BUDGET_ICE( |
241 |
I UG, HICEP, hSnwLoc, |
I UG, HICEP, hSnwLoc, |
242 |
U TICE, |
U TICE, |
243 |
O FICE, QSWI, |
O FICEP, QSWIP, |
244 |
I bi, bj) |
I bi, bj) |
245 |
DO J=1,sNy |
DO J=1,sNy |
246 |
DO I=1,sNx |
DO I=1,sNx |
247 |
FICEP(I,J)=(FICE(I,J)/7.0 _d 0)+FICEP(I,J) |
C average surface heat fluxes/growth rates |
248 |
TICES(I,J,IT,bi,bj)=TICE(I,J,bi,bj) |
FICE (I,J) = FICE(I,J) + FICEP(I,J)/MULTDIM |
249 |
|
QSWI (I,J) = QSWI(I,J) + QSWIP(I,J)/MULTDIM |
250 |
|
TICES(I,J,IT,bi,bj) = TICE(I,J,bi,bj) |
251 |
ENDDO |
ENDDO |
252 |
ENDDO |
ENDDO |
253 |
ENDDO |
ENDDO |
254 |
C-- End loop over muli-levels |
C-- End loop over multi-categories |
255 |
DO J=1,sNy |
#else /* SEAICE_MULTICATEGORY */ |
|
DO I=1,sNx |
|
|
FICE(I,J)=FICEP(I,J) |
|
|
ENDDO |
|
|
ENDDO |
|
|
#else /* SEAICE_MULTILEVEL */ |
|
256 |
CALL SEAICE_BUDGET_ICE( |
CALL SEAICE_BUDGET_ICE( |
257 |
I UG, HICE, hSnwLoc, |
I UG, HICE, hSnwLoc, |
258 |
U TICE, |
U TICE, |
259 |
O FICE, QSWI, |
O FICE, QSWI, |
260 |
I bi, bj) |
I bi, bj) |
261 |
#endif /* SEAICE_MULTILEVEL */ |
#endif /* SEAICE_MULTICATEGORY */ |
262 |
|
|
263 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
264 |
CADJ STORE theta(:,:,:,bi,bj)= comlev1_bibj, |
CADJ STORE theta(:,:,:,bi,bj)= comlev1_bibj, |