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.
dynvor.F90 in trunk/NEMO/OPA_SRC/DYN – NEMO

source: trunk/NEMO/OPA_SRC/DYN/dynvor.F90 @ 31

Last change on this file since 31 was 3, checked in by opalod, 20 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 20.1 KB
Line 
1MODULE dynvor
2   !!======================================================================
3   !!                       ***  MODULE  dynvor  ***
4   !! Ocean dynamics: Update the momentum trend with the relative and
5   !!                 planetary vorticity trends
6   !!======================================================================
7
8   !!----------------------------------------------------------------------
9   !!   dyn_vor_enstrophy :  enstrophy conserving scheme (ln_dynvor_ens=T)
10   !!   dyn_vor_energy    :  energy conserving scheme    (ln_dynvor_ene=T)
11   !!   dyn_vor_mixed     :  mixed enstrophy/energy conserving (ln_dynvor_mix=T)
12   !!   dyn_vor_ctl       : control of the different vorticity option
13   !!----------------------------------------------------------------------
14   !! * Modules used
15   USE oce             ! ocean dynamics and tracers
16   USE dom_oce         ! ocean space and time domain
17   USE in_out_manager  ! I/O manager
18   USE trddyn_oce     ! ocean momentum trends
19
20   IMPLICIT NONE
21   PRIVATE
22
23   !! * Routine accessibility
24   PUBLIC dyn_vor_enstrophy      ! routine called by step.F90
25   PUBLIC dyn_vor_energy         ! routine called by step.F90
26   PUBLIC dyn_vor_mixed          ! routine called by step.F90
27
28   !! * Shared module variables
29   LOGICAL, PUBLIC ::   ln_dynvor_ene = .FALSE.   ! energy conserving scheme
30   LOGICAL, PUBLIC ::   ln_dynvor_ens = .TRUE.    ! enstrophy conserving scheme
31   LOGICAL, PUBLIC ::   ln_dynvor_mix = .FALSE.   ! mixed scheme
32
33   !! * Substitutions
34#  include "domzgr_substitute.h90"
35#  include "vectopt_loop_substitute.h90"
36   !!----------------------------------------------------------------------
37   !!   OPA 9.0 , LODYC-IPSL  (2003)
38   !!----------------------------------------------------------------------
39
40CONTAINS
41
42   SUBROUTINE dyn_vor_energy( kt )
43      !!----------------------------------------------------------------------
44      !!                  ***  ROUTINE dyn_vor  ***
45      !!
46      !! ** Purpose :   Compute the now total vorticity trend and add it to
47      !!      the general trend of the momentum equation.
48      !!
49      !! ** Method  :   Trend evaluated using now fields (centered in time)
50      !!      and the Sadourny (1975) flux form formulation : conserves the
51      !!      horizontal kinetic energy.
52      !!      The trend of the vorticity term is given by:
53      !!       * s-coordinate (lk_sco=T), the e3. are inside the derivatives:
54      !!          voru = 1/e1u  mj-1[ (rotn+f)/e3f  mi(e1v*e3v vn) ]
55      !!          vorv = 1/e2v  mi-1[ (rotn+f)/e3f  mj(e2u*e3u un) ]
56      !!       * z-coordinate (default key), e3t=e3u=e3v, the trend becomes:
57      !!          voru = 1/e1u  mj-1[ (rotn+f)  mi(e1v vn) ]
58      !!          vorv = 1/e2v  mi-1[ (rotn+f)  mj(e2u un) ]
59      !!      Add this trend to the general momentum trend (ua,va):
60      !!          (ua,va) = (ua,va) + ( voru , vorv )
61      !!
62      !! ** Action : - Update (ua,va) with the now vorticity term trend
63      !!             - save the trends in (utrd,vtrd) in 2 parts (relative
64      !!               and planetary vorticity trends) ('key_trddyn')
65      !!
66      !! References :
67      !!      Sadourny, r., 1975, j. atmos. sciences, 32, 680-689.
68      !! History :
69      !!   5.0  !  91-11  (G. Madec)  Original code
70      !!   6.0  !  96-01  (G. Madec)  s-coord, suppress work arrays
71      !!   8.5  !  02-08  (G. Madec)  F90: Free form and module
72      !!----------------------------------------------------------------------
73      !! * Arguments
74      INTEGER, INTENT( in ) ::   kt         ! ocean time-step index
75
76      !! * Local declarations
77      INTEGER ::   ji, jj, jk               ! dummy loop indices
78      REAL(wp) ::   &
79         zfact2, zua, zva,               &  ! temporary scalars
80         zx1, zx2, zy1, zy2                 !    "         "
81      REAL(wp), DIMENSION(jpi,jpj) ::   &
82         zwx, zwy, zwz                      ! temporary workspace
83#if defined key_trddyn
84      REAL(wp) ::   &
85         zcu, zcv, zce3                     !    "         "
86#endif
87      !!----------------------------------------------------------------------
88
89      IF( kt == nit000 )   CALL dyn_vor_ctl            ! Check options
90
91      ! Local constant initialization
92      zfact2 = 0.5 * 0.5
93     
94      !                                                ! ===============
95      DO jk = 1, jpkm1                                 ! Horizontal slab
96         !                                             ! ===============
97         
98         ! Potential vorticity and horizontal fluxes
99         ! -----------------------------------------
100         IF( lk_sco ) THEN
101            zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) / fse3f(:,:,jk)
102            zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk)
103            zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk)
104         ELSE
105            zwz(:,:) = rotn(:,:,jk) + ff(:,:)
106            zwx(:,:) = e2u(:,:) * un(:,:,jk)
107            zwy(:,:) = e1v(:,:) * vn(:,:,jk)
108         ENDIF
109
110         ! Compute and add the vorticity term trend
111         ! ----------------------------------------
112         DO jj = 2, jpjm1
113            DO ji = fs_2, fs_jpim1   ! vector opt.
114               zy1 = zwy(ji,jj-1) + zwy(ji+1,jj-1)
115               zy2 = zwy(ji,jj  ) + zwy(ji+1,jj  )
116               zx1 = zwx(ji-1,jj) + zwx(ji-1,jj+1)
117               zx2 = zwx(ji  ,jj) + zwx(ji  ,jj+1)
118               zua = zfact2 / e1u(ji,jj) * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 )
119               zva =-zfact2 / e2v(ji,jj) * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 )
120               ua(ji,jj,jk) = ua(ji,jj,jk) + zua
121               va(ji,jj,jk) = va(ji,jj,jk) + zva
122#   if defined key_trddyn
123#      if defined key_s_coord
124               zce3= ff(ji,jj) / fse3f(ji,jj,jk)
125               zcu = zfact2 / e1u(ji,jj) * ( ff(ji  ,jj-1) / fse3f(ji,jj-1,jk) * zy1 + zce3 * zy2 )
126               zcv =-zfact2 / e2v(ji,jj) * ( ff(ji-1,jj  ) / fse3f(ji-1,jj,jk) * zx1 + zce3 * zx2 )
127#      else
128               zcu = zfact2 / e1u(ji,jj) * ( ff(ji  ,jj-1) * zy1 + ff(ji,jj) * zy2 )
129               zcv =-zfact2 / e2v(ji,jj) * ( ff(ji-1,jj  ) * zx1 + ff(ji,jj) * zx2 )
130#      endif
131               utrd(ji,jj,jk,3) = zua - zcu
132               vtrd(ji,jj,jk,3) = zva - zcv
133               utrd(ji,jj,jk,4) = zcu
134               vtrd(ji,jj,jk,4) = zcv
135#   endif
136            END DO 
137         END DO 
138         !                                             ! ===============
139      END DO                                           !   End of slab
140      !                                                ! ===============
141
142      IF( l_ctl .AND. lwp ) THEN         ! print sum trends (used for debugging)
143         zua = SUM( ua(2:jpim1,2:jpjm1,1:jpkm1) * umask(2:jpim1,2:jpjm1,1:jpkm1) )
144         zva = SUM( va(2:jpim1,2:jpjm1,1:jpkm1) * vmask(2:jpim1,2:jpjm1,1:jpkm1) )
145         WRITE(numout,*) ' vor  - Ua: ', zua-u_ctl, ' Va: ', zva-v_ctl
146         u_ctl = zua   ;   v_ctl = zva
147      ENDIF
148
149   END SUBROUTINE dyn_vor_energy
150
151
152   SUBROUTINE dyn_vor_mixed( kt )
153      !!----------------------------------------------------------------------
154      !!                 ***  ROUTINE dyn_vor_mixed  ***
155      !!
156      !! ** Purpose :   Compute the now total vorticity trend and add it to
157      !!      the general trend of the momentum equation.
158      !!
159      !! ** Method  :   Trend evaluated using now fields (centered in time)
160      !!      Mixte formulation : conserves the potential enstrophy of a hori-
161      !!      zontally non-divergent flow for (rotzu x uh), the relative vor-
162      !!      ticity term and the horizontal kinetic energy for (f x uh), the
163      !!      coriolis term. the now trend of the vorticity term is given by:
164      !!       * s-coordinate (lk_sco=T), the e3. are inside the derivatives:
165      !!          voru = 1/e1u  mj-1(rotn/e3f) mj-1[ mi(e1v*e3v vn) ]
166      !!              +1/e1u  mj-1[ f/e3f          mi(e1v*e3v vn) ]
167      !!          vorv = 1/e2v  mi-1(rotn/e3f) mi-1[ mj(e2u*e3u un) ]
168      !!              +1/e2v  mi-1[ f/e3f          mj(e2u*e3u un) ]
169      !!       * z-coordinate (default key), e3t=e3u=e3v, the trend becomes:
170      !!          voru = 1/e1u  mj-1(rotn) mj-1[ mi(e1v vn) ]
171      !!              +1/e1u  mj-1[ f          mi(e1v vn) ]
172      !!          vorv = 1/e2v  mi-1(rotn) mi-1[ mj(e2u un) ]
173      !!              +1/e2v  mi-1[ f          mj(e2u un) ]
174      !!      Add this now trend to the general momentum trend (ua,va):
175      !!          (ua,va) = (ua,va) + ( voru , vorv )
176      !!
177      !! ** Action : - Update (ua,va) arrays with the now vorticity term trend
178      !!             - Save the trends in (utrd,vtrd) in 2 parts (relative
179      !!               and planetary vorticity trends) ('key_trddyn')
180      !!
181      !! References :
182      !!      Sadourny, r., 1975, j. atmos. sciences, 32, 680-689.
183      !! History :
184      !!   5.0  !  91-11  (G. Madec) Original code, enstrophy-energy-combined schemes
185      !!   6.0  !  96-01  (G. Madec) s-coord, suppress work arrays
186      !!   8.5  !  02-08  (G. Madec)  F90: Free form and module
187      !!----------------------------------------------------------------------
188      !! * Arguments
189      INTEGER, INTENT( in ) ::   kt         ! ocean timestep index
190
191      !! * Local declarations
192      INTEGER ::   ji, jj, jk               ! dummy loop indices
193      REAL(wp) ::   &
194         zfact1, zfact2, zua, zva,       &  ! temporary scalars
195         zcua, zcva, zx1, zx2, zy1, zy2
196      REAL(wp), DIMENSION(jpi,jpj) ::   &
197         zwx, zwy, zwz, zww                 ! temporary workspace
198      !!----------------------------------------------------------------------
199
200      IF( kt == nit000 )   CALL dyn_vor_ctl            ! Check options
201
202      ! Local constant initialization
203      zfact1 = 0.5 * 0.25
204      zfact2 = 0.5 * 0.5
205
206      !                                                ! ===============
207      DO jk = 1, jpkm1                                 ! Horizontal slab
208         !                                             ! ===============
209
210         ! Relative and planetary potential vorticity and horizontal fluxes
211         ! ----------------------------------------------------------------
212         IF( lk_sco ) THEN       
213            zwz(:,:) = ff  (:,:)    / fse3f(:,:,jk)
214            zww(:,:) = rotn(:,:,jk) / fse3f(:,:,jk)
215            zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk)
216            zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk)
217         ELSE
218            zwz(:,:) = ff(:,:)
219            zww(:,:) = rotn(:,:,jk)
220            zwx(:,:) = e2u(:,:) * un(:,:,jk)
221            zwy(:,:) = e1v(:,:) * vn(:,:,jk)
222         ENDIF
223
224         ! Compute and add the vorticity term trend
225         ! ----------------------------------------
226         DO jj = 2, jpjm1
227            DO ji = fs_2, fs_jpim1   ! vector opt.
228               zy1 = ( zwy(ji,jj-1) + zwy(ji+1,jj-1) ) / e1u(ji,jj)
229               zy2 = ( zwy(ji,jj  ) + zwy(ji+1,jj  ) ) / e1u(ji,jj)
230               zx1 = ( zwx(ji-1,jj) + zwx(ji-1,jj+1) ) / e2v(ji,jj)
231               zx2 = ( zwx(ji  ,jj) + zwx(ji  ,jj+1) ) / e2v(ji,jj)
232               ! enstrophy conserving formulation for relative vorticity term
233               zua = zfact1 * ( zww(ji  ,jj-1) + zww(ji,jj) ) * ( zy1 + zy2 )
234               zva =-zfact1 * ( zww(ji-1,jj  ) + zww(ji,jj) ) * ( zx1 + zx2 )
235               ! energy conserving formulation for planetary vorticity term
236               zcua = zfact2 * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 )
237               zcva =-zfact2 * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 )
238
239               ua(ji,jj,jk) = ua(ji,jj,jk) + zcua + zua
240               va(ji,jj,jk) = va(ji,jj,jk) + zcva + zva
241#   if defined key_trddyn
242               utrd(ji,jj,jk,3) = zua
243               vtrd(ji,jj,jk,3) = zva
244               utrd(ji,jj,jk,4) = zcua
245               vtrd(ji,jj,jk,4) = zcva
246#   endif
247            END DO 
248         END DO 
249         !                                             ! ===============
250      END DO                                           !   End of slab
251      !                                                ! ===============
252
253      IF( l_ctl .AND. lwp ) THEN         ! print sum trends (used for debugging)
254         zua = SUM( ua(2:jpim1,2:jpjm1,1:jpkm1) * umask(2:jpim1,2:jpjm1,1:jpkm1) )
255         zva = SUM( va(2:jpim1,2:jpjm1,1:jpkm1) * vmask(2:jpim1,2:jpjm1,1:jpkm1) )
256         WRITE(numout,*) ' vor  - Ua: ', zua-u_ctl, ' Va: ', zva-v_ctl
257         u_ctl = zua   ;   v_ctl = zva
258      ENDIF
259
260   END SUBROUTINE dyn_vor_mixed
261
262
263   SUBROUTINE dyn_vor_enstrophy( kt )
264      !!----------------------------------------------------------------------
265      !!                  ***  ROUTINE dyn_vor_enstrophy  ***
266      !!
267      !! ** Purpose :   Compute the now total vorticity trend and add it to
268      !!      the general trend of the momentum equation.
269      !!
270      !! ** Method  :   Trend evaluated using now fields (centered in time)
271      !!      and the Sadourny (1975) flux FORM formulation : conserves the
272      !!      potential enstrophy of a horizontally non-divergent flow. the
273      !!      trend of the vorticity term is given by:
274      !!       * s-coordinate (lk_sco=T), the e3. are inside the derivative:
275      !!          voru = 1/e1u  mj-1[ (rotn+f)/e3f ]  mj-1[ mi(e1v*e3v vn) ]
276      !!          vorv = 1/e2v  mi-1[ (rotn+f)/e3f ]  mi-1[ mj(e2u*e3u un) ]
277      !!       * z-coordinate (default key), e3t=e3u=e3v, the trend becomes:
278      !!          voru = 1/e1u  mj-1[ rotn+f ]  mj-1[ mi(e1v vn) ]
279      !!          vorv = 1/e2v  mi-1[ rotn+f ]  mi-1[ mj(e2u un) ]
280      !!      Add this trend to the general momentum trend (ua,va):
281      !!          (ua,va) = (ua,va) + ( voru , vorv )
282      !!
283      !! ** Action : - Update (ua,va) arrays with the now vorticity term trend
284      !!             - Save the trends in (utrd,vtrd) in 2 parts (relative
285      !!               and planetary vorticity trends) ('key_trddyn')
286      !!
287      !! References :
288      !!      Sadourny, r., 1975, j. atmos. sciences, 32, 680-689.
289      !! History :
290      !!   5.0  !  91-11  (G. Madec)  Original code
291      !!   6.0  !  96-01  (G. Madec)  s-coord, suppress work arrays
292      !!   8.5  !  02-08  (G. Madec)  F90: Free form and module
293      !!----------------------------------------------------------------------
294      !! * modules used
295      USE oce, ONLY:   zwx  => ta,   & ! use ta as 3D workspace
296                       zwy  => sa      ! use sa as 3D workspace
297      !! * Arguments
298      INTEGER, INTENT( in ) ::   kt    ! ocean timestep
299
300      !! * Local declarations
301      INTEGER ::   ji, jj, jk          ! dummy loop indices
302      REAL(wp) ::   &
303         zfact1, zua, zva, zuav, zvau  ! temporary scalars
304      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   &
305         zwz                           ! temporary workspace
306#   if defined key_trddyn
307      REAL(wp) ::   &
308         zcu, zcv, zce3                ! temporary scalars
309#   endif
310      !!----------------------------------------------------------------------
311     
312      IF( kt == nit000 )   CALL dyn_vor_ctl            ! Check options
313
314      ! Local constant initialization
315      zfact1 = 0.5 * 0.25
316
317      !                                                ! ===============
318      DO jk = 1, jpkm1                                 ! Horizontal slab
319         !                                             ! ===============
320
321         ! Potential vorticity and horizontal fluxes
322         ! -----------------------------------------
323         IF( lk_sco ) THEN
324            DO jj = 1, jpj                      ! caution: don't use (:,:) for this loop
325               DO ji = 1, jpi                   ! it causes optimization problems on NEC in auto-tasking
326                  zwz(ji,jj,jk) = ( rotn(ji,jj,jk) + ff(ji,jj) ) / fse3f(ji,jj,jk)
327                  zwx(ji,jj,jk) = e2u(ji,jj) * fse3u(ji,jj,jk) * un(ji,jj,jk)
328                  zwy(ji,jj,jk) = e1v(ji,jj) * fse3v(ji,jj,jk) * vn(ji,jj,jk)
329               END DO
330            END DO
331         ELSE
332            DO jj = 1, jpj                      ! caution: don't use (:,:) for this loop
333               DO ji = 1, jpi                   ! it causes optimization problems on NEC in auto-tasking
334                  zwz(ji,jj,jk) = rotn(ji,jj,jk) + ff(ji,jj)
335                  zwx(ji,jj,jk) = e2u(ji,jj) * un(ji,jj,jk)
336                  zwy(ji,jj,jk) = e1v(ji,jj) * vn(ji,jj,jk)
337               END DO
338            END DO
339         ENDIF
340
341
342         ! Compute and add the vorticity term trend
343         ! ----------------------------------------
344         DO jj = 2, jpjm1
345            DO ji = fs_2, fs_jpim1   ! vector opt.
346               zuav = zfact1 / e1u(ji,jj) * ( zwy(ji  ,jj-1,jk) + zwy(ji+1,jj-1,jk)   &
347                                            + zwy(ji  ,jj  ,jk) + zwy(ji+1,jj  ,jk) )
348               zvau =-zfact1 / e2v(ji,jj) * ( zwx(ji-1,jj  ,jk) + zwx(ji-1,jj+1,jk)   &
349                                            + zwx(ji  ,jj  ,jk) + zwx(ji  ,jj+1,jk) )
350
351               zua  = zuav * ( zwz(ji  ,jj-1,jk) + zwz(ji,jj,jk) )
352               zva  = zvau * ( zwz(ji-1,jj  ,jk) + zwz(ji,jj,jk) )
353
354               ua(ji,jj,jk) = ua(ji,jj,jk) + zua
355               va(ji,jj,jk) = va(ji,jj,jk) + zva
356
357#   if defined key_trddyn
358#      if defined key_s_coord
359               zce3 = ff(ji,jj) / fse3f(ji,jj,jk)
360               zcu  = zuav * ( ff(ji  ,jj-1) / fse3f(ji  ,jj-1,jk) + zce3 )
361               zcv  = zvau * ( ff(ji-1,jj  ) / fse3f(ji-1,jj  ,jk) + zce3 )
362#      else
363               zcu = zuav * ( ff(ji  ,jj-1) + ff(ji,jj) )
364               zcv = zvau * ( ff(ji-1,jj  ) + ff(ji,jj) )
365#      endif
366
367#      if defined key_trddyn_new
368               utrd(ji,jj,jk,2) = utrd(ji,jj,jk,2) + zua - zcu
369               vtrd(ji,jj,jk,3) = vtrd(ji,jj,jk,3) + zva - zcv
370#      else
371               utrd(ji,jj,jk,3) = zua - zcu
372               vtrd(ji,jj,jk,3) = zva - zcv
373#      endif
374               utrd(ji,jj,jk,4) = zcu
375               vtrd(ji,jj,jk,4) = zcv
376#   endif
377            END DO 
378         END DO 
379         !                                             ! ===============
380      END DO                                           !   End of slab
381      !                                                ! ===============
382
383      IF( l_ctl .AND. lwp ) THEN         ! print sum trends (used for debugging)
384         zua = SUM( ua(2:jpim1,2:jpjm1,1:jpkm1) * umask(2:jpim1,2:jpjm1,1:jpkm1) )
385         zva = SUM( va(2:jpim1,2:jpjm1,1:jpkm1) * vmask(2:jpim1,2:jpjm1,1:jpkm1) )
386         WRITE(numout,*) ' vor  - Ua: ', zua-u_ctl, ' Va: ', zva-v_ctl
387         u_ctl = zua   ;   v_ctl = zva
388      ENDIF
389
390   END SUBROUTINE dyn_vor_enstrophy
391
392
393   SUBROUTINE dyn_vor_ctl
394      !!---------------------------------------------------------------------
395      !!                  ***  ROUTINE dyn_vor_ctl  ***
396      !!
397      !! ** Purpose :   Control the consistency between cpp options for
398      !!      tracer advection schemes
399      !!
400      !! History :
401      !!   9.0  !  03-08  (G. Madec)  Original code
402      !!----------------------------------------------------------------------
403      !! * Local declarations
404      INTEGER ::   ioptio = 0      ! temporary integer
405
406      NAMELIST/nam_dynvor/ ln_dynvor_ens, ln_dynvor_ene, ln_dynvor_mix
407      !!----------------------------------------------------------------------
408
409      ! Read Namelist nam_dynvor : Vorticity scheme options
410      ! ------------------------
411      REWIND ( numnam )
412      READ   ( numnam, nam_dynvor )
413
414      ! Control of vorticity scheme options
415      ! -----------------------------------
416      IF( ln_dynvor_ens .AND. lwp ) THEN
417         WRITE(numout,*)
418         WRITE(numout,*) 'dyn_vor_enstrophy : vorticity term : enstrophy conserving scheme'
419         WRITE(numout,*) '~~~~~~~~~~~~~~~~~~'
420         ioptio = ioptio + 1
421      ENDIF
422      IF( ln_dynvor_ene .AND. lwp ) THEN
423         WRITE(numout,*)
424         WRITE(numout,*) 'dyn_vor_energy : vorticity term : energy conserving scheme'
425         WRITE(numout,*) '~~~~~~~~~~~~~~ '
426         ioptio = ioptio + 1
427      ENDIF
428      IF( ln_dynvor_mix .AND. lwp ) THEN
429         WRITE(numout,*)
430         WRITE(numout,*) 'dyn_vor_mixed : vorticity term : mixed enstrophy/energy conserving scheme'
431         WRITE(numout,*) '~~~~~~~~~~~~~ '
432         ioptio = ioptio + 1
433      ENDIF
434      IF ( ioptio /= 1 .AND. .NOT. lk_esopa ) THEN
435          WRITE(numout,cform_err)
436          IF(lwp) WRITE(numout,*) ' use ONE and ONLY one vorticity scheme'
437          nstop = nstop + 1
438      ENDIF
439
440   END SUBROUTINE dyn_vor_ctl
441
442!!==============================================================================
443END MODULE dynvor
Note: See TracBrowser for help on using the repository browser.