source: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/C1D/dyncor_c1d.F90 @ 11001

Last change on this file since 11001 was 11001, checked in by davestorkey, 2 years ago

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : C1D and step.F90. Passes SETTE. Compiles with key_c1d.

  • Property svn:keywords set to Id
File size: 5.1 KB
Line 
1MODULE dyncor_c1d
2   !!======================================================================
3   !!                     ***  MODULE  dyncor_c1d  ***
4   !! Ocean Dynamics :   Coriolis term in 1D configuration
5   !!=====================================================================
6   !! History :  2.0  !  2004-09  (C. Ethe)  Original code
7   !!            3.0  !  2008-04  (G. Madec)  style only
8   !!----------------------------------------------------------------------
9#if defined key_c1d
10   !!----------------------------------------------------------------------
11   !!   'key_c1d'                                          1D Configuration
12   !!----------------------------------------------------------------------
13   !!   cor_c1d       : Coriolis factor at T-point (1D configuration)
14   !!   dyn_cor_c1d   : vorticity trend due to Coriolis at T-point
15   !!----------------------------------------------------------------------
16   USE oce            ! ocean dynamics and tracers
17   USE dom_oce        ! ocean space and time domain
18   USE phycst         ! physical constants
19   !
20   USE in_out_manager ! I/O manager
21   USE prtctl         ! Print control
22
23   USE sbcwave        ! Surface Waves (add Stokes-Coriolis force)
24   USE sbc_oce , ONLY : ln_stcor    ! use Stoke-Coriolis force
25   
26   IMPLICIT NONE
27   PRIVATE
28
29   PUBLIC   cor_c1d      ! called by nemogcm.F90
30   PUBLIC   dyn_cor_c1d  ! called by step1d.F90
31
32   !! * Substitutions
33#  include "vectopt_loop_substitute.h90"
34   !!----------------------------------------------------------------------
35   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
36   !! $Id$
37   !! Software governed by the CeCILL license (see ./LICENSE)
38   !!----------------------------------------------------------------------
39CONTAINS
40
41   SUBROUTINE cor_c1d
42      !!----------------------------------------------------------------------
43      !!                   ***  ROUTINE cor_c1d  ***
44      !!
45      !! ** Purpose : set the Coriolis factor at T-point
46      !!----------------------------------------------------------------------
47      REAL(wp) ::   zphi0, zbeta, zf0   ! local scalars
48      !!----------------------------------------------------------------------
49
50      IF(lwp) WRITE(numout,*)
51      IF(lwp) WRITE(numout,*) 'cor_c1d : Coriolis factor at T-point'
52      IF(lwp) WRITE(numout,*) '~~~~~~~'
53
54      !
55   END SUBROUTINE cor_c1d
56
57
58   SUBROUTINE dyn_cor_c1d( kt, Kmm, puu, pvv, Krhs )
59      !!----------------------------------------------------------------------
60      !!                   ***  ROUTINE dyn_cor_c1d  ***
61      !!
62      !! ** Purpose :   Compute the now Coriolis trend and add it to
63      !!               the general trend of the momentum equation in 1D case.
64      !!----------------------------------------------------------------------
65      INTEGER                             , INTENT(in   ) ::   kt        ! ocean time-step index
66      INTEGER                             , INTENT(in   ) ::   Kmm, Krhs ! ocean time level indices
67      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) ::   puu, pvv  ! ocean velocities and RHS of momentum equation
68      !!
69      INTEGER ::   ji, jj, jk   ! dummy loop indices
70      !!----------------------------------------------------------------------
71      !
72      IF( kt == nit000 ) THEN
73         IF(lwp) WRITE(numout,*)
74         IF(lwp) WRITE(numout,*) 'dyn_cor_c1d : total vorticity trend in 1D'
75         IF(lwp) WRITE(numout,*) '~~~~~~~~~~'
76      ENDIF
77      !
78      IF( ln_stcor ) THEN
79         DO jk = 1, jpkm1
80            DO jj = 2, jpjm1
81               DO ji = fs_2, fs_jpim1   ! vector opt.
82                  puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) + ff_t(ji,jj) * (pvv(ji,jj,jk,Kmm) + vsd(ji,jj,jk))
83                  pvv(ji,jj,jk,Krhs) = pvv(ji,jj,jk,Krhs) - ff_t(ji,jj) * (puu(ji,jj,jk,Kmm) + usd(ji,jj,jk))
84               END DO
85            END DO
86         END DO
87      ELSE
88         DO jk = 1, jpkm1
89            DO jj = 2, jpjm1
90               DO ji = fs_2, fs_jpim1   ! vector opt.
91                  puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) + ff_t(ji,jj) * pvv(ji,jj,jk,Kmm)
92                  pvv(ji,jj,jk,Krhs) = pvv(ji,jj,jk,Krhs) - ff_t(ji,jj) * puu(ji,jj,jk,Kmm)
93               END DO
94            END DO
95         END DO
96      END IF
97     
98      !
99      IF(ln_ctl)   CALL prt_ctl( tab3d_1=puu(:,:,:,Krhs), clinfo1=' cor  - Ua: ', mask1=umask,  &
100         &                       tab3d_2=pvv(:,:,:,Krhs), clinfo2=' Va: '       , mask2=vmask )
101      !
102   END SUBROUTINE dyn_cor_c1d
103
104#else
105   !!----------------------------------------------------------------------
106   !!   Default key                                     NO 1D Configuration
107   !!----------------------------------------------------------------------
108CONTAINS
109   SUBROUTINE cor_c1d              ! Empty routine
110       IMPLICIT NONE
111   END SUBROUTINE cor_c1d   
112   SUBROUTINE dyn_cor_c1d ( kt )      ! Empty routine
113      IMPLICIT NONE
114      INTEGER, INTENT( in ) :: kt
115      WRITE(*,*) 'dyn_cor_c1d: You should not have seen this print! error?', kt
116   END SUBROUTINE dyn_cor_c1d
117#endif
118
119   !!=====================================================================
120END MODULE dyncor_c1d
Note: See TracBrowser for help on using the repository browser.