New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
dynstcor.F90 in branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/DYN – NEMO

source: branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynstcor.F90 @ 7354

Last change on this file since 7354 was 7354, checked in by emanuelaclementi, 7 years ago

#1805 corrections in 2016/dev_INGV_UKMO_2016

File size: 3.2 KB
Line 
1MODULE dynstcor
2   !!======================================================================
3   !!                       ***  MODULE  dynstcor  ***
4   !! Ocean dynamics: Stokes-Coriolis effect.
5   !!
6   !!======================================================================
7   !! History :  0.1  !  2012-10  (Oyvind Breivik)
8   !!----------------------------------------------------------------------
9   !! dyn_stcor        : Add the Stokes-Coriolis forcing to the momentum equation
10   !!----------------------------------------------------------------------
11   USE oce              ! ocean dynamics and tracers
12   USE dom_oce          ! ocean space and time domain
13   USE in_out_manager   ! I/O manager
14   USE lib_mpp          ! distributed memory computing
15   USE prtctl           ! Print control
16   USE phycst
17   USE lbclnk
18   USE wrk_nemo         ! Memory Allocation
19   USE sbcmod           ! Access to ln_stcor (sbc_oce) and wave parameters (sbc_wave)
20   USE sbcwave          ! Wave module
21   USE timing          ! Timing
22
23   IMPLICIT NONE
24   PRIVATE
25
26   !! * Routine accessibility
27   PUBLIC dyn_stcor      ! routine called by step.F90
28
29   !! * Substitutions
30#  include "vectopt_loop_substitute.h90"
31   !!----------------------------------------------------------------------
32   !! NEMO/OPA 3.6 , NEMO Consortium (2010)
33   !! $Id:$
34   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
35   !!----------------------------------------------------------------------
36 CONTAINS
37
38   SUBROUTINE dyn_stcor( kt )
39      !!----------------------------------------------------------------------
40      !!                  ***  ROUTINE dyn_stcor ***
41      !!
42      !! ** Purpose:  Add Stokes-Coriolis forcing to horizontal momentum equation.
43      !!
44      !! ** History:  3.4  !   2012-10  (O. Breivik)   Initial version
45      !!              3.6  !   2014-10  (R. Benshila)
46      !!----------------------------------------------------------------------
47      INTEGER, INTENT( in ) ::   kt  ! ocean time-step index
48      !!
49      INTEGER  ::  ji, jj, jk        ! dummy loop indices
50      REAL(wp) :: zx1, zx2, zy1, zy2
51      !!----------------------------------------------------------------------
52      !
53      IF( nn_timing == 1 )  CALL timing_start('dyn_stcor')
54      !
55      IF( kt == nit000 ) THEN
56         IF(lwp) WRITE(numout,*)
57         IF(lwp) WRITE(numout,*) 'dyn_stcor : time stepping'
58         IF(lwp) WRITE(numout,*) '~~~~~~~'
59      ENDIF
60
61      !
62      ! Update velocity tendencies ua, va by adding the Stokes-Coriolis velocities
63      !
64      DO jk = 1, jpkm1
65         DO jj = 2, jpjm1
66            DO ji = 2, jpim1
67               zy1 = ff(ji  ,jj-1) * ( vsd3d(ji  ,jj-1,jk) + vsd3d(ji+1,jj-1,jk) )
68               zy2 = ff(ji  ,jj  ) * ( vsd3d(ji  ,jj  ,jk) + vsd3d(ji+1,jj  ,jk) )
69               zx1 = ff(ji-1,jj  ) * ( usd3d(ji-1,jj  ,jk) + usd3d(ji-1,jj+1,jk) )
70               zx2 = ff(ji  ,jj  ) * ( usd3d(ji  ,jj  ,jk) + usd3d(ji  ,jj+1,jk) )
71
72               ua(ji,jj,jk) = ua(ji,jj,jk) + 0.25 * ( zy1 + zy2 ) *umask(ji,jj,jk)
73               va(ji,jj,jk) = va(ji,jj,jk) - 0.25 * ( zx1 + zx2 ) *vmask(ji,jj,jk)
74            ENDDO
75         ENDDO
76      ENDDO
77      !
78      IF( nn_timing == 1 )  CALL timing_stop('dyn_stcor')
79      !
80   END SUBROUTINE dyn_stcor
81
82END MODULE dynstcor
Note: See TracBrowser for help on using the repository browser.