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 @ 247

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

CL : Add CVS Header and CeCILL licence information

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