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/nemo_v3_3_beta/NEMOGCM/NEMO/TOP_SRC/LOBSTER – NEMO

source: branches/nemo_v3_3_beta/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcnam_lobster.F90 @ 2281

Last change on this file since 2281 was 2281, checked in by smasson, 14 years ago

set proper svn properties to all files...

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