142 |
C term. Because this call precedes model thermodynamics, temperature |
C term. Because this call precedes model thermodynamics, temperature |
143 |
C under sea-ice may not be "exactly" at the freezing point by the time |
C under sea-ice may not be "exactly" at the freezing point by the time |
144 |
C theta is dumped or time-averaged. |
C theta is dumped or time-averaged. |
145 |
|
# ifndef ALLOW_ECCO_PRODUCTION |
146 |
IF ( useSEAICE ) THEN |
IF ( useSEAICE ) THEN |
147 |
#ifdef ALLOW_AUTODIFF_TAMC |
# endif |
148 |
|
# ifdef ALLOW_AUTODIFF_TAMC |
149 |
CADJ STORE atemp,aqh,precip = comlev1, key = ikey_dynamics |
CADJ STORE atemp,aqh,precip = comlev1, key = ikey_dynamics |
150 |
CADJ STORE swdown,lwdown = comlev1, key = ikey_dynamics |
CADJ STORE swdown,lwdown = comlev1, key = ikey_dynamics |
151 |
cph# ifdef EXF_READ_EVAP |
cph# ifdef EXF_READ_EVAP |
152 |
CADJ STORE evap = comlev1, key = ikey_dynamics |
CADJ STORE evap = comlev1, key = ikey_dynamics |
153 |
cph# endif |
cph# endif |
154 |
CADJ STORE uvel,vvel = comlev1, key = ikey_dynamics |
CADJ STORE uvel,vvel = comlev1, key = ikey_dynamics |
155 |
# ifdef SEAICE_ALLOW_EVP |
# ifdef SEAICE_ALLOW_DYNAMICS |
156 |
|
CADJ STORE uice = comlev1, key = ikey_dynamics |
157 |
|
CADJ STORE vice = comlev1, key = ikey_dynamics |
158 |
|
# ifdef SEAICE_ALLOW_EVP |
159 |
CADJ STORE seaice_sigma1 = comlev1, key = ikey_dynamics |
CADJ STORE seaice_sigma1 = comlev1, key = ikey_dynamics |
160 |
CADJ STORE seaice_sigma2 = comlev1, key = ikey_dynamics |
CADJ STORE seaice_sigma2 = comlev1, key = ikey_dynamics |
161 |
CADJ STORE seaice_sigma12 = comlev1, key = ikey_dynamics |
CADJ STORE seaice_sigma12 = comlev1, key = ikey_dynamics |
162 |
# endif |
# endif |
163 |
# ifdef SEAICE_SALINITY |
# endif |
164 |
|
# ifdef SEAICE_SALINITY |
165 |
CADJ STORE salt = comlev1, key = ikey_dynamics |
CADJ STORE salt = comlev1, key = ikey_dynamics |
166 |
# endif |
# endif |
167 |
# ifdef ATMOSPHERIC_LOADING |
# ifdef ATMOSPHERIC_LOADING |
168 |
CADJ STORE siceload = comlev1, key = ikey_dynamics |
CADJ STORE siceload = comlev1, key = ikey_dynamics |
169 |
# endif |
# endif |
170 |
# ifdef NONLIN_FRSURF |
# ifdef NONLIN_FRSURF |
171 |
CADJ STORE recip_hfacc = comlev1, key = ikey_dynamics |
CADJ STORE recip_hfacc = comlev1, key = ikey_dynamics |
172 |
|
# endif |
173 |
# endif |
# endif |
174 |
#endif |
# ifdef ALLOW_DEBUG |
|
#ifdef ALLOW_DEBUG |
|
175 |
IF ( debugLevel .GE. debLevB ) |
IF ( debugLevel .GE. debLevB ) |
176 |
& CALL DEBUG_CALL('SEAICE_MODEL',myThid) |
& CALL DEBUG_CALL('SEAICE_MODEL',myThid) |
177 |
#endif |
# endif |
178 |
CALL TIMER_START('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid) |
CALL TIMER_START('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid) |
179 |
CALL SEAICE_MODEL( myTime, myIter, myThid ) |
CALL SEAICE_MODEL( myTime, myIter, myThid ) |
180 |
CALL TIMER_STOP ('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid) |
CALL TIMER_STOP ('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid) |
181 |
#ifdef ALLOW_COST |
# ifdef ALLOW_COST |
182 |
CALL SEAICE_COST_SENSI ( myTime, myIter, myThid ) |
CALL SEAICE_COST_SENSI ( myTime, myIter, myThid ) |
183 |
#endif |
# endif |
184 |
|
# ifndef ALLOW_ECCO_PRODUCTION |
185 |
ENDIF |
ENDIF |
186 |
|
# endif |
187 |
#endif /* ALLOW_SEAICE */ |
#endif /* ALLOW_SEAICE */ |
188 |
|
|
189 |
#if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D) |
#if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D) |
361 |
C-- Calculate gradients of potential density for isoneutral |
C-- Calculate gradients of potential density for isoneutral |
362 |
C slope terms (e.g. GM/Redi tensor or IVDC diffusivity) |
C slope terms (e.g. GM/Redi tensor or IVDC diffusivity) |
363 |
IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.) |
IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.) |
364 |
& .OR. usePLUME .OR. doDiagsRho.GE.1 ) THEN |
& .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN |
365 |
#ifdef ALLOW_DEBUG |
#ifdef ALLOW_DEBUG |
366 |
IF ( debugLevel .GE. debLevB ) |
IF ( debugLevel .GE. debLevB ) |
367 |
& CALL DEBUG_CALL('FIND_RHO',myThid) |
& CALL DEBUG_CALL('FIND_RHO',myThid) |
440 |
ENDIF |
ENDIF |
441 |
|
|
442 |
#ifdef ALLOW_SALT_PLUME |
#ifdef ALLOW_SALT_PLUME |
443 |
CALL CALC_SALT_PLUME_DEPTH( rhoK, sigmaR, |
IF ( useSALT_PLUME ) THEN |
444 |
|
CALL SALT_PLUME_CALC_DEPTH( rhoK, sigmaR, |
445 |
& bi, bj, myTime, myIter, myThid ) |
& bi, bj, myTime, myIter, myThid ) |
446 |
#endif |
ENDIF |
447 |
|
#endif /* ALLOW_SALT_PLUME */ |
448 |
|
|
449 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
450 |
IF ( doDiagsRho.GE.1 ) THEN |
IF ( doDiagsRho.GE.1 ) THEN |
451 |
CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR ', 0, Nr, |
CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR ', 0, Nr, |
452 |
& 2, bi, bj, myThid) |
& 2, bi, bj, myThid) |
453 |
ENDIF |
ENDIF |
454 |
#endif |
#endif /* ALLOW_DIAGNOSTICS */ |
455 |
|
|
456 |
C-- Determines forcing terms based on external fields |
C-- Determines forcing terms based on external fields |
457 |
C relaxation terms, etc. |
C relaxation terms, etc. |