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 7097 – NEMO

Changeset 7097


Ignore:
Timestamp:
2016-10-25T17:32:50+02:00 (7 years ago)
Author:
lovato
Message:

New top interface : update my_trc and revise structure of TOP component initialisation, see ticket #1782

Location:
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_top_ref

    r7068 r7097  
    2626&namtrc          !   tracers definition 
    2727!----------------------------------------------------------------------- 
    28    jptra         =  1           !  Number of passive tracers of the BGC model 
     28   jptra         =  0           !  Number of passive tracers of the BGC model 
    2929! 
    3030   ln_pisces     =  .false.     !  Run PISCES BGC model  
    31    ln_age        =  .true.      !  Run the sea water age tracer 
    32    ln_cfc11      =  .true.      !  Run the CFC11 passive tracer 
     31   ln_age        =  .false.     !  Run the sea water age tracer 
     32   ln_cfc11      =  .false.     !  Run the CFC11 passive tracer 
    3333   ln_cfc12      =  .false.     !  Run the CFC12 passive tracer 
    34    ln_c14        =  .true.      !  Run the Radiocarbon passive tracer 
     34   ln_c14        =  .false.     !  Run the Radiocarbon passive tracer 
    3535   ln_my_trc     =  .false.     !  Run MY_TRC BGC model 
    3636! 
     
    4040!                !           !                                         !            !                               ! 
    4141!                !    name   !           title of the field            !   units    ! initial data from file or not !  
    42    sn_tracer(1)  = 'tracer  ' , 'Tracer  Concentration                 ',   ' - '    ,           .false. 
     42!  sn_tracer(1)  = 'tracer  ' , 'Tracer  Concentration                 ',   ' - '    ,           .false. 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcini_age.F90

    r7068 r7097  
    1010   USE oce_trc 
    1111   USE trc 
     12   USE trcnam_age      ! AGE SMS namelist 
    1213   USE trcsms_age 
    1314 
     
    3940      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    4041 
     42      CALL trc_nam_age 
     43 
    4144      rryear  = 1._wp / ( nyear_len(1) * rday )    ! recip number of seconds in one year 
    4245 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcnam_age.F90

    r7068 r7097  
    99   !!---------------------------------------------------------------------- 
    1010   USE oce_trc         ! Ocean variables 
    11    USE trc         ! Ocean variables 
     11   USE trc             ! Ocean variables 
    1212   USE trcsms_age      ! AGE specific variable 
    1313 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcini_c14.F90

    r7068 r7097  
    4545      !!---------------------------------------------------------------------- 
    4646      ! 
     47      CALL trc_nam_c14 
    4748      !                       ! Allocate c14 arrays 
    4849      IF( sms_c14_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'trc_ini_c14: unable to allocate C14 arrays' ) 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90

    r7068 r7097  
    1212   USE par_trc         ! TOP parameters 
    1313   USE trc             ! TOP variables 
     14   USE trcnam_cfc      ! CFC SMS namelist 
    1415   USE trcsms_cfc      ! CFC sms trends 
    1516 
     
    4950      IF(lwp) WRITE(numout,*) ' trc_ini_cfc: initialisation of CFC chemical model' 
    5051      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~' 
    51  
     52      ! 
     53      CALL trc_nam_cfc 
     54      ! 
    5255      IF(lwp) WRITE(numout,*) 'read of formatted file cfc1112atm' 
    5356       
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90

    r7073 r7097  
    1616   INTEGER, PUBLIC ::   jp_myt0             !: First index of MY_TRC passive tracers 
    1717   INTEGER, PUBLIC ::   jp_myt1             !: Last  index of MY_TRC passive tracers 
    18  
    19    INTEGER, PUBLIC ::   jpmyt0, jpmty1, jpmyt2         !: index of MY_TRC passive tracers 
    2018   !!====================================================================== 
    2119END MODULE par_my_trc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcice_my_trc.F90

    r7073 r7097  
    33   !!                         ***  MODULE trcice_my_trc  *** 
    44   !!---------------------------------------------------------------------- 
    5    !! trc_ice_my_trc       : MY_TRC model main routine 
     5   !! trc_ice_my_trc       : MY_TRC model seaice coupling routine 
     6   !!---------------------------------------------------------------------- 
     7   !! History :        !  2016  (C. Ethe, T. Lovato) Revised architecture 
    68   !!---------------------------------------------------------------------- 
    79   USE par_trc         ! TOP parameters 
     
    1517 
    1618   !!---------------------------------------------------------------------- 
    17    !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    18    !! $Id: trcice_my_trc.F90 4990 2014-12-15 16:42:49Z timgraham $ 
     19   !! NEMO/TOP 4.0 , NEMO Consortium (2016) 
     20   !! $Id$ 
    1921   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    2022   !!---------------------------------------------------------------------- 
     
    3032   END SUBROUTINE trc_ice_ini_my_trc 
    3133 
    32  
    3334   !!====================================================================== 
    3435END MODULE trcice_my_trc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcini_my_trc.F90

    r7073 r7097  
    44   !! TOP :   initialisation of the MY_TRC tracers 
    55   !!====================================================================== 
    6    !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) Original code 
     6   !! History :        !  2007  (C. Ethe, G. Madec) Original code 
     7   !!                  !  2016  (C. Ethe, T. Lovato) Revised architecture 
    78   !!---------------------------------------------------------------------- 
    89   !! trc_ini_my_trc   : MY_TRC model initialisation 
     
    1112   USE oce_trc 
    1213   USE trc 
     14   USE par_my_trc 
     15   USE trcnam_my_trc     ! MY_TRC SMS namelist 
    1316   USE trcsms_my_trc 
    1417 
     
    1922 
    2023   !!---------------------------------------------------------------------- 
    21    !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     24   !! NEMO/TOP 4.0 , NEMO Consortium (2016) 
    2225   !! $Id$  
    2326   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    3336      !! ** Method  : - Read the namcfc namelist and check the parameter values 
    3437      !!---------------------------------------------------------------------- 
    35  
     38      ! 
     39      CALL trc_nam_my_trc 
     40      ! 
    3641      !                       ! Allocate MY_TRC arrays 
    3742      IF( trc_sms_my_trc_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'trc_ini_my_trc: unable to allocate MY_TRC arrays' ) 
     
    4954   END SUBROUTINE trc_ini_my_trc 
    5055 
    51  
    5256   !!====================================================================== 
    5357END MODULE trcini_my_trc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcnam_my_trc.F90

    r7073 r7097  
    44   !! TOP :   initialisation of some run parameters for MY_TRC bio-model 
    55   !!====================================================================== 
    6    !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) Original code 
     6   !! History :      !  2007  (C. Ethe, G. Madec) Original code 
     7   !!                !  2016  (C. Ethe, T. Lovato) Revised architecture 
    78   !!---------------------------------------------------------------------- 
    89   !! trc_nam_my_trc      : MY_TRC model initialisation 
     
    1819 
    1920   !!---------------------------------------------------------------------- 
    20    !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     21   !! NEMO/TOP 4.0 , NEMO Consortium (2016) 
    2122   !! $Id$  
    2223   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     
    3940   END SUBROUTINE trc_nam_my_trc 
    4041    
    41  
    4242   !!====================================================================== 
    4343END MODULE trcnam_my_trc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcsms_my_trc.F90

    r7073 r7097  
    44   !! TOP :   Main module of the MY_TRC tracers 
    55   !!====================================================================== 
    6    !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) Original code 
     6   !! History :      !  2007  (C. Ethe, G. Madec)  Original code 
     7   !!                !  2016  (C. Ethe, T. Lovato) Revised architecture 
    78   !!---------------------------------------------------------------------- 
    89   !! trc_sms_my_trc       : MY_TRC model main routine 
     
    2526 
    2627   !!---------------------------------------------------------------------- 
    27    !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     28   !! NEMO/TOP 4.0 , NEMO Consortium (2016) 
    2829   !! $Id$ 
    2930   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    7071   END SUBROUTINE trc_sms_my_trc 
    7172 
    72  
    7373   INTEGER FUNCTION trc_sms_my_trc_alloc() 
    7474      !!---------------------------------------------------------------------- 
     
    8484   END FUNCTION trc_sms_my_trc_alloc 
    8585 
    86  
    8786   !!====================================================================== 
    8887END MODULE trcsms_my_trc 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcwri_my_trc.F90

    r7073 r7097  
    22   !!====================================================================== 
    33   !!                       *** MODULE trcwri *** 
    4    !!    my_trc :   Output of my_trc tracers 
     4   !!     trc_wri_my_trc   :  outputs of concentration fields 
    55   !!====================================================================== 
    6    !! History :   1.0  !  2009-05 (C. Ethe)  Original code 
    7    !!---------------------------------------------------------------------- 
    86#if defined key_top && defined key_iomput 
    97   !!---------------------------------------------------------------------- 
    10    !! trc_wri_my_trc   :  outputs of concentration fields 
     8   !! History :      !  2007  (C. Ethe, G. Madec)  Original code 
     9   !!                !  2016  (C. Ethe, T. Lovato) Revised architecture 
    1110   !!---------------------------------------------------------------------- 
    12    USE par_trc         ! passive tracers common variables  
     11   USE par_trc         ! passive tracers common variables 
    1312   USE trc         ! passive tracers common variables  
    1413   USE iom         ! I/O manager 
     
    1918   PUBLIC trc_wri_my_trc  
    2019 
     20   !!---------------------------------------------------------------------- 
     21   !! NEMO/TOP 4.0 , NEMO Consortium (2016) 
     22   !! $Id$ 
     23   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     24   !!---------------------------------------------------------------------- 
    2125CONTAINS 
    2226 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90

    r7068 r7097  
    1313   !! trc_ini_pisces   : PISCES biochemical model initialisation 
    1414   !!---------------------------------------------------------------------- 
    15    USE par_trc         ! TOP parameters 
     15   USE par_trc         !  TOP parameters 
    1616   USE oce_trc         !  shared variables between ocean and passive tracers 
    1717   USE trc             !  passive tracers common variables  
     18   USE trcnam_pisces   !  PISCES namelist 
    1819   USE sms_pisces      !  PISCES Source Minus Sink variables 
    1920 
     
    8485      IF(lwp) WRITE(numout,*) ' p4z_ini :   PISCES biochemical model initialisation' 
    8586      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    86  
    87                                                  ! Allocate PISCES arrays 
     87      ! 
     88      CALL trc_nam_pisces 
     89      ! 
     90      ! Allocate PISCES arrays 
    8891      ierr =         sms_pisces_alloc()           
    8992      ierr = ierr +  p4z_che_alloc() 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r7068 r7097  
    103103   END TYPE PTRACER 
    104104 
    105    TYPE, PUBLIC :: STRACER                                                            !: Passive tracer type 
    106        LOGICAL              :: llsbc   !: read in a file or not 
    107        LOGICAL              :: llcbc   !: read in a file or not 
    108        LOGICAL              :: llobc   !: read in a file or not 
    109    END TYPE STRACER 
    110  
    111105   CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)    ::  ctrcnm         !: tracer name  
    112106   CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)    ::  ctrcln         !: trccer field long name 
     
    202196         &      gtru (jpi,jpj,jptra)  , gtrv (jpi,jpj,jptra)                          ,       & 
    203197         &      gtrui(jpi,jpj,jptra)  , gtrvi(jpi,jpj,jptra)                          ,       & 
     198         &      trc_ice_ratio(jptra)  , trc_ice_prescr(jptra) , cn_trc_o(jptra)       ,       & 
    204199         &      sbc_trc_b(jpi,jpj,jptra), sbc_trc(jpi,jpj,jptra)                      ,       &   
    205          &      cvol(jpi,jpj,jpk)     , trai(jptra)           ,  qsr_mean(jpi,jpj)    ,       & 
     200         &      cvol(jpi,jpj,jpk)     , trai(jptra)           , qsr_mean(jpi,jpj)     ,       & 
     201         &      ctrcnm(jptra)         , ctrcln(jptra)         , ctrcun(jptra)         ,       & 
     202         &      ln_trc_ini(jptra)     ,                                                       & 
     203         &      ln_trc_sbc(jptra)     , ln_trc_cbc(jptra)     , ln_trc_obc(jptra)     ,       & 
     204#if defined key_bdy 
     205         &      cn_trc_dflt(nb_bdy)   , cn_trc(nb_bdy)        , nn_trcdmp_bdy(nb_bdy) ,       & 
     206         &      trcdta_bdy(jptra,nb_bdy)                                              ,       & 
     207#endif 
    206208         &      STAT = trc_alloc  ) 
    207209 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcice.F90

    r7068 r7097  
    4646 
    4747      IF( nn_timing == 1 )  CALL timing_start('trc_ice_ini') 
    48  
     48      ! 
     49      CALL trc_nam_ice 
    4950      ! 
    5051      trc_i(:,:,:) = 0.0d0 ! by default 
     
    6364   END SUBROUTINE trc_ice_ini 
    6465 
     66   SUBROUTINE trc_nam_ice 
     67      !!--------------------------------------------------------------------- 
     68      !!                     ***  ROUTINE trc_nam_ice *** 
     69      !! 
     70      !! ** Purpose :   Read the namelist for the ice effect on tracers 
     71      !! 
     72      !! ** Method  : - 
     73      !! 
     74      !!--------------------------------------------------------------------- 
     75      INTEGER :: jn      ! dummy loop indices 
     76      INTEGER :: ios, ierr     ! Local integer output status for namelist read 
     77      ! 
     78      TYPE(TRC_I_NML), DIMENSION(jpmaxtrc) :: sn_tri_tracer 
     79      !! 
     80      NAMELIST/namtrc_ice/ nn_ice_tr, sn_tri_tracer 
     81      !!--------------------------------------------------------------------- 
     82      ! 
     83      IF(lwp) THEN 
     84         WRITE(numout,*) 
     85         WRITE(numout,*) 'trc_nam_ice : Read the namelist for trc_ice' 
     86         WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
     87      ENDIF 
     88 
     89      IF( nn_timing == 1 )  CALL timing_start('trc_nam_ice') 
     90 
     91      ! 
     92      REWIND( numnat_ref )              ! Namelist namtrc_ice in reference namelist : Passive tracer input data 
     93      READ  ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901) 
     94 901  IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ', lwp ) 
     95 
     96      REWIND( numnat_cfg )              ! Namelist namtrc_ice in configuration namelist : Pisces external sources of nutrients 
     97      READ  ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 ) 
     98 902  IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist', lwp ) 
     99 
     100      IF( lwp ) THEN 
     101         WRITE(numout,*) ' ' 
     102         WRITE(numout,*) ' Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr 
     103         WRITE(numout,*) ' ' 
     104      ENDIF 
     105      ! 
     106      ! Assign namelist stuff 
     107      DO jn = 1, jptra 
     108         trc_ice_ratio (jn) = sn_tri_tracer(jn)%trc_ratio 
     109         trc_ice_prescr(jn) = sn_tri_tracer(jn)%trc_prescr 
     110         cn_trc_o      (jn) = sn_tri_tracer(jn)%ctrc_o 
     111      END DO 
     112 
     113      IF( nn_timing == 1 )   CALL timing_stop('trc_nam_ice') 
     114      ! 
     115   END SUBROUTINE trc_nam_ice 
     116 
    65117#else 
    66118   !!---------------------------------------------------------------------- 
     
    70122   SUBROUTINE trc_ice_ini                   ! Dummy routine    
    71123   END SUBROUTINE trc_ice_ini 
     124 
     125   SUBROUTINE trc_nam_ice 
     126   END SUBROUTINE trc_nam_ice 
     127 
    72128#endif 
    73129 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r7068 r7097  
    5858      IF(lwp) WRITE(numout,*) 'trc_init : initial set up of the passive tracers' 
    5959      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    60  
    61       ! 
    6260      ! 
    6361      CALL trc_ini_ctl   ! control  
     
    7876      CALL trc_ini_state  !  passive tracers initialisation : from a restart or from clim 
    7977      IF( nn_dttrc /= 1 ) & 
    80       CALL trc_sub_ini      ! Initialize variables for substepping passive tracers 
    81       CALL trc_ini_inv   ! Inventories 
     78      CALL trc_sub_ini    ! Initialize variables for substepping passive tracers 
     79      CALL trc_ini_inv    ! Inventories 
    8280      ! 
    8381      IF( nn_timing == 1 )   CALL timing_stop('trc_init') 
     
    156154      USE trcini_age     ! age initialisation 
    157155      USE trcini_my_trc  ! MY_TRC   initialisation 
    158       !!---------------------------------------------------------------------- 
     156      ! 
     157      INTEGER :: jn 
     158      !!---------------------------------------------------------------------- 
     159      ! 
     160      ! Pass sn_tracer fields to specialized arrays  
     161      DO jn = 1, jp_bgc 
     162         ctrcnm    (jn) = TRIM( sn_tracer(jn)%clsname ) 
     163         ctrcln    (jn) = TRIM( sn_tracer(jn)%cllname ) 
     164         ctrcun    (jn) = TRIM( sn_tracer(jn)%clunit  ) 
     165         ln_trc_ini(jn) =       sn_tracer(jn)%llinit 
     166         ln_trc_sbc(jn) =       sn_tracer(jn)%llsbc 
     167         ln_trc_cbc(jn) =       sn_tracer(jn)%llcbc 
     168         ln_trc_obc(jn) =       sn_tracer(jn)%llobc 
     169      END DO 
    159170      !     
    160171      IF( ln_pisces  )   CALL trc_ini_pisces     !  PISCES model 
     
    163174      IF( ln_c14     )   CALL trc_ini_c14        !  C14 model 
    164175      IF( ln_age     )   CALL trc_ini_age        !  AGE 
     176      ! 
     177      IF(lwp) THEN                   ! control print 
     178         WRITE(numout,*) 'ID     NAME     INI  SBC  CBC  OBC' 
     179         DO jn = 1, jptra 
     180            WRITE(numout,9001) jn, TRIM(ctrcnm(jn)), ln_trc_ini(jn), ln_trc_sbc(jn),ln_trc_cbc(jn),ln_trc_obc(jn) 
     181         END DO 
     182         WRITE(numout,*) ' ' 
     183      ENDIF 
     1849001  FORMAT(i3,1x,a10,3x,l2,3x,l2,3x,l2,3x,l2) 
    165185      ! 
    166186   END SUBROUTINE trc_ini_sms 
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcnam.F90

    r7068 r7097  
    3535   PUBLIC trc_nam      ! called in trcini 
    3636 
     37   TYPE(PTRACER), DIMENSION(jpmaxtrc), PUBLIC  :: sn_tracer  ! type of tracer for saving if not key_iomput 
     38 
    3739   !!---------------------------------------------------------------------- 
    3840   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     
    5860      CALL trc_nam_trc     ! passive tracer informations 
    5961      !                                         
    60       ! 
    6162      IF( ln_rsttr                     )   ln_trcdta     = .FALSE.   ! restart : no need of clim data 
    6263      ! 
     
    8283         ENDIF 
    8384      ENDIF 
    84  
    85        
    86       rdttrc = rdt * FLOAT( nn_dttrc )   ! passive tracer time-step 
    87    
    88       IF(lwp) THEN                   ! control print 
     85      ! 
     86      rdttrc = rdt * FLOAT( nn_dttrc )          ! passive tracer time-step 
     87      !  
     88      IF(lwp) THEN                              ! control print 
    8989        WRITE(numout,*)  
    9090        WRITE(numout,*) '    Passive Tracer  time step    rdttrc  = ', rdttrc 
    9191        WRITE(numout,*)  
    9292      ENDIF 
    93  
    94  
     93      ! 
    9594      IF( l_trdtrc )        CALL trc_nam_trd    ! Passive tracer trends 
    96  
    97                               
    98                             CALL trc_nam_ice  ! ice module for tracerd 
    99  
    100       ! namelist of SMS 
    101       ! ---------------       
    102       IF( ln_age     ) THEN   ;   CALL trc_nam_age         ! AGE     tracer 
    103       ELSE                    ;   IF(lwp) WRITE(numout,*) '          AGE not used' 
    104       ENDIF 
    105  
    106       IF( ll_cfc     ) THEN   ;   CALL trc_nam_cfc         ! CFC     tracers 
    107       ELSE                    ;   IF(lwp) WRITE(numout,*) '          CFC not used' 
    108       ENDIF 
    109  
    110       IF( ln_c14     ) THEN   ;   CALL trc_nam_c14         ! C14     tracers 
    111       ELSE                    ;   IF(lwp) WRITE(numout,*) '          C14 not used' 
    112       ENDIF 
    113  
    114       IF( ln_pisces  ) THEN   ;   CALL trc_nam_pisces      ! PISCES  bio-model 
    115       ELSE                    ;   IF(lwp) WRITE(numout,*) '          PISCES not used' 
    116       ENDIF 
    117  
    118  
    119       IF( ln_my_trc  ) THEN   ;   CALL trc_nam_my_trc      ! MY_TRC  tracers 
    120       ELSE                    ;   IF(lwp) WRITE(numout,*) '          MY_TRC not used' 
    121       ENDIF 
    12295      ! 
    12396   END SUBROUTINE trc_nam 
     
    176149      !! 
    177150      !!--------------------------------------------------------------------- 
    178       INTEGER  ::   ios, ierr, ioptio, icfc     ! Local integer output status for namelist read 
    179       INTEGER  ::   jn                    ! dummy loop indice 
    180       ! 
    181       TYPE(PTRACER), DIMENSION(jpmaxtrc) :: sn_tracer  ! type of tracer for saving if not key_iomput 
    182       TYPE(STRACER), DIMENSION(jpmaxtrc) :: bc_tracer  ! type of tracer for saving if not key_iomput 
     151      INTEGER  ::   ios, ierr, icfc       ! Local integer output status for namelist read 
    183152      !! 
    184153      NAMELIST/namtrc/jptra, ln_pisces, ln_my_trc, ln_age, ln_cfc11, ln_cfc12, ln_c14, & 
    185154         &            sn_tracer, ln_trcdta, ln_trcdmp, ln_trcdmp_clo 
    186155      !!--------------------------------------------------------------------- 
     156      ! Dummy settings to fill tracers data structure 
     157      !                  !   name   !   title   !   unit   !   init  !   sbc   !   cbc   !   obc  ! 
     158      sn_tracer = PTRACER( 'NONAME' , 'NOTITLE' , 'NOUNIT' , .false. , .false. , .false. , .false.) 
     159      ! 
    187160      IF(lwp) WRITE(numout,*) 
    188161      IF(lwp) WRITE(numout,*) 'trc_nam_trc : read the passive tracer namelists' 
    189162      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    190  
    191163 
    192164      REWIND( numnat_ref )              ! Namelist namtrc in reference namelist : Passive tracer variables 
     
    199171      IF(lwm) WRITE ( numont, namtrc ) 
    200172 
    201       ioptio = 0 
    202       IF( ln_pisces )    ioptio = ioptio + 1 
    203       IF( ln_my_trc )    ioptio = ioptio + 1 
    204       ! 
    205       IF( ioptio == 2 )   CALL ctl_stop( 'Choose only ONE BGC model - PISCES or MY_TRC' ) 
    206       IF( ioptio == 0 )   jptra = 0 
    207  
     173      ! Control settings 
     174      IF( ln_pisces .AND. ln_my_trc )   CALL ctl_stop( 'Choose only ONE BGC model - PISCES or MY_TRC' ) 
     175      IF( .NOT. ln_pisces .AND. .NOT. ln_my_trc )   jptra = 0 
    208176      ll_cfc = ln_cfc11 .OR. ln_cfc12 
    209    
    210177      ! 
    211178      jp_pisces   =  0    ;   jp_pcs0  =  0    ;   jp_pcs1  = 0 
     
    213180      jp_cfc      =  0    ;   jp_cfc0  =  0    ;   jp_cfc1  = 0 
    214181      jp_age      =  0    ;   jp_c14   = 0 
     182      ! 
    215183      IF( ln_pisces )  THEN 
    216184         jp_pisces = jptra 
     
    241209           jp_c14    = jptra 
    242210      ENDIF 
    243  
     211      ! 
     212      IF( jptra == 0 )   CALL ctl_stop( 'All TOP tracers disabled: change namtrc setting or check if key_top is active' ) 
     213      ! 
    244214      IF(lwp) THEN                   ! control print 
    245215         WRITE(numout,*) 
     
    247217         WRITE(numout,*) '   Total number of passive tracers              jptra         = ', jptra 
    248218         WRITE(numout,*) '   Simulating PISCES model                      ln_pisces     = ', ln_pisces 
     219         WRITE(numout,*) '   Simulating MY_TRC  model                     ln_my_trc     = ', ln_my_trc 
    249220         WRITE(numout,*) '   Simulating water mass age                    ln_age        = ', ln_age 
    250221         WRITE(numout,*) '   Simulating CFC11 passive tracer              ln_cfc11      = ', ln_cfc11 
    251222         WRITE(numout,*) '   Simulating CFC12 passive tracer              ln_cfc12      = ', ln_cfc12 
    252223         WRITE(numout,*) '   Simulating C14   passive tracer              ln_c14        = ', ln_c14 
    253          WRITE(numout,*) '   Simulating MY_TRC  model                     ln_my_trc     = ', ln_my_trc 
    254224         WRITE(numout,*) '   Read inputs data from file (y/n)             ln_trcdta     = ', ln_trcdta 
    255225         WRITE(numout,*) '   Damping of passive tracer (y/n)              ln_trcdmp     = ', ln_trcdmp 
    256226         WRITE(numout,*) '   Restoring of tracer on closed seas           ln_trcdmp_clo = ', ln_trcdmp_clo 
     227         WRITE(numout,*) '   Total number of BGC-like tracers             jp_bgc        = ', jp_bgc 
    257228         WRITE(numout,*) ' ' 
    258229         WRITE(numout,*) ' ' 
    259230      ENDIF 
    260231      ! 
    261       ALLOCATE( ctrcnm(jptra)      , ctrcln(jptra) , ctrcun(jptra)       , ln_trc_ini(jptra),          & 
    262 #if defined key_bdy 
    263          &      cn_trc_dflt(nb_bdy), cn_trc(nb_bdy), nn_trcdmp_bdy(nb_bdy), trcdta_bdy(jptra,nb_bdy),  & 
    264 #endif 
    265          &      ln_trc_sbc(jptra), ln_trc_cbc(jptra), ln_trc_obc(jptra), STAT = ierr  ) 
    266       ! 
    267232      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'trc_nam_ice: unable to allocate arrays' ) 
    268       ! 
    269       DO jn = 1, jp_bgc 
    270          ctrcnm    (jn) = TRIM( sn_tracer(jn)%clsname ) 
    271          ctrcln    (jn) = TRIM( sn_tracer(jn)%cllname ) 
    272          ctrcun    (jn) = TRIM( sn_tracer(jn)%clunit  ) 
    273          ln_trc_ini(jn) =       sn_tracer(jn)%llinit 
    274       END DO 
    275       ! 
    276       IF( ln_my_trc ) THEN 
    277          DO jn = 1, jp_bgc 
    278            ln_trc_sbc(jn) =  bc_tracer(jn)%llsbc 
    279            ln_trc_cbc(jn) =  bc_tracer(jn)%llcbc 
    280            ln_trc_obc(jn) =  bc_tracer(jn)%llobc 
    281          END DO 
    282       ENDIF 
    283       ! 
    284       IF(lwp) THEN                   ! control print 
    285          DO jn = 1, jp_bgc 
    286             WRITE(numout,*) '  tracer nb : ', jn, '    short name : ', ctrcnm(jn) 
    287          END DO 
    288          WRITE(numout,*) ' ' 
    289       ENDIF 
    290       ! 
    291233      ! 
    292234      IF( ln_age .OR. ll_cfc .OR. ln_c14 ) THEN 
     
    299241 
    300242   END SUBROUTINE trc_nam_trc 
    301  
    302  
    303    SUBROUTINE trc_nam_ice 
    304       !!--------------------------------------------------------------------- 
    305       !!                     ***  ROUTINE trc_nam_ice *** 
    306       !! 
    307       !! ** Purpose :   Read the namelist for the ice effect on tracers 
    308       !! 
    309       !! ** Method  : - 
    310       !! 
    311       !!--------------------------------------------------------------------- 
    312       INTEGER :: jn      ! dummy loop indices 
    313       INTEGER :: ios, ierr     ! Local integer output status for namelist read 
    314       ! 
    315       TYPE(TRC_I_NML), DIMENSION(jpmaxtrc) :: sn_tri_tracer  ! type of tracer for saving if not key_iomput 
    316       !! 
    317       NAMELIST/namtrc_ice/ nn_ice_tr, sn_tri_tracer 
    318       !!--------------------------------------------------------------------- 
    319       ! 
    320       IF(lwp) THEN 
    321          WRITE(numout,*) 
    322          WRITE(numout,*) 'trc_nam_ice : Read the namelist for trc_ice' 
    323          WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    324       ENDIF 
    325  
    326       IF( nn_timing == 1 )  CALL timing_start('trc_nam_ice') 
    327  
    328       ! 
    329       REWIND( numnat_ref )              ! Namelist namtrc_ice in reference namelist : Passive tracer input data 
    330       READ  ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901) 
    331  901  IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ', lwp ) 
    332  
    333       REWIND( numnat_cfg )              ! Namelist namtrc_ice in configuration namelist : Pisces external sources of nutrients 
    334       READ  ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 ) 
    335  902  IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist', lwp ) 
    336  
    337       IF( lwp ) THEN 
    338          WRITE(numout,*) ' ' 
    339          WRITE(numout,*) ' Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr 
    340          WRITE(numout,*) ' ' 
    341       ENDIF 
    342  
    343       ALLOCATE( trc_ice_ratio(jptra), trc_ice_prescr(jptra), cn_trc_o(jptra), STAT = ierr  ) 
    344       IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'trc_nam_ice: unable to allocate arrays' ) 
    345       ! 
    346       ! Assign namelist stuff 
    347       DO jn = 1, jptra 
    348          trc_ice_ratio (jn) = sn_tri_tracer(jn)%trc_ratio 
    349          trc_ice_prescr(jn) = sn_tri_tracer(jn)%trc_prescr 
    350          cn_trc_o      (jn) = sn_tri_tracer(jn)%ctrc_o 
    351       END DO 
    352  
    353       IF( nn_timing == 1 )   CALL timing_stop('trc_nam_ice') 
    354       ! 
    355    END SUBROUTINE trc_nam_ice 
    356  
    357  
    358243 
    359244   SUBROUTINE trc_nam_trd 
Note: See TracChangeset for help on using the changeset viewer.