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.
Changeset 3490 for branches/2012/dev_r3327_MERCATOR1_BDY/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90 – NEMO

Ignore:
Timestamp:
2012-10-08T16:27:20+02:00 (12 years ago)
Author:
cbricaud
Message:

add Jerome Chanut 's modications for BDY, Mercator_1 2012 task

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3327_MERCATOR1_BDY/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90

    r3367 r3490  
    192192            IF( PRESENT(jit) ) THEN 
    193193               ! Update barotropic boundary conditions only 
    194                ! jit is optional argument for fld_read and tide_update 
     194               ! jit is optional argument for fld_read and bdytide_update 
    195195               IF( nn_dyn2d(ib_bdy) .gt. 0 ) THEN 
    196196                  IF( nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
     
    200200                  ENDIF 
    201201                  IF (nn_tra(ib_bdy).ne.4) THEN 
    202                    IF (nn_dyn2d_dta(ib_bdy).eq.1.or.nn_dyn2d_dta(ib_bdy).eq.3.or.(ln_full_vel_array(ib_bdy).and.nn_dyn3d_dta(ib_bdy).eq.1)) THEN 
    203                      ! For the runoff case, no need to update the forcing (already done in the baroclinic part) 
    204                      jend = nb_bdy_fld(ib_bdy) 
    205                      IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 
    206                      CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), jit=jit, time_offset=time_offset ) 
    207                      IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 
    208                      ! If full velocities in boundary data then split into barotropic and baroclinic data 
    209                      IF( ln_full_vel_array(ib_bdy) .and.                                             & 
    210                     &    ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 
    211                         igrd = 2                      ! zonal velocity 
    212                         dta_bdy(ib_bdy)%u2d(:) = 0.0 
    213                         DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
    214                            ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    215                            ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    216                            DO ik = 1, jpkm1 
    217                               dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 
    218                     &                          + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 
     202                     IF (nn_dyn2d_dta(ib_bdy).eq.1.or.nn_dyn2d_dta(ib_bdy).eq.3.or.(ln_full_vel_array(ib_bdy).and.nn_dyn3d_dta(ib_bdy).eq.1)) THEN 
     203                        ! For the runoff case, no need to update the forcing (already done in the baroclinic part) 
     204                        jend = nb_bdy_fld(ib_bdy) 
     205                        IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 
     206                        CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), jit=jit, time_offset=time_offset ) 
     207                        IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 
     208                        ! If full velocities in boundary data then split into barotropic and baroclinic data 
     209                        IF( ln_full_vel_array(ib_bdy) .and.                                             & 
     210                       &    ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 
     211                           igrd = 2                      ! zonal velocity 
     212                           dta_bdy(ib_bdy)%u2d(:) = 0.0 
     213                           DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     214                              ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     215                              ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     216                              DO ik = 1, jpkm1 
     217                                 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 
     218                       &                          + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 
     219                              END DO 
     220                              dta_bdy(ib_bdy)%u2d(ib) =  dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 
     221                              DO ik = 1, jpkm1 
     222                                 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 
     223                              END DO 
    219224                           END DO 
    220                            dta_bdy(ib_bdy)%u2d(ib) =  dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 
    221                            DO ik = 1, jpkm1 
    222                               dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 
     225                           igrd = 3                      ! meridional velocity 
     226                           dta_bdy(ib_bdy)%v2d(:) = 0.0 
     227                           DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     228                              ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     229                              ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     230                              DO ik = 1, jpkm1 
     231                                 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 
     232                       &                       + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 
     233                              END DO 
     234                              dta_bdy(ib_bdy)%v2d(ib) =  dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 
     235                              DO ik = 1, jpkm1 
     236                                 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 
     237                              END DO 
    223238                           END DO 
    224                         END DO 
    225                         igrd = 3                      ! meridional velocity 
    226                         dta_bdy(ib_bdy)%v2d(:) = 0.0 
    227                         DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
    228                            ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    229                            ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    230                            DO ik = 1, jpkm1 
    231                               dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 
    232                     &                       + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 
    233                            END DO 
    234                            dta_bdy(ib_bdy)%v2d(ib) =  dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 
    235                            DO ik = 1, jpkm1 
    236                               dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 
    237                            END DO 
    238                         END DO 
    239                      ENDIF                     
    240                    ENDIF 
    241                    IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
    242                       CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy),   &  
    243                       &                 jit=jit, time_offset=time_offset ) 
    244                    ENDIF 
     239                        ENDIF                     
     240                     ENDIF 
     241                     IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
     242                        CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy),   &  
     243                          &                 jit=jit, time_offset=time_offset ) 
     244                     ENDIF 
    245245                  ENDIF 
    246246               ENDIF 
     
    306306                  ENDIF 
    307307                  IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
    308                      CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset ) 
     308                     CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset ) 
    309309                  ENDIF 
    310310               ENDIF 
     
    378378      ! Set nn_dta 
    379379      DO ib_bdy = 1, nb_bdy 
    380          IF (nn_dyn2d_dta(ib_bdy).eq.1.OR.nn_dyn2d_dta(ib_bdy).eq.3) nn_dta(ib_bdy) = 1 
    381          IF (nn_dyn3d_dta(ib_bdy).ge.1) nn_dta(ib_bdy) = 1 
    382          IF (nn_tra_dta  (ib_bdy).ge.1) nn_dta(ib_bdy) = 1 
    383 #if defined key_lim2 
    384          IF (nn_ice_lim2_dta(ib_bdy).eq.1) nn_dta(ib_bdy) = 1 
    385 #endif 
    386          IF (lwp) THEN 
    387             WRITE(numout,*) 'Bdy package number ',ib_bdy 
    388             IF (nn_dta(ib_bdy).eq.1) THEN 
    389                WRITE(numout,*) 'We use external data' 
    390             ELSE 
    391                WRITE(numout,*) 'We do not use external data' 
    392             ENDIF 
    393          ENDIF 
     380         nn_dta(ib_bdy) = MAX(  nn_dyn2d_dta(ib_bdy)       & 
     381                               ,nn_dyn3d_dta(ib_bdy)       & 
     382                               ,nn_tra_dta(ib_bdy)         & 
     383#if defined key_lim2 
     384                               ,nn_ice_lim2_dta(ib_bdy)    & 
     385#endif 
     386                              ) 
     387         IF(nn_dta(ib_bdy) .gt. 1) nn_dta(ib_bdy) = 1 
    394388      END DO 
    395389 
Note: See TracChangeset for help on using the changeset viewer.