132 |
#endif /* ALLOW_DIAGNOSTICS */ |
#endif /* ALLOW_DIAGNOSTICS */ |
133 |
|
|
134 |
#ifdef ALLOW_SEAICE |
#ifdef ALLOW_SEAICE |
|
C-- Call sea ice model to compute forcing/external data fields. In |
|
|
C addition to computing prognostic sea-ice variables and diagnosing the |
|
|
C forcing/external data fields that drive the ocean model, SEAICE_MODEL |
|
|
C also sets theta to the freezing point under sea-ice. The implied |
|
|
C surface heat flux is then stored in variable surfaceTendencyTice, |
|
|
C which is needed by KPP package (kpp_calc.F and kpp_transport_t.F) |
|
|
C to diagnose surface buoyancy fluxes and for the non-local transport |
|
|
C term. Because this call precedes model thermodynamics, temperature |
|
|
C under sea-ice may not be "exactly" at the freezing point by the time |
|
|
C theta is dumped or time-averaged. |
|
135 |
IF ( useSEAICE ) THEN |
IF ( useSEAICE ) THEN |
136 |
#ifdef ALLOW_AUTODIFF_TAMC |
# ifdef ALLOW_AUTODIFF_TAMC |
137 |
|
cph-adj-test( |
138 |
|
CADJ STORE area,empmr,qsw,theta = comlev1, key = ikey_dynamics |
139 |
|
cph-adj-test) |
140 |
CADJ STORE atemp,aqh,precip = comlev1, key = ikey_dynamics |
CADJ STORE atemp,aqh,precip = comlev1, key = ikey_dynamics |
141 |
CADJ STORE swdown,lwdown = comlev1, key = ikey_dynamics |
CADJ STORE swdown,lwdown = comlev1, key = ikey_dynamics |
142 |
cph# ifdef EXF_READ_EVAP |
cph# ifdef EXF_READ_EVAP |
143 |
CADJ STORE evap = comlev1, key = ikey_dynamics |
CADJ STORE evap = comlev1, key = ikey_dynamics |
144 |
cph# endif |
cph# endif |
145 |
CADJ STORE uvel,vvel = comlev1, key = ikey_dynamics |
CADJ STORE uvel,vvel = comlev1, key = ikey_dynamics |
146 |
# ifdef SEAICE_ALLOW_EVP |
# ifdef SEAICE_ALLOW_DYNAMICS |
147 |
|
CADJ STORE uice = comlev1, key = ikey_dynamics |
148 |
|
CADJ STORE vice = comlev1, key = ikey_dynamics |
149 |
|
# ifdef SEAICE_ALLOW_EVP |
150 |
CADJ STORE seaice_sigma1 = comlev1, key = ikey_dynamics |
CADJ STORE seaice_sigma1 = comlev1, key = ikey_dynamics |
151 |
CADJ STORE seaice_sigma2 = comlev1, key = ikey_dynamics |
CADJ STORE seaice_sigma2 = comlev1, key = ikey_dynamics |
152 |
CADJ STORE seaice_sigma12 = comlev1, key = ikey_dynamics |
CADJ STORE seaice_sigma12 = comlev1, key = ikey_dynamics |
153 |
# endif |
# endif |
154 |
# ifdef SEAICE_SALINITY |
# endif |
155 |
|
# ifdef SEAICE_SALINITY |
156 |
CADJ STORE salt = comlev1, key = ikey_dynamics |
CADJ STORE salt = comlev1, key = ikey_dynamics |
157 |
# endif |
# endif |
158 |
# ifdef ATMOSPHERIC_LOADING |
# ifdef ATMOSPHERIC_LOADING |
159 |
|
CADJ STORE pload = comlev1, key = ikey_dynamics |
160 |
CADJ STORE siceload = comlev1, key = ikey_dynamics |
CADJ STORE siceload = comlev1, key = ikey_dynamics |
161 |
# endif |
# endif |
162 |
# ifdef NONLIN_FRSURF |
# ifdef NONLIN_FRSURF |
163 |
CADJ STORE recip_hfacc = comlev1, key = ikey_dynamics |
CADJ STORE recip_hfacc = comlev1, key = ikey_dynamics |
164 |
|
# endif |
165 |
# endif |
# endif |
166 |
#endif |
# ifdef ALLOW_DEBUG |
|
#ifdef ALLOW_DEBUG |
|
167 |
IF ( debugLevel .GE. debLevB ) |
IF ( debugLevel .GE. debLevB ) |
168 |
& CALL DEBUG_CALL('SEAICE_MODEL',myThid) |
& CALL DEBUG_CALL('SEAICE_MODEL',myThid) |
169 |
#endif |
# endif |
170 |
CALL TIMER_START('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid) |
CALL TIMER_START('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid) |
171 |
CALL SEAICE_MODEL( myTime, myIter, myThid ) |
CALL SEAICE_MODEL( myTime, myIter, myThid ) |
172 |
CALL TIMER_STOP ('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid) |
CALL TIMER_STOP ('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid) |
173 |
#ifdef ALLOW_COST |
# ifdef ALLOW_COST |
174 |
CALL SEAICE_COST_SENSI ( myTime, myIter, myThid ) |
CALL SEAICE_COST_SENSI ( myTime, myIter, myThid ) |
175 |
#endif |
# endif |
176 |
ENDIF |
ENDIF |
177 |
#endif /* ALLOW_SEAICE */ |
#endif /* ALLOW_SEAICE */ |
178 |
|
|
179 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
180 |
|
CADJ STORE sst, sss = comlev1, key = ikey_dynamics |
181 |
|
CADJ STORE qsw = comlev1, key = ikey_dynamics |
182 |
|
# ifdef ALLOW_SEAICE |
183 |
|
CADJ STORE area = comlev1, key = ikey_dynamics |
184 |
|
# endif |
185 |
|
#endif |
186 |
|
|
187 |
#if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D) |
#if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D) |
188 |
IF ( useThSIce .AND. fluidIsWater ) THEN |
IF ( useThSIce .AND. fluidIsWater ) THEN |
189 |
#ifdef ALLOW_DEBUG |
#ifdef ALLOW_DEBUG |