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

source: trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcnam_lobster.F90 @ 2715

Last change on this file since 2715 was 2715, checked in by rblod, 13 years ago

First attempt to put dynamic allocation on the trunk

  • 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
19   IMPLICIT NONE
20   PRIVATE
21
22   PUBLIC   trc_nam_lobster   ! called by trcnam.F90 module
23
24   !!----------------------------------------------------------------------
25   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
26   !! $Id$
27   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
28   !!----------------------------------------------------------------------
29
30CONTAINS
31
32   SUBROUTINE trc_nam_lobster
33      !!----------------------------------------------------------------------
34      !!                     ***  trc_nam_lobster  *** 
35      !!
36      !! ** Purpose :   read LOBSTER namelist
37      !!
38      !! ** input   :   file 'namelist.trc.sms' containing the following
39      !!             namelist: natbio, natopt, and natdbi ("key_diabio")
40      !!----------------------------------------------------------------------
41      INTEGER ::   numnatl
42      !!
43#if defined key_diatrc && ! defined key_iomput
44      INTEGER :: jl, jn
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_diabio || defined key_trdmld_trc
56      INTEGER :: js, jd
57      ! definition of additional diagnostic as a structure
58      TYPE DIABIO
59         CHARACTER(len = 20)  :: snamebio   !: short name
60         CHARACTER(len = 80 ) :: lnamebio   !: long name
61         CHARACTER(len = 20 ) :: unitbio    !: unit
62      END TYPE DIABIO
63
64      TYPE(DIABIO) , DIMENSION(jp_lobster_trd) :: lobdiabio
65#endif
66
67      NAMELIST/namlobphy/ apmin, tmumax, rgamma, fphylab, tmmaxp, tmminp, &
68         &                rcchl, aki, toptp 
69      NAMELIST/namlobnut/ anmin, akno3, aknh4, taunn, psinut
70      NAMELIST/namlobzoo/ azmin, eggzoo, rgz, rppz, taus, aks, rpnaz,     &
71         &                rdnaz, tauzn, fzoolab, fdbod, tmmaxz, tmminz
72      NAMELIST/namlobdet/ admin, taudn, fdetlab, vsed
73      NAMELIST/namlobdom/ taudomn
74      NAMELIST/namlobsed/ sedlam, sedlostpoc
75      NAMELIST/namlobrat/ redf, reddom, slopet, tmaxr, tminr, xhr,        &
76         &                filmax, toptgz, tmaxgz, anumin, afdmin
77
78      NAMELIST/namlobopt/ xkg0, xkr0, xkgp, xkrp, xlg, xlr, rpig
79#if defined key_diatrc && ! defined key_iomput
80      NAMELIST/namlobdia/nn_writedia, lobdia3d, lobdia2d     ! additional diagnostics
81#endif
82#if defined key_diabio || defined key_trdmld_trc
83      NAMELIST/namlobdbi/nwritebio, lobdiabio
84#endif
85      !!----------------------------------------------------------------------
86
87      IF(lwp) WRITE(numout,*)
88      IF(lwp) WRITE(numout,*) ' trc_nam_lobster : read LOBSTER namelists'
89      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~'
90
91      !                               ! Open the namelist file
92      !                               ! ----------------------
93      CALL ctl_opn( numnatl, 'namelist_lobster', 'OLD', 'FORMATTED', 'SEQUENTIAL', 1, numout, .FALSE. )
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( numnatl )
107      READ  ( numnatl, 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( numnatl )
131      READ  ( numnatl, 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( numnatl )
158      READ  ( numnatl, 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( numnatl )
185      READ  ( numnatl, 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( numnatl ) 
200      READ  ( numnatl, 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( numnatl )
213      READ  ( numnatl, 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( numnatl )
236      READ  ( numnatl, 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( numnatl )
265      READ  ( numnatl, 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_diatrc && ! defined key_iomput
281
282      ! Namelist namlobdia
283      ! -------------------
284      nn_writedia = 10                   ! default values
285
286      DO jl = 1, jp_lobster_2d
287         jn = jp_lob0_2d + jl - 1
288         WRITE(ctrc2d(jn),'("2D_",I1)') jn                      ! short name
289         WRITE(ctrc2l(jn),'("2D DIAGNOSTIC NUMBER ",I2)') jn    ! long name
290         ctrc2u(jn) = ' '                                       ! units
291      END DO
292      !                                 ! 3D output arrays
293      DO jl = 1, jp_lobster_3d
294         jn = jp_lob0_3d + jl - 1
295         WRITE(ctrc3d(jn),'("3D_",I1)') jn                      ! short name
296         WRITE(ctrc3l(jn),'("3D DIAGNOSTIC NUMBER ",I2)') jn    ! long name
297         ctrc3u(jn) = ' '                                       ! units
298      END DO
299
300      REWIND( numnatl )               ! read natrtd
301      READ  ( numnatl, namlobdia )
302
303      DO jl = 1, jp_lobster_2d
304         jn = jp_lob0_2d + jl - 1
305         ctrc2d(jn) = lobdia2d(jl)%snamedia
306         ctrc2l(jn) = lobdia2d(jl)%lnamedia
307         ctrc2u(jn) = lobdia2d(jl)%unitdia
308      END DO
309
310      DO jl = 1, jp_lobster_3d
311         jn = jp_lob0_3d + jl - 1
312         ctrc3d(jn) = lobdia3d(jl)%snamedia
313         ctrc3l(jn) = lobdia3d(jl)%lnamedia
314         ctrc3u(jn) = lobdia3d(jl)%unitdia
315      END DO
316
317      IF(lwp) THEN                   ! control print
318         WRITE(numout,*)
319         WRITE(numout,*) ' Namelist : natadd'
320         WRITE(numout,*) '    frequency of outputs for additional arrays nn_writedia = ', nn_writedia
321         DO jl = 1, jp_lobster_3d
322            jn = jp_lob0_3d + jl - 1
323            WRITE(numout,*) '   3d output field No : ',jn
324            WRITE(numout,*) '   short name         : ', TRIM(ctrc3d(jn))
325            WRITE(numout,*) '   long name          : ', TRIM(ctrc3l(jn))
326            WRITE(numout,*) '   unit               : ', TRIM(ctrc3u(jn))
327            WRITE(numout,*) ' '
328         END DO
329
330         DO jl = 1, jp_lobster_2d
331            jn = jp_lob0_2d + jl - 1
332            WRITE(numout,*) '   2d output field No : ',jn
333            WRITE(numout,*) '   short name         : ', TRIM(ctrc2d(jn))
334            WRITE(numout,*) '   long name          : ', TRIM(ctrc2l(jn))
335            WRITE(numout,*) '   unit               : ', TRIM(ctrc2u(jn))
336            WRITE(numout,*) ' '
337         END DO
338      ENDIF
339#endif
340
341#if defined key_diabio || defined key_trdmld_trc
342      ! namlobdbi : bio diagnostics
343      nwritebio = 10                     ! default values
344
345      DO js = 1, jp_lobster_trd
346         jd = jp_lob0_trd + js - 1
347         IF(     jd <  10 ) THEN   ;   WRITE (ctrbio(jd),'("BIO_",I1)') jd      ! short name
348         ELSEIF (jd < 100 ) THEN   ;   WRITE (ctrbio(jd),'("BIO_",I2)') jd   
349         ELSE                      ;   WRITE (ctrbio(jd),'("BIO_",I3)') jd
350         ENDIF
351         WRITE(ctrbil(jd),'("BIOLOGICAL TREND NUMBER ",I2)') jd                 ! long name
352         ctrbiu(jd) = 'mmoleN/m3/s '                                            ! units
353      END DO
354
355      REWIND( numnatl )
356      READ  ( numnatl, namlobdbi ) 
357 
358      DO js = 1, jp_lobster_trd
359         jd = jp_lob0_trd + js - 1
360         ctrbio(jd) = lobdiabio(js)%snamebio
361         ctrbil(jd) = lobdiabio(js)%lnamebio
362         ctrbiu(jd) = lobdiabio(js)%unitbio
363      END DO
364
365      IF(lwp) THEN                   ! control print
366         WRITE(numout,*)
367         WRITE(numout,*) ' Namelist : namlobdbi'
368         WRITE(numout,*) '    frequency of outputs for biological trends nwritebio = ', nwritebio
369         DO js = 1, jp_lobster_trd
370            jd = jp_lob0_trd + js - 1
371            WRITE(numout,*) '   biological trend No : ',jd
372            WRITE(numout,*) '   short name         : ', TRIM(ctrbio(jd))
373            WRITE(numout,*) '   long name          : ', TRIM(ctrbil(jd))
374            WRITE(numout,*) '   unit               : ', TRIM(ctrbiu(jd))
375            WRITE(numout,*) ' '
376         END DO
377      END IF
378#endif
379      !
380   END SUBROUTINE trc_nam_lobster
381   
382#else
383   !!----------------------------------------------------------------------
384   !!  Dummy module :                                            No LOBSTER
385   !!----------------------------------------------------------------------
386CONTAINS
387   SUBROUTINE trc_nam_lobster                      ! Empty routine
388   END  SUBROUTINE  trc_nam_lobster
389#endif 
390
391   !!======================================================================
392END MODULE trcnam_lobster
Note: See TracBrowser for help on using the repository browser.