Changeset 9120 for branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
- Timestamp:
- 2017-12-18T18:29:02+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r7761 r9120 494 494 END IF 495 495 496 ! Surface value 497 DO jj = 2, jpjm1 498 DO ji = fs_2, fs_jpim1 ! vector opt. 499 ! hydrostatic pressure gradient along s-surfaces 500 zhpi(ji,jj,1) = zcoef0 * ( e3w_n(ji+1,jj ,1) * ( znad + rhd(ji+1,jj ,1) ) & 501 & - e3w_n(ji ,jj ,1) * ( znad + rhd(ji ,jj ,1) ) ) * r1_e1u(ji,jj) 502 zhpj(ji,jj,1) = zcoef0 * ( e3w_n(ji ,jj+1,1) * ( znad + rhd(ji ,jj+1,1) ) & 503 & - e3w_n(ji ,jj ,1) * ( znad + rhd(ji ,jj ,1) ) ) * r1_e2v(ji,jj) 504 ! s-coordinate pressure gradient correction 505 zuap = -zcoef0 * ( rhd (ji+1,jj,1) + rhd (ji,jj,1) + 2._wp * znad ) & 506 & * ( gde3w_n(ji+1,jj,1) - gde3w_n(ji,jj,1) ) * r1_e1u(ji,jj) 507 zvap = -zcoef0 * ( rhd (ji,jj+1,1) + rhd (ji,jj,1) + 2._wp * znad ) & 508 & * ( gde3w_n(ji,jj+1,1) - gde3w_n(ji,jj,1) ) * r1_e2v(ji,jj) 509 510 511 IF( ln_wd ) THEN 512 513 zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 514 zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj) 515 zuap = zuap * zcpx(ji,jj) 516 zvap = zvap * zcpy(ji,jj) 517 ENDIF 518 519 ! add to the general momentum trend 520 ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap 521 va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap 522 END DO 523 END DO 524 525 ! interior value (2=<jk=<jpkm1) 526 DO jk = 2, jpkm1 527 DO jj = 2, jpjm1 528 DO ji = fs_2, fs_jpim1 ! vector opt. 529 ! hydrostatic pressure gradient along s-surfaces 530 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj) & 531 & * ( e3w_n(ji+1,jj,jk) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad ) & 532 & - e3w_n(ji ,jj,jk) * ( rhd(ji ,jj,jk) + rhd(ji ,jj,jk-1) + 2*znad ) ) 533 zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 * r1_e2v(ji,jj) & 534 & * ( e3w_n(ji,jj+1,jk) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad ) & 535 & - e3w_n(ji,jj ,jk) * ( rhd(ji,jj, jk) + rhd(ji,jj ,jk-1) + 2*znad ) ) 536 ! s-coordinate pressure gradient correction 537 zuap = -zcoef0 * ( rhd (ji+1,jj ,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 538 & * ( gde3w_n(ji+1,jj ,jk) - gde3w_n(ji,jj,jk) ) * r1_e1u(ji,jj) 539 zvap = -zcoef0 * ( rhd (ji ,jj+1,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 540 & * ( gde3w_n(ji ,jj+1,jk) - gde3w_n(ji,jj,jk) ) * r1_e2v(ji,jj) 541 542 IF( ln_wd ) THEN 543 zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 544 zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj) 545 zuap = zuap * zcpx(ji,jj) 546 zvap = zvap * zcpy(ji,jj) 547 ENDIF 548 549 ! add to the general momentum trend 550 ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap 551 va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap 552 END DO 553 END DO 554 END DO 496 IF (ln_2d) THEN 497 ! Surface value 498 DO jj = 2, jpjm1 499 DO ji = fs_2, fs_jpim1 ! vector opt. 500 ! hydrostatic pressure gradient along s-surfaces 501 zhpi(ji,jj,1) = zcoef0 * ( e3w_n(ji+1,jj ,1) * znad & 502 & - e3w_n(ji ,jj ,1) * znad ) * r1_e1u(ji,jj) 503 zhpj(ji,jj,1) = zcoef0 * ( e3w_n(ji ,jj+1,1) * znad & 504 & - e3w_n(ji ,jj ,1) * znad ) * r1_e2v(ji,jj) 505 ! s-coordinate pressure gradient correction 506 zuap = -zcoef0 * ( 2._wp * znad ) & 507 & * ( gde3w_n(ji+1,jj,1) - gde3w_n(ji,jj,1) ) * r1_e1u(ji,jj) 508 zvap = -zcoef0 * ( 2._wp * znad ) & 509 & * ( gde3w_n(ji,jj+1,1) - gde3w_n(ji,jj,1) ) * r1_e2v(ji,jj) 510 511 512 IF( ln_wd ) THEN 513 514 zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 515 zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj) 516 zuap = zuap * zcpx(ji,jj) 517 zvap = zvap * zcpy(ji,jj) 518 ENDIF 519 520 ! add to the general momentum trend 521 ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap * umask(ji,jj,1) 522 va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap * vmask(ji,jj,1) 523 END DO 524 END DO 525 526 ! interior value (2=<jk=<jpkm1) 527 DO jk = 2, jpkm1 528 DO jj = 2, jpjm1 529 DO ji = fs_2, fs_jpim1 ! vector opt. 530 ! hydrostatic pressure gradient along s-surfaces 531 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj) & 532 & * ( e3w_n(ji+1,jj,jk) * ( 2*znad ) & 533 & - e3w_n(ji ,jj,jk) * ( 2*znad ) ) 534 zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 * r1_e2v(ji,jj) & 535 & * ( e3w_n(ji,jj+1,jk) * ( 2*znad ) & 536 & - e3w_n(ji,jj ,jk) * ( 2*znad ) ) 537 ! s-coordinate pressure gradient correction 538 zuap = -zcoef0 * ( 2._wp * znad ) & 539 & * ( gde3w_n(ji+1,jj ,jk) - gde3w_n(ji,jj,jk) ) * r1_e1u(ji,jj) 540 zvap = -zcoef0 * ( 2._wp * znad ) & 541 & * ( gde3w_n(ji ,jj+1,jk) - gde3w_n(ji,jj,jk) ) * r1_e2v(ji,jj) 542 543 IF( ln_wd ) THEN 544 zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 545 zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj) 546 zuap = zuap * zcpx(ji,jj) 547 zvap = zvap * zcpy(ji,jj) 548 ENDIF 549 550 ! add to the general momentum trend 551 ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap * umask(ji,jj,1) 552 va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap * vmask(ji,jj,1) 553 END DO 554 END DO 555 END DO 556 557 ELSE 558 559 ! Surface value 560 DO jj = 2, jpjm1 561 DO ji = fs_2, fs_jpim1 ! vector opt. 562 ! hydrostatic pressure gradient along s-surfaces 563 zhpi(ji,jj,1) = zcoef0 * ( e3w_n(ji+1,jj ,1) * ( znad + rhd(ji+1,jj ,1) ) & 564 & - e3w_n(ji ,jj ,1) * ( znad + rhd(ji ,jj ,1) ) ) * r1_e1u(ji,jj) 565 zhpj(ji,jj,1) = zcoef0 * ( e3w_n(ji ,jj+1,1) * ( znad + rhd(ji ,jj+1,1) ) & 566 & - e3w_n(ji ,jj ,1) * ( znad + rhd(ji ,jj ,1) ) ) * r1_e2v(ji,jj) 567 ! s-coordinate pressure gradient correction 568 zuap = -zcoef0 * ( rhd (ji+1,jj,1) + rhd (ji,jj,1) + 2._wp * znad ) & 569 & * ( gde3w_n(ji+1,jj,1) - gde3w_n(ji,jj,1) ) * r1_e1u(ji,jj) 570 zvap = -zcoef0 * ( rhd (ji,jj+1,1) + rhd (ji,jj,1) + 2._wp * znad ) & 571 & * ( gde3w_n(ji,jj+1,1) - gde3w_n(ji,jj,1) ) * r1_e2v(ji,jj) 572 573 574 IF( ln_wd ) THEN 575 576 zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 577 zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj) 578 zuap = zuap * zcpx(ji,jj) 579 zvap = zvap * zcpy(ji,jj) 580 ENDIF 581 582 ! add to the general momentum trend 583 ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap 584 va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap 585 END DO 586 END DO 587 588 ! interior value (2=<jk=<jpkm1) 589 DO jk = 2, jpkm1 590 DO jj = 2, jpjm1 591 DO ji = fs_2, fs_jpim1 ! vector opt. 592 ! hydrostatic pressure gradient along s-surfaces 593 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj) & 594 & * ( e3w_n(ji+1,jj,jk) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad ) & 595 & - e3w_n(ji ,jj,jk) * ( rhd(ji ,jj,jk) + rhd(ji ,jj,jk-1) + 2*znad ) ) 596 zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 * r1_e2v(ji,jj) & 597 & * ( e3w_n(ji,jj+1,jk) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad ) & 598 & - e3w_n(ji,jj ,jk) * ( rhd(ji,jj, jk) + rhd(ji,jj ,jk-1) + 2*znad ) ) 599 ! s-coordinate pressure gradient correction 600 zuap = -zcoef0 * ( rhd (ji+1,jj ,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 601 & * ( gde3w_n(ji+1,jj ,jk) - gde3w_n(ji,jj,jk) ) * r1_e1u(ji,jj) 602 zvap = -zcoef0 * ( rhd (ji ,jj+1,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 603 & * ( gde3w_n(ji ,jj+1,jk) - gde3w_n(ji,jj,jk) ) * r1_e2v(ji,jj) 604 605 IF( ln_wd ) THEN 606 zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 607 zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj) 608 zuap = zuap * zcpx(ji,jj) 609 zvap = zvap * zcpy(ji,jj) 610 ENDIF 611 612 ! add to the general momentum trend 613 ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap 614 va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap 615 END DO 616 END DO 617 END DO 618 END IF ! if ln_2d 619 555 620 ! 556 621 CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj )
Note: See TracChangeset
for help on using the changeset viewer.