Changeset 643
- Timestamp:
- 2007-03-15T14:34:58+01:00 (18 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/CONFIG/GYRE/EXP00/namelist
r638 r643 218 218 / 219 219 !----------------------------------------------------------------------- 220 ! nam_dynadv option of physics/algorithm (not control by CPP keys) 221 !----------------------------------------------------------------------- 222 ! ln_dynadv_vec vector form flag 223 ! ln_dynadv_cen2 flux form - 2nd order centered scheme (default T) 224 ! ln_dynadv_ubs flux form - 3rd order UBS scheme (default F) 225 &nam_dynadv 226 ln_dynadv_vec = .TRUE. 227 ln_dynadv_cen2 = .FALSE. 228 ln_dynadv_ubs = .FALSE. 229 / 230 !----------------------------------------------------------------------- 220 231 ! nam_dynvor option of physics/algorithm (not control by CPP keys) 221 232 !----------------------------------------------------------------------- -
trunk/CONFIG/ORCA2_LIM/EXP00/1_namelist
r638 r643 218 218 / 219 219 !----------------------------------------------------------------------- 220 ! nam_dynadv option of physics/algorithm (not control by CPP keys) 221 !----------------------------------------------------------------------- 222 ! ln_dynadv_vec vector form flag 223 ! ln_dynadv_cen2 flux form - 2nd order centered scheme (default T) 224 ! ln_dynadv_ubs flux form - 3rd order UBS scheme (default F) 225 &nam_dynadv 226 ln_dynadv_vec = .TRUE. 227 ln_dynadv_cen2 = .FALSE. 228 ln_dynadv_ubs = .FALSE. 229 / 230 !----------------------------------------------------------------------- 220 231 ! nam_dynvor option of physics/algorithm (not control by CPP keys) 221 232 !----------------------------------------------------------------------- -
trunk/CONFIG/ORCA2_LIM/EXP00/namelist
r638 r643 218 218 / 219 219 !----------------------------------------------------------------------- 220 ! nam_dynadv option of physics/algorithm (not control by CPP keys) 221 !----------------------------------------------------------------------- 222 ! ln_dynadv_vec vector form flag 223 ! ln_dynadv_cen2 flux form - 2nd order centered scheme (default T) 224 ! ln_dynadv_ubs flux form - 3rd order UBS scheme (default F) 225 &nam_dynadv 226 ln_dynadv_vec = .TRUE. 227 ln_dynadv_cen2 = .FALSE. 228 ln_dynadv_ubs = .FALSE. 229 / 230 !----------------------------------------------------------------------- 220 231 ! nam_dynvor option of physics/algorithm (not control by CPP keys) 221 232 !----------------------------------------------------------------------- -
trunk/NEMO/OPA_SRC/DYN/dynvor.F90
r541 r643 12 12 !! 9.0 ! 03-08 (G. Madec) vor_ctl: Original code 13 13 !! 9.0 ! 05-11 (G. Madec) dyn_vor: Original code (new step architecture) 14 !! 9.0 ! 06-11 (G. Madec) flux form advection: add metric term 14 15 !!---------------------------------------------------------------------- 15 16 … … 20 21 !! vor_mix : mixed enstrophy/energy conserving (ln_dynvor_mix=T) 21 22 !! vor_een : energy and enstrophy conserving (ln_dynvor_een=T) 22 !! vor_ctl : control of the different vorticity option23 !! vor_ctl : set and control of the different vorticity option 23 24 !!---------------------------------------------------------------------- 24 25 USE oce ! ocean dynamics and tracers 25 26 USE dom_oce ! ocean space and time domain 27 USE dynadv ! momentum advection (use ln_dynadv_vec value) 26 28 USE trdmod ! ocean dynamics trends 27 29 USE trdmod_oce ! ocean variables trends … … 42 44 43 45 INTEGER :: nvor = 0 ! type of vorticity trend used 46 INTEGER :: ncor = 1 ! coriolis 47 INTEGER :: nrvm = 2 ! =2 relative vorticity ; =3 metric term 48 INTEGER :: ntot = 4 ! =4 total vorticity (relative + planetary) ; =5 coriolis + metric term 44 49 45 50 !! * Substitutions … … 71 76 IF( kt == nit000 ) CALL vor_ctl ! initialisation & control of options 72 77 73 ! ! vorticity term including Coriolis78 ! ! vorticity term 74 79 SELECT CASE ( nvor ) ! compute the vorticity trend and add it to the general trend 75 80 ! 76 81 CASE ( -1 ) ! esopa: test all possibility with control print 77 CALL vor_ene( kt, 'TOT', ua, va )82 CALL vor_ene( kt, ntot, ua, va ) 78 83 CALL prt_ctl( tab3d_1=ua, clinfo1=' vor0 - Ua: ', mask1=umask, & 79 84 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 80 CALL vor_ens( kt, 'TOT', ua, va )85 CALL vor_ens( kt, ntot, ua, va ) 81 86 CALL prt_ctl( tab3d_1=ua, clinfo1=' vor1 - Ua: ', mask1=umask, & 82 87 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) … … 84 89 CALL prt_ctl( tab3d_1=ua, clinfo1=' vor2 - Ua: ', mask1=umask, & 85 90 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 86 CALL vor_een( kt, 'TOT', ua, va )91 CALL vor_een( kt, ntot, ua, va ) 87 92 CALL prt_ctl( tab3d_1=ua, clinfo1=' vor3 - Ua: ', mask1=umask, & 88 93 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 89 94 ! 90 95 CASE ( 0 ) ! energy conserving scheme 91 96 IF( l_trddyn ) THEN 92 97 ztrdu(:,:,:) = ua(:,:,:) 93 98 ztrdv(:,:,:) = va(:,:,:) 94 CALL vor_ene( kt, 'VOR', ua, va ) ! relative vorticitytrend99 CALL vor_ene( kt, nrvm, ua, va ) ! relative vorticity or metric trend 95 100 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 96 101 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) … … 98 103 ztrdu(:,:,:) = ua(:,:,:) 99 104 ztrdv(:,:,:) = va(:,:,:) 100 CALL vor_ene( kt, 'COR', ua, va ) ! planetary vorticity trend105 CALL vor_ene( kt, ncor, ua, va ) ! planetary vorticity trend 101 106 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 102 107 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) … … 104 109 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 105 110 ELSE 106 CALL vor_ene( kt, 'TOT', ua, va ) ! total vorticity111 CALL vor_ene( kt, ntot, ua, va ) ! total vorticity 107 112 ENDIF 108 113 ! 109 114 CASE ( 1 ) ! enstrophy conserving scheme 110 115 IF( l_trddyn ) THEN 111 116 ztrdu(:,:,:) = ua(:,:,:) 112 117 ztrdv(:,:,:) = va(:,:,:) 113 CALL vor_ens( kt, 'VOR', ua, va ) ! relative vorticitytrend118 CALL vor_ens( kt, nrvm, ua, va ) ! relative vorticity or metric trend 114 119 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 115 120 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) … … 117 122 ztrdu(:,:,:) = ua(:,:,:) 118 123 ztrdv(:,:,:) = va(:,:,:) 119 CALL vor_ens( kt, 'COR', ua, va ) ! planetary vorticity trend124 CALL vor_ens( kt, ncor, ua, va ) ! planetary vorticity trend 120 125 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 121 126 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) … … 123 128 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 124 129 ELSE 125 CALL vor_ens( kt, 'TOT', ua, va ) ! total vorticity130 CALL vor_ens( kt, ntot, ua, va ) ! total vorticity 126 131 ENDIF 127 132 ! 128 133 CASE ( 2 ) ! mixed ene-ens scheme 129 134 IF( l_trddyn ) THEN 130 135 ztrdu(:,:,:) = ua(:,:,:) 131 136 ztrdv(:,:,:) = va(:,:,:) 132 CALL vor_ens( kt, 'VOR', ua, va ) ! relative vorticitytrend (ens)137 CALL vor_ens( kt, nrvm, ua, va ) ! relative vorticity or metric trend (ens) 133 138 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 134 139 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) … … 136 141 ztrdu(:,:,:) = ua(:,:,:) 137 142 ztrdv(:,:,:) = va(:,:,:) 138 CALL vor_ene( kt, 'COR', ua, va ) ! planetary vorticity trend (ene)143 CALL vor_ene( kt, ncor, ua, va ) ! planetary vorticity trend (ene) 139 144 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 140 145 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) … … 144 149 CALL vor_mix( kt ) ! total vorticity (mix=ens-ene) 145 150 ENDIF 146 151 ! 147 152 CASE ( 3 ) ! energy and enstrophy conserving scheme 148 153 IF( l_trddyn ) THEN 149 154 ztrdu(:,:,:) = ua(:,:,:) 150 155 ztrdv(:,:,:) = va(:,:,:) 151 CALL vor_een( kt, 'VOR', ua, va ) ! relative vorticitytrend156 CALL vor_een( kt, nrvm, ua, va ) ! relative vorticity or metric trend 152 157 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 153 158 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) … … 155 160 ztrdu(:,:,:) = ua(:,:,:) 156 161 ztrdv(:,:,:) = va(:,:,:) 157 CALL vor_een( kt, 'COR', ua, va ) ! planetary vorticity trend162 CALL vor_een( kt, ncor, ua, va ) ! planetary vorticity trend 158 163 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 159 164 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) … … 161 166 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 162 167 ELSE 163 CALL vor_een( kt, 'TOT', ua, va ) ! total vorticity168 CALL vor_een( kt, ntot, ua, va ) ! total vorticity 164 169 ENDIF 165 170 ! 166 171 END SELECT 167 172 … … 173 178 174 179 175 SUBROUTINE vor_ene( kt, cd_vor, pua, pva )180 SUBROUTINE vor_ene( kt, kvor, pua, pva ) 176 181 !!---------------------------------------------------------------------- 177 182 !! *** ROUTINE vor_ene *** … … 199 204 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 200 205 !!---------------------------------------------------------------------- 201 INTEGER , INTENT(in ) :: kt! ocean time-step index202 CHARACTER(len=3) , INTENT(in ) :: cd_vor ! ='COR' (planetary) ; ='VOR' (relative)203 ! ! ='TOT' (total)204 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pua! total u-trend205 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pva! total v-trend206 INTEGER , INTENT(in ) :: kt ! ocean time-step index 207 INTEGER , INTENT(in ) :: kvor ! =ncor (planetary) ; =ntot (total) ; 208 ! ! =nrvm (relative vorticity or metric) 209 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pua ! total u-trend 210 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pva ! total v-trend 206 211 !! 207 212 INTEGER :: ji, jj, jk ! dummy loop indices … … 227 232 ! Potential vorticity and horizontal fluxes 228 233 ! ----------------------------------------- 229 SELECT CASE( cd_vor ) ! vorticity considered 230 CASE ( 'COR' ) ; zwz(:,:) = ff(:,:) ! planetary vorticity (Coriolis) 231 CASE ( 'VOR' ) ; zwz(:,:) = rotn(:,:,jk) ! relative vorticity 232 CASE ( 'TOT' ) ; zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) ! total vorticity 234 SELECT CASE( kvor ) ! vorticity considered 235 CASE ( 1 ) ; zwz(:,:) = ff(:,:) ! planetary vorticity (Coriolis) 236 CASE ( 2 ) ; zwz(:,:) = rotn(:,:,jk) ! relative vorticity 237 CASE ( 3 ) ! metric term 238 DO jj = 1, jpjm1 239 DO ji = 1, fs_jpim1 ! vector opt. 240 zwz(ji,jj) = ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 241 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 242 & * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) 243 END DO 244 END DO 245 CASE ( 4 ) ; zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) ! total (relative + planetary vorticity) 246 CASE ( 5 ) ! total (coriolis + metric) 247 DO jj = 1, jpjm1 248 DO ji = 1, fs_jpim1 ! vector opt. 249 zwz(ji,jj) = ( ff (ji,jj) & 250 & + ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 251 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 252 & * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) & 253 & ) 254 END DO 255 END DO 233 256 END SELECT 234 257 … … 318 341 ! ---------------------------------------------------------------- 319 342 IF( ln_sco ) THEN 343 IF( ln_dynadv_vec ) THEN 344 zww(:,:) = rotn(:,:,jk) / fse3f(:,:,jk) 345 ELSE 346 DO jj = 1, jpjm1 347 DO ji = 1, fs_jpim1 ! vector opt. 348 zww(ji,jj) = ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 349 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 350 & * 0.5 / ( e1f(ji,jj) * e2f (ji,jj) * fse3f(ji,jj,jk) ) 351 END DO 352 END DO 353 ENDIF 320 354 zwz(:,:) = ff (:,:) / fse3f(:,:,jk) 321 zww(:,:) = rotn(:,:,jk) / fse3f(:,:,jk)322 355 zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) 323 356 zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 324 357 ELSE 325 zwz(:,:) = ff(:,:) 326 zww(:,:) = rotn(:,:,jk) 358 IF( ln_dynadv_vec ) THEN 359 zww(:,:) = rotn(:,:,jk) 360 ELSE 361 DO jj = 1, jpjm1 362 DO ji = 1, fs_jpim1 ! vector opt. 363 zww(ji,jj) = ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 364 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 365 & * 0.5 / ( e1f(ji,jj) * e2f (ji,jj) ) 366 END DO 367 END DO 368 ENDIF 369 zwz(:,:) = ff (:,:) 327 370 zwx(:,:) = e2u(:,:) * un(:,:,jk) 328 371 zwy(:,:) = e1v(:,:) * vn(:,:,jk) … … 354 397 355 398 356 SUBROUTINE vor_ens( kt, cd_vor, pua, pva )399 SUBROUTINE vor_ens( kt, kvor, pua, pva ) 357 400 !!---------------------------------------------------------------------- 358 401 !! *** ROUTINE vor_ens *** … … 380 423 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 381 424 !!---------------------------------------------------------------------- 382 INTEGER , INTENT(in ) :: kt! ocean time-step index383 CHARACTER(len=3) , INTENT(in ) :: cd_vor ! ='COR' (planetary) ; ='VOR' (relative)384 ! ! ='TOT' (total)385 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pua! total u-trend386 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pva! total v-trend425 INTEGER , INTENT(in ) :: kt ! ocean time-step index 426 INTEGER , INTENT(in ) :: kvor ! =ncor (planetary) ; =ntot (total) ; 427 ! ! =nrvm (relative vorticity or metric) 428 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pua ! total u-trend 429 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pva ! total v-trend 387 430 !! 388 431 INTEGER :: ji, jj, jk ! dummy loop indices … … 407 450 ! Potential vorticity and horizontal fluxes 408 451 ! ----------------------------------------- 409 SELECT CASE( cd_vor ) ! vorticity considered 410 CASE ( 'COR' ) ; zwz(:,:) = ff(:,:) ! planetary vorticity (Coriolis) 411 CASE ( 'VOR' ) ; zwz(:,:) = rotn(:,:,jk) ! relative vorticity 412 CASE ( 'TOT' ) ; zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) ! total vorticity 452 SELECT CASE( kvor ) ! vorticity considered 453 CASE ( 1 ) ; zwz(:,:) = ff(:,:) ! planetary vorticity (Coriolis) 454 CASE ( 2 ) ; zwz(:,:) = rotn(:,:,jk) ! relative vorticity 455 CASE ( 3 ) ! metric term 456 DO jj = 1, jpjm1 457 DO ji = 1, fs_jpim1 ! vector opt. 458 zwz(ji,jj) = ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 459 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 460 & * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) 461 END DO 462 END DO 463 CASE ( 4 ) ; zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) ! total (relative + planetary vorticity) 464 CASE ( 5 ) ! total (coriolis + metric) 465 DO jj = 1, jpjm1 466 DO ji = 1, fs_jpim1 ! vector opt. 467 zwz(ji,jj) = ( ff (ji,jj) & 468 & + ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 469 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 470 & * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) & 471 & ) 472 END DO 473 END DO 413 474 END SELECT 414 475 … … 448 509 449 510 450 SUBROUTINE vor_een( kt, cd_vor, pua, pva )511 SUBROUTINE vor_een( kt, kvor, pua, pva ) 451 512 !!---------------------------------------------------------------------- 452 513 !! *** ROUTINE vor_een *** … … 471 532 !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 472 533 !!---------------------------------------------------------------------- 473 INTEGER , INTENT(in ) :: kt! ocean time-step index474 CHARACTER(len=3) , INTENT(in ) :: cd_vor ! ='COR' (planetary) ; ='VOR' (relative)475 ! ! ='TOT' (total)476 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pua! total u-trend477 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pva! total v-trend534 INTEGER , INTENT(in ) :: kt ! ocean time-step index 535 INTEGER , INTENT(in ) :: kvor ! =ncor (planetary) ; =ntot (total) ; 536 ! ! =nrvm (relative vorticity or metric) 537 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pua ! total u-trend 538 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pva ! total v-trend 478 539 !! 479 540 INTEGER :: ji, jj, jk ! dummy loop indices … … 513 574 ! Potential vorticity and horizontal fluxes 514 575 ! ----------------------------------------- 515 SELECT CASE( cd_vor ) ! vorticity considered 516 CASE ( 'COR' ) ; zwz(:,:) = ff(:,:) * ze3f(:,:,jk) ! planetary vorticity (Coriolis) 517 CASE ( 'VOR' ) ; zwz(:,:) = rotn(:,:,jk) * ze3f(:,:,jk) ! relative vorticity 518 CASE ( 'TOT' ) ; zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) * ze3f(:,:,jk) ! total vorticity 576 SELECT CASE( kvor ) ! vorticity considered 577 CASE ( 1 ) ; zwz(:,:) = ff(:,:) ! planetary vorticity (Coriolis) 578 CASE ( 2 ) ; zwz(:,:) = rotn(:,:,jk) ! relative vorticity 579 CASE ( 3 ) ! metric term 580 DO jj = 1, jpjm1 581 DO ji = 1, fs_jpim1 ! vector opt. 582 zwz(ji,jj) = ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 583 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 584 & * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) * ze3f(ji,jj,jk) 585 END DO 586 END DO 587 CASE ( 4 ) ; zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) ! total (relative + planetary vorticity) 588 CASE ( 5 ) ! total (coriolis + metric) 589 DO jj = 1, jpjm1 590 DO ji = 1, fs_jpim1 ! vector opt. 591 zwz(ji,jj) = ( ff (ji,jj) & 592 & + ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 593 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 594 & * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) & 595 & ) * ze3f(ji,jj,jk) 596 END DO 597 END DO 519 598 END SELECT 520 599 … … 590 669 IF( ioptio /= 1 ) CALL ctl_stop( ' use ONE and ONLY one vorticity scheme' ) 591 670 592 ! ! Set nvor 671 ! ! Set nvor (type of scheme for vorticity) 593 672 IF( ln_dynvor_ene ) nvor = 0 594 673 IF( ln_dynvor_ens ) nvor = 1 … … 597 676 IF( lk_esopa ) nvor = -1 598 677 678 ! ! Set ncor, nrvm, ntot (type of vorticity) 679 IF(lwp) WRITE(numout,*) 680 ncor = 1 681 IF( ln_dynadv_vec ) THEN 682 IF(lwp) WRITE(numout,*) ' Vector form advection : vorticity = Coriolis + relative vorticity' 683 nrvm = 2 684 ntot = 4 685 ELSE 686 IF(lwp) WRITE(numout,*) ' Flux form advection : vorticity = Coriolis + metric term' 687 nrvm = 3 688 ntot = 5 689 ENDIF 690 599 691 IF(lwp) THEN ! Print the choice 600 692 WRITE(numout,*) 601 IF( nvor == 0 ) WRITE(numout,*) ' vorticity term used: energy conserving scheme'602 IF( nvor == 1 ) WRITE(numout,*) ' vorticity term used: enstrophy conserving scheme'603 IF( nvor == 2 ) WRITE(numout,*) ' vorticity term used: mixed enstrophy/energy conserving scheme'604 IF( nvor == 3 ) WRITE(numout,*) ' vorticity term used: energy and enstrophy conserving scheme'693 IF( nvor == 0 ) WRITE(numout,*) ' vorticity scheme : energy conserving scheme' 694 IF( nvor == 1 ) WRITE(numout,*) ' vorticity scheme : enstrophy conserving scheme' 695 IF( nvor == 2 ) WRITE(numout,*) ' vorticity scheme : mixed enstrophy/energy conserving scheme' 696 IF( nvor == 3 ) WRITE(numout,*) ' vorticity scheme : energy and enstrophy conserving scheme' 605 697 IF( nvor == -1 ) WRITE(numout,*) ' esopa test: use all lateral physics options' 606 698 ENDIF -
trunk/NEMO/OPA_SRC/step.F90
r604 r643 64 64 USE eosbn2 ! equation of state (eos_bn2 routine) 65 65 66 USE dynadv ! advection (dyn_adv routine) 67 USE dynvor ! vorticity term (dyn_vor routine) 66 68 USE dynhpg ! hydrostatic pressure grad. (dyn_hpg routine) 67 USE dynkeg ! kinetic energy gradient (dyn_keg routine)68 USE dynvor ! vorticity term (dyn_vor routine)69 USE dynzad ! vertical advection (dyn_adv routine)70 69 USE dynldf ! lateral momentum diffusion (dyn_ldf routine) 71 70 USE dynzdf ! vertical diffusion (dyn_zdf routine) … … 361 360 va(:,:,:) = 0.e0 362 361 363 CALL dyn_ keg( kstp ) ! horizontal gradient of kinetic energy362 CALL dyn_adv( kstp ) ! advection (vector or flux form) 364 363 365 364 CALL dyn_vor( kstp ) ! vorticity term including Coriolis … … 370 369 #endif 371 370 CALL dyn_hpg( kstp ) ! horizontal gradient of Hydrostatic pressure 372 373 CALL dyn_zad( kstp ) ! vertical advection374 371 375 372 CALL dyn_zdf( kstp ) ! vertical diffusion
Note: See TracChangeset
for help on using the changeset viewer.