- Timestamp:
- 2015-07-10T13:28:53+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90
- Property svn:keywords set to Id
r4793 r5581 63 63 !!---------------------------------------------------------------------- 64 64 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 65 !! $Id : p4zflx.F90 3294 2012-01-28 16:44:18Z rblod$65 !! $Id$ 66 66 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 67 67 !!---------------------------------------------------------------------- 68 68 CONTAINS 69 69 70 SUBROUTINE p4z_flx ( kt )70 SUBROUTINE p4z_flx ( kt, knt ) 71 71 !!--------------------------------------------------------------------- 72 72 !! *** ROUTINE p4z_flx *** … … 81 81 !!--------------------------------------------------------------------- 82 82 ! 83 INTEGER, INTENT(in) :: kt !83 INTEGER, INTENT(in) :: kt, knt ! 84 84 ! 85 85 INTEGER :: ji, jj, jm, iind, iindm1 … … 89 89 REAL(wp) :: zyr_dec, zdco2dt 90 90 CHARACTER (len=25) :: charout 91 REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx 91 REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx, zw2d 92 92 !!--------------------------------------------------------------------- 93 93 ! … … 101 101 ! IS USED TO COMPUTE AIR-SEA FLUX OF CO2 102 102 103 IF( kt /= nit000 ) CALL p4z_patm( kt ) ! Get sea-level pressure (E&K [1981] climatology) for use in flux calcs103 IF( kt /= nit000 .AND. knt == 1 ) CALL p4z_patm( kt ) ! Get sea-level pressure (E&K [1981] climatology) for use in flux calcs 104 104 105 105 IF( ln_co2int ) THEN … … 130 130 zbot = borat(ji,jj,1) 131 131 zfact = rhop(ji,jj,1) / 1000. + rtrn 132 zdic = tr n(ji,jj,1,jpdic) / zfact132 zdic = trb(ji,jj,1,jpdic) / zfact 133 133 zph = MAX( hi(ji,jj,1), 1.e-10 ) / zfact 134 zalka = tr n(ji,jj,1,jptal) / zfact134 zalka = trb(ji,jj,1,jptal) / zfact 135 135 136 136 ! CALCULATE [ALK]([CO3--], [HCO3-]) … … 184 184 zfld = satmco2(ji,jj) * patm(ji,jj) * tmask(ji,jj,1) * chemc(ji,jj,1) * zkgco2(ji,jj) ! (mol/L) * (m/s) 185 185 zflu = zh2co3(ji,jj) * tmask(ji,jj,1) * zkgco2(ji,jj) ! (mol/L) (m/s) ? 186 oce_co2(ji,jj) = ( zfld - zflu ) * rfact * e1e2t(ji,jj) * tmask(ji,jj,1) * 1000.186 oce_co2(ji,jj) = ( zfld - zflu ) * rfact2 * e1e2t(ji,jj) * tmask(ji,jj,1) * 1000. 187 187 ! compute the trend 188 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + ( zfld - zflu ) / fse3t(ji,jj,1)188 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + ( zfld - zflu ) * rfact2 / fse3t(ji,jj,1) 189 189 190 190 ! Compute O2 flux 191 191 zfld16 = atcox * patm(ji,jj) * chemc(ji,jj,2) * tmask(ji,jj,1) * zkgo2(ji,jj) ! (mol/L) * (m/s) 192 zflu16 = tr n(ji,jj,1,jpoxy) * tmask(ji,jj,1) * zkgo2(ji,jj)192 zflu16 = trb(ji,jj,1,jpoxy) * tmask(ji,jj,1) * zkgo2(ji,jj) 193 193 zoflx(ji,jj) = zfld16 - zflu16 194 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + zoflx(ji,jj) / fse3t(ji,jj,1)194 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + zoflx(ji,jj) * rfact2 / fse3t(ji,jj,1) 195 195 END DO 196 196 END DO 197 197 198 t_oce_co2_flx = t_oce_co2_flx + glob_sum( oce_co2(:,:) ) ! Cumulative Total Flux of Carbon 199 t_atm_co2_flx = glob_sum( satmco2(:,:) * e1e2t(:,:) ) ! Total atmospheric pCO2 200 198 t_oce_co2_flx = glob_sum( oce_co2(:,:) ) ! Total Flux of Carbon 199 t_oce_co2_flx_cum = t_oce_co2_flx_cum + t_oce_co2_flx ! Cumulative Total Flux of Carbon 200 ! t_atm_co2_flx = glob_sum( satmco2(:,:) * e1e2t(:,:) ) ! Total atmospheric pCO2 201 t_atm_co2_flx = atcco2 ! Total atmospheric pCO2 202 201 203 IF(ln_ctl) THEN ! print mean trends (used for debugging) 202 204 WRITE(charout, FMT="('flx ')") … … 205 207 ENDIF 206 208 207 IF( ln_diatrc ) THEN 208 IF( lk_iomput ) THEN 209 CALL iom_put( "Cflx" , oce_co2(:,:) / e1e2t(:,:) / rfact ) 210 CALL iom_put( "Oflx" , zoflx(:,:) * 1000 * tmask(:,:,1) ) 211 CALL iom_put( "Kg" , zkgco2(:,:) * tmask(:,:,1) ) 212 CALL iom_put( "Dpco2", ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) ) 213 CALL iom_put( "Dpo2" , ( atcox * patm(:,:) - trn(:,:,1,jpoxy) / ( chemc(:,:,2) + rtrn ) ) * tmask(:,:,1) ) 214 ELSE 215 trc2d(:,:,jp_pcs0_2d ) = oce_co2(:,:) / e1e2t(:,:) / rfact 209 IF( lk_iomput .AND. knt == nrdttrc ) THEN 210 CALL wrk_alloc( jpi, jpj, zw2d ) 211 IF( iom_use( "Cflx" ) ) THEN 212 zw2d(:,:) = oce_co2(:,:) / e1e2t(:,:) * rfact2r 213 CALL iom_put( "Cflx" , zw2d ) 214 ENDIF 215 IF( iom_use( "Oflx" ) ) THEN 216 zw2d(:,:) = zoflx(:,:) * 1000 * tmask(:,:,1) 217 CALL iom_put( "Oflx" , zw2d ) 218 ENDIF 219 IF( iom_use( "Kg" ) ) THEN 220 zw2d(:,:) = zkgco2(:,:) * tmask(:,:,1) 221 CALL iom_put( "Kg" , zw2d ) 222 ENDIF 223 IF( iom_use( "Dpco2" ) ) THEN 224 zw2d(:,:) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 225 CALL iom_put( "Dpco2" , zw2d ) 226 ENDIF 227 IF( iom_use( "Dpo2" ) ) THEN 228 zw2d(:,:) = ( atcox * patm(:,:) - trb(:,:,1,jpoxy) / ( chemc(:,:,2) + rtrn ) ) * tmask(:,:,1) 229 CALL iom_put( "Dpo2" , zw2d ) 230 ENDIF 231 IF( iom_use( "tcflx" ) ) CALL iom_put( "tcflx" , t_oce_co2_flx * rfact2r ) ! molC/s 232 CALL iom_put( "tcflxcum" , t_oce_co2_flx_cum ) ! molC 233 ! 234 CALL wrk_dealloc( jpi, jpj, zw2d ) 235 ELSE 236 IF( ln_diatrc ) THEN 237 trc2d(:,:,jp_pcs0_2d ) = oce_co2(:,:) / e1e2t(:,:) * rfact2r 216 238 trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1) 217 239 trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1) … … 290 312 ! 291 313 oce_co2(:,:) = 0._wp ! Initialization of Flux of Carbon 314 t_oce_co2_flx = 0._wp 292 315 t_atm_co2_flx = 0._wp 293 t_oce_co2_flx = 0._wp294 316 ! 295 317 CALL p4z_patm( nit000 )
Note: See TracChangeset
for help on using the changeset viewer.