New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 5581 for branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90 – NEMO

Ignore:
Timestamp:
2015-07-10T13:28:53+02:00 (9 years ago)
Author:
timgraham
Message:

Merged head of trunk into branch

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  
    6363   !!---------------------------------------------------------------------- 
    6464   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    65    !! $Id: p4zflx.F90 3294 2012-01-28 16:44:18Z rblod $  
     65   !! $Id$  
    6666   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    6767   !!---------------------------------------------------------------------- 
    6868CONTAINS 
    6969 
    70    SUBROUTINE p4z_flx ( kt ) 
     70   SUBROUTINE p4z_flx ( kt, knt ) 
    7171      !!--------------------------------------------------------------------- 
    7272      !!                     ***  ROUTINE p4z_flx  *** 
     
    8181      !!--------------------------------------------------------------------- 
    8282      ! 
    83       INTEGER, INTENT(in) ::   kt   ! 
     83      INTEGER, INTENT(in) ::   kt, knt   ! 
    8484      ! 
    8585      INTEGER  ::   ji, jj, jm, iind, iindm1 
     
    8989      REAL(wp) ::   zyr_dec, zdco2dt 
    9090      CHARACTER (len=25) :: charout 
    91       REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx  
     91      REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx, zw2d  
    9292      !!--------------------------------------------------------------------- 
    9393      ! 
     
    101101      !     IS USED TO COMPUTE AIR-SEA FLUX OF CO2 
    102102 
    103       IF( kt /= nit000 ) CALL p4z_patm( kt )    ! Get sea-level pressure (E&K [1981] climatology) for use in flux calcs 
     103      IF( kt /= nit000 .AND. knt == 1 ) CALL p4z_patm( kt )    ! Get sea-level pressure (E&K [1981] climatology) for use in flux calcs 
    104104 
    105105      IF( ln_co2int ) THEN  
     
    130130               zbot  = borat(ji,jj,1) 
    131131               zfact = rhop(ji,jj,1) / 1000. + rtrn 
    132                zdic  = trn(ji,jj,1,jpdic) / zfact 
     132               zdic  = trb(ji,jj,1,jpdic) / zfact 
    133133               zph   = MAX( hi(ji,jj,1), 1.e-10 ) / zfact 
    134                zalka = trn(ji,jj,1,jptal) / zfact 
     134               zalka = trb(ji,jj,1,jptal) / zfact 
    135135 
    136136               ! CALCULATE [ALK]([CO3--], [HCO3-]) 
     
    184184            zfld = satmco2(ji,jj) * patm(ji,jj) * tmask(ji,jj,1) * chemc(ji,jj,1) * zkgco2(ji,jj)   ! (mol/L) * (m/s) 
    185185            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. 
    187187            ! 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) 
    189189 
    190190            ! Compute O2 flux  
    191191            zfld16 = atcox * patm(ji,jj) * chemc(ji,jj,2) * tmask(ji,jj,1) * zkgo2(ji,jj)          ! (mol/L) * (m/s) 
    192             zflu16 = trn(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) 
    193193            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) 
    195195         END DO 
    196196      END DO 
    197197 
    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  
    201203      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    202204         WRITE(charout, FMT="('flx ')") 
     
    205207      ENDIF 
    206208 
    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  
    216238            trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1)  
    217239            trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1)  
     
    290312      ! 
    291313      oce_co2(:,:)  = 0._wp                ! Initialization of Flux of Carbon 
     314      t_oce_co2_flx = 0._wp 
    292315      t_atm_co2_flx = 0._wp 
    293       t_oce_co2_flx = 0._wp 
    294316      ! 
    295317      CALL p4z_patm( nit000 ) 
Note: See TracChangeset for help on using the changeset viewer.