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.
trdini.F90 in branches/UKMO/test_moci_test_suite_namelist_read/NEMOGCM/NEMO/OPA_SRC/TRD – NEMO

source: branches/UKMO/test_moci_test_suite_namelist_read/NEMOGCM/NEMO/OPA_SRC/TRD/trdini.F90 @ 9383

Last change on this file since 9383 was 9383, checked in by andmirek, 6 years ago

#2050 fixes and changes

File size: 6.3 KB
Line 
1MODULE trdini
2   !!======================================================================
3   !!                       ***  MODULE  trdini  ***
4   !! Ocean diagnostics:  ocean tracers and dynamic trends
5   !!=====================================================================
6   !! History :   3.5  !  2012-02  (G. Madec) add 3D trends output for T, S, U, V, PE and KE
7   !!----------------------------------------------------------------------
8
9   !!----------------------------------------------------------------------
10   !!   trd_init      : initialization step
11   !!----------------------------------------------------------------------
12   USE dom_oce        ! ocean domain
13   USE trd_oce        ! trends: ocean variables
14   USE trdken         ! trends: 3D kinetic   energy
15   USE trdpen         ! trends: 3D potential energy
16   USE trdglo         ! trends: global domain averaged tracers and dynamics
17   USE trdmxl         ! trends: mixed layer averaged trends (tracer only)
18   USE trdvor         ! trends: vertical averaged vorticity
19   USE in_out_manager ! I/O manager
20   USE lib_mpp        ! MPP library
21
22   IMPLICIT NONE
23   PRIVATE
24
25   PUBLIC   trd_init   ! called by nemogcm.F90 module
26   PRIVATE  ini_namelist
27
28   !! * Substitutions
29#  include "domzgr_substitute.h90"
30#  include "vectopt_loop_substitute.h90"
31   !!----------------------------------------------------------------------
32   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
33   !! $Id$
34   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
35   !!----------------------------------------------------------------------
36CONTAINS
37
38   SUBROUTINE trd_init
39      !!----------------------------------------------------------------------
40      !!                  ***  ROUTINE trd_init  ***
41      !!
42      !! ** Purpose :   Initialization of trend diagnostics
43      !!----------------------------------------------------------------------
44      INTEGER ::   ios   ! local integer
45      !!
46      NAMELIST/namtrd/ ln_dyn_trd, ln_KE_trd, ln_vor_trd, ln_dyn_mxl,   &
47         &             ln_tra_trd, ln_PE_trd, ln_glo_trd, ln_tra_mxl, nn_trd 
48      !!----------------------------------------------------------------------
49      !
50      IF(lwm) THEN
51         REWIND( numnam_ref )              ! Namelist namtrd in reference namelist : trends diagnostic
52         READ  ( numnam_ref, namtrd, IOSTAT = ios, ERR = 901 )
53901      CONTINUE
54      ENDIF
55      call mpp_bcast(ios)
56      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrd in reference namelist', lwp )
57      IF(lwm) THEN
58         REWIND( numnam_cfg )              ! Namelist namtrd in configuration namelist : trends diagnostic
59         READ  ( numnam_cfg, namtrd, IOSTAT = ios, ERR = 902 )
60902      CONTINUE
61      ENDIF
62      call mpp_bcast(ios)
63      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrd in configuration namelist', lwp )
64
65      IF(lwm) WRITE( numond, namtrd )
66      !
67      CALL ini_namelist()
68
69      IF(lwp) THEN                  ! control print
70         WRITE(numout,*)
71         WRITE(numout,*) ' trd_init : Momentum/Tracers trends'
72         WRITE(numout,*) ' ~~~~~~~~~~'
73         WRITE(numout,*) '   Namelist namtrd : set trends parameters'
74         WRITE(numout,*) '      global domain averaged dyn & tra trends   ln_glo_trd  = ', ln_glo_trd
75         WRITE(numout,*) '      U & V trends: 3D output                   ln_dyn_trd  = ', ln_dyn_trd
76         WRITE(numout,*) '      U & V trends: Mixed Layer averaged        ln_dyn_mxl  = ', ln_dyn_mxl
77         WRITE(numout,*) '      T & S trends: 3D output                   ln_tra_trd  = ', ln_tra_trd
78         WRITE(numout,*) '      T & S trends: Mixed Layer averaged        ln_tra_mxl  = ', ln_tra_mxl
79         WRITE(numout,*) '      Kinetic   Energy trends                   ln_KE_trd   = ', ln_KE_trd
80         WRITE(numout,*) '      Potential Energy trends                   ln_PE_trd   = ', ln_PE_trd
81         WRITE(numout,*) '      Barotropic vorticity trends               ln_vor_trd  = ', ln_vor_trd
82         !
83         WRITE(numout,*) '      frequency of trends diagnostics (glo)     nn_trd      = ', nn_trd
84      ENDIF
85      !
86      !                             ! trend extraction flags 
87      l_trdtra = .FALSE.                                                       ! tracers 
88      IF ( ln_tra_trd .OR. ln_PE_trd .OR. ln_tra_mxl .OR.   &
89         & ln_glo_trd                                       )   l_trdtra = .TRUE. 
90      !
91      l_trddyn = .FALSE.                                                       ! momentum
92      IF ( ln_dyn_trd .OR. ln_KE_trd .OR. ln_dyn_mxl .OR.   &
93         & ln_vor_trd .OR. ln_glo_trd                       )   l_trddyn = .TRUE.
94      !
95
96!!gm check the stop below     
97      IF( ln_dyn_mxl )   CALL ctl_stop( 'ML diag on momentum are not yet coded we stop' )
98      !
99
100!!gm end
101      IF( ln_tra_mxl .OR. ln_vor_trd )   CALL ctl_stop( 'ML tracer and Barotropic vorticity diags are still using old IOIPSL' )
102!!gm end
103      !
104     
105!!gm  : Potential BUG : 3D output only for vector invariant form!  add a ctl_stop or code the flux form case
106!!gm  : bug/pb for vertical advection of tracer in vvl case: add T.dt[eta] in the output...
107
108      !                             ! diagnostic initialization 
109      IF( ln_glo_trd )   CALL trd_glo_init      ! global domain averaged trends
110      IF( ln_tra_mxl )   CALL trd_mxl_init      ! mixed-layer          trends 
111      IF( ln_vor_trd )   CALL trd_vor_init      ! barotropic vorticity trends
112      IF( ln_KE_trd  )   CALL trd_ken_init      ! 3D Kinetic    energy trends
113      IF( ln_PE_trd  )   CALL trd_pen_init      ! 3D Potential  energy trends
114      !
115   END SUBROUTINE trd_init
116
117   SUBROUTINE ini_namelist()
118     !!---------------------------------------------------------------------
119     !!                   ***  ROUTINE ini_namelist  ***
120     !!                     
121     !! ** Purpose :   Broadcast namelist variables read by procesor lwm
122     !!
123     !! ** Method  :   use lib_mpp
124     !!----------------------------------------------------------------------
125#if defined key_mpp_mpi
126      CALL mpp_bcast(ln_dyn_trd)
127      CALL mpp_bcast(ln_KE_trd)
128      CALL mpp_bcast(ln_vor_trd)
129      CALL mpp_bcast(ln_dyn_mxl)
130      CALL mpp_bcast(ln_tra_trd)
131      CALL mpp_bcast(ln_PE_trd)
132      CALL mpp_bcast(ln_glo_trd)
133      CALL mpp_bcast(ln_tra_mxl)
134      CALL mpp_bcast(nn_trd)
135#endif
136   END SUBROUTINE ini_namelist
137
138   !!======================================================================
139END MODULE trdini
Note: See TracBrowser for help on using the repository browser.