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 771 for branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp.F90 – NEMO

Ignore:
Timestamp:
2007-12-17T11:51:41+01:00 (16 years ago)
Author:
gm
Message:

dev_001_GM - small error corrections

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp.F90

    r719 r771  
    44   !! Ocean Physics    : manage the passive tracer transport 
    55   !!====================================================================== 
     6   !! History :   1.0  !  2004-03 (C. Ethe) Original code 
     7   !!---------------------------------------------------------------------- 
    68#if defined key_passivetrc 
     9   !!---------------------------------------------------------------------- 
     10   !!   'key_passivetrc'                                         TOP models 
    711   !!---------------------------------------------------------------------- 
    812   !!   trc_trp        : passive tracer transport 
    913   !!---------------------------------------------------------------------- 
    10    !! * Modules used 
    1114   USE oce_trc         ! ocean dynamics and active tracers variables 
    1215   USE trc             ! ocean passive tracers variables  
    13  
    14    USE trctrp_lec      ! passive tracers transport 
     16   USE trctrp_lec      ! passive tracers transport parameters 
    1517 
    1618   USE trcbbl          ! bottom boundary layer               (trc_bbl routine) 
     
    4042   USE zpshde_trc      ! partial step: hor. derivative   (zps_hde_trc routine) 
    4143 
    42  
    4344   IMPLICIT NONE 
    4445   PRIVATE 
    4546 
    46    !! * Routine accessibility 
    47    PUBLIC trc_trp            ! called by trc_stp 
     47   PUBLIC   trc_trp    ! called by trc_stp 
    4848 
    4949   !! * Substitutions 
    5050#  include "domzgr_substitute.h90" 
    5151   !!---------------------------------------------------------------------- 
    52    !!   TOP 1.0 , LOCEAN-IPSL (2005)  
    53    !! $Header$  
    54    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     52   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)  
     53   !! $Id$  
     54   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    5555   !!---------------------------------------------------------------------- 
    5656 
     
    6161      !!                     ***  ROUTINE trc_trp  *** 
    6262      !!                       
    63       !! ** Purpose : Management of passive tracers transport 
     63      !! ** Purpose :   Management of passive tracers transport 
    6464      !!  
    65       !! ** Method  :  
    66       !!              Compute the passive tracers trends  
    67       !!              Update the passive tracers 
    68       !! 
    69       !! History : 
    70       !!   9.0  !  04-03  (C. Ethe)  Original 
     65      !! ** Method  : - Compute the passive tracers trends  
     66      !!              - Update the passive tracers 
    7167      !!---------------------------------------------------------------------- 
    72       !! * Arguments 
    7368      INTEGER, INTENT( in ) ::  kt  ! ocean time-step index 
    7469      !! --------------------------------------------------------------------- 
    7570 
    76       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    77       ! Passitive tracers 
    78       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    79       !----------------------------------------------------------------------- 
    80  
    81   
    8271                               CALL trc_sbc( kt )            ! surface boundary condition 
    8372# if defined key_trcbbc 
     73!!gm bug : this should be control during the initialisation phase, not here! 
    8474       CALL ctl_stop( '  Bottom heat flux not yet implemented with passive tracer         ' & 
    8575           &          '  Check in trc_trp routine ' ) 
    8676# endif  
    8777      !                                                      ! bottom boundary condition 
    88       IF( lk_trcbbl_dif    )   CALL trc_bbl_dif( kt )                ! diffusive bottom boundary layer scheme 
    89       IF( lk_trcbbl_adv    )   CALL trc_bbl_adv( kt )                ! advective (and/or diffusive) bottom boundary layer scheme 
     78      IF( lk_trcbbl_dif    )   CALL trc_bbl_dif( kt )            ! diffusive bottom boundary layer scheme 
     79      IF( lk_trcbbl_adv    )   CALL trc_bbl_adv( kt )            ! advective (and/or diffusive) bottom boundary layer scheme 
    9080 
    9181      IF( lk_trcdmp        )   CALL trc_dmp( kt )            ! internal damping trends 
    9282 
    9383      !                                                      ! horizontal & vertical advection 
    94       IF( ln_trcadv_cen2   )   CALL trc_adv_cen2  ( kt )             ! 2nd order centered scheme 
    95       IF( ln_trcadv_muscl  )   CALL trc_adv_muscl ( kt )             ! MUSCL scheme 
    96       IF( ln_trcadv_muscl2 )   CALL trc_adv_muscl2( kt )             ! MUSCL2 scheme 
    97       IF( ln_trcadv_tvd    )   CALL trc_adv_tvd   ( kt )             ! TVD scheme 
    98       IF( ln_trcadv_smolar )   CALL trc_adv_smolar( kt )             ! SMOLARKIEWICZ scheme 
     84      IF( ln_trcadv_cen2   )   CALL trc_adv_cen2  ( kt )         ! 2nd order centered scheme 
     85      IF( ln_trcadv_muscl  )   CALL trc_adv_muscl ( kt )         ! MUSCL scheme 
     86      IF( ln_trcadv_muscl2 )   CALL trc_adv_muscl2( kt )         ! MUSCL2 scheme 
     87      IF( ln_trcadv_tvd    )   CALL trc_adv_tvd   ( kt )         ! TVD scheme 
     88      IF( ln_trcadv_smolar )   CALL trc_adv_smolar( kt )         ! SMOLARKIEWICZ scheme 
    9989 
    10090  
    10191      IF( n_cla == 1   ) THEN 
     92!!gm bug : this should be control during the initialisation phase, not here! 
    10293         WRITE(ctmp1,*) ' Cross Land Advection not yet implemented with passive tracer n_cla = ',n_cla 
    103          CALL ctl_stop(ctmp1) 
     94         CALL ctl_stop( ctmp1 ) 
    10495      ENDIF 
    10596 
    10697      !                                                      ! lateral mixing  
    107       IF( l_trcldf_bilapg  )   CALL trc_ldf_bilapg ( kt )            ! s-coord. horizontal bilaplacian 
    108       IF( l_trcldf_bilap   )   CALL trc_ldf_bilap  ( kt )            ! iso-level bilaplacian  
    109       IF( l_trcldf_iso     )   CALL trc_ldf_iso    ( kt )            ! iso-neutral laplacian  
    110       IF( l_trcldf_iso_zps )   CALL trc_ldf_iso_zps( kt )            ! partial step iso-neutral laplacian 
    111       IF( l_trcldf_lap     )   CALL trc_ldf_lap    ( kt )            ! iso-level laplacian 
     98      IF( l_trcldf_bilapg  )   CALL trc_ldf_bilapg ( kt )        ! s-coord. horizontal bilaplacian 
     99      IF( l_trcldf_bilap   )   CALL trc_ldf_bilap  ( kt )        ! iso-level bilaplacian  
     100      IF( l_trcldf_iso     )   CALL trc_ldf_iso    ( kt )        ! iso-neutral laplacian  
     101      IF( l_trcldf_iso_zps )   CALL trc_ldf_iso_zps( kt )        ! partial step iso-neutral laplacian 
     102      IF( l_trcldf_lap     )   CALL trc_ldf_lap    ( kt )        ! iso-level laplacian 
    112103  
    113104      !                                                      ! vertical diffusion 
    114       IF( l_trczdf_exp     )   CALL trc_zdf_exp( kt )                ! explicit time stepping (time splitting scheme) 
    115       IF( l_trczdf_imp     )   CALL trc_zdf_imp( kt )                ! implicit time stepping (euler backward) 
    116       IF( l_trczdf_iso     )   CALL trc_zdf_iso( kt )                ! isopycnal 
    117       IF( l_trczdf_iso_vo  )   CALL trc_zdf_iso_vopt( kt )           ! vector opt. isopycnal 
     105      IF( l_trczdf_exp     )   CALL trc_zdf_exp     ( kt )       ! explicit time stepping (time splitting scheme) 
     106      IF( l_trczdf_imp     )   CALL trc_zdf_imp     ( kt )       ! implicit time stepping (euler backward) 
     107      IF( l_trczdf_iso     )   CALL trc_zdf_iso     ( kt )       ! isopycnal 
     108      IF( l_trczdf_iso_vo  )   CALL trc_zdf_iso_vopt( kt )       ! vector opt. isopycnal 
    118109 
    119110                               CALL trc_nxt( kt )            ! tracer fields at next time step 
    120111  
    121                                CALL trc_rad( kt )            ! Correct artificial negative concentrations for isopycnal scheme 
     112                               CALL trc_rad( kt )            ! Correct artificial negative concentrations 
     113      !                                                      ! especially useful when isopycnal mixing is used 
    122114      !                                                       
    123115 
    124       IF( ln_zps .AND. .NOT. lk_trccfg_1d ) & 
    125          &                     CALL zps_hde_trc( kt, trb, gtru, gtrv )  ! Partial steps: now horizontal gradient 
    126       !                                                                 ! of passive tracers at the bottom ocean level 
    127  
    128  
    129     END SUBROUTINE trc_trp 
     116      IF( ln_zps .AND. .NOT. lk_trccfg_1d )   &              ! Partial steps: now horizontal gradient of passive 
     117         &                     CALL zps_hde_trc( kt, trb, gtru, gtrv )       ! tracers at the bottom ocean level 
     118      ! 
     119      IF(ln_ctl) THEN      ! print mean trends (used for debugging) 
     120         WRITE(charout, FMT="('TRP')") 
     121         CALL prt_ctl_trc_info( charout ) 
     122         CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm ) 
     123      ENDIF 
     124      ! 
     125   END SUBROUTINE trc_trp 
    130126 
    131127#else 
    132128   !!---------------------------------------------------------------------- 
    133    !!   Dummy module :                      NO passive tracers 
     129   !!   Dummy module :                                        No TOP models 
    134130   !!---------------------------------------------------------------------- 
    135131CONTAINS 
    136    SUBROUTINE trc_trp (kt )              ! Empty routine 
    137       INTEGER, INTENT(in) :: kt 
     132   SUBROUTINE trc_trp( kt )              ! Empty routine 
     133      INTEGER, INTENT(in) ::   kt 
    138134      WRITE(*,*) 'trc_trp: You should not have seen this print! error?', kt 
    139135   END SUBROUTINE trc_trp 
Note: See TracChangeset for help on using the changeset viewer.