40 |
|
|
41 |
C !DESCRIPTION: |
C !DESCRIPTION: |
42 |
C Calculates all the horizontal accelerations except for the implicit surface |
C Calculates all the horizontal accelerations except for the implicit surface |
43 |
C pressure gradient and implciit vertical viscosity. |
C pressure gradient and implicit vertical viscosity. |
44 |
|
|
45 |
C !USES: =============================================================== |
C !USES: =============================================================== |
46 |
C == Global variables == |
C == Global variables == |
249 |
C Calculate tracer cell face open areas |
C Calculate tracer cell face open areas |
250 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
251 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
252 |
xA(i,j) = _dyG(i,j,bi,bj) |
xA(i,j) = _dyG(i,j,bi,bj)*deepFacC(k) |
253 |
& *drF(k)*_hFacW(i,j,k,bi,bj) |
& *drF(k)*_hFacW(i,j,k,bi,bj) |
254 |
yA(i,j) = _dxG(i,j,bi,bj) |
yA(i,j) = _dxG(i,j,bi,bj)*deepFacC(k) |
255 |
& *drF(k)*_hFacS(i,j,k,bi,bj) |
& *drF(k)*_hFacS(i,j,k,bi,bj) |
256 |
ENDDO |
ENDDO |
257 |
ENDDO |
ENDDO |
258 |
|
|
265 |
ENDDO |
ENDDO |
266 |
|
|
267 |
C Calculate velocity field "volume transports" through tracer cell faces. |
C Calculate velocity field "volume transports" through tracer cell faces. |
268 |
|
C anelastic: transports are scaled by rhoFacC (~ mass transport) |
269 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
270 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
271 |
uTrans(i,j) = uFld(i,j)*xA(i,j) |
uTrans(i,j) = uFld(i,j)*xA(i,j)*rhoFacC(k) |
272 |
vTrans(i,j) = vFld(i,j)*yA(i,j) |
vTrans(i,j) = vFld(i,j)*yA(i,j)*rhoFacC(k) |
273 |
ENDDO |
ENDDO |
274 |
ENDDO |
ENDDO |
275 |
|
|
305 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
306 |
# ifdef NONLIN_FRSURF |
# ifdef NONLIN_FRSURF |
307 |
# ifndef DISABLE_RSTAR_CODE |
# ifndef DISABLE_RSTAR_CODE |
308 |
CADJ STORE dwtransc(:,:,bi,bj) = |
CADJ STORE dwtransc(:,:,bi,bj) = |
309 |
CADJ & comlev1_bibj_k, key = imomkey, byte = isbyte |
CADJ & comlev1_bibj_k, key = imomkey, byte = isbyte |
310 |
CADJ STORE dwtransu(:,:,bi,bj) = |
CADJ STORE dwtransu(:,:,bi,bj) = |
311 |
CADJ & comlev1_bibj_k, key = imomkey, byte = isbyte |
CADJ & comlev1_bibj_k, key = imomkey, byte = isbyte |
312 |
CADJ STORE dwtransv(:,:,bi,bj) = |
CADJ STORE dwtransv(:,:,bi,bj) = |
313 |
CADJ & comlev1_bibj_k, key = imomkey, byte = isbyte |
CADJ & comlev1_bibj_k, key = imomkey, byte = isbyte |
314 |
# endif |
# endif |
315 |
# endif /* NONLIN_FRSURF */ |
# endif /* NONLIN_FRSURF */ |
375 |
& ( 0.5 _d 0*(rA(i,j,bi,bj)+rA(i-1,j,bi,bj)) ) |
& ( 0.5 _d 0*(rA(i,j,bi,bj)+rA(i-1,j,bi,bj)) ) |
376 |
#else |
#else |
377 |
& -_recip_hFacW(i,j,k,bi,bj)*recip_drF(k) |
& -_recip_hFacW(i,j,k,bi,bj)*recip_drF(k) |
378 |
& *recip_rAw(i,j,bi,bj) |
& *recip_rAw(i,j,bi,bj)*recip_deepFac2C(k)*recip_rhoFacC(k) |
379 |
#endif |
#endif |
380 |
& *( ( fZon(i,j ) - fZon(i-1,j) )*uDudxFac |
& *( ( fZon(i,j ) - fZon(i-1,j) )*uDudxFac |
381 |
& +( fMer(i,j+1) - fMer(i, j) )*vDudyFac |
& +( fMer(i,j+1) - fMer(i, j) )*vDudyFac |
382 |
& +(fVerU(i,j,kDown) - fVerU(i,j,kUp))*rkSign*rVelDudrFac |
& +(fVerU(i,j,kDown) - fVerU(i,j,kUp))*rkSign*rVelDudrFac |
383 |
& ) |
& ) |
384 |
ENDDO |
ENDDO |
385 |
ENDDO |
ENDDO |
449 |
ENDIF |
ENDIF |
450 |
|
|
451 |
C-- Tendency is minus divergence of the fluxes |
C-- Tendency is minus divergence of the fluxes |
452 |
|
C anelastic: hor.visc.fluxes are not scaled by rhoFac (by vert.visc.flx is) |
453 |
DO j=jMin,jMax |
DO j=jMin,jMax |
454 |
DO i=iMin,iMax |
DO i=iMin,iMax |
455 |
guDiss(i,j) = |
guDiss(i,j) = |
458 |
& ( 0.5 _d 0*(rA(i,j,bi,bj)+rA(i-1,j,bi,bj)) ) |
& ( 0.5 _d 0*(rA(i,j,bi,bj)+rA(i-1,j,bi,bj)) ) |
459 |
#else |
#else |
460 |
& -_recip_hFacW(i,j,k,bi,bj)*recip_drF(k) |
& -_recip_hFacW(i,j,k,bi,bj)*recip_drF(k) |
461 |
& *recip_rAw(i,j,bi,bj) |
& *recip_rAw(i,j,bi,bj)*recip_deepFac2C(k) |
462 |
#endif |
#endif |
463 |
& *( ( fZon(i,j ) - fZon(i-1,j) )*AhDudxFac |
& *( ( fZon(i,j ) - fZon(i-1,j) )*AhDudxFac |
464 |
& +( fMer(i,j+1) - fMer(i, j) )*AhDudyFac |
& +( fMer(i,j+1) - fMer(i, j) )*AhDudyFac |
465 |
& +( fVrDw(i,j) - fVrUp(i,j) )*rkSign*ArDudrFac |
& +( fVrDw(i,j) - fVrUp(i,j) )*rkSign*ArDudrFac |
466 |
|
& *recip_rhoFacC(k) |
467 |
& ) |
& ) |
468 |
ENDDO |
ENDDO |
469 |
ENDDO |
ENDDO |
580 |
& ( 0.5 _d 0*(_rA(i,j,bi,bj)+_rA(i,j-1,bi,bj)) ) |
& ( 0.5 _d 0*(_rA(i,j,bi,bj)+_rA(i,j-1,bi,bj)) ) |
581 |
#else |
#else |
582 |
& -_recip_hFacS(i,j,k,bi,bj)*recip_drF(k) |
& -_recip_hFacS(i,j,k,bi,bj)*recip_drF(k) |
583 |
& *recip_rAs(i,j,bi,bj) |
& *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)*recip_rhoFacC(k) |
584 |
#endif |
#endif |
585 |
& *( ( fZon(i+1,j) - fZon(i,j ) )*uDvdxFac |
& *( ( fZon(i+1,j) - fZon(i,j ) )*uDvdxFac |
586 |
& +( fMer(i, j) - fMer(i,j-1) )*vDvdyFac |
& +( fMer(i, j) - fMer(i,j-1) )*vDvdyFac |
587 |
& +(fVerV(i,j,kDown) - fVerV(i,j,kUp))*rkSign*rVelDvdrFac |
& +(fVerV(i,j,kDown) - fVerV(i,j,kUp))*rkSign*rVelDvdrFac |
588 |
& ) |
& ) |
589 |
ENDDO |
ENDDO |
590 |
ENDDO |
ENDDO |
653 |
ENDIF |
ENDIF |
654 |
|
|
655 |
C-- Tendency is minus divergence of the fluxes + coriolis + pressure term |
C-- Tendency is minus divergence of the fluxes + coriolis + pressure term |
656 |
|
C anelastic: hor.visc.fluxes are not scaled by rhoFac (by vert.visc.flx is) |
657 |
DO j=jMin,jMax |
DO j=jMin,jMax |
658 |
DO i=iMin,iMax |
DO i=iMin,iMax |
659 |
gvDiss(i,j) = |
gvDiss(i,j) = |
662 |
& ( 0.5 _d 0*(_rA(i,j,bi,bj)+_rA(i,j-1,bi,bj)) ) |
& ( 0.5 _d 0*(_rA(i,j,bi,bj)+_rA(i,j-1,bi,bj)) ) |
663 |
#else |
#else |
664 |
& -_recip_hFacS(i,j,k,bi,bj)*recip_drF(k) |
& -_recip_hFacS(i,j,k,bi,bj)*recip_drF(k) |
665 |
& *recip_rAs(i,j,bi,bj) |
& *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k) |
666 |
#endif |
#endif |
667 |
& *( ( fZon(i+1,j) - fZon(i,j ) )*AhDvdxFac |
& *( ( fZon(i+1,j) - fZon(i,j ) )*AhDvdxFac |
668 |
& +( fMer(i, j) - fMer(i,j-1) )*AhDvdyFac |
& +( fMer(i, j) - fMer(i,j-1) )*AhDvdyFac |
669 |
& +( fVrDw(i,j) - fVrUp(i,j) )*rkSign*ArDvdrFac |
& +( fVrDw(i,j) - fVrUp(i,j) )*rkSign*ArDvdrFac |
670 |
|
& *recip_rhoFacC(k) |
671 |
& ) |
& ) |
672 |
ENDDO |
ENDDO |
673 |
ENDDO |
ENDDO |