135 |
I myTime,myThid) |
I myTime,myThid) |
136 |
ENDIF |
ENDIF |
137 |
|
|
138 |
|
IF (useCDscheme) THEN |
139 |
|
C- for CD-scheme, store gU,Vtmp = gU,V^n + forcing |
140 |
|
DO j=jMin,jMax |
141 |
|
DO i=iMin,iMax |
142 |
|
gUtmp(i,j) = gU(i,j,k,bi,bj) |
143 |
|
gVtmp(i,j) = gV(i,j,k,bi,bj) |
144 |
|
ENDDO |
145 |
|
ENDDO |
146 |
|
ENDIF |
147 |
|
|
148 |
C- Compute effective gU,gV_[n+1/2] terms (including Adams-Bashforth weights) |
C- Compute effective gU,gV_[n+1/2] terms (including Adams-Bashforth weights) |
149 |
C and save gU,gV_[n] into guNm1,gvNm1 for the next time step. |
C and save gU,gV_[n] into guNm1,gvNm1 for the next time step. |
150 |
DO j=jMin,jMax |
#ifdef ALLOW_ADAMSBASHFORTH_3 |
151 |
DO i=iMin,iMax |
CALL ADAMS_BASHFORTH3( |
152 |
gUtmp(i,j) = ab15*gU(i,j,k,bi,bj) |
I bi, bj, k, |
153 |
& + ab05*guNm1(i,j,k,bi,bj) |
U gU, guNm, |
154 |
gVtmp(i,j) = ab15*gV(i,j,k,bi,bj) |
I myIter, myThid ) |
155 |
& + ab05*gvNm1(i,j,k,bi,bj) |
CALL ADAMS_BASHFORTH3( |
156 |
guNm1(i,j,k,bi,bj)= gU(i,j,k,bi,bj) |
I bi, bj, k, |
157 |
gvNm1(i,j,k,bi,bj)= gV(i,j,k,bi,bj) |
U gV, gvNm, |
158 |
gU(i,j,k,bi,bj) = gUtmp(i,j) |
I myIter, myThid ) |
159 |
gV(i,j,k,bi,bj) = gVtmp(i,j) |
#else /* ALLOW_ADAMSBASHFORTH_3 */ |
160 |
ENDDO |
CALL ADAMS_BASHFORTH2( |
161 |
ENDDO |
I bi, bj, k, |
162 |
|
U gU, guNm1, |
163 |
|
I myIter, myThid ) |
164 |
|
CALL ADAMS_BASHFORTH2( |
165 |
|
I bi, bj, k, |
166 |
|
U gV, gvNm1, |
167 |
|
I myIter, myThid ) |
168 |
|
#endif /* ALLOW_ADAMSBASHFORTH_3 */ |
169 |
|
|
170 |
C-- Forcing term outside the Adams-Bashforth: |
C-- Forcing term outside the Adams-Bashforth: |
171 |
C (not recommanded with CD-scheme ON) |
C (not recommanded with CD-scheme ON) |
172 |
IF (momForcing .AND. .NOT.momForcing_In_AB) THEN |
IF (momForcing .AND. .NOT.momForcing_In_AB) THEN |
173 |
|
IF (useCDscheme) THEN |
174 |
|
DO j=jMin,jMax |
175 |
|
DO i=iMin,iMax |
176 |
|
gUtmp(i,j) = gUtmp(i,j) - gU(i,j,k,bi,bj) |
177 |
|
gVtmp(i,j) = gVtmp(i,j) - gV(i,j,k,bi,bj) |
178 |
|
ENDDO |
179 |
|
ENDDO |
180 |
|
ENDIF |
181 |
CALL EXTERNAL_FORCING_U( |
CALL EXTERNAL_FORCING_U( |
182 |
I iMin,iMax,jMin,jMax,bi,bj,k, |
I iMin,iMax,jMin,jMax,bi,bj,k, |
183 |
I myTime,myThid) |
I myTime,myThid) |
184 |
CALL EXTERNAL_FORCING_V( |
CALL EXTERNAL_FORCING_V( |
185 |
I iMin,iMax,jMin,jMax,bi,bj,k, |
I iMin,iMax,jMin,jMax,bi,bj,k, |
186 |
I myTime,myThid) |
I myTime,myThid) |
187 |
IF (useCDscheme) THEN |
|
188 |
C- for CD-scheme, compute gU,Vtmp = gU,V^n + forcing |
C- for CD-scheme, compute gU,Vtmp = gU,V^n + forcing |
189 |
|
IF (useCDscheme) THEN |
190 |
DO j=jMin,jMax |
DO j=jMin,jMax |
191 |
DO i=iMin,iMax |
DO i=iMin,iMax |
192 |
gUtmp(i,j) = gU(i,j,k,bi,bj)-gUtmp(i,j) |
gUtmp(i,j) = gUtmp(i,j) + gU(i,j,k,bi,bj) |
193 |
& + guNm1(i,j,k,bi,bj) |
gVtmp(i,j) = gVtmp(i,j) + gV(i,j,k,bi,bj) |
|
gVtmp(i,j) = gV(i,j,k,bi,bj)-gVtmp(i,j) |
|
|
& + gvNm1(i,j,k,bi,bj) |
|
|
ENDDO |
|
|
ENDDO |
|
|
ELSE |
|
|
DO j=jMin,jMax |
|
|
DO i=iMin,iMax |
|
|
gUtmp(i,j) = gU(i,j,k,bi,bj) |
|
|
gVtmp(i,j) = gV(i,j,k,bi,bj) |
|
194 |
ENDDO |
ENDDO |
195 |
ENDDO |
ENDDO |
196 |
ENDIF |
ENDIF |
|
ELSEIF ( useCDscheme) THEN |
|
|
DO j=jMin,jMax |
|
|
DO i=iMin,iMax |
|
|
gUtmp(i,j) = guNm1(i,j,k,bi,bj) |
|
|
gVtmp(i,j) = gvNm1(i,j,k,bi,bj) |
|
|
ENDDO |
|
|
ENDDO |
|
197 |
ENDIF |
ENDIF |
198 |
|
|
199 |
#ifdef ALLOW_CD_CODE |
#ifdef ALLOW_CD_CODE |
212 |
& + gvCor(i,j) |
& + gvCor(i,j) |
213 |
ENDDO |
ENDDO |
214 |
ENDDO |
ENDDO |
215 |
ENDIF |
ELSE |
216 |
#endif /* ALLOW_CD_CODE */ |
#endif /* ALLOW_CD_CODE */ |
217 |
|
DO j=jMin,jMax |
218 |
|
DO i=iMin,iMax |
219 |
|
gUtmp(i,j) = gU(i,j,k,bi,bj) |
220 |
|
gVtmp(i,j) = gV(i,j,k,bi,bj) |
221 |
|
ENDDO |
222 |
|
ENDDO |
223 |
|
#ifdef ALLOW_CD_CODE |
224 |
|
ENDIF |
225 |
|
#endif |
226 |
|
|
227 |
#ifdef NONLIN_FRSURF |
#ifdef NONLIN_FRSURF |
228 |
IF (.NOT. vectorInvariantMomentum |
IF (.NOT. vectorInvariantMomentum |