Changeset 13830 for NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/SBC/sbcblk_algo_ice_an05.F90
- Timestamp:
- 2020-11-19T13:31:18+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/SBC/sbcblk_algo_ice_an05.F90
r13820 r13830 19 19 !!---------------------------------------------------------------------- 20 20 USE par_kind, ONLY: wp 21 USE par_oce, ONLY: jpi, jpj 21 USE par_oce, ONLY: jpi, jpj, Nis0, Nie0, Njs0, Nje0, nn_hls 22 USE lib_mpp, ONLY: ctl_stop ! distribued memory computing library 22 23 USE phycst ! physical constants 23 24 USE sbc_phy ! Catalog of functions for physical/meteorological parameters in the marine boundary layer 24 !USE sbcblk_algo_ice_cdn25 25 26 26 IMPLICIT NONE … … 31 31 INTEGER , PARAMETER :: nbit = 8 ! number of itterations 32 32 33 !! * Substitutions 34 # include "do_loop_substitute.h90" 33 35 !!---------------------------------------------------------------------- 34 36 CONTAINS 35 37 36 SUBROUTINE turb_ice_an05( zt, zu, Ts_i, t_zt, qs_i, q_zt, U_zu, 37 & Cd_i, Ch_i, Ce_i, t_zu_i, q_zu_i, 38 SUBROUTINE turb_ice_an05( zt, zu, Ts_i, t_zt, qs_i, q_zt, U_zu, & 39 & Cd_i, Ch_i, Ce_i, t_zu_i, q_zu_i, & 38 40 & CdN, ChN, CeN, xz0, xu_star, xL, xUN10 ) 39 41 !!---------------------------------------------------------------------- … … 100 102 !!---------------------------------------------------------------------------------- 101 103 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: Ubzu 104 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ztmp0, ztmp1, ztmp2 ! temporary stuff 105 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: z0, dt_zu, dq_zu 102 106 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: u_star, t_star, q_star 103 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: dt_zu, dq_zu 104 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: znu_a !: Nu_air = kinematic viscosity of air 105 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: z0 107 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: znu_a !: Nu_air = kinematic viscosity of air 108 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zeta_u, zeta_t ! stability parameter at height zu 106 109 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: z0tq 107 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zeta_u ! stability parameter at height zu108 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zeta_t ! stability parameter at height zt109 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ztmp0, ztmp1, ztmp2110 110 !! 111 111 INTEGER :: jit … … 117 117 CHARACTER(len=40), PARAMETER :: crtnm = 'turb_ice_an05@sbcblk_algo_ice_an05.f90' 118 118 !!---------------------------------------------------------------------------------- 119 ALLOCATE ( Ubzu(jpi,jpj), u_star(jpi,jpj),t_star(jpi,jpj), q_star(jpi,jpj), &120 & 121 & 122 & 123 124 IF( PRESENT(CdN) ) lreturn_cdn = .TRUE.125 IF( PRESENT(ChN) ) lreturn_chn = .TRUE.126 IF( PRESENT(CeN) ) lreturn_cen = .TRUE.127 IF( PRESENT(xz0) ) lreturn_z0 = .TRUE.128 IF( PRESENT(xu_star) ) lreturn_ustar = .TRUE.129 IF( PRESENT(xL) ) lreturn_L = .TRUE.130 IF( PRESENT(xUN10) ) lreturn_UN10 = .TRUE.119 ALLOCATE ( Ubzu(jpi,jpj), u_star(jpi,jpj), t_star(jpi,jpj), q_star(jpi,jpj), & 120 & zeta_u(jpi,jpj), dt_zu(jpi,jpj), dq_zu(jpi,jpj), & 121 & znu_a(jpi,jpj), ztmp1(jpi,jpj), ztmp2(jpi,jpj), & 122 & z0(jpi,jpj), z0tq(jpi,jpj,2), ztmp0(jpi,jpj) ) 123 124 lreturn_cdn = PRESENT(CdN) 125 lreturn_chn = PRESENT(ChN) 126 lreturn_cen = PRESENT(CeN) 127 lreturn_z0 = PRESENT(xz0) 128 lreturn_ustar = PRESENT(xu_star) 129 lreturn_L = PRESENT(xL) 130 lreturn_UN10 = PRESENT(xUN10) 131 131 132 132 l_zt_equal_zu = ( ABS(zu - zt) < 0.01_wp ) 133 133 IF( .NOT. l_zt_equal_zu ) ALLOCATE( zeta_t(jpi,jpj) ) 134 135 134 136 135 !! Scalar wind speed cannot be below 0.2 m/s … … 162 161 t_star = dt_zu*vkarmn/(LOG(zu/z0tq(:,:,1))) 163 162 q_star = dq_zu*vkarmn/(LOG(zu/z0tq(:,:,2))) 164 165 166 163 164 167 165 !! ITERATION BLOCK 168 166 DO jit = 1, nbit … … 217 215 IF( lreturn_UN10 ) xUN10 = u_star/vkarmn*LOG(10./z0) 218 216 219 DEALLOCATE ( u_star, t_star, q_star, zeta_u, dt_zu, dq_zu, z0, z0tq, znu_a, ztmp0, ztmp1, ztmp2 )217 DEALLOCATE ( Ubzu, u_star, t_star, q_star, zeta_u, dt_zu, dq_zu, z0, z0tq, znu_a, ztmp0, ztmp1, ztmp2 ) 220 218 IF( .NOT. l_zt_equal_zu ) DEALLOCATE( zeta_t ) 221 219 … … 243 241 244 242 rough_leng_m(ji,jj) = 0.135*pnua(ji,jj)/zus + 0.035*zus*zus/grav*( 5.*EXP(-zz*zz) + 1._wp ) ! Eq.(19) Andreas et al., 2005 245 246 243 END_2D 247 244 !!
Note: See TracChangeset
for help on using the changeset viewer.