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.
traadv_ctl.F90 in trunk/NEMO/OPA_SRC/TRA – NEMO

source: trunk/NEMO/OPA_SRC/TRA/traadv_ctl.F90 @ 247

Last change on this file since 247 was 247, checked in by opalod, 19 years ago

CL : Add CVS Header and CeCILL licence information

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 KB
Line 
1MODULE traadv_ctl
2   !!==============================================================================
3   !!                       ***  MODULE  traadv_ctl  ***
4   !! Ocean active tracers:  advection scheme control
5   !!==============================================================================
6
7   !!----------------------------------------------------------------------
8   !!   tra_adv_ctl  : control the different options of advection scheme
9   !!----------------------------------------------------------------------
10   !! * Modules used
11   USE oce             ! ocean dynamics and active tracers
12   USE dom_oce         ! ocean space and time domain
13   USE in_out_manager  ! I/O manager
14
15   IMPLICIT NONE
16   PRIVATE
17
18   !! * Accessibility
19   PUBLIC tra_adv_ctl     ! routine called by step module
20 
21   !! * Share module variables
22   LOGICAL, PUBLIC ::   &
23      ln_traadv_cen2   = .TRUE.  ,   &  ! 2nd order centered scheme flag
24      ln_traadv_tvd    = .FALSE. ,   &  ! TVD scheme flag
25      ln_traadv_muscl  = .FALSE. ,   &  ! MUSCL scheme flag
26      ln_traadv_muscl2 = .FALSE.        ! MUSCL2 scheme flag
27
28   !! * Substitutions
29#   include "domzgr_substitute.h90"
30#   include "vectopt_loop_substitute.h90"
31   !!----------------------------------------------------------------------
32   !!   OPA 9.0 , LOCEAN-IPSL (2005)
33   !! $Header$
34   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
35   !!----------------------------------------------------------------------
36
37CONTAINS
38
39   SUBROUTINE tra_adv_ctl
40      !!---------------------------------------------------------------------
41      !!                  ***  ROUTINE tra_adv_ctl  ***
42      !!               
43      !! ** Purpose :   Control the consistency between cpp options for
44      !!      tracer advection schemes
45      !!
46      !! History :
47      !!   8.5  !  02-11  (G. Madec)  Original code
48      !!----------------------------------------------------------------------
49      !! * Modules used
50      USE traadv_tvd
51      USE traadv_muscl
52      USE traadv_muscl2
53      USE in_out_manager  ! I/O manager
54
55      !! * Local declarations
56      INTEGER ::   ioptio
57
58      NAMELIST/nam_traadv/ ln_traadv_cen2 , ln_traadv_tvd,   &
59         &                 ln_traadv_muscl, ln_traadv_muscl2
60      !!----------------------------------------------------------------------
61
62      ! Read Namelist nam_traadv : tracer advection scheme
63      ! -------------------------
64      REWIND ( numnam )
65      READ   ( numnam, nam_traadv )
66
67      ! Parameter control and print
68      ! ---------------------------
69      ! Control print
70      IF(lwp) THEN
71         WRITE(numout,*)
72         WRITE(numout,*) 'tra_adv_ctl : choice/control of the tracer advection scheme'
73         WRITE(numout,*) '~~~~~~~~~~~'
74         WRITE(numout,*) '          Namelist nam_tra_adv : chose a advection scheme for tracers'
75         WRITE(numout,*)
76         WRITE(numout,*) '             2nd order advection scheme     ln_traadv_cen2   = ', ln_traadv_cen2
77         WRITE(numout,*) '             TVD advection scheme           ln_traadv_tvd    = ', ln_traadv_tvd
78         WRITE(numout,*) '             MUSCL  advection scheme        ln_traadv_muscl  = ', ln_traadv_muscl
79         WRITE(numout,*) '             MUSCL2 advection scheme        ln_traadv_muscl2 = ', ln_traadv_muscl2
80      ENDIF
81
82      ! Control of Advection scheme options
83      ! -----------------------------------
84      ioptio = 0
85      IF( ln_traadv_cen2   )   ioptio = ioptio + 1
86      IF( ln_traadv_tvd    )   ioptio = ioptio + 1
87      IF( ln_traadv_muscl  )   ioptio = ioptio + 1
88      IF( ln_traadv_muscl2 )   ioptio = ioptio + 1
89
90      IF( lk_esopa ) THEN
91         IF(lwp) WRITE(numout,*) ' esopa control : the use of all scheme is forced'
92         ln_traadv_cen2   = .TRUE.
93         ln_traadv_tvd    = .TRUE.
94         ln_traadv_muscl  = .TRUE.
95         ln_traadv_muscl2 = .TRUE.
96      ELSEIF( ioptio > 1 .OR. ioptio == 0 ) THEN
97         IF(lwp) WRITE(numout,cform_err)
98         IF(lwp) WRITE(numout,*) ' Choose one advection scheme in namelist nam_traadv'
99         IF(lwp) WRITE(numout,*) '        ***                              ***********'
100         nstop = nstop + 1
101      ENDIF
102
103      IF( n_cla == 1 .AND. .NOT. ln_traadv_cen2 ) THEN
104         IF(lwp) WRITE(numout,cform_err)
105         IF(lwp) WRITE(numout,*) '     cross-land advection only with 2nd order advection scheme'
106         nstop = nstop + 1
107      ENDIF
108
109   END SUBROUTINE tra_adv_ctl
110
111  !!======================================================================
112END MODULE traadv_ctl
Note: See TracBrowser for help on using the repository browser.