Changeset 11962 for NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcblk_algo_ecmwf.F90
- Timestamp:
- 2019-11-25T23:31:07+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcblk_algo_ecmwf.F90
r11845 r11962 44 44 PRIVATE 45 45 46 PUBLIC :: ECMWF_INIT, TURB_ECMWF46 PUBLIC :: SBCBLK_ALGO_ECMWF_INIT, TURB_ECMWF 47 47 48 48 !! ECMWF own values for given constants, taken form IFS documentation... … … 61 61 62 62 63 SUBROUTINE ecmwf_init(l_use_cs, l_use_wl)63 SUBROUTINE sbcblk_algo_ecmwf_init(l_use_cs, l_use_wl) 64 64 !!--------------------------------------------------------------------- 65 !! *** FUNCTION ecmwf_init ***65 !! *** FUNCTION sbcblk_algo_ecmwf_init *** 66 66 !! 67 67 !! INPUT : … … 77 77 ierr = 0 78 78 ALLOCATE ( dT_wl(jpi,jpj), Hz_wl(jpi,jpj), STAT=ierr ) 79 IF( ierr > 0 ) CALL ctl_stop( ' ECMWF_INIT => allocation of dT_wl & Hz_wl failed!' )79 IF( ierr > 0 ) CALL ctl_stop( ' SBCBLK_ALGO_ECMWF_INIT => allocation of dT_wl & Hz_wl failed!' ) 80 80 dT_wl(:,:) = 0._wp 81 81 Hz_wl(:,:) = rd0 ! (rd0, constant, = 3m is default for Zeng & Beljaars) … … 84 84 ierr = 0 85 85 ALLOCATE ( dT_cs(jpi,jpj), STAT=ierr ) 86 IF( ierr > 0 ) CALL ctl_stop( ' ECMWF_INIT => allocation of dT_cs failed!' )86 IF( ierr > 0 ) CALL ctl_stop( ' SBCBLK_ALGO_ECMWF_INIT => allocation of dT_cs failed!' ) 87 87 dT_cs(:,:) = -0.25_wp ! First guess of skin correction 88 88 END IF 89 END SUBROUTINE ecmwf_init89 END SUBROUTINE sbcblk_algo_ecmwf_init 90 90 91 91 … … 182 182 LOGICAL :: l_zt_equal_zu = .FALSE. ! if q and t are given at same height as U 183 183 ! 184 REAL(wp), DIMENSION(jpi,jpj) :: & 185 & u_star, t_star, q_star, & 186 & dt_zu, dq_zu, & 187 & znu_a, & !: Nu_air, Viscosity of air 188 & Linv, & !: 1/L (inverse of Monin Obukhov length... 189 & z0, z0t, z0q 190 ! 191 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: & 192 & zsst, & ! to back up the initial bulk SST 193 & pdTc, & ! SST increment "dT" for cool-skin correction [K] 194 & pdTw ! SST increment "dT" for warm layer correction [K] 195 ! 196 REAL(wp), DIMENSION(jpi,jpj) :: func_m, func_h 197 REAL(wp), DIMENSION(jpi,jpj) :: ztmp0, ztmp1, ztmp2 184 REAL(wp), DIMENSION(jpi,jpj) :: u_star, t_star, q_star 185 REAL(wp), DIMENSION(jpi,jpj) :: dt_zu, dq_zu 186 REAL(wp), DIMENSION(jpi,jpj) :: znu_a !: Nu_air, Viscosity of air 187 REAL(wp), DIMENSION(jpi,jpj) :: Linv !: 1/L (inverse of Monin Obukhov length... 188 REAL(wp), DIMENSION(jpi,jpj) :: z0, z0t, z0q 189 ! 190 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zsst ! to back up the initial bulk SST 191 ! 192 REAL(wp), DIMENSION(jpi,jpj) :: func_m, func_h 193 REAL(wp), DIMENSION(jpi,jpj) :: ztmp0, ztmp1, ztmp2 198 194 CHARACTER(len=40), PARAMETER :: crtnm = 'turb_ecmwf@sbcblk_algo_ecmwf.F90' 199 195 !!---------------------------------------------------------------------------------- 200 196 201 IF ( kt == nit000 ) CALL ECMWF_INIT(l_use_cs, l_use_wl)197 IF ( kt == nit000 ) CALL SBCBLK_ALGO_ECMWF_INIT(l_use_cs, l_use_wl) 202 198 203 199 l_zt_equal_zu = .FALSE. … … 367 363 CALL WL_ECMWF( Qsw, ztmp1, u_star, zsst ) 368 364 !! Updating T_s and q_s !!! 369 T_s(:,:) = zsst(:,:) + dT_wl(:,:)*tmask(:,:,1) 365 T_s(:,:) = zsst(:,:) + dT_wl(:,:)*tmask(:,:,1) ! 370 366 IF( l_use_cs ) T_s(:,:) = T_s(:,:) + dT_cs(:,:)*tmask(:,:,1) 371 367 q_s(:,:) = rdct_qsat_salt*q_sat(MAX(T_s(:,:), 200._wp), slp(:,:))
Note: See TracChangeset
for help on using the changeset viewer.