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.
bdydyn3d.F90 in NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/BDY – NEMO

source: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/BDY/bdydyn3d.F90 @ 10969

Last change on this file since 10969 was 10957, checked in by davestorkey, 5 years ago

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : BDY module (including some removal of redundant code). Tested in AMM12 and ORCA1 (not full SETTE test at this stage).

  • Property svn:keywords set to Id
File size: 18.1 KB
RevLine 
[3117]1MODULE bdydyn3d
2   !!======================================================================
[3182]3   !!                       ***  MODULE  bdydyn3d  ***
[3191]4   !! Unstructured Open Boundary Cond. :   Flow relaxation scheme on baroclinic velocities
[3117]5   !!======================================================================
[3191]6   !! History :  3.4  !  2011     (D. Storkey) new module as part of BDY rewrite
[3680]7   !!            3.5  !  2012     (S. Mocavero, I. Epicoco) Optimization of BDY communications
[3117]8   !!----------------------------------------------------------------------
9   !!   bdy_dyn3d        : apply open boundary conditions to baroclinic velocities
10   !!   bdy_dyn3d_frs    : apply Flow Relaxation Scheme
11   !!----------------------------------------------------------------------
[3182]12   USE timing          ! Timing
[3117]13   USE oce             ! ocean dynamics and tracers
14   USE dom_oce         ! ocean space and time domain
15   USE bdy_oce         ! ocean open boundary conditions
[4292]16   USE bdylib          ! for orlanski library routines
[3117]17   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
18   USE in_out_manager  !
[10529]19   USE lib_mpp, ONLY: ctl_stop
[3651]20   Use phycst
[3117]21
22   IMPLICIT NONE
23   PRIVATE
24
[3191]25   PUBLIC   bdy_dyn3d     ! routine called by bdy_dyn
[3651]26   PUBLIC   bdy_dyn3d_dmp ! routine called by step
[3117]27
28   !!----------------------------------------------------------------------
[9598]29   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
[5215]30   !! $Id$
[10068]31   !! Software governed by the CeCILL license (see ./LICENSE)
[3117]32   !!----------------------------------------------------------------------
33CONTAINS
34
[10957]35   SUBROUTINE bdy_dyn3d( kt, Kbb, puu, pvv, Kaa )
[3117]36      !!----------------------------------------------------------------------
37      !!                  ***  SUBROUTINE bdy_dyn3d  ***
38      !!
39      !! ** Purpose : - Apply open boundary conditions for baroclinic velocities
40      !!
41      !!----------------------------------------------------------------------
[10957]42      INTEGER                             , INTENT( in    ) ::   kt        ! Main time step counter
43      INTEGER                             , INTENT( in    ) ::   Kbb, Kaa  ! Time level indices
44      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT( inout ) ::   puu, pvv  ! Ocean velocities (to be updated at open boundaries)
[6140]45      !
46      INTEGER ::   ib_bdy   ! loop index
47      !!----------------------------------------------------------------------
48      !
[3117]49      DO ib_bdy=1, nb_bdy
[6140]50         !
[4292]51         SELECT CASE( cn_dyn3d(ib_bdy) )
[6140]52         CASE('none')        ;   CYCLE
[10957]53         CASE('frs' )        ;   CALL bdy_dyn3d_frs(           puu, pvv, Kaa, idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy )
54         CASE('specified')   ;   CALL bdy_dyn3d_spe(           puu, pvv, Kaa, idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy )
55         CASE('zero')        ;   CALL bdy_dyn3d_zro(           puu, pvv, Kaa, idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy )
56         CASE('orlanski' )   ;   CALL bdy_dyn3d_orlanski( Kbb, puu, pvv, Kaa, idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy, ll_npo=.false. )
57         CASE('orlanski_npo');   CALL bdy_dyn3d_orlanski( Kbb, puu, pvv, Kaa, idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy, ll_npo=.true. )
58         CASE('zerograd')    ;   CALL bdy_dyn3d_zgrad(         puu, pvv, Kaa, idx_bdy(ib_bdy), dta_bdy(ib_bdy), ib_bdy )
59         CASE('neumann')     ;   CALL bdy_dyn3d_nmn(           puu, pvv, Kaa, idx_bdy(ib_bdy), ib_bdy )
[6140]60         CASE DEFAULT        ;   CALL ctl_stop( 'bdy_dyn3d : unrecognised option for open boundaries for baroclinic velocities' )
[3117]61         END SELECT
[6140]62      END DO
63      !
[3117]64   END SUBROUTINE bdy_dyn3d
65
[6140]66
[10957]67   SUBROUTINE bdy_dyn3d_spe( puu, pvv, Kaa, idx, dta, ib_bdy )
[3651]68      !!----------------------------------------------------------------------
69      !!                  ***  SUBROUTINE bdy_dyn3d_spe  ***
70      !!
71      !! ** Purpose : - Apply a specified value for baroclinic velocities
72      !!                at open boundaries.
73      !!
74      !!----------------------------------------------------------------------
[10957]75      INTEGER                             , INTENT( in    ) ::   Kaa       ! Time level index
76      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT( inout ) ::   puu, pvv  ! Ocean velocities (to be updated at open boundaries)
77      TYPE(OBC_INDEX)                     , INTENT( in    ) ::   idx       ! OBC indices
78      TYPE(OBC_DATA)                      , INTENT( in    ) ::   dta       ! OBC external data
79      INTEGER                             , INTENT( in    ) ::   ib_bdy    ! BDY set index
[6140]80      !
[3651]81      INTEGER  ::   jb, jk         ! dummy loop indices
82      INTEGER  ::   ii, ij, igrd   ! local integers
83      REAL(wp) ::   zwgt           ! boundary weight
84      !!----------------------------------------------------------------------
85      !
86      igrd = 2                      ! Relaxation of zonal velocity
87      DO jb = 1, idx%nblenrim(igrd)
88         DO jk = 1, jpkm1
89            ii   = idx%nbi(jb,igrd)
90            ij   = idx%nbj(jb,igrd)
[10957]91            puu(ii,ij,jk,Kaa) = dta%u3d(jb,jk) * umask(ii,ij,jk)
[3651]92         END DO
93      END DO
94      !
95      igrd = 3                      ! Relaxation of meridional velocity
96      DO jb = 1, idx%nblenrim(igrd)
97         DO jk = 1, jpkm1
98            ii   = idx%nbi(jb,igrd)
99            ij   = idx%nbj(jb,igrd)
[10957]100            pvv(ii,ij,jk,Kaa) = dta%v3d(jb,jk) * vmask(ii,ij,jk)
[3651]101         END DO
102      END DO
[10957]103      CALL lbc_bdy_lnk( 'bdydyn3d', puu(:,:,:,Kaa), 'U', -1., ib_bdy )   ! Boundary points should be updated 
104      CALL lbc_bdy_lnk( 'bdydyn3d', pvv(:,:,:,Kaa), 'V', -1., ib_bdy )   
[3651]105      !
106   END SUBROUTINE bdy_dyn3d_spe
107
[9124]108
[10957]109   SUBROUTINE bdy_dyn3d_zgrad( puu, pvv, Kaa, idx, dta, ib_bdy )
[7646]110      !!----------------------------------------------------------------------
111      !!                  ***  SUBROUTINE bdy_dyn3d_zgrad  ***
112      !!
113      !! ** Purpose : - Enforce a zero gradient of normal velocity
114      !!
115      !!----------------------------------------------------------------------
[10957]116      INTEGER                             , INTENT( in    ) ::   Kaa       ! Time level index
117      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT( inout ) ::   puu, pvv  ! Ocean velocities (to be updated at open boundaries)
118      TYPE(OBC_INDEX)                     , INTENT( in    ) ::   idx       ! OBC indices
119      TYPE(OBC_DATA)                      , INTENT( in    ) ::   dta       ! OBC external data
120      INTEGER                             , INTENT( in    ) ::   ib_bdy    ! BDY set index
[7646]121      !!
122      INTEGER  ::   jb, jk         ! dummy loop indices
123      INTEGER  ::   ii, ij, igrd   ! local integers
124      REAL(wp) ::   zwgt           ! boundary weight
125      INTEGER  ::   fu, fv
126      !!----------------------------------------------------------------------
127      !
128      igrd = 2                      ! Copying tangential velocity into bdy points
129      DO jb = 1, idx%nblenrim(igrd)
130         DO jk = 1, jpkm1
131            ii   = idx%nbi(jb,igrd)
132            ij   = idx%nbj(jb,igrd)
133            fu   = ABS( ABS (NINT( idx%flagu(jb,igrd) ) ) - 1 )
[10957]134            puu(ii,ij,jk,Kaa) = puu(ii,ij,jk,Kaa) * REAL( 1 - fu) + ( puu(ii,ij+fu,jk,Kaa) * umask(ii,ij+fu,jk) &
135                        &+ puu(ii,ij-fu,jk,Kaa) * umask(ii,ij-fu,jk) ) * umask(ii,ij,jk) * REAL( fu )
[7646]136         END DO
137      END DO
138      !
139      igrd = 3                      ! Copying tangential velocity into bdy points
140      DO jb = 1, idx%nblenrim(igrd)
141         DO jk = 1, jpkm1
142            ii   = idx%nbi(jb,igrd)
143            ij   = idx%nbj(jb,igrd)
144            fv   = ABS( ABS (NINT( idx%flagv(jb,igrd) ) ) - 1 )
[10957]145            pvv(ii,ij,jk,Kaa) = pvv(ii,ij,jk,Kaa) * REAL( 1 - fv ) + ( pvv(ii+fv,ij,jk,Kaa) * vmask(ii+fv,ij,jk) &
146                        &+ pvv(ii-fv,ij,jk,Kaa) * vmask(ii-fv,ij,jk) ) * vmask(ii,ij,jk) * REAL( fv )
[7646]147         END DO
148      END DO
[10957]149      CALL lbc_bdy_lnk( 'bdydyn3d', puu(:,:,:,Kaa), 'U', -1., ib_bdy )   ! Boundary points should be updated 
150      CALL lbc_bdy_lnk( 'bdydyn3d', pvv(:,:,:,Kaa), 'V', -1., ib_bdy )   
[7646]151      !
[9124]152   END SUBROUTINE bdy_dyn3d_zgrad
[6140]153
[7646]154
[10957]155   SUBROUTINE bdy_dyn3d_zro( puu, pvv, Kaa, idx, dta, ib_bdy )
[3651]156      !!----------------------------------------------------------------------
157      !!                  ***  SUBROUTINE bdy_dyn3d_zro  ***
158      !!
159      !! ** Purpose : - baroclinic velocities = 0. at open boundaries.
160      !!
161      !!----------------------------------------------------------------------
[10957]162      INTEGER                             , INTENT( in    ) ::   Kaa       ! Time level index
163      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT( inout ) ::   puu, pvv  ! Ocean velocities (to be updated at open boundaries)
164      TYPE(OBC_INDEX)                     , INTENT( in    ) ::   idx       ! OBC indices
165      TYPE(OBC_DATA)                      , INTENT( in    ) ::   dta       ! OBC external data
166      INTEGER                             , INTENT( in    ) ::   ib_bdy    ! BDY set index
[6140]167      !
[3651]168      INTEGER  ::   ib, ik         ! dummy loop indices
[6140]169      INTEGER  ::   ii, ij, igrd   ! local integers
[3651]170      REAL(wp) ::   zwgt           ! boundary weight
171      !!----------------------------------------------------------------------
172      !
173      igrd = 2                       ! Everything is at T-points here
174      DO ib = 1, idx%nblenrim(igrd)
175         ii = idx%nbi(ib,igrd)
176         ij = idx%nbj(ib,igrd)
177         DO ik = 1, jpkm1
[10957]178            puu(ii,ij,ik,Kaa) = 0._wp
[3651]179         END DO
180      END DO
181
182      igrd = 3                       ! Everything is at T-points here
183      DO ib = 1, idx%nblenrim(igrd)
184         ii = idx%nbi(ib,igrd)
185         ij = idx%nbj(ib,igrd)
186         DO ik = 1, jpkm1
[10957]187            pvv(ii,ij,ik,Kaa) = 0._wp
[3651]188         END DO
189      END DO
190      !
[10957]191      CALL lbc_bdy_lnk( 'bdydyn3d', puu(:,:,:,Kaa), 'U', -1., ib_bdy )   ;   CALL lbc_bdy_lnk( 'bdydyn3d', pvv(:,:,:,Kaa), 'V', -1.,ib_bdy )   ! Boundary points should be updated
[3651]192      !
[6140]193   END SUBROUTINE bdy_dyn3d_zro
[3651]194
195
[10957]196   SUBROUTINE bdy_dyn3d_frs( puu, pvv, Kaa, idx, dta, ib_bdy )
[3117]197      !!----------------------------------------------------------------------
198      !!                  ***  SUBROUTINE bdy_dyn3d_frs  ***
199      !!
200      !! ** Purpose : - Apply the Flow Relaxation Scheme for baroclinic velocities
201      !!                at open boundaries.
202      !!
203      !! References :- Engedahl H., 1995: Use of the flow relaxation scheme in
204      !!               a three-dimensional baroclinic ocean model with realistic
205      !!               topography. Tellus, 365-382.
206      !!----------------------------------------------------------------------
[10957]207      INTEGER                             , INTENT( in    ) ::   Kaa       ! Time level index
208      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT( inout ) ::   puu, pvv  ! Ocean velocities (to be updated at open boundaries)
209      TYPE(OBC_INDEX)                     , INTENT( in    ) ::   idx       ! OBC indices
210      TYPE(OBC_DATA)                      , INTENT( in    ) ::   dta       ! OBC external data
211      INTEGER                             , INTENT( in    ) ::   ib_bdy    ! BDY set index
[6140]212      !
[3117]213      INTEGER  ::   jb, jk         ! dummy loop indices
214      INTEGER  ::   ii, ij, igrd   ! local integers
215      REAL(wp) ::   zwgt           ! boundary weight
216      !!----------------------------------------------------------------------
217      !
218      igrd = 2                      ! Relaxation of zonal velocity
219      DO jb = 1, idx%nblen(igrd)
220         DO jk = 1, jpkm1
221            ii   = idx%nbi(jb,igrd)
222            ij   = idx%nbj(jb,igrd)
223            zwgt = idx%nbw(jb,igrd)
[10957]224            puu(ii,ij,jk,Kaa) = ( puu(ii,ij,jk,Kaa) + zwgt * ( dta%u3d(jb,jk) - puu(ii,ij,jk,Kaa) ) ) * umask(ii,ij,jk)
[3117]225         END DO
226      END DO
227      !
228      igrd = 3                      ! Relaxation of meridional velocity
229      DO jb = 1, idx%nblen(igrd)
230         DO jk = 1, jpkm1
231            ii   = idx%nbi(jb,igrd)
232            ij   = idx%nbj(jb,igrd)
233            zwgt = idx%nbw(jb,igrd)
[10957]234            pvv(ii,ij,jk,Kaa) = ( pvv(ii,ij,jk,Kaa) + zwgt * ( dta%v3d(jb,jk) - pvv(ii,ij,jk,Kaa) ) ) * vmask(ii,ij,jk)
[3117]235         END DO
236      END DO
[10957]237      CALL lbc_bdy_lnk( 'bdydyn3d', puu(:,:,:,Kaa), 'U', -1., ib_bdy )    ! Boundary points should be updated
238      CALL lbc_bdy_lnk( 'bdydyn3d', pvv(:,:,:,Kaa), 'V', -1., ib_bdy )   
[3117]239      !
[6140]240   END SUBROUTINE bdy_dyn3d_frs
[3117]241
[3182]242
[10957]243   SUBROUTINE bdy_dyn3d_orlanski( Kbb, puu, pvv, Kaa, idx, dta, ib_bdy, ll_npo )
[4292]244      !!----------------------------------------------------------------------
245      !!                 ***  SUBROUTINE bdy_dyn3d_orlanski  ***
246      !!             
247      !!              - Apply Orlanski radiation to baroclinic velocities.
248      !!              - Wrapper routine for bdy_orlanski_3d
249      !!
250      !!
251      !! References:  Marchesiello, McWilliams and Shchepetkin, Ocean Modelling vol. 3 (2001)   
252      !!----------------------------------------------------------------------
[10957]253      INTEGER                             , INTENT( in    ) ::   Kbb, Kaa  ! Time level indices
254      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT( inout ) ::   puu, pvv  ! Ocean velocities (to be updated at open boundaries)
255      TYPE(OBC_INDEX)                     , INTENT( in    ) ::   idx  ! OBC indices
256      TYPE(OBC_DATA)                      , INTENT( in    ) ::   dta  ! OBC external data
257      INTEGER                             , INTENT( in    ) ::   ib_bdy  ! BDY set index
258      LOGICAL                             , INTENT( in    ) ::   ll_npo  ! switch for NPO version
[4292]259
260      INTEGER  ::   jb, igrd                               ! dummy loop indices
261      !!----------------------------------------------------------------------
262      !
[10957]263      !! Note that at this stage the puu(:,:,:,Kbb) and puu(:,:,:,Kaa) arrays contain the baroclinic velocities.
[4292]264      !
265      igrd = 2      ! Orlanski bc on u-velocity;
266      !           
[10957]267      CALL bdy_orlanski_3d( idx, igrd, puu(:,:,:,Kbb), puu(:,:,:,Kaa), dta%u3d, ll_npo )
[4292]268
269      igrd = 3      ! Orlanski bc on v-velocity
270     
[10957]271      CALL bdy_orlanski_3d( idx, igrd, pvv(:,:,:,Kbb), pvv(:,:,:,Kaa), dta%v3d, ll_npo )
[4292]272      !
[10957]273      CALL lbc_bdy_lnk( 'bdydyn3d', puu(:,:,:,Kaa), 'U', -1., ib_bdy )    ! Boundary points should be updated
274      CALL lbc_bdy_lnk( 'bdydyn3d', pvv(:,:,:,Kaa), 'V', -1., ib_bdy )   
[4292]275      !
276   END SUBROUTINE bdy_dyn3d_orlanski
277
278
[10957]279   SUBROUTINE bdy_dyn3d_dmp( kt, Kbb, puu, pvv, Krhs )
[3651]280      !!----------------------------------------------------------------------
281      !!                  ***  SUBROUTINE bdy_dyn3d_dmp  ***
282      !!
283      !! ** Purpose : Apply damping for baroclinic velocities at open boundaries.
284      !!
285      !!----------------------------------------------------------------------
[10957]286      INTEGER                             , INTENT( in    ) ::   kt        ! time step
287      INTEGER                             , INTENT( in    ) ::   Kbb, Krhs ! Time level indices
288      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT( inout ) ::   puu, pvv  ! Ocean velocities and trends (to be updated at open boundaries)
[6140]289      !
[3651]290      INTEGER  ::   jb, jk         ! dummy loop indices
[6140]291      INTEGER  ::   ib_bdy         ! loop index
[3651]292      INTEGER  ::   ii, ij, igrd   ! local integers
293      REAL(wp) ::   zwgt           ! boundary weight
294      !!----------------------------------------------------------------------
295      !
[9124]296      IF( ln_timing )   CALL timing_start('bdy_dyn3d_dmp')
[3651]297      !
298      DO ib_bdy=1, nb_bdy
[4292]299         IF ( ln_dyn3d_dmp(ib_bdy) .and. cn_dyn3d(ib_bdy) /= 'none' ) THEN
[3651]300            igrd = 2                      ! Relaxation of zonal velocity
301            DO jb = 1, idx_bdy(ib_bdy)%nblen(igrd)
302               ii   = idx_bdy(ib_bdy)%nbi(jb,igrd)
303               ij   = idx_bdy(ib_bdy)%nbj(jb,igrd)
304               zwgt = idx_bdy(ib_bdy)%nbd(jb,igrd)
305               DO jk = 1, jpkm1
[10957]306                  puu(ii,ij,jk,Krhs) = ( puu(ii,ij,jk,Krhs) + zwgt * ( dta_bdy(ib_bdy)%u3d(jb,jk) - &
307                                   puu(ii,ij,jk,Kbb) + uu_b(ii,ij,Kbb)) ) * umask(ii,ij,jk)
[3651]308               END DO
309            END DO
310            !
311            igrd = 3                      ! Relaxation of meridional velocity
312            DO jb = 1, idx_bdy(ib_bdy)%nblen(igrd)
313               ii   = idx_bdy(ib_bdy)%nbi(jb,igrd)
314               ij   = idx_bdy(ib_bdy)%nbj(jb,igrd)
315               zwgt = idx_bdy(ib_bdy)%nbd(jb,igrd)
316               DO jk = 1, jpkm1
[10957]317                  pvv(ii,ij,jk,Krhs) = ( pvv(ii,ij,jk,Krhs) + zwgt * ( dta_bdy(ib_bdy)%v3d(jb,jk) -  &
318                                   pvv(ii,ij,jk,Kbb) + vv_b(ii,ij,Kbb)) ) * vmask(ii,ij,jk)
[3651]319               END DO
320            END DO
321         ENDIF
[6140]322      END DO
[3651]323      !
[10957]324      CALL lbc_lnk_multi( 'bdydyn3d', puu(:,:,:,Krhs), 'U', -1.,  pvv(:,:,:,Krhs), 'V', -1. )   ! Boundary points should be updated
[3651]325      !
[9124]326      IF( ln_timing )   CALL timing_stop('bdy_dyn3d_dmp')
[6140]327      !
[3651]328   END SUBROUTINE bdy_dyn3d_dmp
329
[9124]330
[10957]331   SUBROUTINE bdy_dyn3d_nmn( puu, pvv, Kaa, idx, ib_bdy )
[7646]332      !!----------------------------------------------------------------------
333      !!                 ***  SUBROUTINE bdy_dyn3d_nmn  ***
334      !!             
335      !!              - Apply Neumann condition to baroclinic velocities.
336      !!              - Wrapper routine for bdy_nmn
337      !!
338      !!
339      !!----------------------------------------------------------------------
[10957]340      INTEGER                             , INTENT( in    ) ::   Kaa       ! Time level index
341      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT( inout ) ::   puu, pvv  ! Ocean velocities (to be updated at open boundaries)
342      TYPE(OBC_INDEX)                     , INTENT( in    ) ::   idx       ! OBC indices
343      INTEGER                             , INTENT( in    ) ::   ib_bdy    ! BDY set index
[3117]344
[7646]345      INTEGER  ::   jb, igrd                               ! dummy loop indices
346      !!----------------------------------------------------------------------
347      !
[10957]348      !! Note that at this stage the puu(:,:,:,Kbb) and puu(:,:,:,Kaa) arrays contain the baroclinic velocities.
[7646]349      !
350      igrd = 2      ! Neumann bc on u-velocity;
351      !           
[10957]352      CALL bdy_nmn( idx, igrd, puu(:,:,:,Kaa) )
[7646]353
354      igrd = 3      ! Neumann bc on v-velocity
355     
[10957]356      CALL bdy_nmn( idx, igrd, pvv(:,:,:,Kaa) )
[7646]357      !
[10957]358      CALL lbc_bdy_lnk( 'bdydyn3d', puu(:,:,:,Kaa), 'U', -1., ib_bdy )    ! Boundary points should be updated
359      CALL lbc_bdy_lnk( 'bdydyn3d', pvv(:,:,:,Kaa), 'V', -1., ib_bdy )
[7646]360      !
361   END SUBROUTINE bdy_dyn3d_nmn
362
[3117]363   !!======================================================================
364END MODULE bdydyn3d
Note: See TracBrowser for help on using the repository browser.