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 7646 for trunk/NEMOGCM/NEMO/TOP_SRC/CFC – NEMO

Ignore:
Timestamp:
2017-02-06T10:25:03+01:00 (7 years ago)
Author:
timgraham
Message:

Merge of dev_merge_2016 into trunk. UPDATE TO ARCHFILES NEEDED for XIOS2.
LIM_SRC_s/limrhg.F90 to follow in next commit due to change of kind (I'm unable to do it in this commit).
Merged using the following steps:

1) svn merge --reintegrate svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk .
2) Resolve minor conflicts in sette.sh and namelist_cfg for ORCA2LIM3 (due to a change in trunk after branch was created)
3) svn commit
4) svn switch svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk
5) svn merge svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2016/dev_merge_2016 .
6) At this stage I checked out a clean copy of the branch to compare against what is about to be committed to the trunk.
6) svn commit #Commit code to the trunk

In this commit I have also reverted a change to Fcheck_archfile.sh which was causing problems on the Paris machine.

Location:
trunk/NEMOGCM/NEMO/TOP_SRC/CFC
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90

    r3680 r7646  
    1010   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    1111   !!---------------------------------------------------------------------- 
    12    USE par_pisces , ONLY : jp_pisces       !: number of tracers in PISCES 
    13    USE par_pisces , ONLY : jp_pisces_2d    !: number of 2D diag in PISCES 
    14    USE par_pisces , ONLY : jp_pisces_3d    !: number of 3D diag in PISCES 
    15    USE par_pisces , ONLY : jp_pisces_trd   !: number of biological diag in PISCES 
    1612 
    1713   IMPLICIT NONE 
    18  
    19    INTEGER, PARAMETER ::   jp_lc      =  jp_pisces     !: cumulative number of passive tracers 
    20    INTEGER, PARAMETER ::   jp_lc_2d   =  jp_pisces_2d  !: 
    21    INTEGER, PARAMETER ::   jp_lc_3d   =  jp_pisces_3d  !: 
    22    INTEGER, PARAMETER ::   jp_lc_trd  =  jp_pisces_trd !: 
    23     
    24 #if defined key_cfc 
    25    !!--------------------------------------------------------------------- 
    26    !!   'key_cfc'   :                                          CFC tracers 
    27    !!--------------------------------------------------------------------- 
    28    LOGICAL, PUBLIC, PARAMETER ::   lk_cfc     = .TRUE.      !: CFC flag  
    29    INTEGER, PUBLIC, PARAMETER ::   jp_cfc     =  1          !: number of passive tracers 
    30    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_2d  =  2          !: additional 2d output arrays ('key_trc_diaadd') 
    31    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_3d  =  0          !: additional 3d output arrays ('key_trc_diaadd') 
    32    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_trd =  0          !: number of sms trends for CFC 
    33     
    34    ! assign an index in trc arrays for each CFC prognostic variables 
    35    INTEGER, PUBLIC, PARAMETER ::   jpc11       = jp_lc + 1   !: CFC-11  
    36    INTEGER, PUBLIC, PARAMETER ::   jpc12       = jp_lc + 2   !: CFC-12    
    37 #else 
    38    !!--------------------------------------------------------------------- 
    39    !!   Default     :                                       No CFC tracers 
    40    !!--------------------------------------------------------------------- 
    41    LOGICAL, PUBLIC, PARAMETER ::   lk_cfc     = .FALSE.     !: CFC flag  
    42    INTEGER, PUBLIC, PARAMETER ::   jp_cfc     =  0          !: No CFC tracers 
    43    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_2d  =  0          !: No CFC additional 2d output arrays  
    44    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_3d  =  0          !: No CFC additional 3d output arrays  
    45    INTEGER, PUBLIC, PARAMETER ::   jp_cfc_trd =  0          !: number of sms trends for CFC 
    46 #endif 
    47  
    48    ! Starting/ending CFC do-loop indices (N.B. no CFC : jp_cfc0 > jp_cfc1 the do-loop are never done) 
    49    INTEGER, PUBLIC, PARAMETER ::   jp_cfc0     = jp_lc + 1       !: First index of CFC tracers 
    50    INTEGER, PUBLIC, PARAMETER ::   jp_cfc1     = jp_lc + jp_cfc  !: Last  index of CFC tracers 
    51    INTEGER, PUBLIC, PARAMETER ::   jp_cfc0_2d  = jp_lc_2d  + 1       !: First index of CFC tracers 
    52    INTEGER, PUBLIC, PARAMETER ::   jp_cfc1_2d  = jp_lc_2d  + jp_cfc_2d  !: Last  index of CFC tracers 
    53    INTEGER, PUBLIC, PARAMETER ::   jp_cfc0_3d  = jp_lc_3d  + 1       !: First index of CFC tracers 
    54    INTEGER, PUBLIC, PARAMETER ::   jp_cfc1_3d  = jp_lc_3d  + jp_cfc_3d  !: Last  index of CFC tracers 
    55    INTEGER, PUBLIC, PARAMETER ::   jp_cfc0_trd = jp_lc_trd + 1       !: First index of CFC tracers 
    56    INTEGER, PUBLIC, PARAMETER ::   jp_cfc1_trd = jp_lc_trd + jp_cfc_trd  !: Last  index of CFC tracers 
     14   INTEGER, PUBLIC  :: jp_cfc0, jp_cfc1  !:  First/last index of CFC tracers 
    5715 
    5816   !!====================================================================== 
  • trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcice_cfc.F90

    r5434 r7646  
    55   !!====================================================================== 
    66   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) Original code 
    7    !!---------------------------------------------------------------------- 
    8 #if defined key_cfc 
    9    !!---------------------------------------------------------------------- 
    10    !!   'key_cfc'                                               CFC tracers 
    117   !!---------------------------------------------------------------------- 
    128   !! trc_ice_cfc       : MY_TRC model main routine 
     
    4036   END SUBROUTINE trc_ice_ini_cfc 
    4137 
    42  
    43 #else 
    44    !!---------------------------------------------------------------------- 
    45    !!   Dummy module                                        No MY_TRC model 
    46    !!---------------------------------------------------------------------- 
    47 CONTAINS 
    48    SUBROUTINE trc_ice_ini_cfc             ! Empty routine 
    49    END SUBROUTINE trc_ice_ini_cfc 
    50 #endif 
    51  
    5238   !!====================================================================== 
    5339END MODULE trcice_cfc 
  • trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90

    r3294 r7646  
    66   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec)  
    77   !!---------------------------------------------------------------------- 
    8 #if defined key_cfc 
    9    !!---------------------------------------------------------------------- 
    10    !!   'key_cfc'                                               CFC tracers 
    118   !!---------------------------------------------------------------------- 
    129   !! trc_ini_cfc      : CFC model initialisation 
     
    1512   USE par_trc         ! TOP parameters 
    1613   USE trc             ! TOP variables 
     14   USE trcnam_cfc      ! CFC SMS namelist 
    1715   USE trcsms_cfc      ! CFC sms trends 
    1816 
     
    2119 
    2220   PUBLIC   trc_ini_cfc   ! called by trcini.F90 module 
    23  
    24    CHARACTER (len=34) ::   clname = 'cfc1112.atm'   ! ??? 
    2521 
    2622   INTEGER  ::   inum                   ! unit number 
     
    4642      INTEGER  ::  iskip = 6   ! number of 1st descriptor lines 
    4743      REAL(wp) ::  zyy, zyd 
     44      CHARACTER(len = 20)  ::  cltra 
    4845      !!---------------------------------------------------------------------- 
    49  
     46      ! 
     47      CALL trc_nam_cfc 
     48      ! 
    5049      IF(lwp) WRITE(numout,*) 
    5150      IF(lwp) WRITE(numout,*) ' trc_ini_cfc: initialisation of CFC chemical model' 
    5251      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~' 
    53  
    54  
    55       IF(lwp) WRITE(numout,*) 'read of formatted file cfc1112atm' 
     52      ! 
     53      IF(lwp) WRITE(numout,*) 'Read annual atmospheric concentratioins from formatted file : ' // TRIM(clname) 
    5654       
    5755      CALL ctl_opn( inum, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
     
    6664      END DO 
    6765 100  jpyear = jn - 1 - iskip 
    68       IF ( lwp) WRITE(numout,*) '    ', jpyear ,' years read' 
     66      IF ( lwp) WRITE(numout,*) '   ---> ', jpyear ,' years read' 
    6967      !                                ! Allocate CFC arrays 
    7068 
    71       ALLOCATE( p_cfc(jpyear,jphem,2), STAT=ierr ) 
     69      ALLOCATE( p_cfc(jpyear,jphem,3), STAT=ierr ) 
    7270      IF( ierr > 0 ) THEN 
    7371         CALL ctl_stop( 'trc_ini_cfc: unable to allocate p_cfc array' )   ;   RETURN 
     
    8785         IF(lwp) THEN 
    8886            WRITE(numout,*) 
    89             WRITE(numout,*) 'Initialization de qint ; No restart : qint equal zero ' 
     87            WRITE(numout,*) 'Initialisation of qint ; No restart : qint equal zero ' 
    9088         ENDIF 
    9189         qint_cfc(:,:,:) = 0._wp 
     
    105103      jn = 31 
    106104      DO  
    107         READ(inum,*, IOSTAT=io) zyy, p_cfc(jn,1,1), p_cfc(jn,1,2), p_cfc(jn,2,1), p_cfc(jn,2,2) 
     105        READ(inum,*, IOSTAT=io) zyy, p_cfc(jn,1:2,1), p_cfc(jn,1:2,2), p_cfc(jn,1:2,3) 
    108106        IF( io < 0 ) exit 
    109107        jn = jn + 1 
    110108      END DO 
    111109 
    112       p_cfc(32,1:2,1) = 5.e-4      ! modify the values of the first years 
    113       p_cfc(33,1:2,1) = 8.e-4 
    114       p_cfc(34,1:2,1) = 1.e-6 
    115       p_cfc(35,1:2,1) = 2.e-3 
    116       p_cfc(36,1:2,1) = 4.e-3 
    117       p_cfc(37,1:2,1) = 6.e-3 
    118       p_cfc(38,1:2,1) = 8.e-3 
    119       p_cfc(39,1:2,1) = 1.e-2 
    120        
     110      !p_cfc(32,1:2,1) = 5.e-4      ! modify the values of the first years 
     111      !p_cfc(33,1:2,1) = 8.e-4 
     112      !p_cfc(34,1:2,1) = 1.e-6 
     113      !p_cfc(35,1:2,1) = 2.e-3 
     114      !p_cfc(36,1:2,1) = 4.e-3 
     115      !p_cfc(37,1:2,1) = 6.e-3 
     116      !p_cfc(38,1:2,1) = 8.e-3 
     117      !p_cfc(39,1:2,1) = 1.e-2 
    121118      IF(lwp) THEN        ! Control print 
    122119         WRITE(numout,*) 
    123          WRITE(numout,*) ' Year   p11HN    p11HS    p12HN    p12HS ' 
     120         WRITE(numout,*) ' Year   c11NH     c11SH     c12NH     c12SH     SF6NH     SF6SH' 
    124121         DO jn = 30, jpyear 
    125             WRITE(numout, '( 1I4, 4F9.2)') jn, p_cfc(jn,1,1), p_cfc(jn,2,1), p_cfc(jn,1,2), p_cfc(jn,2,2) 
     122            WRITE(numout, '( 1I4, 6F10.4)') jn, p_cfc(jn,1:2,1), p_cfc(jn,1:2,2), p_cfc(jn,1:2,3) 
    126123         END DO 
    127124      ENDIF 
     
    145142      ! 
    146143   END SUBROUTINE trc_ini_cfc 
    147     
    148 #else 
    149    !!---------------------------------------------------------------------- 
    150    !!   Dummy module                                         No CFC tracers 
    151    !!---------------------------------------------------------------------- 
    152 CONTAINS 
    153    SUBROUTINE trc_ini_cfc             ! Empty routine 
    154    END SUBROUTINE trc_ini_cfc 
    155 #endif 
    156144 
    157145   !!====================================================================== 
  • trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90

    r4624 r7646  
    66   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) from trcnam.cfc.h90 
    77   !!---------------------------------------------------------------------- 
    8 #if defined key_cfc 
    9    !!---------------------------------------------------------------------- 
    10    !!   'key_cfc'                                               CFC tracers 
    11    !!---------------------------------------------------------------------- 
    128   !! trc_nam_cfc      : CFC model initialisation 
    139   !!---------------------------------------------------------------------- 
    1410   USE oce_trc         ! Ocean variables 
    15    USE par_trc         ! TOP parameters 
    1611   USE trc             ! TOP variables 
    1712   USE trcsms_cfc      ! CFC specific variable 
    18    USE iom             ! I/O manager 
    1913 
    2014   IMPLICIT NONE 
    2115   PRIVATE 
     16 
     17   CHARACTER(len=34), PUBLIC ::   clname ! Input filename of CFCs atm. concentrations 
    2218 
    2319   PUBLIC   trc_nam_cfc   ! called by trcnam.F90 module 
     
    4238      !! ** input   :   Namelist namcfc 
    4339      !!---------------------------------------------------------------------- 
    44       INTEGER ::  numnatc_ref = -1   ! Logical unit for reference CFC namelist 
    45       INTEGER ::  numnatc_cfg = -1   ! Logical unit for configuration CFC namelist 
    46       INTEGER ::  numonc      = -1   ! Logical unit for output namelist 
    4740      INTEGER :: ios                 ! Local integer output status for namelist read 
    4841      INTEGER :: jl, jn 
    49       TYPE(DIAG), DIMENSION(jp_cfc_2d) :: cfcdia2d 
    5042      !! 
    51       NAMELIST/namcfcdate/ ndate_beg, nyear_res 
    52       NAMELIST/namcfcdia/  cfcdia2d     ! additional diagnostics 
     43      NAMELIST/namcfc/ ndate_beg, nyear_res, clname 
    5344      !!---------------------------------------------------------------------- 
    54       !                             ! Open namelist files 
    55       CALL ctl_opn( numnatc_ref, 'namelist_cfc_ref'   ,     'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
    56       CALL ctl_opn( numnatc_cfg, 'namelist_cfc_cfg'   ,     'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
    57       IF(lwm) CALL ctl_opn( numonc, 'output.namelist.cfc', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 
     45      ! 
     46      jn = jp_cfc0 - 1 
     47      ! Variables setting 
     48      IF( ln_cfc11 ) THEN 
     49         jn = jn + 1 
     50         ctrcnm    (jn) = 'CFC11' 
     51         ctrcln    (jn) = 'Chlorofluoro carbon 11 Concentration' 
     52         ctrcun    (jn) = 'umolC/L' 
     53         ln_trc_ini(jn) = .false. 
     54         ln_trc_sbc(jn) = .false. 
     55         ln_trc_cbc(jn) = .false. 
     56         ln_trc_obc(jn) = .false. 
     57      ENDIF 
     58      ! 
     59      IF( ln_cfc12 ) THEN 
     60         jn = jn + 1 
     61         ctrcnm    (jn) = 'CFC12' 
     62         ctrcln    (jn) = 'Chlorofluoro carbon 12 Concentration' 
     63         ctrcun    (jn) = 'umolC/L' 
     64         ln_trc_ini(jn) = .false. 
     65         ln_trc_sbc(jn) = .false. 
     66         ln_trc_cbc(jn) = .false. 
     67         ln_trc_obc(jn) = .false. 
     68      ENDIF 
     69      ! 
     70      IF( ln_sf6 ) THEN 
     71         jn = jn + 1 
     72         ctrcnm    (jn) = 'SF6' 
     73         ctrcln    (jn) = 'Sulfur hexafluoride Concentration' 
     74         ctrcun    (jn) = 'umol/L' 
     75         ln_trc_ini(jn) = .false. 
     76         ln_trc_sbc(jn) = .false. 
     77         ln_trc_cbc(jn) = .false. 
     78         ln_trc_obc(jn) = .false. 
     79      ENDIF 
     80      ! 
     81      REWIND( numtrc_ref )              ! Namelist namcfcdate in reference namelist : CFC parameters 
     82      READ  ( numtrc_ref, namcfc, IOSTAT = ios, ERR = 901) 
     83901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in reference namelist', lwp ) 
    5884 
    59       REWIND( numnatc_ref )              ! Namelist namcfcdate in reference namelist : CFC parameters 
    60       READ  ( numnatc_ref, namcfcdate, IOSTAT = ios, ERR = 901) 
    61 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdate in reference namelist', lwp ) 
    62  
    63       REWIND( numnatc_cfg )              ! Namelist namcfcdate in configuration namelist : CFC parameters 
    64       READ  ( numnatc_cfg, namcfcdate, IOSTAT = ios, ERR = 902 ) 
    65 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdate in configuration namelist', lwp ) 
    66       IF(lwm) WRITE ( numonc, namcfcdate ) 
     85      REWIND( numtrc_cfg )              ! Namelist namcfcdate in configuration namelist : CFC parameters 
     86      READ  ( numtrc_cfg, namcfc, IOSTAT = ios, ERR = 902 ) 
     87902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in configuration namelist', lwp ) 
     88      IF(lwm) WRITE ( numonr, namcfc ) 
    6789 
    6890      IF(lwp) THEN                  ! control print 
    69          WRITE(numout,*) 
     91         WRITE(numout,*) ' ' 
     92         WRITE(numout,*) ' CFCs' 
     93         WRITE(numout,*) ' ' 
    7094         WRITE(numout,*) ' trc_nam: Read namdates, namelist for CFC chemical model' 
    7195         WRITE(numout,*) ' ~~~~~~~' 
     
    76100      IF(lwp) WRITE(numout,*) '    initial year (aa)                       nyear_beg = ', nyear_beg 
    77101      ! 
    78  
    79       IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN 
    80          ! 
    81          ! Namelist namcfcdia 
    82          ! ------------------- 
    83          REWIND( numnatc_ref )              ! Namelist namcfcdia in reference namelist : CFC diagnostics 
    84          READ  ( numnatc_ref, namcfcdia, IOSTAT = ios, ERR = 903) 
    85 903      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdia in reference namelist', lwp ) 
    86  
    87          REWIND( numnatc_cfg )              ! Namelist namcfcdia in configuration namelist : CFC diagnostics 
    88          READ  ( numnatc_cfg, namcfcdia, IOSTAT = ios, ERR = 904 ) 
    89 904      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdia in configuration namelist', lwp ) 
    90          IF(lwm) WRITE ( numonc, namcfcdia ) 
    91  
    92          DO jl = 1, jp_cfc_2d 
    93             jn = jp_cfc0_2d + jl - 1 
    94             ctrc2d(jn) = TRIM( cfcdia2d(jl)%sname ) 
    95             ctrc2l(jn) = TRIM( cfcdia2d(jl)%lname ) 
    96             ctrc2u(jn) = TRIM( cfcdia2d(jl)%units ) 
    97          END DO 
    98  
    99          IF(lwp) THEN                   ! control print 
    100             WRITE(numout,*) 
    101             WRITE(numout,*) ' Namelist : natadd' 
    102             DO jl = 1, jp_cfc_2d 
    103                jn = jp_cfc0_2d + jl - 1 
    104                WRITE(numout,*) '  2d diag nb : ', jn, '    short name : ', ctrc2d(jn), & 
    105                  &             '  long name  : ', ctrc2l(jn), '   unit : ', ctrc2u(jn) 
    106             END DO 
    107             WRITE(numout,*) ' ' 
    108          ENDIF 
    109          ! 
    110       ENDIF 
    111  
    112    IF(lwm) CALL FLUSH ( numonc )     ! flush output namelist CFC 
     102      IF(lwm) CALL FLUSH ( numonr )     ! flush output namelist CFC 
    113103 
    114104   END SUBROUTINE trc_nam_cfc 
    115105    
    116 #else 
    117    !!---------------------------------------------------------------------- 
    118    !!  Dummy module :                                                No CFC 
    119    !!---------------------------------------------------------------------- 
    120 CONTAINS 
    121    SUBROUTINE trc_nam_cfc                      ! Empty routine 
    122    END  SUBROUTINE  trc_nam_cfc 
    123 #endif   
    124  
    125106   !!====================================================================== 
    126107END MODULE trcnam_cfc 
  • trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90

    r6140 r7646  
    77   !!  NEMO      1.0  !  2004-03  (C. Ethe) free form + modularity 
    88   !!            2.0  !  2007-12  (C. Ethe, G. Madec)  reorganisation 
    9    !!---------------------------------------------------------------------- 
    10 #if defined key_cfc 
    11    !!---------------------------------------------------------------------- 
    12    !!   'key_cfc'                                               CFC tracers 
     9   !!            4.0  !  2016-11  (T. Lovato) Add SF6, Update Schmidt number 
    1310   !!---------------------------------------------------------------------- 
    1411   !!   trc_sms_cfc  :  compute and add CFC suface forcing to CFC trends 
     
    2926 
    3027   INTEGER , PUBLIC, PARAMETER ::   jphem  =   2   ! parameter for the 2 hemispheres 
    31    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) 
    3229   INTEGER , PUBLIC            ::   ndate_beg      ! initial calendar date (aammjj) for CFC 
    3330   INTEGER , PUBLIC            ::   nyear_res      ! restoring time constant (year) 
    3431   INTEGER , PUBLIC            ::   nyear_beg      ! initial year (aa)  
    3532    
    36    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 
    3734   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   xphem    ! spatial interpolation factor for patm 
    3835   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qtr_cfc  ! flux at surface 
    3936   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 
    4038   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   patm     ! atmospheric function 
    4139 
    42    REAL(wp), DIMENSION(4,2) ::   soa   ! coefficient for solubility of CFC [mol/l/atm] 
    43    REAL(wp), DIMENSION(3,2) ::   sob   !    "               " 
    44    REAL(wp), DIMENSION(4,2) ::   sca   ! coefficients for schmidt number in degre Celcius 
    45        
     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 
    4643   !                          ! coefficients for conversion 
    4744   REAL(wp) ::   xconv1 = 1.0          ! conversion from to  
     
    7976      INTEGER  ::   im1, im2, ierr 
    8077      REAL(wp) ::   ztap, zdtap         
    81       REAL(wp) ::   zt1, zt2, zt3, zv2 
     78      REAL(wp) ::   zt1, zt2, zt3, zt4, zv2 
    8279      REAL(wp) ::   zsol      ! solubility 
    8380      REAL(wp) ::   zsch      ! schmidt number  
     
    117114         ! time interpolation at time kt 
    118115         DO jm = 1, jphem 
    119             zpatm(jm,jl) = (  p_cfc(iyear_beg, jm, jl) * FLOAT (im1)  & 
    120                &           +  p_cfc(iyear_end, jm, jl) * FLOAT (im2) ) / 12. 
     116            zpatm(jm,jl) = (  atm_cfc(iyear_beg, jm, jl) * REAL(im1, wp)  & 
     117               &           +  atm_cfc(iyear_end, jm, jl) * REAL(im2, wp) ) / 12. 
    121118         END DO 
    122119          
     
    145142   
    146143               ! Computation of speed transfert 
    147                !    Schmidt number 
     144               !    Schmidt number revised in Wanninkhof (2014) 
    148145               zt1  = tsn(ji,jj,1,jp_tem) 
    149146               zt2  = zt1 * zt1  
    150147               zt3  = zt1 * zt2 
    151                zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 
    152  
    153                !    speed transfert : formulae of wanninkhof 1992 
     148               zt4  = zt2 * zt2 
     149               zsch = sca(1,jl) + sca(2,jl) * zt1 + sca(3,jl) * zt2 + sca(4,jl) * zt3 + sca(5,jl) * zt4 
     150 
     151               !    speed transfert : formulae revised in Wanninkhof (2014) 
    154152               zv2     = wndm(ji,jj) * wndm(ji,jj) 
    155153               zsch    = zsch / 660. 
    156                zak_cfc = ( 0.39 * xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1) 
     154               zak_cfc = ( 0.31 * xconv2 * zv2 / SQRT(zsch) ) * tmask(ji,jj,1) 
    157155 
    158156               ! Input function  : speed *( conc. at equil - concen at surface ) 
    159157               ! trn in pico-mol/l idem qtr; ak in en m/a 
    160158               qtr_cfc(ji,jj,jl) = -zak_cfc * ( trb(ji,jj,1,jn) - zca_cfc )   & 
    161 #if defined key_degrad 
    162                   &                         * facvol(ji,jj,1)                           & 
    163 #endif 
    164159                  &                         * tmask(ji,jj,1) * ( 1. - fr_i(ji,jj) ) 
    165160               ! Add the surface flux to the trend 
     
    185180      ! 
    186181      IF( lk_iomput ) THEN 
    187          CALL iom_put( "qtrCFC11"  , qtr_cfc (:,:,1) ) 
    188          CALL iom_put( "qintCFC11" , qint_cfc(:,:,1) ) 
    189       ELSE 
    190          IF( ln_diatrc ) THEN 
    191             trc2d(:,:,jp_cfc0_2d    ) = qtr_cfc (:,:,1) 
    192             trc2d(:,:,jp_cfc0_2d + 1) = qint_cfc(:,:,1) 
    193          END IF 
     182         DO jn = jp_cfc0, jp_cfc1 
     183            CALL iom_put( 'qtr_'//ctrcnm(jn) , qtr_cfc (:,:,jn) ) 
     184            CALL iom_put( 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) ) 
     185         ENDDO 
    194186      END IF 
    195187      ! 
     
    212204      !!--------------------------------------------------------------------- 
    213205      INTEGER :: jn 
    214  
     206      !!---------------------------------------------------------------------- 
     207      ! 
     208      jn = 0  
    215209      ! coefficient for CFC11  
    216210      !---------------------- 
    217  
    218       ! Solubility 
    219       soa(1,1) = -229.9261  
    220       soa(2,1) =  319.6552 
    221       soa(3,1) =  119.4471 
    222       soa(4,1) =  -1.39165 
    223  
    224       sob(1,1) =  -0.142382 
    225       sob(2,1) =   0.091459 
    226       sob(3,1) =  -0.0157274 
    227  
    228       ! Schmidt number  
    229       sca(1,1) = 3501.8 
    230       sca(2,1) = -210.31 
    231       sca(3,1) =  6.1851 
    232       sca(4,1) = -0.07513 
     211      if ( ln_cfc11 ) then 
     212         jn = jn + 1 
     213         ! Solubility 
     214         soa(1,jn) = -229.9261  
     215         soa(2,jn) =  319.6552 
     216         soa(3,jn) =  119.4471 
     217         soa(4,jn) =  -1.39165 
     218 
     219         sob(1,jn) =  -0.142382 
     220         sob(2,jn) =   0.091459 
     221         sob(3,jn) =  -0.0157274 
     222 
     223         ! Schmidt number  
     224         sca(1,jn) = 3579.2 
     225         sca(2,jn) = -222.63 
     226         sca(3,jn) = 7.5749 
     227         sca(4,jn) = -0.14595 
     228         sca(5,jn) = 0.0011874 
     229 
     230         ! atm. concentration 
     231         atm_cfc(:,:,jn) = p_cfc(:,:,1) 
     232      endif 
    233233 
    234234      ! coefficient for CFC12  
    235235      !---------------------- 
    236  
    237       ! Solubility 
    238       soa(1,2) = -218.0971 
    239       soa(2,2) =  298.9702 
    240       soa(3,2) =  113.8049 
    241       soa(4,2) =  -1.39165 
    242  
    243       sob(1,2) =  -0.143566 
    244       sob(2,2) =   0.091015 
    245       sob(3,2) =  -0.0153924 
    246  
    247       ! schmidt number  
    248       sca(1,2) =  3845.4  
    249       sca(2,2) =  -228.95 
    250       sca(3,2) =  6.1908  
    251       sca(4,2) =  -0.067430 
     236      if ( ln_cfc12 ) then 
     237         jn = jn + 1 
     238         ! Solubility 
     239         soa(1,jn) = -218.0971 
     240         soa(2,jn) =  298.9702 
     241         soa(3,jn) =  113.8049 
     242         soa(4,jn) =  -1.39165 
     243 
     244         sob(1,jn) =  -0.143566 
     245         sob(2,jn) =   0.091015 
     246         sob(3,jn) =  -0.0153924 
     247 
     248         ! schmidt number  
     249         sca(1,jn) = 3828.1 
     250         sca(2,jn) = -249.86 
     251         sca(3,jn) = 8.7603 
     252         sca(4,jn) = -0.1716 
     253         sca(5,jn) = 0.001408 
     254 
     255         ! atm. concentration 
     256         atm_cfc(:,:,jn) = p_cfc(:,:,2) 
     257      endif 
     258 
     259      ! coefficient for SF6 
     260      !---------------------- 
     261      if ( ln_sf6 ) then 
     262         jn = jn + 1 
     263         ! Solubility 
     264         soa(1,jn) = -80.0343 
     265         soa(2,jn) = 117.232 
     266         soa(3,jn) =  29.5817 
     267         soa(4,jn) =   0.0 
     268 
     269         sob(1,jn) =  0.0335183  
     270         sob(2,jn) = -0.0373942  
     271         sob(3,jn) =  0.00774862 
     272 
     273         ! schmidt number 
     274         sca(1,jn) = 3177.5 
     275         sca(2,jn) = -200.57 
     276         sca(3,jn) = 6.8865 
     277         sca(4,jn) = -0.13335 
     278         sca(5,jn) = 0.0010877 
     279   
     280         ! atm. concentration 
     281         atm_cfc(:,:,jn) = p_cfc(:,:,3) 
     282       endif 
    252283 
    253284      IF( ln_rsttr ) THEN 
     
    269300      !!                     ***  ROUTINE trc_sms_cfc_alloc  *** 
    270301      !!---------------------------------------------------------------------- 
    271       ALLOCATE( xphem   (jpi,jpj)        ,     & 
    272          &      qtr_cfc (jpi,jpj,jp_cfc) ,     & 
    273          &      qint_cfc(jpi,jpj,jp_cfc) , STAT=trc_sms_cfc_alloc ) 
     302      ALLOCATE( xphem   (jpi,jpj)        , atm_cfc(jpyear,jphem,jp_cfc)  ,    & 
     303         &      qtr_cfc (jpi,jpj,jp_cfc) , qint_cfc(jpi,jpj,jp_cfc)      ,    & 
     304         &      soa(4,jp_cfc)    ,  sob(3,jp_cfc)   ,  sca(5,jp_cfc)     ,    & 
     305         &      STAT=trc_sms_cfc_alloc ) 
    274306         ! 
    275307      IF( trc_sms_cfc_alloc /= 0 ) CALL ctl_warn('trc_sms_cfc_alloc : failed to allocate arrays.') 
     
    277309   END FUNCTION trc_sms_cfc_alloc 
    278310 
    279 #else 
    280    !!---------------------------------------------------------------------- 
    281    !!   Dummy module                                         No CFC tracers 
    282    !!---------------------------------------------------------------------- 
    283 CONTAINS 
    284    SUBROUTINE trc_sms_cfc( kt )       ! Empty routine 
    285       WRITE(*,*) 'trc_sms_cfc: You should not have seen this print! error?', kt 
    286    END SUBROUTINE trc_sms_cfc 
    287 #endif 
    288  
    289311   !!====================================================================== 
    290312END MODULE trcsms_cfc 
  • trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcwri_cfc.F90

    r5836 r7646  
    66   !! History :   1.0  !  2009-05 (C. Ethe)  Original code 
    77   !!---------------------------------------------------------------------- 
    8 #if defined key_top && defined key_cfc && defined key_iomput 
    9    !!---------------------------------------------------------------------- 
    10    !!   'key_cfc'                                           cfc model 
     8#if defined key_top && defined key_iomput 
    119   !!---------------------------------------------------------------------- 
    1210   !! trc_wri_cfc   :  outputs of concentration fields 
Note: See TracChangeset for help on using the changeset viewer.