Changeset 503 for trunk/NEMO/OPA_SRC/DYN/dynhpg.F90
- Timestamp:
- 2006-09-27T10:52:29+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DYN/dynhpg.F90
r474 r503 4 4 !! Ocean dynamics: hydrostatic pressure gradient trend 5 5 !!====================================================================== 6 !! History : 1.0 ! 87-09 (P. Andrich, M.-A. Foujols) hpg_zco: Original code 7 !! 5.0 ! 91-11 (G. Madec) 8 !! 7.0 ! 96-01 (G. Madec) hpg_sco: Original code for s-coordinates 9 !! 8.0 ! 97-05 (G. Madec) split dynber into dynkeg and dynhpg 10 !! 8.5 ! 02-07 (G. Madec) F90: Free form and module 11 !! 8.5 ! 02-08 (A. Bozec) hpg_zps: Original code 12 !! 9.0 ! 05-10 (A. Beckmann, B.W. An) various s-coordinate options 13 !! Original code for hpg_ctl, hpg_hel hpg_wdj, hpg_djc, hpg_rot 14 !! 9.0 ! 05-11 (G. Madec) style & small optimisation 15 !!---------------------------------------------------------------------- 6 16 7 17 !!---------------------------------------------------------------------- … … 18 28 !! hpg_rot : s-coordinate (ROTated axes scheme) 19 29 !!---------------------------------------------------------------------- 20 !! * Modules used21 30 USE oce ! ocean dynamics and tracers 22 31 USE dom_oce ! ocean space and time domain … … 32 41 PRIVATE 33 42 34 !! * Accessibility 35 PUBLIC dyn_hpg ! routine called by step.F90 43 PUBLIC dyn_hpg ! routine called by step module 36 44 37 45 #if defined key_mpp_omp … … 49 57 #endif 50 58 51 !! * Share module variables 52 LOGICAL :: & !!! ** nam_dynhpg ** hpg flags 53 ln_hpg_zco = .TRUE. , & ! z-coordinate - full steps 54 ln_hpg_zps = .FALSE., & ! z-coordinate - partial steps (interpolation) 55 ln_hpg_sco = .FALSE., & ! s-coordinate (standard jacobian formulation) 56 ln_hpg_hel = .FALSE., & ! s-coordinate (helsinki modification) 57 ln_hpg_wdj = .FALSE., & ! s-coordinate (weighted density jacobian) 58 ln_hpg_djc = .FALSE., & ! s-coordinate (Density Jacobian with Cubic polynomial) 59 ln_hpg_rot = .FALSE. ! s-coordinate (ROTated axes scheme) 60 61 REAL(wp) :: & !!! ** nam_dynhpg ** 62 gamm = 0.e0 ! weighting coefficient 63 64 INTEGER :: & ! 65 nhpg = 0 ! = 0 to 6, type of pressure gradient scheme used 66 ! ! (deduced from ln_hpg_... flags) 59 !!* Namelist nam_dynhpg : Choice of horizontal pressure gradient computation 60 LOGICAL :: ln_hpg_zco = .TRUE. ! z-coordinate - full steps 61 LOGICAL :: ln_hpg_zps = .FALSE. ! z-coordinate - partial steps (interpolation) 62 LOGICAL :: ln_hpg_sco = .FALSE. ! s-coordinate (standard jacobian formulation) 63 LOGICAL :: ln_hpg_hel = .FALSE. ! s-coordinate (helsinki modification) 64 LOGICAL :: ln_hpg_wdj = .FALSE. ! s-coordinate (weighted density jacobian) 65 LOGICAL :: ln_hpg_djc = .FALSE. ! s-coordinate (Density Jacobian with Cubic polynomial) 66 LOGICAL :: ln_hpg_rot = .FALSE. ! s-coordinate (ROTated axes scheme) 67 REAL(wp) :: gamm = 0.e0 ! weighting coefficient 68 NAMELIST/nam_dynhpg/ ln_hpg_zco, ln_hpg_zps, ln_hpg_sco, ln_hpg_hel, & 69 & ln_hpg_wdj, ln_hpg_djc, ln_hpg_rot, gamm 70 71 INTEGER :: nhpg = 0 ! = 0 to 6, type of pressure gradient scheme used 72 ! ! (deduced from ln_hpg_... flags) 67 73 68 74 !! * Substitutions … … 72 78 !! OPA 9.0 , LOCEAN-IPSL (2005) 73 79 !! $Header$ 74 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt80 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 75 81 !!---------------------------------------------------------------------- 76 82 … … 82 88 !! 83 89 !! ** Method : Call the hydrostatic pressure gradient routine 84 !! using the scheme defined in the namelist (nhpg parameter)90 !! using the scheme defined in the namelist 85 91 !! 86 92 !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 87 93 !! - Save the trend (l_trddyn=T) 88 !! - Control print (ln_ctl) 89 !! 90 !! History : 91 !! 9.0 ! 05-10 (A. Beckmann, G. Madec) various s-coordinate options 92 !!---------------------------------------------------------------------- 93 !! * Arguments 94 INTEGER, INTENT( in ) :: kt ! ocean time-step index 95 96 !! * local declarations 97 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 98 ztrdu, ztrdv ! 3D temporary workspace 94 !!---------------------------------------------------------------------- 95 INTEGER, INTENT(in) :: kt ! ocean time-step index 96 !! 97 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztrdu, ztrdv ! 3D temporary workspace 99 98 !!---------------------------------------------------------------------- 100 99 101 100 IF( kt == nit000 ) CALL hpg_ctl ! initialisation & control of options 102 101 103 ! Temporary saving of ua and va trends (l_trddyn) 104 IF( l_trddyn ) THEN 102 IF( l_trddyn ) THEN ! Temporary saving of ua and va trends (l_trddyn) 105 103 ztrdu(:,:,:) = ua(:,:,:) 106 104 ztrdv(:,:,:) = va(:,:,:) … … 108 106 109 107 SELECT CASE ( nhpg ) ! Hydrastatic pressure gradient computation 110 CASE ( 0 ) ! z-coordinate 111 CALL hpg_zco( kt ) 112 CASE ( 1 ) ! z-coordinate plus partial steps (interpolation) 113 CALL hpg_zps( kt ) 114 CASE ( 2 ) ! s-coordinate (standard jacobian formulation) 115 CALL hpg_sco( kt ) 116 CASE ( 3 ) ! s-coordinate (helsinki modification) 117 CALL hpg_hel( kt ) 118 CASE ( 4 ) ! s-coordinate (weighted density jacobian) 119 CALL hpg_wdj( kt ) 120 CASE ( 5 ) ! s-coordinate (Density Jacobian with Cubic polynomial) 121 CALL hpg_djc( kt ) 122 CASE ( 6 ) ! s-coordinate (ROTated axes scheme) 123 CALL hpg_rot( kt ) 124 CASE ( 10 ) ! z-coordinate 125 CALL hpg_zco_jki( kt ) 126 CASE ( 11 ) ! z-coordinate plus partial steps (interpolation) 127 CALL hpg_zps_jki( kt ) 128 CASE ( 12 ) ! s-coordinate (standard jacobian formulation) 129 CALL hpg_sco_jki( kt ) 108 CASE ( 0 ) ; CALL hpg_zco ( kt ) ! z-coordinate 109 CASE ( 1 ) ; CALL hpg_zps ( kt ) ! z-coordinate plus partial steps (interpolation) 110 CASE ( 2 ) ; CALL hpg_sco ( kt ) ! s-coordinate (standard jacobian formulation) 111 CASE ( 3 ) ; CALL hpg_hel ( kt ) ! s-coordinate (helsinki modification) 112 CASE ( 4 ) ; CALL hpg_wdj ( kt ) ! s-coordinate (weighted density jacobian) 113 CASE ( 5 ) ; CALL hpg_djc ( kt ) ! s-coordinate (Density Jacobian with Cubic polynomial) 114 CASE ( 6 ) ; CALL hpg_rot ( kt ) ! s-coordinate (ROTated axes scheme) 115 CASE ( 10 ) ; CALL hpg_zco_jki( kt ) ! z-coordinate (k-j-i) 116 CASE ( 11 ) ; CALL hpg_zps_jki( kt ) ! z-coordinate plus partial steps (interpolation) (k-j-i) 117 CASE ( 12 ) ; CALL hpg_sco_jki( kt ) ! s-coordinate (standard jacobian formulation) (k-j-i) 130 118 END SELECT 131 119 132 ! save the hydrostatic pressure gradient trends for momentum trend diagnostics 133 IF( l_trddyn ) THEN 120 IF( l_trddyn ) THEN ! save the hydrostatic pressure gradient trends for momentum trend diagnostics 134 121 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 135 122 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 136 CALL trd_mod( ztrdu, ztrdv, jpd tdhpg, 'DYN', kt )123 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_hpg, 'DYN', kt ) 137 124 ENDIF 138 139 IF(ln_ctl) THEN ! print sum trends (used for debugging) 140 CALL prt_ctl( tab3d_1=ua, clinfo1=' hpg - Ua: ', mask1=umask, & 141 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 142 ENDIF 143 125 ! 126 IF(ln_ctl) CALL prt_ctl( tab3d_1=ua, clinfo1=' hpg - Ua: ', mask1=umask, & 127 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 128 ! 144 129 END SUBROUTINE dyn_hpg 145 130 … … 154 139 !! ** Action : Read the namelist namdynhpg and check the consistency 155 140 !! with the type of vertical coordinate used (zco, zps, sco) 156 !!157 !! History :158 !! 9.0 ! 05-10 (A. Beckmann) Original code159 141 !!---------------------------------------------------------------------- 160 142 INTEGER :: ioptio = 0 ! temporary integer 161 162 NAMELIST/nam_dynhpg/ ln_hpg_zco, ln_hpg_zps, ln_hpg_sco, & 163 & ln_hpg_hel, ln_hpg_wdj, ln_hpg_djc, ln_hpg_rot, & 164 & gamm 165 !!---------------------------------------------------------------------- 166 167 ! Read Namelist nam_dynhpg : pressure gradient calculation options 168 REWIND ( numnam ) 143 !!---------------------------------------------------------------------- 144 145 REWIND ( numnam ) ! Read Namelist nam_dynhpg : pressure gradient calculation options 169 146 READ ( numnam, nam_dynhpg ) 170 147 171 ! Control print 172 IF(lwp) THEN 148 IF(lwp) THEN ! Control print 173 149 WRITE(numout,*) 174 150 WRITE(numout,*) 'dyn:hpg_ctl : hydrostatic pressure gradient control' … … 185 161 ENDIF 186 162 187 ! set nhpg from ln_hpg_... flags163 ! ! Set nhpg from ln_hpg_... flags 188 164 IF( ln_hpg_zco ) nhpg = 0 189 165 IF( ln_hpg_zps ) nhpg = 1 … … 194 170 IF( ln_hpg_rot ) nhpg = 6 195 171 196 ! Consitency check172 ! ! Consitency check 197 173 ioptio = 0 198 174 IF( ln_hpg_zco ) ioptio = ioptio + 1 … … 203 179 IF( ln_hpg_djc ) ioptio = ioptio + 1 204 180 IF( ln_hpg_rot ) ioptio = ioptio + 1 205 IF ( ioptio > 1 ) & 206 & CALL ctl_stop( ' several hydrostatic pressure gradient options used' ) 181 IF ( ioptio /= 1 ) CALL ctl_stop( ' NO or several hydrostatic pressure gradient options used' ) 207 182 208 183 IF( lk_dynhpg_jki ) THEN … … 211 186 IF(lwp) WRITE(numout,*) ' Autotasking or OPENMP: use j-k-i loops (i.e. _jki routines)' 212 187 ENDIF 213 188 ! 214 189 END SUBROUTINE hpg_ctl 215 190 … … 230 205 !! 231 206 !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 232 !! 233 !! History : 234 !! 1.0 ! 87-09 (P. Andrich, M.-A. Foujols) Original code 235 !! 5.0 ! 91-11 (G. Madec) 236 !! 7.0 ! 96-01 (G. Madec) 237 !! 8.0 ! 97-05 (G. Madec) split dynber into dynkeg and dynhpg 238 !! 8.5 ! 02-07 (G. Madec) F90: Free form and module 239 !!---------------------------------------------------------------------- 240 !! * modules used 241 USE oce, ONLY : zhpi => ta, & ! use ta as 3D workspace 242 & zhpj => sa ! use sa as 3D workspace 243 244 !! * Arguments 245 INTEGER, INTENT( in ) :: kt ! ocean time-step index 246 247 !! * local declarations 248 INTEGER :: ji, jj, jk ! dummy loop indices 249 REAL(wp) :: & 250 zcoef0, zcoef1 ! temporary scalars 207 !!---------------------------------------------------------------------- 208 USE oce, ONLY : zhpi => ta ! use ta as 3D workspace 209 USE oce, ONLY : zhpj => sa ! use sa as 3D workspace 210 !! 211 INTEGER, INTENT(in) :: kt ! ocean time-step index 212 !! 213 INTEGER :: ji, jj, jk ! dummy loop indices 214 REAL(wp) :: zcoef0, zcoef1 ! temporary scalars 251 215 !!---------------------------------------------------------------------- 252 216 … … 257 221 ENDIF 258 222 259 260 223 ! Local constant initialization 261 ! -----------------------------262 224 zcoef0 = - grav * 0.5 263 225 264 226 ! Surface value 265 ! -------------266 227 DO jj = 2, jpjm1 267 228 DO ji = fs_2, fs_jpim1 ! vector opt. … … 275 236 END DO 276 237 END DO 277 238 ! 278 239 ! interior value (2=<jk=<jpkm1) 279 ! --------------280 240 DO jk = 2, jpkm1 281 241 DO jj = 2, jpjm1 … … 296 256 END DO 297 257 END DO 298 258 ! 299 259 END SUBROUTINE hpg_zco 300 260 … … 307 267 !! 308 268 !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 309 !!310 !! History :311 !! 8.5 ! 02-08 (A. Bozec) Original code312 !! 9.0 ! 04-08 (G. Madec) F90313 269 !!---------------------------------------------------------------------- 314 !! * modules used 315 USE oce, ONLY : zhpi => ta, & ! use ta as 3D workspace 316 & zhpj => sa ! use sa as 3D workspace 317 318 !! * Arguments 319 INTEGER, INTENT( in ) :: kt ! ocean time-step index 320 321 !! * local declarations 322 INTEGER :: ji, jj, jk ! dummy loop indices 323 INTEGER :: iku, ikv ! temporary integers 324 REAL(wp) :: & 325 zcoef0, zcoef1, & ! temporary scalars 326 zcoef2, zcoef3 ! " " 270 USE oce, ONLY : zhpi => ta ! use ta as 3D workspace 271 USE oce, ONLY : zhpj => sa ! use sa as 3D workspace 272 !! 273 INTEGER, INTENT(in) :: kt ! ocean time-step index 274 !! 275 INTEGER :: ji, jj, jk ! dummy loop indices 276 INTEGER :: iku, ikv ! temporary integers 277 REAL(wp) :: zcoef0, zcoef1, zcoef2, zcoef3 ! temporary scalars 327 278 !!---------------------------------------------------------------------- 328 279 … … 330 281 IF(lwp) WRITE(numout,*) 331 282 IF(lwp) WRITE(numout,*) 'dyn:hpg_zps : hydrostatic pressure gradient trend' 332 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ z-coordinate with partial steps' 333 IF(lwp) WRITE(numout,*) ' vector optimization' 283 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ z-coordinate with partial steps - vector optimization' 334 284 ENDIF 335 285 336 337 ! 0. Local constant initialization 338 ! -------------------------------- 286 ! Local constant initialization 339 287 zcoef0 = - grav * 0.5 340 288 341 ! 1. Surface value 342 ! ---------------- 289 ! Surface value 343 290 DO jj = 2, jpjm1 344 291 DO ji = fs_2, fs_jpim1 ! vector opt. … … 353 300 END DO 354 301 355 ! 2. interior value (2=<jk=<jpkm1) 356 ! ----------------- 302 ! interior value (2=<jk=<jpkm1) 357 303 DO jk = 2, jpkm1 358 304 DO jj = 2, jpjm1 … … 410 356 # endif 411 357 END DO 412 358 ! 413 359 END SUBROUTINE hpg_zps 414 360 … … 431 377 !! 432 378 !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 433 !! 434 !! History : 435 !! 7.0 ! 96-01 (G. Madec) s-coordinates 436 !! ! 97-05 (G. Madec) split dynber into dynkeg and dynhpg 437 !! 8.5 ! 02-08 (G. Madec) F90: Free form and module, vector opt. 438 !! 9.0 ! 04-08 (C. Talandier) New trends organization 439 !! 9.0 ! 05-10 (A. Beckmann) various s-coordinate options 440 !!---------------------------------------------------------------------- 441 !! * modules used 442 USE oce, ONLY : zhpi => ta, & ! use ta as 3D workspace 443 & zhpj => sa ! use sa as 3D workspace 444 445 !! * Arguments 446 INTEGER, INTENT( in ) :: kt ! ocean time-step index 447 448 !! * Local declarations 449 INTEGER :: ji, jj, jk ! dummy loop indices 450 REAL(wp) :: & 451 zcoef0, zuap, zvap ! temporary scalars 379 !!---------------------------------------------------------------------- 380 USE oce, ONLY : zhpi => ta ! use ta as 3D workspace 381 USE oce, ONLY : zhpj => sa ! use sa as 3D workspace 382 !! 383 INTEGER, INTENT(in) :: kt ! ocean time-step index 384 !! 385 INTEGER :: ji, jj, jk ! dummy loop indices 386 REAL(wp) :: zcoef0, zuap, zvap ! temporary scalars 452 387 !!---------------------------------------------------------------------- 453 388 … … 458 393 ENDIF 459 394 460 461 ! 0. Local constant initialization 462 ! -------------------------------- 395 ! Local constant initialization 463 396 zcoef0 = - grav * 0.5 464 397 465 466 ! 1. Surface value 467 ! ---------------- 398 ! Surface value 468 399 DO jj = 2, jpjm1 469 400 DO ji = fs_2, fs_jpim1 ! vector opt. … … 484 415 END DO 485 416 486 487 ! 2. interior value (2=<jk=<jpkm1) 488 ! ----------------- 417 ! interior value (2=<jk=<jpkm1) 489 418 DO jk = 2, jpkm1 490 419 DO jj = 2, jpjm1 … … 508 437 END DO 509 438 END DO 510 439 ! 511 440 END SUBROUTINE hpg_sco 512 441 … … 530 459 !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 531 460 !! - Save the trend (l_trddyn=T) 532 !! 533 !! History : 534 !! 9.0 ! 05-10 (A. Beckmann) Original code 535 !!---------------------------------------------------------------------- 536 !! * modules used 537 USE oce, ONLY : zhpi => ta, & ! use ta as 3D workspace 538 & zhpj => sa ! use sa as 3D workspace 539 540 !! * Arguments 541 INTEGER, INTENT( in ) :: kt ! ocean time-step index 542 543 !! * Local declarations 544 INTEGER :: ji, jj, jk ! dummy loop indices 545 REAL(wp) :: & 546 zcoef0, zuap, zvap ! temporary scalars 461 !!---------------------------------------------------------------------- 462 USE oce, ONLY : zhpi => ta ! use ta as 3D workspace 463 USE oce, ONLY : zhpj => sa ! use sa as 3D workspace 464 !! 465 INTEGER, INTENT(in) :: kt ! ocean time-step index 466 !! 467 INTEGER :: ji, jj, jk ! dummy loop indices 468 REAL(wp) :: zcoef0, zuap, zvap ! temporary scalars 547 469 !!---------------------------------------------------------------------- 548 470 … … 553 475 ENDIF 554 476 555 556 ! 0. Local constant initialization 557 ! -------------------------------- 477 ! Local constant initialization 558 478 zcoef0 = - grav * 0.5 559 560 479 561 ! 1. Surface value 562 ! ---------------- 480 ! Surface value 563 481 DO jj = 2, jpjm1 564 482 DO ji = fs_2, fs_jpim1 ! vector opt. … … 578 496 END DO 579 497 END DO 580 581 ! 2. interior value (2=<jk=<jpkm1) 582 ! ----------------- 498 ! 499 ! interior value (2=<jk=<jpkm1) 583 500 DO jk = 2, jpkm1 584 501 DO jj = 2, jpjm1 … … 606 523 END DO 607 524 END DO 608 525 ! 609 526 END SUBROUTINE hpg_hel 610 527 … … 619 536 !! 620 537 !! Reference : Song, Mon. Wea. Rev., 126, 3213-3230, 1998. 621 !! 622 !! History : 623 !! 9.0 ! 05-05 (B.W. An) Original code 624 !! ! 05-10 (G. Madec) style & small optimisation 625 !!---------------------------------------------------------------------- 626 !! * modules used 627 USE oce, ONLY : zhpi => ta, & ! use ta as 3D workspace 628 & zhpj => sa ! use sa as 3D workspace 629 630 !! * Arguments 631 INTEGER, INTENT( in ) :: kt ! ocean time-step index 632 633 !! * Local declarations 634 INTEGER :: ji, jj, jk ! dummy loop indices 635 REAL(wp) :: & 636 zcoef0, zuap, zvap, & ! temporary scalars 637 zalph , zbeta ! " " 538 !!---------------------------------------------------------------------- 539 USE oce, ONLY : zhpi => ta ! use ta as 3D workspace 540 USE oce, ONLY : zhpj => sa ! use sa as 3D workspace 541 !! 542 INTEGER, INTENT(in) :: kt ! ocean time-step index 543 !! 544 INTEGER :: ji, jj, jk ! dummy loop indices 545 REAL(wp) :: zcoef0, zuap, zvap ! temporary scalars 546 REAL(wp) :: zalph , zbeta ! " " 638 547 !!---------------------------------------------------------------------- 639 548 … … 644 553 ENDIF 645 554 646 647 555 ! Local constant initialization 648 ! -----------------------------649 556 zcoef0 = - grav * 0.5 650 557 zalph = 0.5 - gamm ! weighting coefficients (alpha=0.5-gamm) … … 652 559 653 560 ! Surface value (no ponderation) 654 ! -------------655 561 DO jj = 2, jpjm1 656 562 DO ji = fs_2, fs_jpim1 ! vector opt. … … 672 578 673 579 ! Interior value (2=<jk=<jpkm1) (weighted with zalph & zbeta) 674 ! --------------675 580 DO jk = 2, jpkm1 676 581 DO jj = 2, jpjm1 … … 700 605 END DO 701 606 END DO 702 607 ! 703 608 END SUBROUTINE hpg_wdj 704 609 … … 710 615 !! ** Method : Density Jacobian with Cubic polynomial scheme 711 616 !! 712 !! Reference: Shchepetkin, A.F. & J.C. McWilliams, J. Geophys. Res., 713 !! 108(C3), 3090, 2003 714 !! History : 715 !! 9.0 ! 05-05 (B.W. An) Original code 716 !!---------------------------------------------------------------------- 717 !! * modules used 718 USE oce, ONLY : zhpi => ta, & ! use ta as 3D workspace 719 & zhpj => sa ! use sa as 3D workspace 720 721 !! * Arguments 722 INTEGER, INTENT( in ) :: kt ! ocean time-step index 723 724 !! * Local declarations 725 INTEGER :: ji, jj, jk ! dummy loop indices 726 REAL(wp) :: & 727 zcoef0, z1_10, cffu, cffx, & ! temporary scalars 728 z1_12, cffv, cffy, & ! " " 729 zep , cffw ! " " 730 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & ! 3D workspace 731 drhox, dzx, drhou, dzu, rho_i, & 732 drhoy, dzy, drhov, dzv, rho_j, & 733 drhoz, dzz, drhow, dzw, rho_k 617 !! Reference: Shchepetkin and McWilliams, J. Geophys. Res., 108(C3), 3090, 2003 618 !!---------------------------------------------------------------------- 619 USE oce, ONLY : zhpi => ta ! use ta as 3D workspace 620 USE oce, ONLY : zhpj => sa ! use sa as 3D workspace 621 !! 622 INTEGER, INTENT(in) :: kt ! ocean time-step index 623 !! 624 INTEGER :: ji, jj, jk ! dummy loop indices 625 REAL(wp) :: zcoef0, zep, cffw ! temporary scalars 626 REAL(wp) :: z1_10, cffu, cffx ! " " 627 REAL(wp) :: z1_12, cffv, cffy ! " " 628 REAL(wp), DIMENSION(jpi,jpj,jpk) :: drhox, dzx, drhou, dzu, rho_i ! 3D workspace 629 REAL(wp), DIMENSION(jpi,jpj,jpk) :: drhoy, dzy, drhov, dzv, rho_j ! " " 630 REAL(wp), DIMENSION(jpi,jpj,jpk) :: drhoz, dzz, drhow, dzw, rho_k ! " " 734 631 !!---------------------------------------------------------------------- 735 632 … … 741 638 742 639 743 ! 0. Local constant initialization 744 ! -------------------------------- 640 ! Local constant initialization 745 641 zcoef0 = - grav * 0.5 746 642 z1_10 = 1.0 / 10.0 … … 771 667 zep = 1.e-15 772 668 773 774 669 !!bug gm drhoz not defined at level 1 and used (jk-1 with jk=2) 670 !!bug gm idem for drhox, drhoy et ji=jpi and jj=jpj 775 671 776 672 DO jk = 2, jpkm1 … … 930 826 END DO 931 827 END DO 932 828 ! 933 829 END SUBROUTINE hpg_djc 934 830 … … 941 837 !! 942 838 !! Reference: Thiem & Berntsen, Ocean Modelling, In press, 2005. 943 !! History : 944 !! 9.0 ! 05-07 (B.W. An) 945 !! 9.0 ! 05-10 (A. Beckmann) adapted to non-equidistant and masked grids 946 !!---------------------------------------------------------------------- 947 !! * modules used 948 USE oce, ONLY : zhpi => ta, & ! use ta as 3D workspace 949 & zhpj => sa ! use sa as 3D workspace 950 951 !! * Arguments 952 INTEGER, INTENT( in ) :: kt ! ocean time-step index 953 954 !! * Local declarations 955 INTEGER :: ji, jj, jk ! dummy loop indices 956 REAL(wp) :: & 957 zforg, zcoef0, zuap, zmskd1, zmskd1m, & 958 zfrot , zvap, zmskd2, zmskd2m 959 REAL(wp), DIMENSION(jpi,jpj) :: & ! 2D temporary workspace 960 zdistr, zsina, zcosa 961 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & ! 3D temporary workspace 962 zhpiorg, zhpirot, zhpitra, zhpine, & 963 zhpjorg, zhpjrot, zhpjtra, zhpjne 839 !!---------------------------------------------------------------------- 840 USE oce, ONLY : zhpi => ta ! use ta as 3D workspace 841 USE oce, ONLY : zhpj => sa ! use sa as 3D workspace 842 !! 843 INTEGER, INTENT(in) :: kt ! ocean time-step index 844 !! 845 INTEGER :: ji, jj, jk ! dummy loop indices 846 REAL(wp) :: zforg, zcoef0, zuap, zmskd1, zmskd1m ! temporary scalar 847 REAL(wp) :: zfrot , zvap, zmskd2, zmskd2m ! " " 848 REAL(wp), DIMENSION(jpi,jpj) :: zdistr, zsina, zcosa ! 2D workspace 849 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhpiorg, zhpirot, zhpitra, zhpine ! 3D workspace 850 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhpjorg, zhpjrot, zhpjtra, zhpjne ! " " 964 851 !!---------------------------------------------------------------------- 965 852 … … 1118 1005 END DO 1119 1006 END DO 1120 1007 ! 1121 1008 END SUBROUTINE hpg_rot 1122 1009
Note: See TracChangeset
for help on using the changeset viewer.