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 335 for trunk/NEMO/TOP_SRC – NEMO

Changeset 335 for trunk/NEMO/TOP_SRC


Ignore:
Timestamp:
2005-11-14T13:08:42+01:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_023 : CE + RB + CT : new evolution of modules

Location:
trunk/NEMO/TOP_SRC
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/initrc.F90

    r274 r335  
    11MODULE initrc 
    2    !!=========================================================================================== 
     2   !!================================================ 
    33   !! 
    44   !!                       *** MODULE initrc *** 
    55   !! Initialisation the tracer model 
    6    !!=========================================================================================== 
    7  
    8    !!---------------------------------------------------------------------- 
    9    !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    10    !! $Header$ 
    11    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    12    !!---------------------------------------------------------------------- 
    13  
    14       !!---------------------------------------------------------------------- 
    15       !! * Modules used 
    16       !! ============== 
    17       USE oce_trc 
    18       USE trc 
    19       USE trcrst 
    20       USE trcctl 
    21       USE trclec 
    22       USE trcdtr 
    23       USE trcini 
    24  
    25       IMPLICIT NONE 
    26       PRIVATE 
    27  
    28  
    29    !! * Accessibility 
    30    PUBLIC ini_trc 
    31  
    32 CONTAINS 
     6   !!================================================ 
    337                                                                                                                             
    348#if defined key_passivetrc 
    359 
    36 SUBROUTINE ini_trc 
    37    !!--------------------------------------------------------------------- 
    38    !! 
    39    !!                       ROUTINE ini_trc 
    40    !!                     ****************** 
    41    !! 
    42    !!  PURPOSE : 
    43    !!  --------- 
    44    !!     initialize the tracer model 
    45    !! 
    46    !!   METHOD : 
    47    !!   ------- 
    48    !! 
    49    !! 
    50    !!   History: 
    51    !!   ------- 
    52    !!      original  : 91-03 () 
    53    !!      additions : 92-01 (C. Levy) 
    54    !!     05-03 (O. Aumont and A. El Moussaoui) F90 
    55    !!---------------------------------------------------------------------- 
     10   !!------------------------------------------------------- 
     11   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
     12   !!------------------------------------------------------- 
    5613 
    57    !!--------------------------------------------------------------------- 
    58    !!  OPA.9, 03-2005 
    59    !!--------------------------------------------------------------------- 
     14   !!-------------------------------------------------------------- 
     15   !! * Modules used 
     16   !! ============== 
     17   USE oce_trc 
     18   USE trc 
     19   USE trcrst 
     20   USE trcctl 
     21   USE trclec 
     22   USE trcdtr 
     23   USE trcini 
     24    
     25   IMPLICIT NONE 
     26   PRIVATE 
     27    
     28    
     29   !! * Accessibility 
     30   PUBLIC ini_trc 
     31    
     32CONTAINS 
     33    
     34   SUBROUTINE ini_trc 
     35      !!--------------------------------------------------------------------- 
     36      !! 
     37      !!                       ROUTINE ini_trc 
     38      !!                     ****************** 
     39      !! 
     40      !!  PURPOSE : 
     41      !!  --------- 
     42      !!     initialize the tracer model 
     43      !! 
     44      !!   METHOD : 
     45      !!   ------- 
     46      !! 
     47      !! 
     48      !!   History: 
     49      !!   ------- 
     50      !!      original  : 91-03 () 
     51      !!      additions : 92-01 (C. Levy) 
     52      !!     05-03 (O. Aumont and A. El Moussaoui) F90 
     53      !!---------------------------------------------------------------------- 
    6054 
    61    !! 0.b PRINT the number of tracer 
    62    !! ------------------------------ 
     55      !!--------------------------------------------------------------------- 
     56      !!  OPA.9, 03-2005 
     57      !!--------------------------------------------------------------------- 
     58 
     59      !! 0.b PRINT the number of tracer 
     60      !! ------------------------------ 
    6361 
    6462      IF(lwp) WRITE(numout,*) ' ' 
     
    6664      IF(lwp) WRITE(numout,*) ' ' 
    6765 
    68    ! 1. READ passive tracers namelists 
    69    ! --------------------------------- 
     66      ! 1. READ passive tracers namelists 
     67      ! --------------------------------- 
    7068 
    7169      CALL trc_lec 
    7270 
    73    ! 2. control consistency between parameters, cpp key and namelists 
    74    ! ---------------------------------------------------------------- 
     71      ! 2. control consistency between parameters, cpp key and namelists 
     72      ! ---------------------------------------------------------------- 
    7573 
    7674      CALL trc_ctl 
    7775 
    78    ! 3. computes some initializations 
    79    ! -------------------------------- 
     76      ! 3. computes some initializations 
     77      ! -------------------------------- 
    8078 
    8179      CALL trc_ini 
    8280 
    83    ! 4. restart from a FILE (nutrst) 
    84    ! ---------------------- 
     81      ! 4. restart from a FILE (nutrst) 
     82      ! ---------------------- 
    8583 
    86       IF(lrsttr) THEN 
     84      IF( lrsttr ) THEN 
    8785 
    88           CALL trc_rst 
     86 
     87         CALL trc_rst 
    8988 
    9089      ELSE 
    9190 
    92    ! start from anything ELSE 
     91         ! start from anything ELSE 
    9392 
    94           CALL trc_dtr 
     93         CALL trc_dtr 
    9594 
    9695      ENDIF 
    9796 
    98 END SUBROUTINE ini_trc 
     97   END SUBROUTINE ini_trc 
    9998 
    10099#else 
    101 SUBROUTINE ini_trc 
    102    ! no passive tracers 
    103 END SUBROUTINE ini_trc 
     100   !!====================================================================== 
     101   !!  Empty module : No passive tracer 
     102   !!====================================================================== 
     103CONTAINS 
     104   SUBROUTINE ini_trc 
     105       
     106   END SUBROUTINE ini_trc 
    104107#endif 
    105108 
  • trunk/NEMO/TOP_SRC/oce_trc.F90

    r281 r335  
    4141      nwrite   =>   nwrite,  & !: frequency of OUTPUT file 
    4242      nstock   =>   nstock,  & !: frequency of restart file 
     43      nprint   =>   nprint,  & !: level of print (0 no print) 
    4344      lwp      =>   lwp   ,  & !: boolean term for mpp output 
    44       ln_ctl   =>   ln_ctl ,  & !: = ln_ctl.AND.lwp (print control on the 1st proc) 
    45       nictle   =>   nictle ,  & !: = max i indice to make the control SUM 
    46       njctle   =>   njctle ,  & !: = max j indice to make the control SUM 
     45      ln_ctl   =>   ln_ctl,  & !: = ln_ctl.AND.lwp (print control on the 1st proc) 
     46      nictls   =>   nictls,  & !: Start i indice for the SUM control 
     47      nictle   =>   nictle,  & !: End   i indice for the SUM control 
     48      njctls   =>   njctls,  & !: Start j indice for the SUM control 
     49      njctle   =>   njctle,  & !: End   j indice for the SUM control 
     50      isplt    =>   isplt ,  & !: number of processors following i 
     51      jsplt    =>   jsplt ,  & !: number of processors following j 
     52      ijsplt   =>   ijsplt,  & !: nb of local domain = nb of processors 
    4753      numout   =>   numout     !: logical unit for output print 
     54 
    4855 
    4956   !! run controm    
     
    7380      nimpp    =>   nimpp ,  & !: i index for mpp-subdomain left bottom 
    7481      njmpp    =>   njmpp ,  & !: j index for mpp-subdomain left bottom 
     82      nproc    =>   nproc ,  & !: number for local processor 
     83      narea    =>   narea ,  & !: number for local area 
    7584      mig      =>   mig   ,  & !: local  ==> global  domain i-indice 
    7685      mjg      =>   mjg   ,  & !: local  ==> global  domain i-indice 
     
    7988      mj0      =>   mj0   ,  & !: global ==> local domain j-indice  
    8089      mj1      =>   mj1        !: (mj0=1 and mj1=0 if the global indice is not in the local domain) 
    81        
     90  
     91   USE dom_oce , ONLY :       &  
     92      nimppt   => nimppt  ,  & !:i-indexes for each processor 
     93      njmppt   => njmppt  ,  & !:j-indexes for each processor 
     94      ibonit   => ibonit  ,  & !:i-processor neighbour existence 
     95      ibonjt   => ibonjt  ,  & !:j- processor neighbour existence  
     96      nlcit    => nlcit   ,  & !:dimensions of every i-subdomain 
     97      nlcjt    => nlcjt   ,  & !:dimensions of every j-subdomain 
     98      nldit    => nldit   ,  & !:first indoor index for each i-domain  
     99      nleit    => nleit   ,  & !:last indoor index for each i-domain  
     100      nldjt    => nldjt   ,  & !:first indoor index for each j-domain  
     101      nlejt    => nlejt        !:last indoor index for each j-domain  
     102 
     103     
    82104      !! horizontal curvilinear coordinate and scale factors 
    83105   USE dom_oce , ONLY :            &     
     
    198220      tn      =>    tn    ,  & !: pot. temperature (celsius) 
    199221      sn      =>    sn    ,  & !: salinity (psu) 
    200       rhop    =>    rhop       !: potential volumic mass (kg m-3)  
     222      rhop    =>    rhop  ,  & !: potential volumic mass (kg m-3)  
     223      rhd     =>    rhd        !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units) 
     224 
     225#if defined key_trc_diatrd 
     226   USE oce , ONLY :          & 
     227      hdivn   =>    hdivn      !: horizontal divergence (1/s) 
     228#endif 
    201229 
    202230#if defined key_flx_bulk_monthly || defined key_flx_bulk_daily 
     
    214242   USE trabbl , ONLY :           &       
    215243      atrbbl   =>   atrbbl     !: lateral coeff. for bottom boundary layer scheme (m2/s) 
     244#  if defined key_off_tra 
     245   USE trabbl, ONLY :            & 
     246      bblx   => bblx,       & 
     247      bbly   => bbly 
     248#  endif 
    216249#endif 
    217250 
     
    262295   USE zdfmxl , ONLY :             &     
    263296      hmld    =>   hmld   ,  & !: mixing layer depth (turbocline) 
    264       hmlp    =>   hmlp        !: mixed layer depth  (rho=rho0+zdcrit) (m) 
     297      hmlp    =>   hmlp   ,  & !: mixed layer depth  (rho=rho0+zdcrit) (m) 
     298      hmlpt   =>   hmlpt       !: mixed layer depth at t-points (m) 
    265299 
    266300   USE ldfslp , ONLY :              &  
  • trunk/NEMO/TOP_SRC/par_trc_trp.F90

    r274 r335  
    88   !!---------------------------------------------------------------------- 
    99   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    10    !! $Header$ 
    11    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    1210   !!---------------------------------------------------------------------- 
    1311#if defined key_passivetrc 
     
    2321   !! jpdia3d : additional 3d output 
    2422 
    25 #if defined key_trc_npzd 
    26    !!--------------------------------------------------------------------- 
    27    !!   'key_trc_npzd'   :                    NPZD Source Minus Sink model 
    28    !!--------------------------------------------------------------------- 
    29    INTEGER, PUBLIC, PARAMETER :: jptra   = 4 
    30 #if defined key_trc_diaadd 
    31    INTEGER, PUBLIC, PARAMETER :: jpdia2d = 1 
    32    INTEGER, PUBLIC, PARAMETER :: jpdia3d = 1 
    33 #endif 
    34 #elif defined key_trc_lobster1 
     23#if defined key_trc_lobster1 
    3524   !!--------------------------------------------------------------------- 
    3625   !!   'key_trc_lobster1'   :            LOBSTER1 Source Minus Sink model 
    3726   !!--------------------------------------------------------------------- 
    3827   INTEGER, PUBLIC, PARAMETER :: jptra   = 6 
    39 #if defined key_trc_diaadd 
    40    INTEGER, PUBLIC, PARAMETER :: jpdia2d = 18 
     28#  if defined key_trc_diaadd 
     29   INTEGER, PUBLIC, PARAMETER :: jpdia2d = 19 
    4130   INTEGER, PUBLIC, PARAMETER :: jpdia3d = 3 
    42 #endif 
    43 #elif defined key_trc_hamocc3 
    44 #  if defined key_trc_p3zd 
    45 #       if defined key_trc_biohamocc13 
     31#  endif 
     32#elif defined key_cfc 
    4633   !!--------------------------------------------------------------------- 
    47    !!   'key_trc_p3zd && key_trc_biohamocc13' P3ZD Source Minus Sink model 
     34   !!   'key_cfc'   :                      CFC Source Minus Sink model 
    4835   !!--------------------------------------------------------------------- 
    49    INTEGER, PUBLIC, PARAMETER :: jptra   = 11 
    50 #if defined key_trc_diaadd 
     36   INTEGER, PUBLIC, PARAMETER :: jptra   = 2 
     37#  if defined key_trc_diaadd 
    5138   INTEGER, PUBLIC, PARAMETER :: jpdia2d = 1 
    5239   INTEGER, PUBLIC, PARAMETER :: jpdia3d = 1 
    53 #endif 
    54    !!--------------------------------------------------------------------- 
    55    !!   'key_trc_p3zd'   :                    P3ZD Source Minus Sink model 
    56    !!--------------------------------------------------------------------- 
    57 #       else 
    58    INTEGER, PUBLIC, PARAMETER :: jptra   = 10 
    59    INTEGER, PUBLIC, PARAMETER :: jpdia2d = 1 
    60    INTEGER, PUBLIC, PARAMETER :: jpdia3d = 1 
    61 #       endif 
    62 #   else 
    63    !!--------------------------------------------------------------------- 
    64    !!  'key_trc_hamocc3 && key_trc_biohamocc13' HAMMOCC Source Minus Sink model 
    65    !!--------------------------------------------------------------------- 
    66 #       if defined key_trc_biohamocc13 
    67    INTEGER, PUBLIC, PARAMETER :: jptra   = 8 
    68 #if defined key_trc_diaadd 
    69    INTEGER, PUBLIC, PARAMETER :: jpdia2d = 1 
    70    INTEGER, PUBLIC, PARAMETER :: jpdia3d = 1 
    71 #endif 
    72 #       else 
    73    !!--------------------------------------------------------------------- 
    74    !!  'key_trc_hamocc3 ' HAMMOCC Source Minus Sink model 
    75    !!--------------------------------------------------------------------- 
    76    INTEGER, PUBLIC, PARAMETER :: jptra   = 7 
    77 #if defined key_trc_diaadd 
    78    INTEGER, PUBLIC, PARAMETER :: jpdia2d = 1 
    79    INTEGER, PUBLIC, PARAMETER :: jpdia3d = 1 
    80 #endif 
    81 #       endif 
    82 #   endif 
    83 #elif defined key_cfc 
    84    !!--------------------------------------------------------------------- 
    85    !!   'key_trc_cfc'   :                      CFC Source Minus Sink model 
    86    !!--------------------------------------------------------------------- 
    87    INTEGER, PUBLIC, PARAMETER :: jptra   = 2 
    88 #if defined key_trc_diaadd 
    89    INTEGER, PUBLIC, PARAMETER :: jpdia2d = 1 
    90    INTEGER, PUBLIC, PARAMETER :: jpdia3d = 1 
    91 #endif 
    92 #elif defined key_gosac 
    93    !!--------------------------------------------------------------------- 
    94    !!   'key_trc_gosac'   :                  GOSAC Source Minus Sink model 
    95    !!--------------------------------------------------------------------- 
    96    INTEGER, PUBLIC, PARAMETER :: jptra   = 2 
    97 #if defined key_trc_diaadd 
    98    INTEGER, PUBLIC, PARAMETER :: jpdia2d = 1 
    99    INTEGER, PUBLIC, PARAMETER :: jpdia3d = 1 
    100 #endif 
    101 #elif defined key_trc_age 
    102    !!--------------------------------------------------------------------- 
    103    !!   'key_trc_age'   :                    AGE Source Minus Sink model 
    104    !!--------------------------------------------------------------------- 
    105    INTEGER, PUBLIC, PARAMETER :: jptra   = 2 
    106 #if defined key_trc_diaadd 
    107    INTEGER, PUBLIC, PARAMETER :: jpdia2d = 1 
    108    INTEGER, PUBLIC, PARAMETER :: jpdia3d = 1 
    109 #endif 
     40#  endif 
    11041#elif defined key_trc_pisces 
    11142   !!--------------------------------------------------------------------- 
     
    11344   !!--------------------------------------------------------------------- 
    11445   INTEGER, PUBLIC, PARAMETER :: jptra   = 24 
    115 #if defined key_trc_diaadd 
     46#  if defined key_trc_diaadd 
    11647   INTEGER, PUBLIC, PARAMETER :: jpdia2d = 13 
    11748   INTEGER, PUBLIC, PARAMETER :: jpdia3d = 11 
    118 #endif 
     49#  endif 
    11950#else 
    12051   !!--------------------------------------------------------------------- 
  • trunk/NEMO/TOP_SRC/trc.F90

    r274 r335  
    1111   !!---------------------------------------------------------------------- 
    1212   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    13    !! $Header$ 
    14    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    1513   !!---------------------------------------------------------------------- 
    1614#if defined key_passivetrc 
     
    193191#endif 
    194192 
    195    !! Contral/debugging 
    196    !! ----------------- 
    197    REAL(wp), PUBLIC, DIMENSION(jptra) ::  &  
    198       tra_ctl         !!: sum of tra trend 
    199193#else 
    200194   !!====================================================================== 
  • trunk/NEMO/TOP_SRC/trcctl.F90

    r274 r335  
    1010   !!========================================================================= 
    1111   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    12    !! $Header$ 
    13    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    1412   !!---------------------------------------------------------------------- 
    15       !!---------------------------------------------------------------------- 
    16       !! * Modules used 
    17       !! ============== 
    18       USE oce_trc 
    19       USE trc 
    20       USE sms 
    21       USE trctrp_ctl 
     13#if defined key_passivetrc 
     14   !!---------------------------------------------------------------------- 
     15   !! * Modules used 
     16   !! ============== 
     17   USE oce_trc 
     18   USE trc 
     19   USE sms 
     20   USE trctrp_ctl 
    2221 
    23      IMPLICIT NONE 
    24      PRIVATE 
     22   IMPLICIT NONE 
     23   PRIVATE 
    2524 
    26     !! * Accessibility 
    27     PUBLIC trc_ctl 
     25   !! * Accessibility 
     26   PUBLIC trc_ctl 
    2827 
    2928CONTAINS 
    3029 
    31 #if defined key_passivetrc 
     30   SUBROUTINE trc_ctl 
     31      !!=========================================================================================== 
     32      !! 
     33      !! 
     34      !!                       ROUTINE trcctl 
     35      !!                     ****************** 
     36      !! 
     37      !!      we use IF/ENDIF inside #IF defined option-cpp 
     38      !!      FILE name must not exceed 21 characters 
     39      !!       
     40      !!=========================================================================================== 
     41       
     42      !!---------------------------------------------------------------------- 
     43      !! local declarations 
     44      !! ================== 
     45      INTEGER  :: istop, jn 
     46       
     47      !!--------------------------------------------------------------------- 
     48      !!  OPA.9    03/2005   
     49      !!--------------------------------------------------------------------- 
    3250 
    33 SUBROUTINE trc_ctl 
    34    !!=========================================================================================== 
    35    !! 
    36    !! 
    37    !!                       ROUTINE trcctl 
    38    !!                     ****************** 
    39    !! 
    40    !!      we use IF/ENDIF inside #IF defined option-cpp 
    41    !!      FILE name must not exceed 21 characters 
    42    !!       
    43    !!=========================================================================================== 
    44       
    45    !!---------------------------------------------------------------------- 
    46    !! local declarations 
    47    !! ================== 
    48    INTEGER  :: istop, jn 
    49  
    50 !!!--------------------------------------------------------------------- 
    51 !!!  OPA.9    03/2005   
    52 !!!--------------------------------------------------------------------- 
    53  
    54 ! 0. Parameter 
    55 ! ------------ 
     51      ! 0. Parameter 
     52      ! ------------ 
    5653      istop = 0 
    5754 
    58 ! 1. LOGICAL UNIT initialization for specifi! files for passive tracer 
    59 ! -------------------------------------------------------------------- 
    60 !     nutwrs : OUTPUT for passive tracer restart UNIT (always used) 
    61 !     nutrst : restart FILE  INPUT  UNIT (lrsttr=.TRUE.) 
    62 !     nutini(jptra) : UNIT for initial FILE for tracer 
     55      ! 1. LOGICAL UNIT initialization for specifi! files for passive tracer 
     56      ! -------------------------------------------------------------------- 
     57      !     nutwrs : OUTPUT for passive tracer restart UNIT (always used) 
     58      !     nutrst : restart FILE  INPUT  UNIT (lrsttr=.TRUE.) 
     59      !     nutini(jptra) : UNIT for initial FILE for tracer 
    6360 
    6461      nutwrs = 72 
    6562      nutrst = 73 
    6663 
    67 ! 2. restart for passive tracer (input) 
    68 ! ----------------------------- 
     64      ! 2. restart for passive tracer (input) 
     65      ! ----------------------------- 
    6966 
    7067      IF(lwp) WRITE(numout,*) ' ' 
     
    7875 
    7976      IF(lrsttr) THEN 
    80           IF(lwp) WRITE(numout,*) ' READ a restart FILE for passive tracer' 
    81           IF(lwp) WRITE(numout,*) ' ' 
     77         IF(lwp) WRITE(numout,*) ' READ a restart FILE for passive tracer' 
     78         IF(lwp) WRITE(numout,*) ' ' 
    8279      ELSE 
    83           IF(lwp) WRITE(numout,*) ' no restart FILE' 
    84           IF(lwp) WRITE(numout,*) ' ' 
     80         IF(lwp) WRITE(numout,*) ' no restart FILE' 
     81         IF(lwp) WRITE(numout,*) ' ' 
    8582 
    86 ! 3. OPEN FILES for initial tracer value 
    87 ! -------------------------------------- 
    88           DO jn=1,jptra 
     83         ! 3. OPEN FILES for initial tracer value 
     84         ! -------------------------------------- 
     85         DO jn=1,jptra 
    8986 
    90 ! OPEN input FILE only IF lutini(jn) is true 
    91 ! ------------------------------------------ 
     87            ! OPEN input FILE only IF lutini(jn) is true 
     88            ! ------------------------------------------ 
    9289            IF (lutini(jn)) THEN   
    9390 
    94 ! prepare input FILE name a 
    95 ! -------------------------                         
    96                 IF(lwp) WRITE(numout,*)                          & 
    97                         ' READ an initial FILE :',               & 
    98                         ' for passive tracer number :',jn        & 
    99                         ,' traceur : ',ctrcnm(jn)  
    100                 IF(lwp) WRITE(numout,*) ' ' 
    101             END IF  
    102           END DO    
     91               ! prepare input FILE name a 
     92               ! -------------------------                         
     93               IF(lwp) WRITE(numout,*)  & 
     94                  ' READ an initial FILE  for passive tracer number :',jn        & 
     95                  ,' traceur : ',ctrcnm(jn)  
     96               IF(lwp) WRITE(numout,*) ' ' 
     97            END IF 
     98         END DO 
    10399      ENDIF 
    104100 
    105 ! 4. Don't USE non penetrative convective mixing option 
    106 !     it's not implemented for passive tracer 
    107 ! ----------------------------------------------------- 
     101      ! 4. Don't USE non penetrative convective mixing option 
     102      !     it's not implemented for passive tracer 
     103      ! ----------------------------------------------------- 
    108104 
    109105      IF( ln_zdfnpc) THEN 
    110         IF(lwp) WRITE (numout,*) ' ===>>>> : w a r n i n g ' 
    111         IF(lwp) WRITE (numout,*) ' =======   ============= ' 
    112         IF(lwp) WRITE (numout,*) ' STOP, this sheme is not implemented' 
    113         IF(lwp) WRITE (numout,*) ' in passive tracer model:' 
    114         IF(lwp) WRITE (numout,*) ' non penetrative convect. mixing scheme' 
    115         istop = istop + 1 
     106         IF(lwp) WRITE (numout,*) ' ===>>>> : w a r n i n g ' 
     107         IF(lwp) WRITE (numout,*) ' =======   ============= ' 
     108         IF(lwp) WRITE (numout,*) ' STOP, this sheme is not implemented' 
     109         IF(lwp) WRITE (numout,*) ' in passive tracer model:' 
     110         IF(lwp) WRITE (numout,*) ' non penetrative convect. mixing scheme' 
     111         istop = istop + 1 
    116112      ENDIF 
    117113 
    118 ! 5. transport scheme option 
    119 ! -------------------------- 
     114      ! 5. transport scheme option 
     115      ! -------------------------- 
    120116 
    121117      IF(lwp) WRITE(numout,*) '  ' 
    122118      CALL trc_trp_ctl 
    123       IF(lwp) WRITE(numout,*) '  ' 
    124119 
    125 ! 6. SMS model 
    126 ! --------------------------------------------- 
     120 
     121      ! 6. SMS model 
     122      ! --------------------------------------------- 
    127123 
    128124      IF(lwp) WRITE(numout,*) '  ' 
     
    130126      IF(lwp) WRITE(numout,*) '  ' 
    131127 
    132 #if defined key_trc_npzd 
    133       #include "trcctl.npzd.h90"  
    134 #elif defined key_trc_lobster1 
    135       #include "trcctl.lobster1.h90" 
     128 
     129#if defined key_trc_lobster1 
     130#   include "trcctl.lobster1.h90" 
    136131#elif defined key_trc_pisces 
    137       #include "trcctl.pisces.h90" 
    138 #elif defined key_trc_hamocc3 
    139 #   if defined key_trc_p3zd 
    140       #include "trcctl.p3zd.h90" 
    141 #   else 
    142       #include "trcctl.hamocc3.h90" 
    143 #   endif 
     132#   include "trcctl.pisces.h90" 
     133#elif defined key_cfc 
     134#   include "trcctl.cfc.h90" 
    144135#else 
    145136 
     
    148139#endif 
    149140 
    150 ! E r r o r  control 
    151 ! ------------------ 
     141      ! E r r o r  control 
     142      ! ------------------ 
    152143 
    153144      IF ( istop > 0  ) THEN 
    154           IF(lwp)WRITE(numout,*) 
    155           IF(lwp)WRITE(numout,*) istop,' E R R O R found : we stop' 
    156           IF(lwp)WRITE(numout,*) '**************************' 
    157           IF(lwp)WRITE(numout,*) 
    158           STOP 'trcctl' 
     145         IF(lwp)WRITE(numout,*) 
     146         IF(lwp)WRITE(numout,*) istop,' E R R O R found : we stop' 
     147         IF(lwp)WRITE(numout,*) '**************************' 
     148         IF(lwp)WRITE(numout,*) 
     149         STOP 'trcctl' 
    159150      ENDIF 
    160151 
    161 END SUBROUTINE trc_ctl  
     152   END SUBROUTINE trc_ctl 
    162153 
    163154#else 
     155   !!====================================================================== 
     156   !!  Empty module : No passive tracer 
     157   !!====================================================================== 
     158CONTAINS 
     159   SUBROUTINE trc_ctl 
    164160 
    165 SUBROUTINE trc_ctl 
    166   !!============== 
    167          ! no passive tracers 
    168   !!============== 
    169 END SUBROUTINE trc_ctl 
    170  
     161   END SUBROUTINE trc_ctl 
     162    
    171163#endif 
    172164 
  • trunk/NEMO/TOP_SRC/trcdia.F90

    r274 r335  
    77   !!========================================================================== 
    88   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    9    !! $Header$ 
    10    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    119   !!---------------------------------------------------------------------- 
    12       !!---------------------------------------------------------------------- 
    13       !! * Modules used 
    14       !! ============== 
     10#if defined key_passivetrc 
     11   !!---------------------------------------------------------------------- 
     12   !! * Modules used 
     13  
    1514   USE trcdit 
    1615 
     
    2524CONTAINS 
    2625 
    27 SUBROUTINE trc_dia(kt,kindic)   
    28    !!=========================================================================================== 
    29    !! 
    30    !!                       ROUTINE trcdii_wr 
    31    !!=========================================================================================== 
     26   SUBROUTINE trc_dia(kt,kindic)   
     27      !!=========================================================================================== 
     28      !! 
     29      !!                       ROUTINE trcdii_wr 
     30      !!=========================================================================================== 
    3231 
    33        INTEGER, INTENT( in ) :: kt, kindic 
     32      INTEGER, INTENT( in ) :: kt, kindic 
    3433 
    35    ! outputs for tracer concentration 
    36    ! --------------------------------  
     34      ! outputs for tracer concentration 
     35      ! --------------------------------  
    3736 
    3837      CALL trcdit_wr(kt,kindic) 
     
    4039#if defined key_trc_diatrd 
    4140 
    42    ! outputs for dynamical trends 
    43    ! ---------------------------- 
     41      ! outputs for dynamical trends 
     42      ! ---------------------------- 
    4443 
    4544      CALL trcdid_wr(kt,kindic) 
     
    4847#if defined key_trc_diaadd 
    4948 
    50    ! outputs for additional arrays 
    51    ! ----------------------------- 
     49      ! outputs for additional arrays 
     50      ! ----------------------------- 
    5251 
    5352      CALL trcdii_wr(kt,kindic) 
     
    5655#if defined key_trc_diabio 
    5756 
    58    ! outputs for biological trends 
    59    ! ----------------------------- 
     57      ! outputs for biological trends 
     58      ! ----------------------------- 
    6059 
    6160      CALL trcdib_wr(kt,kindic) 
     
    6362#endif 
    6463 
    65       END SUBROUTINE trc_dia 
     64   END SUBROUTINE trc_dia 
    6665 
    67 END MODULE trcdia  
     66#else 
     67   !!====================================================================== 
     68   !!  Empty module : No passive tracer 
     69   !!====================================================================== 
     70CONTAINS 
     71   SUBROUTINE trc_dia 
     72       
     73   END SUBROUTINE trc_dia    
     74#endif 
     75 
     76END MODULE trcdia 
  • trunk/NEMO/TOP_SRC/trcdit.F90

    r274 r335  
    11MODULE trcdit 
    2  
    32   !!---------------------------------------------------------------------- 
    43   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    5    !! $Header$ 
    6    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    74   !!---------------------------------------------------------------------- 
    8       !!---------------------------------------------------------------------- 
    9       !! * Modules used 
    10       !! ============== 
     5   !! * Modules used 
     6   !! ============== 
    117   USE oce_trc 
    128   USE trc 
     
    4945      nitb     ,   &  !!:  id for additional array output FILE 
    5046      ndepitb  ,   &  !!:  id for depth mesh 
    51       nhoritb  ,   &  !!:  id for horizontal mesh 
     47      nhoritb         !!:  id for horizontal mesh 
    5248#    endif 
    5349 
     
    447443                  cltrau=ctrcun(jn) ! UNIT for tracer /trends 
    448444                  CALL histdef(nit6(jn), cltra, cltral, cltrau, jpi,jpj,  & 
    449                   &   nhorit6(jn), ipk, 1, ipk,  ndepit6(jn), 32, clop, 
     445                  &   nhorit6(jn), ipk, 1, ipk,  ndepit6(jn), 32, clop ,  & 
    450446                  &   zsto,zout) 
    451447                END DO 
     
    809805      !! Modules used 
    810806      USE ioipsl 
     807      USE sms 
    811808 
    812809      !! * Arguments 
    813810      INTEGER, INTENT( in ) ::   kt,kindic         ! ocean time-step 
    814811 
    815       INTEGER :: ji, jj, jk, jn, jl 
     812      INTEGER :: ji, jj, jk, jn 
    816813      LOGICAL :: ll_print = .FALSE. 
    817814 
     
    821818 
    822819      REAL(wp) :: zsto, zout, zdt 
    823       REAL(wp) :: zsec 
    824820      INTEGER  :: iimi, iima, ijmi, ijma, ipk, it 
    825821 
     
    848844 
    849845      ! Define indices of the horizontal output zoom and vertical limit storage      iimi = 1      ;      iima = jpi 
     846      iimi = 1      ;      iima = jpi 
    850847      ijmi = 1      ;      ijma = jpj 
    851848      ipk = jpk 
     
    895892! SOME diagnostics to DO first time 
    896893 
    897       if defined key_trc_npzd || defined key_trc_lobster1 
     894if defined key_trc_lobster1 
    898895 
    899896! initial total nitrogen 
     
    947944      DO jn=1,jpdiabio 
    948945         cltra=ctrbio(jn)  ! short title for biological diagnostic 
    949          CALL histwrite(nitb, cltra, zt, trbio(:,:,:,jn), ndimt50,   & 
    950          &    ndext50) 
     946         CALL histwrite(nitb, cltra, kt, trbio(:,:,:,jn), ndimt50,ndext50) 
    951947      END DO 
    952948 
    953    if defined key_trc_npzd || defined key_trc_lobster1 
     949if defined key_trc_lobster1 
    954950 
    955951      IF( MOD(kt-nit000+1,nwritebio) == 0) THEN 
  • trunk/NEMO/TOP_SRC/trcdta.F90

    r274 r335  
    55   !!===================================================================== 
    66   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    7    !! $Header$ 
    8    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    97   !!---------------------------------------------------------------------- 
    108 
     
    1614   !!---------------------------------------------------------------------- 
    1715   !! * Modules used 
    18       USE oce_trc 
    19       USE trc 
    20       USE par_sms 
    21       USE lib_print 
     16   USE oce_trc 
     17   USE trc 
     18   USE par_sms 
     19   USE lib_print 
    2220 
    2321   IMPLICIT NONE 
     
    5149   !!   Default case                                            NetCDF file 
    5250   !!---------------------------------------------------------------------- 
    53  
     51    
    5452   SUBROUTINE dta_trc( kt ) 
    55 !!---------------------------------------------------------------------- 
    56 !!                   ***  ROUTINE dta_trc  *** 
    57 !! 
    58 !! ** Purpose :   Reads passive tracer data (Levitus monthly data) 
    59 !! 
    60 !! ** Method  :   Read on unit numtr the interpolated tracer concentra- 
    61 !!      tion onto the global grid. Data begin at january.  
    62 !!      The value is centered at the middle of month.  
    63 !!      In the opa model, kt=1 agree with january 1.  
    64 !!      At each time step, a linear interpolation is applied between  
    65 !!      two monthly values. 
    66 !! 
    67 !! History : 
    68 !!   8.2  !  02-04  (O. Aumont)  Original code 
    69 !!   9.0  !  04-03  (C. Ethe)     
    70 !!   9.0  !  05-03  (O. Aumont and A. El Moussaoui) F90 
    71 !!---------------------------------------------------------------------- 
    72 !! * Modules used 
     53      !!---------------------------------------------------------------------- 
     54      !!                   ***  ROUTINE dta_trc  *** 
     55      !! 
     56      !! ** Purpose :   Reads passive tracer data (Levitus monthly data) 
     57      !! 
     58      !! ** Method  :   Read on unit numtr the interpolated tracer concentra- 
     59      !!      tion onto the global grid. Data begin at january.  
     60      !!      The value is centered at the middle of month.  
     61      !!      In the opa model, kt=1 agree with january 1.  
     62      !!      At each time step, a linear interpolation is applied between  
     63      !!      two monthly values. 
     64      !! 
     65      !! History : 
     66      !!   8.2  !  02-04  (O. Aumont)  Original code 
     67      !!   9.0  !  04-03  (C. Ethe)     
     68      !!   9.0  !  05-03  (O. Aumont and A. El Moussaoui) F90 
     69      !!---------------------------------------------------------------------- 
     70      !! * Modules used 
    7371      USE ioipsl 
    7472 
    75 !! * Arguments 
     73      !! * Arguments 
    7674      !! * Arguments 
    7775      INTEGER, INTENT( in ) ::   kt     ! ocean time-step 
    7876 
    79 !! * Local declarations 
     77      !! * Local declarations 
    8078      INTEGER :: ji, jj, jn, jl  
    8179      INTEGER, PARAMETER ::  & 
     
    9088      REAL(wp), DIMENSION (jpk) ::  zlev 
    9189      REAL(wp) :: zdate0, zxy, zl 
    92 !!---------------------------------------------------------------------- 
     90      !!---------------------------------------------------------------------- 
    9391 
    9492      DO jn = 1, jptra 
    9593 
    96         IF( lutini(jn) ) THEN  
    97  
    98           IF ( kt == nit000 ) THEN 
    99 !! 3D tracer data 
    100             IF(lwp)WRITE(numout,*) 
    101             IF(lwp)WRITE(numout,*) ' trcdta: reading tracer'  
    102             IF(lwp)WRITE(numout,*) ' data file ', jn 
    103             IF(lwp)WRITE(numout,*) 
    104             nlectr(jn) = 0 
    105           ENDIF 
    106 ! Initialization 
    107         iman = jpmois 
    108         i15  = nday/16 
    109         imois = nmonth + i15 -1 
    110         IF( imois == 0 ) imois = iman 
    111         itime = jpmois 
    112         ipi = jpiglo 
    113         ipj = jpjglo 
    114  
    115 ! First call kt=nit000 
    116 ! -------------------- 
    117  
    118         IF ( kt == nit000 .AND. nlectr(jn) == 0 ) THEN 
    119           ntrc1(jn) = 0 
    120           IF(lwp) THEN 
    121             WRITE(numout,*) 
    122             WRITE(numout,*) ' Tracer monthly fields'  
    123             WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~' 
    124             WRITE(numout,*) ' NetCDF FORMAT' 
    125             WRITE(numout,*) 
    126           ENDIF 
    127  
    128 ! open file  
    129  
    130           clname(jn) = 'LEVITUS_'//ctrcnm(jn) 
    131           CALL flinopen(TRIM(clname(jn)),mig(1),nlci,mjg(1),nlcj,    & 
    132                         .FALSE.,ipi,ipj,ipk,zlon,zlat,zlev,itime,    & 
    133                         istep,zdate0,rdt,numtr(jn)               ) 
    134  
    135 ! title, dimensions and tests 
    136           IF( itime /= jpmois ) THEN 
     94         IF( lutini(jn) ) THEN  
     95 
     96            IF ( kt == nit000 ) THEN 
     97               !! 3D tracer data 
     98               IF(lwp)WRITE(numout,*) 
     99               IF(lwp)WRITE(numout,*) ' trcdta: reading tracer'  
     100               IF(lwp)WRITE(numout,*) ' data file ', jn 
     101               IF(lwp)WRITE(numout,*) 
     102               nlectr(jn) = 0 
     103            ENDIF 
     104            ! Initialization 
     105            iman = jpmois 
     106            i15  = nday/16 
     107            imois = nmonth + i15 -1 
     108            IF( imois == 0 ) imois = iman 
     109            itime = jpmois 
     110            ipi = jpiglo 
     111            ipj = jpjglo 
     112 
     113            ! First call kt=nit000 
     114            ! -------------------- 
     115 
     116            IF ( kt == nit000 .AND. nlectr(jn) == 0 ) THEN 
     117               ntrc1(jn) = 0 
     118               IF(lwp) THEN 
     119                  WRITE(numout,*) 
     120                  WRITE(numout,*) ' Tracer monthly fields'  
     121                  WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~' 
     122                  WRITE(numout,*) ' NetCDF FORMAT' 
     123                  WRITE(numout,*) 
     124               ENDIF 
     125 
     126               ! open file  
     127 
     128               clname(jn) = 'LEVITUS_'//ctrcnm(jn) 
     129               CALL flinopen(TRIM(clname(jn)),mig(1),nlci,mjg(1),nlcj,    & 
     130                  .FALSE.,ipi,ipj,ipk,zlon,zlat,zlev,itime,    & 
     131                  istep,zdate0,rdt,numtr(jn)               ) 
     132 
     133               ! title, dimensions and tests 
     134               IF( itime /= jpmois ) THEN 
     135                  IF(lwp) THEN 
     136                     WRITE(numout,*) ' ' 
     137                     WRITE(numout,*) 'problem with time coordinates' 
     138                     WRITE(numout,*) ' itime ',itime,' jpmois ',jpmois 
     139                  ENDIF 
     140                  STOP 'trc_dta' 
     141               ENDIF 
     142 
     143               IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 
     144                  IF(lwp) THEN 
     145                     WRITE(numout,*) ' ' 
     146                     WRITE(numout,*) 'problem with dimensions' 
     147                     WRITE(numout,*) ' ipi ',ipi,' jpidta ',jpidta 
     148                     WRITE(numout,*) ' ipj ',ipj,' jpjdta ',jpjdta 
     149                     WRITE(numout,*) ' ipk ',ipk,' jpk ',jpk 
     150                  ENDIF 
     151                  STOP 'trc_dta' 
     152               ENDIF 
     153               IF(lwp)WRITE(numout,*) itime,istep,zdate0,rdt,numtr(jn) 
     154               trdta(:,:,:,jn) = 0. 
     155 
     156            ENDIF 
     157 
     158 
     159            ! Read montly file 
     160            IF( ( kt == nit000 .AND. nlectr(jn) == 0)   &  
     161               .OR. imois /= ntrc1(jn) ) THEN 
     162               nlectr(jn) = 1 
     163 
     164               ! Calendar computation 
     165 
     166               ! ntrc1 number of the first file record used in the simulation 
     167               ! ntrc2 number of the last  file record 
     168 
     169               ntrc1(jn) = imois 
     170               ntrc2(jn) = ntrc1(jn) + 1 
     171               ntrc1(jn) = MOD( ntrc1(jn), iman ) 
     172               IF ( ntrc1(jn) == 0 ) ntrc1(jn) = iman 
     173               ntrc2(jn) = MOD( ntrc2(jn), iman ) 
     174               IF ( ntrc2(jn) == 0 ) ntrc2(jn) = iman 
     175               IF(lwp) WRITE(numout,*) 'first record file used ntrc1 ', ntrc1(jn)  
     176               IF(lwp) WRITE(numout,*) 'last  record file used ntrc2 ', ntrc2(jn) 
     177 
     178               ! Read montly passive tracer data Levitus  
     179 
     180               CALL flinget( numtr(jn),ctrcnm(jn),jpidta,jpjdta,jpk,    & 
     181                  jpmois,ntrc1(jn),ntrc1(jn),mig(1),nlci,mjg(1),nlcj,  & 
     182                  tracdta(1:nlci,1:nlcj,1:jpk,jn,1)                  ) 
     183 
     184               CALL flinget( numtr(jn),ctrcnm(jn),jpidta,jpjdta,jpk,     & 
     185                  jpmois,ntrc2(jn),ntrc2(jn),mig(1),nlci,mjg(1),nlcj,   & 
     186                  tracdta(1:nlci,1:nlcj,1:jpk,jn,2)                  ) 
     187 
     188               IF(lwp) THEN 
     189                  WRITE(numout,*) 
     190                  WRITE(numout,*) ' read tracer data ', ctrcnm(jn),' ok' 
     191                  WRITE(numout,*) 
     192               ENDIF 
     193 
     194               ! Apply Mask 
     195               DO jl = 1, 2 
     196                  tracdta(:,:,:  ,jn,jl) = tracdta(:,:,:,jn,jl) * tmask(:,:,:)  
     197                  tracdta(:,:,jpk,jn,jl) = 0. 
     198                  IF( lk_zps ) THEN                ! z-coord. with partial steps 
     199                     DO jj = 1, jpj                ! interpolation of temperature at the last level 
     200                        DO ji = 1, jpi 
     201                           ik = mbathy(ji,jj) - 1 
     202                           IF( ik > 2 ) THEN 
     203                              zl = ( gdept(ik) - fsdept(ji,jj,ik) ) / ( gdept(ik) - gdept(ik-1) ) 
     204                              tracdta(ji,jj,ik,jn,jl) = (1.-zl) * tracdta(ji,jj,ik,jn,jl) + zl * tracdta(ji,jj,ik-1,jn,jl) 
     205                           ENDIF 
     206                        END DO 
     207                     END DO 
     208                  ENDIF 
     209 
     210               END DO 
     211 
     212            ENDIF 
     213 
    137214            IF(lwp) THEN 
    138               WRITE(numout,*) ' ' 
    139               WRITE(numout,*) 'problem with time coordinates' 
    140               WRITE(numout,*) ' itime ',itime,' jpmois ',jpmois 
    141             ENDIF 
    142             STOP 'trc_dta' 
    143           ENDIF 
    144  
    145           IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 
    146             IF(lwp) THEN 
    147               WRITE(numout,*) ' ' 
    148               WRITE(numout,*) 'problem with dimensions' 
    149               WRITE(numout,*) ' ipi ',ipi,' jpidta ',jpidta 
    150               WRITE(numout,*) ' ipj ',ipj,' jpjdta ',jpjdta 
    151               WRITE(numout,*) ' ipk ',ipk,' jpk ',jpk 
    152             ENDIF 
    153             STOP 'trc_dta' 
    154           ENDIF 
    155           IF(lwp)WRITE(numout,*) itime,istep,zdate0,rdt,numtr(jn) 
    156           trdta(:,:,:,jn) = 0. 
    157  
    158         ENDIF 
    159  
    160  
    161 ! Read montly file 
    162         IF( ( kt == nit000 .AND. nlectr(jn) == 0)   &  
    163               .OR. imois /= ntrc1(jn) ) THEN 
    164            nlectr(jn) = 1 
    165  
    166 ! Calendar computation 
    167  
    168 ! ntrc1 number of the first file record used in the simulation 
    169 ! ntrc2 number of the last  file record 
    170  
    171           ntrc1(jn) = imois 
    172           ntrc2(jn) = ntrc1(jn) + 1 
    173           ntrc1(jn) = MOD( ntrc1(jn), iman ) 
    174           IF ( ntrc1(jn) == 0 ) ntrc1(jn) = iman 
    175           ntrc2(jn) = MOD( ntrc2(jn), iman ) 
    176           IF ( ntrc2(jn) == 0 ) ntrc2(jn) = iman 
    177           IF(lwp) WRITE(numout,*) 'first record file used ntrc1 ', ntrc1(jn)  
    178           IF(lwp) WRITE(numout,*) 'last  record file used ntrc2 ', ntrc2(jn) 
    179  
    180 ! Read montly passive tracer data Levitus  
    181  
    182           CALL flinget( numtr(jn),ctrcnm(jn),jpidta,jpjdta,jpk,    & 
    183                jpmois,ntrc1(jn),ntrc1(jn),mig(1),nlci,mjg(1),nlcj,  & 
    184                tracdta(1:nlci,1:nlcj,1:jpk,jn,1)                  ) 
    185  
    186           CALL flinget( numtr(jn),ctrcnm(jn),jpidta,jpjdta,jpk,     & 
    187                jpmois,ntrc2(jn),ntrc2(jn),mig(1),nlci,mjg(1),nlcj,   & 
    188                tracdta(1:nlci,1:nlcj,1:jpk,jn,2)                  ) 
    189  
    190           IF(lwp) THEN 
    191             WRITE(numout,*) 
    192             WRITE(numout,*) ' read tracer data ', ctrcnm(jn),' ok' 
    193             WRITE(numout,*) 
    194           ENDIF 
    195  
    196 ! Apply Mask 
    197           DO jl = 1, 2 
    198             tracdta(:,:,:  ,jn,jl) = tracdta(:,:,:,jn,jl) * tmask(:,:,:)  
    199             tracdta(:,:,jpk,jn,jl) = 0. 
    200             IF( lk_zps ) THEN                ! z-coord. with partial steps 
    201                DO jj = 1, jpj                ! interpolation of temperature at the last level 
    202                   DO ji = 1, jpi 
    203                      ik = mbathy(ji,jj) - 1 
    204                      IF( ik > 2 ) THEN 
    205                         zl = ( gdept(ik) - fsdept(ji,jj,ik) ) / ( gdept(ik) - gdept(ik-1) ) 
    206                         tracdta(ji,jj,ik,jn,jl) = (1.-zl) * tracdta(ji,jj,ik,jn,jl) + zl * tracdta(ji,jj,ik-1,jn,jl) 
    207                      ENDIF 
    208                   END DO 
    209                END DO 
    210             ENDIF 
    211  
    212           END DO 
    213  
    214         ENDIF 
    215  
    216         IF(lwp) THEN 
    217           WRITE(numout,*) ctrcnm(jn), 'Levitus month ', ntrc1(jn),   & 
    218                           ntrc2(jn) 
    219           WRITE(numout,*) 
    220           WRITE(numout,*) ' Levitus month = ', ntrc1(jn),   & 
     215               WRITE(numout,*) ctrcnm(jn), 'Levitus month ', ntrc1(jn),   & 
     216                  ntrc2(jn) 
     217               WRITE(numout,*) 
     218               WRITE(numout,*) ' Levitus month = ', ntrc1(jn),   & 
    221219                  '  level = 1' 
    222           CALL prihre( tracdta(1,1,1,jn,1), jpi, jpj, 1, jpi, 20, 1   & 
     220               CALL prihre( tracdta(1,1,1,jn,1), jpi, jpj, 1, jpi, 20, 1   & 
    223221                  ,jpj, 20, 1., numout ) 
    224           WRITE(numout,*) ' Levitus month = ', ntrc1(jn),    & 
     222               WRITE(numout,*) ' Levitus month = ', ntrc1(jn),    & 
    225223                  '  level = ',jpk/2 
    226           CALL prihre( tracdta(1,1,jpk/2,jn,1), jpi, jpj, 1, jpi,    & 
     224               CALL prihre( tracdta(1,1,jpk/2,jn,1), jpi, jpj, 1, jpi,    & 
    227225                  20, 1, jpj, 20, 1., numout ) 
    228           WRITE(numout,*) ' Levitus month = ',ntrc1(jn)     & 
     226               WRITE(numout,*) ' Levitus month = ',ntrc1(jn)     & 
    229227                  ,'  level = ',jpkm1 
    230           CALL prihre( tracdta(1,1,jpkm1,jn,1), jpi, jpj, 1, jpi,     & 
     228               CALL prihre( tracdta(1,1,jpkm1,jn,1), jpi, jpj, 1, jpi,     & 
    231229                  20, 1, jpj, 20, 1., numout ) 
    232         ENDIF  
    233  
    234 ! At every time step compute temperature data 
    235  
    236         zxy = FLOAT( nday + 15 - 30 * i15 ) / 30. 
    237         trdta(:,:,:,jn)=  ( 1. - zxy ) * tracdta(:,:,:,jn,1)    & 
    238                        +       zxy   * tracdta(:,:,:,jn,2)  
    239     
    240         IF( jn == jpno3) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 7.6E-6 
    241         IF( jn == jpdic) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 1.E-6 
    242         IF( jn == jptal) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 1.E-6 
    243         IF( jn == jpoxy) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 44.6E-6 
    244         IF( jn == jpsil) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 1.E-6 
    245  
    246  
    247       ENDIF 
     230            ENDIF 
     231 
     232            ! At every time step compute temperature data 
     233 
     234            zxy = FLOAT( nday + 15 - 30 * i15 ) / 30. 
     235            trdta(:,:,:,jn)=  ( 1. - zxy ) * tracdta(:,:,:,jn,1)    & 
     236               +       zxy   * tracdta(:,:,:,jn,2)  
     237 
     238            IF( jn == jpno3) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 7.6E-6 
     239            IF( jn == jpdic) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 1.E-6 
     240            IF( jn == jptal) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 1.E-6 
     241            IF( jn == jpoxy) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 44.6E-6 
     242            IF( jn == jpsil) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 1.E-6 
     243 
     244 
     245         ENDIF 
    248246 
    249247      END DO 
  • trunk/NEMO/TOP_SRC/trcdtr.F90

    r274 r335  
    6161!! ==================  
    6262      INTEGER :: ji,jj,jk,jn  
     63#if defined key_trc_pisces 
    6364      REAL(wp) :: alka0,oxyg0,calc0,bioma0,    & 
    64                    silic1,po4,no3,                 & 
    65                    caralk,bicarb,                  & 
    66                    ztraa, ztrab, ztran 
     65                  silic1,po4,no3,caralk,bicarb 
     66#endif 
    6767!!--------------------------------------------------------------------- 
    6868!!  OPA.9  
     
    7676      IF(lwp) WRITE(numout,*) ' ' 
    7777 
    78 #if defined key_trc_hamocc3 
    79       sco2   = 2.15e-3 
    80       alka0  = 2.45e-3 
    81       oxyg0  = 2.e-4 
    82       po4    = 2.1e-6/po4r 
    83       bioma0 = 1.e-8 
    84       silic1 = 85.e-6 
    85       calc0  = 1.e-5 
    86  
    87       trn(:,:,:,jpdic) = sco2 
    88       trn(:,:,:,jptal) = alka0 
    89       trn(:,:,:,jpoxy) = oxyg0 
    90       trn(:,:,:,jppo4) = po4 
    91       trn(:,:,:,jppoc) = bioma0 
    92       trn(:,:,:,jpsil) = silic1 
    93       trn(:,:,:,jpcal) = calc0 
    94 #if defined key_trc_p3zd 
    95       trn(:,:,:,jpphy) = bioma0 
    96       trn(:,:,:,jpzoo) = bioma0 
    97       trn(:,:,:,jpdoc) = bioma0 
    98 #endif 
    99  
    100       DO jk = 1, jpk 
    101         DO jj = 1, jpj 
    102           DO ji = 1, jpi 
    103             caralk = trn(ji,jj,jk,jptal)- 
    104      &                 bor/(1.+1.E-7/akb3(ji,jj,jk)) 
    105            co3(ji,jj,jk) = caralk-trn(ji,jj,jk,jpdic) 
    106            bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) 
    107            hi(ji,jj,jk) = ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk) 
    108           ENDDO 
    109         ENDDO 
    110       ENDDO 
    111  
    112       h2co3(:,:) = 1.e-5 
    113  
    114 !!  initialize Silicate and Calcite in sediments 
    115 !!  -------------------------------------------- 
    116  
    117       sedcal = 0. 
    118       sedsil = 0. 
    119  
    120       IF(lwp) WRITE(numout,*) 'Initialization of P3ZD tracers done' 
    121       IF(lwp) WRITE(numout,*) '-----------------------------------' 
    122  
    123 #elif defined key_cfc 
     78 
     79#if defined key_cfc 
    12480      trn(:,:,:,:)=0.0 
    125 #elif defined key_gosac 
    126       trn(:,:,:,1)=1895.*1.e-6*1028.*tmask(:,:,:) 
    127       trn(:,:,:,2)=0.9*1895.*1.e-6*1028.*tmask(:,:,:) 
    128  
    129 #elif defined key_trc_age 
    130       trn(:,:,:,1)=1. 
    131       trn(:,:,:,2)=0.  
    132  
    133 #elif defined key_trc_lobster1 && (defined key_eel_r6 || defined key_eel_r2) 
    134 ! analytical initialisation used in Levy et al. (2001) 
    135        
    136       DO jk=1,7 
    137         trn(:,:,jk,jpdet)=0.016*tmask(:,:,jk) 
    138         trn(:,:,jk,jpzoo)=0.018*tmask(:,:,jk) 
    139         trn(:,:,jk,jpphy)=0.036*tmask(:,:,jk) 
    140         trn(:,:,jk,jpno3)=1.e-5*tmask(:,:,jk) 
    141         trn(:,:,jk,jpnh4)=0.0005*tmask(:,:,jk) 
    142         trn(:,:,jk,jpdom)=0.017*tmask(:,:,jk) 
    143       END DO 
    144  
    145       trn(:,:,8,jpdet)=0.020*tmask(:,:,1) 
    146       trn(:,:,8,jpzoo)=0.027*tmask(:,:,1) 
    147       trn(:,:,8,jpphy)=0.041*tmask(:,:,1) 
    148       trn(:,:,8,jpno3)=0.00022*tmask(:,:,1) 
    149       trn(:,:,8,jpnh4)=0.0033*tmask(:,:,1) 
    150       trn(:,:,8,jpdom)=0.021*tmask(:,:,1) 
    151  
    152       trn(:,:,9,jpdet)=0.0556*tmask(:,:,1) 
    153       trn(:,:,9,jpzoo)=0.123*tmask(:,:,1) 
    154       trn(:,:,9,jpphy)=0.122*tmask(:,:,1) 
    155       trn(:,:,9,jpno3)=0.028*tmask(:,:,1) 
    156       trn(:,:,9,jpnh4)=0.024*tmask(:,:,1) 
    157       trn(:,:,9,jpdom)=0.06*tmask(:,:,1) 
    158  
    159       trn(:,:,10,jpdet)=0.025*tmask(:,:,1) 
    160       trn(:,:,10,jpzoo)=0.016*tmask(:,:,1) 
    161       trn(:,:,10,jpphy)=0.029*tmask(:,:,1) 
    162       trn(:,:,10,jpno3)=2.462*tmask(:,:,1) 
    163       trn(:,:,10,jpnh4)=0.04*tmask(:,:,1) 
    164       trn(:,:,10,jpdom)=0.022*tmask(:,:,1) 
    165  
    166       trn(:,:,11,jpdet)=0.0057*tmask(:,:,1) 
    167       trn(:,:,11,jpzoo)=0.0005*tmask(:,:,1) 
    168       trn(:,:,11,jpphy)=0.0006*tmask(:,:,1) 
    169       trn(:,:,11,jpno3)=3.336*tmask(:,:,1) 
    170       trn(:,:,11,jpnh4)=0.005*tmask(:,:,1) 
    171       trn(:,:,11,jpdom)=0.004*tmask(:,:,1) 
    172  
    173       trn(:,:,12,jpdet)=0.002*tmask(:,:,1) 
    174       trn(:,:,12,jpzoo)=1.e-6*tmask(:,:,1) 
    175       trn(:,:,12,jpphy)=5.e-6*tmask(:,:,1) 
    176       trn(:,:,12,jpno3)=4.24*tmask(:,:,1) 
    177       trn(:,:,12,jpnh4)=0.001*tmask(:,:,1) 
    178       trn(:,:,12,jpdom)=3.e-5*tmask(:,:,1) 
    179  
    180       DO jk=13,jpk 
    181         trn(:,:,jk,jpdet)=0.0 
    182         trn(:,:,jk,jpzoo)=0.0 
    183         trn(:,:,jk,jpphy)=0.0 
    184         trn(:,:,jk,jpnh4)=0.0 
    185         trn(:,:,jk,jpdom)=0.0 
    186       END DO 
    187  
    188       trn(:,:,13,jpno3)=5.31*tmask(:,:,13) 
    189       trn(:,:,14,jpno3)=6.73*tmask(:,:,14) 
    190       trn(:,:,15,jpno3)=8.32*tmask(:,:,15) 
    191       trn(:,:,16,jpno3)=10.13*tmask(:,:,16) 
    192       trn(:,:,17,jpno3)=11.95*tmask(:,:,17) 
    193       trn(:,:,18,jpno3)=13.57*tmask(:,:,18) 
    194       trn(:,:,19,jpno3)=15.08*tmask(:,:,19) 
    195       trn(:,:,20,jpno3)=16.41*tmask(:,:,20) 
    196       trn(:,:,21,jpno3)=17.47*tmask(:,:,21) 
    197       trn(:,:,22,jpno3)=18.29*tmask(:,:,22) 
    198       trn(:,:,23,jpno3)=18.88*tmask(:,:,23) 
    199       trn(:,:,24,jpno3)=19.30*tmask(:,:,24) 
    200       trn(:,:,25,jpno3)=19.68*tmask(:,:,25) 
    201       trn(:,:,26,jpno3)=19.91*tmask(:,:,26) 
    202       trn(:,:,27,jpno3)=19.99*tmask(:,:,27) 
    203       trn(:,:,28,jpno3)=20.01*tmask(:,:,28) 
    204       trn(:,:,29,jpno3)=20.01*tmask(:,:,29) 
    205       trn(:,:,30,jpno3)=20.01*tmask(:,:,30) 
    206  
    20781#elif defined key_trc_pisces 
    20882 
     
    265139      xksi(:,:)=2.E-6 
    266140 
    267 !! initialize Silicate and Calcite in sediments 
    268 !! -------------------------------------------- 
     141!! initialize Silicate and Calcite and POC in sediments 
     142!! --------------------------------------------------- 
    269143      sedcal(:,:) = 0. 
    270144      sedsil(:,:) = 0. 
     145      sedpoc(:,:) = 0. 
    271146 
    272147      IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done' 
    273148      IF(lwp) WRITE(numout,*) ' ' 
     149 
     150#elif defined key_trc_lobster1 && ( defined key_eel_r6 || defined key_eel_r2 ) 
     151! analytical initialisation used in Levy et al. (2001) 
     152       
     153      DO jk=1,7 
     154        trn(:,:,jk,jpdet)=0.016*tmask(:,:,jk) 
     155        trn(:,:,jk,jpzoo)=0.018*tmask(:,:,jk) 
     156        trn(:,:,jk,jpphy)=0.036*tmask(:,:,jk) 
     157        trn(:,:,jk,jpno3)=1.e-5*tmask(:,:,jk) 
     158        trn(:,:,jk,jpnh4)=0.0005*tmask(:,:,jk) 
     159        trn(:,:,jk,jpdom)=0.017*tmask(:,:,jk) 
     160      END DO 
     161 
     162      trn(:,:,8,jpdet)=0.020*tmask(:,:,1) 
     163      trn(:,:,8,jpzoo)=0.027*tmask(:,:,1) 
     164      trn(:,:,8,jpphy)=0.041*tmask(:,:,1) 
     165      trn(:,:,8,jpno3)=0.00022*tmask(:,:,1) 
     166      trn(:,:,8,jpnh4)=0.0033*tmask(:,:,1) 
     167      trn(:,:,8,jpdom)=0.021*tmask(:,:,1) 
     168 
     169      trn(:,:,9,jpdet)=0.0556*tmask(:,:,1) 
     170      trn(:,:,9,jpzoo)=0.123*tmask(:,:,1) 
     171      trn(:,:,9,jpphy)=0.122*tmask(:,:,1) 
     172      trn(:,:,9,jpno3)=0.028*tmask(:,:,1) 
     173      trn(:,:,9,jpnh4)=0.024*tmask(:,:,1) 
     174      trn(:,:,9,jpdom)=0.06*tmask(:,:,1) 
     175 
     176      trn(:,:,10,jpdet)=0.025*tmask(:,:,1) 
     177      trn(:,:,10,jpzoo)=0.016*tmask(:,:,1) 
     178      trn(:,:,10,jpphy)=0.029*tmask(:,:,1) 
     179      trn(:,:,10,jpno3)=2.462*tmask(:,:,1) 
     180      trn(:,:,10,jpnh4)=0.04*tmask(:,:,1) 
     181      trn(:,:,10,jpdom)=0.022*tmask(:,:,1) 
     182 
     183      trn(:,:,11,jpdet)=0.0057*tmask(:,:,1) 
     184      trn(:,:,11,jpzoo)=0.0005*tmask(:,:,1) 
     185      trn(:,:,11,jpphy)=0.0006*tmask(:,:,1) 
     186      trn(:,:,11,jpno3)=3.336*tmask(:,:,1) 
     187      trn(:,:,11,jpnh4)=0.005*tmask(:,:,1) 
     188      trn(:,:,11,jpdom)=0.004*tmask(:,:,1) 
     189 
     190      trn(:,:,12,jpdet)=0.002*tmask(:,:,1) 
     191      trn(:,:,12,jpzoo)=1.e-6*tmask(:,:,1) 
     192      trn(:,:,12,jpphy)=5.e-6*tmask(:,:,1) 
     193      trn(:,:,12,jpno3)=4.24*tmask(:,:,1) 
     194      trn(:,:,12,jpnh4)=0.001*tmask(:,:,1) 
     195      trn(:,:,12,jpdom)=3.e-5*tmask(:,:,1) 
     196 
     197      DO jk=13,jpk 
     198        trn(:,:,jk,jpdet)=0.0 
     199        trn(:,:,jk,jpzoo)=0.0 
     200        trn(:,:,jk,jpphy)=0.0 
     201        trn(:,:,jk,jpnh4)=0.0 
     202        trn(:,:,jk,jpdom)=0.0 
     203      END DO 
     204 
     205      trn(:,:,13,jpno3)=5.31*tmask(:,:,13) 
     206      trn(:,:,14,jpno3)=6.73*tmask(:,:,14) 
     207      trn(:,:,15,jpno3)=8.32*tmask(:,:,15) 
     208      trn(:,:,16,jpno3)=10.13*tmask(:,:,16) 
     209      trn(:,:,17,jpno3)=11.95*tmask(:,:,17) 
     210      trn(:,:,18,jpno3)=13.57*tmask(:,:,18) 
     211      trn(:,:,19,jpno3)=15.08*tmask(:,:,19) 
     212      trn(:,:,20,jpno3)=16.41*tmask(:,:,20) 
     213      trn(:,:,21,jpno3)=17.47*tmask(:,:,21) 
     214      trn(:,:,22,jpno3)=18.29*tmask(:,:,22) 
     215      trn(:,:,23,jpno3)=18.88*tmask(:,:,23) 
     216      trn(:,:,24,jpno3)=19.30*tmask(:,:,24) 
     217      trn(:,:,25,jpno3)=19.68*tmask(:,:,25) 
     218      trn(:,:,26,jpno3)=19.91*tmask(:,:,26) 
     219      trn(:,:,27,jpno3)=19.99*tmask(:,:,27) 
     220      trn(:,:,28,jpno3)=20.01*tmask(:,:,28) 
     221      trn(:,:,29,jpno3)=20.01*tmask(:,:,29) 
     222      trn(:,:,30,jpno3)=20.01*tmask(:,:,30) 
     223 
     224#elif defined key_trc_lobster1 && defined key_gyre 
     225! init NO3=f(density) by asklod AS Kremeur 2005-07 
     226      trn(:,:,:,jpdet)=0.1*tmask(:,:,:) 
     227      trn(:,:,:,jpzoo)=0.1*tmask(:,:,:) 
     228      trn(:,:,:,jpnh4)=0.1*tmask(:,:,:) 
     229      trn(:,:,:,jpphy)=0.1*tmask(:,:,:) 
     230      trn(:,:,:,jpdom)=1.*tmask(:,:,:) 
     231      DO  jk=1,jpk 
     232         DO  jj=1,jpj 
     233            DO  ji=1,jpi 
     234               IF (rhd(ji,jj,jk).LE.24.5e-3) THEN 
     235                  trn(ji,jj,jk,jpno3)=2.*tmask(ji,jj,jk) 
     236               ELSE 
     237                  trn(ji,jj,jk,jpno3)=(13.24*(rhd(ji,jj,jk)*1000)-324.4)*tmask(ji,jj,jk) 
     238               ENDIF 
     239            END DO 
     240         END DO 
     241      END DO 
    274242 
    275243#else 
     
    298266      trb(:,:,:,:) = trn(:,:,:,:) 
    299267 
    300       IF(lwp) WRITE(numout,*)  ' ' 
    301       DO jn = 1, jptra 
    302          IF( ln_ctl .AND. lwp ) THEN ! print mean trends (used for debugging) 
    303             ztraa = SUM( tra(1:nictle,1:njctle,1:jpk,jn) *   & 
    304                 tmask(1:nictle,1:njctle,1:jpk) ) 
    305             ztrab = SUM( trb(1:nictle,1:njctle,1:jpk,jn) *     & 
    306                 tmask(1:nictle,1:njctle,1:jpk) ) 
    307             ztran = SUM( trn(1:nictle,1:njctle,1:jpk,jn) *    & 
    308                 tmask(1:nictle,1:njctle,1:jpk) ) 
    309             WRITE(numout,*) ' trcdtr  - ',ctrcnm(jn),   & 
    310                 ' : ', ztraa, '  ', ztrab, '  ', ztran 
    311          ENDIF 
    312       END DO 
    313  
     268#if defined key_trc_lobster1 
    314269!!  initialize the POC in sediments 
    315 #  if defined key_trc_npzd || defined key_trc_lobster1 || defined key_trc_hamocc3 || defined key_trc_pisces 
    316  
    317       sedpoc(:,:) = 0. 
    318  
    319 #  endif 
     270 
     271      sedpocb(:,:) = 0. 
     272      sedpocn(:,:) = 0. 
     273      sedpoca(:,:) = 0. 
     274#endif 
     275       
    320276 END SUBROUTINE trc_dtr  
    321277 
  • trunk/NEMO/TOP_SRC/trcini.F90

    r274 r335  
    11MODULE trcini 
    22   !!========================================================================== 
    3    !! 
    4    !!                       *** MODULE trcini *** 
    5    !! 
    6    !! Initialization for passive tracer (for restart or not)   
    7    !!      
    8    !!========================================================================= 
    9    !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    10    !! $Header$ 
    11    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
     3   !!                       *** MODULE trcini ***   
     4   !! Ocean passive tracers:  Manage the passive tracer initialization  
     5   !!=========================================================================    
     6#if defined key_passivetrc 
    127   !!---------------------------------------------------------------------- 
    13                                                                                                                        
    14       !! * Modules used 
    15       !! ============== 
    16       USE ioipsl 
    17       USE oce_trc 
    18       USE trc 
    19       USE sms 
    20       USE lib_mpp 
     8   !!   trc_ini : Initialization for passive tracer 
     9   !!---------------------------------------------------------------------- 
     10   !! * Modules used 
     11   USE ioipsl 
     12   USE oce_trc 
     13   USE trc 
     14   USE sms 
     15   USE lib_mpp 
     16   USE lbclnk 
    2117 
    22      IMPLICIT NONE 
    23      PRIVATE 
     18   IMPLICIT NONE 
     19   PRIVATE 
    2420 
    25     !! * Accessibility 
    26     PUBLIC trc_ini 
     21   !! * Accessibility 
     22   PUBLIC trc_ini 
     23 
     24#if defined key_trc_lobster1 
     25   !!---------------------------------------------------------------------- 
     26   !!   'key_trc_lobster1'                        LOBSTER1 biological model   
     27   !!---------------------------------------------------------------------- 
     28#  include "trcini.lobster1.h90" 
     29 
     30#elif defined key_trc_pisces 
     31   !!---------------------------------------------------------------------- 
     32   !!   'key_trc_pisces'                            PISCES biological model                   
     33   !!---------------------------------------------------------------------- 
     34#  include "trcini.pisces.h90" 
     35 
     36#elif defined key_cfc 
     37   !!---------------------------------------------------------------------- 
     38   !!   'key_cfc  '                                          CFC model                   
     39   !!---------------------------------------------------------------------- 
     40#  include "trcini.cfc.h90" 
     41 
     42#else 
     43   !!---------------------------------------------------------------------- 
     44   !!   Default option                                
     45   !!---------------------------------------------------------------------- 
    2746 
    2847CONTAINS 
    2948 
    30 #if defined key_passivetrc 
     49   SUBROUTINE trc_ini 
     50      !!--------------------------------------------------------------------- 
     51      !!                    ***  ROUTINE trc_ini  *** 
     52      !!               
     53      !! ** Purpose : Initialization for passive tracer 
     54      !!              for restart or not 
     55      !! 
     56      !! History : 
     57      !!        !  00-04  O. Aumont, M.A. Foujols HAMOCC3 and P3ZD 
     58      !!   8.5  !  05-03  O.Aumont and A.El Moussaoui  F90 
     59      !!   9.0  !  05-10  C. Ethe  Modularity 
     60      !!---------------------------------------------------------------------- 
     61      !! * local declarations 
     62      INTEGER ::                   &  
     63         ji ,jj ,jk ,jn, jl        ! dummy loop indices   
     64      !!--------------------------------------------------------------------- 
    3165 
    32  SUBROUTINE trc_ini 
    33 !!--------------------------------------------------------------------- 
    34 !!                       ROUTINE trcini 
    35 !!                     ****************** 
    36 !!  PURPOSE : 
    37 !!  --------- 
    38 !!     initialization for passive tracer 
    39 !!     for restart or not 
    40 !! 
    41 !!   WORKSPACE : 
    42 !!   --------- 
    43 !!      ji jj jk 
    44 !! 
    45 !!   History: 
    46 !!   -------- 
    47 !!                 04/00 (O. Aumont, M.A. Foujols) HAMOCC3 and P3ZD 
    48 !!                 03/05  O.Aumont and A.El Moussaoui  F90 
    49 !!---------------------------------------------------------------------- 
    50 !!---------------------------------------------------------------------- 
    51 !! local declarations 
    52 !! ================== 
    5366 
    54       INTEGER :: ji,jj,jk,jn,jl 
    55  
    56 !!---------------------------------------------------------------------- 
    57 !! statement functions 
    58 !! =================== 
    59  
    60 #include "passivetrc_substitute.h90" 
    61  
    62 !!--------------------------------------------------------------------- 
    63 !!  OPA.9    
    64 !!--------------------------------------------------------------------- 
    65  
    66 #    if defined key_trc_npzd 
    67 #    include "trcini.npzd.h90" 
    68 #    elif defined key_trc_lobster1 
    69 #    include "trcini.lobster1.h90" 
    70 #    elif defined key_trc_hamocc3 
    71 #    include "trcini.hamocc3.h90" 
    72 #    elif defined key_trc_pisces 
    73 #    include "trcini.pisces.h90" 
    74 #    else 
    75  
    76 ! Specific initialization to do 
    77 !!----------------------------- 
    78 #    endif 
    79  
    80 !! 1. initialization of passives tracers field 
    81 !! ------------------------------------------- 
    82       DO jn=1,jptra 
    83               trn(:,:,:,jn)=0.e0 
    84               tra(:,:,:,jn)=0.e0 
     67      !! 1. initialization of passives tracers field 
     68      !! ------------------------------------------- 
     69      DO jn = 1, jptra 
     70         trn(:,:,:,jn)=0.e0 
     71         tra(:,:,:,jn)=0.e0 
    8572      END DO 
    8673 
    8774#if defined key_trc_diaadd 
    88 !! initialization of output 2d and 3d arrays 
     75      !! initialization of output 2d and 3d arrays 
    8976 
    90       DO jn=1,jpdia2d 
    91             trc2d(:,:,jn)=0.e0 
     77      DO jn = 1, jpdia2d 
     78         trc2d(:,:,jn)=0.e0 
    9279      END DO 
    93       DO jn=1,jpdia3d 
    94               trc3d(:,:,:,jn)=0.e0 
     80 
     81      DO jn = 1, jpdia3d 
     82         trc3d(:,:,:,jn)=0.e0 
    9583      END DO 
    9684#endif 
    9785 
    9886#if defined key_trc_diabio 
    99    !! initialization of biological trends 
     87      !! initialization of biological trends 
    10088      DO jn=1,jpdiabio 
    101               trbio(ji,jj,jk,jn)=0.e0 
     89         trbio(:,:,:,jn) = 0.e0 
    10290      END DO 
    10391#endif 
    10492 
    10593#if defined key_trc_diatrd 
    106    !! initialization of tracer trends 
    107       DO jl=1,jpdiatrc 
    108         DO jn=1,jptra 
    109                 trtrd(:,:,:,jn,jl)=0.e0 
    110         END DO 
     94      !! initialization of tracer trends 
     95      DO jl = 1, jpdiatrc 
     96         DO jn = 1, jptra 
     97            trtrd(:,:,:,jn,jl) = 0.e0 
     98         END DO 
    11199      END DO 
    112100#endif       
    113        
    114       IF(lwp) THEN 
    115           WRITE(numout,*) ' ' 
    116           WRITE(numout,*) ' trcini: generic initialisation done ' 
    117           WRITE(numout,*) ' ' 
     101 
     102      IF( lwp ) THEN 
     103         WRITE(numout,*) ' ' 
     104         WRITE(numout,*) ' trcini: generic initialisation done ' 
     105         WRITE(numout,*) ' ' 
    118106      ENDIF 
    119107 
    120 END SUBROUTINE trc_ini 
    121  
    122 #else 
    123  
    124 SUBROUTINE trc_ini 
    125  
    126    !! no passive tracers 
    127    !!=================== 
    128 END SUBROUTINE trc_ini 
     108   END SUBROUTINE trc_ini 
    129109 
    130110#endif 
    131111 
     112#else 
     113   !!---------------------------------------------------------------------- 
     114   !!   Dummy module :                      NO passive tracer 
     115   !!---------------------------------------------------------------------- 
     116CONTAINS 
     117   SUBROUTINE trc_ini              ! Empty routine 
     118 
     119   END SUBROUTINE trc_ini 
     120#endif 
     121 
     122   !!====================================================================== 
    132123END MODULE trcini 
  • trunk/NEMO/TOP_SRC/trclec.F90

    r274 r335  
    77   !!========================================================================= 
    88   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    9    !! $Header$ 
    10    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    119   !!---------------------------------------------------------------------- 
    12  
    13       !! * Modules used 
    14       !! ============== 
    15       USE oce_trc 
    16       USE trc 
    17       USE trctrp_lec 
    18       USE trclsm 
    19  
    20      IMPLICIT NONE 
    21      PRIVATE  
    22  
    23     !! * Accessibility 
    24     PUBLIC trc_lec 
     10#if defined key_passivetrc 
     11   !! * Modules used 
     12   !! ============== 
     13   USE oce_trc 
     14   USE trc 
     15   USE trctrp_lec 
     16   USE trclsm 
     17 
     18   IMPLICIT NONE 
     19   PRIVATE  
     20 
     21   !! * Accessibility 
     22   PUBLIC trc_lec 
     23 
     24#include "passivetrc_substitute.h90" 
    2525 
    2626CONTAINS 
    2727 
    28 #if defined key_passivetrc 
    29  
    30 SUBROUTINE trc_lec 
    31 !!--------------------------------------------------------------------- 
    32 !!                       ROUTINE trclec 
    33 !!                     ****************** 
    34 !!  PURPOSE : 
    35 !!  --------- 
    36 !!     READ and PRINT options for the passive tracer run (namelist) 
    37 !! 
    38 !!   History: 
    39 !!   -------- 
    40 !!      original  : 96-11 (M.A. Foujols, M. Levy) passive tracer 
    41 !!      modification : 98-04 (M.A Foujols, L. Bopp) ahtrb0 for isopycnal 
    42 !!                                                  diffusion 
    43 !!      modification : 99-10(M.A. Foujols, M. Levy) separation of sms 
    44 !!      additions : 00-05(A. Estublier) TVD Limiter Scheme : Tests  
    45 !!                                      on ndttrc 
    46 !!      additions : 00-06(A. Estublier) MUSCL Scheme : Tests  
    47 !!                                      on ndttrc 
    48 !!      additions : 00-07(A. Estublier) PPM Scheme : Tests on ndttrc 
    49 !!      modification : 00-11 (M.A Foujols, E Kestenare) trcrat, ahtrc0 and aeivtr0 
    50 !!      modification : 01-01 (E Kestenare) suppress ndttrc=1  
    51 !!                                         for Arakawa and TVD schemes 
    52 !!     O.Aumont and A.El Moussaoui 03/05 F90 
    53 !!---------------------------------------------------------------------- 
    54  
    55 !! local declarations 
    56 !! ================== 
     28   SUBROUTINE trc_lec 
     29      !!--------------------------------------------------------------------- 
     30      !!                       ROUTINE trclec 
     31      !!                     ****************** 
     32      !!  PURPOSE : 
     33      !!  --------- 
     34      !!     READ and PRINT options for the passive tracer run (namelist) 
     35      !! 
     36      !!   History: 
     37      !!   -------- 
     38      !!      original  : 96-11 (M.A. Foujols, M. Levy) passive tracer 
     39      !!      modification : 98-04 (M.A Foujols, L. Bopp) ahtrb0 for isopycnal 
     40      !!                                                  diffusion 
     41      !!      modification : 99-10(M.A. Foujols, M. Levy) separation of sms 
     42      !!      additions : 00-05(A. Estublier) TVD Limiter Scheme : Tests  
     43      !!                                      on ndttrc 
     44      !!      additions : 00-06(A. Estublier) MUSCL Scheme : Tests  
     45      !!                                      on ndttrc 
     46      !!      additions : 00-07(A. Estublier) PPM Scheme : Tests on ndttrc 
     47      !!      modification : 00-11 (M.A Foujols, E Kestenare) trcrat, ahtrc0 and aeivtr0 
     48      !!      modification : 01-01 (E Kestenare) suppress ndttrc=1  
     49      !!                                         for Arakawa and TVD schemes 
     50      !!     O.Aumont and A.El Moussaoui 03/05 F90 
     51      !!---------------------------------------------------------------------- 
     52 
     53      !! local declarations 
     54      !! ================== 
    5755 
    5856      INTEGER ::  ji 
    5957      CHARACTER (len=32) :: clname 
    6058 
    61 !!---------------------------------------------------------------------- 
    62 !! statement functions 
    63 !! =================== 
    64  
    65 #include "passivetrc_substitute.h90" 
    66  
    67 !! 
    68 !!--------------------------------------------------------------------- 
    69 !!  OPA.90   03/2005  
    70 !!--------------------------------------------------------------------- 
    71  
    72 !! 0. initializations 
    73 !! ------------------ 
     59      !!--------------------------------------------------------------------- 
     60      !!  OPA.90   03/2005  
     61      !!--------------------------------------------------------------------- 
     62 
     63      !! 0. initializations 
     64      !! ------------------ 
    7465 
    7566      namelist/nattrc/nwritetrc,lrsttr,nrsttr, ctrcnm,ctrcnl,ctrcun,lutini     !general    
     
    8374#if defined key_trc_diaadd 
    8475      namelist/natadd/ctrc3d,ctrc3l,ctrc2d,ctrc2l, ctrc3u, ctrc2u,     & 
    85                       nwriteadd                             !additional diagnostics 
    86 #endif 
    87  
    88       IF(lwp) THEN 
    89           WRITE(numout,*) ' ' 
    90           WRITE(numout,*) ' ROUTINE trclec' 
    91           WRITE(numout,*) ' **************' 
    92           WRITE(numout,*) ' ' 
    93           WRITE(numout,*) ' namelist for passive tracer' 
    94           WRITE(numout,*) ' ***************************' 
    95           WRITE(numout,*) ' ' 
     76         nwriteadd                             !additional diagnostics 
     77#endif 
     78 
     79      IF(lwp) THEN 
     80         WRITE(numout,*) ' ' 
     81         WRITE(numout,*) ' ROUTINE trclec' 
     82         WRITE(numout,*) ' **************' 
     83         WRITE(numout,*) ' ' 
     84         WRITE(numout,*) ' namelist for passive tracer' 
     85         WRITE(numout,*) ' ***************************' 
     86         WRITE(numout,*) ' ' 
    9687      ENDIF 
    9788 
     
    10293      OPEN( numnat, FILE= clname, FORM='formatted', STATUS = 'old') 
    10394 
    104 !! 1., 2. & 3. initialization with namelist files 
    105 !! ---------------------------------------------- 
    106 !! 1.0 namelist nattrc : 
     95      !! 1., 2. & 3. initialization with namelist files 
     96      !! ---------------------------------------------- 
     97      !! 1.0 namelist nattrc : 
    10798 
    10899      nwritetrc = 10 
     
    111102 
    112103      DO ji=1,jptra 
    113         WRITE (ctrcnm(ji),'("TR_",I1)') ji 
    114         WRITE (ctrcnl(ji),'("TRACER NUMBER ",I1)') ji 
    115         ctrcun(ji)='mmole/m3' 
    116         lutini(ji)=.FALSE.  
     104         WRITE (ctrcnm(ji),'("TR_",I1)') ji 
     105         WRITE (ctrcnl(ji),'("TRACER NUMBER ",I1)') ji 
     106         ctrcun(ji)='mmole/m3' 
     107         lutini(ji)=.FALSE.  
    117108      END DO 
    118109 
     
    122113 
    123114      IF(lwp) THEN 
    124           WRITE(numout,*) ' ' 
    125           WRITE(numout,*) 'nattrc' 
    126           WRITE(numout,*) ' ' 
    127           WRITE(numout,*)          & 
    128               ' frequency of outputs for passive tracers nwritetrc = '    & 
    129               ,nwritetrc   
    130           WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ',   & 
    131      &         lrsttr 
    132           WRITE(numout,*) ' control of time step for p. tr. nrsttr = ',   &  
    133      &         nrsttr 
    134           DO ji=1,jptra 
     115         WRITE(numout,*) ' ' 
     116         WRITE(numout,*) 'nattrc' 
     117         WRITE(numout,*) ' ' 
     118         WRITE(numout,*)          & 
     119            ' frequency of outputs for passive tracers nwritetrc = '    & 
     120            ,nwritetrc   
     121         WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ',   & 
     122            &         lrsttr 
     123         WRITE(numout,*) ' control of time step for p. tr. nrsttr = ',   &  
     124            &         nrsttr 
     125         DO ji=1,jptra 
    135126            WRITE(numout,*) ' tracer nb: ',ji,' name = ',ctrcnm(ji)       &  
    136      &           ,ctrcnl(ji)  
     127               &           ,ctrcnl(ji)  
    137128            WRITE(numout,*) ' in unit = ',ctrcun(ji) 
    138129            WRITE(numout,*) ' initial value in FILE : ',lutini(ji)  
    139130            WRITE(numout,*) ' ' 
    140           END DO 
    141           WRITE(numout,*) ' ' 
     131         END DO 
     132         WRITE(numout,*) ' ' 
    142133      ENDIF 
    143134 
    144135#if defined key_trc_diatrd 
    145136 
    146 !! 1.2 namelist nattrd : passive tracers dynamical trends 
     137      !! 1.2 namelist nattrd : passive tracers dynamical trends 
    147138 
    148139      nwritetrd=10 
    149140 
    150 !! default : no dynamical trend recording 
    151 !! -------------------------------------- 
     141      !! default : no dynamical trend recording 
     142      !! -------------------------------------- 
    152143      DO ji=1,jptra 
    153         luttrd(ji) = .FALSE. 
    154       END DO  
     144         luttrd(ji) = .FALSE. 
     145      END DO 
    155146 
    156147      REWIND(numnat) 
     
    158149 
    159150      IF(lwp) THEN 
    160           WRITE(numout,*) 'natrtd' 
    161           WRITE(numout,*) ' ' 
    162           WRITE(numout,*)                        & 
    163              ' frequency of outputs for dynamical trends nwritetrd = '   & 
    164              ,nwritetrd 
    165           DO ji=1,jptra 
     151         WRITE(numout,*) 'natrtd' 
     152         WRITE(numout,*) ' ' 
     153         WRITE(numout,*)                        & 
     154            ' frequency of outputs for dynamical trends nwritetrd = '   & 
     155            ,nwritetrd 
     156         DO ji=1,jptra 
    166157            WRITE(numout,*)                      & 
    167158               ' keep dynamical trends for tracer number :',ji          & 
    168159               ,luttrd(ji)    
    169           END DO  
    170       ENDIF 
    171 #endif 
    172  
    173 !!1.3 namelist natadd : passive tracers diagnostics 
    174 !!------------------------------------------------- 
     160         END DO 
     161      ENDIF 
     162#endif 
     163 
     164      !!1.3 namelist natadd : passive tracers diagnostics 
     165      !!------------------------------------------------- 
    175166 
    176167#if defined key_trc_diaadd 
     
    178169      nwriteadd = 10 
    179170 
    180 !! default value for 3D output arrays : short and long name, units 
     171      !! default value for 3D output arrays : short and long name, units 
    181172 
    182173      DO ji=1,jpdia3d 
    183         WRITE (ctrc3d(ji),'("3D_",I1)') ji 
    184         WRITE (ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji 
    185         ctrc3u(ji)=' ' 
    186       END DO  
    187  
    188  
    189 !! default value for 2D output arrays : short and long name, units 
    190 !! --------------------------------------------------------------- 
     174         WRITE (ctrc3d(ji),'("3D_",I1)') ji 
     175         WRITE (ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji 
     176         ctrc3u(ji)=' ' 
     177      END DO 
     178 
     179 
     180      !! default value for 2D output arrays : short and long name, units 
     181      !! --------------------------------------------------------------- 
    191182      DO ji=1,jpdia2d 
    192         WRITE (ctrc2d(ji),'("2D_",I1)') ji 
    193         WRITE (ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji 
    194         ctrc2u(ji)=' ' 
    195       END DO  
     183         WRITE (ctrc2d(ji),'("2D_",I1)') ji 
     184         WRITE (ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji 
     185         ctrc2u(ji)=' ' 
     186      END DO 
    196187 
    197188      REWIND(numnat) 
     
    199190 
    200191      IF(lwp) THEN 
    201           WRITE(numout,*) ' natadd' 
    202           WRITE(numout,*) ' ' 
    203           WRITE(numout,*)                          & 
    204              ' frequency of outputs for additional arrays nwriteadd = '   & 
    205              ,nwriteadd 
    206           DO ji=1,jpdia3d 
     192         WRITE(numout,*) ' natadd' 
     193         WRITE(numout,*) ' ' 
     194         WRITE(numout,*)                          & 
     195            ' frequency of outputs for additional arrays nwriteadd = '   & 
     196            ,nwriteadd 
     197         DO ji=1,jpdia3d 
    207198            WRITE(numout,*)                     & 
    208199               'name of 3d output field number :',ji,' : ',ctrc3d(ji)   
    209200            WRITE(numout,*) ctrc3l(ji)   
    210201            WRITE(numout,*) ' in unit = ',ctrc3u(ji) 
    211           END DO  
    212           WRITE(numout,*) ' ' 
    213           DO ji=1,jpdia2d 
     202         END DO 
     203         WRITE(numout,*) ' ' 
     204         DO ji=1,jpdia2d 
    214205            WRITE(numout,*)                    & 
    215206               'name of 2d output field number :',ji,' : ',ctrc2d(ji)   
    216207            WRITE(numout,*) ctrc2l(ji)   
    217208            WRITE(numout,*) ' in unit = ',ctrc2u(ji) 
    218           END DO  
    219           WRITE(numout,*) ' ' 
    220       ENDIF 
    221 #endif 
    222  
    223 !! 1.1 namelist natnum : 
    224 !! --------------------- 
     209         END DO 
     210         WRITE(numout,*) ' ' 
     211      ENDIF 
     212#endif 
     213 
     214      !! 1.1 namelist natnum : 
     215      !! --------------------- 
    225216      rsc=1. 
    226217      rtrn=1.e-15 
     
    236227 
    237228      IF(lwp) THEN 
    238           WRITE(numout,*) ' ' 
    239           WRITE(numout,*) 'natnum' 
    240           WRITE(numout,*) ' ' 
    241           WRITE(numout,*) ' tuning coefficient              rsc     = ',    & 
    242              rsc 
    243           WRITE(numout,*) ' truncation value                rtrn    = ',    & 
    244              rtrn 
    245           WRITE(numout,*) ' number of corrective phase      ncortrc = ',    & 
    246              ncortrc 
    247           WRITE(numout,*) ' time step freq. for pass. trac. ndttrc  = ',    & 
    248              ndttrc 
    249           WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ',    & 
    250              nittrc000 
    251           WRITE(numout,*) ' computes or not crossterms    crosster  = ',    & 
    252              crosster 
    253       ENDIF 
    254  
    255  
    256 !! namelist of transport 
    257 !! --------------------- 
     229         WRITE(numout,*) ' ' 
     230         WRITE(numout,*) 'natnum' 
     231         WRITE(numout,*) ' ' 
     232         WRITE(numout,*) ' tuning coefficient              rsc     = ',    & 
     233            rsc 
     234         WRITE(numout,*) ' truncation value                rtrn    = ',    & 
     235            rtrn 
     236         WRITE(numout,*) ' number of corrective phase      ncortrc = ',    & 
     237            ncortrc 
     238         WRITE(numout,*) ' time step freq. for pass. trac. ndttrc  = ',    & 
     239            ndttrc 
     240         WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ',    & 
     241            nittrc000 
     242         WRITE(numout,*) ' computes or not crossterms    crosster  = ',    & 
     243            crosster 
     244      ENDIF 
     245 
     246 
     247      !! namelist of transport 
     248      !! --------------------- 
    258249      CALL trc_trp_lec 
    259250 
    260 !! namelist of SMS 
    261 !! ---------------       
     251      !! namelist of SMS 
     252      !! ---------------       
    262253      CALL trc_lsm 
    263254 
    264 END SUBROUTINE trc_lec  
     255   END SUBROUTINE trc_lec 
    265256 
    266257#else 
    267  
    268 SUBROUTINE trc_lec 
    269   !!============== 
    270      !! no passive tracers 
    271   !!============== 
    272 END SUBROUTINE trc_lec 
     258   !!====================================================================== 
     259   !!  Empty module : No passive tracer 
     260   !!====================================================================== 
     261CONTAINS 
     262 
     263   SUBROUTINE trc_lec 
     264 
     265   END SUBROUTINE trc_lec 
    273266 
    274267#endif 
  • trunk/NEMO/TOP_SRC/trclsm.F90

    r274 r335  
    11MODULE trclsm 
    2    !!======================================================================================= 
     2   !!=============================================================== 
    33   !! 
    44   !!                       *** MODULE trclsm **** 
     
    66   !!  READS specific NAMELIST for sms terms 
    77   !! 
    8    !!======================================================================================= 
     8   !!================================================================= 
    99   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    10    !! $Header$ 
    11    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
     10   !!----------------------------------------------------------------- 
     11#if defined key_passivetrc 
     12   !!------------------------------------------------------------- 
     13   !! * Modules used 
     14   !! ============== 
     15   USE oce_trc 
     16   USE trc 
     17   USE sms 
     18 
     19 
     20   IMPLICIT NONE                              
     21   PRIVATE 
     22 
     23   !! * Accessibility 
     24   PUBLIC trc_lsm 
     25 
     26 
     27#if defined key_trc_lobster1 
    1228   !!---------------------------------------------------------------------- 
    13       !!---------------------------------------------------------------------- 
    14       !! * Modules used 
    15       !! ============== 
    16       USE oce_trc 
    17       USE trc 
    18       USE sms 
     29   !!   'key_trc_lobster1'                        LOBSTER1 biological model   
     30   !!---------------------------------------------------------------------- 
     31#  include "trclsm.lobster1.h90" 
    1932 
    20                                                                                                                        
    21       IMPLICIT NONE                              
    22       PRIVATE 
     33#elif defined key_trc_pisces 
     34   !!---------------------------------------------------------------------- 
     35   !!   'key_trc_pisces'                            PISCES biological model                   
     36   !!---------------------------------------------------------------------- 
     37#  include "trclsm.pisces.h90" 
    2338 
    24   !! * Accessibility 
    25    PUBLIC trc_lsm 
     39#elif defined key_cfc 
     40   !!---------------------------------------------------------------------- 
     41   !!   'key_cfc  '                                          CFC model                   
     42   !!---------------------------------------------------------------------- 
     43#  include "trclsm.cfc.h90" 
     44 
     45   !!---------------------------------------------------------------------- 
     46   !!   Default option                                
     47   !!---------------------------------------------------------------------- 
     48# endif 
     49 
     50#else 
    2651 
    2752CONTAINS 
    2853 
    29 #if defined key_passivetrc 
    30  
    31 SUBROUTINE trc_lsm 
    32 !!--------------------------------------------------------------------- 
    33 !! 
    34 !!                       ROUTINE trclsm 
    35 !!                     ****************** 
    36 !!  PURPOSE : 
    37 !!  --------- 
    38 !!     READS specific NAMELIST for sms terms  
    39 !! 
    40 !!   History: 
    41 !!   -------- 
    42 !!      original  : 99-10 (M.A. Foujols, M. Levy) passive tracer 
    43 !!                  00-04 (O. Aumont, M.A. Foujols) HAMOCC3 and P3ZD 
    44 !!                  02-05 (O. Aumont) AGE TRACER 
    45 !!     03/2005  O. Aumont and A. El Moussaoui  F90 
    46 !!---------------------------------------------------------------------- 
    47  
    48 #    if defined key_trc_npzd 
    49 #    include "trclsm.npzd.h90" 
    50 #    elif defined key_trc_lobster1 
    51 #    include "trclsm.lobster1.h90" 
    52 #    elif defined key_trc_hamocc3 
    53 #    include "trclsm.hamocc3.h90" 
    54 #    elif defined key_trc_age 
    55 #    include "trclsm.age.h90" 
    56 #    elif defined key_trc_pisces 
    57 #    include "trclsm.pisces.h90" 
    58 #    else 
    59 !!      user can define here his own sms namelist 
    60 #    endif 
    61  
    62 END  SUBROUTINE  trc_lsm 
    63  
    64 #else 
    65  
    66 SUBROUTINE trc_lsm 
    67 !!================ 
    68    !! no passive tracers 
    69 END  SUBROUTINE  trc_lsm 
     54   SUBROUTINE trc_lsm 
     55      !!================ 
     56      !! no passive tracers 
     57   END  SUBROUTINE  trc_lsm 
    7058 
    7159#endif   
  • trunk/NEMO/TOP_SRC/trcrst.F90

    r274 r335  
    11MODULE trcrst 
    2    !!=========================================================================================== 
     2   !!====================================================================== 
    33   !! 
    44   !!                       *** MODULE trcrst *** 
     
    66   !!   Read the restart files for passive tracers 
    77   !! 
    8    !!=========================================================================================== 
     8   !!====================================================================== 
    99   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    10    !! $Header$ 
    11    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    1210   !!---------------------------------------------------------------------- 
    13       !!---------------------------------------------------------------------- 
    14       !! * Modules used 
    15       !! ============== 
    16       USE oce_trc 
    17       USE trc 
    18       USE sms 
    19       USE trctrp_lec    
    20                                                                                                                              
    21       IMPLICIT NONE 
    22       PRIVATE 
    23  
     11#if defined key_passivetrc    
     12   !!---------------------------------------------------------------------- 
     13   !! * Modules used 
     14   !! ============== 
     15   USE oce_trc 
     16   USE trc 
     17   USE sms 
     18   USE trctrp_lec    
     19    
     20   IMPLICIT NONE 
     21   PRIVATE 
     22    
    2423   !! * Accessibility 
    2524   PUBLIC trc_rst 
    2625   PUBLIC trc_wri 
    27  
     26    
    2827   !! * Module variables 
    2928   CHARACTER (len=48) ::   & 
    3029      trestart = 'initial.trc.nc'   ! restart file name 
    31  
     30    
    3231CONTAINS 
    3332 
     
    3736   !!---------------------------------------------------------------------- 
    3837#include "trcrst_fdir.h90" 
    39  
    40 #else 
    41     !!  USE ioipsl 
    42 #if defined key_passivetrc     
    43  
    44 SUBROUTINE trc_rst  
    45    !!=========================================================================================== 
    46    !! 
    47    !!                       ROUTINE trc_rst 
    48    !!                     ******************* 
    49    !! 
    50    !!  PURPOSE : 
    51    !!  --------- 
    52    !!     READ files for restart for passive tracer 
    53    !! 
    54    !!   METHOD : 
    55    !!   ------- 
    56    !!      READ the previous fields on the FILE nutrst 
    57    !!      the first record indicates previous characterics 
    58    !!      after control with the present run, we READ : 
    59    !!      - prognostic variables on the second and more record 
    60    !! 
    61    !!   History: 
    62    !!   -------- 
    63    !!  original  : 96-11 
    64    !!  00-05 (A. Estublier) TVD Limiter Scheme key_trc_tvd  
    65    !!  00-12 (O. Aumont, E. Kestenare) read restart file for sediments  
    66    !!  01-05 (O. Aumont, E. Kestenare) read restart file for calcite and silicate sediments  
    67    !!  05-03 (O. Aumont and A. El Moussaoui) F90            
    68    !!------------------------------------------------------------------------ 
    69    !! * Modules used 
     38    
     39#else  
     40 
     41   SUBROUTINE trc_rst  
     42      !!=========================================================================================== 
     43      !! 
     44      !!                       ROUTINE trc_rst 
     45      !!                     ******************* 
     46      !! 
     47      !!  PURPOSE : 
     48      !!  --------- 
     49      !!     READ files for restart for passive tracer 
     50      !! 
     51      !!   METHOD : 
     52      !!   ------- 
     53      !!      READ the previous fields on the FILE nutrst 
     54      !!      the first record indicates previous characterics 
     55      !!      after control with the present run, we READ : 
     56      !!      - prognostic variables on the second and more record 
     57      !! 
     58      !!   History: 
     59      !!   -------- 
     60      !!  original  : 96-11 
     61      !!  00-05 (A. Estublier) TVD Limiter Scheme key_trc_tvd  
     62      !!  00-12 (O. Aumont, E. Kestenare) read restart file for sediments  
     63      !!  01-05 (O. Aumont, E. Kestenare) read restart file for calcite and silicate sediments  
     64      !!  05-03 (O. Aumont and A. El Moussaoui) F90            
     65      !!------------------------------------------------------------------------ 
     66      !! * Modules used 
    7067      USE ioipsl 
    7168 
    7269 
    73    !! local declarations 
    74    !! ================== 
    75     LOGICAL ::  llog       !!! 
    76     CHARACTER (len=32) :: clname1,clname2 
    77     CHARACTER (len=32) :: clname = 'restart.trc' 
    78     CHARACTER (len=12) :: clvnames(80)   
    79  
    80     INTEGER :: ino1,jn,iarak0,iarak1,          & 
    81                ji, jj, jk,                   & 
    82                itime, ibvar 
    83     REAL(wp) :: caralk,bicarb,zdt,        &      
    84                 zdate0 
    85     REAL(wp) ::   zdept(jpk), zlamt(jpi,jpj), zphit(jpi,jpj) 
    86  
    87     REAL(wp), DIMENSION(3) :: zinfo 
    88  
    89     !!--------------------------------------------------------------------- 
    90     !!  OPA.9 03-2005   
    91     !!--------------------------------------------------------------------- 
    92     !! 0. initialisations 
    93     !!------------------ 
     70      !! local declarations 
     71      !! ================== 
     72      LOGICAL ::  llog       !!! 
     73      CHARACTER (len=32) :: clname1,clname2 
     74      CHARACTER (len=32) :: clname = 'restart.trc' 
     75      CHARACTER (len=12) :: clvnames(80)   
     76 
     77      INTEGER :: ino1,jn,iarak0,iarak1,          & 
     78         ji, jj, jk,                   & 
     79         itime, ibvar 
     80      REAL(wp) :: caralk,bicarb,zdt,        &      
     81         zdate0 
     82      REAL(wp) ::   zdept(jpk), zlamt(jpi,jpj), zphit(jpi,jpj) 
     83 
     84      REAL(wp), DIMENSION(3) :: zinfo 
     85 
     86      !!--------------------------------------------------------------------- 
     87      !!  OPA.9 03-2005   
     88      !!--------------------------------------------------------------------- 
     89      !! 0. initialisations 
     90      !!------------------ 
    9491 
    9592 
    9693      IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN 
    97           iarak0 = 1 
     94         iarak0 = 1 
    9895      ELSE 
    99           iarak0=0 
     96         iarak0=0 
    10097      ENDIF 
    10198 
     
    108105      IF(lwp) WRITE(numout,*) '   with the time nit000 : ',nit000 
    109106      IF(lwp) THEN 
    110           IF(iarak0.eq.1) then 
    111               WRITE(numout,*) '   and before fields for Arakawa sheme ' 
    112           ENDIF  
    113           WRITE(numout,*) ' ' 
     107         IF(iarak0.eq.1) then 
     108            WRITE(numout,*) '   and before fields for Arakawa sheme ' 
     109         ENDIF 
     110         WRITE(numout,*) ' ' 
    114111      ENDIF 
    115112 
     
    133130 
    134131 
    135     !! 1. READ nutrst 
    136     !! -------------- 
    137     !! ... first information 
    138     !! --------------------- 
     132      !! 1. READ nutrst 
     133      !! -------------- 
     134      !! ... first information 
     135      !! --------------------- 
    139136      itime=0 
    140137      llog=.false.           !!! 
     
    143140      zdept(:)   = 0.e0 
    144141      CALL restini(clname,jpi,jpj,zlamt,zphit,jpk,zdept,clname         &  
    145        &           ,itime,zdate0,zdt,nutrst) 
     142         &           ,itime,zdate0,zdt,nutrst) 
    146143 
    147144      CALL ioget_vname(nutrst, ibvar, clvnames) 
     
    155152      IF(lwp) WRITE(numout,*) '   with the time it : ',nint(zinfo(2)) 
    156153      IF(lwp) THEN 
    157           IF(iarak1.eq.1) then 
    158               WRITE(numout,*) '   and before fields for Arakawa sheme ' 
    159           ENDIF  
     154         IF(iarak1.eq.1) then 
     155            WRITE(numout,*) '   and before fields for Arakawa sheme ' 
     156         ENDIF 
    160157      ENDIF 
    161158      IF(lwp) WRITE(numout,*) '   number of variables   : ', ibvar 
     
    164161      IF(lwp) WRITE(numout,*) ' ' 
    165162 
    166    !! 1.2 control of date 
    167    !! ------------------- 
     163      !! 1.2 control of date 
     164      !! ------------------- 
    168165 
    169166      IF( nit000- NINT( zinfo(2) ) /= 1 .AND. nrsttr /= 0 ) THEN 
    170           IF(lwp) THEN 
    171               WRITE(numout,*) ' ===>>>> : problem with nit000 for the',    &   
    172                   ' passive tracer restart' 
    173               WRITE(numout,*) ' =======                              ',    &     
    174                   ' ======================' 
    175               WRITE(numout,*) ' we stop. verify the FILE' 
    176               WRITE(numout,*) ' or rerun with the value  0 for the' 
    177               WRITE(numout,*) ' control of time PARAMETER   nrstdt' 
    178               WRITE(numout,*) ' ' 
    179           ENDIF 
    180           STOP 'trc_rst'       !! 
    181       ENDIF 
    182  
    183     !! 1.3 Control of the sheme 
    184     !! ------------------------ 
     167         IF(lwp) THEN 
     168            WRITE(numout,*) ' ===>>>> : problem with nit000 for the',    &   
     169               ' passive tracer restart' 
     170            WRITE(numout,*) ' =======                              ',    &     
     171               ' ======================' 
     172            WRITE(numout,*) ' we stop. verify the FILE' 
     173            WRITE(numout,*) ' or rerun with the value  0 for the' 
     174            WRITE(numout,*) ' control of time PARAMETER   nrstdt' 
     175            WRITE(numout,*) ' ' 
     176         ENDIF 
     177         STOP 'trc_rst'       !! 
     178      ENDIF 
     179 
     180      !! 1.3 Control of the sheme 
     181      !! ------------------------ 
    185182 
    186183      IF(iarak0.ne.iarak1) THEN 
    187           IF(lwp) THEN 
    188               WRITE(numout,*) ' ===>>>> : problem with the',       &    
    189                  ' passive tracer restart file' 
    190               WRITE(numout,*) ' =======                              ',        &  
    191                   ' ===========================' 
    192               WRITE(numout,*) ' we stop. verify the FILE' 
    193               WRITE(numout,*) ' before field required IF 1=',iarak0 
    194               WRITE(numout,*) ' before field present in file IF 1=',           &  
    195                  iarak1 
    196               WRITE(numout,*) ' ' 
    197           ENDIF 
    198           STOP 'trc_rst'       !!!!!    AVERIFIER AU NIV F90' 
    199       ENDIF 
    200  
    201  
    202     !! ... READ prognostic variables and computes diagnostic variable 
    203     !! --------------------------------------------------------------- 
    204  
    205        DO jn=1,jptra 
     184         IF(lwp) THEN 
     185            WRITE(numout,*) ' ===>>>> : problem with the',       &    
     186               ' passive tracer restart file' 
     187            WRITE(numout,*) ' =======                              ',        &  
     188               ' ===========================' 
     189            WRITE(numout,*) ' we stop. verify the FILE' 
     190            WRITE(numout,*) ' before field required IF 1=',iarak0 
     191            WRITE(numout,*) ' before field present in file IF 1=',           &  
     192               iarak1 
     193            WRITE(numout,*) ' ' 
     194         ENDIF 
     195         STOP 'trc_rst'       !!!!!    AVERIFIER AU NIV F90' 
     196      ENDIF 
     197 
     198 
     199      !! ... READ prognostic variables and computes diagnostic variable 
     200      !! --------------------------------------------------------------- 
     201 
     202      DO jn=1,jptra 
    206203         clname='TRN'//ctrcnm(jn) 
    207204         CALL restget(nutrst,clname,jpi,jpj,jpk,0,llog,trn(:,:,:,jn)) 
    208        END DO 
    209  
    210        DO jn=1,jptra 
     205      END DO 
     206 
     207      DO jn=1,jptra 
    211208         clname='TRB'//ctrcnm(jn) 
    212209         CALL restget(nutrst,clname,jpi,jpj,jpk,0,llog,trb(:,:,:,jn)) 
    213        END DO 
    214  
    215 #if defined key_trc_hamocc3 
    216          clname='SED'//ctrcnm(jppoc) 
    217          clname1='SED'//ctrcnm(jpcal) 
    218          clname2='SED'//ctrcnm(jpsil) 
    219          CALL restget(nutrst,clname1,jpi,jpj,1,0,llog,sedcal(:,:)) 
    220          CALL restget(nutrst,clname2,jpi,jpj,1,0,llog,sedsil(:,:)) 
    221          CALL restget(nutrst,clname,jpi,jpj,1,0,llog,sedpoc(:,:)) 
    222 #elif defined key_trc_npzd || defined key_trc_lobster1 
    223          clname='SED'//ctrcnm(jpdet) 
    224          CALL restget(nutrst,clname,jpi,jpj,1,0,llog,sedpoc(:,:)) 
     210      END DO 
     211 
     212 
     213#if defined key_trc_lobster1 
     214      clname='SEDB'//ctrcnm(jpdet) 
     215      clname1='SEDN'//ctrcnm(jpdet) 
     216      CALL restget(nutrst,clname,jpi,jpj,1,0,llog,sedpocb(:,:)) 
     217      CALL restget(nutrst,clname1,jpi,jpj,1,0,llog,sedpocn(:,:)) 
    225218#elif defined key_trc_pisces 
    226  
    227          clname='Silicalim' 
    228          CALL restget(nutrst,clname,jpi,jpj,1,0,llog,xksi) 
    229          xksimax=xksi 
    230  
    231          clname='SED'//ctrcnm(jppoc) 
    232          clname1='SED'//ctrcnm(jpcal) 
    233          clname2='SED'//ctrcnm(jpsil) 
    234          CALL restget(nutrst,clname1,jpi,jpj,1,0,llog,sedcal(:,:)) 
    235          CALL restget(nutrst,clname2,jpi,jpj,1,0,llog,sedsil(:,:)) 
    236          CALL restget(nutrst,clname,jpi,jpj,1,0,llog,sedpoc(:,:)) 
     219      clname='Silicalim' 
     220      CALL restget(nutrst,clname,jpi,jpj,1,0,llog,xksi) 
     221      xksimax=xksi 
     222 
     223      clname='SED'//ctrcnm(jppoc) 
     224      clname1='SED'//ctrcnm(jpcal) 
     225      clname2='SED'//ctrcnm(jpsil) 
     226      CALL restget(nutrst,clname1,jpi,jpj,1,0,llog,sedcal(:,:)) 
     227      CALL restget(nutrst,clname2,jpi,jpj,1,0,llog,sedsil(:,:)) 
     228      CALL restget(nutrst,clname,jpi,jpj,1,0,llog,sedpoc(:,:)) 
     229 
     230#elif defined key_cfc 
     231      clname='qint' 
     232      CALL restget(nutrst,clname,jpi,jpj,jptra,0,llog,qint(:,:,:)) 
     233      clname1='qtr' 
     234      CALL restget(nutrst,clname1,jpi,jpj,jptra,0,llog,qtr(:,:,:))          
    237235#endif 
    238236 
    239 #if defined key_trc_hamocc3 || defined key_trc_pisces  
    240  
    241  
    242     !!  Initialization of chemical variables of the carbon cycle 
    243     !!  -------------------------------------------------------- 
    244  
    245         DO jk = 1,jpk 
    246           DO jj = 1,jpj 
     237#if defined key_trc_pisces  
     238      !!  Initialization of chemical variables of the carbon cycle 
     239      !!  -------------------------------------------------------- 
     240 
     241      DO jk = 1,jpk 
     242         DO jj = 1,jpj 
    247243            DO ji = 1,jpi 
    248               caralk = trn(ji,jj,jk,jptal)-       & 
    249               &        borat(ji,jj,jk)/(1.+1.E-8/(rtrn+akb3(ji,jj,jk))) 
    250               co3(ji,jj,jk)=(caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk)   & 
    251               &        +(1.-tmask(ji,jj,jk))*.5e-3 
    252               bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) 
    253               hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk))     & 
    254               &  *tmask(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9 
    255               h2co3(ji,jj) = 1.e-5 
     244               caralk = trn(ji,jj,jk,jptal)-       & 
     245                  &        borat(ji,jj,jk)/(1.+1.E-8/(rtrn+akb3(ji,jj,jk))) 
     246               co3(ji,jj,jk)=(caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk)   & 
     247                  &        +(1.-tmask(ji,jj,jk))*.5e-3 
     248               bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) 
     249               hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk))     & 
     250                  &  *tmask(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9 
     251               h2co3(ji,jj) = 1.e-5 
    256252            ENDDO 
    257           ENDDO 
    258         ENDDO 
     253         ENDDO 
     254      ENDDO 
    259255#endif 
    260256 
    261 END SUBROUTINE trc_rst 
    262  
    263 SUBROUTINE trc_wri(kt) 
    264    !! ================================================================================== 
    265    !! 
    266    !!                       ROUTINE trc_wri 
    267    !!                     ****************** 
    268    !! 
    269    !!  PURPOSE : 
    270    !!  --------- 
    271    !!     WRITE restart fields in nutwrs 
    272    !!   METHOD : 
    273    !!   ------- 
    274    !! 
    275    !!   nutwrs FILE: 
    276    !!   each nstock time step , SAVE fields which are necessary for 
    277    !!   passive tracer restart 
    278    !! 
    279    !! 
    280    !!   INPUT : 
    281    !!   ----- 
    282    !!      argument 
    283    !!              kt              : time step 
    284    !!      COMMON 
    285    !!            /cottrc/          : passive tracers fields (before,now 
    286    !!                                  ,after) 
    287    !! 
    288    !!   OUTPUT : 
    289    !!   ------ 
    290    !!      FILE 
    291    !!           nutwrs          : standard restart fields OUTPUT 
    292    !! 
    293    !!   WORKSPACE : 
    294    !!   --------- 
    295    !!      ji,jj,jk,jl,ino0,it0,iarak0 
    296    !! 
    297    !!   History: 
    298    !!   -------- 
    299    !!      original : 96-12 
    300    !!      addition : 99-12 (M.-A. Foujols) NetCDF FORMAT with ioipsl 
    301    !!      additions : 00-05 (A. Estublier) 
    302    !!                  TVD Limiter Scheme : key_trc_tvd 
    303    !!      additions : 01-01 (M.A Foujols, E. Kestenare) bug fix: restclo 
    304    !!      additions : 01-01 (O. Aumont, E. Kestenare) 
    305    !!                  write restart file for sediments 
    306    !!      additions : 01-05 (O. Aumont, E. Kestenare) 
    307    !!                  write restart file for calcite and silicate sediments 
    308    !!   05-03 (O. Aumont and A. El Moussaoui) F90 
    309    !!========================================================================================! 
     257   END SUBROUTINE trc_rst 
     258 
     259   SUBROUTINE trc_wri(kt) 
     260      !! ================================================================================== 
     261      !! 
     262      !!                       ROUTINE trc_wri 
     263      !!                     ****************** 
     264      !! 
     265      !!  PURPOSE : 
     266      !!  --------- 
     267      !!     WRITE restart fields in nutwrs 
     268      !!   METHOD : 
     269      !!   ------- 
     270      !! 
     271      !!   nutwrs FILE: 
     272      !!   each nstock time step , SAVE fields which are necessary for 
     273      !!   passive tracer restart 
     274      !! 
     275      !! 
     276      !!   INPUT : 
     277      !!   ----- 
     278      !!      argument 
     279      !!              kt              : time step 
     280      !!      COMMON 
     281      !!            /cottrc/          : passive tracers fields (before,now 
     282      !!                                  ,after) 
     283      !! 
     284      !!   OUTPUT : 
     285      !!   ------ 
     286      !!      FILE 
     287      !!           nutwrs          : standard restart fields OUTPUT 
     288      !! 
     289      !!   WORKSPACE : 
     290      !!   --------- 
     291      !!      ji,jj,jk,jl,ino0,it0,iarak0 
     292      !! 
     293      !!   History: 
     294      !!   -------- 
     295      !!      original : 96-12 
     296      !!      addition : 99-12 (M.-A. Foujols) NetCDF FORMAT with ioipsl 
     297      !!      additions : 00-05 (A. Estublier) 
     298      !!                  TVD Limiter Scheme : key_trc_tvd 
     299      !!      additions : 01-01 (M.A Foujols, E. Kestenare) bug fix: restclo 
     300      !!      additions : 01-01 (O. Aumont, E. Kestenare) 
     301      !!                  write restart file for sediments 
     302      !!      additions : 01-05 (O. Aumont, E. Kestenare) 
     303      !!                  write restart file for calcite and silicate sediments 
     304      !!   05-03 (O. Aumont and A. El Moussaoui) F90 
     305      !!========================================================================================! 
    310306      !! * Modules used 
    311307      USE ioipsl 
    312308 
    313      !! * Arguments 
     309      !! * Arguments 
    314310      !! ----------- 
    315311      INTEGER, INTENT( in ) :: kt 
     
    322318 
    323319      INTEGER :: jn,   & 
    324                  ino0,it0,iarak0,     & 
    325                  ic,jc,ji,jj,jk,      & 
    326                  itime 
     320         ino0,it0,iarak0,     & 
     321         ic,jc,ji,jj,jk,      & 
     322         itime 
    327323 
    328324      REAL(wp) :: zdate0, zinfo(3),zdiag_var,    & 
    329                   zdiag_varmin, zdiag_varmax 
    330  
    331  
    332    !! 1. OUTPUT of restart fields (nutwrs) 
    333    !! --------------------------- 
     325         zdiag_varmin, zdiag_varmax 
     326 
     327 
     328      !! 1. OUTPUT of restart fields (nutwrs) 
     329      !! --------------------------- 
    334330 
    335331      IF( kt == nit000 ) THEN 
     
    342338      IF( MOD(kt,nstock) == 0 .OR. kt == nitend ) THEN 
    343339 
    344    !! 0. initialisations 
    345    !! ------------------ 
     340         !! 0. initialisations 
     341         !! ------------------ 
    346342 
    347343         IF(lwp) WRITE(numout,*) ' ' 
    348344         IF(lwp) WRITE(numout,*) 'trc_wri : write the passive tracer restart file in NetCDF format ',   & 
    349                                               'at it= ',kt,' date= ',ndastp 
     345            'at it= ',kt,' date= ',ndastp 
    350346         IF(lwp) WRITE(numout,*) '~~~~~~~~~' 
    351347 
    352348 
    353           ino0 =no 
    354           it0  =kt 
    355 #if defined key_trc_cen2 || defined key_trc_tvd 
    356           iarak0=1 
    357 #else 
    358           iarak0=0 
    359 #endif 
    360  
    361           zinfo(1)=FLOAT(ino0) 
    362           zinfo(2)=FLOAT(it0) 
    363           zinfo(3)=FLOAT(iarak0) 
    364  
    365    !! 1. WRITE in nutwrs 
    366    !! ------------------ 
    367    !!... first information 
    368  
    369           INQUIRE (FILE=trestart,EXIST=clbon) 
    370           IF(clbon) THEN 
    371               OPEN(UNIT=nutwrs,FILE=trestart,STATUS='old') 
    372               CLOSE(nutwrs,STATUS='delete') 
    373           ENDIF 
    374  
    375           ic=1 
    376           DO jc=1,16 
     349         ino0 =no 
     350         it0  =kt 
     351         IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN 
     352            iarak0 = 1 
     353         ELSE 
     354            iarak0=0 
     355         ENDIF 
     356 
     357         zinfo(1)=FLOAT(ino0) 
     358         zinfo(2)=FLOAT(it0) 
     359         zinfo(3)=FLOAT(iarak0) 
     360 
     361         !! 1. WRITE in nutwrs 
     362         !! ------------------ 
     363         !!... first information 
     364 
     365         INQUIRE (FILE=trestart,EXIST=clbon) 
     366         IF(clbon) THEN 
     367            OPEN(UNIT=nutwrs,FILE=trestart,STATUS='old') 
     368            CLOSE(nutwrs,STATUS='delete') 
     369         ENDIF 
     370 
     371         ic=1 
     372         DO jc=1,16 
    377373            IF(cexper(jc:jc) /= ' ') ic = jc 
    378           END DO 
    379           WRITE(cln,'("_",i2.2,i2.2,i2.2,"_restart.trc")') nyear, nmonth, nday 
    380           clname=cexper(1:ic)//cln 
    381           ic=1 
    382           DO jc=1,48 
     374         END DO 
     375         WRITE(cln,'("_",i2.2,i2.2,i2.2,"_restart.trc")') nyear, nmonth, nday 
     376         clname=cexper(1:ic)//cln 
     377         ic=1 
     378         DO jc=1,48 
    383379            IF(clname(jc:jc) /= ' ') ic=jc 
    384           END DO 
    385           trestart=clname(1:ic)//".nc" 
    386           itime=0 
    387           CALL ymds2ju(nyear,nmonth,nday,0.0,zdate0) 
    388           CALL restini('NONE',jpi,jpj,glamt,gphit,jpk,gdept,clname           & 
    389       &        ,itime,zdate0,rdt*nstock,nutwrs) 
    390  
    391           CALL restput(nutwrs,'info',1,1,3,0,zinfo) 
    392  
    393    ! prognostic variables 
    394    ! -------------------- 
     380         END DO 
     381         trestart=clname(1:ic)//".nc" 
     382         itime=0 
     383         CALL ymds2ju(nyear,nmonth,nday,0.0,zdate0) 
     384         CALL restini('NONE',jpi,jpj,glamt,gphit,jpk,gdept,clname           & 
     385            &        ,itime,zdate0,rdt*nstock,nutwrs) 
     386 
     387         CALL restput(nutwrs,'info',1,1,3,0,zinfo) 
     388 
     389         ! prognostic variables 
     390         ! -------------------- 
    395391 
    396392         DO jn=1,jptra 
     
    398394            CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trn(:,:,:,jn)) 
    399395 
    400          zdiag_var=0. 
    401          zdiag_varmin=0. 
    402          zdiag_varmax=0. 
    403          IF (lwp) WRITE(numout,*) '----TRACER STAT----' 
    404  
    405          DO ji=1,jpi 
    406             DO jj=1,jpj 
    407               DO jk=1,jpk 
    408  
    409               zdiag_var=zdiag_var+tmask(ji,jj,jk)*trn(ji,jj,jk,jn) 
    410  
    411               IF (tmask(ji,jj,jk).EQ.1.) THEN 
    412                   IF (zdiag_varmin.GT.trn(ji,jj,jk,jn))        & 
    413                      zdiag_varmin =  trn(ji,jj,jk,jn) 
    414                   IF (zdiag_varmax.LT.trn(ji,jj,jk,jn))        & 
    415                      zdiag_varmax =  trn(ji,jj,jk,jn) 
    416  
    417               ENDIF 
    418  
    419               END DO 
     396            zdiag_var=0. 
     397            zdiag_varmin=0. 
     398            zdiag_varmax=0. 
     399            IF (lwp) WRITE(numout,*) '----TRACER STAT----' 
     400 
     401            DO ji=1,jpi 
     402               DO jj=1,jpj 
     403                  DO jk=1,jpk 
     404 
     405                     zdiag_var=zdiag_var+tmask(ji,jj,jk)*trn(ji,jj,jk,jn) 
     406 
     407                     IF (tmask(ji,jj,jk).EQ.1.) THEN 
     408                        IF (zdiag_varmin.GT.trn(ji,jj,jk,jn))        & 
     409                           zdiag_varmin =  trn(ji,jj,jk,jn) 
     410                        IF (zdiag_varmax.LT.trn(ji,jj,jk,jn))        & 
     411                           zdiag_varmax =  trn(ji,jj,jk,jn) 
     412 
     413                     ENDIF 
     414 
     415                  END DO 
     416               END DO 
    420417            END DO 
     418 
     419 
     420            zdiag_var=zdiag_var/(jpi*jpj*jpk) 
     421 
     422            IF(lwp) WRITE(numout,*) 'MEAN NO ',jn,' =',zdiag_var,'MIN= '  & 
     423               ,zdiag_varmin,'MAX= ',zdiag_varmax 
     424 
    421425         END DO 
    422426 
    423  
    424          zdiag_var=zdiag_var/(jpi*jpj*jpk) 
    425  
    426          IF(lwp) WRITE(numout,*) 'MEAN NO ',jn,' =',zdiag_var,'MIN= '  & 
    427              ,zdiag_varmin,'MAX= ',zdiag_varmax 
    428  
    429          END DO 
    430  
    431           DO jn=1,jptra 
     427         DO jn=1,jptra 
    432428            clname='TRB'//ctrcnm(jn) 
    433429            CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trb(:,:,:,jn)) 
    434           END DO 
    435  
    436 #if defined key_trc_hamocc3 
    437              clname='SED'//ctrcnm(jppoc) 
    438              clname1='SED'//ctrcnm(jpcal) 
    439              clname2='SED'//ctrcnm(jpsil) 
    440              CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedcal(:,:)) 
    441              CALL restput(nutwrs,clname2,jpi,jpj,1,0,sedsil(:,:)) 
    442              CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpoc(:,:)) 
    443 #elif defined key_trc_npzd || defined key_trc_lobster1 
    444              clname='SED'//ctrcnm(jpdet) 
    445              CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpoc(:,:)) 
     430         END DO 
     431 
     432 
     433#if defined key_trc_lobster1 
     434         clname='SEDB'//ctrcnm(jpdet) 
     435         clname1='SEDN'//ctrcnm(jpdet) 
     436         CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpocb(:,:)) 
     437         CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedpocn(:,:)) 
    446438#elif defined key_trc_pisces 
    447              clname='SED'//ctrcnm(jppoc) 
    448              clname1='SED'//ctrcnm(jpcal) 
    449              clname2='SED'//ctrcnm(jpsil) 
    450              CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedcal(:,:)) 
    451              CALL restput(nutwrs,clname2,jpi,jpj,1,0,sedsil(:,:)) 
    452              CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpoc(:,:)) 
    453  
    454              clname='Silicalim' 
    455              CALL restput(nutwrs,clname,jpi,jpj,1,0,xksi(:,:)) 
     439         clname='SED'//ctrcnm(jppoc) 
     440         clname1='SED'//ctrcnm(jpcal) 
     441         clname2='SED'//ctrcnm(jpsil) 
     442         CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedcal(:,:)) 
     443         CALL restput(nutwrs,clname2,jpi,jpj,1,0,sedsil(:,:)) 
     444         CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpoc(:,:)) 
     445 
     446         clname='Silicalim' 
     447         CALL restput(nutwrs,clname,jpi,jpj,1,0,xksi(:,:)) 
     448#elif defined key_cfc 
     449         clname='qint' 
     450         CALL restput(nutwrs,clname,jpi,jpj,jptra,0,qint(:,:,:)) 
     451         clname1='qtr' 
     452         CALL restput(nutwrs,clname1,jpi,jpj,jptra,0,qtr(:,:,:)) 
    456453#endif 
    457454 
    458           CALL restclo(nutwrs) 
    459  
    460       ENDIF 
    461  
    462 END SUBROUTINE trc_wri 
     455 
     456         CALL restclo(nutwrs) 
     457 
     458      ENDIF 
     459 
     460   END SUBROUTINE trc_wri 
     461 
     462#endif 
    463463 
    464464#else 
    465  
    466 SUBROUTINE trc_rst 
    467    !! no passive tracers 
    468 END SUBROUTINE trc_rst 
    469  
    470 SUBROUTINE trc_wri(kt) 
    471      !!! no passive tracers 
    472      INTEGER, INTENT ( in ) :: kt 
     465   !!====================================================================== 
     466   !!  Empty module : No passive tracer 
     467   !!====================================================================== 
     468CONTAINS 
     469 
     470   SUBROUTINE trc_rst 
     471      !! no passive tracers 
     472   END SUBROUTINE trc_rst 
     473 
     474   SUBROUTINE trc_wri(kt) 
     475      !! no passive tracers 
     476      INTEGER, INTENT ( in ) :: kt 
    473477      WRITE(*,*) 'trc_wri: You should not have seen this print! error?', kt 
    474 END SUBROUTINE trc_wri 
    475  
    476 #endif  
    477  
     478   END SUBROUTINE trc_wri 
     479    
    478480#endif 
    479  
    480  
    481 END MODULE trcrst   
     481    
     482END MODULE trcrst 
  • trunk/NEMO/TOP_SRC/trcrst_fdir.h90

    r274 r335  
    1 SUBROUTINE trc_rst 
    2    !!=========================================================================================== 
    3    !! 
    4    !!                       ROUTINE trc_rst 
    5    !!                     ******************* 
    6    !! 
    7    !!------------------------------------------------------------------------ 
    8    !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    9    !! $Header$ 
    10    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    11    !!---------------------------------------------------------------------- 
    12  
     1   SUBROUTINE trc_rst 
     2      !!=========================================================================================== 
     3      !! 
     4      !!                       ROUTINE trc_rst 
     5      !!                     ******************* 
     6      !! 
     7      !!------------------------------------------------------------------------ 
     8      !!  TOP 1.0,  LOCEAN-IPSL (2005) 
     9      !!---------------------------------------------------------------------- 
     10       
    1311      !! * Local declarations 
    1412      INTEGER :: ino0,ino1,it0,it1,idast1,jn,iarak0,iarak1 
    1513      INTEGER ::   ibloc, ilglo 
    1614      INTEGER :: inum   ! temporary logical unit 
    17  
     15      REAL(wp),DIMENSION(jpi,jpj) :: zq 
    1816      ! open restart file 
    1917      ibloc = 4096 
    2018      ilglo = ibloc*((jpiglo*jpjglo*jpbyt-1 )/ibloc+1) 
    2119      CALL ctlopn(inum,'restarti.trc','OLD','UNFORMATTED','DIRECT',   & 
    22                   ilglo,numout,lwp,1) 
     20         ilglo,numout,lwp,1) 
    2321      ! restart options 
    2422      IF(nrsttr == 0) THEN 
     
    3836      it0  =nit000 
    3937 
    40 #if defined key_trc_cen2 
    41       iarak0=1 
    42 #else 
    43       iarak0=0 
    44 #endif 
     38      IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN 
     39         iarak0 = 1 
     40      ELSE 
     41         iarak0=0 
     42      ENDIF 
    4543 
    4644      IF(lwp) THEN 
    47           WRITE(numout,*) ' ' 
    48           WRITE(numout,*) ' *** trcrst beginning of restart for' 
    49           WRITE(numout,*) ' passive tracer' 
    50           WRITE(numout,*) ' the present run :' 
    51           WRITE(numout,*) '   number job is  : ',no 
    52           WRITE(numout,*) '   with the time nit000 : ',nit000 
    53           IF(iarak0.eq.1) then 
    54               WRITE(numout,*) '   and before fields for Arakawa sheme ' 
    55           ENDIF  
    56           WRITE(numout,*) ' ' 
     45         WRITE(numout,*) ' ' 
     46         WRITE(numout,*) ' *** trcrst beginning of restart for' 
     47         WRITE(numout,*) ' passive tracer' 
     48         WRITE(numout,*) ' the present run :' 
     49         WRITE(numout,*) '   number job is  : ',no 
     50         WRITE(numout,*) '   with the time nit000 : ',nit000 
     51         IF(iarak0.eq.1) then 
     52            WRITE(numout,*) '   and before fields for Arakawa sheme ' 
     53         ENDIF 
     54         WRITE(numout,*) ' ' 
    5755      ENDIF 
    5856 
     
    6563 
    6664      IF(lwp) THEN 
    67           WRITE(numout,*) ' ' 
    68           WRITE(numout,*) ' READ nutrst with ' 
    69           WRITE(numout,*) '   number job is  : ',ino1 
    70           WRITE(numout,*) '   with the time it : ',it1 
    71           IF(iarak1.eq.1) then 
    72               WRITE(numout,*) '   and before fields for Arakawa sheme ' 
    73           ENDIF  
    74           WRITE(numout,*) ' ' 
     65         WRITE(numout,*) ' ' 
     66         WRITE(numout,*) ' READ nutrst with ' 
     67         WRITE(numout,*) '   number job is  : ',ino1 
     68         WRITE(numout,*) '   with the time it : ',it1 
     69         IF(iarak1.eq.1) then 
     70            WRITE(numout,*) '   and before fields for Arakawa sheme ' 
     71         ENDIF 
     72         WRITE(numout,*) ' ' 
    7573      ENDIF 
    7674 
     
    7876 
    7977      IF((it0-it1) /= 1 .AND. ABS(nrsttr) == 1) THEN 
    80           IF(lwp) THEN 
    81               WRITE(numout,*) ' ===>>>> : problem with nit000 for the',   & 
    82                  ' passive tracer restart' 
    83               WRITE(numout,*) ' =======                              ',   & 
    84                  ' ======================' 
    85               WRITE(numout,*) ' we stop. verify the FILE' 
    86               WRITE(numout,*) ' or rerun with the value  0 for the' 
    87               WRITE(numout,*) ' control of time PARAMETER   nrstdt' 
    88               WRITE(numout,*) ' ' 
    89           ENDIF 
    90           STOP 'trc_rst' 
     78         IF(lwp) THEN 
     79            WRITE(numout,*) ' ===>>>> : problem with nit000 for the',   & 
     80               ' passive tracer restart' 
     81            WRITE(numout,*) ' =======                              ',   & 
     82               ' ======================' 
     83            WRITE(numout,*) ' we stop. verify the FILE' 
     84            WRITE(numout,*) ' or rerun with the value  0 for the' 
     85            WRITE(numout,*) ' control of time PARAMETER   nrstdt' 
     86            WRITE(numout,*) ' ' 
     87         ENDIF 
     88         STOP 'trc_rst' 
    9189      ENDIF 
    9290 
     
    9492 
    9593      IF (iarak0 /= iarak1) THEN 
    96           IF(lwp) THEN 
    97               WRITE(numout,*) ' ===>>>> : problem with the',    & 
    98                  ' passive tracer restart file' 
    99               WRITE(numout,*) ' =======                              ',   & 
    100                  ' ===========================' 
    101               WRITE(numout,*) ' we stop. verify the FILE' 
    102               WRITE(numout,*) ' before field required IF 1=',iarak0 
    103               WRITE(numout,*) ' before field present in file IF 1=',    & 
    104                  iarak1 
    105               WRITE(numout,*) ' ' 
    106           ENDIF 
    107           STOP 'trc_rst' 
     94         IF(lwp) THEN 
     95            WRITE(numout,*) ' ===>>>> : problem with the',    & 
     96               ' passive tracer restart file' 
     97            WRITE(numout,*) ' =======                              ',   & 
     98               ' ===========================' 
     99            WRITE(numout,*) ' we stop. verify the FILE' 
     100            WRITE(numout,*) ' before field required IF 1=',iarak0 
     101            WRITE(numout,*) ' before field present in file IF 1=',    & 
     102               iarak1 
     103            WRITE(numout,*) ' ' 
     104         ENDIF 
     105         STOP 'trc_rst' 
    108106      ENDIF 
    109107 
     
    112110 
    113111      DO jn=1,jptra 
    114         CALL read3(inum,trn(1,1,1,jn), jn + 1 ) 
     112         CALL read3(inum,trn(1,1,1,jn), jn + 1 ) 
    115113      END DO 
    116114 
    117115      DO jn=1,jptra 
    118         CALL read3(inum,trb(1,1,1,jn), jptra + jn + 1 ) 
     116         CALL read3(inum,trb(1,1,1,jn), jptra + jn + 1 ) 
    119117      END DO 
    120118 
    121 #if defined key_trc_hamocc3 
    122       CALL read2(inum,sedcal(:,:),jpk,2*jptra+2) 
    123       CALL read2(inum,sedsil(:,:),jpk,2*jptra+3) 
    124       CALL read2(inum,sedpoc(:,:),jpk,2*jptra+4) 
    125 #elif defined key_trc_npzd || defined key_trc_lobster1 
    126       CALL read2(inum,sedpoc(:,:),jpk,2*jptra+2) 
     119#if defined key_trc_lobster1 
     120      CALL read2(inum,sedpocb(:,:),jpk,2*jptra+2) 
     121      CALL read2(inum,sedpocn(:,:),jpk,2*jptra+3) 
    127122#elif defined key_trc_pisces 
    128123 
     
    133128      CALL read2(inum,sedsil(:,:),jpk,2*jptra+4) 
    134129      CALL read2(inum,sedpoc(:,:),jpk,2*jptra+5) 
     130 
     131#elif defined key_cfc 
     132      DO jn=1,jptra 
     133         CALL read2(inum,zq(:,:),jpk,2*jptra+2) 
     134         qint(:,:,jn) = zq(:,:) 
     135         CALL read2(inum,zq(:,:),jpk,2*jptra+3) 
     136         qtr(:,:,jn)=zq(:,:) 
     137      ENDDO 
    135138#endif 
    136139 
    137 #if defined key_trc_hamocc3 || defined key_trc_pisces 
    138  
    139  
    140     !!  Initialization of chemical variables of the carbon cycle 
    141     !!  -------------------------------------------------------- 
    142  
    143         DO jk = 1,jpk 
    144           DO jj = 1,jpj 
     140#if defined key_trc_pisces 
     141 
     142 
     143      !!  Initialization of chemical variables of the carbon cycle 
     144      !!  -------------------------------------------------------- 
     145 
     146      DO jk = 1,jpk 
     147         DO jj = 1,jpj 
    145148            DO ji = 1,jpi 
    146               caralk = trn(ji,jj,jk,jptal)-       & 
    147               &        borat(ji,jj,jk)/(1.+1.E-8/(rtrn+akb3(ji,jj,jk))) 
    148               co3(ji,jj,jk)=(caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk)   & 
    149               &        +(1.-tmask(ji,jj,jk))*.5e-3 
    150               bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) 
    151               hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk))     & 
    152               &  *tmask(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9 
    153               h2co3(ji,jj) = 1.e-5 
     149               caralk = trn(ji,jj,jk,jptal)-       & 
     150                  &        borat(ji,jj,jk)/(1.+1.E-8/(rtrn+akb3(ji,jj,jk))) 
     151               co3(ji,jj,jk)=(caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk)   & 
     152                  &        +(1.-tmask(ji,jj,jk))*.5e-3 
     153               bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) 
     154               hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk))     & 
     155                  &  *tmask(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9 
     156               h2co3(ji,jj) = 1.e-5 
    154157            ENDDO 
    155           ENDDO 
    156         ENDDO 
     158         ENDDO 
     159      ENDDO 
    157160#endif 
    158161 
     
    161164   END SUBROUTINE trc_rst 
    162165 
    163 SUBROUTINE trc_wri(kt) 
    164    !! ================================================================================== 
    165    !! 
    166    !!                       ROUTINE trc_wri 
    167    !!                     ****************** 
    168    !! 
    169    !!========================================================================================! 
    170      !! * Arguments 
     166   SUBROUTINE trc_wri(kt) 
     167      !! ================================================================================== 
     168      !! 
     169      !!                       ROUTINE trc_wri 
     170      !!                     ****************** 
     171      !! 
     172      !!========================================================================================! 
     173      !! * Arguments 
    171174      !! ----------- 
    172175      INTEGER, INTENT( in ) :: kt 
     
    175178      INTEGER :: jn 
    176179      INTEGER :: ino0,it0,iarak0 
     180      REAL(wp),DIMENSION(jpi,jpj) :: zq 
    177181 
    178182      IF( kt == nit000 ) THEN 
     
    190194         ! ------------------ 
    191195 
    192           IF(lwp) THEN 
    193               WRITE(numout,*) ' ' 
    194               WRITE(numout,*)       & 
    195               &  ' trcwri: restart OUTPUT done in nutwrs = ',nutwrs    & 
    196               &  ,' at it= ',kt,' date= ',ndastp 
    197               WRITE(numout,*) ' -------' 
    198           ENDIF 
    199  
    200           ino0 =no 
    201           it0  =kt 
    202  
    203 #if defined key_trc_cen2 
    204           iarak0=1 
    205 #else 
    206           iarak0=0 
    207 #endif 
     196         IF(lwp) THEN 
     197            WRITE(numout,*) ' ' 
     198            WRITE(numout,*)       & 
     199               &  ' trcwri: restart OUTPUT done in nutwrs = ',nutwrs    & 
     200               &  ,' at it= ',kt,' date= ',ndastp 
     201            WRITE(numout,*) ' -------' 
     202         ENDIF 
     203 
     204         ino0 =no 
     205         it0  =kt 
     206         IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN 
     207            iarak0 = 1 
     208         ELSE 
     209            iarak0=0 
     210         ENDIF 
    208211 
    209212         ! 1. Write in nutwrs 
     
    213216            ino0, it0, iarak0 
    214217 
    215           DO jn=1,jptra 
     218         DO jn=1,jptra 
    216219            CALL write3(nutwrs,trn(1,1,1,jn), jn + 1 ) 
    217           END DO 
    218  
    219           DO jn=1,jptra 
     220         END DO 
     221 
     222         DO jn=1,jptra 
    220223            CALL write3(nutwrs,trb(1,1,1,jn), jptra + jn + 1 ) 
    221           END DO 
    222  
    223 #if defined key_trc_hamocc3 
    224              CALL write2(nutwrs,sedcal,jpk,2*jptra+2) 
    225              CALL write2(nutwrs,sedsil,jpk,2*jptra+3) 
    226              CALL write2(nutwrs,sedpoc,jpk,2*jptra+4) 
    227 #elif defined key_trc_npzd || defined key_trc_lobster1 
    228              CALL write2(nutwrs,sedpoc,jpk,2*jptra+2) 
     224         END DO 
     225 
     226#if defined key_trc_lobster1 
     227         CALL write2(nutwrs,sedpocb,jpk,2*jptra+2) 
     228         CALL write2(nutwrs,sedpocn,jpk,2*jptra+3) 
    229229#elif defined key_trc_pisces 
    230              CALL write2(nutwrs,xksi,jpk,2*jptra+2) 
    231  
    232              CALL write2(nutwrs,sedcal,jpk,2*jptra+3) 
    233              CALL write2(nutwrs,sedsil,jpk,2*jptra+4) 
    234              CALL write2(nutwrs,sedpoc,jpk,2*jptra+5) 
     230         CALL write2(nutwrs,xksi,jpk,2*jptra+2) 
     231 
     232         CALL write2(nutwrs,sedcal,jpk,2*jptra+3) 
     233         CALL write2(nutwrs,sedsil,jpk,2*jptra+4) 
     234         CALL write2(nutwrs,sedpoc,jpk,2*jptra+5) 
     235#elif defined key_cfc 
     236         DO jn=1,jptra 
     237            zq(:,:)=qint(:,:,jn) 
     238            CALL write2(nutwrs,zq,jpk,2*jptra+2) 
     239            zq(:,:)=qtr(:,:,jn) 
     240            CALL write2(nutwrs,zq,jpk,2*jptra+3) 
     241         ENDDO 
    235242#endif 
    236243      ENDIF 
  • trunk/NEMO/TOP_SRC/trcsms.F90

    r274 r335  
    88   !!=========================================================================================== 
    99   !!  TOP 1.0,  LOCEAN-IPSL (2005) 
    10    !! $Header$ 
    11    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    1210   !!---------------------------------------------------------------------- 
     11#if defined key_passivetrc    
     12   !! * Modules used 
     13   !! ============== 
     14   USE oce_trc 
     15   USE trc 
     16   USE trcfreons 
    1317 
    14       !! * Modules used 
    15       !! ============== 
    16       USE oce_trc 
    17       USE trc 
    18  
    19       IMPLICIT NONE 
    20       PRIVATE 
     18   IMPLICIT NONE 
     19   PRIVATE 
    2120 
    2221   !! * Accessibility 
    2322   PUBLIC trc_sms 
    2423 
    25 #if defined key_passivetrc 
    26  
    2724CONTAINS 
    2825 
    29 SUBROUTINE trc_sms( kt ) 
    30    !!=========================================================================================== 
    31    !! 
    32    !!                       ROUTINE trcsms 
    33    !!                     ***************** 
    34    !! 
    35    !!  PURPOSE : 
    36    !!  --------- 
    37    !!          time loop of opa for passive tracer 
    38    !! 
    39    !!   METHOD : 
    40    !!   ------- 
    41    !!      compute the well/spring evolution 
    42    !! 
    43    !!   INPUT : 
    44    !!   ----- 
    45    !!      argument 
    46    !!              ktask           : task identificator 
    47    !!              kt              : time step 
    48    !!      COMMON 
    49    !!            all the COMMON defined in opa 
    50    !! 
    51    !! 
    52    !!   OUTPUT :        : no 
    53    !!   ------ 
    54    !! 
    55    !!   WORKSPACE : 
    56    !!   --------- 
    57    !! 
    58    !!   EXTERNAL : 
    59    !!   -------- 
    60    !!      trcbio, trcsed, trcopt for NPZD or LOBSTER1 models 
    61    !! 
    62    !!      h3cprg for HAMOC3 and P3ZD models 
    63    !! 
    64    !! 
    65    !!   History: 
    66    !!   -------- 
    67    !!      original  : 96-11 
    68    !!      additions : 99-07 (M. Levy) 
    69    !!                  04-00 (O. Aumont, M.A. Foujols) HAMOCC3 and P3ZD 
    70    !!                  12-00 (O. Aumont, E. Kestenare) add trcexp for instantaneous export  
    71    !!   05-03 (O. Aumont and A. El Moussaoui) F90 
    72    !! ------------------------------------------------------------------------------------- 
     26   SUBROUTINE trc_sms( kt ) 
     27      !!=========================================================================================== 
     28      !! 
     29      !!                       ROUTINE trcsms 
     30      !!                     ***************** 
     31      !! 
     32      !!  PURPOSE : 
     33      !!  --------- 
     34      !!          time loop of opa for passive tracer 
     35      !! 
     36      !!   METHOD : 
     37      !!   ------- 
     38      !!      compute the well/spring evolution 
     39      !! 
     40      !!   INPUT : 
     41      !!   ----- 
     42      !!      argument 
     43      !!              ktask           : task identificator 
     44      !!              kt              : time step 
     45      !!      COMMON 
     46      !!            all the COMMON defined in opa 
     47      !! 
     48      !! 
     49      !!   OUTPUT :        : no 
     50      !!   ------ 
     51      !! 
     52      !!   WORKSPACE : 
     53      !!   --------- 
     54      !! 
     55      !!   EXTERNAL : 
     56      !!   -------- 
     57      !!      trcbio, trcsed, trcopt for NPZD or LOBSTER1 models 
     58      !! 
     59      !!      h3cprg for HAMOC3 and P3ZD models 
     60      !! 
     61      !! 
     62      !!   History: 
     63      !!   -------- 
     64      !!      original  : 96-11 
     65      !!      additions : 99-07 (M. Levy) 
     66      !!                  04-00 (O. Aumont, M.A. Foujols) HAMOCC3 and P3ZD 
     67      !!                  12-00 (O. Aumont, E. Kestenare) add trcexp for instantaneous export  
     68      !!   05-03 (O. Aumont and A. El Moussaoui) F90 
     69      !! ------------------------------------------------------------------------------------- 
    7370 
    74    !! * Arguments 
    75    !! ----------- 
     71      !! * Arguments 
     72      !! ----------- 
    7673      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
    7774 
    78    !! this ROUTINE is called only every ndttrc time step 
    79    !! -------------------------------------------------- 
     75      !! this ROUTINE is called only every ndttrc time step 
     76      !! -------------------------------------------------- 
    8077 
    8178      IF ( MOD(kt,ndttrc) /= 0) RETURN 
    8279 
    83    !! this first routines are parallelized on vertical slab 
    84    !! ------------------------------------------------------ 
     80      !! this first routines are parallelized on vertical slab 
     81      !! ------------------------------------------------------ 
    8582 
    86 #if defined key_trc_npzd || defined key_trc_lobster1 
     83#if defined key_trc_lobster1 
    8784 
    88    !! tracers: optical model 
    89    !! ---------------------- 
     85      !! tracers: optical model 
     86      !! ---------------------- 
    9087 
    91        CALL trcopt( kt) 
     88      CALL trcopt( kt) 
    9289 
    93    !! tracers: biological model 
    94    !! ------------------------- 
     90      !! tracers: biological model 
     91      !! ------------------------- 
    9592 
    96        CALL trcbio( kt) 
     93      CALL trcbio( kt) 
    9794 
    98    !! tracers: sedimentation model 
    99    !! ---------------------------- 
     95      !! tracers: sedimentation model 
     96      !! ---------------------------- 
    10097 
    101        CALL trcsed(kt) 
    102        CALL trcexp 
     98      CALL trcsed(kt) 
     99      CALL trcexp(kt) 
    103100 
    104 #elif defined key_trc_hamocc3 
    105101 
    106    !! h3cprg: main PROGRAM for HAMOCC3 or P3ZD models 
    107    !! ----------------------------------------------- 
    108        CALL h3cprg(kt) 
    109102 
    110103#elif defined key_trc_pisces 
    111104 
    112    !! p4zprg: main PROGRAM for PISCES  
    113    !! ------------------------------- 
    114        CALL p4zprg(kt) 
    115 #else 
     105      !! p4zprg: main PROGRAM for PISCES  
     106      !! ------------------------------- 
     107      CALL p4zprg(kt) 
    116108 
    117     !! SMS to DO 
     109      !! SMS to DO 
    118110 
    119 #if defined key_cfc 
     111#elif defined key_cfc 
    120112 
    121    !! CFC's code taken from K. Rodgers 
     113      !! CFC's code taken from K. Rodgers 
    122114 
    123    !! This part is still experimental 
    124    !! ------------------------------- 
     115      !! This part is still experimental 
     116      !! ------------------------------- 
    125117 
    126        CALL trcfreons(kt) 
    127  
    128 #elif defined key_gosac 
    129  
    130    !! C14 tracer modeled according to the OCMIP protocol 
    131    !! This part has not been really tested in this configuration 
    132  
    133    !! Compute the alkalinity 
    134  
    135           CALL alkal(kt) 
    136  
    137    !! Compute the radioactive decay 
    138  
    139           CALL decay 
    140  
    141    !! Tracers: surface flux 
    142  
    143           CALL dicgasflux(kt) 
     118      CALL trc_freons(kt) 
    144119 
    145120#endif 
    146121 
    147 #endif 
    148122 
    149 #if defined key_trc_age 
    150123 
    151    !! Age Tracer  
    152     
    153           CALL trcage(kt) 
    154 #endif 
    155  
    156 END SUBROUTINE trc_sms 
     124   END SUBROUTINE trc_sms 
    157125 
    158126#else 
     127   !!====================================================================== 
     128   !!  Empty module : No passive tracer 
     129   !!====================================================================== 
     130CONTAINS 
    159131 
    160 SUBROUTINE trc_sms( kt ) 
     132   SUBROUTINE trc_sms( kt ) 
    161133 
    162 ! no passive tracers 
     134      ! no passive tracers 
    163135      INTEGER, INTENT( in ) ::   kt 
    164136      WRITE(*,*) 'trc_sms: You should not have seen this print! error?', kt 
    165 END SUBROUTINE trc_sms 
     137   END SUBROUTINE trc_sms 
    166138 
    167139#endif  
Note: See TracChangeset for help on using the changeset viewer.