Changeset 3294 for trunk/NEMOGCM/NEMO/OPA_SRC/OBC
- Timestamp:
- 2012-01-28T17:44:18+01:00 (12 years ago)
- Location:
- trunk/NEMOGCM/NEMO/OPA_SRC/OBC
- Files:
-
- 4 edited
- 5 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obc_par.F90
r2715 r3294 101 101 !! Default option : NO open boundary condition 102 102 !!---------------------------------------------------------------------- 103 LOGICAL, PUBLIC, PARAMETER :: lk_obc = .FALSE. !: Ocean Boundary Condition flag 103 #if ! defined key_agrif 104 LOGICAL, PUBLIC, PARAMETER :: lk_obc = .FALSE. !: Ocean Boundary Condition flag 105 #else 106 LOGICAL, PUBLIC :: lk_obc = .FALSE. !: Ocean Boundary Condition flag 107 #endif 104 108 #endif 105 109 -
trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcdta.F90
r2722 r3294 304 304 IF (lp_obc_east) THEN ! East 305 305 DO ji = nie0 , nie1 306 sfoe(nje0:nje1,:) = temsk(nje0:nje1,:) * sn (ji+1 , nje0:nje1 , :) * tmask(ji+1,nje0:nje1 , :)307 tfoe(nje0:nje1,:) = temsk(nje0:nje1,:) * t n (ji+1 , nje0:nje1 , :) * tmask(ji+1,nje0:nje1 , :)308 ufoe(nje0:nje1,:) = uemsk(nje0:nje1,:) * un (ji , nje0:nje1 , :) * umask(ji, nje0:nje1 , :)309 vfoe(nje0:nje1,:) = vemsk(nje0:nje1,:) * vn (ji+1 , nje0:nje1 , :) * vmask(ji+1,nje0:nje1 , :)306 sfoe(nje0:nje1,:) = temsk(nje0:nje1,:) * tsn(ji+1 , nje0:nje1 , :,jp_sal) * tmask(ji+1,nje0:nje1 , :) 307 tfoe(nje0:nje1,:) = temsk(nje0:nje1,:) * tsn(ji+1 , nje0:nje1 , :,jp_tem) * tmask(ji+1,nje0:nje1 , :) 308 ufoe(nje0:nje1,:) = uemsk(nje0:nje1,:) * un (ji , nje0:nje1 , :) * umask(ji, nje0:nje1 , :) 309 vfoe(nje0:nje1,:) = vemsk(nje0:nje1,:) * vn (ji+1 , nje0:nje1 , :) * vmask(ji+1,nje0:nje1 , :) 310 310 END DO 311 311 ENDIF … … 313 313 IF (lp_obc_west) THEN ! West 314 314 DO ji = niw0 , niw1 315 sfow(njw0:njw1,:) = twmsk(njw0:njw1,:) * sn (ji , njw0:njw1 , :) * tmask(ji , njw0:njw1 , :)316 tfow(njw0:njw1,:) = twmsk(njw0:njw1,:) * t n (ji , njw0:njw1 , :) * tmask(ji , njw0:njw1 , :)317 ufow(njw0:njw1,:) = uwmsk(njw0:njw1,:) * un (ji , njw0:njw1 , :) * umask(ji , njw0:njw1 , :)318 vfow(njw0:njw1,:) = vwmsk(njw0:njw1,:) * vn (ji , njw0:njw1 , :) * vmask(ji , njw0:njw1 , :)315 sfow(njw0:njw1,:) = twmsk(njw0:njw1,:) * tsn(ji , njw0:njw1 , :,jp_sal) * tmask(ji , njw0:njw1 , :) 316 tfow(njw0:njw1,:) = twmsk(njw0:njw1,:) * tsn(ji , njw0:njw1 , :,jp_tem) * tmask(ji , njw0:njw1 , :) 317 ufow(njw0:njw1,:) = uwmsk(njw0:njw1,:) * un (ji , njw0:njw1 , :) * umask(ji , njw0:njw1 , :) 318 vfow(njw0:njw1,:) = vwmsk(njw0:njw1,:) * vn (ji , njw0:njw1 , :) * vmask(ji , njw0:njw1 , :) 319 319 END DO 320 320 ENDIF … … 322 322 IF (lp_obc_north) THEN ! North 323 323 DO jj = njn0 , njn1 324 sfon(nin0:nin1,:) = tnmsk(nin0:nin1,:) * sn (nin0:nin1 , jj+1 , :) * tmask(nin0:nin1 , jj+1 , :)325 tfon(nin0:nin1,:) = tnmsk(nin0:nin1,:) * t n (nin0:nin1 , jj+1 , :) * tmask(nin0:nin1 , jj+1 , :)326 ufon(nin0:nin1,:) = unmsk(nin0:nin1,:) * un (nin0:nin1 , jj+1 , :) * umask(nin0:nin1 , jj+1 , :)327 vfon(nin0:nin1,:) = vnmsk(nin0:nin1,:) * vn (nin0:nin1 , jj , :) * vmask(nin0:nin1 , jj , :)324 sfon(nin0:nin1,:) = tnmsk(nin0:nin1,:) * tsn(nin0:nin1 , jj+1 , :,jp_sal) * tmask(nin0:nin1 , jj+1 , :) 325 tfon(nin0:nin1,:) = tnmsk(nin0:nin1,:) * tsn(nin0:nin1 , jj+1 , :,jp_tem) * tmask(nin0:nin1 , jj+1 , :) 326 ufon(nin0:nin1,:) = unmsk(nin0:nin1,:) * un (nin0:nin1 , jj+1 , :) * umask(nin0:nin1 , jj+1 , :) 327 vfon(nin0:nin1,:) = vnmsk(nin0:nin1,:) * vn (nin0:nin1 , jj , :) * vmask(nin0:nin1 , jj , :) 328 328 END DO 329 329 ENDIF … … 331 331 IF (lp_obc_south) THEN ! South 332 332 DO jj = njs0 , njs1 333 sfos(nis0:nis1,:) = tsmsk(nis0:nis1,:) * sn (nis0:nis1 , jj , :) * tmask(nis0:nis1 , jj , :)334 tfos(nis0:nis1,:) = tsmsk(nis0:nis1,:) * t n (nis0:nis1 , jj , :) * tmask(nis0:nis1 , jj , :)335 ufos(nis0:nis1,:) = usmsk(nis0:nis1,:) * un (nis0:nis1 , jj , :) * umask(nis0:nis1 , jj , :)336 vfos(nis0:nis1,:) = vsmsk(nis0:nis1,:) * vn (nis0:nis1 , jj , :) * vmask(nis0:nis1 , jj , :)333 sfos(nis0:nis1,:) = tsmsk(nis0:nis1,:) * tsn(nis0:nis1 , jj , :,jp_sal) * tmask(nis0:nis1 , jj , :) 334 tfos(nis0:nis1,:) = tsmsk(nis0:nis1,:) * tsn(nis0:nis1 , jj , :,jp_tem) * tmask(nis0:nis1 , jj , :) 335 ufos(nis0:nis1,:) = usmsk(nis0:nis1,:) * un (nis0:nis1 , jj , :) * umask(nis0:nis1 , jj , :) 336 vfos(nis0:nis1,:) = vsmsk(nis0:nis1,:) * vn (nis0:nis1 , jj , :) * vmask(nis0:nis1 , jj , :) 337 337 END DO 338 338 ENDIF … … 1237 1237 WRITE(*,*) 'obc_dta: You should not have seen this print! error?', kt 1238 1238 END SUBROUTINE obc_dta 1239 !!----------------------------------------------------------------------------- 1240 !! Default option 1241 !!----------------------------------------------------------------------------- 1242 SUBROUTINE obc_dta_bt ( kt, kbt ) ! Empty routine 1243 INTEGER,INTENT(in) :: kt 1244 INTEGER, INTENT( in ) :: kbt ! barotropic ocean time-step index 1245 WRITE(*,*) 'obc_dta_bt: You should not have seen this print! error?', kt 1246 WRITE(*,*) 'obc_dta_bt: You should not have seen this print! error?', kbt 1247 END SUBROUTINE obc_dta_bt 1239 1248 #endif 1240 1249 !!============================================================================== -
trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcrad.F90
r2715 r3294 215 215 sebnd(jj,jk,nibm,nitm) = sebnd(jj,jk,nibm,nit)*temsk(jj,jk) 216 216 ! ... fields nit <== now (kt+1) 217 tebnd(jj,jk,nib ,nit) = t n(ji ,jj,jk)*temsk(jj,jk)218 tebnd(jj,jk,nibm ,nit) = t n(ji-1,jj,jk)*temsk(jj,jk)219 sebnd(jj,jk,nib ,nit) = sn(ji ,jj,jk)*temsk(jj,jk)220 sebnd(jj,jk,nibm ,nit) = sn(ji-1,jj,jk)*temsk(jj,jk)217 tebnd(jj,jk,nib ,nit) = tsn(ji ,jj,jk,jp_tem)*temsk(jj,jk) 218 tebnd(jj,jk,nibm ,nit) = tsn(ji-1,jj,jk,jp_tem)*temsk(jj,jk) 219 sebnd(jj,jk,nib ,nit) = tsn(ji ,jj,jk,jp_sal)*temsk(jj,jk) 220 sebnd(jj,jk,nibm ,nit) = tsn(ji-1,jj,jk,jp_sal)*temsk(jj,jk) 221 221 END DO 222 222 END DO … … 481 481 swbnd(jj,jk,nibm ,nitm) = swbnd(jj,jk,nibm ,nit)*twmsk(jj,jk) 482 482 ! ... fields nit <== now (kt+1) 483 twbnd(jj,jk,nib ,nit) = t n(ji ,jj,jk)*twmsk(jj,jk)484 twbnd(jj,jk,nibm ,nit) = t n(ji+1 ,jj,jk)*twmsk(jj,jk)485 swbnd(jj,jk,nib ,nit) = sn(ji ,jj,jk)*twmsk(jj,jk)486 swbnd(jj,jk,nibm ,nit) = sn(ji+1 ,jj,jk)*twmsk(jj,jk)483 twbnd(jj,jk,nib ,nit) = tsn(ji ,jj,jk,jp_tem)*twmsk(jj,jk) 484 twbnd(jj,jk,nibm ,nit) = tsn(ji+1 ,jj,jk,jp_tem)*twmsk(jj,jk) 485 swbnd(jj,jk,nib ,nit) = tsn(ji ,jj,jk,jp_sal)*twmsk(jj,jk) 486 swbnd(jj,jk,nibm ,nit) = tsn(ji+1 ,jj,jk,jp_sal)*twmsk(jj,jk) 487 487 END DO 488 488 END DO … … 750 750 snbnd(ji,jk,nibm ,nitm) = snbnd(ji,jk,nibm ,nit)*tnmsk(ji,jk) 751 751 ! ... fields nit <== now (kt+1) 752 tnbnd(ji,jk,nib ,nit) = t n(ji,jj, jk)*tnmsk(ji,jk)753 tnbnd(ji,jk,nibm ,nit) = t n(ji,jj-1,jk)*tnmsk(ji,jk)754 snbnd(ji,jk,nib ,nit) = sn(ji,jj, jk)*tnmsk(ji,jk)755 snbnd(ji,jk,nibm ,nit) = sn(ji,jj-1,jk)*tnmsk(ji,jk)752 tnbnd(ji,jk,nib ,nit) = tsn(ji,jj, jk,jp_tem)*tnmsk(ji,jk) 753 tnbnd(ji,jk,nibm ,nit) = tsn(ji,jj-1,jk,jp_tem)*tnmsk(ji,jk) 754 snbnd(ji,jk,nib ,nit) = tsn(ji,jj, jk,jp_sal)*tnmsk(ji,jk) 755 snbnd(ji,jk,nibm ,nit) = tsn(ji,jj-1,jk,jp_sal)*tnmsk(ji,jk) 756 756 END DO 757 757 END DO … … 1022 1022 ssbnd(ji,jk,nibm ,nitm) = ssbnd(ji,jk,nibm ,nit)*tsmsk(ji,jk) 1023 1023 ! ... fields nit <== now (kt+1) 1024 tsbnd(ji,jk,nib ,nit) = t n(ji,jj ,jk)*tsmsk(ji,jk)1025 tsbnd(ji,jk,nibm ,nit) = t n(ji,jj+1 ,jk)*tsmsk(ji,jk)1026 ssbnd(ji,jk,nib ,nit) = sn(ji,jj ,jk)*tsmsk(ji,jk)1027 ssbnd(ji,jk,nibm ,nit) = sn(ji,jj+1 ,jk)*tsmsk(ji,jk)1024 tsbnd(ji,jk,nib ,nit) = tsn(ji,jj ,jk,jp_tem)*tsmsk(ji,jk) 1025 tsbnd(ji,jk,nibm ,nit) = tsn(ji,jj+1 ,jk,jp_tem)*tsmsk(ji,jk) 1026 ssbnd(ji,jk,nib ,nit) = tsn(ji,jj ,jk,jp_sal)*tsmsk(ji,jk) 1027 ssbnd(ji,jk,nibm ,nit) = tsn(ji,jj+1 ,jk,jp_sal)*tsmsk(ji,jk) 1028 1028 END DO 1029 1029 END DO -
trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obctra.F90
r2528 r3294 58 58 !! 59 59 !! ** Purpose : Compute tracer fields (t,s) along the open boundaries. 60 !! This routine is called by the tranxt.F routine and updates t a,sa60 !! This routine is called by the tranxt.F routine and updates tsa 61 61 !! which are the actual temperature and salinity fields. 62 62 !! The logical variable lp_obc_east, and/or lp_obc_west, and/or lp_obc_north, … … 101 101 IF( lk_mpp ) THEN !!bug ??? 102 102 IF( kt >= nit000+3 .AND. ln_rstart ) THEN 103 CALL lbc_lnk( t b, 'T', 1. )104 CALL lbc_lnk( sb, 'T', 1. )103 CALL lbc_lnk( tsb(:,:,:,jp_tem), 'T', 1. ) 104 CALL lbc_lnk( tsb(:,:,:,jp_sal), 'T', 1. ) 105 105 END IF 106 CALL lbc_lnk( t a, 'T', 1. )107 CALL lbc_lnk( sa, 'T', 1. )106 CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1. ) 107 CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1. ) 108 108 ENDIF 109 109 … … 116 116 !! 117 117 !! ** Purpose : 118 !! Apply the radiation algorithm on east OBC tracers t a,sa using the118 !! Apply the radiation algorithm on east OBC tracers tsa using the 119 119 !! phase velocities calculated in obc_rad_east subroutine in obcrad.F90 module 120 120 !! If the logical lfbceast is .TRUE., there is no radiation but only fixed OBC … … 143 143 DO jk = 1, jpkm1 144 144 DO jj = 1, jpj 145 t a(ji,jj,jk) = ta(ji,jj,jk) * (1. - temsk(jj,jk)) + &146 tfoe(jj,jk)*temsk(jj,jk)147 sa(ji,jj,jk) = sa(ji,jj,jk) * (1. - temsk(jj,jk)) + &148 sfoe(jj,jk)*temsk(jj,jk)145 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) * (1. - temsk(jj,jk)) + & 146 tfoe(jj,jk)*temsk(jj,jk) 147 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) * (1. - temsk(jj,jk)) + & 148 sfoe(jj,jk)*temsk(jj,jk) 149 149 END DO 150 150 END DO … … 191 191 ztau = (1.-zin ) * rtauein + zin * rtaue 192 192 z05cx = z05cx * zin 193 ! ... update ( ta, sa ) with radiative or climatological (t, s)194 t a(ji,jj,jk) = ta(ji,jj,jk) * (1. - temsk(jj,jk)) + &193 ! ... update tsa with radiative or climatological ts 194 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) * (1. - temsk(jj,jk)) + & 195 195 temsk(jj,jk) * ( ( 1. - z05cx - ztau ) & 196 196 * tebnd(jj,jk,nib ,nitm) + 2.*z05cx & 197 197 * tebnd(jj,jk,nibm,nit ) + ztau * tfoe (jj,jk) ) & 198 198 / (1. + z05cx) 199 sa(ji,jj,jk) = sa(ji,jj,jk) * (1. - temsk(jj,jk)) + &199 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) * (1. - temsk(jj,jk)) + & 200 200 temsk(jj,jk) * ( ( 1. - z05cx - ztau ) & 201 201 * sebnd(jj,jk,nib ,nitm) + 2.*z05cx & … … 216 216 !! 217 217 !! ** Purpose : 218 !! Apply the radiation algorithm on west OBC tracers t a,sa using the218 !! Apply the radiation algorithm on west OBC tracers tsa using the 219 219 !! phase velocities calculated in obc_rad_west subroutine in obcrad.F90 module 220 220 !! If the logical lfbcwest is .TRUE., there is no radiation but only fixed OBC … … 244 244 DO jk = 1, jpkm1 245 245 DO jj = 1, jpj 246 t a(ji,jj,jk) = ta(ji,jj,jk) * (1. - twmsk(jj,jk)) + &247 tfow(jj,jk)*twmsk(jj,jk)248 sa(ji,jj,jk) = sa(ji,jj,jk) * (1. - twmsk(jj,jk)) + &249 sfow(jj,jk)*twmsk(jj,jk)246 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) * (1. - twmsk(jj,jk)) + & 247 tfow(jj,jk)*twmsk(jj,jk) 248 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) * (1. - twmsk(jj,jk)) + & 249 sfow(jj,jk)*twmsk(jj,jk) 250 250 END DO 251 251 END DO … … 290 290 ztau = (1.-zin )*rtauwin + zin * rtauw 291 291 z05cx = z05cx * zin 292 ! ... update (ta,sa) with radiative or climatological (t,s)293 t a(ji,jj,jk) = ta(ji,jj,jk) * (1. - twmsk(jj,jk)) + &292 ! ... update tsa with radiative or climatological (ts) 293 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) * (1. - twmsk(jj,jk)) + & 294 294 twmsk(jj,jk) * ( ( 1. + z05cx - ztau ) & 295 295 * twbnd(jj,jk,nib ,nitm) - 2.*z05cx & 296 296 * twbnd(jj,jk,nibm,nit ) + ztau * tfow (jj,jk) ) & 297 297 / (1. - z05cx) 298 sa(ji,jj,jk) = sa(ji,jj,jk) * (1. - twmsk(jj,jk)) + &298 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) * (1. - twmsk(jj,jk)) + & 299 299 twmsk(jj,jk) * ( ( 1. + z05cx - ztau ) & 300 300 * swbnd(jj,jk,nib ,nitm) - 2.*z05cx & … … 343 343 DO jk = 1, jpkm1 344 344 DO ji = 1, jpi 345 t a(ji,jj,jk)= ta(ji,jj,jk) * (1.-tnmsk(ji,jk)) + &346 tnmsk(ji,jk) * tfon(ji,jk)347 sa(ji,jj,jk)= sa(ji,jj,jk) * (1.-tnmsk(ji,jk)) + &348 tnmsk(ji,jk) * sfon(ji,jk)345 tsa(ji,jj,jk,jp_tem)= tsa(ji,jj,jk,jp_tem) * (1.-tnmsk(ji,jk)) + & 346 tnmsk(ji,jk) * tfon(ji,jk) 347 tsa(ji,jj,jk,jp_sal)= tsa(ji,jj,jk,jp_sal) * (1.-tnmsk(ji,jk)) + & 348 tnmsk(ji,jk) * sfon(ji,jk) 349 349 END DO 350 350 END DO … … 392 392 ztau = (1.-zin ) * rtaunin + zin * rtaun 393 393 z05cx = z05cx * zin 394 ! ... update (ta,sa)with radiative or climatological (t, s)395 t a(ji,jj,jk) = ta(ji,jj,jk) * (1.-tnmsk(ji,jk)) + &394 ! ... update tsa with radiative or climatological (t, s) 395 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) * (1.-tnmsk(ji,jk)) + & 396 396 tnmsk(ji,jk) * ( ( 1. - z05cx - ztau ) & 397 397 * tnbnd(ji,jk,nib ,nitm) + 2.*z05cx & 398 398 * tnbnd(ji,jk,nibm,nit ) + ztau * tfon (ji,jk) ) & 399 399 / (1. + z05cx) 400 sa(ji,jj,jk) = sa(ji,jj,jk) * (1.-tnmsk(ji,jk)) + &400 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) * (1.-tnmsk(ji,jk)) + & 401 401 tnmsk(ji,jk) * ( ( 1. - z05cx - ztau ) & 402 402 * snbnd(ji,jk,nib ,nitm) + 2.*z05cx & … … 417 417 !! 418 418 !! ** Purpose : 419 !! Apply the radiation algorithm on south OBC tracers t a,sa using the419 !! Apply the radiation algorithm on south OBC tracers tsa using the 420 420 !! phase velocities calculated in obc_rad_south subroutine in obcrad.F90 module 421 421 !! If the logical lfbcsouth is .TRUE., there is no radiation but only fixed OBC … … 445 445 DO jk = 1, jpkm1 446 446 DO ji = 1, jpi 447 t a(ji,jj,jk)= ta(ji,jj,jk) * (1.-tsmsk(ji,jk)) + &448 tsmsk(ji,jk) * tfos(ji,jk)449 sa(ji,jj,jk)= sa(ji,jj,jk) * (1.-tsmsk(ji,jk)) + &450 tsmsk(ji,jk) * sfos(ji,jk)447 tsa(ji,jj,jk,jp_tem)= tsa(ji,jj,jk,jp_tem) * (1.-tsmsk(ji,jk)) + & 448 tsmsk(ji,jk) * tfos(ji,jk) 449 tsa(ji,jj,jk,jp_sal)= tsa(ji,jj,jk,jp_sal) * (1.-tsmsk(ji,jk)) + & 450 tsmsk(ji,jk) * sfos(ji,jk) 451 451 END DO 452 452 END DO … … 493 493 z05cx = z05cx * zin 494 494 495 !... update (ta,sa)with radiative or climatological (t, s)496 t a(ji,jj,jk) = ta(ji,jj,jk) * (1.-tsmsk(ji,jk)) + &495 !... update tsa with radiative or climatological (t, s) 496 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) * (1.-tsmsk(ji,jk)) + & 497 497 tsmsk(ji,jk) * ( ( 1. + z05cx - ztau ) & 498 498 * tsbnd(ji,jk,nib ,nitm) - 2.*z05cx & 499 499 * tsbnd(ji,jk,nibm,nit ) + ztau * tfos (ji,jk) ) & 500 500 / (1. - z05cx) 501 sa(ji,jj,jk) = sa(ji,jj,jk) * (1.-tsmsk(ji,jk)) + &501 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) * (1.-tsmsk(ji,jk)) + & 502 502 tsmsk(ji,jk) * ( ( 1. + z05cx - ztau ) & 503 503 * ssbnd(ji,jk,nib ,nitm) - 2.*z05cx &
Note: See TracChangeset
for help on using the changeset viewer.