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.
trcnam_c14b.F90 in trunk/NEMOGCM/NEMO/TOP_SRC/C14b – NEMO

source: trunk/NEMOGCM/NEMO/TOP_SRC/C14b/trcnam_c14b.F90 @ 4624

Last change on this file since 4624 was 4624, checked in by acc, 10 years ago

#1305. Fix slow start-up problems on some systems by introducing and using lwm logical to restrict output of merged namelists to the first (or only) processor. lwm is true only on the first processor regardless of ln_ctl. Small changes to all flavours of nemogcm.F90 are also required to write namctl and namcfg after the call to mynode which now opens output.namelist.dyn and writes nammpp.

  • Property svn:keywords set to Id
File size: 6.5 KB
Line 
1MODULE trcnam_c14b
2   !!======================================================================
3   !!                         ***  MODULE trcnam_c14b  ***
4   !! TOP :   initialisation of some run parameters for C14 chemical model
5   !!======================================================================
6   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) from trcnam.cfc.h90
7   !!----------------------------------------------------------------------
8#if defined key_c14b
9   !!----------------------------------------------------------------------
10   !!   'key_c14b'                                         C14 bomb tracer
11   !!----------------------------------------------------------------------
12   !! trc_nam_c14b      : C14 model initialisation
13   !!----------------------------------------------------------------------
14   USE oce_trc         ! Ocean variables
15   USE par_trc         ! TOP parameters
16   USE trc             ! TOP variables
17   USE trcsms_c14b     ! C14b specific variable
18   USE iom             ! I/O manager
19
20   IMPLICIT NONE
21   PRIVATE
22
23   PUBLIC   trc_nam_c14b   ! called by trcnam.F90 module
24
25   !!----------------------------------------------------------------------
26   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
27   !! $Id$
28   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
29   !!----------------------------------------------------------------------
30
31CONTAINS
32
33   SUBROUTINE trc_nam_c14b
34      !!-------------------------------------------------------------------
35      !!                  ***  ROUTINE trc_nam_c14b  ***
36      !!                 
37      !! ** Purpose :   Definition some run parameter for C14 model
38      !!
39      !! ** Method  :   Read the namc14 namelist and check the parameter
40      !!       values called at the first timestep (nittrc000)
41      !!
42      !! ** input   :   Namelist namelist_c14b
43      !!----------------------------------------------------------------------
44      INTEGER ::  numnatb_ref = -1   ! Logical unit for reference c14b namelist
45      INTEGER ::  numnatb_cfg = -1   ! Logical unit for configuration c14b namelist
46      INTEGER ::  numonb      = -1   ! Logical unit for output namelist
47      INTEGER :: ios                 ! Local integer output status for namelist read
48
49      ! definition of additional diagnostic as a structure
50      INTEGER :: jl, jn
51      TYPE(DIAG), DIMENSION(jp_c14b_2d) :: c14dia2d
52      TYPE(DIAG), DIMENSION(jp_c14b_3d) :: c14dia3d
53      !!
54      NAMELIST/namc14date/ ndate_beg_b, nyear_res_b
55      NAMELIST/namc14dia/  c14dia2d, c14dia3d     ! additional diagnostics
56      !!-------------------------------------------------------------------
57      !                             ! Open namelist file
58      CALL ctl_opn( numnatb_ref, 'namelist_c14b_ref'  ,     'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
59      CALL ctl_opn( numnatb_cfg, 'namelist_c14b_cfg'  ,     'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )   
60      IF(lwm) CALL ctl_opn( numonb, 'output.namelist.c14', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )     
61      REWIND( numnatb_ref )              ! Namelist namc14date in reference namelist : c14b parameters
62      READ  ( numnatb_ref, namc14date, IOSTAT = ios, ERR = 901)
63901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14date in reference namelist', lwp )
64
65      REWIND( numnatb_cfg )              ! Namelist namc14date in configuration namelist : c14b parameters
66      READ  ( numnatb_cfg, namc14date, IOSTAT = ios, ERR = 902 )
67902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14date in configuration namelist', lwp )
68      IF(lwm) WRITE ( numonb, namc14date )
69      IF(lwp) THEN                  ! control print
70         WRITE(numout,*)
71         WRITE(numout,*) ' trc_nam: Read namdates, namelist for C14 chemical model'
72         WRITE(numout,*) ' ~~~~~~~'
73         WRITE(numout,*) '    initial calendar date (aammjj) for C14  ndate_beg_b = ', ndate_beg_b
74         WRITE(numout,*) '    restoring time constant (year)          nyear_res_b = ', nyear_res_b
75      ENDIF
76      nyear_beg_b = ndate_beg_b / 10000
77      IF(lwp) WRITE(numout,*) '    initial year (aa)                  nyear_beg_b = ', nyear_beg_b
78      !
79      IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN
80         !
81         ! Namelist namc14dia
82         ! -------------------
83         REWIND( numnatb_ref )              ! Namelist namc14dia in reference namelist : c14b diagnostics
84         READ  ( numnatb_ref, namc14dia, IOSTAT = ios, ERR = 903)
85903      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14dia in reference namelist', lwp )
86
87         REWIND( numnatb_cfg )              ! Namelist namc14dia in configuration namelist : c14b diagnostics
88         READ  ( numnatb_cfg, namc14dia, IOSTAT = ios, ERR = 904 )
89904      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14dia in configuration namelist', lwp )
90         IF(lwm) WRITE ( numonb, namc14dia )
91
92         DO jl = 1, jp_c14b_2d
93            jn = jp_c14b0_2d + jl - 1
94            ctrc2d(jn) = c14dia2d(jl)%sname
95            ctrc2l(jn) = c14dia2d(jl)%lname
96            ctrc2u(jn) = c14dia2d(jl)%units
97         END DO
98
99         DO jl = 1, jp_c14b_3d
100            jn = jp_c14b0_3d + jl - 1
101            ctrc3d(jn) = c14dia3d(jl)%sname
102            ctrc3l(jn) = c14dia3d(jl)%lname
103            ctrc3u(jn) = c14dia3d(jl)%units
104         END DO
105
106         IF(lwp) THEN                   ! control print
107            WRITE(numout,*)
108            WRITE(numout,*) ' Namelist : natadd'
109            DO jl = 1, jp_c14b_3d
110               jn = jp_c14b0_3d + jl - 1
111               WRITE(numout,*) '  3d diag nb : ', jn, '    short name : ', ctrc3d(jn), &
112                 &             '  long name  : ', ctrc3l(jn), '   unit : ', ctrc3u(jn)
113            END DO
114            WRITE(numout,*) ' '
115
116            DO jl = 1, jp_c14b_2d
117               jn = jp_c14b0_2d + jl - 1
118               WRITE(numout,*) '  2d diag nb : ', jn, '    short name : ', ctrc2d(jn), &
119                 &             '  long name  : ', ctrc2l(jn), '   unit : ', ctrc2u(jn)
120            END DO
121            WRITE(numout,*) ' '
122         ENDIF
123         !
124      ENDIF
125
126   IF(lwm) CALL FLUSH ( numonb )     ! flush output namelist C14b
127
128   END SUBROUTINE trc_nam_c14b
129   
130#else
131   !!----------------------------------------------------------------------
132   !!  Dummy module :                                                No 14C
133   !!----------------------------------------------------------------------
134CONTAINS
135   SUBROUTINE trc_nam_c14b                      ! Empty routine
136   END  SUBROUTINE  trc_nam_c14b
137#endif 
138
139   !!======================================================================
140END MODULE trcnam_c14b
Note: See TracBrowser for help on using the repository browser.