- Timestamp:
- 2016-09-23T11:57:08+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90
r6287 r6943 86 86 REAL(wp) :: ztc, ztc2, ztc3, ztc4, zws, zkgwan 87 87 REAL(wp) :: zfld, zflu, zfld16, zflu16, zfact 88 REAL(wp) :: zvapsw, zsal, zfco2, zxc2, xCO2approx, ztkel, zfugcoeff 88 89 REAL(wp) :: zph, zah2, zbot, zdic, zalk, zsch_o2, zalka, zsch_co2 89 90 REAL(wp) :: zyr_dec, zdco2dt 90 91 CHARACTER (len=25) :: charout 91 REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx, zw2d 92 REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx, zw2d, zpco2atm 92 93 !!--------------------------------------------------------------------- 93 94 ! 94 95 IF( nn_timing == 1 ) CALL timing_start('p4z_flx') 95 96 ! 96 CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx )97 CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx, zpco2atm ) 97 98 ! 98 99 … … 183 184 DO jj = 1, jpj 184 185 DO ji = 1, jpi 186 ztkel = tsn(ji,jj,1,jp_tem) + 273.15 187 zsal = tsn(ji,jj,1,jp_sal) + ( 1.- tmask(ji,jj,1) ) * 35. 188 zvapsw = EXP(24.4543 - 67.4509*(100.0/ztkel) - 4.8489*LOG(ztkel/100) - 0.000544*zsal) 189 zpco2atm(ji,jj) = satmco2(ji,jj) * ( patm(ji,jj) - zvapsw ) 190 zxc2 = (1.0 - zpco2atm(ji,jj) * 1E-6 )**2 191 zfugcoeff = EXP(patm(ji,jj) * (chemc(ji,jj,2) + 2.0 * zxc2 * chemc(ji,jj,3) ) & 192 & / (82.05736 * ztkel)) 193 zfco2 = zpco2atm(ji,jj) * zfugcoeff 194 185 195 ! Compute CO2 flux for the sea and air 186 zfld = satmco2(ji,jj) * patm(ji,jj) * tmask(ji,jj,1) * chemc(ji,jj) * zkgco2(ji,jj)! (mol/L) * (m/s)187 zflu = zh2co3(ji,jj) * tmask(ji,jj,1) *zkgco2(ji,jj) ! (mol/L) (m/s) ?196 zfld = zfco2 * chemc(ji,jj,1) * zkgco2(ji,jj) ! (mol/L) * (m/s) 197 zflu = zh2co3(ji,jj) * zkgco2(ji,jj) ! (mol/L) (m/s) ? 188 198 oce_co2(ji,jj) = ( zfld - zflu ) * rfact2 * e1e2t(ji,jj) * tmask(ji,jj,1) * 1000. 189 199 ! compute the trend 190 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + ( zfld - zflu ) * rfact2 / fse3t(ji,jj,1) 200 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + ( zfld - zflu ) * rfact2 / fse3t(ji,jj,1) * tmask(ji,jj,1) 191 201 192 202 ! Compute O2 flux 193 zfld16 = patm(ji,jj) * chemo2(ji,jj,1) * tmask(ji,jj,1) *zkgo2(ji,jj) ! (mol/L) * (m/s)194 zflu16 = trb(ji,jj,1,jpoxy) * tmask(ji,jj,1) *zkgo2(ji,jj)195 zoflx(ji,jj) = zfld16 - zflu16203 zfld16 = patm(ji,jj) * chemo2(ji,jj,1) * zkgo2(ji,jj) ! (mol/L) * (m/s) 204 zflu16 = trb(ji,jj,1,jpoxy) * zkgo2(ji,jj) 205 zoflx(ji,jj) = ( zfld16 - zflu16 ) * tmask(ji,jj,1) 196 206 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + zoflx(ji,jj) * rfact2 / fse3t(ji,jj,1) 197 207 END DO … … 224 234 ENDIF 225 235 IF( iom_use( "Dpco2" ) ) THEN 226 zw2d(:,:) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:) + rtrn ) ) * tmask(:,:,1)236 zw2d(:,:) = ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 227 237 CALL iom_put( "Dpco2" , zw2d ) 228 238 ENDIF … … 240 250 trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1) 241 251 trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1) 242 trc2d(:,:,jp_pcs0_2d + 3) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:) + rtrn ) ) * tmask(:,:,1)243 ENDIF 244 ENDIF 245 ! 246 CALL wrk_dealloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx )252 trc2d(:,:,jp_pcs0_2d + 3) = ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 253 ENDIF 254 ENDIF 255 ! 256 CALL wrk_dealloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx, zpco2atm ) 247 257 ! 248 258 IF( nn_timing == 1 ) CALL timing_stop('p4z_flx')
Note: See TracChangeset
for help on using the changeset viewer.