Changeset 15654
- Timestamp:
- 2022-01-19T11:36:34+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/r14075_read_tides_fix/src/OCE/BDY/bdytides.F90
r14075 r15654 69 69 INTEGER :: ii, ij ! dummy loop indices 70 70 INTEGER :: inum, igrd 71 INTEGER :: isz ! bdy data size71 INTEGER, DIMENSION(3) :: ilen0 ! length of boundary data (from OBC arrays) 72 72 INTEGER :: ios ! Local integer output status for namelist read 73 73 CHARACTER(len=80) :: clfile ! full file name for tidal input file … … 117 117 IF(lwp) WRITE(numout,*) ' ' 118 118 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 119 124 ! Allocate space for tidal harmonics data - get size from BDY data arrays 120 125 ! Allocate also slow varying data in the case of time splitting: … … 122 127 ! ----------------------------------------------------------------------- 123 128 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 ALLOCATE( td%ssh0( ilen0(1), nb_harmo, 2 ), td%ssh( ilen0(1), nb_harmo, 2 ), dta_bdy_s(ib_bdy)%ssh( ilen0(1) ) ) 126 130 dta_bdy_s(ib_bdy)%ssh(:) = 0._wp ! needed? 127 131 ENDIF 128 132 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 ) ) 133 ALLOCATE( td%u0 ( ilen0(2), nb_harmo, 2 ), td%u ( ilen0(2), nb_harmo, 2 ), dta_bdy_s(ib_bdy)%u2d( ilen0(2) ) ) 131 134 dta_bdy_s(ib_bdy)%u2d(:) = 0._wp ! needed? 132 135 ENDIF 133 136 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 ) ) 137 ALLOCATE( td%v0 ( ilen0(3), nb_harmo, 2 ), td%v ( ilen0(3), nb_harmo, 2 ), dta_bdy_s(ib_bdy)%v2d( ilen0(3) ) ) 136 138 dta_bdy_s(ib_bdy)%v2d(:) = 0._wp ! needed? 137 139 ENDIF … … 214 216 ! ! SSH fields 215 217 IF( ASSOCIATED(dta%ssh) ) THEN ! we use bdy ssh on this mpi subdomain 216 isz = SIZE(dta%ssh)217 218 clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_T.nc' 218 219 CALL iom_open( clfile, inum ) 219 CALL fld_map( inum, 'z1', dta_read(1:i sz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) )220 td%ssh0(:,itide,1) = dta_read(1:i sz,1,1)221 CALL fld_map( inum, 'z2', dta_read(1:i sz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) )222 td%ssh0(:,itide,2) = dta_read(1:i sz,1,1)220 CALL fld_map( inum, 'z1', dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) 221 td%ssh0(:,itide,1) = dta_read(1:ilen0(1),1,1) 222 CALL fld_map( inum, 'z2', dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) 223 td%ssh0(:,itide,2) = dta_read(1:ilen0(1),1,1) 223 224 CALL iom_close( inum ) 224 225 ENDIF 225 226 ! ! U fields 226 227 IF( ASSOCIATED(dta%u2d) ) THEN ! we use bdy u2d on this mpi subdomain 227 isz = SIZE(dta%u2d)228 228 clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_U.nc' 229 229 CALL iom_open( clfile, inum ) 230 CALL fld_map( inum, 'u1', dta_read(1:i sz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) )231 td%u0(:,itide,1) = dta_read(1:i sz,1,1)232 CALL fld_map( inum, 'u2', dta_read(1:i sz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) )233 td%u0(:,itide,2) = dta_read(1:i sz,1,1)230 CALL fld_map( inum, 'u1', dta_read(1:ilen0(2),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) 231 td%u0(:,itide,1) = dta_read(1:ilen0(2),1,1) 232 CALL fld_map( inum, 'u2', dta_read(1:ilen0(2),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) 233 td%u0(:,itide,2) = dta_read(1:ilen0(2),1,1) 234 234 CALL iom_close( inum ) 235 235 ENDIF 236 236 ! ! V fields 237 237 IF( ASSOCIATED(dta%v2d) ) THEN ! we use bdy v2d on this mpi subdomain 238 isz = SIZE(dta%v2d)239 238 clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_V.nc' 240 239 CALL iom_open( clfile, inum ) 241 CALL fld_map( inum, 'v1', dta_read(1:i sz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) )242 td%v0(:,itide,1) = dta_read(1:i sz,1,1)243 CALL fld_map( inum, 'v2', dta_read(1:i sz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) )244 td%v0(:,itide,2) = dta_read(1:i sz,1,1)240 CALL fld_map( inum, 'v1', dta_read(1:ilen0(3),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) 241 td%v0(:,itide,1) = dta_read(1:ilen0(3),1,1) 242 CALL fld_map( inum, 'v2', dta_read(1:ilen0(3),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) 243 td%v0(:,itide,2) = dta_read(1:ilen0(3),1,1) 245 244 CALL iom_close( inum ) 246 245 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.