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.
p4zligand.F90 in NEMO/branches/UKMO/r4.0-HEAD_r12713_dan_test_clems_branch/src/TOP/PISCES/P4Z – NEMO

source: NEMO/branches/UKMO/r4.0-HEAD_r12713_dan_test_clems_branch/src/TOP/PISCES/P4Z/p4zligand.F90 @ 12801

Last change on this file since 12801 was 12801, checked in by dancopsey, 4 years ago

Clear SVN keywords

File size: 6.4 KB
RevLine 
[7162]1MODULE p4zligand
2   !!======================================================================
3   !!                         ***  MODULE p4zligand  ***
4   !! TOP :   PISCES Compute remineralization/dissolution of organic ligands
5   !!=========================================================================
6   !! History :   3.6  !  2016-03  (O. Aumont, A. Tagliabue) Quota model and reorganization
7   !!----------------------------------------------------------------------
[9169]8   !!   p4z_ligand     :  Compute remineralization/dissolution of organic ligands
9   !!   p4z_ligand_init:  Initialisation of parameters for remineralisation
[7162]10   !!----------------------------------------------------------------------
[9169]11   USE oce_trc         ! shared variables between ocean and passive tracers
12   USE trc             ! passive tracers common variables
13   USE sms_pisces      ! PISCES Source Minus Sink variables
14   USE prtctl_trc      ! print control for debugging
[10362]15   USE iom             !  I/O manager
[7162]16
17   IMPLICIT NONE
18   PRIVATE
19
20   PUBLIC   p4z_ligand         ! called in p4zbio.F90
21   PUBLIC   p4z_ligand_init    ! called in trcsms_pisces.F90
22
23   REAL(wp), PUBLIC ::  rlgw     !: lifetime (years) of weak ligands
24   REAL(wp), PUBLIC ::  rlgs     !: lifetime (years) of strong ligands
25   REAL(wp), PUBLIC ::  rlig     !: Remin ligand production
26   REAL(wp), PUBLIC ::  prlgw    !: Photochemical of weak ligand
27
28   !!----------------------------------------------------------------------
[10067]29   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
[12801]30   !! $Id$
[10068]31   !! Software governed by the CeCILL license (see ./LICENSE)
[7162]32   !!----------------------------------------------------------------------
33CONTAINS
34
35   SUBROUTINE p4z_ligand( kt, knt )
36      !!---------------------------------------------------------------------
37      !!                     ***  ROUTINE p4z_ligand  ***
38      !!
39      !! ** Purpose :   Compute remineralization/scavenging of organic ligands
40      !!---------------------------------------------------------------------
41      INTEGER, INTENT(in) ::   kt, knt ! ocean time step
42      !
43      INTEGER  ::   ji, jj, jk
[10416]44      REAL(wp) ::   zlgwp, zlgwpr, zlgwr, zlablgw
[12276]45      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zligrem, zligpr, zligprod
[9169]46      CHARACTER (len=25) ::   charout
[7162]47      !!---------------------------------------------------------------------
48      !
[9124]49      IF( ln_timing )   CALL timing_start('p4z_ligand')
[7162]50      !
51      DO jk = 1, jpkm1
52         DO jj = 1, jpj
53            DO ji = 1, jpi
[9169]54               !
55               ! ------------------------------------------------------------------
56               ! Remineralization of iron ligands
57               ! ------------------------------------------------------------------
[7162]58               ! production from remineralisation of organic matter
[10362]59               zlgwp = orem(ji,jj,jk) * rlig
[7162]60               ! decay of weak ligand
61               ! This is based on the idea that as LGW is lower
62               ! there is a larger fraction of refractory OM
[7177]63               zlgwr = max( rlgs , rlgw * exp( -2 * (trb(ji,jj,jk,jplgw)*1e9) ) ) ! years
[10362]64               zlgwr = 1. / zlgwr * tgfunc(ji,jj,jk) * ( xstep / nyear_len(1) ) * blim(ji,jj,jk) * trb(ji,jj,jk,jplgw)
[7162]65               ! photochem loss of weak ligand
[7177]66               zlgwpr = prlgw * xstep * etot(ji,jj,jk) * trb(ji,jj,jk,jplgw) * (1. - fr_i(ji,jj))
[7162]67               tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zlgwp - zlgwr - zlgwpr
[10362]68               zligrem(ji,jj,jk)   = zlgwr
69               zligpr(ji,jj,jk)    = zlgwpr
[12276]70               zligprod(ji,jj,jk)  = zlgwp
[9169]71               !
[7162]72            END DO
73         END DO
74      END DO
[9169]75      !
[10362]76      !  Output of some diagnostics variables
77      !     ---------------------------------
78      IF( lk_iomput .AND. knt == nrdttrc ) THEN
79         IF( iom_use( "LIGREM" ) ) THEN
[12276]80           zligrem(:,:,jpk) = 0.  ; CALL iom_put( "LIGREM", zligrem(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) )
[10362]81         ENDIF
82         IF( iom_use( "LIGPR" ) ) THEN
[12276]83           zligpr(:,:,jpk) = 0.   ; CALL iom_put( "LIGPR" , zligpr(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) )
[10362]84         ENDIF
85         IF( iom_use( "LPRODR" ) ) THEN
[12276]86           zligprod(:,:,jpk) = 0. ; CALL iom_put( "LPRODR", zligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) )
[10362]87         ENDIF
88      ENDIF
89      !
[7162]90      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
91         WRITE(charout, FMT="('ligand1')")
92         CALL prt_ctl_trc_info(charout)
93         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
[9169]94      ENDIF
[7162]95      !
[9124]96      IF( ln_timing )   CALL timing_stop('p4z_ligand')
[7162]97      !
98   END SUBROUTINE p4z_ligand
99
100
101   SUBROUTINE p4z_ligand_init
102      !!----------------------------------------------------------------------
103      !!                  ***  ROUTINE p4z_ligand_init  ***
104      !!
105      !! ** Purpose :   Initialization of remineralization parameters
106      !!
107      !! ** Method  :   Read the nampislig namelist and check the parameters
108      !!
109      !! ** input   :   Namelist nampislig
110      !!----------------------------------------------------------------------
[9124]111      INTEGER ::   ios   ! Local integer
112      !
[10416]113      NAMELIST/nampislig/ rlgw, prlgw, rlgs, rlig
[9124]114      !!----------------------------------------------------------------------
[9169]115      !
116      IF(lwp) THEN
117         WRITE(numout,*)
118         WRITE(numout,*) 'p4z_ligand_init : remineralization/scavenging of organic ligands'
119         WRITE(numout,*) '~~~~~~~~~~~~~~~'
120      ENDIF
[12276]121
122      REWIND( numnatp_ref )
[7162]123      READ  ( numnatp_ref, nampislig, IOSTAT = ios, ERR = 901)
[11536]124901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nampislig in reference namelist' )
[12276]125
126      REWIND( numnatp_cfg )
[7162]127      READ  ( numnatp_cfg, nampislig, IOSTAT = ios, ERR = 902 )
[11536]128902   IF( ios >  0 )   CALL ctl_nam ( ios , 'nampislig in configuration namelist' )
[7162]129      IF(lwm) WRITE ( numonp, nampislig )
[9169]130      !
[7162]131      IF(lwp) THEN                         ! control print
[9169]132         WRITE(numout,*) '   Namelist : nampislig'
133         WRITE(numout,*) '      Lifetime (years) of weak ligands             rlgw  =', rlgw
134         WRITE(numout,*) '      Remin ligand production per unit C           rlig  =', rlig
135         WRITE(numout,*) '      Photolysis of weak ligand                    prlgw =', prlgw
136         WRITE(numout,*) '      Lifetime (years) of strong ligands           rlgs  =', rlgs
[7162]137      ENDIF
138      !
139   END SUBROUTINE p4z_ligand_init
140
141   !!======================================================================
142END MODULE p4zligand
Note: See TracBrowser for help on using the repository browser.