Changeset 1975 for branches/DEV_r1837_MLF/NEMO/OPA_SRC/TRA/traqsr.F90
- Timestamp:
- 2010-06-28T19:22:14+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r1837_MLF/NEMO/OPA_SRC/TRA/traqsr.F90
r1870 r1975 47 47 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_chl ! structure of input Chl (file informations, fields read) 48 48 49 INTEGER 49 INTEGER , PUBLIC :: nksr ! levels below which the light cannot penetrate (depth larger than 391 m) 50 50 REAL(wp), DIMENSION(3,61) :: rkrgb ! tabulated attenuation coefficients for RGB absorption 51 51 … … 97 97 REAL(wp) :: zchl, zcoef, zsi0r ! temporary scalars 98 98 REAL(wp) :: zc0, zc1, zc2, zc3 ! - - 99 REAL(wp) :: zqsr ! - -100 99 REAL(wp), DIMENSION(jpi,jpj) :: zekb, zekg, zekr ! 2D workspace 101 100 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze0, ze1 , ze2, ze3, zea ! 3D workspace … … 123 122 DO ji = fs_2, fs_jpim1 ! vector opt. 124 123 !!gm how to stecify the mean of time step here : TOP versus OPA time stepping strategy not obvious 125 ta(ji,jj,jk) = ta(ji,jj,jk) + ro0cpr * ( etot3(ji,jj,jk) - etot3(ji,jj,jk+1) ) / fse3t(ji,jj,jk)124 qsr_trd_hc_n(ji,jj,jk) = ro0cpr * ( etot3(ji,jj,jk) - etot3(ji,jj,jk+1) ) 126 125 END DO 127 126 END DO … … 155 154 zsi0r = 1.e0 / rn_si0 156 155 zcoef = ( 1. - rn_abs ) / 3.e0 ! equi-partition in R-G-B 157 !!gm bug !!! zqsr only a constant not an array 158 zqsr = 0.5 * ( qsr_b(:,:) + qsr(:,:) ) ! mean over 2 time steps 159 ze0(:,:,1) = rn_abs * zqsr 160 ze1(:,:,1) = zcoef * zqsr 161 ze2(:,:,1) = zcoef * zqsr 162 ze3(:,:,1) = zcoef * zqsr 163 zea(:,:,1) = zqsr 156 157 ze0(:,:,1) = rn_abs * qsr(:,:) 158 ze1(:,:,1) = zcoef * qsr(:,:) 159 ze2(:,:,1) = zcoef * qsr(:,:) 160 ze3(:,:,1) = zcoef * qsr(:,:) 161 zea(:,:,1) = qsr(:,:) 164 162 ! 165 163 DO jk = 2, nksr+1 ! deeper values … … 183 181 ! 184 182 DO jk = 1, nksr ! compute and add qsr trend to ta 185 ta(:,:,jk) = ta(:,:,jk) + ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) / fse3t(:,:,jk)183 qsr_trd_hc_n(:,:,jk) = ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) 186 184 END DO 187 185 zea(:,:,nksr+1:jpk) = 0.e0 ! below 400m set to zero … … 190 188 ELSE !* Constant Chlorophyll 191 189 DO jk = 1, nksr 192 ta(:,:,jk) = ta(:,:,jk) + etot3(:,:,jk) * 0.5 * ( qsr_b(:,:) + qsr(:,:))190 qsr_trd_hc_n(:,:,jk) = etot3(:,:,jk) * qsr(:,:) 193 191 END DO 194 192 ENDIF … … 201 199 DO jj = 2, jpjm1 202 200 DO ji = fs_2, fs_jpim1 ! vector opt. 203 ta(ji,jj,jk) = ta(ji,jj,jk) + etot3(ji,jj,jk) * 0.5 * ( qsr_b(:,:) + qsr(:,:))201 qsr_trd_hc_n(ji,jj,jk) = etot3(ji,jj,jk) * qsr(ji,jj) 204 202 END DO 205 203 END DO … … 208 206 ENDIF 209 207 ! 208 ENDIF 209 210 ! Add qsr trend to ta in all cases 211 IF( neuler == 0 .AND. kt == nit000 ) THEN 212 DO jk = 1, nksr 213 DO jj = 2, jpjm1 214 DO ji = fs_2, fs_jpim1 ! vector opt. 215 ta(ji,jj,jk) = ta(ji,jj,jk) + qsr_trd_hc_n(ji,jj,jk) / fse3t(ji,jj,jk) 216 END DO 217 END DO 218 END DO 219 ELSE 220 DO jk = 1, nksr 221 DO jj = 2, jpjm1 222 DO ji = fs_2, fs_jpim1 ! vector opt. 223 ta(ji,jj,jk) = ta(ji,jj,jk) + 0.5 * ( qsr_trd_hc_b(ji,jj,jk) + qsr_trd_hc_n(ji,jj,jk) ) / fse3t(ji,jj,jk) 224 END DO 225 END DO 226 END DO 210 227 ENDIF 211 228 … … 382 399 ! 383 400 DO jk = 1, nksr 384 etot3(:,:,jk) = ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) / fse3t(:,:,jk)401 etot3(:,:,jk) = ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) 385 402 END DO 386 403 etot3(:,:,nksr+1:jpk) = 0.e0 ! below 400m set to zero … … 404 421 zc0 = rn_abs * EXP( -fsdepw(ji,jj,jk )*zsi0r ) + (1.-rn_abs) * EXP( -fsdepw(ji,jj,jk )*zsi1r ) 405 422 zc1 = rn_abs * EXP( -fsdepw(ji,jj,jk+1)*zsi0r ) + (1.-rn_abs) * EXP( -fsdepw(ji,jj,jk+1)*zsi1r ) 406 etot3(ji,jj,jk) = ro0cpr * ( zc0 * tmask(ji,jj,jk) - zc1 * tmask(ji,jj,jk+1) ) / fse3t(ji,jj,jk)423 etot3(ji,jj,jk) = ro0cpr * ( zc0 * tmask(ji,jj,jk) - zc1 * tmask(ji,jj,jk+1) ) 407 424 END DO 408 425 END DO
Note: See TracChangeset
for help on using the changeset viewer.