Changeset 12192
- Timestamp:
- 2019-12-11T17:00:27+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbc_oce.F90
r12179 r12192 154 154 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sss_m !: mean (nn_fsbc time-step) surface sea salinity [psu] 155 155 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ssh_m !: mean (nn_fsbc time-step) sea surface height [m] 156 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tsk_m !: mean (nn_fsbc time-step) SKIN surface sea temp erature [K]156 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tsk_m !: mean (nn_fsbc time-step) SKIN surface sea temp. [Celsius] 157 157 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e3t_m !: mean (nn_fsbc time-step) sea surface layer thickness [m] 158 158 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_m !: mean (nn_fsbc time-step) fraction of solar net radiation absorbed in the 1st T level [-] -
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbcblk.F90
r12183 r12192 496 496 REAL(wp), INTENT(in ), DIMENSION(:,:) :: ptair ! potential temperature at T-points [Kelvin] 497 497 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pslp ! sea-level pressure [Pa] 498 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pst ! surface temperature [Cel cius]498 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pst ! surface temperature [Celsius] 499 499 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pu ! surface current at U-point (i-component) [m/s] 500 500 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pv ! surface current at V-point (j-component) [m/s] 501 501 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pqsr ! 502 502 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pqlw ! 503 REAL(wp), INTENT( out), DIMENSION(:,:) :: ptsk ! skin temp. (or SST if CS & WL not used) [ K]503 REAL(wp), INTENT( out), DIMENSION(:,:) :: ptsk ! skin temp. (or SST if CS & WL not used) [Celsius] 504 504 REAL(wp), INTENT( out), DIMENSION(:,:) :: pssq ! specific humidity at pst [kg/kg] 505 505 REAL(wp), INTENT( out), DIMENSION(:,:) :: pcd_du ! Cd x |dU| at T-points [m/s] … … 521 521 ! 522 522 ! local scalars ( place there for vector optimisation purposes) 523 ! ! convert "bulk SST"from Celcius to Kelvin (and set minimum value far above 0 K)524 ptsk(:,:) = pst(:,:) + rt0 ! by default,skin temperature = "bulk SST" (will remain this way if NCAR algorithm used!)523 ! ! Temporary conversion from Celcius to Kelvin (and set minimum value far above 0 K) 524 ptsk(:,:) = pst(:,:) + rt0 ! by default: skin temperature = "bulk SST" (will remain this way if NCAR algorithm used!) 525 525 526 526 ! ----------------------------------------------------------------------------- ! … … 643 643 ptsk(:,:) = zztmp1(:,:) 644 644 pssq(:,:) = zztmp2(:,:) 645 ELSEWHERE646 ! no sea-ice!647 ! ptsk and zsq have been updated by cool-skin/warm-layer scheme and we keep them !!!648 ptsk(:,:) = ptsk(:,:)*tmask(:,:,1)649 pssq(:,:) = pssq(:,:)*tmask(:,:,1)645 !ELSEWHERE 646 ! ! no sea-ice! 647 ! ! ptsk and zsq have been updated by cool-skin/warm-layer scheme and we keep them !!! 648 ! ptsk(:,:) = ptsk(:,:)*tmask(:,:,1) 649 ! pssq(:,:) = pssq(:,:)*tmask(:,:,1) 650 650 END WHERE 651 651 END IF … … 715 715 ! 716 716 ENDIF !IF( ln_abl ) 717 717 718 ptsk(:,:) = ( ptsk(:,:) - rt0 ) * tmask(:,:,1) ! Back to Celsius 719 718 720 IF( ln_skin_cs .OR. ln_skin_wl ) THEN 719 CALL iom_put( "t_skin" , (ptsk - rt0) * tmask(:,:,1)) ! T_skin in Celsius720 CALL iom_put( "dt_skin" , (ptsk - pst - rt0) * tmask(:,:,1)) ! T_skin - SST temperature difference...721 CALL iom_put( "t_skin" , ptsk ) ! T_skin in Celsius 722 CALL iom_put( "dt_skin" , ptsk - pst ) ! T_skin - SST temperature difference... 721 723 ENDIF 722 724 … … 731 733 732 734 SUBROUTINE blk_oce_2( ptair, pqsr, pqlw, pprec, & ! <<= in 733 & psnow, ptsk 735 & psnow, ptsk, psen, pevp ) ! <<= in 734 736 !!--------------------------------------------------------------------- 735 737 !! *** ROUTINE blk_oce_2 *** … … 752 754 REAL(wp), INTENT(in), DIMENSION(:,:) :: pprec 753 755 REAL(wp), INTENT(in), DIMENSION(:,:) :: psnow 754 REAL(wp), INTENT(in), DIMENSION(:,:) :: ptsk ! SKIN surface temperature [ K]756 REAL(wp), INTENT(in), DIMENSION(:,:) :: ptsk ! SKIN surface temperature [Celsius] 755 757 REAL(wp), INTENT(in), DIMENSION(:,:) :: psen 756 758 REAL(wp), INTENT(in), DIMENSION(:,:) :: pevp … … 758 760 INTEGER :: ji, jj ! dummy loop indices 759 761 REAL(wp) :: zztmp,zz1,zz2,zz3 ! local variable 760 REAL(wp), DIMENSION(jpi,jpj) :: zqlw ! long wave and sensible heat fluxes 762 REAL(wp), DIMENSION(jpi,jpj) :: ztskk ! skin temp. in Kelvin 763 REAL(wp), DIMENSION(jpi,jpj) :: zqlw ! long wave and sensible heat fluxes 761 764 REAL(wp), DIMENSION(jpi,jpj) :: zqla ! latent heat fluxes and evaporation 762 765 !!--------------------------------------------------------------------- … … 765 768 766 769 770 ztskk(:,:) = ptsk(:,:) + rt0 ! => ptsk in Kelvin rather than Celsius 771 767 772 ! ----------------------------------------------------------------------------- ! 768 773 ! III Net longwave radiative FLUX ! … … 770 775 771 776 !! LB: now moved after Turbulent fluxes because must use the skin temperature rather that the SST 772 !! ( ptsk is skin temperature if ln_skin_cs==.TRUE. .OR. ln_skin_wl==.TRUE.)773 zqlw(:,:) = emiss_w * ( pqlw(:,:) - stefan* ptsk(:,:)*ptsk(:,:)*ptsk(:,:)*ptsk(:,:) ) * tmask(:,:,1) ! Net radiative longwave flux777 !! (ztskk is skin temperature if ln_skin_cs==.TRUE. .OR. ln_skin_wl==.TRUE.) 778 zqlw(:,:) = emiss_w * ( pqlw(:,:) - stefan*ztskk(:,:)*ztskk(:,:)*ztskk(:,:)*ztskk(:,:) ) * tmask(:,:,1) ! Net radiative longwave flux 774 779 775 780 ! Latent flux over ocean … … 779 784 DO jj = 1, jpj 780 785 DO ji = 1, jpi 781 zqla(ji,jj) = - L_vap( ptsk(ji,jj) ) * pevp(ji,jj) ! Latent Heat flux !!GS: possibility to add a global qla to avoid recomputation after abl update786 zqla(ji,jj) = - L_vap( ztskk(ji,jj) ) * pevp(ji,jj) ! Latent Heat flux !!GS: possibility to add a global qla to avoid recomputation after abl update 782 787 ENDDO 783 788 ENDDO … … 798 803 qns(:,:) = zqlw(:,:) + psen(:,:) + zqla(:,:) & ! Downward Non Solar 799 804 & - psnow(:,:) * rn_pfac * rLfus & ! remove latent melting heat for solid precip 800 & - pevp(:,:) * (ptsk(:,:) -rt0) * rcp & ! remove evap heat content at SST !LB??? ptsk is Celsius !?805 & - pevp(:,:) * ptsk(:,:) * rcp & ! remove evap heat content at SST 801 806 & + ( pprec(:,:) - psnow(:,:) ) * rn_pfac & ! add liquid precip heat content at Tair 802 807 & * ( ptair(:,:) - rt0 ) * rcp &
Note: See TracChangeset
for help on using the changeset viewer.