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 15683 for NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate – NEMO

Ignore:
Timestamp:
2022-02-02T16:49:18+01:00 (2 years ago)
Author:
hadjt
Message:

Bugfix
Added Juan Castillo bugfix to BDY/bdytides.F90. This doesn't affect my simulations (idx_bdy(ib_bdy)%nblenrim(:) == SIZE(dta%ssh)), but may affect future ones.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/BDY/bdytides.F90

    r14250 r15683  
    6969      INTEGER                                   ::   ii, ij              ! dummy loop indices 
    7070      INTEGER                                   ::   inum, igrd 
    71       INTEGER                                   ::   isz                 ! bdy data size 
     71      INTEGER, DIMENSION(3)                     ::   ilen0               ! length of boundary data (from OBC arrays) 
    7272      INTEGER                                   ::   ios                 ! Local integer output status for namelist read 
    7373      CHARACTER(len=80)                         ::   clfile              ! full file name for tidal input file  
     
    117117            IF(lwp) WRITE(numout,*) ' ' 
    118118 
     119            ! If FRS scheme is used, we assume that tidal is needed over the whole relaxation area       
     120            IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN   ;   ilen0(:) = idx_bdy(ib_bdy)%nblen   (:) 
     121            ELSE                                   ;   ilen0(:) = idx_bdy(ib_bdy)%nblenrim(:) 
     122            ENDIF 
     123 
    119124            ! Allocate space for tidal harmonics data - get size from BDY data arrays 
    120125            ! Allocate also slow varying data in the case of time splitting: 
     
    122127            ! ----------------------------------------------------------------------- 
    123128            IF( ASSOCIATED(dta%ssh) ) THEN   ! we use bdy ssh on this mpi subdomain 
    124                isz = SIZE(dta%ssh) 
    125                ALLOCATE( td%ssh0( isz, nb_harmo, 2 ), td%ssh( isz, nb_harmo, 2 ), dta_bdy_s(ib_bdy)%ssh( isz ) ) 
     129               !IF(lwp) WRITE(numout,*) '             nambdy_tide bdytides.F90 JCastillo Tide Update SSH: ', ilen0(1), SIZE(dta%ssh) 
     130               ALLOCATE( td%ssh0( ilen0(1), nb_harmo, 2 ), td%ssh( ilen0(1), nb_harmo, 2 ), dta_bdy_s(ib_bdy)%ssh( ilen0(1) ) ) 
    126131               dta_bdy_s(ib_bdy)%ssh(:) = 0._wp   ! needed? 
    127132            ENDIF 
    128133            IF( ASSOCIATED(dta%u2d) ) THEN   ! we use bdy u2d on this mpi subdomain 
    129                isz = SIZE(dta%u2d) 
    130                ALLOCATE( td%u0  ( isz, nb_harmo, 2 ), td%u  ( isz, nb_harmo, 2 ), dta_bdy_s(ib_bdy)%u2d( isz ) ) 
     134               !IF(lwp) WRITE(numout,*) '             nambdy_tide bdytides.F90 JCastillo Tide Update U: ', ilen0(2), SIZE(dta%u2d) 
     135               ALLOCATE( td%u0  ( ilen0(2), nb_harmo, 2 ), td%u  ( ilen0(2), nb_harmo, 2 ), dta_bdy_s(ib_bdy)%u2d( ilen0(2) ) ) 
    131136               dta_bdy_s(ib_bdy)%u2d(:) = 0._wp   ! needed? 
    132137            ENDIF 
    133138            IF( ASSOCIATED(dta%v2d) ) THEN   ! we use bdy v2d on this mpi subdomain 
    134                isz = SIZE(dta%v2d) 
    135                ALLOCATE( td%v0  ( isz, nb_harmo, 2 ), td%v  ( isz, nb_harmo, 2 ), dta_bdy_s(ib_bdy)%v2d( isz ) ) 
     139               !IF(lwp) WRITE(numout,*) '             nambdy_tide bdytides.F90 JCastillo Tide Update V: ', ilen0(3), SIZE(dta%v2d) 
     140               ALLOCATE( td%v0  ( ilen0(3), nb_harmo, 2 ), td%v  ( ilen0(3), nb_harmo, 2 ), dta_bdy_s(ib_bdy)%v2d( ilen0(3) ) ) 
    136141               dta_bdy_s(ib_bdy)%v2d(:) = 0._wp   ! needed? 
    137142            ENDIF 
     
    147152               ! 
    148153               ! SSH fields 
     154               IF( ASSOCIATED(dta%ssh) ) THEN   ! we use bdy ssh on this mpi subdomain 
    149155                  clfile = TRIM(filtide)//'_grid_T.nc' 
    150156                  CALL iom_open( clfile , inum )  
     
    153159                     CALL iom_get( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) ) 
    154160                     CALL iom_get( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) )  
    155                      IF( ASSOCIATED(dta%ssh) ) THEN   ! we use bdy ssh on this mpi subdomain 
    156161                     DO ib = 1, SIZE(dta%ssh) 
    157162                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     
    160165                        td%ssh0(ib,itide,2) = zti(ii,ij) 
    161166                     END DO 
    162                      ENDIF 
    163167                  END DO 
    164168                  CALL iom_close( inum ) 
     169               END IF 
    165170               ! 
    166171               ! U fields 
     172               IF( ASSOCIATED(dta%u2d) ) THEN   ! we use bdy u2d on this mpi subdomain 
    167173                  clfile = TRIM(filtide)//'_grid_U.nc' 
    168174                  CALL iom_open( clfile , inum )  
     
    171177                     CALL iom_get  ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_u1', ztr(:,:) ) 
    172178                     CALL iom_get  ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_u2', zti(:,:) ) 
    173                      IF( ASSOCIATED(dta%u2d) ) THEN   ! we use bdy u2d on this mpi subdomain 
    174179                     DO ib = 1, SIZE(dta%u2d) 
    175180                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     
    178183                        td%u0(ib,itide,2) = zti(ii,ij) 
    179184                     END DO 
    180                   END IF 
    181185                  END DO 
    182                CALL iom_close( inum ) 
     186                  CALL iom_close( inum ) 
     187               END IF 
    183188               ! 
    184189               ! V fields 
     190               IF( ASSOCIATED(dta%v2d) ) THEN   ! we use bdy v2d on this mpi subdomain 
    185191                  clfile = TRIM(filtide)//'_grid_V.nc' 
    186192                  CALL iom_open( clfile , inum )  
     
    189195                     CALL iom_get  ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_v1', ztr(:,:) ) 
    190196                     CALL iom_get  ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_v2', zti(:,:) ) 
    191                      IF( ASSOCIATED(dta%v2d) ) THEN   ! we use bdy v2d on this mpi subdomain 
    192197                     DO ib = 1, SIZE(dta%v2d) 
    193198                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     
    196201                        td%v0(ib,itide,2) = zti(ii,ij) 
    197202                     END DO 
    198                   END IF 
    199203                  END DO 
    200                CALL iom_close( inum ) 
     204                  CALL iom_close( inum ) 
     205               END IF 
    201206               ! 
    202207               DEALLOCATE( ztr, zti )  
     
    214219                  !                                                              ! SSH fields 
    215220                  IF( ASSOCIATED(dta%ssh) ) THEN   ! we use bdy ssh on this mpi subdomain 
    216                      isz = SIZE(dta%ssh) 
    217221                     clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_T.nc' 
    218222                     CALL iom_open( clfile, inum ) 
    219                      CALL fld_map( inum, 'z1', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) 
    220                      td%ssh0(:,itide,1) = dta_read(1:isz,1,1) 
    221                      CALL fld_map( inum, 'z2', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) 
    222                      td%ssh0(:,itide,2) = dta_read(1:isz,1,1) 
     223                     CALL fld_map( inum, 'z1', dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) 
     224                     td%ssh0(:,itide,1) = dta_read(1:ilen0(1),1,1) 
     225                     CALL fld_map( inum, 'z2', dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) 
     226                     td%ssh0(:,itide,2) = dta_read(1:ilen0(1),1,1) 
    223227                     CALL iom_close( inum ) 
    224228                  ENDIF 
    225229                  !                                                              ! U fields 
    226230                  IF( ASSOCIATED(dta%u2d) ) THEN   ! we use bdy u2d on this mpi subdomain 
    227                      isz = SIZE(dta%u2d) 
    228231                     clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_U.nc' 
    229232                     CALL iom_open( clfile, inum ) 
    230                      CALL fld_map( inum, 'u1', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) 
    231                      td%u0(:,itide,1) = dta_read(1:isz,1,1) 
    232                      CALL fld_map( inum, 'u2', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) 
    233                      td%u0(:,itide,2) = dta_read(1:isz,1,1) 
     233                     CALL fld_map( inum, 'u1', dta_read(1:ilen0(2),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) 
     234                     td%u0(:,itide,1) = dta_read(1:ilen0(2),1,1) 
     235                     CALL fld_map( inum, 'u2', dta_read(1:ilen0(2),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) 
     236                     td%u0(:,itide,2) = dta_read(1:ilen0(2),1,1) 
    234237                     CALL iom_close( inum ) 
    235238                  ENDIF 
    236239                  !                                                              ! V fields 
    237240                  IF( ASSOCIATED(dta%v2d) ) THEN   ! we use bdy v2d on this mpi subdomain 
    238                      isz = SIZE(dta%v2d) 
    239241                     clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_V.nc' 
    240242                     CALL iom_open( clfile, inum ) 
    241                      CALL fld_map( inum, 'v1', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) 
    242                      td%v0(:,itide,1) = dta_read(1:isz,1,1) 
    243                      CALL fld_map( inum, 'v2', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) 
    244                      td%v0(:,itide,2) = dta_read(1:isz,1,1) 
     243                     CALL fld_map( inum, 'v1', dta_read(1:ilen0(3),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) 
     244                     td%v0(:,itide,1) = dta_read(1:ilen0(3),1,1) 
     245                     CALL fld_map( inum, 'v2', dta_read(1:ilen0(3),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) 
     246                     td%v0(:,itide,2) = dta_read(1:ilen0(3),1,1) 
    245247                     CALL iom_close( inum ) 
    246248                  ENDIF 
Note: See TracChangeset for help on using the changeset viewer.