Changeset 14393
- Timestamp:
- 2021-02-04T10:48:50+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_penetrating_solar/src/OCE/SBC/sbccpl.F90
r14392 r14393 2033 2033 CASE( 'oce only' ) 2034 2034 zqsr_tot(:,: ) = MAX( 0._wp , frcv(jpr_qsroce)%z3(:,:,1) ) * ziceld(:,:) 2035 ! For Met Office sea ice solar fluxes are already delt with by JULES so setting to zero 2036 ! here so the only flux is the ocean only one. 2035 2036 ! For the Met Office the only sea ice solar flux is the transmitted qsr which is added onto zqsr_ice 2037 ! further down. Therefore start zqsr_ice off at zero. 2037 2038 zqsr_ice(:,:,:) = 0._wp 2038 2039 CASE( 'conservative' ) … … 2086 2087 zqsr_ice(:,:,jl) = sbc_dcy( zqsr_ice(:,:,jl) ) 2087 2088 END DO 2088 ENDIF2089 2090 #if defined key_si32091 ! --- solar flux over ocean --- !2092 ! note: ziceld cannot be = 0 since we limit the ice concentration to amax2093 zqsr_oce = 0._wp2094 WHERE( ziceld /= 0._wp ) zqsr_oce(:,:) = ( zqsr_tot(:,:) - SUM( a_i * zqsr_ice, dim=3 ) ) / ziceld(:,:)2095 2096 IF( ln_mixcpl ) THEN ; qsr_oce(:,:) = qsr_oce(:,:) * xcplmask(:,:,0) + zqsr_oce(:,:)* zmsk(:,:)2097 ELSE ; qsr_oce(:,:) = zqsr_oce(:,:) ; ENDIF2098 #endif2099 2100 IF( ln_mixcpl ) THEN2101 qsr_tot(:,:) = qsr(:,:) * ziceld(:,:) + SUM( qsr_ice(:,:,:) * a_i(:,:,:), dim=3 ) ! total flux from blk2102 qsr_tot(:,:) = qsr_tot(:,:) * xcplmask(:,:,0) + zqsr_tot(:,:)* zmsk(:,:)2103 DO jl = 1, jpl2104 qsr_ice(:,:,jl) = qsr_ice(:,:,jl) * xcplmask(:,:,0) + zqsr_ice(:,:,jl)* zmsk(:,:)2105 END DO2106 ELSE2107 qsr_tot(:,: ) = zqsr_tot(:,: )2108 qsr_ice(:,:,:) = zqsr_ice(:,:,:)2109 ENDIF2110 2111 ! ! ========================= !2112 SELECT CASE( TRIM( sn_rcv_dqnsdt%cldes ) ) ! d(qns)/dt !2113 ! ! ========================= !2114 CASE ('coupled')2115 IF ( TRIM(sn_rcv_dqnsdt%clcat) == 'yes' ) THEN2116 zdqns_ice(:,:,1:jpl) = frcv(jpr_dqnsdt)%z3(:,:,1:jpl)2117 ELSE2118 ! Set all category values equal for the moment2119 DO jl=1,jpl2120 zdqns_ice(:,:,jl) = frcv(jpr_dqnsdt)%z3(:,:,1)2121 ENDDO2122 ENDIF2123 CASE( 'none' )2124 zdqns_ice(:,:,:) = 0._wp2125 END SELECT2126 2127 IF( ln_mixcpl ) THEN2128 DO jl=1,jpl2129 dqns_ice(:,:,jl) = dqns_ice(:,:,jl) * xcplmask(:,:,0) + zdqns_ice(:,:,jl) * zmsk(:,:)2130 ENDDO2131 ELSE2132 dqns_ice(:,:,:) = zdqns_ice(:,:,:)2133 2089 ENDIF 2134 2090 … … 2176 2132 ENDIF 2177 2133 2134 ! Add retrieved transmitted solar radiation onto the ice and total solar radiation 2135 zqsr_ice(:,:,:) = zqsr_ice(:,:,:) + zqtr_ice_top(:,:,:) 2136 zqsr_tot(:,:) = zqsr_tot(:,:) + SUM( zqtr_ice_top(:,:,:) * a_i(:,:,:), dim=3 ) 2137 2178 2138 ! if we are not getting this data from the coupler then assume zero (fully opaque ice) 2179 2139 CASE ('none') 2180 2140 zqtr_ice_top(:,:,:) = 0._wp 2181 2141 END SELECT 2142 2182 2143 ! 2183 2144 ENDIF … … 2190 2151 qtr_ice_top(:,:,:) = zqtr_ice_top(:,:,:) 2191 2152 ENDIF 2153 2154 ! --- solar flux over ocean --- ! 2155 ! note: ziceld cannot be = 0 since we limit the ice concentration to amax 2156 zqsr_oce = 0._wp 2157 WHERE( ziceld /= 0._wp ) zqsr_oce(:,:) = ( zqsr_tot(:,:) - SUM( a_i * zqsr_ice, dim=3 ) ) / ziceld(:,:) 2158 2159 IF( ln_mixcpl ) THEN ; qsr_oce(:,:) = qsr_oce(:,:) * xcplmask(:,:,0) + zqsr_oce(:,:)* zmsk(:,:) 2160 ELSE ; qsr_oce(:,:) = zqsr_oce(:,:) ; ENDIF 2161 #endif 2162 2163 IF( ln_mixcpl ) THEN 2164 qsr_tot(:,:) = qsr(:,:) * ziceld(:,:) + SUM( qsr_ice(:,:,:) * a_i(:,:,:), dim=3 ) ! total flux from blk 2165 qsr_tot(:,:) = qsr_tot(:,:) * xcplmask(:,:,0) + zqsr_tot(:,:)* zmsk(:,:) 2166 DO jl = 1, jpl 2167 qsr_ice(:,:,jl) = qsr_ice(:,:,jl) * xcplmask(:,:,0) + zqsr_ice(:,:,jl)* zmsk(:,:) 2168 END DO 2169 ELSE 2170 qsr_tot(:,: ) = zqsr_tot(:,: ) 2171 qsr_ice(:,:,:) = zqsr_ice(:,:,:) 2172 ENDIF 2173 2174 ! ! ========================= ! 2175 SELECT CASE( TRIM( sn_rcv_dqnsdt%cldes ) ) ! d(qns)/dt ! 2176 ! ! ========================= ! 2177 CASE ('coupled') 2178 IF ( TRIM(sn_rcv_dqnsdt%clcat) == 'yes' ) THEN 2179 zdqns_ice(:,:,1:jpl) = frcv(jpr_dqnsdt)%z3(:,:,1:jpl) 2180 ELSE 2181 ! Set all category values equal for the moment 2182 DO jl=1,jpl 2183 zdqns_ice(:,:,jl) = frcv(jpr_dqnsdt)%z3(:,:,1) 2184 ENDDO 2185 ENDIF 2186 CASE( 'none' ) 2187 zdqns_ice(:,:,:) = 0._wp 2188 END SELECT 2189 2190 IF( ln_mixcpl ) THEN 2191 DO jl=1,jpl 2192 dqns_ice(:,:,jl) = dqns_ice(:,:,jl) * xcplmask(:,:,0) + zdqns_ice(:,:,jl) * zmsk(:,:) 2193 ENDDO 2194 ELSE 2195 dqns_ice(:,:,:) = zdqns_ice(:,:,:) 2196 ENDIF 2197 2198 #if defined key_si3 2192 2199 ! ! ================== ! 2193 2200 ! ! ice skin temp. !
Note: See TracChangeset
for help on using the changeset viewer.