Changeset 7646 for trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
- Timestamp:
- 2017-02-06T10:25:03+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
r6140 r7646 11 11 !! 3.5 ! 2013-07 (J. Chanut) Compliant with time splitting changes 12 12 !!---------------------------------------------------------------------- 13 #if defined key_bdy14 !!----------------------------------------------------------------------15 !! 'key_bdy' Open Boundary Condition16 !!----------------------------------------------------------------------17 13 !! bdytide_init : read of namelist and initialisation of tidal harmonics data 18 14 !! tide_update : calculation of tidal forcing at each timestep … … 21 17 USE dom_oce ! ocean space and time domain 22 18 USE phycst ! physical constants 23 USE bdy_par ! Unstructured boundary parameters24 19 USE bdy_oce ! ocean open boundary conditions 25 20 USE tideini ! … … 100 95 101 96 DO ib_bdy = 1, nb_bdy 102 IF( nn_dyn2d_dta(ib_bdy) .ge.2 ) THEN103 97 IF( nn_dyn2d_dta(ib_bdy) >= 2 ) THEN 98 ! 104 99 td => tides(ib_bdy) 105 100 nblen => idx_bdy(ib_bdy)%nblen … … 134 129 ! JC: If FRS scheme is used, we assume that tidal is needed over the whole 135 130 ! relaxation area 136 IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN 137 ilen0(:)=nblen(:) 138 ELSE 139 ilen0(:)=nblenrim(:) 131 IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN ; ilen0(:) = nblen (:) 132 ELSE ; ilen0(:) = nblenrim(:) 140 133 ENDIF 141 134 … … 156 149 td%v (:,:,:) = 0._wp 157 150 158 IF (ln_bdytide_2ddta) THEN151 IF( ln_bdytide_2ddta ) THEN 159 152 ! It is assumed that each data file contains all complex harmonic amplitudes 160 ! given on the data domain (ie global, jpidta x jpjdta)161 ! 162 CALL wrk_alloc( jpi, jpj,zti, ztr )153 ! given on the global domain (ie global, jpiglo x jpjglo) 154 ! 155 CALL wrk_alloc( jpi,jpj, zti, ztr ) 163 156 ! 164 157 ! SSH fields 165 158 clfile = TRIM(filtide)//'_grid_T.nc' 166 CALL iom_open (clfile , inum )159 CALL iom_open( clfile , inum ) 167 160 igrd = 1 ! Everything is at T-points here 168 161 DO itide = 1, nb_harmo 169 CALL iom_get ( inum, jpdom_data, TRIM(Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) )170 CALL iom_get ( inum, jpdom_data, TRIM(Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) )162 CALL iom_get( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) ) 163 CALL iom_get( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) ) 171 164 DO ib = 1, ilen0(igrd) 172 165 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) … … 180 173 ! U fields 181 174 clfile = TRIM(filtide)//'_grid_U.nc' 182 CALL iom_open (clfile , inum )175 CALL iom_open( clfile , inum ) 183 176 igrd = 2 ! Everything is at U-points here 184 177 DO itide = 1, nb_harmo 185 CALL iom_get ( inum, jpdom_ data, TRIM(Wave(ntide(itide))%cname_tide)//'_u1', ztr(:,:) )186 CALL iom_get ( inum, jpdom_ data, TRIM(Wave(ntide(itide))%cname_tide)//'_u2', zti(:,:) )178 CALL iom_get ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_u1', ztr(:,:) ) 179 CALL iom_get ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_u2', zti(:,:) ) 187 180 DO ib = 1, ilen0(igrd) 188 181 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) … … 196 189 ! V fields 197 190 clfile = TRIM(filtide)//'_grid_V.nc' 198 CALL iom_open (clfile , inum )191 CALL iom_open( clfile , inum ) 199 192 igrd = 3 ! Everything is at V-points here 200 193 DO itide = 1, nb_harmo 201 CALL iom_get ( inum, jpdom_ data, TRIM(Wave(ntide(itide))%cname_tide)//'_v1', ztr(:,:) )202 CALL iom_get ( inum, jpdom_ data, TRIM(Wave(ntide(itide))%cname_tide)//'_v2', zti(:,:) )194 CALL iom_get ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_v1', ztr(:,:) ) 195 CALL iom_get ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_v2', zti(:,:) ) 203 196 DO ib = 1, ilen0(igrd) 204 197 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) … … 210 203 CALL iom_close( inum ) 211 204 ! 212 CALL wrk_dealloc( jpi, jpj,ztr, zti )205 CALL wrk_dealloc( jpi,jpj, ztr, zti ) 213 206 ! 214 207 ELSE … … 219 212 ! 220 213 ! Set map structure 221 ibmap_ptr(1)%ptr => idx_bdy(ib_bdy)%nbmap(:,1) 222 ibmap_ptr(1)%ll_unstruc = ln_coords_file(ib_bdy) 223 ibmap_ptr(2)%ptr => idx_bdy(ib_bdy)%nbmap(:,2) 224 ibmap_ptr(2)%ll_unstruc = ln_coords_file(ib_bdy) 225 ibmap_ptr(3)%ptr => idx_bdy(ib_bdy)%nbmap(:,3) 226 ibmap_ptr(3)%ll_unstruc = ln_coords_file(ib_bdy) 214 ibmap_ptr(1)%ptr => idx_bdy(ib_bdy)%nbmap(:,1) ; ibmap_ptr(1)%ll_unstruc = ln_coords_file(ib_bdy) 215 ibmap_ptr(2)%ptr => idx_bdy(ib_bdy)%nbmap(:,2) ; ibmap_ptr(2)%ll_unstruc = ln_coords_file(ib_bdy) 216 ibmap_ptr(3)%ptr => idx_bdy(ib_bdy)%nbmap(:,3) ; ibmap_ptr(3)%ll_unstruc = ln_coords_file(ib_bdy) 227 217 228 218 ! Open files and read in tidal forcing data … … 258 248 ! 259 249 DEALLOCATE( dta_read ) 250 ! 260 251 ENDIF ! ln_bdytide_2ddta=.true. 261 252 ! … … 275 266 dta_bdy_s(ib_bdy)%v2d(:) = 0._wp 276 267 ! 277 ENDIF ! nn_dyn2d_dta(ib_bdy) .ge.2268 ENDIF ! nn_dyn2d_dta(ib_bdy) >= 2 278 269 ! 279 270 END DO ! loop on ib_bdy … … 376 367 END SUBROUTINE bdytide_update 377 368 369 378 370 SUBROUTINE bdy_dta_tides( kt, kit, time_offset ) 379 371 !!---------------------------------------------------------------------- … … 422 414 423 415 DO ib_bdy = 1,nb_bdy 424 425 IF ( nn_dyn2d_dta(ib_bdy) .ge.2 ) THEN426 416 ! 417 IF( nn_dyn2d_dta(ib_bdy) >= 2 ) THEN 418 ! 427 419 nblen(1:jpbgrd) = idx_bdy(ib_bdy)%nblen(1:jpbgrd) 428 420 nblenrim(1:jpbgrd) = idx_bdy(ib_bdy)%nblenrim(1:jpbgrd) 429 430 IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN 431 ilen0(:)=nblen(:) 432 ELSE 433 ilen0(:)=nblenrim(:) 421 ! 422 IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN ; ilen0(:) = nblen (:) 423 ELSE ; ilen0(:) = nblenrim(:) 434 424 ENDIF 435 425 ! 436 426 ! We refresh nodal factors every day below 437 427 ! This should be done somewhere else … … 598 588 END SUBROUTINE tide_init_velocities 599 589 600 #else601 !!----------------------------------------------------------------------602 !! Dummy module NO Unstruct Open Boundary Conditions for tides603 !!----------------------------------------------------------------------604 CONTAINS605 SUBROUTINE bdytide_init ! Empty routine606 WRITE(*,*) 'bdytide_init: You should not have seen this print! error?'607 END SUBROUTINE bdytide_init608 SUBROUTINE bdytide_update( kt, jit ) ! Empty routine609 WRITE(*,*) 'bdytide_update: You should not have seen this print! error?', kt, jit610 END SUBROUTINE bdytide_update611 SUBROUTINE bdy_dta_tides( kt, kit, time_offset ) ! Empty routine612 INTEGER, INTENT( in ) :: kt ! Dummy argument empty routine613 INTEGER, INTENT( in ),OPTIONAL :: kit ! Dummy argument empty routine614 INTEGER, INTENT( in ),OPTIONAL :: time_offset ! Dummy argument empty routine615 WRITE(*,*) 'bdy_dta_tides: You should not have seen this print! error?', kt, jit616 END SUBROUTINE bdy_dta_tides617 #endif618 619 590 !!====================================================================== 620 591 END MODULE bdytides
Note: See TracChangeset
for help on using the changeset viewer.