Changeset 6727 for branches/2016/dev_r6711_SIMPLIF_6_aerobulk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare.F90
- Timestamp:
- 2016-06-21T16:25:51+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6711_SIMPLIF_6_aerobulk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare.F90
r6723 r6727 18 18 !! Author: Laurent Brodeau, 2016, brodeau@gmail.com 19 19 !! 20 !!====================================================================== ==============21 22 !! History : 3.6 ! 2016-02 (L.Brodeau) Original code20 !!====================================================================== 21 !! History : 3.6 ! 2016-02 (L.Brodeau) Original code 22 !!---------------------------------------------------------------------- 23 23 24 24 !!---------------------------------------------------------------------- … … 27 27 !! returns the effective bulk wind speed at 10m 28 28 !!---------------------------------------------------------------------- 29 30 USE oce ! ocean dynamics and tracers 31 USE dom_oce ! ocean space and time domain 32 USE phycst ! physical constants 33 USE iom ! I/O manager library 34 USE lib_mpp ! distribued memory computing library 35 USE wrk_nemo ! work arrays 36 USE timing ! Timing 37 USE in_out_manager ! I/O manager 38 USE prtctl ! Print control 39 USE sbcwave, ONLY : cdn_wave ! wave module 29 USE oce ! ocean dynamics and tracers 30 USE dom_oce ! ocean space and time domain 31 USE phycst ! physical constants 32 USE sbc_oce ! Surface boundary condition: ocean fields 33 USE sbcwave, ONLY : cdn_wave ! wave module 40 34 #if defined key_lim3 || defined key_cice 41 USE sbc_ice 35 USE sbc_ice ! Surface boundary condition: ice fields 42 36 #endif 43 USE lib_fortran ! to use key_nosignedzero 44 45 USE sbc_oce ! Surface boundary condition: ocean fields 37 ! 38 USE in_out_manager ! I/O manager 39 USE iom ! I/O manager library 40 USE lib_mpp ! distribued memory computing library 41 USE wrk_nemo ! work arrays 42 USE timing ! Timing 43 USE prtctl ! Print control 44 USE lib_fortran ! to use key_nosignedzero 45 46 46 47 47 IMPLICIT NONE 48 48 PRIVATE 49 49 50 PUBLIC :: TURB_COARE50 PUBLIC :: TURB_COARE ! called by sbcblk.F90 51 51 52 52 !! COARE own values for given constants: … … 71 71 !! 72 72 !! ** Method : Monin Obukhov Similarity Theory 73 !! ======================================================================================73 !!---------------------------------------------------------------------- 74 74 !! 75 75 !! INPUT : … … 92 92 !! * q_zu : specific humidity of air // [kg/kg] 93 93 !! * U_blk : bulk wind at 10m [m/s] 94 !! 95 !! 96 !!============================================================================ 97 98 99 REAL(wp), INTENT(in ) :: zt ! height for t_zt and q_zt [m] 100 REAL(wp), INTENT(in ) :: zu ! height for U_zu [m] 101 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: sst ! sea surface temperature [Kelvin] 102 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: t_zt ! potential air temperature [Kelvin] 103 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: ssq ! sea surface specific humidity [kg/kg] 104 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: q_zt ! specific air humidity [kg/kg] 105 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: U_zu ! relative wind module at zu [m/s] 94 !!---------------------------------------------------------------------- 95 REAL(wp), INTENT(in ) :: zt ! height for t_zt and q_zt [m] 96 REAL(wp), INTENT(in ) :: zu ! height for U_zu [m] 97 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: sst ! sea surface temperature [Kelvin] 98 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: t_zt ! potential air temperature [Kelvin] 99 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: ssq ! sea surface specific humidity [kg/kg] 100 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: q_zt ! specific air humidity at zt [kg/kg] 101 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: U_zu ! relative wind module at zu [m/s] 106 102 REAL(wp), INTENT( out), DIMENSION(jpi,jpj) :: Cd ! transfer coefficient for momentum (tau) 107 103 REAL(wp), INTENT( out), DIMENSION(jpi,jpj) :: Ch ! transfer coefficient for sensible heat (Q_sens) 108 104 REAL(wp), INTENT( out), DIMENSION(jpi,jpj) :: Ce ! transfert coefficient for evaporation (Q_lat) 109 REAL(wp), INTENT( out), DIMENSION(jpi,jpj) :: t_zu ! pot. air temp. adjusted at zu [K]110 REAL(wp), INTENT( out), DIMENSION(jpi,jpj) :: q_zu ! spec. humidity adjusted at zu 105 REAL(wp), INTENT( out), DIMENSION(jpi,jpj) :: t_zu ! pot. air temp. adjusted at zu [K] 106 REAL(wp), INTENT( out), DIMENSION(jpi,jpj) :: q_zu ! spec. humidity adjusted at zu [kg/kg] 111 107 REAL(wp), INTENT( out), DIMENSION(jpi,jpj) :: U_blk ! bulk wind at 10m [m/s] 112 108 ! 113 109 INTEGER :: j_itt 114 110 LOGICAL :: l_zt_equal_zu = .FALSE. ! if q and t are given at same height as U … … 123 119 REAL(wp), DIMENSION(:,:), POINTER :: zeta_t ! stability parameter at height zt 124 120 REAL(wp), DIMENSION(:,:), POINTER :: ztmp0, ztmp1, ztmp2 125 121 !!---------------------------------------------------------------------- 122 ! 126 123 IF( nn_timing == 1 ) CALL timing_start('turb_coare') 127 124 128 CALL wrk_alloc( jpi,jpj, u_star, t_star, q_star, zeta_u, dt_zu, dq_zu)129 CALL wrk_alloc( jpi,jpj, znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 )125 CALL wrk_alloc( jpi,jpj, u_star, t_star, q_star, zeta_u, dt_zu, dq_zu) 126 CALL wrk_alloc( jpi,jpj, znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 ) 130 127 131 128 l_zt_equal_zu = .FALSE. … … 136 133 !! First guess of temperature and humidity at height zu: 137 134 t_zu = MAX(t_zt , 0.0) ! who knows what's given on masked-continental regions... 138 q_zu = MAX(q_zt , 1. E-6) ! "135 q_zu = MAX(q_zt , 1.e-6) ! " 139 136 140 137 !! Pot. temp. difference (and we don't want it to be 0!) … … 258 255 259 256 260 261 262 257 FUNCTION alfa_charn( pwnd ) 263 258 !!------------------------------------------------------------------- … … 270 265 !! Wind greater than 18 m/s : alfa = 0.018 271 266 !! 272 !! Author: L. Brodeau, june 2016 / AeroBulk 273 !! (https://sourceforge.net/p/aerobulk) 267 !! Author: L. Brodeau, june 2016 / AeroBulk (https://sourceforge.net/p/aerobulk) 274 268 !!------------------------------------------------------------------- 275 269 REAL(wp), DIMENSION(jpi,jpj) :: alfa_charn … … 278 272 INTEGER :: ji, jj ! dummy loop indices 279 273 REAL(wp) :: zw, zgt10, zgt18 274 !!------------------------------------------------------------------- 280 275 ! 281 276 DO jj = 1, jpj … … 296 291 ! 297 292 END FUNCTION alfa_charn 298 299 293 300 294 … … 315 309 INTEGER :: ji, jj ! dummy loop indices 316 310 REAL(wp) :: zqa ! local scalar 311 !!------------------------------------------------------------------- 317 312 ! 318 313 DO jj = 1, jpj
Note: See TracChangeset
for help on using the changeset viewer.