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_lobster.F90 in branches/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/TOP_SRC/LOBSTER – NEMO

source: branches/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcnam_lobster.F90 @ 2819

Last change on this file since 2819 was 2819, checked in by cetlod, 13 years ago

Improvment of branch dev_r2787_LOCEAN3_TRA_TRP

  • Property svn:keywords set to Id
File size: 15.6 KB
Line 
1MODULE trcnam_lobster
2   !!======================================================================
3   !!                      ***  MODULE trcnam_lobster  ***
4   !! TOP :   initialisation of some run parameters for LOBSTER bio-model
5   !!======================================================================
6   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) from trcnam.lobster1.h90
7   !!----------------------------------------------------------------------
8#if defined key_lobster
9   !!----------------------------------------------------------------------
10   !!   'key_lobster'   :                                 LOBSTER bio-model
11   !!----------------------------------------------------------------------
12   !! trc_nam_lobster   : LOBSTER model namelist read
13   !!----------------------------------------------------------------------
14   USE oce_trc                                   ! Ocean variables
15   USE par_trc                                   ! TOP parameters
16   USE trc                                       ! TOP variables
17   USE trdmod_trc_oce , ONLY :  lk_trdmld_trc    !  tracers  trend flag
18   USE sms_lobster                               ! sms trends
19   USE iom                                       ! I/O manager
20
21   IMPLICIT NONE
22   PRIVATE
23
24   PUBLIC   trc_nam_lobster   ! called by trcnam.F90 module
25
26   !!----------------------------------------------------------------------
27   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
28   !! $Id$
29   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
30   !!----------------------------------------------------------------------
31
32CONTAINS
33
34   SUBROUTINE trc_nam_lobster
35      !!----------------------------------------------------------------------
36      !!                     ***  trc_nam_lobster  *** 
37      !!
38      !! ** Purpose :   read LOBSTER namelist
39      !!
40      !! ** input   :   file 'namelist.trc.sms' containing the following
41      !!             namelist: natbio, natopt, and natdbi ("key_diabio")
42      !!----------------------------------------------------------------------
43      INTEGER ::   numnatl
44      !!
45      INTEGER :: jl, jn
46      TYPE(DIAG), DIMENSION(jp_lobster_2d )  :: lobdia2d
47      TYPE(DIAG), DIMENSION(jp_lobster_3d )  :: lobdia3d
48      TYPE(DIAG), DIMENSION(jp_lobster_trd)  :: lobdiabio
49
50      NAMELIST/namlobphy/ apmin, tmumax, rgamma, fphylab, tmmaxp, tmminp, &
51         &                rcchl, aki, toptp 
52      NAMELIST/namlobnut/ anmin, akno3, aknh4, taunn, psinut
53      NAMELIST/namlobzoo/ azmin, eggzoo, rgz, rppz, taus, aks, rpnaz,     &
54         &                rdnaz, tauzn, fzoolab, fdbod, tmmaxz, tmminz
55      NAMELIST/namlobdet/ admin, taudn, fdetlab, vsed
56      NAMELIST/namlobdom/ taudomn
57      NAMELIST/namlobsed/ sedlam, sedlostpoc
58      NAMELIST/namlobrat/ redf, reddom, slopet, tmaxr, tminr, xhr,        &
59         &                filmax, toptgz, tmaxgz, anumin, afdmin
60
61      NAMELIST/namlobopt/ xkg0, xkr0, xkgp, xkrp, xlg, xlr, rpig
62      NAMELIST/namlobdia/ lobdia3d, lobdia2d     ! additional diagnostics
63      NAMELIST/namlobdbi/ lobdiabio
64      !!----------------------------------------------------------------------
65
66      IF(lwp) WRITE(numout,*)
67      IF(lwp) WRITE(numout,*) ' trc_nam_lobster : read LOBSTER namelists'
68      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~'
69
70      !                               ! Open the namelist file
71      !                               ! ----------------------
72      CALL ctl_opn( numnatl, 'namelist_lobster', 'OLD', 'FORMATTED', 'SEQUENTIAL', 1, numout, .FALSE. )
73
74      ! namlobphy : parameters for phytoplankton
75      apmin   = 0. 
76      tmumax  = 0. 
77      rgamma  = 0. 
78      fphylab = 0. 
79      tmmaxp  = 0.
80      tmminp  = 0.
81      rcchl   = 0. 
82      aki     = 0. 
83      toptp   = 0. 
84
85      REWIND( numnatl )
86      READ  ( numnatl, namlobphy )
87
88      IF(lwp) THEN
89          WRITE(numout,*) ' Namelist namlobphy'
90          WRITE(numout,*) '    minimum phytoplancton concentration                  apmin     =', apmin
91          WRITE(numout,*) '    phyto max growth rate                                tmumax    =', 86400 * tmumax, ' d'
92          WRITE(numout,*) '    phytoplankton exudation fraction                     rgamma    =', rgamma
93          WRITE(numout,*) '    NH4 fraction of phytoplankton exsudation             fphylab   =', fphylab
94          WRITE(numout,*) '    maximal phyto mortality rate                         tmmaxp    =', 86400 * tmmaxp
95          WRITE(numout,*) '    minimal phyto mortality rate                         tmminp    =', 86400 * tmminp
96          WRITE(numout,*) '    carbone/chlorophyl ratio                             rcchl     =', rcchl
97          WRITE(numout,*) '    light hlaf saturation constant                       aki       =', aki
98          WRITE(numout,*) '    optimal photosynthesis temperature                   toptp     =', toptp
99          WRITE(numout,*) ' '
100      ENDIF
101
102      ! namlobnut : parameters for nutrients
103      anmin  = 0.
104      psinut = 0.
105      akno3  = 0.
106      aknh4  = 0.
107      taunn  = 0.
108
109      REWIND( numnatl )
110      READ  ( numnatl, namlobnut )
111      IF(lwp) THEN
112          WRITE(numout,*) ' Namelist namlobnut'
113          WRITE(numout,*) '    minimum nutrients     concentration                  anmin     =', anmin
114          WRITE(numout,*) '    half-saturation nutrient for no3 uptake              akno3     =', akno3
115          WRITE(numout,*) '    half-saturation nutrient for nh4 uptake              aknh4     =', aknh4
116          WRITE(numout,*) '    nitrification rate                                   taunn     =', taunn
117          WRITE(numout,*) '    inhibition of no3 uptake by nh4                      psinut    =', psinut
118          WRITE(numout,*) ' '
119      ENDIF
120
121      ! namlobzoo : parameters for zooplankton
122      azmin   = 0.
123      rgz     = 0.
124      rppz    = 0.
125      taus    = 0.
126      aks     = 0.
127      rpnaz   = 0.
128      rdnaz   = 0.
129      eggzoo  = 0.
130      tauzn   = 0.
131      tmmaxz  = 0.
132      tmminz  = 0.
133      fzoolab = 0.
134      fdbod   = 0.
135
136      REWIND( numnatl )
137      READ  ( numnatl, namlobzoo )
138
139      IF(lwp) THEN
140          WRITE(numout,*) ' Namelist namlobzoo'
141          WRITE(numout,*) '    minimum zooplancton   concentration                  azmin     =', azmin
142          WRITE(numout,*) '    minimum  for zoo concentration                       eggzoo    =', eggzoo
143          WRITE(numout,*) '    widtht of zoo temperature FUNCTION                   rgz       =', rgz
144          WRITE(numout,*) '    zoo preference for phyto                             rppz      =', rppz
145          WRITE(numout,*) '    maximal zoo grazing rate                             taus      =', 86400 * taus, ' d'
146          WRITE(numout,*) '    half saturation constant for zoo food                aks       =', aks
147          WRITE(numout,*) '    non-assimilated phyto by zoo                         rpnaz     =', rpnaz
148          WRITE(numout,*) '    non-assimilated detritus by zoo                      rdnaz     =', rdnaz
149          WRITE(numout,*) '    zoo specific excretion rate                          tauzn     =', 86400 * tauzn
150          WRITE(numout,*) '    maximal zoo mortality rate                           tmmaxz    =', 86400 * tmmaxz
151          WRITE(numout,*) '    minimal zoo mortality rate                           tmminz    =', 86400 * tmminz
152          WRITE(numout,*) '    NH4 fraction of zooplankton excretion                fzoolab   =', fzoolab
153          WRITE(numout,*) '    Zooplankton mortality fraction that goes to detritus fdbod     =', fdbod
154          WRITE(numout,*) ' '
155      ENDIF
156
157      ! namlobdet : parameters for detritus
158      admin   = 0.
159      taudn   = 0.
160      vsed    = 0.
161      fdetlab = 0.
162
163      REWIND( numnatl )
164      READ  ( numnatl, namlobdet )
165
166      IF(lwp) THEN
167          WRITE(numout,*) ' Namelist namlobdet'
168          WRITE(numout,*) '    minimum detritus      concentration                  admin     =', admin
169          WRITE(numout,*) '    detrital breakdown rate                              taudn     =', 86400 * taudn , ' d'
170          WRITE(numout,*) '    detritus sedimentation speed                         vsed      =', 86400 * vsed  , ' d'
171          WRITE(numout,*) '    NH4 fraction of detritus dissolution                 fdetlab   =', fdetlab
172          WRITE(numout,*) ' '
173      ENDIF
174
175      ! namlobdom : parameters for DOM
176      taudomn = 0.
177
178      REWIND( numnatl ) 
179      READ  ( numnatl, namlobdom )
180
181      IF(lwp) THEN
182          WRITE(numout,*) ' Namelist namlobdom'
183          WRITE(numout,*) '    dom remineralisation rate                            taudomn   =', taudomn
184          WRITE(numout,*) ' '
185      ENDIF
186
187      ! namlobsed : parameters from aphotic layers to sediment
188      sedlam     = 0.
189      sedlostpoc = 0.
190
191      REWIND( numnatl )
192      READ  ( numnatl, namlobsed )
193
194      IF(lwp) THEN
195          WRITE(numout,*) ' Namelist namlobsed'
196          WRITE(numout,*) '    time coeff of POC in sediments                       sedlam    =', sedlam
197          WRITE(numout,*) '    Sediment geol loss for POC                           sedlostpoc=', sedlostpoc
198          WRITE(numout,*) ' '
199      ENDIF
200
201      ! namlobrat : general coefficient
202      redf   = 0.
203      reddom = 0.
204      slopet = 0.
205      tmaxr  = 1./(     4.*rday)*0.
206      tminr  = 1./(24.*30.*rday)*0.
207      xhr    = 0.
208      filmax = 0.
209      toptgz = 0.
210      tmaxgz = 0.
211      anumin = 0.
212      afdmin = 0.
213
214      REWIND( numnatl )
215      READ  ( numnatl, namlobrat )
216
217      IF(lwp) THEN
218          WRITE(numout,*) ' Namelist namlobrat'
219          WRITE(numout,*) '    redfield ratio  c:n for phyto                        redf      =', redf 
220          WRITE(numout,*) '    redfield ratio  c:n for DOM                          reddom    =', reddom 
221          WRITE(numout,*) '    van t hoff coefficient                               slopet    =', slopet
222          WRITE(numout,*) '    maximum damping for d z or p                         tmaxr     =', tmaxr
223          WRITE(numout,*) '    damping-remineralisation rate                        tminr     =', tminr
224          WRITE(numout,*) '    coeff for martin''s remineralistion                  xhr       =', xhr
225          WRITE(numout,*) '    maximal mass clearance rate for zoo                  filmax    =', filmax
226          WRITE(numout,*) '    optimal temperature for zoo growth                   toptgz    =', toptgz
227          WRITE(numout,*) '    maximal temperature for zoo growth                   tmaxgz    =', tmaxgz
228          WRITE(numout,*) '    nutrient threshold for phyto mort                    anumin    =', anumin
229          WRITE(numout,*) '    food threshold for zoo mort                          afdmin    =', afdmin
230          WRITE(numout,*) ' '
231      ENDIF
232
233
234      ! namlobopt : optical parameters
235      xkg0  = 0. 
236      xkr0  = 0.
237      xkgp  = 0.
238      xkrp  = 0.
239      xlg   = 0.
240      xlr   = 0.
241      rpig  = 0.
242
243      REWIND( numnatl )
244      READ  ( numnatl, namlobopt )
245
246      IF(lwp) THEN                         
247         WRITE(numout,*)
248         WRITE(numout,*) ' Namelist namlobopt'
249         WRITE(numout,*) '    green   water absorption coeff                       xkg0  = ', xkg0
250         WRITE(numout,*) '    red water absorption coeff                           xkr0  = ', xkr0
251         WRITE(numout,*) '    pigment red absorption coeff                         xkrp  = ', xkrp
252         WRITE(numout,*) '    pigment green absorption coeff                       xkgp  = ', xkgp
253         WRITE(numout,*) '    green chl exposant                                   xlg   = ', xlg
254         WRITE(numout,*) '    red   chl exposant                                   xlr   = ', xlr
255         WRITE(numout,*) '    chla/chla+phea ratio                                 rpig  = ', rpig
256         WRITE(numout,*) ' '
257      ENDIF
258
259      !
260      IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN
261         !
262         ! Namelist namlobdia
263         ! -------------------
264         DO jl = 1, jp_lobster_2d
265            WRITE(lobdia2d(jl)%sname,'("2D_",I1)') jl                      ! short name
266            WRITE(lobdia2d(jl)%lname,'("2D DIAGNOSTIC NUMBER ",I2)') jl    ! long name
267            lobdia2d(jl)%units = ' '                                        ! units
268         END DO
269         !                                 ! 3D output arrays
270         DO jl = 1, jp_lobster_3d
271            WRITE(lobdia3d(jl)%sname,'("3D_",I1)') jl                      ! short name
272            WRITE(lobdia3d(jl)%lname,'("3D DIAGNOSTIC NUMBER ",I2)') jl    ! long name
273            lobdia3d(jl)%units = ' '                                        ! units
274         END DO
275
276         REWIND( numnatl )               ! read natrtd
277         READ  ( numnatl, namlobdia )
278
279         DO jl = 1, jp_lobster_2d
280            jn = jp_lob0_2d + jl - 1
281            ctrc2d(jn) = lobdia2d(jl)%sname
282            ctrc2l(jn) = lobdia2d(jl)%lname
283            ctrc2u(jn) = lobdia2d(jl)%units
284         END DO
285
286         DO jl = 1, jp_lobster_3d
287            jn = jp_lob0_3d + jl - 1
288            ctrc3d(jn) = lobdia3d(jl)%sname
289            ctrc3l(jn) = lobdia3d(jl)%lname
290            ctrc3u(jn) = lobdia3d(jl)%units
291         END DO
292
293         IF(lwp) THEN                   ! control print
294            WRITE(numout,*)
295            WRITE(numout,*) ' Namelist : natadd'
296            DO jl = 1, jp_lobster_3d
297               jn = jp_lob0_3d + jl - 1
298               WRITE(numout,*) '  3d diag nb : ', jn, '    short name : ', ctrc3d(jn), &
299                 &             '  long name  : ', ctrc3l(jn), '   unit : ', ctrc3u(jn)
300            END DO
301            WRITE(numout,*) ' '
302
303            DO jl = 1, jp_lobster_2d
304               jn = jp_lob0_2d + jl - 1
305               WRITE(numout,*) '  2d diag nb : ', jn, '    short name : ', ctrc2d(jn), &
306                 &             '  long name  : ', ctrc2l(jn), '   unit : ', ctrc2u(jn)
307            END DO
308            WRITE(numout,*) ' '
309         ENDIF
310         !
311      ENDIF
312
313      IF( ( .NOT.lk_iomput .AND. ln_diabio ) .OR. lk_trdmld_trc ) THEN
314         !
315         ! Namelist namlobdbi
316         ! -------------------
317         DO jl = 1, jp_lobster_trd
318            IF(     jl <  10 ) THEN   ;   WRITE (lobdiabio(jl)%sname,'("BIO_",I1)') jl      ! short name
319            ELSEIF (jl < 100 ) THEN   ;   WRITE (lobdiabio(jl)%sname,'("BIO_",I2)') jl 
320            ELSE                      ;   WRITE (lobdiabio(jl)%sname,'("BIO_",I3)') jl
321            ENDIF
322            WRITE(lobdiabio(jl)%lname,'("BIOLOGICAL TREND NUMBER ",I2)') jl                 ! long name
323            lobdiabio(jl)%units = 'mmoleN/m3/s '                                            ! units
324         END DO
325
326         REWIND( numnatl )
327         READ  ( numnatl, namlobdbi ) 
328 
329         DO jl = 1, jp_lobster_trd
330            jn = jp_lob0_trd + jl - 1
331            ctrbio(jl) = lobdiabio(jl)%sname
332            ctrbil(jl) = lobdiabio(jl)%lname
333            ctrbiu(jl) = lobdiabio(jl)%units
334         END DO
335
336         IF(lwp) THEN                   ! control print
337            WRITE(numout,*)
338            WRITE(numout,*) ' Namelist : namlobdbi'
339            DO jl = 1, jp_lobster_trd
340               jn = jp_lob0_trd + jl - 1
341               WRITE(numout,*) '  biological trend No : ', jn, '    short name : ', ctrbio(jn), &
342                 &             '  long name  : ', ctrbio(jn), '   unit : ', ctrbio(jn)
343            END DO
344            WRITE(numout,*) ' '
345         END IF
346         !
347      END IF
348      !
349   END SUBROUTINE trc_nam_lobster
350   
351#else
352   !!----------------------------------------------------------------------
353   !!  Dummy module :                                            No LOBSTER
354   !!----------------------------------------------------------------------
355CONTAINS
356   SUBROUTINE trc_nam_lobster                      ! Empty routine
357   END  SUBROUTINE  trc_nam_lobster
358#endif 
359
360   !!======================================================================
361END MODULE trcnam_lobster
Note: See TracBrowser for help on using the repository browser.