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

source: trunk/NEMO/OPA_SRC/DYN/dynhpg.F90 @ 216

Last change on this file since 216 was 216, checked in by opalod, 19 years ago

CT : UPDATE151 : New trends organization

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 19.5 KB
Line 
1MODULE dynhpg
2   !!======================================================================
3   !!                       ***  MODULE  dynhpg  ***
4   !! Ocean dynamics:  hydrostatic pressure gradient trend
5   !!======================================================================
6
7   !!----------------------------------------------------------------------
8   !!   dyn_hpg      : update the momentum trend with the horizontal
9   !!                  gradient of the hydrostatic pressure
10   !!
11   !!   default case : use of 3D work arrays (vector opt. available)
12   !!   key_s_coord       : s-coordinate
13   !!   key_partial_steps : z-coordinate with partial steps
14   !!   default key       : z-coordinate
15   !!----------------------------------------------------------------------
16   !! * Modules used
17   USE oce             ! ocean dynamics and tracers
18   USE dom_oce         ! ocean space and time domain
19   USE phycst          ! physical constants
20   USE in_out_manager  ! I/O manager
21   USE trdmod          ! ocean dynamics trends
22   USE trdmod_oce      ! ocean variables trends
23
24   IMPLICIT NONE
25   PRIVATE
26
27   !! * Accessibility
28   PUBLIC dyn_hpg                ! routine called by step.F90
29
30#if defined key_autotasking
31   !!----------------------------------------------------------------------
32   !!   'key_autotasking' :                             j-k-i loop (j-slab)
33   !!----------------------------------------------------------------------
34   LOGICAL, PUBLIC, PARAMETER ::   lk_dynhpg_tsk = .TRUE.    !: autotasked hpg flag
35   LOGICAL, PUBLIC, PARAMETER ::   lk_dynhpg     = .FALSE.   !: vector hpg flag
36#else
37   !!----------------------------------------------------------------------
38   !!   default case :                             k-j-i loop (vector opt.)
39   !!----------------------------------------------------------------------   
40   LOGICAL, PUBLIC, PARAMETER ::   lk_dynhpg_tsk = .FALSE.   !: autotasked hpg flag
41   LOGICAL, PUBLIC, PARAMETER ::   lk_dynhpg     = .TRUE.    !: vector hpg flag
42#endif
43
44   !! * Substitutions
45#  include "domzgr_substitute.h90"
46#  include "vectopt_loop_substitute.h90"
47   !!----------------------------------------------------------------------
48   !!   OPA 9.0 , LODYC-IPSL  (2003)
49   !!----------------------------------------------------------------------
50
51CONTAINS
52
53#if defined key_s_coord
54   !!----------------------------------------------------------------------
55   !!   'key_s_coord' :                                        s-coordinate
56   !!----------------------------------------------------------------------   
57
58   SUBROUTINE dyn_hpg( kt )
59      !!---------------------------------------------------------------------
60      !!                  ***  ROUTINE dyn_hpg  ***
61      !!
62      !! ** Purpose :   Compute the now momentum trend due to the hor. gradient
63      !!      of the hydrostatic pressure. Add it to the general momentum trend.
64      !!
65      !! ** Method  :   The now hydrostatic pressure gradient at a given level
66      !!      jk is computed by taking the vertical integral of the in-situ
67      !!      density gradient along the model level from the suface to that
68      !!      level. s-coordinates ('key_s_coord'): a corrective term is added
69      !!      to the horizontal pressure gradient :
70      !!         zhpi = grav .....  + 1/e1u mi(rhd) di[ grav dep3w ]
71      !!         zhpj = grav .....  + 1/e2v mj(rhd) dj[ grav dep3w ]
72      !!      add it to the general momentum trend (ua,va).
73      !!         ua = ua - 1/e1u * zhpi
74      !!         va = va - 1/e2v * zhpj
75      !!
76      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend
77      !!             - Save the trend in (utrd,vtrd) ('key_trddyn')
78      !!
79      !! History :
80      !!   1.0  !  87-09  (P. Andrich, m.-a. Foujols)  Original code
81      !!        !  91-11  (G. Madec)
82      !!        !  96-01  (G. Madec)  s-coordinates
83      !!        !  97-05  (G. Madec)  split dynber into dynkeg and dynhpg
84      !!   8.5  !  02-08  (G. Madec)  F90: Free form and module, vector opt.
85      !!   9.0  !  04-08  (C. Talandier) New trends organization
86      !!----------------------------------------------------------------------
87      !! * modules used
88      USE oce, ONLY :   zhpi => ta,  &  ! use ta as 3D workspace
89         &              zhpj => sa      ! use sa as 3D workspace
90
91      !! * Arguments
92      INTEGER, INTENT( in ) ::   kt     ! ocean time-step index
93     
94      !! * Local declarations
95      INTEGER ::   ji, jj, jk           ! dummy loop indices
96      REAL(wp) ::   &
97         zcoef0, zcoef1, zuap, zvap     ! temporary scalars
98      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   &
99         ztdua, ztdva                   ! temporary scalars
100      !!----------------------------------------------------------------------
101
102      IF( kt == nit000 ) THEN
103         IF(lwp) WRITE(numout,*)
104         IF(lwp) WRITE(numout,*) 'dyn_hpg : hydrostatic pressure gradient trend'
105         IF(lwp) WRITE(numout,*) '~~~~~~~   s-coordinate case, vector opt. case'
106      ENDIF
107
108      ! Save ua and va trends
109      IF( l_trddyn )   THEN
110         ztdua(:,:,:) = ua(:,:,:) 
111         ztdva(:,:,:) = va(:,:,:) 
112      ENDIF
113
114      ! 0. Local constant initialization
115      ! --------------------------------
116      zcoef0 = - grav * 0.5
117      zuap   = 0.e0
118      zvap   = 0.e0
119
120      ! 1. Surface value
121      ! ----------------
122      DO jj = 2, jpjm1
123         DO ji = fs_2, fs_jpim1   ! vector opt.
124            ! hydrostatic pressure gradient along s-surfaces
125            zhpi(ji,jj,1) = zcoef0 / e1u(ji,jj)   &
126                       * ( fse3w(ji+1,jj,1) * rhd(ji+1,jj,1) - fse3w(ji,jj,1) * rhd(ji,jj,1)  )
127            zhpj(ji,jj,1) = zcoef0 / e2v(ji,jj)   &
128                       * ( fse3w(ji,jj+1,1) * rhd(ji,jj+1,1) - fse3w(ji,jj,1) * rhd(ji,jj,1)  )
129            ! s-coordinate pressure gradient correction
130            zuap = -zcoef0 * ( rhd(ji+1,jj,1) + rhd(ji,jj,1) )   &
131                 * ( fsde3w(ji+1,jj,1) - fsde3w(ji,jj,1) ) / e1u(ji,jj)
132            zvap = -zcoef0 * ( rhd(ji,jj+1,1) + rhd(ji,jj,1) )   &
133                 * ( fsde3w(ji,jj+1,1) - fsde3w(ji,jj,1) ) / e2v(ji,jj)
134            ! add to the general momentum trend
135            ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap
136            va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap
137         END DO 
138      END DO 
139
140      ! 2. interior value (2=<jk=<jpkm1)
141      ! -----------------
142      DO jk = 2, jpkm1
143         DO jj = 2, jpjm1 
144            DO ji = fs_2, fs_jpim1   ! vector opt.
145               ! hydrostatic pressure gradient along s-surfaces
146               zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 / e1u(ji,jj)   &
147                  &           * ( fse3w(ji+1,jj,jk) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) )   &
148                  &              -fse3w(ji  ,jj,jk) * ( rhd(ji  ,jj,jk) + rhd(ji  ,jj,jk-1) )  )
149               zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 / e2v(ji,jj)   &
150                  &           * ( fse3w(ji,jj+1,jk) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) )   &
151                  &              -fse3w(ji,jj  ,jk) * ( rhd(ji,jj,  jk) + rhd(ji,jj  ,jk-1) )  )
152               ! s-coordinate pressure gradient correction
153               zuap = -zcoef0 * ( rhd(ji+1,jj  ,jk) + rhd(ji,jj,jk) )   &
154                    * ( fsde3w(ji+1,jj,jk) - fsde3w(ji,jj,jk) ) / e1u(ji,jj)
155               zvap = -zcoef0 * ( rhd(ji  ,jj+1,jk) + rhd(ji,jj,jk) )   &
156                    * ( fsde3w(ji,jj+1,jk) - fsde3w(ji,jj,jk) ) / e2v(ji,jj)
157               ! add to the general momentum trend
158               ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap
159               va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap
160            END DO
161         END DO
162      END DO
163
164      ! save the hydrostatic pressure gradient trends for diagnostic
165      ! momentum trends
166      IF( l_trddyn )   THEN
167         zhpi(:,:,:) = ua(:,:,:) - ztdua(:,:,:)
168         zhpj(:,:,:) = va(:,:,:) - ztdva(:,:,:)
169         CALL trd_mod(zhpi, zhpj, jpdtdhpg, 'DYN', kt)
170      ENDIF
171
172      IF(l_ctl) THEN         ! print sum trends (used for debugging)
173         zuap = SUM( ua(2:nictl,2:njctl,1:jpkm1) * umask(2:nictl,2:njctl,1:jpkm1) )
174         zvap = SUM( va(2:nictl,2:njctl,1:jpkm1) * vmask(2:nictl,2:njctl,1:jpkm1) )
175         WRITE(numout,*) ' hpg  - Ua: ', zuap-u_ctl, ' Va: ', zvap-v_ctl
176         u_ctl = zuap   ;   v_ctl = zvap
177      ENDIF
178
179   END SUBROUTINE dyn_hpg
180
181#elif defined key_partial_steps
182   !!---------------------------------------------------------------------
183   !!   'key_partial_steps'                     z-coordinate partial steps
184   !!---------------------------------------------------------------------
185
186   SUBROUTINE dyn_hpg( kt )
187      !!---------------------------------------------------------------------
188      !!                 ***  ROUTINE dyn_hpg  ***
189      !!                   
190      !! ** Purpose :   Compute the now momentum trend due to the horizontal
191      !!      gradient of the hydrostatic pressure. Add it to the general
192      !!      momentum trend.
193      !!
194      !! ** Method  :   The now hydrostatic pressure gradient at a given level
195      !!      jk is computed by taking the vertical integral of the in-situ
196      !!      density gradient along the model level from the suface to that
197      !!      level:   zhpi = grav .....
198      !!               zhpj = grav .....
199      !!      add it to the general momentum trend (ua,va).
200      !!            ua = ua - 1/e1u * zhpi
201      !!            va = va - 1/e2v * zhpj
202      !!
203      !! ** Action  : - Update (ua,va) with the now hydrastatic pressure trend
204      !!              - Save the trend in (utrd,vtrd) ('key_trddyn')
205      !!
206      !! History :
207      !!   8.5  !  02-08  (A. Bozec)  Original code
208      !!----------------------------------------------------------------------
209      !! * modules used
210      USE oce, ONLY :   zhpi => ta,  &  ! use ta as 3D workspace
211         &              zhpj => sa      ! use sa as 3D workspace
212
213      !! * Arguments
214      INTEGER, INTENT( in ) ::   kt     ! ocean time-step index
215
216      !! * local declarations
217      INTEGER ::   ji, jj, jk           ! dummy loop indices
218      INTEGER ::   iku, ikv             ! temporary integers
219      REAL(wp) ::   &
220         zcoef0, zcoef1, zuap,       &  ! temporary scalars
221         zcoef2, zcoef3, zvap           !    "         "
222      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   &
223         ztdua, ztdva                   ! temporary scalars
224      !!----------------------------------------------------------------------
225
226      IF( kt == nit000 ) THEN
227         IF(lwp) WRITE(numout,*)
228         IF(lwp) WRITE(numout,*) 'dyn_hpg : hydrostatic pressure gradient trend'
229         IF(lwp) WRITE(numout,*) '~~~~~~~   z-coordinate with partial steps'
230         IF(lwp) WRITE(numout,*) '          vector optimization, no autotasking'
231      ENDIF
232
233      ! Save ua and va trends
234      IF( l_trddyn )   THEN
235         ztdua(:,:,:) = ua(:,:,:) 
236         ztdva(:,:,:) = va(:,:,:) 
237      ENDIF
238
239      ! 0. Local constant initialization
240      ! --------------------------------
241      zcoef0 = - grav * 0.5
242      zuap   = 0.e0
243      zvap   = 0.e0
244
245      ! 1. Surface value
246      ! ----------------
247      DO jj = 2, jpjm1
248         DO ji = fs_2, fs_jpim1   ! vector opt.
249            zcoef1 = zcoef0 * fse3w(ji,jj,1)
250            ! hydrostatic pressure gradient
251            zhpi(ji,jj,1) = zcoef1 * ( rhd(ji+1,jj,1) - rhd(ji,jj,1) ) / e1u(ji,jj)
252            zhpj(ji,jj,1) = zcoef1 * ( rhd(ji,jj+1,1) - rhd(ji,jj,1) ) / e2v(ji,jj)
253            ! add to the general momentum trend
254            ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1)
255            va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1)
256         END DO
257      END DO
258
259      ! 2. interior value (2=<jk=<jpkm1)
260      ! -----------------
261      DO jk = 2, jpkm1
262         DO jj = 2, jpjm1
263            DO ji = fs_2, fs_jpim1   ! vector opt.
264               zcoef1 = zcoef0 * fse3w(ji,jj,jk)
265               ! hydrostatic pressure gradient
266               zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1)   &
267                  &           + zcoef1 * (  ( rhd(ji+1,jj,jk)+rhd(ji+1,jj,jk-1) )   &
268                  &                       - ( rhd(ji  ,jj,jk)+rhd(ji  ,jj,jk-1) )  ) / e1u(ji,jj)
269
270               zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1)   &
271                  &           + zcoef1 * (  ( rhd(ji,jj+1,jk)+rhd(ji,jj+1,jk-1) )   &
272                  &                       - ( rhd(ji,jj,  jk)+rhd(ji,jj  ,jk-1) )  ) / e2v(ji,jj)
273               ! add to the general momentum trend
274               ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk)
275               va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk)
276            END DO
277         END DO
278      END DO
279
280      ! partial steps correction at the last level  (new gradient with  intgrd.F)
281# if defined key_vectopt_loop
282         jj = 1
283         DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling)
284# else
285      DO jj = 2, jpjm1
286         DO ji = 2, jpim1
287# endif
288            iku = MIN ( mbathy(ji,jj), mbathy(ji+1,jj) ) - 1
289            ikv = MIN ( mbathy(ji,jj), mbathy(ji,jj+1) ) - 1
290            zcoef2 = zcoef0 * MIN( fse3w(ji,jj,iku), fse3w(ji+1,jj  ,iku) )
291            zcoef3 = zcoef0 * MIN( fse3w(ji,jj,ikv), fse3w(ji  ,jj+1,ikv) )
292            ! on i-direction
293            IF ( iku > 2 ) THEN
294               ! subtract old value 
295               ua(ji,jj,iku) = ua(ji,jj,iku) - zhpi(ji,jj,iku)
296               ! compute the new one   
297               zhpi (ji,jj,iku) = zhpi(ji,jj,iku-1)   &
298                  + zcoef2 * ( rhd(ji+1,jj,iku-1) - rhd(ji,jj,iku-1) + gru(ji,jj) ) / e1u(ji,jj)
299               ! add the new one to the general momentum trend
300               ua(ji,jj,iku) = ua(ji,jj,iku) + zhpi(ji,jj,iku)
301            ENDIF
302            ! on j-direction
303            IF ( ikv > 2 ) THEN
304               ! subtract old value 
305               va(ji,jj,ikv) = va(ji,jj,ikv) - zhpj(ji,jj,ikv)
306               ! compute the new one   
307               zhpj (ji,jj,ikv) = zhpj(ji,jj,ikv-1)   &
308                  + zcoef3 * ( rhd(ji,jj+1,ikv-1) - rhd(ji,jj,ikv-1) + grv(ji,jj) ) / e2v(ji,jj)
309               ! add the new one to the general momentum trend
310               va(ji,jj,ikv) = va(ji,jj,ikv) + zhpj(ji,jj,ikv)
311            ENDIF
312# if ! defined key_vectopt_loop
313         END DO
314# endif
315      END DO
316
317      ! save the hydrostatic pressure gradient trends for diagnostic
318      ! momentum trends
319      IF( l_trddyn )   THEN
320         zhpi(:,:,:) = ua(:,:,:) - ztdua(:,:,:)
321         zhpj(:,:,:) = va(:,:,:) - ztdva(:,:,:)
322         CALL trd_mod(zhpi, zhpj, jpdtdhpg, 'DYN', kt)
323      ENDIF
324
325      IF(l_ctl) THEN         ! print sum trends (used for debugging)
326         zuap = SUM( ua(2:nictl,2:njctl,1:jpkm1) * umask(2:nictl,2:njctl,1:jpkm1) )
327         zvap = SUM( va(2:nictl,2:njctl,1:jpkm1) * vmask(2:nictl,2:njctl,1:jpkm1) )
328         WRITE(numout,*) ' hpg  - Ua: ', zuap-u_ctl, ' Va: ', zvap-v_ctl
329         u_ctl = zuap   ;   v_ctl = zvap
330      ENDIF
331
332   END SUBROUTINE dyn_hpg
333
334#else
335   !!---------------------------------------------------------------------
336   !!   Default case :                                        z-coordinate
337   !!---------------------------------------------------------------------
338
339   SUBROUTINE dyn_hpg( kt )
340      !!---------------------------------------------------------------------
341      !!                  ***  ROUTINE dyn_hpg  ***
342      !!
343      !! ** Purpose :   Compute the now momentum trend due to the horizontal
344      !!      gradient of the hydrostatic pressure. Add it to the general
345      !!      momentum trend.
346      !!
347      !! ** Method  :   The now hydrostatic pressure gradient at a given level
348      !!      jk is computed by taking the vertical integral of the in-situ
349      !!      density gradient along the model level from the suface to that
350      !!      level:    zhpi = grav .....
351      !!                zhpj = grav .....
352      !!      add it to the general momentum trend (ua,va).
353      !!            ua = ua - 1/e1u * zhpi
354      !!            va = va - 1/e2v * zhpj
355      !!
356      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend
357      !!             - Save the trend in (utrd,vtrd) ('key_trddyn')
358      !!
359      !! History :
360      !!   1.0  !  87-09  (P. Andrich, m.-a. Foujols)  Original code
361      !!        !  91-11  (G. Madec)
362      !!        !  96-01  (G. Madec)  s-coordinates
363      !!        !  97-05  (G. Madec)  split dynber into dynkeg and dynhpg
364      !!   8.5  !  02-07  (G. Madec)  F90: Free form and module
365      !!----------------------------------------------------------------------
366      !! * modules used
367      USE oce, ONLY :   zhpi => ta,  &  ! use ta as 3D workspace
368         &              zhpj => sa      ! use sa as 3D workspace
369
370      !! * Arguments
371      INTEGER, INTENT( in ) ::   kt     ! ocean time-step index
372
373      !! * local declarations
374      INTEGER ::   ji, jj, jk           ! dummy loop indices
375      REAL(wp) ::   &
376         zcoef0, zcoef1, zuap, zvap     ! temporary scalars
377      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   &
378         ztdua, ztdva                   ! temporary scalars
379      !!----------------------------------------------------------------------
380
381      IF( kt == nit000 ) THEN
382         IF(lwp) WRITE(numout,*)
383         IF(lwp) WRITE(numout,*) 'dyn_hpg : hydrostatic pressure gradient trend'
384         IF(lwp) WRITE(numout,*) '~~~~~~~   z-coordinate case '
385      ENDIF
386
387      ! Save ua and va trends
388      IF( l_trddyn )   THEN
389         ztdua(:,:,:) = ua(:,:,:) 
390         ztdva(:,:,:) = va(:,:,:) 
391      ENDIF
392
393      ! 0. Local constant initialization
394      ! --------------------------------
395      zcoef0 = - grav * 0.5
396      zuap   = 0.e0
397      zvap   = 0.e0
398
399      ! 1. Surface value
400      ! ----------------
401      DO jj = 2, jpjm1
402         DO ji = fs_2, fs_jpim1   ! vector opt.
403            zcoef1 = zcoef0 * fse3w(ji,jj,1)
404            ! hydrostatic pressure gradient
405            zhpi(ji,jj,1) = zcoef1 * ( rhd(ji+1,jj,1) - rhd(ji,jj,1) ) / e1u(ji,jj)
406            zhpj(ji,jj,1) = zcoef1 * ( rhd(ji,jj+1,1) - rhd(ji,jj,1) ) / e2v(ji,jj)
407            ! add to the general momentum trend
408            ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1)
409            va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1)
410         END DO
411      END DO
412
413      ! 2. interior value (2=<jk=<jpkm1)
414      ! -----------------
415      DO jk = 2, jpkm1
416         DO jj = 2, jpjm1
417            DO ji = fs_2, fs_jpim1   ! vector opt.
418               zcoef1 = zcoef0 * fse3w(ji,jj,jk)
419               ! hydrostatic pressure gradient
420               zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1)   &
421                  &           + zcoef1 * (  ( rhd(ji+1,jj,jk)+rhd(ji+1,jj,jk-1) )   &
422                  &                       - ( rhd(ji  ,jj,jk)+rhd(ji  ,jj,jk-1) )  ) / e1u(ji,jj)
423
424               zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1)   &
425                  &           + zcoef1 * (  ( rhd(ji,jj+1,jk)+rhd(ji,jj+1,jk-1) )   &
426                  &                       - ( rhd(ji,jj,  jk)+rhd(ji,jj  ,jk-1) )  ) / e2v(ji,jj)
427               ! add to the general momentum trend
428               ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk)
429               va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk)
430            END DO
431         END DO
432      END DO
433
434      ! save the hydrostatic pressure ggradient trends for diagnostic
435      ! momentum trends
436      IF( l_trddyn )   THEN
437         zhpi(:,:,:) = ua(:,:,:) - ztdua(:,:,:)
438         zhpj(:,:,:) = va(:,:,:) - ztdva(:,:,:)
439
440         CALL trd_mod(zhpi, zhpj, jpdtdhpg, 'DYN', kt)
441      ENDIF
442
443      IF(l_ctl) THEN         ! print sum trends (used for debugging)
444         zuap = SUM( ua(2:nictl,2:njctl,1:jpkm1) * umask(2:nictl,2:njctl,1:jpkm1) )
445         zvap = SUM( va(2:nictl,2:njctl,1:jpkm1) * vmask(2:nictl,2:njctl,1:jpkm1) )
446         WRITE(numout,*) ' hpg  - Ua: ', zuap-u_ctl, ' Va: ', zvap-v_ctl
447         u_ctl = zuap   ;   v_ctl = zvap
448      ENDIF
449
450   END SUBROUTINE dyn_hpg
451
452#endif
453
454   !!======================================================================
455END MODULE dynhpg
Note: See TracBrowser for help on using the repository browser.