Changeset 2996
- Timestamp:
- 2011-10-25T19:18:54+02:00 (13 years ago)
- Location:
- branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/cpp_ORCA2_LIM.fcm
r2905 r2996 1 bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_zdftke key_zdfddm key_zdftmx key_iomput key_vvl1 bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_lim2 key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_zdftke key_zdfddm key_zdftmx key_iomput key_vvl key_dynspg_ts -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r2974 r2996 384 384 ! - ML - baroclinicity error should be better treated in the future 385 385 ! i.e. locally and not spread over the water column. 386 ! (keep in mind that the idea is to reduce Eulerian velocity as much as possible) 386 387 zht(:,:) = 0. 387 388 DO jk = 1, jpkm1 … … 397 398 IF( ln_debug ) THEN ! - ML - test: control prints for debuging 398 399 IF ( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 399 WRITE(numout, *) 'kt 400 WRITE(numout, *) 'kt =', kt 400 401 WRITE(numout, *) 'MAXVAL(abs(ht_0-SUM(e3t_t_a))) =', & 401 402 & MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) - zht(:,:) ) ) … … 521 522 z_e3t_def(:,:,:) = ( ( fse3t_n(:,:,:) - fse3t_0(:,:,:) ) / fse3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 522 523 CALL iom_put( "e3t_n" , fse3t_n (:,:,:) ) 523 CALL iom_put( "dept_n" , fsde pt_n (:,:,:) )524 CALL iom_put( "dept_n" , fsde3w_n (:,:,:) ) 524 525 CALL iom_put( "e3tdef" , z_e3t_def(:,:,:) ) 525 526 -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r2905 r2996 572 572 ! 573 573 IF( wrk_not_released(2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, & 574 & 11,12,13,14,15,16,17,18,19,20,21) ) & 574 & 11,12,13,14,15,16,17,18,19,20, & 575 & 21,22,23 ) ) & 575 576 CALL ctl_stop('dyn_spg_ts: failed to release workspace arrays') 576 577 ! … … 584 585 !! ** Purpose : Read or write time-splitting arrays in restart file 585 586 !!---------------------------------------------------------------------- 587 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 588 USE wrk_nemo, ONLY: zhu_b => wrk_2d_24 , zhv_b => wrk_2d_25 589 ! 586 590 INTEGER , INTENT(in) :: kt ! ocean time-step 587 591 CHARACTER(len=*), INTENT(in) :: cdrw ! "READ"/"WRITE" flag … … 601 605 DO jk = 1, jpkm1 602 606 DO ji = 1, jpij 603 un_b(ji,1) = un_b(ji,1) + fse3u (ji,1,jk) * un(ji,1,jk)604 vn_b(ji,1) = vn_b(ji,1) + fse3v (ji,1,jk) * vn(ji,1,jk)607 un_b(ji,1) = un_b(ji,1) + fse3u_n(ji,1,jk) * un(ji,1,jk) 608 vn_b(ji,1) = vn_b(ji,1) + fse3v_n(ji,1,jk) * vn(ji,1,jk) 605 609 END DO 606 610 END DO 607 611 ELSE ! No vector opt. 608 612 DO jk = 1, jpkm1 609 un_b(:,:) = un_b(:,:) + fse3u (:,:,jk) * un(:,:,jk)610 vn_b(:,:) = vn_b(:,:) + fse3v (:,:,jk) * vn(:,:,jk)613 un_b(:,:) = un_b(:,:) + fse3u_n(:,:,jk) * un(:,:,jk) 614 vn_b(:,:) = vn_b(:,:) + fse3v_n(:,:,jk) * vn(:,:,jk) 611 615 END DO 612 616 ENDIF … … 617 621 ! Vertically integrated velocity (before) 618 622 IF (neuler/=0) THEN 619 ub_b (:,:) = 0.e0 620 vb_b (:,:) = 0.e0 621 622 ! vertical sum 623 IF( lk_vopt_loop ) THEN ! vector opt., forced unroll 624 DO jk = 1, jpkm1 625 DO ji = 1, jpij 626 ub_b(ji,1) = ub_b(ji,1) + fse3u_b(ji,1,jk) * ub(ji,1,jk) 627 vb_b(ji,1) = vb_b(ji,1) + fse3v_b(ji,1,jk) * vb(ji,1,jk) 623 ! 624 IF( lk_vvl ) THEN 625 IF( wrk_in_use(2, 24, 25 ) ) THEN 626 CALL ctl_stop( 'ts_rst: requested workspace arrays unavailable' ) ; RETURN 627 ENDIF 628 ub_b (:,:) = 0. 629 vb_b (:,:) = 0. 630 zhu_b(:,:) = 0. 631 zhv_b(:,:) = 0. 632 ! vertical sum 633 IF( lk_vopt_loop ) THEN ! vector opt., forced unroll 634 DO jk = 1, jpkm1 635 DO ji = 1, jpij 636 ub_b(ji,1) = ub_b (ji,1) + fse3u_b(ji,1,jk) * ub (ji,1,jk) 637 vb_b(ji,1) = vb_b (ji,1) + fse3v_b(ji,1,jk) * vb (ji,1,jk) 638 zhu_b(:,:) = zhu_b(ji,1) + fse3u_b(ji,1,jk) * umask(ji,1,jk) 639 zhv_b(:,:) = zhv_b(ji,1) + fse3v_b(ji,1,jk) * vmask(ji,1,jk) 640 END DO 628 641 END DO 629 END DO 630 ELSE ! No vector opt. 631 DO jk = 1, jpkm1 632 ub_b(:,:) = ub_b(:,:) + fse3u_b(:,:,jk) * ub(:,:,jk) 633 vb_b(:,:) = vb_b(:,:) + fse3v_b(:,:,jk) * vb(:,:,jk) 634 END DO 642 ELSE ! No vector opt. 643 DO jk = 1, jpkm1 644 ub_b (:,:) = ub_b (:,:) + fse3u_b(:,:,jk) * ub (:,:,jk) 645 vb_b (:,:) = vb_b (:,:) + fse3v_b(:,:,jk) * vb (:,:,jk) 646 zhu_b(:,:) = zhu_b(:,:) + fse3u_b(:,:,jk) * umask(:,:,jk) 647 zhv_b(:,:) = zhv_b(:,:) + fse3v_b(:,:,jk) * vmask(:,:,jk) 648 END DO 649 ENDIF 650 ub_b(:,:) = ub_b(:,:) / ( zhu_b(:,:) + 1. - umask(:,:,1) ) 651 vb_b(:,:) = vb_b(:,:) / ( zhv_b(:,:) + 1. - vmask(:,:,1) ) 652 ELSE 653 ub_b (:,:) = 0.e0 654 vb_b (:,:) = 0.e0 655 ! vertical sum 656 IF( lk_vopt_loop ) THEN ! vector opt., forced unroll 657 DO jk = 1, jpkm1 658 DO ji = 1, jpij 659 ub_b(ji,1) = ub_b(ji,1) + fse3u_b(ji,1,jk) * ub(ji,1,jk) 660 vb_b(ji,1) = vb_b(ji,1) + fse3v_b(ji,1,jk) * vb(ji,1,jk) 661 END DO 662 END DO 663 ELSE ! No vector opt. 664 DO jk = 1, jpkm1 665 ub_b(:,:) = ub_b(:,:) + fse3u_b(:,:,jk) * ub(:,:,jk) 666 vb_b(:,:) = vb_b(:,:) + fse3v_b(:,:,jk) * vb(:,:,jk) 667 END DO 668 ENDIF 669 ub_b(:,:) = ub_b(:,:) * hur(:,:) 670 vb_b(:,:) = vb_b(:,:) * hvr(:,:) 635 671 ENDIF 636 637 ub_b(:,:) = ub_b(:,:) * zhu_b(:,:) 638 vb_b(:,:) = vb_b(:,:) * zhv_b(:,:) 672 ! 673 ELSE ! neuler==0 674 ub_b (:,:) = un_b (:,:) 675 vb_b (:,:) = vn_b (:,:) 676 ENDIF 639 677 640 678 IF( iom_varid( numror, 'sshn_b', ldstop = .FALSE. ) > 0 ) THEN … … 647 685 CALL iom_rstput( kt, nitrst, numrow, 'vn_b' , vn_b (:,:) ) ! issued from barotropic loop 648 686 CALL iom_rstput( kt, nitrst, numrow, 'sshn_b' , sshn_b(:,:) ) ! 687 ENDIF 688 ! 689 IF( lk_vvl ) THEN 690 IF( wrk_not_released(2, 24, 25) ) & 691 CALL ctl_stop('dyn_spg_ts: failed to release workspace arrays') 649 692 ENDIF 650 693 ! -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r2715 r2996 72 72 CONTAINS 73 73 74 SUBROUTINE eos_insitu( pts, prd )74 SUBROUTINE eos_insitu( pts, prd, pdep ) 75 75 !!---------------------------------------------------------------------- 76 76 !! *** ROUTINE eos_insitu *** … … 114 114 ! ! 2 : salinity [psu] 115 115 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: prd ! in situ density [-] 116 REAL(wp), DIMENSION(:,:,:) , INTENT(in ) :: pdep ! depth [m] 116 117 !! 117 118 INTEGER :: ji, jj, jk ! dummy loop indices … … 138 139 DO jj = 1, jpj 139 140 DO ji = 1, jpi 140 zt = pts 141 zs = pts 142 zh = fsdept(ji,jj,jk) ! depth143 zsr= zws 141 zt = pts (ji,jj,jk,jp_tem) 142 zs = pts (ji,jj,jk,jp_sal) 143 zh = pdep(ji,jj,jk) ! depth 144 zsr= zws (ji,jj,jk) ! square root salinity 144 145 ! 145 146 ! compute volumic mass pure water at atm pressure … … 196 197 197 198 198 SUBROUTINE eos_insitu_pot( pts, prd, prhop )199 SUBROUTINE eos_insitu_pot( pts, prd, prhop, pdep ) 199 200 !!---------------------------------------------------------------------- 200 201 !! *** ROUTINE eos_insitu_pot *** … … 249 250 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT( out) :: prd ! in situ density [-] 250 251 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT( out) :: prhop ! potential density (surface referenced) 252 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pdep ! depth [m] 251 253 ! 252 254 INTEGER :: ji, jj, jk ! dummy loop indices … … 269 271 DO jj = 1, jpj 270 272 DO ji = 1, jpi 271 zt = pts 272 zs = pts 273 zh = fsdept(ji,jj,jk) ! depth274 zsr= zws 273 zt = pts (ji,jj,jk,jp_tem) 274 zs = pts (ji,jj,jk,jp_sal) 275 zh = pdep(ji,jj,jk) ! depth 276 zsr= zws (ji,jj,jk) ! square root salinity 275 277 ! 276 278 ! compute volumic mass pure water at atm pressure -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/step.F90
r2917 r2996 146 146 ! 147 147 IF( lk_ldfslp ) THEN ! slope of lateral mixing 148 CALL eos( tsb, rhd )! before in situ density148 CALL eos( tsb, rhd, fsdept_0(:,:,:) ) ! before in situ density 149 149 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsb, gtsu, gtsv, & ! Partial steps: before horizontal gradient 150 150 & rhd, gru , grv ) ! of t, s, rd at the last ocean level … … 201 201 IF( ln_zdfnpc ) CALL tra_npc( kstp ) ! update after fields by non-penetrative convection 202 202 CALL tra_nxt( kstp ) ! tracer fields at next time step 203 CALL eos ( tsa, rhd, rhop )! Time-filtered in situ density for hpg computation203 CALL eos ( tsa, rhd, rhop, fsdept_n(:,:,:) ) ! Time-filtered in situ density for hpg computation 204 204 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsa, gtsu, gtsv, & ! zps: time filtered hor. derivative 205 205 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 206 206 207 207 ELSE ! centered hpg (eos then time stepping) 208 CALL eos ( tsn, rhd, rhop )! now in situ density for hpg computation208 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 209 209 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsn, gtsu, gtsv, & ! zps: now hor. derivative 210 210 & rhd, gru , grv ) ! of t, s, rd at the last ocean level -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/trcwri.F90
r2567 r2996 67 67 DO jn = 1, jptra 68 68 cltra = TRIM( ctrcnm(jn) ) ! short title for tracer 69 CALL iom_put( cltra, trn(:,:,:,jn) ) 69 IF( lk_vvl ) THEN 70 CALL iom_put( cltra, trn(:,:,:,jn) * fse3t_n(:,:,:) ) 71 ELSE 72 CALL iom_put( cltra, trn(:,:,:,jn) ) 73 END IF 70 74 END DO 71 75 !
Note: See TracChangeset
for help on using the changeset viewer.