Changeset 13677 for branches/UKMO/dev_r5518_GO6_package_FOAMv14_biophys/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcopt_medusa.F90
- Timestamp:
- 2020-10-26T18:37:31+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_FOAMv14_biophys/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcopt_medusa.F90
r8074 r13677 28 28 29 29 PUBLIC trc_opt_medusa ! called in trcprg.F90 30 31 REAL(wp), DIMENSION(3,61) :: okrgb !: tabulated attenuation coefficients for RGB absorption 30 32 31 33 !!* Substitution … … 50 52 !!--------------------------------------------------------------------- 51 53 INTEGER, INTENT( in ) :: kt ! index of the time stepping 52 INTEGER :: ji, jj, jk 54 INTEGER :: ji, jj, jk, irgb 53 55 REAL(wp) :: zpig ! total pigment 54 56 REAL(wp) :: zkr ! total absorption coefficient in red … … 58 60 REAL(wp), DIMENSION(jpi,jpj) :: zpar0m ! irradiance just below the surface 59 61 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zparr, zparg ! red and green compound of par 62 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zekb, zekg, zekr 63 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze1, ze2, ze3 60 64 61 65 CHARACTER (len=25) :: charout … … 113 117 ! --------------------- 114 118 115 DO jk = 2, jpk ! determination of local par in w levels 116 DO jj = 1, jpj 117 DO ji = 1, jpi 118 totchl =trn(ji,jj,jk-1,jpchn)+trn(ji,jj,jk-1,jpchd) 119 zpig = MAX( TINY(0.), totchl/rpig) 120 zkr = xkr0 + xkrp * EXP( xlr * LOG( zpig ) ) 121 zkg = xkg0 + xkgp * EXP( xlg * LOG( zpig ) ) 122 zparr(ji,jj,jk) = zparr(ji,jj,jk-1) * EXP( -zkr * fse3t(ji,jj,jk-1) ) 123 zparg(ji,jj,jk) = zparg(ji,jj,jk-1) * EXP( -zkg * fse3t(ji,jj,jk-1) ) 119 IF ( ln_rgb ) THEN 120 ! Mean PAR in T levels using RGB scheme 121 ! Should be same as in traqsr, but T rather than W levels 122 IF( kt == nittrc000 ) THEN 123 CALL trc_oce_rgb( okrgb ) 124 ENDIF 125 DO jk = 1, jpkm1 126 DO jj = 1, jpj 127 DO ji = 1, jpi 128 totchl = trn(ji,jj,jk,jpchn) + trn(ji,jj,jk,jpchd) 129 totchl = MIN( 10. , MAX( 0.05, totchl ) ) 130 irgb = NINT( 41 + 20.* LOG10( totchl ) + 1.e-15 ) 131 ! 132 zekb(ji,jj,jk) = okrgb(1,irgb) * fse3t(ji,jj,jk) 133 zekg(ji,jj,jk) = okrgb(2,irgb) * fse3t(ji,jj,jk) 134 zekr(ji,jj,jk) = okrgb(3,irgb) * fse3t(ji,jj,jk) 135 END DO 124 136 END DO 125 END DO126 END DO127 128 DO jk = 1, jpkm1 ! mean par in t levels129 DO jj = 1, jpj130 DO ji = 1, jpi131 totchl =trn(ji,jj,jk ,jpchn)+trn(ji,jj,jk ,jpchd)132 zpig = MAX( TINY(0.), totchl/rpig)133 zkr = xkr0 + xkrp * EXP( xlr * LOG( zpig) )134 zkg = xkg0 + xkgp * EXP( xlg * LOG( zpig) )135 zparr(ji,jj,jk) = zparr(ji,jj,jk) / zkr / fse3t(ji,jj,jk) * ( 1 - EXP( -zkr*fse3t(ji,jj,jk) ) )136 zparg(ji,jj,jk) = zparg(ji,jj,jk) / zkg / fse3t(ji,jj,jk) * ( 1 - EXP( -zkg*fse3t(ji,jj,jk) ))137 xpar (ji,jj,jk) = MAX( zparr(ji,jj,jk) + zparg(ji,jj,jk), 1.e-15 )137 END DO 138 ze1(:,:,1) = zpar0m(:,:) * EXP( -0.5 * zekb(:,:,1) ) / 3.0 139 ze2(:,:,1) = zpar0m(:,:) * EXP( -0.5 * zekg(:,:,1) ) / 3.0 140 ze3(:,:,1) = zpar0m(:,:) * EXP( -0.5 * zekr(:,:,1) ) / 3.0 141 ! 142 DO jk = 2, jpk 143 DO jj = 1, jpj 144 DO ji = 1, jpi 145 ze1(ji,jj,jk) = ze1(ji,jj,jk-1) * EXP( -0.5 * ( zekb(ji,jj,jk-1) + zekb(ji,jj,jk) ) ) 146 ze2(ji,jj,jk) = ze2(ji,jj,jk-1) * EXP( -0.5 * ( zekg(ji,jj,jk-1) + zekg(ji,jj,jk) ) ) 147 ze3(ji,jj,jk) = ze3(ji,jj,jk-1) * EXP( -0.5 * ( zekr(ji,jj,jk-1) + zekr(ji,jj,jk) ) ) 148 xpar(ji,jj,jk) = MAX( ze1(ji,jj,jk) + ze2(ji,jj,jk) + ze3(ji,jj,jk), 1.e-15 ) 149 END DO 138 150 END DO 139 151 END DO 140 END DO 152 ELSE 153 DO jk = 2, jpk ! determination of local par in w levels 154 DO jj = 1, jpj 155 DO ji = 1, jpi 156 totchl =trn(ji,jj,jk-1,jpchn)+trn(ji,jj,jk-1,jpchd) 157 zpig = MAX( TINY(0.), totchl/rpig) 158 zkr = xkr0 + xkrp * EXP( xlr * LOG( zpig ) ) 159 zkg = xkg0 + xkgp * EXP( xlg * LOG( zpig ) ) 160 zparr(ji,jj,jk) = zparr(ji,jj,jk-1) * EXP( -zkr * fse3t(ji,jj,jk-1) ) 161 zparg(ji,jj,jk) = zparg(ji,jj,jk-1) * EXP( -zkg * fse3t(ji,jj,jk-1) ) 162 END DO 163 END DO 164 END DO 165 166 DO jk = 1, jpkm1 ! mean par in t levels 167 DO jj = 1, jpj 168 DO ji = 1, jpi 169 totchl =trn(ji,jj,jk ,jpchn)+trn(ji,jj,jk ,jpchd) 170 zpig = MAX( TINY(0.), totchl/rpig) 171 zkr = xkr0 + xkrp * EXP( xlr * LOG( zpig ) ) 172 zkg = xkg0 + xkgp * EXP( xlg * LOG( zpig ) ) 173 zparr(ji,jj,jk) = zparr(ji,jj,jk) / zkr / fse3t(ji,jj,jk) * ( 1 - EXP( -zkr*fse3t(ji,jj,jk) ) ) 174 zparg(ji,jj,jk) = zparg(ji,jj,jk) / zkg / fse3t(ji,jj,jk) * ( 1 - EXP( -zkg*fse3t(ji,jj,jk) ) ) 175 xpar (ji,jj,jk) = MAX( zparr(ji,jj,jk) + zparg(ji,jj,jk), 1.e-15 ) 176 END DO 177 END DO 178 END DO 179 ENDIF 141 180 142 181 ! 3. Determination of euphotic layer depth
Note: See TracChangeset
for help on using the changeset viewer.