Changeset 5196
- Timestamp:
- 2015-04-07T10:28:07+02:00 (10 years ago)
- Location:
- branches/2012/dev_v3_4_STABLE_2012/NEMOGCM
- Files:
-
- 4 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/CONFIG/cfg.txt
r4142 r5196 8 8 ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC 9 9 ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 10 SEABASS OPA_SRC -
branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r5169 r5196 113 113 ELSEIF( cp_cfg == 'gyre' ) THEN 114 114 CALL istate_gyre ! GYRE configuration : start from pre-defined T-S fields 115 ELSEIF( cp_cfg == 'seabass' ) THEN 116 CALL istate_seabass 115 117 ELSEIF( ln_tsd_init ) THEN ! Initial T-S fields read in files 116 118 CALL dta_tsd( nit000, tsb ) ! read 3D T and S data at nit000 … … 412 414 413 415 416 417 SUBROUTINE istate_seabass 418 !!---------------------------------------------------------------------- 419 !! *** ROUTINE istate_seabass *** 420 !! 421 !! ** Purpose : Initialization of the dynamics and tracers for seabass 422 !! configuration (double gyre) 423 !! 424 !! ** Method : - set temperature field following Chassignet and Gent, JPO 425 !! 21, pp1290-1299, 1991, and the law 426 !! rho/rho0=1-2.e-4(T-T0) 427 !! - set salinity field constant 428 !! 429 !!---------------------------------------------------------------------- 430 !! * Local variables 431 INTEGER :: ji, jj, jk ! dummy loop indices 432 REAL(wp) :: zsal = 35.5 433 !!---------------------------------------------------------------------- 434 435 IF(lwp) WRITE(numout,*) 436 IF(lwp) WRITE(numout,*) 'istate_seabass : initial analytical T and constant S profiles ' 437 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 438 439 DO jk = 1, jpk 440 DO jj = 1, jpj 441 DO ji = 1, jpi 442 tsn(ji,jj,jk,jp_tem) = ( 25.+5.9e-5*800./9.81/2.e-4* & 443 & (exp(-gdept_0(jk)/800.)-1.)) * tmask(ji,jj,jk) 444 tsb(ji,jj,jk,jp_tem) = tsn(ji,jj,jk, jp_tem) 445 END DO 446 END DO 447 END DO 448 449 tsn(:,:,:,jp_sal) = zsal * tmask(:,:,:) 450 tsb(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) 451 452 IF(lwp) THEN 453 WRITE(numout,*) 454 WRITE(numout,*) ' Initial temperature and salinity profiles:' 455 WRITE(numout, "(9x,' level gdept temperature salinity ')" ) 456 WRITE(numout, "(10x, i4, 3f10.2)" ) ( jk, gdept_0(jk), tsn(2,2,jk,jp_tem), tsn(2,2,jk,jp_sal), jk = 1, jpk ) 457 ENDIF 458 459 460 END SUBROUTINE istate_seabass 461 462 463 414 464 SUBROUTINE istate_uvg 415 465 !!---------------------------------------------------------------------- -
branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcana.F90
r4602 r5196 26 26 PUBLIC sbc_ana ! routine called in sbcmod module 27 27 PUBLIC sbc_gyre ! routine called in sbcmod module 28 PUBLIC sbc_seabass ! routine called in sbcmod module 28 29 29 30 ! !!* Namelist namsbc_ana * … … 323 324 END SUBROUTINE sbc_gyre 324 325 326 SUBROUTINE sbc_seabass( kt ) 327 !!--------------------------------------------------------------------- 328 !! *** ROUTINE sbc_seabass *** 329 !! 330 !! ** Purpose : provide at each time-step the ocean surface boundary 331 !! condition, i.e. the momentum, heat and freshwater fluxes. 332 !! 333 !! ** Method : Constant and uniform surface forcing specified from 334 !! namsbc_ana namelist parameters. All the fluxes are time inde- 335 !! pendant except the stresses which increase from zero during 336 !! the first nn_tau000 time-step 337 !! * C A U T I O N : never mask the surface stress field ! 338 !! 339 !! ** Action : - set the ocean surface boundary condition, i.e. 340 !! utau, vtau, qns, qsr, emp, emps 341 !!---------------------------------------------------------------------- 342 INTEGER, INTENT(in) :: kt ! ocean time step 343 !! 344 INTEGER :: ji, jj ! dummy loop indices 345 REAL(wp) :: zfacto ! local scalar 346 REAL(wp) :: zrhoa = 1.22_wp ! Air density kg/m3 347 REAL(wp) :: zcdrag = 1.5e-3_wp ! drag coefficient 348 REAL(wp) :: ztx, zty, ztau ! local scalar 349 !! 350 NAMELIST/namsbc_ana/ nn_tau000, rn_utau0, rn_vtau0, rn_qns0, rn_qsr0, rn_emp0 351 !!--------------------------------------------------------------------- 352 ! 353 IF( kt == nit000 ) THEN 354 ! 355 REWIND ( numnam ) ! Read Namelist namsbc : surface fluxes 356 READ ( numnam, namsbc_ana ) 357 ! 358 IF(lwp) WRITE(numout,*)' ' 359 IF(lwp) WRITE(numout,*)' sbc_ana : Constant surface fluxes read in namsbc_ana namelist' 360 IF(lwp) WRITE(numout,*)' ~~~~~~~ ' 361 IF(lwp) WRITE(numout,*)' spin up of the stress nn_tau000 = ', nn_tau000, ' time-steps' 362 IF(lwp) WRITE(numout,*)' constant i-stress rn_utau0 = ', rn_utau0 , ' N/m2' 363 IF(lwp) WRITE(numout,*)' constant j-stress rn_vtau0 = ', rn_vtau0 , ' N/m2' 364 IF(lwp) WRITE(numout,*)' non solar heat flux rn_qns0 = ', rn_qns0 , ' W/m2' 365 IF(lwp) WRITE(numout,*)' solar heat flux rn_qsr0 = ', rn_qsr0 , ' W/m2' 366 IF(lwp) WRITE(numout,*)' net heat flux rn_emp0 = ', rn_emp0 , ' Kg/m2/s' 367 ! 368 nn_tau000 = MAX( nn_tau000, 1 ) ! must be >= 1 369 qns (:,:) = rn_qns0 370 qsr (:,:) = 0._wp 371 emp (:,:) = 0._wp 372 emps (:,:) = 0._wp 373 ! 374 IF (jphgr_msh .eq. 2 .or. jphgr_msh .eq. 3) THEN 375 DO jj = 1, jpj 376 DO ji = 1, jpi 377 utau(ji,jj) = -rn_utau0 * COS(2.*rpi & 378 & * (gphiu(ji,jj)+18.5533)/(2207.84+18.5533)) 379 vtau (ji,jj) = 0. 380 END DO 381 END DO 382 ELSE 383 DO jj = 1, jpj 384 DO ji = 1, jpi 385 utau(ji,jj) = -rn_utau0 * COS(2.*rpi & 386 & * (gphiu(ji,jj)-24.)/(44.-24.)) 387 vtau (ji,jj) = 0. 388 END DO 389 END DO 390 END IF 391 392 393 IF(lwp) WRITE(numout,*)' tau : Constant surface wind stress read in namelist' 394 395 ENDIF 396 397 zfacto = 0.5 / ( zrhoa * zcdrag ) 398 !CDIR NOVERRCHK 399 DO jj = 2, jpjm1 400 !CDIR NOVERRCHK 401 DO ji = fs_2, fs_jpim1 ! vect. opt. 402 ztx = utau(ji-1,jj ) + utau(ji,jj) 403 zty = vtau(ji ,jj-1) + vtau(ji,jj) 404 ztau = SQRT( ztx * ztx + zty * zty ) 405 wndm(ji,jj) = SQRT ( ztau * zfacto ) * tmask(ji,jj,1) 406 END DO 407 END DO 408 CALL lbc_lnk( wndm(:,:) , 'T', 1. ) 409 ! 410 411 END SUBROUTINE sbc_seabass 412 325 413 !!====================================================================== 326 414 END MODULE sbcana -
branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r3690 r5196 101 101 IF( lk_cice ) nn_ice = 4 102 102 ENDIF 103 IF( cp_cfg == 'gyre' ) THEN ! GYRE configuration103 IF( cp_cfg == 'gyre' .OR. cp_cfg == 'seabass' ) THEN ! GYRE configuration 104 104 ln_ana = .TRUE. 105 105 nn_ice = 0 … … 178 178 IF( ln_blk_mfs ) THEN ; nsbc = 6 ; icpt = icpt + 1 ; ENDIF ! MFS bulk formulation 179 179 IF( ln_cpl ) THEN ; nsbc = 5 ; icpt = icpt + 1 ; ENDIF ! Coupled formulation 180 IF( cp_cfg == 'gyre' ) THEN ; nsbc = 0 ; ENDIF ! GYRE analytical formulation180 IF( cp_cfg == 'gyre' .OR. cp_cfg == 'seabass' ) THEN ; nsbc = 0 ; ENDIF ! GYRE analytical formulation 181 181 IF( lk_esopa ) nsbc = -1 ! esopa test, ALL formulations 182 182 ! … … 256 256 SELECT CASE( nsbc ) ! Compute ocean surface boundary condition 257 257 ! ! (i.e. utau,vtau, qns, qsr, emp, emps) 258 CASE( 0 ) ; CALL sbc_gyre ( kt ) ! analytical formulation : GYRE configuration 258 CASE( 0 ) ; ! analytical formulation : GYRE or 259 ! SEABASS configurations 260 IF (cp_cfg == 'gyre') THEN 261 CALL sbc_gyre ( kt ) ! analytical formulation : GYRE configuration 262 ELSEIF (cp_cfg == 'seabass') THEN 263 CALL sbc_seabass ( kt ) 264 ENDIF 259 265 CASE( 1 ) ; CALL sbc_ana ( kt ) ! analytical formulation : uniform sbc 260 266 CASE( 2 ) ; CALL sbc_flx ( kt ) ! flux formulation -
branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/par_oce.F90
r3294 r5196 76 76 !!--------------------------------------------------------------------- 77 77 # include "par_GYRE.h90" 78 #elif defined key_seabass 79 !!--------------------------------------------------------------------- 80 !! 'key_seabass' : mid-latitude basin : SEABASS 81 !!--------------------------------------------------------------------- 82 # include "par_SEABASS.h90" 78 83 #elif defined key_pomme_r025 79 84 !!---------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.