- Timestamp:
- 2016-07-01T18:02:45+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2_crs.F90
r5601 r6772 61 61 ! 62 62 PUBLIC eos_crs ! called by step, istate, tranpc and zpsgrd modules 63 PUBLIC bn2_crs ! called by step module64 63 PUBLIC eos_rab_crs ! called by ldfslp, zdfddm, trabbl 65 64 PUBLIC eos_init_crs ! called by istate module … … 392 391 DO ji = 1, jpi_crs 393 392 ! 394 zh = gdept_crs(ji,jj,jk) * r1_Z0 ! depth393 zh = fsdept_crs(ji,jj,jk) * r1_Z0 ! depth 395 394 zt = pts (ji,jj,jk,jp_tem) * r1_T0 ! temperature 396 395 zs = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity … … 450 449 zt = pts (ji,jj,jk,jp_tem) - 10._wp ! pot. temperature anomaly (t-T0) 451 450 zs = pts (ji,jj,jk,jp_sal) - 35._wp ! abs. salinity anomaly (s-S0) 452 zh = gdept_crs(ji,jj,jk) ! depth in meters at t-point451 zh = fsdept_crs(ji,jj,jk) ! depth in meters at t-point 453 452 ztm = tmask_crs(ji,jj,jk) ! land/sea bottom mask = surf. mask 454 453 ! … … 689 688 ! 690 689 END SUBROUTINE rab_crs_0d 691 692 693 SUBROUTINE bn2_crs( pts, pab, pn2 )694 !!----------------------------------------------------------------------695 !! *** ROUTINE bn2 ***696 !!697 !! ** Purpose : Compute the local Brunt-Vaisala frequency at the698 !! time-step of the input arguments699 !!700 !! ** Method : pn2 = grav * (alpha dk[T] + beta dk[S] ) / e3w701 !! where alpha and beta are given in pab, and computed on T-points.702 !! N.B. N^2 is set one for all to zero at jk=1 in istate module.703 !!704 !! ** Action : pn2 : square of the brunt-vaisala frequency at w-point705 !!706 !!----------------------------------------------------------------------707 REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk,jpts), INTENT(in ) :: pts ! pot. temperature and salinity [Celcius,psu]708 REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk,jpts), INTENT(in ) :: pab ! thermal/haline expansion coef. [Celcius-1,psu-1]709 REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk ), INTENT( out) :: pn2 ! Brunt-Vaisala frequency squared [1/s^2]710 !711 INTEGER :: ji, jj, jk ! dummy loop indices712 REAL(wp) :: zaw, zbw, zrw ! local scalars713 !!----------------------------------------------------------------------714 !715 pn2(:,:,:)=0._wp716 717 IF( nn_timing == 1 ) CALL timing_start('bn2')718 !719 DO jk = 2, jpkm1 ! interior points only (2=< jk =< jpkm1 )720 DO jj = 1, jpj_crs ! surface and bottom value set to zero one for all in istate.F90721 DO ji = 1, jpi_crs722 !zrw = ( gdepw_crs(ji,jj,jk ) - gdept_crs(ji,jj,jk) ) &723 ! & / ( gdept_crs(ji,jj,jk-1) - gdept_crs(ji,jj,jk) )724 zrw = gdepw_crs(ji,jj,jk ) - gdept_crs(ji,jj,jk)725 !?IF( gdept_crs(ji,jj,jk-1) - gdept_crs(ji,jj,jk) .NE. 0._wp )THEN726 IF( gdept_crs(ji,jj,jk-1) - gdept_crs(ji,jj,jk) .LT. 0._wp )THEN727 zrw = zrw / ( gdept_crs(ji,jj,jk-1) - gdept_crs(ji,jj,jk) )728 ELSE729 zrw = 0._wp730 ENDIF731 !732 zaw = pab(ji,jj,jk,jp_tem) * (1._wp - zrw) + pab(ji,jj,jk-1,jp_tem) * zrw733 zbw = pab(ji,jj,jk,jp_sal) * (1._wp - zrw) + pab(ji,jj,jk-1,jp_sal) * zrw734 !735 IF( e3w_max_crs(ji,jj,jk) .NE. 0._wp ) THEN736 pn2(ji,jj,jk) = grav * ( zaw * ( pts(ji,jj,jk-1,jp_tem) - pts(ji,jj,jk,jp_tem) ) &737 & - zbw * ( pts(ji,jj,jk-1,jp_sal) - pts(ji,jj,jk,jp_sal) ) ) &738 & * tmask_crs(ji,jj,jk) / e3w_max_crs(ji,jj,jk)739 ENDIF740 END DO741 END DO742 END DO743 !744 IF( nn_timing == 1 ) CALL timing_stop('bn2')745 !746 END SUBROUTINE bn2_crs747 690 748 691 SUBROUTINE eos_init_crs
Note: See TracChangeset
for help on using the changeset viewer.