23 |
#include "SIZE.h" |
#include "SIZE.h" |
24 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
25 |
#include "PARAMS.h" |
#include "PARAMS.h" |
|
#include "GRID.h" |
|
|
#include "SURFACE.h" |
|
|
#include "DYNVARS.h" |
|
26 |
#include "FFIELDS.h" |
#include "FFIELDS.h" |
27 |
#include "THSICE_PARAMS.h" |
#include "THSICE_PARAMS.h" |
28 |
#include "THSICE_SIZE.h" |
#include "THSICE_SIZE.h" |
29 |
#include "THSICE_VARS.h" |
#include "THSICE_VARS.h" |
30 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
31 |
|
# include "DYNVARS.h" |
32 |
# include "tamc.h" |
# include "tamc.h" |
33 |
# include "tamc_keys.h" |
# include "tamc_keys.h" |
34 |
#endif |
#endif |
111 |
CADJ STORE qsw(:,:,bi,bj) = comlev1_bibj, key=ticekey, byte=isbyte |
CADJ STORE qsw(:,:,bi,bj) = comlev1_bibj, key=ticekey, byte=isbyte |
112 |
# endif |
# endif |
113 |
#endif |
#endif |
|
|
|
|
C-- Mixed layer thickness: take the 1rst layer |
|
|
#ifdef NONLIN_FRSURF |
|
|
IF ( staggerTimeStep .AND. nonlinFreeSurf.GT.0 ) THEN |
|
|
IF ( select_rStar.GT.0 ) THEN |
|
|
DO j=1-OLy,sNy+OLy |
|
|
DO i=1-OLx,sNx+OLx |
|
|
hOceMxL(i,j,bi,bj) = drF(1)*h0FacC(i,j,1,bi,bj) |
|
|
& *rStarFacC(i,j,bi,bj) |
|
|
ENDDO |
|
|
ENDDO |
|
|
ELSE |
|
|
DO j=1-OLy,sNy+OLy |
|
|
DO i=1-OLx,sNx+OLx |
|
|
IF ( kSurfC(i,j,bi,bj).EQ.1 ) THEN |
|
|
hOceMxL(i,j,bi,bj) = drF(1)*hFac_surfC(i,j,bi,bj) |
|
|
ELSE |
|
|
hOceMxL(i,j,bi,bj) = drF(1)*hFacC(i,j,1,bi,bj) |
|
|
ENDIF |
|
|
ENDDO |
|
|
ENDDO |
|
|
ENDIF |
|
|
ELSE |
|
|
#else /* ndef NONLIN_FRSURF */ |
|
|
IF (.TRUE.) THEN |
|
|
#endif /* NONLIN_FRSURF */ |
|
|
DO j=1-OLy,sNy+OLy |
|
|
DO i=1-OLx,sNx+OLx |
|
|
hOceMxL(i,j,bi,bj) = drF(1)*hFacC(i,j,1,bi,bj) |
|
|
ENDDO |
|
|
ENDDO |
|
|
ENDIF |
|
|
|
|
114 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
115 |
CADJ STORE uvel (:,:,1,bi,bj) = comlev1_bibj, key=ticekey, byte=isbyte |
CADJ STORE uvel (:,:,1,bi,bj) = comlev1_bibj, key=ticekey, byte=isbyte |
116 |
CADJ STORE vvel (:,:,1,bi,bj) = comlev1_bibj, key=ticekey, byte=isbyte |
CADJ STORE vvel (:,:,1,bi,bj) = comlev1_bibj, key=ticekey, byte=isbyte |
117 |
#endif |
#endif |
118 |
|
|
119 |
DO j = jMin, jMax |
DO j=1-OLy,sNy+OLy |
120 |
DO i = iMin, iMax |
DO i=1-OLx,sNx+OLx |
|
tOceMxL(i,j,bi,bj) = theta(i,j,1,bi,bj) |
|
|
sOceMxL(i,j,bi,bj) = salt (i,j,1,bi,bj) |
|
|
v2ocMxL(i,j,bi,bj) = |
|
|
& ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj) |
|
|
& + uvel(i+1,j,1,bi,bj)*uvel(i+1,j,1,bi,bj) |
|
|
& + vvel(i,j+1,1,bi,bj)*vvel(i,j+1,1,bi,bj) |
|
|
& + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj) |
|
|
& )*0.5 _d 0 |
|
121 |
prcAtm (i,j,bi,bj) = 0. _d 0 |
prcAtm (i,j,bi,bj) = 0. _d 0 |
|
icFrwAtm(i,j,bi,bj) = 0. _d 0 |
|
|
icFlxAtm(i,j,bi,bj) = 0. _d 0 |
|
|
icFlxSW (i,j,bi,bj) = 0. _d 0 |
|
|
snowPrc (i,j,bi,bj) = 0. _d 0 |
|
|
siceAlb (i,j,bi,bj) = 0. _d 0 |
|
122 |
ENDDO |
ENDDO |
123 |
ENDDO |
ENDDO |
124 |
|
|
125 |
|
CALL THSICE_GET_OCEAN( |
126 |
|
I bi, bj, myTime, myIter, myThid ) |
127 |
|
|
128 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
129 |
CADJ STORE iceMask(:,:,bi,bj) = comlev1_bibj, key = ticekey |
CADJ STORE iceMask(:,:,bi,bj) = comlev1_bibj, key = ticekey |
130 |
CADJ STORE iceHeight(:,:,bi,bj) = comlev1_bibj, key = ticekey |
CADJ STORE iceHeight(:,:,bi,bj) = comlev1_bibj, key = ticekey |
192 |
CADJ STORE Qice2(:,:,bi,bj) = comlev1_bibj, key = ticekey |
CADJ STORE Qice2(:,:,bi,bj) = comlev1_bibj, key = ticekey |
193 |
CADJ STORE snowAge(:,:,bi,bj) = comlev1_bibj, key = ticekey |
CADJ STORE snowAge(:,:,bi,bj) = comlev1_bibj, key = ticekey |
194 |
CADJ STORE sHeating(:,:,bi,bj) = comlev1_bibj, key = ticekey |
CADJ STORE sHeating(:,:,bi,bj) = comlev1_bibj, key = ticekey |
195 |
|
#else |
196 |
|
ENDIF |
197 |
|
IF ( .NOT.thSIce_skipThermo ) THEN |
198 |
#endif |
#endif |
199 |
CALL THSICE_STEP_FWD( |
CALL THSICE_STEP_FWD( |
200 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |