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 7342 for branches/2016/dev_NOC_2016/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90 – NEMO

Ignore:
Timestamp:
2016-11-25T17:17:41+01:00 (7 years ago)
Author:
acc
Message:

Ticket #1802. Merged in changes from 6998:HEAD of NERC/dev_r6998_ORCHESTRA (BDY changes only). This branch already includes trunk changes up to rev 7161

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_NOC_2016/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r6140 r7342  
    100100         &             cn_ice_lim, nn_ice_lim_dta,                           & 
    101101         &             rn_ice_tem, rn_ice_sal, rn_ice_age,                 & 
    102          &             ln_vol, nn_volctl, nn_rimwidth 
     102         &             ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy 
    103103         ! 
    104104      NAMELIST/nambdy_index/ ctypebdy, nbdyind, nbdybeg, nbdyend 
     
    209209             dta_bdy(ib_bdy)%ll_u3d = .true. 
    210210             dta_bdy(ib_bdy)%ll_v3d = .true. 
     211          CASE('neumann') 
     212             IF(lwp) WRITE(numout,*) '      Neumann conditions' 
     213             dta_bdy(ib_bdy)%ll_u3d = .false. 
     214             dta_bdy(ib_bdy)%ll_v3d = .false. 
     215          CASE('zerograd') 
     216             IF(lwp) WRITE(numout,*) '      Zero gradient for baroclinic velocities' 
     217             dta_bdy(ib_bdy)%ll_u3d = .false. 
     218             dta_bdy(ib_bdy)%ll_v3d = .false. 
    211219          CASE('zero') 
    212220             IF(lwp) WRITE(numout,*) '      Zero baroclinic velocities (runoff case)' 
     
    377385          IF(lwp) WRITE(numout,*) 'No volume correction applied at open boundaries' 
    378386          IF(lwp) WRITE(numout,*) 
     387        ENDIF 
     388        IF( nb_jpk_bdy > 0 ) THEN 
     389           IF(lwp) WRITE(numout,*) '*** open boundary will be interpolate in the vertical onto the native grid ***' 
     390        ELSE 
     391           IF(lwp) WRITE(numout,*) '*** open boundary will be read straight onto the native grid without vertical interpolation ***' 
    379392        ENDIF 
    380393     ENDIF 
     
    499512            &      nbrdta(jpbdta, jpbgrd, nb_bdy) ) 
    500513 
    501          ALLOCATE( dta_global(jpbdtau, 1, jpk) ) 
    502          IF ( icount>0 ) ALLOCATE( dta_global2(jpbdtas, nrimmax, jpk) ) 
     514         IF( nb_jpk_bdy>0 ) THEN 
     515            ALLOCATE( dta_global(jpbdtau, 1, nb_jpk_bdy) ) 
     516            ALLOCATE( dta_global_z(jpbdtau, 1, nb_jpk_bdy) ) 
     517            ALLOCATE( dta_global_dz(jpbdtau, 1, nb_jpk_bdy) ) 
     518         ELSE 
     519            ALLOCATE( dta_global(jpbdtau, 1, jpk) ) 
     520            ALLOCATE( dta_global_z(jpbdtau, 1, jpk) ) ! needed ?? TODO 
     521            ALLOCATE( dta_global_dz(jpbdtau, 1, jpk) )! needed ?? TODO 
     522         ENDIF 
     523 
     524         IF ( icount>0 ) THEN 
     525            IF( nb_jpk_bdy>0 ) THEN 
     526               ALLOCATE( dta_global2(jpbdtas, nrimmax, nb_jpk_bdy) ) 
     527               ALLOCATE( dta_global2_z(jpbdtas, nrimmax, nb_jpk_bdy) ) 
     528               ALLOCATE( dta_global2_dz(jpbdtas, nrimmax, nb_jpk_bdy) ) 
     529            ELSE 
     530               ALLOCATE( dta_global2(jpbdtas, nrimmax, jpk) ) 
     531               ALLOCATE( dta_global2_z(jpbdtas, nrimmax, jpk) ) ! needed ?? TODO 
     532               ALLOCATE( dta_global2_dz(jpbdtas, nrimmax, jpk) )! needed ?? TODO   
     533            ENDIF 
     534         ENDIF 
    503535         !  
    504536      ENDIF 
     
    10921124      !          = 0  elsewhere    
    10931125  
     1126      bdytmask(:,:) = ssmask(:,:) 
     1127 
    10941128      IF( ln_mask_file ) THEN 
    10951129         CALL iom_open( cn_mask_file, inum ) 
     
    11081142         CALL lbc_lnk( bdyumask(:,:), 'U', 1. )   ;   CALL lbc_lnk( bdyvmask(:,:), 'V', 1. )      ! Lateral boundary cond. 
    11091143 
    1110  
    1111          ! Mask corrections 
    1112          ! ---------------- 
    1113          DO ik = 1, jpkm1 
    1114             DO ij = 1, jpj 
    1115                DO ii = 1, jpi 
    1116                   tmask(ii,ij,ik) = tmask(ii,ij,ik) * bdytmask(ii,ij) 
    1117                   umask(ii,ij,ik) = umask(ii,ij,ik) * bdyumask(ii,ij) 
    1118                   vmask(ii,ij,ik) = vmask(ii,ij,ik) * bdyvmask(ii,ij) 
    1119                END DO       
    1120             END DO 
    1121             DO ij = 2, jpjm1 
    1122                DO ii = 2, jpim1 
    1123                   fmask(ii,ij,ik) = fmask(ii,ij,ik) * bdytmask(ii,ij  ) * bdytmask(ii+1,ij  )   & 
    1124                      &                              * bdytmask(ii,ij+1) * bdytmask(ii+1,ij+1) 
    1125                END DO       
    1126             END DO 
    1127          END DO 
    1128          tmask_i (:,:) = ssmask(:,:) * tmask_i(:,:) 
    1129          ! 
    11301144      ENDIF ! ln_mask_file=.TRUE. 
    11311145       
    1132       bdytmask(:,:) = ssmask(:,:) 
    11331146      IF( .NOT.ln_mask_file ) THEN 
    11341147         ! If .not. ln_mask_file then we need to derive mask on U and V grid from mask on T grid here. 
Note: See TracChangeset for help on using the changeset viewer.