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.
sshwzv.F90 in NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/OCE/DYN – NEMO

source: NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/OCE/DYN/sshwzv.F90 @ 13159

Last change on this file since 13159 was 13159, checked in by gsamson, 4 years ago

merge trunk@r13136 into ASINTER-06 branch; pass all SETTE tests; results identical to trunk@r13136; ticket #2419

  • Property svn:keywords set to Id
File size: 19.2 KB
RevLine 
[1565]1MODULE sshwzv   
[3]2   !!==============================================================================
[1438]3   !!                       ***  MODULE  sshwzv  ***
4   !! Ocean dynamics : sea surface height and vertical velocity
[3]5   !!==============================================================================
[1438]6   !! History :  3.1  !  2009-02  (G. Madec, M. Leclair)  Original code
[2528]7   !!            3.3  !  2010-04  (M. Leclair, G. Madec)  modified LF-RA
8   !!             -   !  2010-05  (K. Mogensen, A. Weaver, M. Martin, D. Lea) Assimilation interface
9   !!             -   !  2010-09  (D.Storkey and E.O'Dea) bug fixes for BDY module
[4292]10   !!            3.3  !  2011-10  (M. Leclair) split former ssh_wzv routine and remove all vvl related work
[11414]11   !!            4.0  !  2018-12  (A. Coward) add mixed implicit/explicit advection
[12377]12   !!            4.1  !  2019-08  (A. Coward, D. Storkey) Rename ssh_nxt -> ssh_atf. Now only does time filtering.
[3]13   !!----------------------------------------------------------------------
[1438]14
[3]15   !!----------------------------------------------------------------------
[6140]16   !!   ssh_nxt       : after ssh
[12377]17   !!   ssh_atf       : time filter the ssh arrays
[6140]18   !!   wzv           : compute now vertical velocity
[1438]19   !!----------------------------------------------------------------------
[6140]20   USE oce            ! ocean dynamics and tracers variables
[12377]21   USE isf_oce        ! ice shelf
[6140]22   USE dom_oce        ! ocean space and time domain variables
23   USE sbc_oce        ! surface boundary condition: ocean
24   USE domvvl         ! Variable volume
25   USE divhor         ! horizontal divergence
26   USE phycst         ! physical constants
[9019]27   USE bdy_oce , ONLY : ln_bdy, bdytmask   ! Open BounDarY
[6140]28   USE bdydyn2d       ! bdy_ssh routine
[2528]29#if defined key_agrif
[9570]30   USE agrif_oce_interp
[2528]31#endif
[6140]32   !
[10364]33   USE iom 
[6140]34   USE in_out_manager ! I/O manager
35   USE restart        ! only for lrst_oce
36   USE prtctl         ! Print control
37   USE lbclnk         ! ocean lateral boundary condition (or mpp link)
38   USE lib_mpp        ! MPP library
39   USE timing         ! Timing
[9023]40   USE wet_dry        ! Wetting/Drying flux limiting
[592]41
[3]42   IMPLICIT NONE
43   PRIVATE
44
[1438]45   PUBLIC   ssh_nxt    ! called by step.F90
[4292]46   PUBLIC   wzv        ! called by step.F90
[10364]47   PUBLIC   wAimp      ! called by step.F90
[12377]48   PUBLIC   ssh_atf    ! called by step.F90
[3]49
50   !! * Substitutions
[12377]51#  include "do_loop_substitute.h90"
[3]52   !!----------------------------------------------------------------------
[9598]53   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
[888]54   !! $Id$
[10068]55   !! Software governed by the CeCILL license (see ./LICENSE)
[592]56   !!----------------------------------------------------------------------
[3]57CONTAINS
58
[12377]59   SUBROUTINE ssh_nxt( kt, Kbb, Kmm, pssh, Kaa )
[3]60      !!----------------------------------------------------------------------
[4292]61      !!                ***  ROUTINE ssh_nxt  ***
[1438]62      !!                   
[12377]63      !! ** Purpose :   compute the after ssh (ssh(Kaa))
[3]64      !!
[4292]65      !! ** Method  : - Using the incompressibility hypothesis, the ssh increment
66      !!      is computed by integrating the horizontal divergence and multiply by
67      !!      by the time step.
[3]68      !!
[12377]69      !! ** action  :   ssh(:,:,Kaa), after sea surface height
[2528]70      !!
71      !! Reference  : Leclair, M., and G. Madec, 2009, Ocean Modelling.
[3]72      !!----------------------------------------------------------------------
[12377]73      INTEGER                         , INTENT(in   ) ::   kt             ! time step
74      INTEGER                         , INTENT(in   ) ::   Kbb, Kmm, Kaa  ! time level index
75      REAL(wp), DIMENSION(jpi,jpj,jpt), INTENT(inout) ::   pssh           ! sea-surface height
[4292]76      !
[12489]77      INTEGER  ::   jk      ! dummy loop index
78      REAL(wp) ::   zcoef   ! local scalar
[9019]79      REAL(wp), DIMENSION(jpi,jpj) ::   zhdiv   ! 2D workspace
[3]80      !!----------------------------------------------------------------------
[3294]81      !
[9019]82      IF( ln_timing )   CALL timing_start('ssh_nxt')
[3294]83      !
[3]84      IF( kt == nit000 ) THEN
85         IF(lwp) WRITE(numout,*)
[4292]86         IF(lwp) WRITE(numout,*) 'ssh_nxt : after sea surface height'
[1438]87         IF(lwp) WRITE(numout,*) '~~~~~~~ '
[3]88      ENDIF
[2528]89      !
[12489]90      zcoef = 0.5_wp * r1_rho0
[3]91
[1438]92      !                                           !------------------------------!
93      !                                           !   After Sea Surface Height   !
94      !                                           !------------------------------!
[9023]95      IF(ln_wd_il) THEN
[12489]96         CALL wad_lmt(pssh(:,:,Kbb), zcoef * (emp_b(:,:) + emp(:,:)), rDt, Kmm, uu, vv )
[7753]97      ENDIF
[7646]98
[12377]99      CALL div_hor( kt, Kbb, Kmm )                     ! Horizontal divergence
[7646]100      !
[7753]101      zhdiv(:,:) = 0._wp
[1438]102      DO jk = 1, jpkm1                                 ! Horizontal divergence of barotropic transports
[12377]103        zhdiv(:,:) = zhdiv(:,:) + e3t(:,:,jk,Kmm) * hdiv(:,:,jk)
[1438]104      END DO
105      !                                                ! Sea surface elevation time stepping
[4338]106      ! In time-split case we need a first guess of the ssh after (using the baroclinic timestep) in order to
107      ! compute the vertical velocity which can be used to compute the non-linear terms of the momentum equations.
108      !
[12489]109      pssh(:,:,Kaa) = (  pssh(:,:,Kbb) - rDt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:)
[9023]110      !
111#if defined key_agrif
[12377]112      Kbb_a = Kbb; Kmm_a = Kmm; Krhs_a = Kaa; CALL agrif_ssh( kt )
[9023]113#endif
114      !
[5930]115      IF ( .NOT.ln_dynspg_ts ) THEN
[7646]116         IF( ln_bdy ) THEN
[12377]117            CALL lbc_lnk( 'sshwzv', pssh(:,:,Kaa), 'T', 1. )    ! Not sure that's necessary
118            CALL bdy_ssh( pssh(:,:,Kaa) )             ! Duplicate sea level across open boundaries
[5930]119         ENDIF
[4292]120      ENDIF
121      !                                           !------------------------------!
122      !                                           !           outputs            !
123      !                                           !------------------------------!
124      !
[12377]125      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=pssh(:,:,Kaa), clinfo1=' pssh(:,:,Kaa)  - : ', mask1=tmask )
[4292]126      !
[9019]127      IF( ln_timing )   CALL timing_stop('ssh_nxt')
[4292]128      !
129   END SUBROUTINE ssh_nxt
130
131   
[12377]132   SUBROUTINE wzv( kt, Kbb, Kmm, pww, Kaa )
[4292]133      !!----------------------------------------------------------------------
134      !!                ***  ROUTINE wzv  ***
135      !!                   
136      !! ** Purpose :   compute the now vertical velocity
137      !!
138      !! ** Method  : - Using the incompressibility hypothesis, the vertical
139      !!      velocity is computed by integrating the horizontal divergence 
140      !!      from the bottom to the surface minus the scale factor evolution.
141      !!        The boundary conditions are w=0 at the bottom (no flux) and.
142      !!
[12377]143      !! ** action  :   pww      : now vertical velocity
[4292]144      !!
145      !! Reference  : Leclair, M., and G. Madec, 2009, Ocean Modelling.
146      !!----------------------------------------------------------------------
[12377]147      INTEGER                         , INTENT(in)    ::   kt             ! time step
148      INTEGER                         , INTENT(in)    ::   Kbb, Kmm, Kaa  ! time level indices
149      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pww            ! now vertical velocity
[4292]150      !
[5836]151      INTEGER  ::   ji, jj, jk   ! dummy loop indices
[9019]152      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zhdiv
[4292]153      !!----------------------------------------------------------------------
154      !
[9019]155      IF( ln_timing )   CALL timing_start('wzv')
[5836]156      !
[4292]157      IF( kt == nit000 ) THEN
158         IF(lwp) WRITE(numout,*)
159         IF(lwp) WRITE(numout,*) 'wzv : now vertical velocity '
160         IF(lwp) WRITE(numout,*) '~~~~~ '
161         !
[12377]162         pww(:,:,jpk) = 0._wp                  ! bottom boundary condition: w=0 (set once for all)
[4292]163      ENDIF
164      !                                           !------------------------------!
165      !                                           !     Now Vertical Velocity    !
166      !                                           !------------------------------!
167      !
168      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN      ! z_tilde and layer cases
[9019]169         ALLOCATE( zhdiv(jpi,jpj,jpk) ) 
[4292]170         !
171         DO jk = 1, jpkm1
172            ! horizontal divergence of thickness diffusion transport ( velocity multiplied by e3t)
[4338]173            ! - ML - note: computation already done in dom_vvl_sf_nxt. Could be optimized (not critical and clearer this way)
[12377]174            DO_2D_00_00
175               zhdiv(ji,jj,jk) = r1_e1e2t(ji,jj) * ( un_td(ji,jj,jk) - un_td(ji-1,jj,jk) + vn_td(ji,jj,jk) - vn_td(ji,jj-1,jk) )
176            END_2D
[592]177         END DO
[10425]178         CALL lbc_lnk('sshwzv', zhdiv, 'T', 1.)  ! - ML - Perhaps not necessary: not used for horizontal "connexions"
[4292]179         !                             ! Is it problematic to have a wrong vertical velocity in boundary cells?
[12377]180         !                             ! Same question holds for hdiv. Perhaps just for security
[4292]181         DO jk = jpkm1, 1, -1                       ! integrate from the bottom the hor. divergence
182            ! computation of w
[12377]183            pww(:,:,jk) = pww(:,:,jk+1) - (  e3t(:,:,jk,Kmm) * hdiv(:,:,jk) + zhdiv(:,:,jk)    &
[12489]184               &                         + r1_Dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )     ) * tmask(:,:,jk)
[4292]185         END DO
[12377]186         !          IF( ln_vvl_layer ) pww(:,:,:) = 0.e0
[9019]187         DEALLOCATE( zhdiv ) 
[4292]188      ELSE   ! z_star and linear free surface cases
189         DO jk = jpkm1, 1, -1                       ! integrate from the bottom the hor. divergence
[7753]190            ! computation of w
[12377]191            pww(:,:,jk) = pww(:,:,jk+1) - (  e3t(:,:,jk,Kmm) * hdiv(:,:,jk)                 &
[12489]192               &                         + r1_Dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )  ) * tmask(:,:,jk)
[4292]193         END DO
[1438]194      ENDIF
[592]195
[7646]196      IF( ln_bdy ) THEN
[4327]197         DO jk = 1, jpkm1
[12377]198            pww(:,:,jk) = pww(:,:,jk) * bdytmask(:,:)
[4327]199         END DO
200      ENDIF
[4292]201      !
[9023]202#if defined key_agrif 
203      IF( .NOT. AGRIF_Root() ) THEN 
[13159]204         ! Mask vertical velocity at first/last columns/row
205         ! inside computational domain (cosmetic)
206         ! --- West --- !
207         DO ji = mi0(2), mi1(2)
208            DO jj = 1, jpj
209               pww(ji,jj,:) = 0._wp 
210            ENDDO
211         ENDDO
212         !
213         ! --- East --- !
214         DO ji = mi0(jpiglo-1), mi1(jpiglo-1)
215            DO jj = 1, jpj
216               pww(ji,jj,:) = 0._wp
217            ENDDO
218         ENDDO
219         !
220         ! --- South --- !
221         DO jj = mj0(2), mj1(2)
222            DO ji = 1, jpi
223               pww(ji,jj,:) = 0._wp
224            ENDDO
225         ENDDO
226         !
227         ! --- North --- !
228         DO jj = mj0(jpjglo-1), mj1(jpjglo-1)
229            DO ji = 1, jpi
230               pww(ji,jj,:) = 0._wp
231            ENDDO
232         ENDDO
[9023]233      ENDIF 
234#endif 
[5836]235      !
[9124]236      IF( ln_timing )   CALL timing_stop('wzv')
[9023]237      !
[5836]238   END SUBROUTINE wzv
[592]239
240
[12377]241   SUBROUTINE ssh_atf( kt, Kbb, Kmm, Kaa, pssh )
[1438]242      !!----------------------------------------------------------------------
[12377]243      !!                    ***  ROUTINE ssh_atf  ***
[1438]244      !!
[12377]245      !! ** Purpose :   Apply Asselin time filter to now SSH.
[1438]246      !!
[2528]247      !! ** Method  : - apply Asselin time fiter to now ssh (excluding the forcing
248      !!              from the filter, see Leclair and Madec 2010) and swap :
[12489]249      !!                pssh(:,:,Kmm) = pssh(:,:,Kaa) + rn_atfp * ( pssh(:,:,Kbb) -2 pssh(:,:,Kmm) + pssh(:,:,Kaa) )
250      !!                            - rn_atfp * rn_Dt * ( emp_b - emp ) / rho0
[1438]251      !!
[12377]252      !! ** action  : - pssh(:,:,Kmm) time filtered
[2528]253      !!
254      !! Reference  : Leclair, M., and G. Madec, 2009, Ocean Modelling.
[1438]255      !!----------------------------------------------------------------------
[12377]256      INTEGER                         , INTENT(in   ) ::   kt             ! ocean time-step index
257      INTEGER                         , INTENT(in   ) ::   Kbb, Kmm, Kaa  ! ocean time level indices
258      REAL(wp), DIMENSION(jpi,jpj,jpt), INTENT(inout) ::   pssh           ! SSH field
[6140]259      !
260      REAL(wp) ::   zcoef   ! local scalar
[1438]261      !!----------------------------------------------------------------------
[3294]262      !
[12377]263      IF( ln_timing )   CALL timing_start('ssh_atf')
[3294]264      !
[1438]265      IF( kt == nit000 ) THEN
266         IF(lwp) WRITE(numout,*)
[12377]267         IF(lwp) WRITE(numout,*) 'ssh_atf : Asselin time filter of sea surface height'
[1438]268         IF(lwp) WRITE(numout,*) '~~~~~~~ '
269      ENDIF
[6140]270      !              !==  Euler time-stepping: no filter, just swap  ==!
[12489]271      IF ( .NOT.( l_1st_euler ) ) THEN   ! Only do time filtering for leapfrog timesteps
[12377]272         !                                                  ! filtered "now" field
[12489]273         pssh(:,:,Kmm) = pssh(:,:,Kmm) + rn_atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) )
[12377]274         IF( .NOT.ln_linssh ) THEN                          ! "now" <-- with forcing removed
[12489]275            zcoef = rn_atfp * rn_Dt * r1_rho0
[12377]276            pssh(:,:,Kmm) = pssh(:,:,Kmm) - zcoef * (     emp_b(:,:) - emp   (:,:)   &
277               &                             - rnf_b(:,:)        + rnf   (:,:)       &
278               &                             + fwfisf_cav_b(:,:) - fwfisf_cav(:,:)   &
279               &                             + fwfisf_par_b(:,:) - fwfisf_par(:,:)   ) * ssmask(:,:)
280
281            ! ice sheet coupling
[12489]282            IF ( ln_isf .AND. ln_isfcpl .AND. kt == nit000+1) pssh(:,:,Kbb) = pssh(:,:,Kbb) - rn_atfp * rn_Dt * ( risfcpl_ssh(:,:) - 0.0 ) * ssmask(:,:)
[12377]283
[6140]284         ENDIF
[1438]285      ENDIF
286      !
[12377]287      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=pssh(:,:,Kmm), clinfo1=' pssh(:,:,Kmm)  - : ', mask1=tmask )
[2528]288      !
[12377]289      IF( ln_timing )   CALL timing_stop('ssh_atf')
[3294]290      !
[12377]291   END SUBROUTINE ssh_atf
[3]292
[12377]293   SUBROUTINE wAimp( kt, Kmm )
[10364]294      !!----------------------------------------------------------------------
295      !!                ***  ROUTINE wAimp  ***
296      !!                   
297      !! ** Purpose :   compute the Courant number and partition vertical velocity
298      !!                if a proportion needs to be treated implicitly
299      !!
300      !! ** Method  : -
301      !!
[12377]302      !! ** action  :   ww      : now vertical velocity (to be handled explicitly)
[10364]303      !!            :   wi      : now vertical velocity (for implicit treatment)
304      !!
[11414]305      !! Reference  : Shchepetkin, A. F. (2015): An adaptive, Courant-number-dependent
306      !!              implicit scheme for vertical advection in oceanic modeling.
307      !!              Ocean Modelling, 91, 38-69.
[10364]308      !!----------------------------------------------------------------------
309      INTEGER, INTENT(in) ::   kt   ! time step
[12377]310      INTEGER, INTENT(in) ::   Kmm  ! time level index
[10364]311      !
312      INTEGER  ::   ji, jj, jk   ! dummy loop indices
[11293]313      REAL(wp)             ::   zCu, zcff, z1_e3t                     ! local scalars
[10364]314      REAL(wp) , PARAMETER ::   Cu_min = 0.15_wp                      ! local parameters
[11407]315      REAL(wp) , PARAMETER ::   Cu_max = 0.30_wp                      ! local parameters
[10364]316      REAL(wp) , PARAMETER ::   Cu_cut = 2._wp*Cu_max - Cu_min        ! local parameters
317      REAL(wp) , PARAMETER ::   Fcu    = 4._wp*Cu_max*(Cu_max-Cu_min) ! local parameters
318      !!----------------------------------------------------------------------
319      !
320      IF( ln_timing )   CALL timing_start('wAimp')
321      !
322      IF( kt == nit000 ) THEN
323         IF(lwp) WRITE(numout,*)
324         IF(lwp) WRITE(numout,*) 'wAimp : Courant number-based partitioning of now vertical velocity '
325         IF(lwp) WRITE(numout,*) '~~~~~ '
[11293]326         wi(:,:,:) = 0._wp
[10364]327      ENDIF
328      !
[11414]329      ! Calculate Courant numbers
330      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN
[12377]331         DO_3D_00_00( 1, jpkm1 )
332            z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm)
[12489]333            ! 2*rn_Dt and not rDt (for restartability)
334            Cu_adv(ji,jj,jk) = 2._wp * rn_Dt * ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) )                       & 
[12377]335               &                             + ( MAX( e2u(ji  ,jj)*e3u(ji  ,jj,jk,Kmm)*uu(ji  ,jj,jk,Kmm) + un_td(ji  ,jj,jk), 0._wp ) -   &
336               &                                 MIN( e2u(ji-1,jj)*e3u(ji-1,jj,jk,Kmm)*uu(ji-1,jj,jk,Kmm) + un_td(ji-1,jj,jk), 0._wp ) )   &
337               &                               * r1_e1e2t(ji,jj)                                                                     &
338               &                             + ( MAX( e1v(ji,jj  )*e3v(ji,jj  ,jk,Kmm)*vv(ji,jj  ,jk,Kmm) + vn_td(ji,jj  ,jk), 0._wp ) -   &
339               &                                 MIN( e1v(ji,jj-1)*e3v(ji,jj-1,jk,Kmm)*vv(ji,jj-1,jk,Kmm) + vn_td(ji,jj-1,jk), 0._wp ) )   &
340               &                               * r1_e1e2t(ji,jj)                                                                     &
341               &                             ) * z1_e3t
342         END_3D
[11414]343      ELSE
[12377]344         DO_3D_00_00( 1, jpkm1 )
345            z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm)
[12489]346            ! 2*rn_Dt and not rDt (for restartability)
347            Cu_adv(ji,jj,jk) = 2._wp * rn_Dt * ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) )   & 
[12377]348               &                             + ( MAX( e2u(ji  ,jj)*e3u(ji  ,jj,jk,Kmm)*uu(ji  ,jj,jk,Kmm), 0._wp ) -   &
349               &                                 MIN( e2u(ji-1,jj)*e3u(ji-1,jj,jk,Kmm)*uu(ji-1,jj,jk,Kmm), 0._wp ) )   &
350               &                               * r1_e1e2t(ji,jj)                                                 &
351               &                             + ( MAX( e1v(ji,jj  )*e3v(ji,jj  ,jk,Kmm)*vv(ji,jj  ,jk,Kmm), 0._wp ) -   &
352               &                                 MIN( e1v(ji,jj-1)*e3v(ji,jj-1,jk,Kmm)*vv(ji,jj-1,jk,Kmm), 0._wp ) )   &
353               &                               * r1_e1e2t(ji,jj)                                                 &
354               &                             ) * z1_e3t
355         END_3D
[11414]356      ENDIF
[10907]357      CALL lbc_lnk( 'sshwzv', Cu_adv, 'T', 1. )
[10364]358      !
359      CALL iom_put("Courant",Cu_adv)
360      !
361      IF( MAXVAL( Cu_adv(:,:,:) ) > Cu_min ) THEN       ! Quick check if any breaches anywhere
[12377]362         DO_3DS_11_11( jpkm1, 2, -1 )
363            !
364            zCu = MAX( Cu_adv(ji,jj,jk) , Cu_adv(ji,jj,jk-1) )
[11293]365! alt:
[12377]366!                  IF ( ww(ji,jj,jk) > 0._wp ) THEN
[11293]367!                     zCu =  Cu_adv(ji,jj,jk)
368!                  ELSE
369!                     zCu =  Cu_adv(ji,jj,jk-1)
370!                  ENDIF
[12377]371            !
372            IF( zCu <= Cu_min ) THEN              !<-- Fully explicit
373               zcff = 0._wp
374            ELSEIF( zCu < Cu_cut ) THEN           !<-- Mixed explicit
375               zcff = ( zCu - Cu_min )**2
376               zcff = zcff / ( Fcu + zcff )
377            ELSE                                  !<-- Mostly implicit
378               zcff = ( zCu - Cu_max )/ zCu
379            ENDIF
380            zcff = MIN(1._wp, zcff)
381            !
382            wi(ji,jj,jk) =           zcff   * ww(ji,jj,jk)
383            ww(ji,jj,jk) = ( 1._wp - zcff ) * ww(ji,jj,jk)
384            !
385            Cu_adv(ji,jj,jk) = zcff               ! Reuse array to output coefficient below and in stp_ctl
386         END_3D
[11293]387         Cu_adv(:,:,1) = 0._wp 
[10364]388      ELSE
389         ! Fully explicit everywhere
[11407]390         Cu_adv(:,:,:) = 0._wp                          ! Reuse array to output coefficient below and in stp_ctl
[10907]391         wi    (:,:,:) = 0._wp
[10364]392      ENDIF
393      CALL iom_put("wimp",wi) 
394      CALL iom_put("wi_cff",Cu_adv)
[12377]395      CALL iom_put("wexp",ww)
[10364]396      !
397      IF( ln_timing )   CALL timing_stop('wAimp')
398      !
399   END SUBROUTINE wAimp
[3]400   !!======================================================================
[1565]401END MODULE sshwzv
Note: See TracBrowser for help on using the repository browser.