vmomentum - 2D-momentum for all interior points.

INTERFACE:

    subroutine vmomentum(tausy,airp)
DESCRIPTION:

Here, the vertically integrated $ V$-momentum equation (62) given on page [*] including a number of slow terms is calculated. One slight modification is that for better stability of drying and flooding processes the slow friction term $ S^y_F$ is now also multiplied with the parameter $ \alpha$ defined in eq. (5).

Furthermore, the horizontal pressure gradient $ \partial^*_y\zeta$ is modified in order to support drying and flooding, see figure 10 on page [*] and the explanations in section 5.5. $ \partial^*_y\zeta$ is now also considering the atmospheric pressure gradient at sea surface height.

For numerical stability reasons, the $ V$-momentum equation is here discretised in time such that the bed friction is treated explicitely:

$\displaystyle \displaystyle V^{n+1}=\frac{V^n-\Delta t_m(gD\partial^*_y\zeta +\...
...F^y))} {1+\Delta t_m\frac{R}{D^2}\sqrt{\left(U^n\right)^2+\left(V^n\right)^2}},$ (93)

with $ V_{Ex}$ combining advection and diffusion of $ V$, see routines uv_advect (section 7.4.13 on page [*]) and uv_diffusion (section 7.4.14 on page [*]). The slow terms are calculated in the routine slow_terms documented in section 8.13.11 on page [*]. In (93), $ V^{n+1}$ denotes the transport on the new and $ U^n$ and $ V^n$ the transports on the old time level.

The Coriolis term $ fV$ for the subsequent $ U$-momentum is also calculated here, by directly interpolating the $ U$-transports to the U-points or by a method suggested by Espelid et al. (2000) which takes the varying water depths into account.

Some provisions for proper behaviour of the $ V$-transports when GETM runs as slice model are made as well, see section 3.2 on page [*]. USES:

    use parameters, only: g,rho_0
    use domain, only: imin,imax,jmin,jmax
    use domain, only: H,au,av,min_depth,dry_v,Cori,coru
 #if defined(SPHERICAL) || defined(CURVILINEAR)
    use domain, only: dyv,arud1,dxx,dyc
    use m2d, only: U
 #else
    use domain, only: dy
 #endif
    use m2d, only: dtm
    use variables_2d, only: D,z,VEx,V,DV,fU,SlVx,Slrv,rv,fV,DU
    use getm_timers,  only: tic, toc, TIM_MOMENTUMH
    use halo_zones, only : update_2d_halo,wait_halo,V_TAG
    IMPLICIT NONE
INPUT PARAMETERS:
    REALTYPE, intent(in)                :: tausy(E2DFIELD),airp(E2DFIELD)
LOCAL VARIABLES:
    integer                   :: i,j
    REALTYPE                  :: zp,zm,zy,tausv,Slr,Vloc
    REALTYPE                  :: gamma=rho_0*g
    REALTYPE                  :: cord_curv=_ZERO_
    REALTYPE                  :: gammai

kklingbe 2017-10-02