Changeset 1534 for trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90
- Timestamp:
- 2009-07-24T12:35:25+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90
r1457 r1534 24 24 USE p4zche 25 25 USE iom 26 26 #if defined key_cpl_carbon_cycle 27 USE sbc_oce , ONLY : atm_co2 28 #endif 27 29 USE lib_mpp 28 30 … … 35 37 atcox = 0.20946 , & !: 36 38 atcco2 = 278. !: 37 38 REAL(wp) :: & 39 xconv = 0.01/3600., & ! coefficients for conversion 40 tco2flx !: Total flux of carbon per year 39 40 REAL(wp) :: & 41 xconv = 0.01/3600 !: coefficients for conversion 42 43 #if defined key_cpl_carbon_cycle 44 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & 45 oce_co2 !: ocean carbon flux 46 REAL(wp) :: & 47 t_atm_co2_flx, & !: Total atmospheric carbon flux per year 48 t_oce_co2_flx !: Total ocean carbon flux per year 49 #endif 41 50 42 51 !!* Substitution … … 63 72 REAL(wp) :: zfld, zflu, zfld16, zflu16, zfact 64 73 REAL(wp) :: zph, zah2, zbot, zdic, zalk, zsch_o2, zalka, zsch_co2 65 REAL(wp), DIMENSION(jpi,jpj) :: zkgco2, zkgo2, zh2co3 , ztco2flx74 REAL(wp), DIMENSION(jpi,jpj) :: zkgco2, zkgo2, zh2co3 66 75 #if defined key_trc_diaadd && defined key_iomput 67 76 REAL(wp), DIMENSION(jpi,jpj) :: zcflx, zoflx, zkg, zdelc … … 146 155 END DO 147 156 148 #if ! defined key_iomput149 157 DO jj = 1, jpj 150 158 DO ji = 1, jpi 151 152 159 ! Compute CO2 flux for the sea and air 160 #if ! defined key_cpl_carbon_cycle 153 161 zfld = atcco2 * tmask(ji,jj,1) * chemc(ji,jj,1) * zkgco2(ji,jj) 154 162 zflu = zh2co3(ji,jj) * tmask(ji,jj,1) * zkgco2(ji,jj) 163 #else 164 zfld = atm_co2(ji,jj) * tmask(ji,jj,1) * chemc(ji,jj,1) * zkgco2(ji,jj) 165 zflu = zh2co3(ji,jj) * tmask(ji,jj,1) * zkgco2(ji,jj) 166 ! compute flux of carbon 167 oce_co2(ji,jj) = ( zfld - zflu ) * rfact & 168 & * e1t(ji,jj) * e2t(ji,jj) * tmask(ji,jj,1) * 1000. 169 #endif 155 170 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + ( zfld - zflu ) / fse3t(ji,jj,1) 156 157 ! compute flux of carbon158 ztco2flx(ji,jj) = ( zfld - zflu ) * rfact &159 & * e1t(ji,jj) * e2t(ji,jj) * tmask(ji,jj,1) * 1000.160 171 161 172 ! Compute O2 flux … … 164 175 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + ( zfld16 - zflu16 ) / fse3t(ji,jj,1) 165 176 166 # 177 #if defined key_trc_diaadd 167 178 ! Save diagnostics 168 trc2d(ji,jj,jp_pcs0_2d ) = ( zfld - zflu ) * 1000. * tmask(ji,jj,1) 179 # if ! defined key_iomput 180 trc2d(ji,jj,jp_pcs0_2d ) = ( zfld - zflu ) * 1000. * tmask(ji,jj,1) 169 181 trc2d(ji,jj,jp_pcs0_2d + 1) = ( zfld16 - zflu16 ) * 1000. * tmask(ji,jj,1) 170 182 trc2d(ji,jj,jp_pcs0_2d + 2) = zkgco2(ji,jj) * tmask(ji,jj,1) 171 183 trc2d(ji,jj,jp_pcs0_2d + 3) = atcco2 - zh2co3(ji,jj) / ( chemc(ji,jj,1) + rtrn ) * tmask(ji,jj,1) 172 # endif 173 END DO 174 END DO 175 ! 176 #else 177 DO jj = 1, jpj 178 DO ji = 1, jpi 179 ! Compute CO2 flux for the sea and air 180 zfld = atcco2 * tmask(ji,jj,1) * chemc(ji,jj,1) * zkgco2(ji,jj) 181 zflu = zh2co3(ji,jj) * tmask(ji,jj,1) * zkgco2(ji,jj) 182 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + ( zfld - zflu ) / fse3t(ji,jj,1) 183 184 ! compute flux of carbon 185 ztco2flx(ji,jj) = ( zfld - zflu ) * rfact & 186 & * e1t(ji,jj) * e2t(ji,jj) * tmask(ji,jj,1) * 1000. 187 188 ! Compute O2 flux 189 zfld16 = atcox * chemc(ji,jj,2) *tmask(ji,jj,1) * zkgo2(ji,jj) 190 zflu16 = trn(ji,jj,1,jpoxy) * tmask(ji,jj,1) * zkgo2(ji,jj) 191 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + ( zfld16 - zflu16 ) / fse3t(ji,jj,1) 192 # if defined key_trc_diaadd 193 ! Save diagnostics 184 # else 194 185 zcflx(ji,jj) = ( zfld - zflu ) * 1000. * tmask(ji,jj,1) 195 186 zoflx(ji,jj) = ( zfld16 - zflu16 ) * 1000. * tmask(ji,jj,1) 196 187 zkg (ji,jj) = zkgco2(ji,jj) * tmask(ji,jj,1) 197 188 zdelc(ji,jj) = atcco2 - zh2co3(ji,jj) / ( chemc(ji,jj,1) + rtrn ) * tmask(ji,jj,1) 198 # endif 189 # endif 190 #endif 199 191 END DO 200 192 END DO 201 #endif 202 193 194 #if defined key_cpl_carbon_cycle 203 195 ! Total Flux of Carbon 204 DO jj = 1, jpj 196 DO jj = 1, jpj 205 197 DO ji = 1, jpi 206 tco2flx = tco2flx + ztco2flx(ji,jj) * tmask_i(ji,jj) 198 t_atm_co2_flx = t_atm_co2_flx + atm_co2(ji,jj) * tmask_i(ji,jj) 199 t_oce_co2_flx = t_oce_co2_flx + oce_co2(ji,jj) * tmask_i(ji,jj) 207 200 END DO 208 201 END DO 209 202 210 203 IF( MOD( kt, nspyr ) == 0 ) THEN 211 IF( lk_mpp ) CALL mpp_sum( tco2flx ) ! sum over the global domain 212 204 IF( lk_mpp ) THEN 205 CALL mpp_sum( t_atm_co2_flx ) ! sum over the global domain 206 CALL mpp_sum( t_oce_co2_flx ) ! sum over the global domain 207 ENDIF 213 208 WRITE(numout,*) ' Atmospheric pCO2 :' 214 WRITE(numout,*) '-------------------- : ',kt,' ', atcco2209 WRITE(numout,*) '-------------------- : ',kt,' ',t_atm_co2_flx 215 210 WRITE(numout,*) '(ppm)' 216 211 WRITE(numout,*) 'Total Flux of Carbon :' 217 WRITE(numout,*) '-------------------- : ',t co2flx * 12. / 1e15212 WRITE(numout,*) '-------------------- : ',t_oce_co2_flx * 12. / 1e15 218 213 WRITE(numout,*) '(GtC/an)' 219 tco2flx = 0. 214 t_atm_co2_flx = 0. 215 t_oce_co2_flx = 0. 220 216 ENDIF 217 #endif 221 218 222 219 IF(ln_ctl) THEN ! print mean trends (used for debugging) … … 260 257 ENDIF 261 258 262 ! Initialization of total Flux of Carbon 263 tco2flx = 0. 259 #if defined key_cpl_carbon_cycle 260 ! Initialization of Flux of Carbon 261 oce_co2(:,:) = 0. 262 t_atm_co2_flx = 0. 263 t_oce_co2_flx = 0. 264 #endif 264 265 265 266 END SUBROUTINE p4z_flx_init
Note: See TracChangeset
for help on using the changeset viewer.