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 7211 for branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90 – NEMO

Ignore:
Timestamp:
2016-11-08T18:17:26+01:00 (7 years ago)
Author:
lovato
Message:

New top interface : Revisited CFC module with formulations from Wanninkhof (2014) + SF6 tracer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90

    r7192 r7211  
    77   !!  NEMO      1.0  !  2004-03  (C. Ethe) free form + modularity 
    88   !!            2.0  !  2007-12  (C. Ethe, G. Madec)  reorganisation 
     9   !!            4.0  !  2016-11  (T. Lovato) Add SF6, Update Schmidt number 
    910   !!---------------------------------------------------------------------- 
    1011   !!   trc_sms_cfc  :  compute and add CFC suface forcing to CFC trends 
     
    2526 
    2627   INTEGER , PUBLIC, PARAMETER ::   jphem  =   2   ! parameter for the 2 hemispheres 
    27    INTEGER , PUBLIC            ::   jpyear         ! Number of years read in CFC1112 file 
     28   INTEGER , PUBLIC            ::   jpyear         ! Number of years read in input data file (in trcini_cfc) 
    2829   INTEGER , PUBLIC            ::   ndate_beg      ! initial calendar date (aammjj) for CFC 
    2930   INTEGER , PUBLIC            ::   nyear_res      ! restoring time constant (year) 
    3031   INTEGER , PUBLIC            ::   nyear_beg      ! initial year (aa)  
    3132    
    32    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   p_cfc    ! partial hemispheric pressure for CFC 
     33   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   p_cfc    ! partial hemispheric pressure for all CFC 
    3334   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   xphem    ! spatial interpolation factor for patm 
    3435   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qtr_cfc  ! flux at surface 
    3536   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qint_cfc ! cumulative flux  
     37   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   atm_cfc  ! partial hemispheric pressure for used CFC 
    3638   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   patm     ! atmospheric function 
    3739 
    38    REAL(wp), DIMENSION(4,2) ::   soa   ! coefficient for solubility of CFC [mol/l/atm] 
    39    REAL(wp), DIMENSION(3,2) ::   sob   !    "               " 
    40    REAL(wp), DIMENSION(4,2) ::   sca   ! coefficients for schmidt number in degre Celcius 
     40   REAL(wp),         ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   soa      ! coefficient for solubility of CFC [mol/l/atm] 
     41   REAL(wp),         ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   sob      !    "               " 
     42   REAL(wp),         ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   sca      ! coefficients for schmidt number in degrees Celsius 
    4143       
    4244   !                          ! coefficients for conversion 
     
    7577      INTEGER  ::   im1, im2, ierr 
    7678      REAL(wp) ::   ztap, zdtap         
    77       REAL(wp) ::   zt1, zt2, zt3, zv2 
     79      REAL(wp) ::   zt1, zt2, zt3, zt4, zv2 
    7880      REAL(wp) ::   zsol      ! solubility 
    7981      REAL(wp) ::   zsch      ! schmidt number  
     
    113115         ! time interpolation at time kt 
    114116         DO jm = 1, jphem 
    115             zpatm(jm,jl) = (  p_cfc(iyear_beg, jm, jl) * REAL(im1, wp)  & 
    116                &           +  p_cfc(iyear_end, jm, jl) * REAL(im2, wp) ) / 12. 
     117            zpatm(jm,jl) = (  atm_cfc(iyear_beg, jm, jl) * REAL(im1, wp)  & 
     118               &           +  atm_cfc(iyear_end, jm, jl) * REAL(im2, wp) ) / 12. 
    117119         END DO 
    118120          
     
    141143   
    142144               ! Computation of speed transfert 
    143                !    Schmidt number 
     145               !    Schmidt number revised in Wanninkhof (2014) 
    144146               zt1  = tsn(ji,jj,1,jp_tem) 
    145147               zt2  = zt1 * zt1  
    146148               zt3  = zt1 * zt2 
    147                zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 
    148  
    149                !    speed transfert : formulae of wanninkhof 1992 
     149               zt4  = zt2 * zt2 
     150               zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 + sca(5,jl) * zt4 
     151 
     152               !    speed transfert : formulae revised in Wanninkhof (2014) 
    150153               zv2     = wndm(ji,jj) * wndm(ji,jj) 
    151154               zsch    = zsch / 660. 
    152                zak_cfc = ( 0.39 * xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1) 
     155               zak_cfc = ( 0.31 * xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1) 
    153156 
    154157               ! Input function  : speed *( conc. at equil - concen at surface ) 
     
    202205      !!--------------------------------------------------------------------- 
    203206      INTEGER :: jn 
    204  
     207      !!---------------------------------------------------------------------- 
     208      ! 
     209      jn = 0  
    205210      ! coefficient for CFC11  
    206211      !---------------------- 
    207  
    208       ! Solubility 
    209       soa(1,1) = -229.9261  
    210       soa(2,1) =  319.6552 
    211       soa(3,1) =  119.4471 
    212       soa(4,1) =  -1.39165 
    213  
    214       sob(1,1) =  -0.142382 
    215       sob(2,1) =   0.091459 
    216       sob(3,1) =  -0.0157274 
    217  
    218       ! Schmidt number  
    219       sca(1,1) = 3501.8 
    220       sca(2,1) = -210.31 
    221       sca(3,1) =  6.1851 
    222       sca(4,1) = -0.07513 
     212      if ( ln_cfc11 ) then 
     213         jn = jn + 1 
     214         ! Solubility 
     215         soa(1,jn) = -229.9261  
     216         soa(2,jn) =  319.6552 
     217         soa(3,jn) =  119.4471 
     218         soa(4,jn) =  -1.39165 
     219 
     220         sob(1,jn) =  -0.142382 
     221         sob(2,jn) =   0.091459 
     222         sob(3,jn) =  -0.0157274 
     223 
     224         ! Schmidt number  
     225         sca(1,jn) = 3579.2 
     226         sca(2,jn) = -222.63 
     227         sca(3,jn) = 7.5749 
     228         sca(4,jn) = -0.14595 
     229         sca(5,jn) = 0.0011874 
     230 
     231         ! atm. concentration 
     232         atm_cfc(:,:,jn) = p_cfc(:,:,1) 
     233      endif 
    223234 
    224235      ! coefficient for CFC12  
    225236      !---------------------- 
    226  
    227       ! Solubility 
    228       soa(1,2) = -218.0971 
    229       soa(2,2) =  298.9702 
    230       soa(3,2) =  113.8049 
    231       soa(4,2) =  -1.39165 
    232  
    233       sob(1,2) =  -0.143566 
    234       sob(2,2) =   0.091015 
    235       sob(3,2) =  -0.0153924 
    236  
    237       ! schmidt number  
    238       sca(1,2) =  3845.4  
    239       sca(2,2) =  -228.95 
    240       sca(3,2) =  6.1908  
    241       sca(4,2) =  -0.067430 
     237      if ( ln_cfc12 ) then 
     238         jn = jn + 1 
     239         ! Solubility 
     240         soa(1,jn) = -218.0971 
     241         soa(2,jn) =  298.9702 
     242         soa(3,jn) =  113.8049 
     243         soa(4,jn) =  -1.39165 
     244 
     245         sob(1,jn) =  -0.143566 
     246         sob(2,jn) =   0.091015 
     247         sob(3,jn) =  -0.0153924 
     248 
     249         ! schmidt number  
     250         sca(1,jn) = 3828.1 
     251         sca(2,jn) = -249.86 
     252         sca(3,jn) = 8.7603 
     253         sca(4,jn) = -0.1716 
     254         sca(5,jn) = 0.001408 
     255 
     256         ! atm. concentration 
     257         atm_cfc(:,:,jn) = p_cfc(:,:,2) 
     258      endif 
     259 
     260      ! coefficient for SF6 
     261      !---------------------- 
     262      if ( ln_sf6 ) then 
     263         jn = jn + 1 
     264         ! Solubility 
     265         soa(1,jn) = -80.0343 
     266         soa(2,jn) = 117.232 
     267         soa(3,jn) =  29.5817 
     268         soa(4,jn) =   0.0 
     269 
     270         sob(1,jn) =  0.0335183  
     271         sob(2,jn) = -0.0373942  
     272         sob(3,jn) =  0.00774862 
     273 
     274         ! schmidt number 
     275         sca(1,jn) = 3177.5 
     276         sca(2,jn) = -200.57 
     277         sca(3,jn) = 6.8865 
     278         sca(4,jn) = -0.13335 
     279         sca(5,jn) = 0.0010877 
     280   
     281         ! atm. concentration 
     282         atm_cfc(:,:,jn) = p_cfc(:,:,3) 
     283       endif 
    242284 
    243285      IF( ln_rsttr ) THEN 
     
    259301      !!                     ***  ROUTINE trc_sms_cfc_alloc  *** 
    260302      !!---------------------------------------------------------------------- 
    261       ALLOCATE( xphem   (jpi,jpj)        ,     & 
    262          &      qtr_cfc (jpi,jpj,jp_cfc) ,     & 
    263          &      qint_cfc(jpi,jpj,jp_cfc) , STAT=trc_sms_cfc_alloc ) 
     303      ALLOCATE( xphem   (jpi,jpj)        , atm_cfc(jpyear,jphem,jp_cfc)  ,    & 
     304         &      qtr_cfc (jpi,jpj,jp_cfc) , qint_cfc(jpi,jpj,jp_cfc)      ,    & 
     305         &      soa(4,jp_cfc)    ,  sob(3,jp_cfc)   ,  sca(5,jp_cfc)     ,    & 
     306         &      STAT=trc_sms_cfc_alloc ) 
    264307         ! 
    265308      IF( trc_sms_cfc_alloc /= 0 ) CALL ctl_warn('trc_sms_cfc_alloc : failed to allocate arrays.') 
Note: See TracChangeset for help on using the changeset viewer.