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.
trclsm_lobster.F90 in trunk/NEMO/TOP_SRC/LOBSTER – NEMO

source: trunk/NEMO/TOP_SRC/LOBSTER/trclsm_lobster.F90 @ 1119

Last change on this file since 1119 was 1119, checked in by cetlod, 16 years ago

style of all top namelist has been modified ; update modules to take it into account, see ticket:196

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